From 7cdf0c8ae930d8bd6d0e32d89beacd6cb9e83486 Mon Sep 17 00:00:00 2001 From: Eve Bright Date: Wed, 31 Aug 2016 11:38:16 +0100 Subject: [PATCH 1/2] Exposed onComplete method from Driver. Provides quick feedback to client that credentials are correct. --- lib/browser/neo4j-web.js | 5320 ++++++++++++++++--------------- lib/browser/neo4j-web.min.js | 28 +- lib/browser/neo4j-web.test.js | 5511 ++++++++++++++++++--------------- lib/v1/driver.js | 7 + lib/v1/internal/ch-node.js | 57 +- lib/v1/internal/connector.js | 47 +- lib/v1/internal/packstream.js | 125 +- src/v1/driver.js | 5 + test/v1/driver.test.js | 13 + 9 files changed, 6021 insertions(+), 5092 deletions(-) diff --git a/lib/browser/neo4j-web.js b/lib/browser/neo4j-web.js index c3b966417..f028fc8f8 100644 --- a/lib/browser/neo4j-web.js +++ b/lib/browser/neo4j-web.js @@ -72,7 +72,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":1,"inherits":92,"vm":135}],3:[function(require,module,exports){ +},{"../asn1":1,"inherits":93,"vm":137}],3:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -190,7 +190,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":4,"buffer":46,"inherits":92}],4:[function(require,module,exports){ +},{"../base":4,"buffer":46,"inherits":93}],4:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -264,7 +264,7 @@ module.exports = Node; var stateProps = [ 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit' + 'implicit', 'contains' ]; Node.prototype.clone = function clone() { @@ -469,17 +469,17 @@ Node.prototype.contains = function contains(item) { // Decoding // -Node.prototype._decode = function decode(input) { +Node.prototype._decode = function decode(input, options) { var state = this._baseState; // Decode root node if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input)); + return input.wrapResult(state.children[0]._decode(input, options)); var result = state['default']; var present = true; - var prevKey; + var prevKey = null; if (state.key !== null) prevKey = input.enterKey(state.key); @@ -498,9 +498,9 @@ Node.prototype._decode = function decode(input) { var save = input.save(); try { if (state.choice === null) - this._decodeGeneric(state.tag, input); + this._decodeGeneric(state.tag, input, options); else - this._decodeChoice(input); + this._decodeChoice(input, options); present = true; } catch (e) { present = false; @@ -528,6 +528,8 @@ Node.prototype._decode = function decode(input) { input = explicit; } + var start = input.offset; + // Unwrap implicit and normal values if (state.use === null && state.choice === null) { if (state.any) @@ -546,13 +548,19 @@ Node.prototype._decode = function decode(input) { input = body; } + if (options && options.track && state.tag !== null) + options.track(input.path(), start, input.length, 'tagged'); + + if (options && options.track && state.tag !== null) + options.track(input.path(), input.offset, input.length, 'content'); + // Select proper method for tag if (state.any) result = result; else if (state.choice === null) - result = this._decodeGeneric(state.tag, input); + result = this._decodeGeneric(state.tag, input, options); else - result = this._decodeChoice(input); + result = this._decodeChoice(input, options); if (input.isError(result)) return result; @@ -562,14 +570,15 @@ Node.prototype._decode = function decode(input) { state.children.forEach(function decodeChildren(child) { // NOTE: We are ignoring errors here, to let parser continue with other // parts of encoded data - child._decode(input); + child._decode(input, options); }); } // Decode contained/encoded by schema, only in bit or octet strings if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj)._decode(data); + result = this._getUse(state.contains, input._reporterState.obj) + ._decode(data, options); } } @@ -580,35 +589,40 @@ Node.prototype._decode = function decode(input) { // Set key if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result); + else if (prevKey !== null) + input.exitKey(prevKey); return result; }; -Node.prototype._decodeGeneric = function decodeGeneric(tag, input) { +Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { var state = this._baseState; if (tag === 'seq' || tag === 'set') return null; if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0]); + return this._decodeList(input, tag, state.args[0], options); else if (/str$/.test(tag)) - return this._decodeStr(input, tag); + return this._decodeStr(input, tag, options); else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1]); + return this._decodeObjid(input, state.args[0], state.args[1], options); else if (tag === 'objid') - return this._decodeObjid(input, null, null); + return this._decodeObjid(input, null, null, options); else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag); + return this._decodeTime(input, tag, options); else if (tag === 'null_') - return this._decodeNull(input); + return this._decodeNull(input, options); else if (tag === 'bool') - return this._decodeBool(input); + return this._decodeBool(input, options); else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0]); - else if (state.use !== null) - return this._getUse(state.use, input._reporterState.obj)._decode(input); - else + return this._decodeInt(input, state.args && state.args[0], options); + + if (state.use !== null) { + return this._getUse(state.use, input._reporterState.obj) + ._decode(input, options); + } else { return input.error('unknown tag: ' + tag); + } }; Node.prototype._getUse = function _getUse(entity, obj) { @@ -625,7 +639,7 @@ Node.prototype._getUse = function _getUse(entity, obj) { return state.useDecoder; }; -Node.prototype._decodeChoice = function decodeChoice(input) { +Node.prototype._decodeChoice = function decodeChoice(input, options) { var state = this._baseState; var result = null; var match = false; @@ -634,7 +648,7 @@ Node.prototype._decodeChoice = function decodeChoice(input) { var save = input.save(); var node = state.choice[key]; try { - var value = node._decode(input); + var value = node._decode(input, options); if (input.isError(value)) return false; @@ -849,14 +863,24 @@ Reporter.prototype.enterKey = function enterKey(key) { return this._reporterState.path.push(key); }; -Reporter.prototype.leaveKey = function leaveKey(index, key, value) { +Reporter.prototype.exitKey = function exitKey(index) { var state = this._reporterState; state.path = state.path.slice(0, index - 1); +}; + +Reporter.prototype.leaveKey = function leaveKey(index, key, value) { + var state = this._reporterState; + + this.exitKey(index); if (state.obj !== null) state.obj[key] = value; }; +Reporter.prototype.path = function path() { + return this._reporterState.path.join('/'); +}; + Reporter.prototype.enterObject = function enterObject() { var state = this._reporterState; @@ -928,7 +952,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":92}],7:[function(require,module,exports){ +},{"inherits":93}],7:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -1104,14 +1128,15 @@ DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { } }; -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder) { +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, + options) { var result = []; while (!buffer.isEmpty()) { var possibleEnd = this._peekTag(buffer, 'end'); if (buffer.isError(possibleEnd)) return possibleEnd; - var res = decoder.decode(buffer, 'der'); + var res = decoder.decode(buffer, 'der', options); if (buffer.isError(res) && possibleEnd) break; result.push(res); @@ -1316,7 +1341,7 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":1,"inherits":92}],10:[function(require,module,exports){ +},{"../../asn1":1,"inherits":93}],10:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); @@ -1373,7 +1398,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":9,"buffer":46,"inherits":92}],12:[function(require,module,exports){ +},{"./der":9,"buffer":46,"inherits":93}],12:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -1668,7 +1693,7 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":1,"buffer":46,"inherits":92}],13:[function(require,module,exports){ +},{"../../asn1":1,"buffer":46,"inherits":93}],13:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); @@ -1697,7 +1722,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":12,"inherits":92}],15:[function(require,module,exports){ +},{"./der":12,"inherits":93}],15:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { @@ -1881,8 +1906,12 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; } BN.isBN = function isBN (num) { + if (num instanceof BN) { + return true; + } + return num !== null && typeof num === 'object' && - num.constructor.name === 'BN' && Array.isArray(num.words); + num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); }; BN.max = function max (left, right) { @@ -3923,6 +3952,10 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; assert(this.negative === 0, 'imaskn works only with positive numbers'); + if (this.length <= s) { + return this; + } + if (r !== 0) { s++; } @@ -5587,7 +5620,7 @@ function xorTest (a, b) { } }).call(this,require("buffer").Buffer) -},{"./aes":19,"./ghash":24,"buffer":46,"buffer-xor":45,"cipher-base":47,"inherits":92}],21:[function(require,module,exports){ +},{"./aes":19,"./ghash":24,"buffer":46,"buffer-xor":45,"cipher-base":48,"inherits":93}],21:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -5741,7 +5774,7 @@ exports.createDecipher = createDecipher exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":47,"evp_bytestokey":83,"inherits":92}],23:[function(require,module,exports){ +},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":48,"evp_bytestokey":84,"inherits":93}],23:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -5867,7 +5900,7 @@ exports.createCipheriv = createCipheriv exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":47,"evp_bytestokey":83,"inherits":92}],24:[function(require,module,exports){ +},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":48,"evp_bytestokey":84,"inherits":93}],24:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -6345,7 +6378,7 @@ StreamCipher.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"./aes":19,"buffer":46,"cipher-base":47,"inherits":92}],34:[function(require,module,exports){ +},{"./aes":19,"buffer":46,"cipher-base":48,"inherits":93}],34:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -6420,7 +6453,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":21,"browserify-aes/modes":25,"browserify-des":35,"browserify-des/modes":36,"evp_bytestokey":83}],35:[function(require,module,exports){ +},{"browserify-aes/browser":21,"browserify-aes/modes":25,"browserify-des":35,"browserify-des/modes":36,"evp_bytestokey":84}],35:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -6467,7 +6500,7 @@ DES.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"cipher-base":47,"des.js":55,"inherits":92}],36:[function(require,module,exports){ +},{"buffer":46,"cipher-base":48,"des.js":56,"inherits":93}],36:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -6720,7 +6753,7 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"./algos":38,"./sign":41,"./verify":42,"buffer":46,"create-hash":50,"inherits":92,"stream":132}],40:[function(require,module,exports){ +},{"./algos":38,"./sign":41,"./verify":42,"buffer":46,"create-hash":51,"inherits":93,"stream":122}],40:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -6923,7 +6956,7 @@ module.exports.getKey = getKey module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":40,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hmac":53,"elliptic":65,"parse-asn1":101}],42:[function(require,module,exports){ +},{"./curves":40,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hmac":54,"elliptic":66,"parse-asn1":101}],42:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -7030,7 +7063,7 @@ function checkValue (b, q) { module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":40,"bn.js":16,"buffer":46,"elliptic":65,"parse-asn1":101}],43:[function(require,module,exports){ +},{"./curves":40,"bn.js":16,"buffer":46,"elliptic":66,"parse-asn1":101}],43:[function(require,module,exports){ arguments[4][18][0].apply(exports,arguments) },{"dup":18}],44:[function(require,module,exports){ (function (global){ @@ -8710,7 +8743,14 @@ function blitBuffer (src, dst, offset, length) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":15,"ieee754":90,"isarray":94}],47:[function(require,module,exports){ +},{"base64-js":15,"ieee754":91,"isarray":47}],47:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],48:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -8804,7 +8844,7 @@ CipherBase.prototype._toString = function (value, enc, final) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"inherits":92,"stream":132,"string_decoder":133}],48:[function(require,module,exports){ +},{"buffer":46,"inherits":93,"stream":122,"string_decoder":135}],49:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -8915,7 +8955,7 @@ function objectToString(o) { } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":93}],49:[function(require,module,exports){ +},{"../../is-buffer/index.js":94}],50:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -9041,7 +9081,7 @@ function formatReturnValue(bn, enc, len) { } }).call(this,require("buffer").Buffer) -},{"bn.js":16,"buffer":46,"elliptic":65}],50:[function(require,module,exports){ +},{"bn.js":16,"buffer":46,"elliptic":66}],51:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -9097,7 +9137,7 @@ module.exports = function createHash (alg) { } }).call(this,require("buffer").Buffer) -},{"./md5":52,"buffer":46,"cipher-base":47,"inherits":92,"ripemd160":123,"sha.js":125}],51:[function(require,module,exports){ +},{"./md5":53,"buffer":46,"cipher-base":48,"inherits":93,"ripemd160":113,"sha.js":115}],52:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -9134,7 +9174,7 @@ function hash(buf, fn, hashSize, bigEndian) { } exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":46}],52:[function(require,module,exports){ +},{"buffer":46}],53:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -9291,7 +9331,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":51}],53:[function(require,module,exports){ +},{"./helpers":52}],54:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -9363,7 +9403,7 @@ module.exports = function createHmac(alg, key) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash/browser":50,"inherits":92,"stream":132}],54:[function(require,module,exports){ +},{"buffer":46,"create-hash/browser":51,"inherits":93,"stream":122}],55:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -9442,7 +9482,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":34,"browserify-sign":39,"browserify-sign/algos":38,"create-ecdh":49,"create-hash":50,"create-hmac":53,"diffie-hellman":61,"pbkdf2":103,"public-encrypt":106,"randombytes":112}],55:[function(require,module,exports){ +},{"browserify-cipher":34,"browserify-sign":39,"browserify-sign/algos":38,"create-ecdh":50,"create-hash":51,"create-hmac":54,"diffie-hellman":62,"pbkdf2":103,"public-encrypt":106,"randombytes":112}],56:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -9451,7 +9491,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":56,"./des/cipher":57,"./des/des":58,"./des/ede":59,"./des/utils":60}],56:[function(require,module,exports){ +},{"./des/cbc":57,"./des/cipher":58,"./des/des":59,"./des/ede":60,"./des/utils":61}],57:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9518,7 +9558,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":92,"minimalistic-assert":96}],57:[function(require,module,exports){ +},{"inherits":93,"minimalistic-assert":96}],58:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9661,7 +9701,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":96}],58:[function(require,module,exports){ +},{"minimalistic-assert":96}],59:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9806,7 +9846,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":55,"inherits":92,"minimalistic-assert":96}],59:[function(require,module,exports){ +},{"../des":56,"inherits":93,"minimalistic-assert":96}],60:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9863,7 +9903,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":55,"inherits":92,"minimalistic-assert":96}],60:[function(require,module,exports){ +},{"../des":56,"inherits":93,"minimalistic-assert":96}],61:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -10121,7 +10161,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],61:[function(require,module,exports){ +},{}],62:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -10167,7 +10207,7 @@ exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffi exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":62,"./lib/generatePrime":63,"./lib/primes.json":64,"buffer":46}],62:[function(require,module,exports){ +},{"./lib/dh":63,"./lib/generatePrime":64,"./lib/primes.json":65,"buffer":46}],63:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -10335,7 +10375,7 @@ function formatReturnValue(bn, enc) { } }).call(this,require("buffer").Buffer) -},{"./generatePrime":63,"bn.js":16,"buffer":46,"miller-rabin":95,"randombytes":112}],63:[function(require,module,exports){ +},{"./generatePrime":64,"bn.js":16,"buffer":46,"miller-rabin":95,"randombytes":112}],64:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -10442,7 +10482,7 @@ function findPrime(bits, gen) { } -},{"bn.js":16,"miller-rabin":95,"randombytes":112}],64:[function(require,module,exports){ +},{"bn.js":16,"miller-rabin":95,"randombytes":112}],65:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -10477,7 +10517,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],65:[function(require,module,exports){ +},{}],66:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -10493,7 +10533,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":81,"./elliptic/curve":68,"./elliptic/curves":71,"./elliptic/ec":72,"./elliptic/eddsa":75,"./elliptic/hmac-drbg":78,"./elliptic/utils":80,"brorand":17}],66:[function(require,module,exports){ +},{"../package.json":82,"./elliptic/curve":69,"./elliptic/curves":72,"./elliptic/ec":73,"./elliptic/eddsa":76,"./elliptic/hmac-drbg":79,"./elliptic/utils":81,"brorand":17}],67:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -10870,7 +10910,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":65,"bn.js":16}],67:[function(require,module,exports){ +},{"../../elliptic":66,"bn.js":16}],68:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -11305,7 +11345,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],68:[function(require,module,exports){ +},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],69:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -11315,7 +11355,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":66,"./edwards":67,"./mont":69,"./short":70}],69:[function(require,module,exports){ +},{"./base":67,"./edwards":68,"./mont":70,"./short":71}],70:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -11497,7 +11537,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],70:[function(require,module,exports){ +},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],71:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -12437,7 +12477,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],71:[function(require,module,exports){ +},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],72:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -12644,7 +12684,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":65,"./precomputed/secp256k1":79,"hash.js":84}],72:[function(require,module,exports){ +},{"../elliptic":66,"./precomputed/secp256k1":80,"hash.js":85}],73:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -12882,7 +12922,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":65,"./key":73,"./signature":74,"bn.js":16}],73:[function(require,module,exports){ +},{"../../elliptic":66,"./key":74,"./signature":75,"bn.js":16}],74:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -12991,7 +13031,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"bn.js":16}],74:[function(require,module,exports){ +},{"bn.js":16}],75:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -13128,7 +13168,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":65,"bn.js":16}],75:[function(require,module,exports){ +},{"../../elliptic":66,"bn.js":16}],76:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -13248,7 +13288,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":65,"./key":76,"./signature":77,"hash.js":84}],76:[function(require,module,exports){ +},{"../../elliptic":66,"./key":77,"./signature":78,"hash.js":85}],77:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -13346,7 +13386,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":65}],77:[function(require,module,exports){ +},{"../../elliptic":66}],78:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -13414,7 +13454,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":65,"bn.js":16}],78:[function(require,module,exports){ +},{"../../elliptic":66,"bn.js":16}],79:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -13530,7 +13570,7 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { return utils.encode(res, enc); }; -},{"../elliptic":65,"hash.js":84}],79:[function(require,module,exports){ +},{"../elliptic":66,"hash.js":85}],80:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -14312,7 +14352,7 @@ module.exports = { } }; -},{}],80:[function(require,module,exports){ +},{}],81:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -14486,19 +14526,12 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":16}],81:[function(require,module,exports){ +},{"bn.js":16}],82:[function(require,module,exports){ module.exports={ "_args": [ [ - { - "name": "elliptic", - "raw": "elliptic@^6.0.0", - "rawSpec": "^6.0.0", - "scope": null, - "spec": ">=6.0.0 <7.0.0", - "type": "range" - }, - "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign" + "elliptic@^6.0.0", + "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign" ] ], "_from": "elliptic@>=6.0.0 <7.0.0", @@ -14529,11 +14562,11 @@ module.exports={ "/browserify-sign", "/create-ecdh" ], - "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", + "_resolved": "http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", "_shasum": "17781f2109ab0ec686b146bdcff5d2e8c6aeceda", "_shrinkwrap": null, "_spec": "elliptic@^6.0.0", - "_where": "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign", + "_where": "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign", "author": { "email": "fedor@indutny.com", "name": "Fedor Indutny" @@ -14605,7 +14638,7 @@ module.exports={ "version": "6.3.1" } -},{}],82:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -14908,7 +14941,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],83:[function(require,module,exports){ +},{}],84:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -14980,7 +15013,7 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash/md5":52}],84:[function(require,module,exports){ +},{"buffer":46,"create-hash/md5":53}],85:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -14997,7 +15030,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":85,"./hash/hmac":86,"./hash/ripemd":87,"./hash/sha":88,"./hash/utils":89}],85:[function(require,module,exports){ +},{"./hash/common":86,"./hash/hmac":87,"./hash/ripemd":88,"./hash/sha":89,"./hash/utils":90}],86:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -15090,7 +15123,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":84}],86:[function(require,module,exports){ +},{"../hash":85}],87:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -15140,7 +15173,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":84}],87:[function(require,module,exports){ +},{"../hash":85}],88:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -15286,7 +15319,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":84}],88:[function(require,module,exports){ +},{"../hash":85}],89:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -15852,7 +15885,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":84}],89:[function(require,module,exports){ +},{"../hash":85}],90:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -16111,7 +16144,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":92}],90:[function(require,module,exports){ +},{"inherits":93}],91:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -16197,7 +16230,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],91:[function(require,module,exports){ +},{}],92:[function(require,module,exports){ var indexOf = [].indexOf; @@ -16208,7 +16241,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],92:[function(require,module,exports){ +},{}],93:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -16233,31 +16266,28 @@ if (typeof Object.create === 'function') { } } -},{}],93:[function(require,module,exports){ -/** - * Determine if an object is Buffer - * - * Author: Feross Aboukhadijeh - * License: MIT +},{}],94:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer * - * `npm install is-buffer` + * @author Feross Aboukhadijeh + * @license MIT */ +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually module.exports = function (obj) { - return !!(obj != null && - (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor) - (obj.constructor && - typeof obj.constructor.isBuffer === 'function' && - obj.constructor.isBuffer(obj)) - )) + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) } -},{}],94:[function(require,module,exports){ -var toString = {}.toString; +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} },{}],95:[function(require,module,exports){ var bn = require('bn.js'); @@ -16601,7 +16631,7 @@ module.exports = function (okey, password) { } }).call(this,require("buffer").Buffer) -},{"browserify-aes":21,"buffer":46,"evp_bytestokey":83}],101:[function(require,module,exports){ +},{"browserify-aes":21,"buffer":46,"evp_bytestokey":84}],101:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -17018,7 +17048,7 @@ function pbkdf2Sync (password, salt, iterations, keylen, digest) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hmac":53}],104:[function(require,module,exports){ +},{"buffer":46,"create-hmac":54}],104:[function(require,module,exports){ (function (process){ 'use strict'; @@ -17067,7 +17097,6 @@ function nextTick(fn, arg1, arg2, arg3) { }).call(this,require('_process')) },{"_process":105}],105:[function(require,module,exports){ // shim for using process in browser - var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it @@ -17079,21 +17108,63 @@ var cachedSetTimeout; var cachedClearTimeout; (function () { - try { - cachedSetTimeout = setTimeout; - } catch (e) { - cachedSetTimeout = function () { - throw new Error('setTimeout is not defined'); + try { + cachedSetTimeout = setTimeout; + } catch (e) { + cachedSetTimeout = function () { + throw new Error('setTimeout is not defined'); + } } - } - try { - cachedClearTimeout = clearTimeout; - } catch (e) { - cachedClearTimeout = function () { - throw new Error('clearTimeout is not defined'); + try { + cachedClearTimeout = clearTimeout; + } catch (e) { + cachedClearTimeout = function () { + throw new Error('clearTimeout is not defined'); + } } - } } ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} var queue = []; var draining = false; var currentQueue; @@ -17118,7 +17189,7 @@ function drainQueue() { if (draining) { return; } - var timeout = cachedSetTimeout(cleanUpNextTick); + var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; @@ -17135,7 +17206,7 @@ function drainQueue() { } currentQueue = null; draining = false; - cachedClearTimeout(timeout); + runClearTimeout(timeout); } process.nextTick = function (fun) { @@ -17147,7 +17218,7 @@ process.nextTick = function (fun) { } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { - cachedSetTimeout(drainQueue, 0); + runTimeout(drainQueue); } }; @@ -17216,7 +17287,7 @@ function i2ops(c) { return out; } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash":50}],108:[function(require,module,exports){ +},{"buffer":46,"create-hash":51}],108:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -17327,7 +17398,7 @@ function compare(a, b){ return dif; } }).call(this,require("buffer").Buffer) -},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":50,"parse-asn1":101}],109:[function(require,module,exports){ +},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":51,"parse-asn1":101}],109:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -17425,7 +17496,7 @@ function nonZero(len, crypto) { return out; } }).call(this,require("buffer").Buffer) -},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":50,"parse-asn1":101,"randombytes":112}],110:[function(require,module,exports){ +},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":51,"parse-asn1":101,"randombytes":112}],110:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -17488,1216 +17559,1283 @@ function randomBytes (size, cb) { }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) },{"_process":105,"buffer":46}],113:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") +(function (Buffer){ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** @preserve +(c) 2012 by Cédric Mesnil. All rights reserved. -},{"./lib/_stream_duplex.js":114}],114:[function(require,module,exports){ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -'use strict'; + - 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. -/**/ +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 HOLDER 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. +*/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ +// constants table +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] -module.exports = Duplex; +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] -/**/ -var processNextTick = require('process-nextick-args'); -/**/ +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); +var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] +var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] -util.inherits(Duplex, Readable); +function bytesToWords (bytes) { + var words = [] + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { + words[b >>> 5] |= bytes[i] << (24 - b % 32) + } + return words +} -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +function wordsToBytes (words) { + var bytes = [] + for (var b = 0; b < words.length * 32; b += 8) { + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) + } + return bytes } -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); +function processBlock (H, M, offset) { + // swap endian + for (var i = 0; i < 16; i++) { + var offset_i = offset + i + var M_offset_i = M[offset_i] - Readable.call(this, options); - Writable.call(this, options); + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ) + } - if (options && options.readable === false) this.readable = false; + // Working variables + var al, bl, cl, dl, el + var ar, br, cr, dr, er - if (options && options.writable === false) this.writable = false; + ar = al = H[0] + br = bl = H[1] + cr = cl = H[2] + dr = dl = H[3] + er = el = H[4] - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + // computation + var t + for (i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0 + if (i < 16) { + t += f1(bl, cl, dl) + hl[0] + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1] + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2] + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3] + } else {// if (i<80) { + t += f5(bl, cl, dl) + hl[4] + } + t = t | 0 + t = rotl(t, sl[i]) + t = (t + el) | 0 + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = t - this.once('end', onend); -} + t = (ar + M[offset + zr[i]]) | 0 + if (i < 16) { + t += f5(br, cr, dr) + hr[0] + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1] + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2] + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3] + } else {// if (i<80) { + t += f1(br, cr, dr) + hr[4] + } -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; + t = t | 0 + t = rotl(t, sr[i]) + t = (t + er) | 0 + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = t + } - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); + // intermediate hash value + t = (H[1] + cl + dr) | 0 + H[1] = (H[2] + dl + er) | 0 + H[2] = (H[3] + el + ar) | 0 + H[3] = (H[4] + al + br) | 0 + H[4] = (H[0] + bl + cr) | 0 + H[0] = t } -function onEndNT(self) { - self.end(); +function f1 (x, y, z) { + return ((x) ^ (y) ^ (z)) } -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } +function f2 (x, y, z) { + return (((x) & (y)) | ((~x) & (z))) } -},{"./_stream_readable":116,"./_stream_writable":118,"core-util-is":48,"inherits":92,"process-nextick-args":104}],115:[function(require,module,exports){ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +function f3 (x, y, z) { + return (((x) | (~(y))) ^ (z)) +} -util.inherits(PassThrough, Transform); +function f4 (x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))) +} -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); +function f5 (x, y, z) { + return ((x) ^ ((y) | (~(z)))) +} - Transform.call(this, options); +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) } -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":117,"core-util-is":48,"inherits":92}],116:[function(require,module,exports){ -(function (process){ -'use strict'; +function ripemd160 (message) { + var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] -module.exports = Readable; + if (typeof message === 'string') { + message = new Buffer(message, 'utf8') + } -/**/ -var processNextTick = require('process-nextick-args'); -/**/ + var m = bytesToWords(message) -/**/ -var isArray = require('isarray'); -/**/ + var nBitsLeft = message.length * 8 + var nBitsTotal = message.length * 8 -Readable.ReadableState = ReadableState; + // Add padding + m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) + m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ) -/**/ -var EE = require('events').EventEmitter; + for (var i = 0; i < m.length; i += 16) { + processBlock(H, m, i) + } -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ + // swap endian + for (i = 0; i < 5; i++) { + // shortcut + var H_i = H[i] -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) } -})(); -/**/ -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ + var digestbytes = wordsToBytes(H) + return new Buffer(digestbytes) +} -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +module.exports = ripemd160 -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; +}).call(this,require("buffer").Buffer) +},{"buffer":46}],114:[function(require,module,exports){ +(function (Buffer){ +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = new Buffer(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 + this._s = 0 } -/**/ -var StringDecoder; +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = new Buffer(data, enc) + } -util.inherits(Readable, Stream); + var l = this._len += data.length + var s = this._s || 0 + var f = 0 + var buffer = this._block -var hasPrependListener = typeof EE.prototype.prependListener === 'function'; + while (s < l) { + var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) + var ch = (t - f) -function prependListener(emitter, event, fn) { - if (hasPrependListener) return emitter.prependListener(event, fn); + for (var i = 0; i < ch; i++) { + buffer[(s % this._blockSize) + i] = data[i + f] + } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. This is here - // only because this code needs to continue to work with older versions - // of Node.js that do not include the prependListener() method. The goal - // is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} + s += ch + f += ch -var Duplex; -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); + if ((s % this._blockSize) === 0) { + this._update(buffer) + } + } + this._s = s - options = options || {}; + return this +} - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; +Hash.prototype.digest = function (enc) { + // Suppose the length of the message M, in bits, is l + var l = this._len * 8 - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + // Append the bit 1 to the end of the message + this._block[this._len % this._blockSize] = 0x80 - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize + this._block.fill(0, this._len % this._blockSize + 1) - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + if (l % (this._blockSize * 8) >= this._finalSize * 8) { + this._update(this._block) + this._block.fill(0) + } - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; + // to this append the block which is equal to the number l written in binary + // TODO: handle case where l is > Math.pow(2, 29) + this._block.writeInt32BE(l, this._blockSize - 4) - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + var hash = this._update(this._block) || this._hash() - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; + return enc ? hash.toString(enc) : hash +} - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; +module.exports = Hash - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; +}).call(this,require("buffer").Buffer) +},{"buffer":46}],115:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } + return new Algorithm() } -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); +exports.sha = require('./sha') +exports.sha1 = require('./sha1') +exports.sha224 = require('./sha224') +exports.sha256 = require('./sha256') +exports.sha384 = require('./sha384') +exports.sha512 = require('./sha512') - if (!(this instanceof Readable)) return new Readable(options); +},{"./sha":116,"./sha1":117,"./sha224":118,"./sha256":119,"./sha384":120,"./sha512":121}],116:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ - this._readableState = new ReadableState(options, this); +var inherits = require('inherits') +var Hash = require('./hash') - // legacy - this.readable = true; +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] - if (options && typeof options.read === 'function') this._read = options.read; +var W = new Array(80) - Stream.call(this); -} +function Sha () { + this.init() + this._w = W -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; + Hash.call(this, 64, 56) +} - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = bufferShim.from(chunk, encoding); - encoding = ''; - } - } +inherits(Sha, Hash) - return readableAddChunk(this, state, chunk, encoding, false); -}; +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; + return this +} -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} - if (!addToFront) state.reading = false; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); +Sha.prototype._update = function (M) { + var W = this._w - if (state.needReadable) emitReadable(stream); - } - } + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t } - return needMoreData(state); + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 } -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} +Sha.prototype._hash = function () { + var H = new Buffer(20) -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; + return H } -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) return 0; +module.exports = Sha - if (state.objectMode) return n === 0 ? 0 : 1; +}).call(this,require("buffer").Buffer) +},{"./hash":114,"buffer":46,"inherits":93}],117:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; - } +var inherits = require('inherits') +var Hash = require('./hash') - if (n <= 0) return 0; +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); +var W = new Array(80) - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else { - return state.length; - } - } +function Sha1 () { + this.init() + this._w = W - return n; + Hash.call(this, 64, 56) } -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; +inherits(Sha1, Hash) - if (typeof n !== 'number' || n > 0) state.emittedReadable = false; +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } + return this +} - n = howMuchToRead(n, state); +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } +Sha1.prototype._update = function (M) { + var W = this._w - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + + e = d + d = c + c = rotl30(b) + b = a + a = t } - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) n = howMuchToRead(nOrig, state); + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; +Sha1.prototype._hash = function () { + var H = new Buffer(20) - if (ret === null) { - state.needReadable = true; - n = 0; - } + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) - state.length -= n; + return H +} - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) state.needReadable = true; +module.exports = Sha1 - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) endReadable(this); +}).call(this,require("buffer").Buffer) +},{"./hash":114,"buffer":46,"inherits":93}],118:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - if (ret !== null) this.emit('data', ret); +var inherits = require('inherits') +var Sha256 = require('./sha256') +var Hash = require('./hash') - return ret; -}; +var W = new Array(64) -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} +function Sha224 () { + this.init() -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; + this._w = W // new Array(64) - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); + Hash.call(this, 64, 56) } -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } -} +inherits(Sha224, Sha256) -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } + return this } -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} +Sha224.prototype._hash = function () { + var H = new Buffer(28) -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; + return H +} - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); +module.exports = Sha224 - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; +}).call(this,require("buffer").Buffer) +},{"./hash":114,"./sha256":119,"buffer":46,"inherits":93}],119:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); +var inherits = require('inherits') +var Hash = require('./hash') - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] - function onend() { - debug('onend'); - dest.end(); - } +var W = new Array(64) - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); +function Sha256 () { + this.init() - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); + this._w = W // new Array(64) - cleanedUp = true; + Hash.call(this, 64, 56) +} - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } +inherits(Sha256, Hash) - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); + return this +} - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} - // tell the dest that it's being piped to - dest.emit('pipe', src); +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} - return dest; -}; +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) } -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; +Sha256.prototype._update = function (M) { + var W = this._w - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 - if (!dest) dest = state.pipes; + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 } - // slow case. multiple pipe destinations. + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; +Sha256.prototype._hash = function () { + var H = new Buffer(32) - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; + return H +} - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; +module.exports = Sha256 - dest.emit('unpipe', this); +}).call(this,require("buffer").Buffer) +},{"./hash":114,"buffer":46,"inherits":93}],120:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var SHA512 = require('./sha512') +var Hash = require('./hash') - return this; -}; +var W = new Array(160) -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); +function Sha384 () { + this.init() + this._w = W - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } + Hash.call(this, 128, 112) +} - if (ev === 'readable' && !this._readableState.endEmitted) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } +inherits(Sha384, SHA512) - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 + + return this } -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; +Sha384.prototype._hash = function () { + var H = new Buffer(48) -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) } -} -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); + return H } -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; +module.exports = Sha384 -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} +}).call(this,require("buffer").Buffer) +},{"./hash":114,"./sha512":121,"buffer":46,"inherits":93}],121:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var Hash = require('./hash') -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } +var W = new Array(160) - self.push(null); - }); +function Sha512 () { + this.init() + this._w = W - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); + Hash.call(this, 128, 112) +} - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; +inherits(Sha512, Hash) - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); + return this +} - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} - return self; -}; +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} -// exposed for testing purposes only. -Readable._fromList = fromList; +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} - // nothing in the list, definitely empty. - if (list.length === 0) return null; +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} - if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) ret = '';else ret = bufferShim.allocUnsafe(n); +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var _buf = list[0]; - var cpy = Math.min(n - c, _buf.length); +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} - if (stringMode) ret += _buf.slice(0, cpy);else _buf.copy(ret, c, 0, cpy); +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} - if (cpy < _buf.length) list[0] = _buf.slice(cpy);else list.shift(); +Sha512.prototype._update = function (M) { + var W = this._w - c += cpy; - } - } + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) - return ret; -} + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) -function endReadable(stream) { - var state = stream._readableState; + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); + W[i] = Wih + W[i + 1] = Wil } -} -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} -}).call(this,require('_process')) -},{"./_stream_duplex":114,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":48,"events":82,"inherits":92,"isarray":94,"process-nextick-args":104,"string_decoder/":133,"util":18}],117:[function(require,module,exports){ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) -var Duplex = require('./_stream_duplex'); + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] -util.inherits(Transform, Duplex); + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } - var cb = ts.writecb; + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} - ts.writechunk = null; - ts.writecb = null; +Sha512.prototype._hash = function () { + var H = new Buffer(64) - if (data !== null && data !== undefined) stream.push(data); + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } - cb(er); + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } + return H } -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); +module.exports = Sha512 - Duplex.call(this, options); +}).call(this,require("buffer").Buffer) +},{"./hash":114,"buffer":46,"inherits":93}],122:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. - this._transformState = new TransformState(this); +module.exports = Stream; - // when the writable side finishes, then flush out anything remaining. - var stream = this; +var EE = require('events').EventEmitter; +var inherits = require('inherits'); - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - if (typeof options.flush === 'function') this._flush = options.flush; - } - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); -} +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; +function Stream() { + EE.call(this); +} -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; +Stream.prototype.pipe = function(dest, options) { + var source = this; -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } } -}; -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; + source.on('data', ondata); - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } } -}; -function done(stream, er) { - if (er) return stream.emit('error', er); + dest.on('drain', ondrain); - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; - if (ts.transforming) throw new Error('Calling transform done when still transforming'); + dest.end(); + } - return stream.push(null); -} -},{"./_stream_duplex":114,"core-util-is":48,"inherits":92}],118:[function(require,module,exports){ -(function (process){ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":83,"inherits":93,"readable-stream/duplex.js":124,"readable-stream/passthrough.js":131,"readable-stream/readable.js":132,"readable-stream/transform.js":133,"readable-stream/writable.js":134}],123:[function(require,module,exports){ +arguments[4][47][0].apply(exports,arguments) +},{"dup":47}],124:[function(require,module,exports){ +module.exports = require("./lib/_stream_duplex.js") + +},{"./lib/_stream_duplex.js":125}],125:[function(require,module,exports){ +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. 'use strict'; -module.exports = Writable; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; /**/ var processNextTick = require('process-nextick-args'); /**/ /**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; +var util = require('core-util-is'); +util.inherits = require('inherits'); /**/ -Writable.WritableState = WritableState; +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +var keys = objectKeys(Writable.prototype); +for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + processNextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} +},{"./_stream_readable":127,"./_stream_writable":129,"core-util-is":49,"inherits":93,"process-nextick-args":104}],126:[function(require,module,exports){ +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); /**/ var util = require('core-util-is'); util.inherits = require('inherits'); /**/ +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":128,"core-util-is":49,"inherits":93}],127:[function(require,module,exports){ +(function (process){ +'use strict'; + +module.exports = Readable; + +/**/ +var processNextTick = require('process-nextick-args'); +/**/ + /**/ -var internalUtil = { - deprecate: require('util-deprecate') +var isArray = require('isarray'); +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; }; /**/ @@ -18717,32 +18855,52 @@ var Buffer = require('buffer').Buffer; var bufferShim = require('buffer-shims'); /**/ -util.inherits(Writable, Stream); +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -function nop() {} +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; +var BufferList = require('./internal/streams/BufferList'); +var StringDecoder; + +util.inherits(Readable, Stream); + +function prependListener(emitter, event, fn) { + if (typeof emitter.prependListener === 'function') { + return emitter.prependListener(event, fn); + } else { + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; + } } var Duplex; -function WritableState(options, stream) { +function ReadableState(options, stream) { Duplex = Duplex || require('./_stream_duplex'); options = options || {}; - // object stream flag to indicate whether or not this stream - // contains buffers or objects. + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away this.objectMode = !!options.objectMode; - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" var hwm = options.highWaterMark; var defaultHwm = this.objectMode ? 16 : 16 * 1024; this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; @@ -18750,35 +18908,17 @@ function WritableState(options, stream) { // cast to ints. this.highWaterMark = ~ ~this.highWaterMark; - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the onwrite cb is called immediately, // or on a later tick. We set this to true at first, because any @@ -18786,1598 +18926,1640 @@ function WritableState(options, stream) { // not happen before the first write call. this.sync = true; - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; - // the amount that is being written when _write is called. - this.writelen = 0; + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; - this.bufferedRequest = null; - this.lastBufferedRequest = null; + // if true, a maybeReadMore has been scheduled + this.readingMore = false; - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; +var Duplex; +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; + if (!(this instanceof Readable)) return new Readable(options); - // count buffered requests - this.bufferedRequestCount = 0; + this._readableState = new ReadableState(options, this); - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); + // legacy + this.readable = true; + + if (options && typeof options.read === 'function') this._read = options.read; + + Stream.call(this); } -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + + if (!state.objectMode && typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = bufferShim.from(chunk, encoding); + encoding = ''; + } } - return out; + + return readableAddChunk(this, state, chunk, encoding, false); }; -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var _e = new Error('stream.unshift() after end event'); + stream.emit('error', _e); + } else { + var skipAdd; + if (state.decoder && !addToFront && !encoding) { + chunk = state.decoder.write(chunk); + skipAdd = !state.objectMode && chunk.length === 0; + } - this._writableState = new WritableState(options, this); + if (!addToFront) state.reading = false; - // legacy. - this.writable = true; + // Don't add to the buffer if we've decoded to an empty string chunk and + // we're not in object mode + if (!skipAdd) { + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - if (options) { - if (typeof options.write === 'function') this._write = options.write; + if (state.needReadable) emitReadable(stream); + } + } - if (typeof options.writev === 'function') this._writev = options.writev; + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; } - Stream.call(this); + return needMoreData(state); } -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; }; -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; } - if (er) { - stream.emit('error', er); - processNextTick(cb, er); - valid = false; + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; } - return valid; + return state.length; } -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; - if (typeof cb !== 'function') cb = nop; + if (n !== 0) state.emittedReadable = false; - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; } - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; + n = howMuchToRead(n, state); - state.corked++; -}; + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } -Writable.prototype.uncork = function () { - var state = this._writableState; + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. - if (state.corked) { - state.corked--; + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = bufferShim.from(chunk, encoding); + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; - state.length += len; + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); } + if (ret !== null) this.emit('data', ret); + return ret; -} +}; -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; } -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; - stream._writableState.errorEmitted = true; - stream.emit('error', er); + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); } -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); + } } -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + processNextTick(maybeReadMore_, stream, state); } } -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; } -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; } -} + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); } + } - doWrite(stream, state, true, state.length, buffer, '', holder.finish); + function onend() { + debug('onend'); + dest.end(); + } - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); - if (entry === null) state.lastBufferedRequest = null; + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } -Writable.prototype._writev = null; + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; + function unpipe() { + debug('unpipe'); + src.unpipe(dest); } - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + // tell the dest that it's being piped to + dest.emit('pipe', src); - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); } - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); + return dest; }; -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); } - } - return need; + }; } -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; - this.next = null; - this.entry = null; + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} -}).call(this,require('_process')) -},{"./_stream_duplex":114,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":48,"events":82,"inherits":92,"process-nextick-args":104,"util-deprecate":134}],119:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") + if (!dest) dest = state.pipes; -},{"./lib/_stream_passthrough.js":115}],120:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this); + return this; + } -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} + // slow case. multiple pipe destinations. -}).call(this,require('_process')) -},{"./lib/_stream_duplex.js":114,"./lib/_stream_passthrough.js":115,"./lib/_stream_readable.js":116,"./lib/_stream_transform.js":117,"./lib/_stream_writable.js":118,"_process":105}],121:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; -},{"./lib/_stream_transform.js":117}],122:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") + for (var _i = 0; _i < len; _i++) { + dests[_i].emit('unpipe', this); + }return this; + } -},{"./lib/_stream_writable.js":118}],123:[function(require,module,exports){ -(function (Buffer){ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/** @preserve -(c) 2012 by Cédric Mesnil. All rights reserved. + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) return this; -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - 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. + dest.emit('unpipe', this); -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 HOLDER 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. -*/ + return this; +}; -// constants table -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + processNextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this, state); + } + } + } -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} -var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] -var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; -function bytesToWords (bytes) { - var words = [] - for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { - words[b >>> 5] |= bytes[i] << (24 - b % 32) +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + processNextTick(resume_, stream, state); } - return words } -function wordsToBytes (words) { - var bytes = [] - for (var b = 0; b < words.length * 32; b += 8) { - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); } - return bytes -} -function processBlock (H, M, offset) { - // swap endian - for (var i = 0; i < 16; i++) { - var offset_i = offset + i - var M_offset_i = M[offset_i] + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ) +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); } + return this; +}; - // Working variables - var al, bl, cl, dl, el - var ar, br, cr, dr, er +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} - ar = al = H[0] - br = bl = H[1] - cr = cl = H[2] - dr = dl = H[3] - er = el = H[4] +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; - // computation - var t - for (i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0 - if (i < 16) { - t += f1(bl, cl, dl) + hl[0] - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1] - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2] - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3] - } else {// if (i<80) { - t += f5(bl, cl, dl) + hl[4] + var self = this; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); } - t = t | 0 - t = rotl(t, sl[i]) - t = (t + el) | 0 - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = t - t = (ar + M[offset + zr[i]]) | 0 - if (i < 16) { - t += f5(br, cr, dr) + hr[0] - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1] - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2] - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3] - } else {// if (i<80) { - t += f1(br, cr, dr) + hr[4] + self.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); } + }); - t = t | 0 - t = rotl(t, sr[i]) - t = (t + er) | 0 - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = t + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } } - // intermediate hash value - t = (H[1] + cl + dr) | 0 - H[1] = (H[2] + dl + er) | 0 - H[2] = (H[3] + el + ar) | 0 - H[3] = (H[4] + al + br) | 0 - H[4] = (H[0] + bl + cr) | 0 - H[0] = t -} + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function (ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); -function f1 (x, y, z) { - return ((x) ^ (y) ^ (z)) -} + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; -function f2 (x, y, z) { - return (((x) & (y)) | ((~x) & (z))) -} + return self; +}; -function f3 (x, y, z) { - return (((x) | (~(y))) ^ (z)) -} +// exposed for testing purposes only. +Readable._fromList = fromList; -function f4 (x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))) -} +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; -function f5 (x, y, z) { - return ((x) ^ ((y) | (~(z)))) -} + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) + return ret; } -function ripemd160 (message) { - var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] - - if (typeof message === 'string') { - message = new Buffer(message, 'utf8') +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); } + return ret; +} - var m = bytesToWords(message) - - var nBitsLeft = message.length * 8 - var nBitsTotal = message.length * 8 - - // Add padding - m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) - m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ) - - for (var i = 0; i < m.length; i += 16) { - processBlock(H, m, i) +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; } + list.length -= c; + return ret; +} - // swap endian - for (i = 0; i < 5; i++) { - // shortcut - var H_i = H[i] - - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = bufferShim.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; } - - var digestbytes = wordsToBytes(H) - return new Buffer(digestbytes) + list.length -= c; + return ret; } -module.exports = ripemd160 +function endReadable(stream) { + var state = stream._readableState; -}).call(this,require("buffer").Buffer) -},{"buffer":46}],124:[function(require,module,exports){ -(function (Buffer){ -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = new Buffer(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 - this._s = 0 -} + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = new Buffer(data, enc) + if (!state.endEmitted) { + state.ended = true; + processNextTick(endReadableNT, state, stream); } +} - var l = this._len += data.length - var s = this._s || 0 - var f = 0 - var buffer = this._block - - while (s < l) { - var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) - var ch = (t - f) - - for (var i = 0; i < ch; i++) { - buffer[(s % this._blockSize) + i] = data[i + f] - } - - s += ch - f += ch - - if ((s % this._blockSize) === 0) { - this._update(buffer) - } +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); } - this._s = s +} - return this +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } } -Hash.prototype.digest = function (enc) { - // Suppose the length of the message M, in bits, is l - var l = this._len * 8 +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this,require('_process')) +},{"./_stream_duplex":125,"./internal/streams/BufferList":130,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":49,"events":83,"inherits":93,"isarray":123,"process-nextick-args":104,"string_decoder/":135,"util":18}],128:[function(require,module,exports){ +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. - // Append the bit 1 to the end of the message - this._block[this._len % this._blockSize] = 0x80 +'use strict'; - // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize - this._block.fill(0, this._len % this._blockSize + 1) +module.exports = Transform; - if (l % (this._blockSize * 8) >= this._finalSize * 8) { - this._update(this._block) - this._block.fill(0) - } +var Duplex = require('./_stream_duplex'); - // to this append the block which is equal to the number l written in binary - // TODO: handle case where l is > Math.pow(2, 29) - this._block.writeInt32BE(l, this._blockSize - 4) +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - var hash = this._update(this._block) || this._hash() +util.inherits(Transform, Duplex); - return enc ? hash.toString(enc) : hash -} +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform(stream, er, data); + }; -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; } -module.exports = Hash +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; -}).call(this,require("buffer").Buffer) -},{"buffer":46}],125:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() + var cb = ts.writecb; - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - return new Algorithm() -} + ts.writechunk = null; + ts.writecb = null; -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') + if (data !== null && data !== undefined) stream.push(data); -},{"./sha":126,"./sha1":127,"./sha224":128,"./sha256":129,"./sha384":130,"./sha512":131}],126:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ + cb(er); -var inherits = require('inherits') -var Hash = require('./hash') + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); + } +} -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); -var W = new Array(80) + Duplex.call(this, options); -function Sha () { - this.init() - this._w = W + this._transformState = new TransformState(this); - Hash.call(this, 64, 56) -} + // when the writable side finishes, then flush out anything remaining. + var stream = this; -inherits(Sha, Hash) + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; - return this -} + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} + if (typeof options.flush === 'function') this._flush = options.flush; + } -function rotl30 (num) { - return (num << 30) | (num >>> 2) + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er) { + done(stream, er); + });else done(stream); + }); } -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} - -Sha.prototype._update = function (M) { - var W = this._w +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('Not implemented'); +}; - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; - e = d - d = c - c = rotl30(b) - b = a - a = t + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; } +}; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} +function done(stream, er) { + if (er) return stream.emit('error', er); -Sha.prototype._hash = function () { - var H = new Buffer(20) + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); - return H + if (ts.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); } +},{"./_stream_duplex":125,"core-util-is":49,"inherits":93}],129:[function(require,module,exports){ +(function (process){ +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. -module.exports = Sha +'use strict'; -}).call(this,require("buffer").Buffer) -},{"./hash":124,"buffer":46,"inherits":92}],127:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ +module.exports = Writable; -var inherits = require('inherits') -var Hash = require('./hash') +/**/ +var processNextTick = require('process-nextick-args'); +/**/ -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; +/**/ -var W = new Array(80) +Writable.WritableState = WritableState; -function Sha1 () { - this.init() - this._w = W +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - Hash.call(this, 64, 56) -} +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ -inherits(Sha1, Hash) +/**/ +var Stream; +(function () { + try { + Stream = require('st' + 'ream'); + } catch (_) {} finally { + if (!Stream) Stream = require('events').EventEmitter; + } +})(); +/**/ -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ - return this -} +util.inherits(Writable, Stream); -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} +function nop() {} -function rotl5 (num) { - return (num << 5) | (num >>> 27) +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; } -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} +var Duplex; +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} + options = options || {}; -Sha1.prototype._update = function (M) { - var W = this._w + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; - e = d - d = c - c = rotl30(b) - b = a - a = t - } + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; -Sha1.prototype._hash = function () { - var H = new Buffer(20) + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; - return H -} + // a flag to see when we're in the middle of a write. + this.writing = false; -module.exports = Sha1 + // when true all writes will be buffered until .uncork() call + this.corked = 0; -}).call(this,require("buffer").Buffer) -},{"./hash":124,"buffer":46,"inherits":92}],128:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; -var W = new Array(64) + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; -function Sha224 () { - this.init() + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; - this._w = W // new Array(64) + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; - Hash.call(this, 64, 56) -} + // the amount that is being written when _write is called. + this.writelen = 0; -inherits(Sha224, Sha256) + this.bufferedRequest = null; + this.lastBufferedRequest = null; -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; - return this -} + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; -Sha224.prototype._hash = function () { - var H = new Buffer(28) + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) + // count buffered requests + this.bufferedRequestCount = 0; - return H + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); } -module.exports = Sha224 - -}).call(this,require("buffer").Buffer) -},{"./hash":124,"./sha256":129,"buffer":46,"inherits":92}],129:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var inherits = require('inherits') -var Hash = require('./hash') +WritableState.prototype.getBuffer = function writableStateGetBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') + }); + } catch (_) {} +})(); -var W = new Array(64) +var Duplex; +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); -function Sha256 () { - this.init() + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - this._w = W // new Array(64) + this._writableState = new WritableState(options, this); - Hash.call(this, 64, 56) -} + // legacy. + this.writable = true; -inherits(Sha256, Hash) + if (options) { + if (typeof options.write === 'function') this._write = options.write; -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 + if (typeof options.writev === 'function') this._writev = options.writev; + } - return this + Stream.call(this); } -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; -function maj (x, y, z) { - return (x & y) | (z & (x | y)) +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + processNextTick(cb, er); } -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + // Always throw error if a null is written + // if we are not in object mode then throw + // if it is not a buffer, string, or undefined. + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + processNextTick(cb, er); + valid = false; + } + return valid; } -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} + if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; -Sha256.prototype._update = function (M) { - var W = this._w + if (typeof cb !== 'function') cb = nop; - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 + if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); + } - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + return ret; +}; - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 +Writable.prototype.cork = function () { + var state = this._writableState; - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 - } + state.corked++; +}; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 -} +Writable.prototype.uncork = function () { + var state = this._writableState; -Sha256.prototype._hash = function () { - var H = new Buffer(32) + if (state.corked) { + state.corked--; - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) - - return H -} - -module.exports = Sha256 - -}).call(this,require("buffer").Buffer) -},{"./hash":124,"buffer":46,"inherits":92}],130:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') - -var W = new Array(160) - -function Sha384 () { - this.init() - this._w = W - - Hash.call(this, 128, 112) -} - -inherits(Sha384, SHA512) - -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d - - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 - - return this -} - -Sha384.prototype._hash = function () { - var H = new Buffer(48) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } +}; - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; - return H +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = bufferShim.from(chunk, encoding); + } + return chunk; } -module.exports = Sha384 +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); -}).call(this,require("buffer").Buffer) -},{"./hash":124,"./sha512":131,"buffer":46,"inherits":92}],131:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var Hash = require('./hash') + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] + state.length += len; -var W = new Array(160) + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; -function Sha512 () { - this.init() - this._w = W + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } - Hash.call(this, 128, 112) + return ret; } -inherits(Sha512, Hash) - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 - - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 - - return this +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; } -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) processNextTick(cb, er);else cb(er); -function maj (x, y, z) { - return (x & y) | (z & (x | y)) + stream._writableState.errorEmitted = true; + stream.emit('error', er); } -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; } -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} + onwriteStateUpdate(state); -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } } -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); } -Sha512.prototype._update = function (M) { - var W = this._w - - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 - - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 - - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) - - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] - - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] - - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 - - W[i] = Wih - W[i + 1] = Wil +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); } +} - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] - - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) - - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) - - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] - - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) - - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 - } + var count = 0; + while (entry) { + buffer[count] = entry; + entry = entry.next; + count += 1; + } - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 + doWrite(stream, state, true, state.length, buffer, '', holder.finish); - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 -} + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; -Sha512.prototype._hash = function () { - var H = new Buffer(64) + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) + if (entry === null) state.lastBufferedRequest = null; } - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) - - return H + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; } -module.exports = Sha512 - -}).call(this,require("buffer").Buffer) -},{"./hash":124,"buffer":46,"inherits":92}],132:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Stream; - -var EE = require('events').EventEmitter; -var inherits = require('inherits'); +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('not implemented')); +}; -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); +Writable.prototype._writev = null; -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } -function Stream() { - EE.call(this); -} + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; -Stream.prototype.pipe = function(dest, options) { - var source = this; +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); } +} - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else { + prefinish(stream, state); } } + return need; +} - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) processNextTick(cb);else stream.once('finish', cb); } + state.ended = true; + stream.writable = false; +} - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; - dest.end(); - } + this.next = null; + this.entry = null; + this.finish = function (err) { + var entry = _this.entry; + _this.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = _this; + } else { + state.corkedRequestsFree = _this; + } + }; +} +}).call(this,require('_process')) +},{"./_stream_duplex":125,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":49,"events":83,"inherits":93,"process-nextick-args":104,"util-deprecate":136}],130:[function(require,module,exports){ +'use strict'; - function onclose() { - if (didOnEnd) return; - didOnEnd = true; +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ - if (typeof dest.destroy === 'function') dest.destroy(); - } +module.exports = BufferList; - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } +function BufferList() { + this.head = null; + this.tail = null; + this.length = 0; +} - source.on('error', onerror); - dest.on('error', onerror); +BufferList.prototype.push = function (v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; +}; - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); +BufferList.prototype.unshift = function (v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; +}; - source.removeListener('end', onend); - source.removeListener('close', onclose); +BufferList.prototype.shift = function () { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; +}; - source.removeListener('error', onerror); - dest.removeListener('error', onerror); +BufferList.prototype.clear = function () { + this.head = this.tail = null; + this.length = 0; +}; - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); +BufferList.prototype.join = function (s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; +}; - dest.removeListener('close', cleanup); +BufferList.prototype.concat = function (n) { + if (this.length === 0) return bufferShim.alloc(0); + if (this.length === 1) return this.head.data; + var ret = bufferShim.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + p.data.copy(ret, i); + i += p.data.length; + p = p.next; } + return ret; +}; +},{"buffer":46,"buffer-shims":44}],131:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") - source.on('end', cleanup); - source.on('close', cleanup); +},{"./lib/_stream_passthrough.js":126}],132:[function(require,module,exports){ +(function (process){ +var Stream = (function (){ + try { + return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify + } catch(_){} +}()); +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = Stream || exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); - dest.on('close', cleanup); +if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; +} - dest.emit('pipe', source); +}).call(this,require('_process')) +},{"./lib/_stream_duplex.js":125,"./lib/_stream_passthrough.js":126,"./lib/_stream_readable.js":127,"./lib/_stream_transform.js":128,"./lib/_stream_writable.js":129,"_process":105}],133:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; +},{"./lib/_stream_transform.js":128}],134:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") -},{"events":82,"inherits":92,"readable-stream/duplex.js":113,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],133:[function(require,module,exports){ +},{"./lib/_stream_writable.js":129}],135:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -20600,7 +20782,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":46}],134:[function(require,module,exports){ +},{"buffer":46}],136:[function(require,module,exports){ (function (global){ /** @@ -20671,7 +20853,7 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],135:[function(require,module,exports){ +},{}],137:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -20811,7 +20993,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":91}],136:[function(require,module,exports){ +},{"indexof":92}],138:[function(require,module,exports){ (function (process,global){ /*! * @overview es6-promise - a tiny implementation of Promises/A+. @@ -21781,7 +21963,7 @@ exports.createContext = Script.createContext = function (context) { }).call(this); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":105}],137:[function(require,module,exports){ +},{"_process":105}],139:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -21792,7 +21974,7 @@ module.exports = { TextDecoder: encoding.TextDecoder, }; -},{"./lib/encoding.js":139}],138:[function(require,module,exports){ +},{"./lib/encoding.js":141}],140:[function(require,module,exports){ (function(global) { 'use strict'; global["encoding-indexes"] = { @@ -21832,7 +22014,7 @@ module.exports = { }; }(this)); -},{}],139:[function(require,module,exports){ +},{}],141:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -24929,7 +25111,7 @@ if (typeof module !== "undefined" && module.exports) { global['TextDecoder'] = TextDecoder; }(this)); -},{"./encoding-indexes.js":138}],140:[function(require,module,exports){ +},{"./encoding-indexes.js":140}],142:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -24966,7 +25148,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./v1/index":144}],141:[function(require,module,exports){ +},{"./v1/index":146}],143:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25182,6 +25364,13 @@ var _ConnectionStreamObserver = (function (_StreamObserver) { this._hasFailed = true; } } + }, { + key: 'onCompleted', + value: function onCompleted(message) { + if (this._driver.onCompleted) { + this._driver.onCompleted(message); + } + } }]); return _ConnectionStreamObserver; @@ -25251,7 +25440,7 @@ function driver(url, authToken) { exports.Driver = Driver; exports.driver = driver; -},{"../version":162,"./internal/connector":150,"./internal/pool":154,"./internal/stream-observer":155,"./session":160}],142:[function(require,module,exports){ +},{"../version":164,"./internal/connector":152,"./internal/pool":156,"./internal/stream-observer":157,"./session":162}],144:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25313,7 +25502,7 @@ var Neo4jError = (function (_Error) { exports.newError = newError; exports.Neo4jError = Neo4jError; -},{}],143:[function(require,module,exports){ +},{}],145:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25534,7 +25723,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],144:[function(require,module,exports){ +},{}],146:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25588,7 +25777,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(require,module,exports){ +},{"./driver":143,"./error":144,"./graph-types":145,"./integer":147}],147:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -26451,7 +26640,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./error":142}],146:[function(require,module,exports){ +},{"./error":144}],148:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27180,7 +27369,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"./../error":142,"buffer":46}],147:[function(require,module,exports){ +},{"./../error":144,"buffer":46}],149:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27245,16 +27434,35 @@ function userHome() { return process.env[process.platform == 'win32' ? 'USERPROFILE' : 'HOME']; } +function mkFullPath(pathToCreate) { + try { + _fs2['default'].mkdirSync(pathToCreate); + } catch (e) { + if (e.code === 'ENOENT') { + // Create parent dir + mkFullPath(_path2['default'].dirname(pathToCreate)); + // And now try again + mkFullPath(pathToCreate); + return; + } + if (e.code === 'EEXIST') { + return; + } + throw e; + } +} + function loadFingerprint(serverId, knownHostsPath, cb) { - if (!_fs2['default'].existsSync(knownHostsPath)) { - cb(null); - return; + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (e) { + return cb(null); } var found = false; require('readline').createInterface({ input: _fs2['default'].createReadStream(knownHostsPath) }).on('line', function (line) { - if (line.startsWith(serverId)) { + if (!found && line.startsWith(serverId)) { found = true; cb(line.split(" ")[1]); } @@ -27265,11 +27473,31 @@ function loadFingerprint(serverId, knownHostsPath, cb) { }); } -function storeFingerprint(serverId, knownHostsPath, fingerprint) { +var _lockFingerprintFromAppending = {}; +function storeFingerprint(serverId, knownHostsPath, fingerprint, cb) { + // we check if the serverId has been appended + if (!!_lockFingerprintFromAppending[serverId]) { + // if it has, we ignore it + return cb(null); + } + + // we make the line as appended + // ( 1 is more efficient to store than true because true is an oddball ) + _lockFingerprintFromAppending[serverId] = 1; + + // If file doesn't exist, create full path to it + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (_) { + mkFullPath(_path2['default'].dirname(knownHostsPath)); + } + _fs2['default'].appendFile(knownHostsPath, serverId + " " + fingerprint + _os.EOL, "utf8", function (err) { + delete _lockFingerprintFromAppending[serverId]; if (err) { console.log(err); } + return cb(err); }); } @@ -27323,8 +27551,12 @@ var TrustStrategy = { if (knownFingerprint === serverFingerprint) { onSuccess(); } else if (knownFingerprint == null) { - storeFingerprint(serverId, knownHostsPath, serverFingerprint); - onSuccess(); + storeFingerprint(serverId, knownHostsPath, serverFingerprint, function (err) { + if (err) { + return onFailure(err); + } + return onSuccess(); + }); } else { onFailure((0, _error.newError)("Database encryption certificate has changed, and no longer " + "matches the certificate stored for " + serverId + " in `" + knownHostsPath + "`. As a security precaution, this driver will not automatically trust the new " + "certificate, because doing so would allow an attacker to pretend to be the Neo4j " + "instance we want to connect to. The certificate provided by the server looks like: " + serverCert + ". If you trust that this certificate is valid, simply remove the line " + "starting with " + serverId + " in `" + knownHostsPath + "`, and the driver will " + "update the file with the new certificate. You can configure which file the driver " + "should use to store this information by setting `knownHosts` to another path in " + "your driver configuration - and you can disable encryption there as well using " + "`encrypted:false`.")); } @@ -27464,7 +27696,7 @@ try { exports['default'] = _nodeChannelModule; module.exports = exports['default']; -},{"./../error":142,"./buf":146,"crypto":54,"fs":43,"net":43,"os":97,"path":102,"readline":43,"tls":43}],148:[function(require,module,exports){ +},{"./../error":144,"./buf":148,"crypto":55,"fs":43,"net":43,"os":97,"path":102,"readline":43,"tls":43}],150:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27618,7 +27850,7 @@ var _websocketChannelModule = { channel: WebSocketChannel, available: available exports["default"] = _websocketChannelModule; module.exports = exports["default"]; -},{"./../error":142,"./buf":146,"./log":152}],149:[function(require,module,exports){ +},{"./../error":144,"./buf":148,"./log":154}],151:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27874,7 +28106,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./buf":146}],150:[function(require,module,exports){ +},{"./buf":148}],152:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28070,6 +28302,7 @@ var _mappers = { */ var Connection = (function () { + /** * @constructor * @param channel - channel with a 'write' function and a 'onmessage' @@ -28247,17 +28480,26 @@ var Connection = (function () { }, { key: "initialize", value: function initialize(clientName, token, observer) { + var _this2 = this; + this._queueObserver(observer); - this._packer.packStruct(INIT, [clientName, token]); + this._packer.packStruct(INIT, [this._packable(clientName), this._packable(token)], function (err) { + return _this2._handleFatalError(err); + }); this._chunker.messageBoundary(); + this.sync(); } /** Queue a RUN-message to be sent to the database */ }, { key: "run", value: function run(statement, params, observer) { + var _this3 = this; + this._queueObserver(observer); - this._packer.packStruct(RUN, [statement, params]); + this._packer.packStruct(RUN, [this._packable(statement), this._packable(params)], function (err) { + return _this3._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28265,8 +28507,12 @@ var Connection = (function () { }, { key: "pullAll", value: function pullAll(observer) { + var _this4 = this; + this._queueObserver(observer); - this._packer.packStruct(PULL_ALL); + this._packer.packStruct(PULL_ALL, [], function (err) { + return _this4._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28274,8 +28520,12 @@ var Connection = (function () { }, { key: "discardAll", value: function discardAll(observer) { + var _this5 = this; + this._queueObserver(observer); - this._packer.packStruct(DISCARD_ALL); + this._packer.packStruct(DISCARD_ALL, [], function (err) { + return _this5._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28283,6 +28533,8 @@ var Connection = (function () { }, { key: "reset", value: function reset(observer) { + var _this6 = this; + this._isHandlingFailure = true; var self = this; var wrappedObs = { @@ -28296,7 +28548,9 @@ var Connection = (function () { } }; this._queueObserver(wrappedObs); - this._packer.packStruct(RESET); + this._packer.packStruct(RESET, [], function (err) { + return _this6._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -28304,8 +28558,12 @@ var Connection = (function () { }, { key: "_ackFailure", value: function _ackFailure(observer) { + var _this7 = this; + this._queueObserver(observer); - this._packer.packStruct(ACK_FAILURE); + this._packer.packStruct(ACK_FAILURE, [], function (err) { + return _this7._handleFatalError(err); + }); this._chunker.messageBoundary(); } }, { @@ -28354,6 +28612,15 @@ var Connection = (function () { value: function close(cb) { this._ch.close(cb); } + }, { + key: "_packable", + value: function _packable(value) { + var _this8 = this; + + return this._packer.packable(value, function (err) { + return _this8._handleFatalError(err); + }); + } }]); return Connection; @@ -28381,7 +28648,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(require,module,exports){ +},{"../graph-types":145,"../integer":147,"./../error":144,"./buf":148,"./ch-node":149,"./ch-websocket":150,"./chunking":151,"./features":153,"./packstream":155}],153:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28430,7 +28697,7 @@ function hasFeature(name) { exports['default'] = hasFeature; module.exports = exports['default']; -},{"tls":43}],152:[function(require,module,exports){ +},{"tls":43}],154:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28462,7 +28729,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],153:[function(require,module,exports){ +},{}],155:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28582,57 +28849,98 @@ var Packer = (function () { * @access private */ + /** + * Creates a packable function out of the provided value + * @param x the value to pack + * @param onError callback for the case when value cannot be packed + * @returns Function + */ + _createClass(Packer, [{ - key: "pack", - value: function pack(x) { + key: "packable", + value: function packable(x, onError) { + var _this = this; + if (x === null) { - this._ch.writeUInt8(NULL); + return function () { + return _this._ch.writeUInt8(NULL); + }; } else if (x === true) { - this._ch.writeUInt8(TRUE); + return function () { + return _this._ch.writeUInt8(TRUE); + }; } else if (x === false) { - this._ch.writeUInt8(FALSE); + return function () { + return _this._ch.writeUInt8(FALSE); + }; } else if (typeof x == "number") { - this.packFloat(x); + return function () { + return _this.packFloat(x); + }; } else if (typeof x == "string") { - this.packString(x); + return function () { + return _this.packString(x, onError); + }; } else if (x instanceof _integer.Integer) { - this.packInteger(x); + return function () { + return _this.packInteger(x); + }; } else if (x instanceof Array) { - this.packListHeader(x.length); - for (var i = 0; i < x.length; i++) { - this.pack(x[i] === undefined ? null : x[i]); - } + return function () { + _this.packListHeader(x.length, onError); + for (var _i = 0; _i < x.length; _i++) { + _this.packable(x[_i] === undefined ? null : x[_i], onError)(); + } + }; } else if (x instanceof Structure) { - this.packStruct(x.signature, x.fields); + var packableFields = []; + for (var i = 0; i < x.fields.length; i++) { + packableFields[i] = this.packable(x.fields[i], onError); + } + return function () { + return _this.packStruct(x.signature, packableFields); + }; } else if (typeof x == "object") { - var keys = Object.keys(x); + return function () { + var keys = Object.keys(x); - var count = 0; - for (var i = 0; i < keys.length; i++) { - if (x[keys[i]] !== undefined) { - count++; + var count = 0; + for (var _i2 = 0; _i2 < keys.length; _i2++) { + if (x[keys[_i2]] !== undefined) { + count++; + } } - } - - this.packMapHeader(count); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (x[key] !== undefined) { - this.packString(key); - this.pack(x[key]); + _this.packMapHeader(count, onError); + for (var _i3 = 0; _i3 < keys.length; _i3++) { + var key = keys[_i3]; + if (x[key] !== undefined) { + _this.packString(key); + _this.packable(x[key], onError)(); + } } - } + }; } else { - throw (0, _error.newError)("Cannot pack this value: " + x); + if (onError) { + onError((0, _error.newError)("Cannot pack this value: " + x)); + } + return function () { + return undefined; + }; } } + + /** + * Packs a struct + * @param signature the signature of the struct + * @param packableFields the fields of the struct, make sure you call `packable on all fields` + */ }, { key: "packStruct", - value: function packStruct(signature, fields) { - fields = fields || []; - this.packStructHeader(fields.length, signature); - for (var i = 0; i < fields.length; i++) { - this.pack(fields[i]); + value: function packStruct(signature, packableFields, onError) { + packableFields = packableFields || []; + this.packStructHeader(packableFields.length, signature, onError); + for (var i = 0; i < packableFields.length; i++) { + packableFields[i](); } } }, { @@ -28666,7 +28974,7 @@ var Packer = (function () { } }, { key: "packString", - value: function packString(x) { + value: function packString(x, onError) { var bytes = _utf82["default"].encode(x); var size = bytes.length; if (size < 0x10) { @@ -28689,12 +28997,12 @@ var Packer = (function () { this._ch.writeUInt8(size % 256); this._ch.writeBytes(bytes); } else { - throw (0, _error.newError)("UTF-8 strings of size " + size + " are not supported"); + onError((0, _error.newError)("UTF-8 strings of size " + size + " are not supported")); } } }, { key: "packListHeader", - value: function packListHeader(size) { + value: function packListHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_LIST | size); } else if (size < 0x100) { @@ -28711,12 +29019,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Lists of size " + size + " are not supported"); + onError((0, _error.newError)("Lists of size " + size + " are not supported")); } } }, { key: "packMapHeader", - value: function packMapHeader(size) { + value: function packMapHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -28733,12 +29041,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Maps of size " + size + " are not supported"); + onError((0, _error.newError)("Maps of size " + size + " are not supported")); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature) { + value: function packStructHeader(size, signature, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -28751,7 +29059,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Structures of size " + size + " are not supported"); + onError((0, _error.newError)("Structures of size " + size + " are not supported")); } } }]); @@ -28879,7 +29187,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(require,module,exports){ +},{"../integer":147,"./../error":144,"./buf":148,"./log":154,"./utf8":158}],156:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28970,7 +29278,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],155:[function(require,module,exports){ +},{}],157:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29128,7 +29436,7 @@ var StreamObserver = (function () { exports["default"] = StreamObserver; module.exports = exports["default"]; -},{"../record":157}],156:[function(require,module,exports){ +},{"../record":159}],158:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29259,7 +29567,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports['default'] = platformObj; module.exports = exports['default']; -},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,"buffer":46,"string_decoder":133}],157:[function(require,module,exports){ +},{"../../external/text-encoding/index":139,"./../error":144,"./buf":148,"buffer":46,"string_decoder":135}],159:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29391,7 +29699,7 @@ var Record = (function () { exports.Record = Record; -},{"./error":142}],158:[function(require,module,exports){ +},{"./error":144}],160:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29738,7 +30046,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./integer":145}],159:[function(require,module,exports){ +},{"./integer":147}],161:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29892,7 +30200,7 @@ var Result = (function () { exports['default'] = Result; module.exports = exports['default']; -},{"../external/es6-promise":136,"./result-summary":158}],160:[function(require,module,exports){ +},{"../external/es6-promise":138,"./result-summary":160}],162:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30041,7 +30349,7 @@ var Session = (function () { exports['default'] = Session; module.exports = exports['default']; -},{"./error":142,"./internal/stream-observer":155,"./result":159,"./transaction":161}],161:[function(require,module,exports){ +},{"./error":144,"./internal/stream-observer":157,"./result":161,"./transaction":163}],163:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30285,7 +30593,7 @@ function _runDiscardAll(msg, conn, observer) { exports['default'] = Transaction; module.exports = exports['default']; -},{"./internal/stream-observer":155,"./result":159}],162:[function(require,module,exports){ +},{"./internal/stream-observer":157,"./result":161}],164:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30320,5 +30628,5 @@ Object.defineProperty(exports, "__esModule", { exports["default"] = { VERSION: "0.0.0-dev" }; module.exports = exports["default"]; -},{}]},{},[140])(140) +},{}]},{},[142])(142) }); \ No newline at end of file diff --git a/lib/browser/neo4j-web.min.js b/lib/browser/neo4j-web.min.js index 9bf639e4d..97d543dcf 100644 --- a/lib/browser/neo4j-web.min.js +++ b/lib/browser/neo4j-web.min.js @@ -1,18 +1,18 @@ -!function(l){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=l();else if("function"==typeof define&&define.amd)define([],l);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.neo4j=l()}}(function(){var define,module,exports;return function l(n,u,e){function t(i,o){if(!u[i]){if(!n[i]){var a="function"==typeof require&&require;if(!o&&a)return a(i,!0);if(r)return r(i,!0);var s=new Error("Cannot find module '"+i+"'");throw s.code="MODULE_NOT_FOUND",s}var f=u[i]={exports:{}};n[i][0].call(f.exports,function(l){var u=n[i][1][l];return t(u?u:l)},f,f.exports,l,n,u,e)}return u[i].exports}for(var r="function"==typeof require&&require,i=0;i>6],t=0===(32&u);if(31===(31&u)){var r=u;for(u=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;u<<=7,u|=127&r}}else u&=31;var i=c.tag[u];return{cls:e,primitive:t,tag:u,tagStr:i}}function i(l,n,u){var e=l.readUInt8(u);if(l.isError(e))return e;if(!n&&128===e)return null;if(0===(128&e))return e;var t=127&e;if(t>=4)return l.error("length octect is too long");e=0;for(var r=0;r=31?e.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[u||"universal"]<<6)}var o=l("inherits"),a=l("buffer").Buffer,s=l("../../asn1"),f=s.base,c=s.constants.der;n.exports=e,e.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,u,e){var t=i(l,n,u,this.reporter);if(e.length<128){var r=new a(2);return r[0]=t,r[1]=e.length,this._createEncoderBuffer([r,e])}for(var o=1,s=e.length;s>=256;s>>=8)o++;var r=new a(2+o);r[0]=t,r[1]=128|o;for(var s=1+o,f=e.length;f>0;s--,f>>=8)r[s]=255&f;return this._createEncoderBuffer([r,e])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var u=new a(2*l.length),e=0;e=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,e=0;e=128;r>>=7)t++}for(var i=new a(t),o=i.length-1,e=l.length-1;e>=0;e--){var r=l[e];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var u,e=new Date(l);return"gentime"===n?u=[r(e.getFullYear()),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):"utctime"===n?u=[r(e.getFullYear()%100),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(u,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!a.isBuffer(l)){var u=l.toArray();!l.sign&&128&u[0]&&u.unshift(0),l=new a(u)}if(a.isBuffer(l)){var e=l.length;0===l.length&&e++;var t=new a(e);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var e=1,r=l;r>=256;r>>=8)e++;for(var t=new Array(e),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new a(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,u){var e,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,u).join()),r.length!==t.defaultBuffer.length)return!1;for(e=0;e0)throw new Error("Invalid string. Length must be a multiple of 4");var f=l.length;a="="===l.charAt(f-2)?2:"="===l.charAt(f-1)?1:0,s=new r(3*l.length/4-a),i=a>0?l.length-4:l.length;var c=0;for(e=0,t=0;e>16),u((65280&o)>>8),u(255&o);return 2===a?(o=n(l.charAt(e))<<2|n(l.charAt(e+1))>>4,u(255&o)):1===a&&(o=n(l.charAt(e))<<10|n(l.charAt(e+1))<<4|n(l.charAt(e+2))>>2,u(o>>8&255),u(255&o)),s}function t(l){function n(l){return e.charAt(l)}function u(l){return n(l>>18&63)+n(l>>12&63)+n(l>>6&63)+n(63&l)}var t,r,i,o=l.length%3,a="";for(t=0,i=l.length-o;t>2),a+=n(r<<4&63),a+="==";break;case 2:r=(l[l.length-2]<<8)+l[l.length-1],a+=n(r>>10),a+=n(r>>4&63),a+=n(r<<2&63),a+="="}return a}var r="undefined"!=typeof Uint8Array?Uint8Array:Array,i="+".charCodeAt(0),o="/".charCodeAt(0),a="0".charCodeAt(0),s="a".charCodeAt(0),f="A".charCodeAt(0),c="-".charCodeAt(0),h="_".charCodeAt(0);l.toByteArray=u,l.fromByteArray=t}("undefined"==typeof u?this.base64js={}:u)},{}],16:[function(l,n,u){!function(n,u){"use strict";function e(l,n){if(!l)throw new Error(n||"Assertion failed")}function t(l,n){l.super_=n;var u=function(){};u.prototype=n.prototype,l.prototype=new u,l.prototype.constructor=l}function r(l,n,u){return r.isBN(l)?l:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==l&&("le"!==n&&"be"!==n||(u=n,n=10),this._init(l||0,n||10,u||"be"))))}function i(l,n,u){for(var e=0,t=Math.min(l.length,u),r=n;r=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return e}function o(l,n,u,e){for(var t=0,r=Math.min(l.length,u),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function a(l){for(var n=new Array(l.bitLength()),u=0;u>>t}return n}function s(l,n,u){u.negative=n.negative^l.negative;var e=l.length+n.length|0;u.length=e,e=e-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,a=i/67108864|0;u.words[0]=o;for(var s=1;s>>26,c=67108863&a,h=Math.min(s,n.length-1),d=Math.max(0,s-l.length+1);d<=h;d++){var p=s-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}u.words[s]=0|c,a=0|f}return 0!==a?u.words[s]=0|a:u.length--,u.strip()}function f(l,n,u){u.negative=n.negative^l.negative,u.length=l.length+n.length;for(var e=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}u.words[r]=o,e=i,i=t}return 0!==e?u.words[r]=e:u.length--,u.strip()}function c(l,n,u){var e=new h;return e.mulp(l,n,u)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else e(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){g.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:u.BN=r,r.BN=r,r.wordSize=26;var _;try{_=l("buffer").Buffer}catch(w){}r.isBN=function(l){return null!==l&&"object"==typeof l&&"BN"===l.constructor.name&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,u){if("number"==typeof l)return this._initNumber(l,n,u);if("object"==typeof l)return this._initArray(l,n,u);"hex"===n&&(n=16),e(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initNumber=function(l,n,u){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(e(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initArray=function(l,n,u){if(e("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===u)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var u=0;u=n;u-=6)t=i(l,u,u+6),this.words[e]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,e++);u+6!==n&&(t=i(l,n,u+6),this.words[e]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,u){this.words=[0],this.length=1;for(var e=0,t=1;t<=67108863;t*=n)e++;e--,t=t/n|0;for(var r=l.length-u,i=r%e,a=Math.min(r,r-i)+u,s=0,f=u;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176]; -r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var u;if(16===l||"hex"===l){u="";for(var t=0,r=0,i=0;i>>24-t&16777215,u=0!==r||i!==this.length-1?k[6-a.length]+a+u:a+u,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(u=r.toString(16)+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}if(l===(0|l)&&l>=2&&l<=36){var s=S[l],f=E[l];u="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),u=c.isZero()?h+u:k[s-h.length]+h+u}for(this.isZero()&&(u="0"+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}e(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&e(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return e("undefined"!=typeof _),this.toArrayLike(_,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,u){var t=this.byteLength(),r=u||Math.max(1,t);e(t<=r,"byte array longer than desired length"),e(r>0,"Requested array length <= 0"),this.strip();var i,o,a="le"===n,s=new l(r),f=this.clone();if(a){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),s[o]=i;for(;o=4096&&(u+=13,n>>>=13),n>=64&&(u+=7,n>>>=7),n>=8&&(u+=4,n>>>=4),n>=2&&(u+=2,n>>>=2),u+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,u=0;return 0===(8191&n)&&(u+=13,n>>>=13),0===(127&n)&&(u+=7,n>>>=7),0===(15&n)&&(u+=4,n>>>=4),0===(3&n)&&(u+=2,n>>>=2),0===(1&n)&&u++,u},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var u=0;ul.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,u;this.length>l.length?(n=this,u=l):(n=l,u=this);for(var e=0;el.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){e("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),u=l%26;this._expand(n),u>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-u),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){e("number"==typeof l&&l>=0);var u=l/26|0,t=l%26;return this._expand(u+1),n?this.words[u]=this.words[u]|1<l.length?(u=this,e=l):(u=l,e=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=u.length,0!==t)this.words[this.length]=t,this.length++;else if(u!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var u=this.cmp(l);if(0===u)return this.negative=0,this.length=1,this.words[0]=0,this;var e,t;u>0?(e=this,t=l):(e=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],y=8191&v,g=v>>>13,m=0|i[3],_=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,A=M>>>13,x=0|i[6],B=8191&x,j=x>>>13,R=0|i[7],O=8191&R,C=R>>>13,P=0|i[8],U=8191&P,T=P>>>13,L=0|i[9],N=8191&L,D=L>>>13,q=0|o[0],z=8191&q,F=q>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,Z=0|o[3],G=8191&Z,J=Z>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],ul=8191&nl,el=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],al=8191&ol,sl=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;u.negative=l.negative^n.negative,u.length=19,e=Math.imul(c,z),t=Math.imul(c,F),t=t+Math.imul(h,z)|0,r=Math.imul(h,F);var vl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,e=Math.imul(p,z),t=Math.imul(p,F),t=t+Math.imul(b,z)|0,r=Math.imul(b,F),e=e+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var yl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,e=Math.imul(y,z),t=Math.imul(y,F),t=t+Math.imul(g,z)|0,r=Math.imul(g,F),e=e+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,e=e+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var gl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,e=Math.imul(_,z),t=Math.imul(_,F),t=t+Math.imul(w,z)|0,r=Math.imul(w,F),e=e+Math.imul(y,H)|0,t=t+Math.imul(y,V)|0,t=t+Math.imul(g,H)|0,r=r+Math.imul(g,V)|0,e=e+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,e=e+Math.imul(c,G)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,G)|0,r=r+Math.imul(h,J)|0;var ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,e=Math.imul(S,z),t=Math.imul(S,F),t=t+Math.imul(E,z)|0,r=Math.imul(E,F),e=e+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,e=e+Math.imul(y,W)|0,t=t+Math.imul(y,X)|0,t=t+Math.imul(g,W)|0,r=r+Math.imul(g,X)|0,e=e+Math.imul(p,G)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,G)|0,r=r+Math.imul(b,J)|0,e=e+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var _l=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,e=Math.imul(I,z),t=Math.imul(I,F),t=t+Math.imul(A,z)|0,r=Math.imul(A,F),e=e+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,e=e+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,e=e+Math.imul(y,G)|0,t=t+Math.imul(y,J)|0,t=t+Math.imul(g,G)|0,r=r+Math.imul(g,J)|0,e=e+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,e=e+Math.imul(c,ul)|0,t=t+Math.imul(c,el)|0,t=t+Math.imul(h,ul)|0,r=r+Math.imul(h,el)|0;var wl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,e=Math.imul(B,z),t=Math.imul(B,F),t=t+Math.imul(j,z)|0,r=Math.imul(j,F),e=e+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(A,H)|0,r=r+Math.imul(A,V)|0,e=e+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,e=e+Math.imul(_,G)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(w,G)|0,r=r+Math.imul(w,J)|0,e=e+Math.imul(y,Q)|0,t=t+Math.imul(y,ll)|0,t=t+Math.imul(g,Q)|0,r=r+Math.imul(g,ll)|0,e=e+Math.imul(p,ul)|0,t=t+Math.imul(p,el)|0,t=t+Math.imul(b,ul)|0,r=r+Math.imul(b,el)|0,e=e+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,e=Math.imul(O,z),t=Math.imul(O,F),t=t+Math.imul(C,z)|0,r=Math.imul(C,F),e=e+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,e=e+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(A,W)|0,r=r+Math.imul(A,X)|0,e=e+Math.imul(S,G)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,G)|0,r=r+Math.imul(E,J)|0,e=e+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,e=e+Math.imul(y,ul)|0,t=t+Math.imul(y,el)|0,t=t+Math.imul(g,ul)|0,r=r+Math.imul(g,el)|0,e=e+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,e=e+Math.imul(c,al)|0,t=t+Math.imul(c,sl)|0,t=t+Math.imul(h,al)|0,r=r+Math.imul(h,sl)|0;var Sl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,e=Math.imul(U,z),t=Math.imul(U,F),t=t+Math.imul(T,z)|0,r=Math.imul(T,F),e=e+Math.imul(O,H)|0,t=t+Math.imul(O,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,e=e+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,e=e+Math.imul(I,G)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(A,G)|0,r=r+Math.imul(A,J)|0,e=e+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,e=e+Math.imul(_,ul)|0,t=t+Math.imul(_,el)|0,t=t+Math.imul(w,ul)|0,r=r+Math.imul(w,el)|0,e=e+Math.imul(y,rl)|0,t=t+Math.imul(y,il)|0,t=t+Math.imul(g,rl)|0,r=r+Math.imul(g,il)|0,e=e+Math.imul(p,al)|0,t=t+Math.imul(p,sl)|0,t=t+Math.imul(b,al)|0,r=r+Math.imul(b,sl)|0,e=e+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,e=Math.imul(N,z),t=Math.imul(N,F),t=t+Math.imul(D,z)|0,r=Math.imul(D,F),e=e+Math.imul(U,H)|0,t=t+Math.imul(U,V)|0,t=t+Math.imul(T,H)|0,r=r+Math.imul(T,V)|0,e=e+Math.imul(O,W)|0,t=t+Math.imul(O,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,e=e+Math.imul(B,G)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(j,G)|0,r=r+Math.imul(j,J)|0,e=e+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(A,Q)|0,r=r+Math.imul(A,ll)|0,e=e+Math.imul(S,ul)|0,t=t+Math.imul(S,el)|0,t=t+Math.imul(E,ul)|0,r=r+Math.imul(E,el)|0,e=e+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,e=e+Math.imul(y,al)|0,t=t+Math.imul(y,sl)|0,t=t+Math.imul(g,al)|0,r=r+Math.imul(g,sl)|0,e=e+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,e=e+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,e=Math.imul(N,H),t=Math.imul(N,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),e=e+Math.imul(U,W)|0,t=t+Math.imul(U,X)|0,t=t+Math.imul(T,W)|0,r=r+Math.imul(T,X)|0,e=e+Math.imul(O,G)|0,t=t+Math.imul(O,J)|0,t=t+Math.imul(C,G)|0,r=r+Math.imul(C,J)|0,e=e+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,e=e+Math.imul(I,ul)|0,t=t+Math.imul(I,el)|0,t=t+Math.imul(A,ul)|0,r=r+Math.imul(A,el)|0,e=e+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,e=e+Math.imul(_,al)|0,t=t+Math.imul(_,sl)|0,t=t+Math.imul(w,al)|0,r=r+Math.imul(w,sl)|0,e=e+Math.imul(y,cl)|0,t=t+Math.imul(y,hl)|0,t=t+Math.imul(g,cl)|0,r=r+Math.imul(g,hl)|0,e=e+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,e=Math.imul(N,W),t=Math.imul(N,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),e=e+Math.imul(U,G)|0,t=t+Math.imul(U,J)|0,t=t+Math.imul(T,G)|0,r=r+Math.imul(T,J)|0,e=e+Math.imul(O,Q)|0,t=t+Math.imul(O,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,e=e+Math.imul(B,ul)|0,t=t+Math.imul(B,el)|0,t=t+Math.imul(j,ul)|0,r=r+Math.imul(j,el)|0,e=e+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(A,rl)|0,r=r+Math.imul(A,il)|0,e=e+Math.imul(S,al)|0,t=t+Math.imul(S,sl)|0,t=t+Math.imul(E,al)|0,r=r+Math.imul(E,sl)|0,e=e+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,e=e+Math.imul(y,pl)|0,t=t+Math.imul(y,bl)|0,t=t+Math.imul(g,pl)|0,r=r+Math.imul(g,bl)|0;var Al=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,e=Math.imul(N,G),t=Math.imul(N,J),t=t+Math.imul(D,G)|0,r=Math.imul(D,J),e=e+Math.imul(U,Q)|0,t=t+Math.imul(U,ll)|0,t=t+Math.imul(T,Q)|0,r=r+Math.imul(T,ll)|0,e=e+Math.imul(O,ul)|0,t=t+Math.imul(O,el)|0,t=t+Math.imul(C,ul)|0,r=r+Math.imul(C,el)|0,e=e+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,e=e+Math.imul(I,al)|0,t=t+Math.imul(I,sl)|0,t=t+Math.imul(A,al)|0,r=r+Math.imul(A,sl)|0,e=e+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,e=e+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var xl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,e=Math.imul(N,Q),t=Math.imul(N,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),e=e+Math.imul(U,ul)|0,t=t+Math.imul(U,el)|0,t=t+Math.imul(T,ul)|0,r=r+Math.imul(T,el)|0,e=e+Math.imul(O,rl)|0,t=t+Math.imul(O,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,e=e+Math.imul(B,al)|0,t=t+Math.imul(B,sl)|0,t=t+Math.imul(j,al)|0,r=r+Math.imul(j,sl)|0,e=e+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(A,cl)|0,r=r+Math.imul(A,hl)|0,e=e+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var Bl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,e=Math.imul(N,ul),t=Math.imul(N,el),t=t+Math.imul(D,ul)|0,r=Math.imul(D,el),e=e+Math.imul(U,rl)|0,t=t+Math.imul(U,il)|0,t=t+Math.imul(T,rl)|0,r=r+Math.imul(T,il)|0,e=e+Math.imul(O,al)|0,t=t+Math.imul(O,sl)|0,t=t+Math.imul(C,al)|0,r=r+Math.imul(C,sl)|0,e=e+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,e=e+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(A,pl)|0,r=r+Math.imul(A,bl)|0;var jl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,e=Math.imul(N,rl),t=Math.imul(N,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),e=e+Math.imul(U,al)|0,t=t+Math.imul(U,sl)|0,t=t+Math.imul(T,al)|0,r=r+Math.imul(T,sl)|0,e=e+Math.imul(O,cl)|0,t=t+Math.imul(O,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,e=e+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Rl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,e=Math.imul(N,al),t=Math.imul(N,sl),t=t+Math.imul(D,al)|0,r=Math.imul(D,sl),e=e+Math.imul(U,cl)|0,t=t+Math.imul(U,hl)|0,t=t+Math.imul(T,cl)|0,r=r+Math.imul(T,hl)|0,e=e+Math.imul(O,pl)|0,t=t+Math.imul(O,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Ol=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,e=Math.imul(N,cl),t=Math.imul(N,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),e=e+Math.imul(U,pl)|0,t=t+Math.imul(U,bl)|0,t=t+Math.imul(T,pl)|0,r=r+Math.imul(T,bl)|0;var Cl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,e=Math.imul(N,pl),t=Math.imul(N,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Pl=(s+e|0)+((8191&t)<<13)|0;return s=(r+(t>>>13)|0)+(Pl>>>26)|0,Pl&=67108863,a[0]=vl,a[1]=yl,a[2]=gl,a[3]=ml,a[4]=_l,a[5]=wl,a[6]=kl,a[7]=Sl,a[8]=El,a[9]=Ml,a[10]=Il,a[11]=Al,a[12]=xl,a[13]=Bl,a[14]=jl,a[15]=Rl,a[16]=Ol,a[17]=Cl,a[18]=Pl,0!==s&&(a[19]=s,u.length++),u};Math.imul||(M=s),r.prototype.mulTo=function(l,n){var u,e=this.length+l.length;return u=10===this.length&&10===l.length?M(this,l,n):e<63?s(this,l,n):e<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),u=r.prototype._countBits(l)-1,e=0;e>=1;return e},h.prototype.permute=function(l,n,u,e,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,u[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[u]=67108863&r}return 0!==n&&(this.words[u]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=a(l);if(0===n.length)return new r(1);for(var u=this,e=0;e=0);var n,u=l%26,t=(l-u)/26,r=67108863>>>26-u<<26-u;if(0!==u){var i=0;for(n=0;n>>26-u}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,s=0;s=0&&(0!==f||s>=t);s--){var c=0|this.words[s];this.words[s]=f<<26-r|c>>>r,f=c&o}return a&&0!==f&&(a.words[a.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,u){return e(0===this.negative),this.iushrn(l,n,u)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){e("number"==typeof l&&l>=0);var n=l%26,u=(l-n)/26,t=1<=0);var n=l%26,u=(l-n)/26;if(e(0===this.negative,"imaskn works only with positive numbers"),0!==n&&u++,this.length=Math.min(u,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(e("number"==typeof l),e(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(a/67108864|0),this.words[t+u]=67108863&i}for(;t>26,this.words[t+u]=67108863&i;if(0===o)return this.strip();for(e(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var u=this.length-l.length,e=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);u=26-o,0!==u&&(t=t.ushln(u),e.iushln(u),i=0|t.words[t.length-1]);var a,s=e.length-t.length;if("mod"!==n){a=new r(null),a.length=s+1,a.words=new Array(a.length);for(var f=0;f=0;h--){var d=67108864*(0|e.words[t.length+h])+(0|e.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),e._ishlnsubmul(t,d,h);0!==e.negative;)d--,e.negative=0,e._ishlnsubmul(t,1,h),e.isZero()||(e.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),e.strip(),"div"!==n&&0!==u&&e.iushrn(u),{div:a||null,mod:e}},r.prototype.divmod=function(l,n,u){if(e(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var u=0!==n.div.negative?n.mod.isub(l):n.mod,e=l.ushrn(1),t=l.andln(1),r=u.cmp(e);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){e(l<=67108863);for(var n=(1<<26)%l,u=0,t=this.length-1;t>=0;t--)u=(n*u+(0|this.words[t]))%l;return u},r.prototype.idivn=function(l){e(l<=67108863);for(var n=0,u=this.length-1;u>=0;u--){var t=(0|this.words[u])+67108864*n;this.words[u]=t/l|0,n=t%l}return this.strip()},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),a=new r(1),s=0;n.isEven()&&u.isEven();)n.iushrn(1),u.iushrn(1),++s;for(var f=u.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(u.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(u.iushrn(p);p-- >0;)(o.isOdd()||a.isOdd())&&(o.iadd(f),a.isub(c)),o.iushrn(1),a.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(o),i.isub(a)):(u.isub(n),o.isub(t),a.isub(i))}return{a:o,b:a,gcd:u.iushln(s)}},r.prototype._invmp=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=u.clone();n.cmpn(1)>0&&u.cmpn(1)>0;){for(var a=0,s=1;0===(n.words[0]&s)&&a<26;++a,s<<=1);if(a>0)for(n.iushrn(a);a-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(u.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(u.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(i)):(u.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),u=l.clone();n.negative=0,u.negative=0;for(var e=0;n.isEven()&&u.isEven();e++)n.iushrn(1),u.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;u.isEven();)u.iushrn(1);var t=n.cmp(u);if(t<0){var r=n;n=u,u=r}else if(0===t||0===u.cmpn(1))break;n.isub(u)}return u.iushln(e)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){e("number"==typeof l);var n=l%26,u=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var u;if(this.length>1)u=1;else{n&&(l=-l),e(l<=67108863,"Number is too big");var t=0|this.words[0];u=t===l?0:tl.length)return 1;if(this.length=0;u--){var e=0|this.words[u],t=0|l.words[u];if(e!==t){et&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new g(l)},r.prototype.toRed=function(l){return e(!this.red,"Already a number in reduction context"),e(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return e(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return e(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return e(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return e(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return e(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return e(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return e(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return e(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return e(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return e(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return e(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return e(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return e(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,u=l;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),n=u.bitLength();while(n>this.n);var e=n0?u.isub(this.p):u.strip(),u},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var u=4194303,e=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,u=0;u>>=26,l.words[u]=t,n=e}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function A(l){if(I[l])return I[l];var A;if("k256"===l)A=new p;else if("p224"===l)A=new b;else if("p192"===l)A=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);A=new y}return I[l]=A,A},g.prototype._verify1=function(l){e(0===l.negative,"red works only with positives"),e(l.red,"red works only with red numbers")},g.prototype._verify2=function(l,n){e(0===(l.negative|n.negative),"red works only with positives"),e(l.red&&l.red===n.red,"red works only with red numbers")},g.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},g.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},g.prototype.add=function(l,n){this._verify2(l,n);var u=l.add(n);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},g.prototype.iadd=function(l,n){this._verify2(l,n);var u=l.iadd(n);return u.cmp(this.m)>=0&&u.isub(this.m),u},g.prototype.sub=function(l,n){this._verify2(l,n);var u=l.sub(n);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},g.prototype.isub=function(l,n){this._verify2(l,n);var u=l.isub(n);return u.cmpn(0)<0&&u.iadd(this.m),u},g.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},g.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},g.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},g.prototype.isqr=function(l){return this.imul(l,l.clone())},g.prototype.sqr=function(l){return this.mul(l,l)},g.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(e(n%2===1),3===n){var u=this.m.add(new r(1)).iushrn(2);return this.pow(l,u)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);e(!t.isZero());var o=new r(1).toRed(this),a=o.redNeg(),s=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,s).cmp(a);)f.redIAdd(a);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();e(v=0;t--){for(var f=n.words[t],c=s-1;c>=0;c--){var h=f>>c&1;i!==e[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,a++,(a===u||0===t&&0===c)&&(i=this.mul(i,e[o]),a=0,o=0)):a=0}s=26}return i},g.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},g.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,g),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var u=l.imul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var u=l.mul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],17:[function(l,n,u){function e(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new e(null)),t.generate(l)},n.exports.Rand=e,e.prototype.generate=function(l){return this._rand(l)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.crypto.getRandomValues(n),n}:window.msCrypto&&window.msCrypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.msCrypto.getRandomValues(n),n}:e.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var r=l("crypto");e.prototype._rand=function(l){return r.randomBytes(l)}}catch(i){e.prototype._rand=function(l){for(var n=new Uint8Array(l),u=0;uo||l<0?(u=Math.abs(l)%o,l<0?o-u:u):l}function e(l){for(var n=0;n>>8^255&u^99,this.SBOX[t]=u,this.INV_SBOX[u]=t,r=l[t],i=l[r],o=l[i],e=257*l[u]^16843008*u,this.SUB_MIX[0][t]=e<<24|e>>>8,this.SUB_MIX[1][t]=e<<16|e>>>16,this.SUB_MIX[2][t]=e<<8|e>>>24,this.SUB_MIX[3][t]=e,e=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][u]=e<<24|e>>>8,this.INV_SUB_MIX[1][u]=e<<16|e>>>16,this.INV_SUB_MIX[2][u]=e<<8|e>>>24,this.INV_SUB_MIX[3][u]=e,0===t?t=a=1:(t=r^l[l[l[o^r]]],a^=l[l[a]]);return!0};var a=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,u,e,t,r;for(u=this._key,n=u.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],e=0;e>>24,r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r],r^=a.RCON[e/n|0]<<24):n>6&&e%n===4?r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r]:void 0,this._keySchedule[e-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^a.INV_SUB_MIX[1][a.SBOX[r>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[r>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var u=this._doCryptBlock(n,this._keySchedule,a.SUB_MIX,a.SBOX),e=new l(16);return e.writeUInt32BE(u[0],0),e.writeUInt32BE(u[1],4),e.writeUInt32BE(u[2],8),e.writeUInt32BE(u[3],12),e},i.prototype.decryptBlock=function(n){n=r(new l(n));var u=[n[3],n[1]];n[1]=u[0],n[3]=u[1];var e=this._doCryptBlock(n,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX),t=new l(16);return t.writeUInt32BE(e[0],0),t.writeUInt32BE(e[3],4),t.writeUInt32BE(e[2],8),t.writeUInt32BE(e[1],12),t},i.prototype.scrub=function(){e(this._keySchedule),e(this._invKeySchedule),e(this._key)},i.prototype._doCryptBlock=function(l,u,e,t){var r,i,o,a,s,f,c,h,d;i=l[0]^u[0],o=l[1]^u[1],a=l[2]^u[2],s=l[3]^u[3],r=4;for(var p=1;p>>24]^e[1][o>>>16&255]^e[2][a>>>8&255]^e[3][255&s]^u[r++],c=e[0][o>>>24]^e[1][a>>>16&255]^e[2][s>>>8&255]^e[3][255&i]^u[r++],h=e[0][a>>>24]^e[1][s>>>16&255]^e[2][i>>>8&255]^e[3][255&o]^u[r++],d=e[0][s>>>24]^e[1][i>>>16&255]^e[2][o>>>8&255]^e[3][255&a]^u[r++],i=f,o=c,a=h,s=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[a>>>8&255]<<8|t[255&s])^u[r++],c=(t[o>>>24]<<24|t[a>>>16&255]<<16|t[s>>>8&255]<<8|t[255&i])^u[r++],h=(t[a>>>24]<<24|t[s>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^u[r++],d=(t[s>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&a])^u[r++],[n(f),n(c),n(h),n(d)]},u.AES=i}).call(this,l("buffer").Buffer)},{buffer:46}],20:[function(l,n,u){(function(u){function e(l,n,t,o){if(!(this instanceof e))return new e(l,n,t);i.call(this),this._finID=u.concat([t,new u([0,0,0,1])]),t=u.concat([t,new u([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new u(t.length),this._cache=new u(""),this._secCache=new u(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var s=new u(4);s.fill(0),this._ghash=new a(this._cipher.encryptBlock(s)),this._authTag=null,this._called=!1}function t(l,n){var u=0;l.length!==n.length&&u++;for(var e=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};u.createDecipher=o,u.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,buffer:46,"cipher-base":47,evp_bytestokey:83,inherits:92}],23:[function(l,n,u){(function(n){function e(l,u,r){return this instanceof e?(a.call(this),this._cache=new t,this._cipher=new o.AES(u),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new e(l,u,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,u,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof u&&(u=new n(u)),u.length!==r.key/8)throw new TypeError("invalid key length "+u.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],u,t):"auth"===r.type?new d(p[r.mode],u,t):new e(p[r.mode],u,t)}function i(l,n){var u=f[l.toLowerCase()];if(!u)throw new TypeError("invalid suite type");var e=c(n,!1,u.key,u.iv);return r(l,e.key,e.iv)}var o=l("./aes"),a=l("cipher-base"),s=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");s(e,a),e.prototype._update=function(l){this._cache.add(l);for(var u,e,t=[];u=this._cache.get();)e=this._mode.encrypt(this,u),t.push(e);return n.concat(t)},e.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},e.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,u=new n(l),e=-1;++ea||l<0?(u=Math.abs(l)%a,l<0?a-u:u):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=u,u.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,u&&(r[0]=r[0]^225<<24)}this.state=t(o)},u.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var u;this.cache.length>=16;)u=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(u)},u.prototype["final"]=function(n,u){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,u])),this.state};var a=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:46}],25:[function(l,n,u){u["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},u["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},u["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},u["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},u["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},u["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},u.aes128=u["aes-128-cbc"],u.aes192=u["aes-192-cbc"],u.aes256=u["aes-256-cbc"],u["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},u["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},u["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},u["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},u["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},u["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},u["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},u["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},u["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},u["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},u["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},u["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},u["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},u["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},u["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},u["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},u["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},u["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],26:[function(l,n,u){var e=l("buffer-xor");u.encrypt=function(l,n){var u=e(n,l._prev);return l._prev=l._cipher.encryptBlock(u),l._prev},u.decrypt=function(l,n){var u=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return e(t,u)}},{"buffer-xor":45}],27:[function(l,n,u){(function(n){function e(l,u,e){var r=u.length,i=t(u,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,e?u:i]),i}var t=l("buffer-xor");u.encrypt=function(l,u,t){for(var r,i=new n("");u.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=u.length)){i=n.concat([i,e(l,u,t)]);break}r=l._cache.length,i=n.concat([i,e(l,u.slice(0,r),t)]),u=u.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:46,"buffer-xor":45}],28:[function(l,n,u){(function(l){function n(l,n,u){for(var t,r,i,o=-1,a=8,s=0;++o>o%8,l._prev=e(l._prev,u?r:i);return s}function e(n,u){var e=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([u])]);++t>7;return r}u.encrypt=function(u,e,t){for(var r=e.length,i=new l(r),o=-1;++o=0||!u.umod(l.prime1)||!u.umod(l.prime2);)u=new i(o(n));return u}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46,randombytes:112}],38:[function(l,n,u){(function(l){"use strict";u["RSA-SHA224"]=u.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},u["RSA-SHA256"]=u.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},u["RSA-SHA384"]=u.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},u["RSA-SHA512"]=u.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},u["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},u["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},u.DSA=u["DSA-SHA1"]=u["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},u["DSA-SHA224"]=u["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224",id:new l("","hex")},u["DSA-SHA256"]=u["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},u["DSA-SHA384"]=u["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},u["DSA-SHA512"]=u["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},u["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},u["RSA-RIPEMD160"]=u.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},u["RSA-MD5"]=u.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:46}],39:[function(l,n,u){(function(u){function e(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new e(l)}function i(l){return new t(l)}var o=l("./algos"),a=l("create-hash"),s=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),s(e,c.Writable),e.prototype._write=function(l,n,u){this._hash.update(l),u()},e.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},e.prototype.sign=function(l,n){this.end();var e=this._hash.digest(),t=f(u.concat([this._tag,e]),l,this._hashType,this._signType);return n?t.toString(n):t},s(t,c.Writable),t.prototype._write=function(l,n,u){this._hash.update(l),u()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,e){"string"==typeof n&&(n=new u(n,e)),this.end();var t=this._hash.digest();return h(n,u.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":38,"./sign":41,"./verify":42,buffer:46,"create-hash":50,inherits:92,stream:132}],40:[function(l,n,u){"use strict";u["1.3.132.0.10"]="secp256k1",u["1.3.132.0.33"]="p224",u["1.2.840.10045.3.1.1"]="p192",u["1.2.840.10045.3.1.7"]="p256",u["1.3.132.0.34"]="p384",u["1.3.132.0.35"]="p521"},{}],41:[function(l,n,u){(function(u){function e(l,n,u,e){var i=v(n);if(i.curve){if("ecdsa"!==e)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==e)throw new Error("wrong private key type");return r(l,i,u)}if("rsa"!==e)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),a=[0,1];l.length+a.length+10&&u.ishrn(e),u}function s(l,n){l=a(l,n),l=l.mod(n);var e=new u(l.toArray());if(e.length=n)throw new Error("invalid sig")}var o=l("./curves"),a=l("elliptic"),s=l("parse-asn1"),f=l("bn.js"),c=a.ec;n.exports=e}).call(this,l("buffer").Buffer)},{"./curves":40,"bn.js":16,buffer:46,elliptic:65,"parse-asn1":101}],43:[function(l,n,u){arguments[4][18][0].apply(u,arguments)},{dup:18}],44:[function(l,n,u){(function(n){"use strict";var e=l("buffer"),t=e.Buffer,r=e.SlowBuffer,i=e.kMaxLength||2147483647;u.alloc=function(l,n,u){if("function"==typeof t.alloc)return t.alloc(l,n,u);if("number"==typeof u)throw new TypeError("encoding must not be number"); -if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var e=u,r=n;void 0===r&&(e=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var a=new t(r,e),s=a.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},u.from=function(l,u,e){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,u,e);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,u);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=u;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=e;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},u.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:46}],45:[function(l,n,u){(function(l){n.exports=function(n,u){for(var e=Math.min(n.length,u.length),t=new l(e),r=0;r1?arguments[1]:"utf8"):a(this,l)):arguments.length>1?new r(l,arguments[1]):new r(l)}function i(l,n){if(l=b(l,n<0?0:0|v(n)),!r.TYPED_ARRAY_SUPPORT)for(var u=0;u>>1;return u&&(l.parent=J),l}function v(l){if(l>=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function y(l,n){if(!(this instanceof y))return new y(l,n);var u=new r(l,n);return delete u.parent,u}function g(l,n){"string"!=typeof l&&(l=""+l);var u=l.length;if(0===u)return 0;for(var e=!1;;)switch(n){case"ascii":case"binary":case"raw":case"raws":return u;case"utf8":case"utf-8":return K(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return Y(l).length;default:if(e)return K(l).length;n=(""+n).toLowerCase(),e=!0}}function m(l,n,u){var e=!1;if(n=0|n,u=void 0===u||u===1/0?this.length:0|u,l||(l="utf8"),n<0&&(n=0),u>this.length&&(u=this.length),u<=n)return"";for(;;)switch(l){case"hex":return R(this,n,u);case"utf8":case"utf-8":return A(this,n,u);case"ascii":return B(this,n,u);case"binary":return j(this,n,u);case"base64":return I(this,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,n,u);default:if(e)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),e=!0}}function _(l,n,u,e){u=Number(u)||0;var t=l.length-u;e?(e=Number(e),e>t&&(e=t)):e=t;var r=n.length;if(r%2!==0)throw new Error("Invalid hex string");e>r/2&&(e=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=u){var a,s,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:a=l[t+1],128===(192&a)&&(c=(31&r)<<6|63&a,c>127&&(i=c));break;case 3:a=l[t+1],s=l[t+2],128===(192&a)&&128===(192&s)&&(c=(15&r)<<12|(63&a)<<6|63&s,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:a=l[t+1],s=l[t+2],f=l[t+3],128===(192&a)&&128===(192&s)&&128===(192&f)&&(c=(15&r)<<18|(63&a)<<12|(63&s)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,e.push(i>>>10&1023|55296),i=56320|1023&i),e.push(i),t+=o}return x(e)}function x(l){var n=l.length;if(n<=$)return String.fromCharCode.apply(String,l);for(var u="",e=0;ee)&&(u=e);for(var t="",r=n;ru)throw new RangeError("Trying to access beyond buffer length")}function P(l,n,u,e,t,i){if(!r.isBuffer(l))throw new TypeError("buffer must be a Buffer instance");if(n>t||nl.length)throw new RangeError("index out of range")}function U(l,n,u,e){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-u,2);t>>8*(e?t:1-t)}function T(l,n,u,e){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-u,4);t>>8*(e?t:3-t)&255}function L(l,n,u,e,t,r){if(n>t||nl.length)throw new RangeError("index out of range");if(u<0)throw new RangeError("index out of range")}function N(l,n,u,e,t){return t||L(l,n,u,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(l,n,u,e,23,4),u+4}function D(l,n,u,e,t){return t||L(l,n,u,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(l,n,u,e,52,8),u+8}function q(l){if(l=z(l).replace(ll,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function z(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function F(l){return l<16?"0"+l.toString(16):l.toString(16)}function K(l,n){n=n||1/0;for(var u,e=l.length,t=null,r=[],i=0;i55295&&u<57344){if(!t){if(u>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===e){(n-=3)>-1&&r.push(239,191,189);continue}t=u;continue}if(u<56320){(n-=3)>-1&&r.push(239,191,189),t=u;continue}u=(t-55296<<10|u-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,u<128){if((n-=1)<0)break;r.push(u)}else if(u<2048){if((n-=2)<0)break;r.push(u>>6|192,63&u|128)}else if(u<65536){if((n-=3)<0)break;r.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return r}function H(l){for(var n=[],u=0;u>8,t=u%256,r.push(t),r.push(e);return r}function Y(l){return X.toByteArray(q(l))}function W(l,n,u,e){for(var t=0;t=n.length||t>=l.length);t++)n[t+u]=l[t];return t}var X=l("base64-js"),Z=l("ieee754"),G=l("isarray");u.Buffer=r,u.SlowBuffer=y,u.INSPECT_MAX_BYTES=50,r.poolSize=8192;var J={};r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:e(),r.TYPED_ARRAY_SUPPORT?(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array):(r.prototype.length=void 0,r.prototype.parent=void 0),r.isBuffer=function(l){return!(null==l||!l._isBuffer)},r.compare=function(l,n){if(!r.isBuffer(l)||!r.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var u=l.length,e=n.length,t=0,i=Math.min(u,e);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},r.prototype.compare=function(l){if(!r.isBuffer(l))throw new TypeError("Argument must be a Buffer");return this===l?0:r.compare(this,l)},r.prototype.indexOf=function(l,n){function u(l,n,u){for(var e=-1,t=0;u+t2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(n<0&&(n=Math.max(this.length+n,0)),"string"==typeof l)return 0===l.length?-1:String.prototype.indexOf.call(this,l,n);if(r.isBuffer(l))return u(this,l,n);if("number"==typeof l)return r.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,l,n):u(this,[l],n);throw new TypeError("val must be string, number or Buffer")},r.prototype.get=function(l){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(l)},r.prototype.set=function(l,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(l,n)},r.prototype.write=function(l,n,u,e){if(void 0===n)e="utf8",u=this.length,n=0;else if(void 0===u&&"string"==typeof n)e=n,u=this.length,n=0;else if(isFinite(n))n=0|n,isFinite(u)?(u=0|u,void 0===e&&(e="utf8")):(e=u,u=void 0);else{var t=e;e=n,n=0|u,u=t}var r=this.length-n;if((void 0===u||u>r)&&(u=r),l.length>0&&(u<0||n<0)||n>this.length)throw new RangeError("attempt to write outside buffer bounds");e||(e="utf8");for(var i=!1;;)switch(e){case"hex":return _(this,l,n,u);case"utf8":case"utf-8":return w(this,l,n,u);case"ascii":return k(this,l,n,u);case"binary":return S(this,l,n,u);case"base64":return E(this,l,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,l,n,u);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),i=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;r.prototype.slice=function(l,n){var u=this.length;l=~~l,n=void 0===n?u:~~n,l<0?(l+=u,l<0&&(l=0)):l>u&&(l=u),n<0?(n+=u,n<0&&(n=0)):n>u&&(n=u),n0&&(t*=256);)e+=this[l+--n]*t;return e},r.prototype.readUInt8=function(l,n){return n||C(l,1,this.length),this[l]},r.prototype.readUInt16LE=function(l,n){return n||C(l,2,this.length),this[l]|this[l+1]<<8},r.prototype.readUInt16BE=function(l,n){return n||C(l,2,this.length),this[l]<<8|this[l+1]},r.prototype.readUInt32LE=function(l,n){return n||C(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},r.prototype.readUInt32BE=function(l,n){return n||C(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},r.prototype.readIntLE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=this[l],t=1,r=0;++r=t&&(e-=Math.pow(2,8*n)),e},r.prototype.readIntBE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=n,t=1,r=this[l+--e];e>0&&(t*=256);)r+=this[l+--e]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},r.prototype.readInt8=function(l,n){return n||C(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},r.prototype.readInt16LE=function(l,n){n||C(l,2,this.length);var u=this[l]|this[l+1]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt16BE=function(l,n){n||C(l,2,this.length);var u=this[l+1]|this[l]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt32LE=function(l,n){return n||C(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},r.prototype.readInt32BE=function(l,n){return n||C(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},r.prototype.readFloatLE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!0,23,4)},r.prototype.readFloatBE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!1,23,4)},r.prototype.readDoubleLE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!0,52,8)},r.prototype.readDoubleBE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!1,52,8)},r.prototype.writeUIntLE=function(l,n,u,e){l=+l,n=0|n,u=0|u,e||P(this,l,n,u,Math.pow(2,8*u),0);var t=1,r=0;for(this[n]=255&l;++r=0&&(r*=256);)this[n+t]=l/r&255;return n+u},r.prototype.writeUInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,255,0),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},r.prototype.writeUInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeUInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeUInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):T(this,l,n,!0),n+4},r.prototype.writeUInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeIntLE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=0,i=1,o=l<0?1:0;for(this[n]=255&l;++r>0)-o&255;return n+u},r.prototype.writeIntBE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=u-1,i=1,o=l<0?1:0;for(this[n+r]=255&l;--r>=0&&(i*=256);)this[n+r]=(l/i>>0)-o&255;return n+u},r.prototype.writeInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,127,-128),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},r.prototype.writeInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):T(this,l,n,!0),n+4},r.prototype.writeInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeFloatLE=function(l,n,u){return N(this,l,n,!0,u)},r.prototype.writeFloatBE=function(l,n,u){return N(this,l,n,!1,u)},r.prototype.writeDoubleLE=function(l,n,u){return D(this,l,n,!0,u)},r.prototype.writeDoubleBE=function(l,n,u){return D(this,l,n,!1,u)},r.prototype.copy=function(l,n,u,e){if(u||(u=0),e||0===e||(e=this.length),n>=l.length&&(n=l.length),n||(n=0),e>0&&e=this.length)throw new RangeError("sourceStart out of bounds");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),l.length-n=0;t--)l[t+n]=this[t+u];else if(i<1e3||!r.TYPED_ARRAY_SUPPORT)for(t=0;t=this.length)throw new RangeError("start out of bounds");if(u<0||u>this.length)throw new RangeError("end out of bounds");var e;if("number"==typeof l)for(e=n;e>5]|=128<>>9<<4)+14]=n;for(var u=1732584193,e=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(u>>16);return e<<16|65535&u}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,e,16)}},{"./helpers":51}],53:[function(l,n,u){(function(u){"use strict";function e(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new u(n));var e="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>e?n=t(l).update(n).digest():n.length0;e--)n+=this._buffer(l,n),u+=this._flushBuffer(t,u);return n+=this._buffer(l,n),t},e.prototype["final"]=function(l){var n;l&&(n=this.update(l));var u;return u="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(u):u},e.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];u=a.r28shl(u,i),e=a.r28shl(e,i),a.pc2(u,e,l.keys,t)}},t.prototype._update=function(l,n,u,e){var t=this._desState,r=a.readUInt32BE(l,n),i=a.readUInt32BE(l,n+4);a.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],a.writeUInt32BE(u,r,e),a.writeUInt32BE(u,i,e+4)},t.prototype._pad=function(l,n){for(var u=l.length-n,e=n;e>>0,r=d}a.rip(i,r,e,t)},t.prototype._decrypt=function(l,n,u,e,t){for(var r=u,i=n,o=l.keys.length-2;o>=0;o-=2){var s=l.keys[o],f=l.keys[o+1];a.expand(r,l.tmp,0),s^=l.tmp[0],f^=l.tmp[1];var c=a.substitute(s,f),h=a.permute(c),d=r;r=(i^h)>>>0,i=d}a.rip(r,i,e,t)}},{"../des":55,inherits:92,"minimalistic-assert":96}],59:[function(l,n,u){"use strict";function e(l,n){r.equal(n.length,24,"Invalid key length");var u=n.slice(0,8),e=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[s.create({type:"encrypt",key:u}),s.create({type:"decrypt",key:e}),s.create({type:"encrypt",key:t})]:this.ciphers=[s.create({type:"decrypt",key:t}),s.create({type:"encrypt",key:e}),s.create({type:"decrypt",key:u})]}function t(l){a.call(this,l);var n=new e(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),a=o.Cipher,s=o.DES;i(t,a),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,u,e){var t=this._edeState;t.ciphers[0]._update(l,n,u,e),t.ciphers[1]._update(u,e,u,e),t.ciphers[2]._update(u,e,u,e)},t.prototype._pad=s.prototype._pad,t.prototype._unpad=s.prototype._unpad},{"../des":55,inherits:92,"minimalistic-assert":96}],60:[function(l,n,u){"use strict";u.readUInt32BE=function(l,n){var u=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return u>>>0},u.writeUInt32BE=function(l,n,u){l[0+u]=n>>>24,l[1+u]=n>>>16&255,l[2+u]=n>>>8&255,l[3+u]=255&n},u.ip=function(l,n,u,e){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}u[e+0]=t>>>0,u[e+1]=r>>>0},u.rip=function(l,n,u,e){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.pc1=function(l,n,u,e){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.r28shl=function(l,n){return l<>>28-n};var e=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];u.pc2=function(l,n,u,t){for(var r=0,i=0,o=e.length>>>1,a=0;a>>e[a]&1;for(var a=o;a>>e[a]&1;u[t+0]=r>>>0,u[t+1]=i>>>0},u.expand=function(l,n,u){var e=0,t=0;e=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)e<<=6,e|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[u+0]=e>>>0,n[u+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];u.substitute=function(l,n){for(var u=0,e=0;e<4;e++){var r=l>>>18-6*e&63,i=t[64*e+r];u<<=4,u|=i}for(var e=0;e<4;e++){var r=n>>>18-6*e&63,i=t[256+64*e+r];u<<=4,u|=i}return u>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];u.permute=function(l){for(var n=0,u=0;u>>r[u]&1;return n>>>0},u.padSplit=function(l,n,u){for(var e=l.toString(2);e.lengthl;)u.ishrn(1);if(u.isEven()&&u.iadd(h),u.testn(1)||u.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;u.mod(b).cmp(v);)u.iadd(g)}else for(;u.mod(s).cmp(y);)u.iadd(g);if(e=u.shrn(1),t(e)&&t(u)&&r(e)&&r(u)&&c.test(e)&&c.test(u))return u}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var a=l("bn.js"),s=new a(24),f=l("miller-rabin"),c=new f,h=new a(1),d=new a(2),p=new a(5),b=(new a(16),new a(8),new a(10)),v=new a(3),y=(new a(7),new a(11)),g=new a(4),m=(new a(12),null)},{"bn.js":16,"miller-rabin":95,randombytes:112}],64:[function(l,n,u){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],65:[function(l,n,u){"use strict";var e=u;e.version=l("../package.json").version,e.utils=l("./elliptic/utils"),e.rand=l("brorand"),e.hmacDRBG=l("./elliptic/hmac-drbg"),e.curve=l("./elliptic/curve"),e.curves=l("./elliptic/curves"),e.ec=l("./elliptic/ec"),e.eddsa=l("./elliptic/eddsa")},{"../package.json":81,"./elliptic/curve":68,"./elliptic/curves":71,"./elliptic/ec":72,"./elliptic/eddsa":75,"./elliptic/hmac-drbg":78,"./elliptic/utils":80,brorand:17}],66:[function(l,n,u){"use strict";function e(l,n){this.type=l,this.p=new r(n.p,16),this.red=n.prime?r.red(n.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=n.n&&new r(n.n,16),this.g=n.g&&this.pointFromJSON(n.g,n.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var u=this.n&&this.p.div(this.n);!u||u.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function t(l,n){this.curve=l,this.type=n,this.precomputed=null}var r=l("bn.js"),i=l("../../elliptic"),o=i.utils,a=o.getNAF,s=o.getJSF,f=o.assert;n.exports=e,e.prototype.point=function(){throw new Error("Not implemented")},e.prototype.validate=function(){throw new Error("Not implemented")},e.prototype._fixedNafMul=function(l,n){f(l.precomputed);var u=l._getDoubles(),e=a(n,1),t=(1<=i;n--)o=(o<<1)+e[n];r.push(o)}for(var s=this.jpoint(null,null,null),c=this.jpoint(null,null,null),h=t;h>0;h--){for(var i=0;i=0;o--){for(var n=0;o>=0&&0===r[o];o--)n++;if(o>=0&&n++,i=i.dblp(n),o<0)break;var s=r[o];f(0!==s),i="affine"===l.type?s>0?i.mixedAdd(t[s-1>>1]):i.mixedAdd(t[-s-1>>1].neg()):s>0?i.add(t[s-1>>1]):i.add(t[-s-1>>1].neg())}return"affine"===l.type?i.toP():i},e.prototype._wnafMulAdd=function(l,n,u,e,t){for(var r=this._wnafT1,i=this._wnafT2,o=this._wnafT3,f=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===r[p]&&1===r[b]){var v=[n[p],null,null,n[b]];0===n[p].y.cmp(n[b].y)?(v[1]=n[p].add(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg())):0===n[p].y.cmp(n[b].y.redNeg())?(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].add(n[b].neg())):(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=s(u[p],u[b]);f=Math.max(g[0].length,f),o[p]=new Array(f),o[b]=new Array(f);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var M=!0,m=0;m=0&&E++,k=k.dblp(E),c<0)break;for(var m=0;m0?h=i[m][I-1>>1]:I<0&&(h=i[m][-I-1>>1].neg()),k="affine"===h.type?k.mixedAdd(h):k.add(h))}}for(var c=0;c=Math.ceil((l.bitLength()+1)/n.step)},t.prototype._getDoubles=function(l,n){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var u=[this],e=this,t=0;t":""},t.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},t.prototype._extDbl=function(){var l=this.x.redSqr(),n=this.y.redSqr(),u=this.z.redSqr();u=u.redIAdd(u);var e=this.curve._mulA(l),t=this.x.redAdd(this.y).redSqr().redISub(l).redISub(n),r=e.redAdd(n),i=r.redSub(u),o=e.redSub(n),a=t.redMul(i),s=r.redMul(o),f=t.redMul(o),c=i.redMul(r);return this.curve.point(a,s,c,f)},t.prototype._projDbl=function(){var l,n,u,e=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),r=this.y.redSqr();if(this.curve.twisted){var i=this.curve._mulA(t),o=i.redAdd(r);if(this.zOne)l=e.redSub(t).redSub(r).redMul(o.redSub(this.curve.two)),n=o.redMul(i.redSub(r)),u=o.redSqr().redSub(o).redSub(o);else{var a=this.z.redSqr(),s=o.redSub(a).redISub(a);l=e.redSub(t).redISub(r).redMul(s),n=o.redMul(i.redSub(r)),u=o.redMul(s)}}else{var i=t.redAdd(r),a=this.curve._mulC(this.c.redMul(this.z)).redSqr(),s=i.redSub(a).redSub(a);l=this.curve._mulC(e.redISub(i)).redMul(s),n=this.curve._mulC(i).redMul(t.redISub(r)),u=i.redMul(s)}return this.curve.point(l,n,u)},t.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},t.prototype._extAdd=function(l){var n=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),u=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),e=this.t.redMul(this.curve.dd).redMul(l.t),t=this.z.redMul(l.z.redAdd(l.z)),r=u.redSub(n),i=t.redSub(e),o=t.redAdd(e),a=u.redAdd(n),s=r.redMul(i),f=o.redMul(a),c=r.redMul(a),h=i.redMul(o);return this.curve.point(s,f,h,c)},t.prototype._projAdd=function(l){var n,u,e=this.z.redMul(l.z),t=e.redSqr(),r=this.x.redMul(l.x),i=this.y.redMul(l.y),o=this.curve.d.redMul(r).redMul(i),a=t.redSub(o),s=t.redAdd(o),f=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(r).redISub(i),c=e.redMul(a).redMul(f);return this.curve.twisted?(n=e.redMul(s).redMul(i.redSub(this.curve._mulA(r))),u=a.redMul(s)):(n=e.redMul(s).redMul(i.redSub(r)),u=this.curve._mulC(a).redMul(s)),this.curve.point(c,n,u)},t.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},t.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!1)},t.prototype.jmulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!0)},t.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},t.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()},t.prototype.getY=function(){return this.normalize(),this.y.fromRed()},t.prototype.eq=function(l){return this===l||0===this.getX().cmp(l.getX())&&0===this.getY().cmp(l.getY())},t.prototype.eqXToP=function(l){var n=l.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(n))return!0;for(var u=l.clone(),e=this.curve.redN.redMul(this.z);;){if(u.iadd(this.curve.n),u.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(e),0===this.x.cmp(n))return!0}return!1},t.prototype.toP=t.prototype.normalize,t.prototype.mixedAdd=t.prototype.add},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],68:[function(l,n,u){"use strict";var e=u;e.base=l("./base"),e["short"]=l("./short"),e.mont=l("./mont"),e.edwards=l("./edwards")},{"./base":66,"./edwards":67,"./mont":69,"./short":70}],69:[function(l,n,u){"use strict";function e(l){a.call(this,"mont",l),this.a=new i(l.a,16).toRed(this.red),this.b=new i(l.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function t(l,n,u){a.BasePoint.call(this,l,"projective"),null===n&&null===u?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(n,16),this.z=new i(u,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var r=l("../curve"),i=l("bn.js"),o=l("inherits"),a=r.base,s=l("../../elliptic"),f=s.utils;o(e,a),n.exports=e,e.prototype.validate=function(l){var n=l.normalize().x,u=n.redSqr(),e=u.redMul(n).redAdd(u.redMul(this.a)).redAdd(n),t=e.redSqrt();return 0===t.redSqr().cmp(e)},o(t,a.BasePoint),e.prototype.decodePoint=function(l,n){return this.point(f.toArray(l,n),1)},e.prototype.point=function(l,n){return new t(this,l,n)},e.prototype.pointFromJSON=function(l){return t.fromJSON(this,l)},t.prototype.precompute=function(){},t.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},t.fromJSON=function(l,n){return new t(l,n[0],n[1]||l.one)},t.prototype.inspect=function(){ -return this.isInfinity()?"":""},t.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},t.prototype.dbl=function(){var l=this.x.redAdd(this.z),n=l.redSqr(),u=this.x.redSub(this.z),e=u.redSqr(),t=n.redSub(e),r=n.redMul(e),i=t.redMul(e.redAdd(this.curve.a24.redMul(t)));return this.curve.point(r,i)},t.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.diffAdd=function(l,n){var u=this.x.redAdd(this.z),e=this.x.redSub(this.z),t=l.x.redAdd(l.z),r=l.x.redSub(l.z),i=r.redMul(u),o=t.redMul(e),a=n.z.redMul(i.redAdd(o).redSqr()),s=n.x.redMul(i.redISub(o).redSqr());return this.curve.point(a,s)},t.prototype.mul=function(l){for(var n=l.clone(),u=this,e=this.curve.point(null,null),t=this,r=[];0!==n.cmpn(0);n.iushrn(1))r.push(n.andln(1));for(var i=r.length-1;i>=0;i--)0===r[i]?(u=u.diffAdd(e,t),e=e.dbl()):(e=u.diffAdd(e,t),u=u.dbl());return e},t.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.eq=function(l){return 0===this.getX().cmp(l.getX())},t.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],70:[function(l,n,u){"use strict";function e(l){f.call(this,"short",l),this.a=new a(l.a,16).toRed(this.red),this.b=new a(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function t(l,n,u,e){f.BasePoint.call(this,l,"affine"),null===n&&null===u?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(n,16),this.y=new a(u,16),e&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function r(l,n,u,e){f.BasePoint.call(this,l,"jacobian"),null===n&&null===u&&null===e?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(n,16),this.y=new a(u,16),this.z=new a(e,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var i=l("../curve"),o=l("../../elliptic"),a=l("bn.js"),s=l("inherits"),f=i.base,c=o.utils.assert;s(e,f),n.exports=e,e.prototype._getEndomorphism=function(l){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var n,u;if(l.beta)n=new a(l.beta,16).toRed(this.red);else{var e=this._getEndoRoots(this.p);n=e[0].cmp(e[1])<0?e[0]:e[1],n=n.toRed(this.red)}if(l.lambda)u=new a(l.lambda,16);else{var t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(n))?u=t[0]:(u=t[1],c(0===this.g.mul(u).x.cmp(this.g.x.redMul(n))))}var r;return r=l.basis?l.basis.map(function(l){return{a:new a(l.a,16),b:new a(l.b,16)}}):this._getEndoBasis(u),{beta:n,lambda:u,basis:r}}},e.prototype._getEndoRoots=function(l){var n=l===this.p?this.red:a.mont(l),u=new a(2).toRed(n).redInvm(),e=u.redNeg(),t=new a(3).toRed(n).redNeg().redSqrt().redMul(u),r=e.redAdd(t).fromRed(),i=e.redSub(t).fromRed();return[r,i]},e.prototype._getEndoBasis=function(l){for(var n,u,e,t,r,i,o,s,f,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=l,d=this.n.clone(),p=new a(1),b=new a(0),v=new a(0),y=new a(1),g=0;0!==h.cmpn(0);){var m=d.div(h);s=d.sub(m.mul(h)),f=v.sub(m.mul(p));var _=y.sub(m.mul(b));if(!e&&s.cmp(c)<0)n=o.neg(),u=p,e=s.neg(),t=f;else if(e&&2===++g)break;o=s,d=h,h=s,v=p,p=f,y=b,b=_}r=s.neg(),i=f;var w=e.sqr().add(t.sqr()),k=r.sqr().add(i.sqr());return k.cmp(w)>=0&&(r=n,i=u),e.negative&&(e=e.neg(),t=t.neg()),r.negative&&(r=r.neg(),i=i.neg()),[{a:e,b:t},{a:r,b:i}]},e.prototype._endoSplit=function(l){var n=this.endo.basis,u=n[0],e=n[1],t=e.b.mul(l).divRound(this.n),r=u.b.neg().mul(l).divRound(this.n),i=t.mul(u.a),o=r.mul(e.a),a=t.mul(u.b),s=r.mul(e.b),f=l.sub(i).sub(o),c=a.add(s).neg();return{k1:f,k2:c}},e.prototype.pointFromX=function(l,n){l=new a(l,16),l.red||(l=l.toRed(this.red));var u=l.redSqr().redMul(l).redIAdd(l.redMul(this.a)).redIAdd(this.b),e=u.redSqrt();if(0!==e.redSqr().redSub(u).cmp(this.zero))throw new Error("invalid point");var t=e.fromRed().isOdd();return(n&&!t||!n&&t)&&(e=e.redNeg()),this.point(l,e)},e.prototype.validate=function(l){if(l.inf)return!0;var n=l.x,u=l.y,e=this.a.redMul(n),t=n.redSqr().redMul(n).redIAdd(e).redIAdd(this.b);return 0===u.redSqr().redISub(t).cmpn(0)},e.prototype._endoWnafMulAdd=function(l,n,u){for(var e=this._endoWnafT1,t=this._endoWnafT2,r=0;r":""},t.prototype.isInfinity=function(){return this.inf},t.prototype.add=function(l){if(this.inf)return l;if(l.inf)return this;if(this.eq(l))return this.dbl();if(this.neg().eq(l))return this.curve.point(null,null);if(0===this.x.cmp(l.x))return this.curve.point(null,null);var n=this.y.redSub(l.y);0!==n.cmpn(0)&&(n=n.redMul(this.x.redSub(l.x).redInvm()));var u=n.redSqr().redISub(this.x).redISub(l.x),e=n.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,e)},t.prototype.dbl=function(){if(this.inf)return this;var l=this.y.redAdd(this.y);if(0===l.cmpn(0))return this.curve.point(null,null);var n=this.curve.a,u=this.x.redSqr(),e=l.redInvm(),t=u.redAdd(u).redIAdd(u).redIAdd(n).redMul(e),r=t.redSqr().redISub(this.x.redAdd(this.x)),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},t.prototype.getX=function(){return this.x.fromRed()},t.prototype.getY=function(){return this.y.fromRed()},t.prototype.mul=function(l){return l=new a(l,16),this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve.endo?this.curve._endoWnafMulAdd([this],[l]):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t):this.curve._wnafMulAdd(1,e,t,2)},t.prototype.jmulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t,!0):this.curve._wnafMulAdd(1,e,t,2,!0)},t.prototype.eq=function(l){return this===l||this.inf===l.inf&&(this.inf||0===this.x.cmp(l.x)&&0===this.y.cmp(l.y))},t.prototype.neg=function(l){if(this.inf)return this;var n=this.curve.point(this.x,this.y.redNeg());if(l&&this.precomputed){var u=this.precomputed,e=function(l){return l.neg()};n.precomputed={naf:u.naf&&{wnd:u.naf.wnd,points:u.naf.points.map(e)},doubles:u.doubles&&{step:u.doubles.step,points:u.doubles.points.map(e)}}}return n},t.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var l=this.curve.jpoint(this.x,this.y,this.curve.one);return l},s(r,f.BasePoint),e.prototype.jpoint=function(l,n,u){return new r(this,l,n,u)},r.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var l=this.z.redInvm(),n=l.redSqr(),u=this.x.redMul(n),e=this.y.redMul(n).redMul(l);return this.curve.point(u,e)},r.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},r.prototype.add=function(l){if(this.isInfinity())return l;if(l.isInfinity())return this;var n=l.z.redSqr(),u=this.z.redSqr(),e=this.x.redMul(n),t=l.x.redMul(u),r=this.y.redMul(n.redMul(l.z)),i=l.y.redMul(u.redMul(this.z)),o=e.redSub(t),a=r.redSub(i);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=o.redSqr(),f=s.redMul(o),c=e.redMul(s),h=a.redSqr().redIAdd(f).redISub(c).redISub(c),d=a.redMul(c.redISub(h)).redISub(r.redMul(f)),p=this.z.redMul(l.z).redMul(o);return this.curve.jpoint(h,d,p)},r.prototype.mixedAdd=function(l){if(this.isInfinity())return l.toJ();if(l.isInfinity())return this;var n=this.z.redSqr(),u=this.x,e=l.x.redMul(n),t=this.y,r=l.y.redMul(n).redMul(this.z),i=u.redSub(e),o=t.redSub(r);if(0===i.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=i.redSqr(),s=a.redMul(i),f=u.redMul(a),c=o.redSqr().redIAdd(s).redISub(f).redISub(f),h=o.redMul(f.redISub(c)).redISub(t.redMul(s)),d=this.z.redMul(i);return this.curve.jpoint(c,h,d)},r.prototype.dblp=function(l){if(0===l)return this;if(this.isInfinity())return this;if(!l)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var n=this,u=0;u=0)return!1;if(u.redIAdd(t),0===this.x.cmp(u))return!0}return!1},r.prototype.inspect=function(){return this.isInfinity()?"":""},r.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],71:[function(l,n,u){"use strict";function e(l){"short"===l.type?this.curve=new o.curve["short"](l):"edwards"===l.type?this.curve=new o.curve.edwards(l):this.curve=new o.curve.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function t(l,n){Object.defineProperty(r,l,{configurable:!0,enumerable:!0,get:function(){var u=new e(n);return Object.defineProperty(r,l,{configurable:!0,enumerable:!0,value:u}),u}})}var r=u,i=l("hash.js"),o=l("../elliptic"),a=o.utils.assert;r.PresetCurve=e,t("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),t("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),t("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),t("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),t("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),t("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),t("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var s;try{s=l("./precomputed/secp256k1")}catch(f){s=void 0}t("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",s]})},{"../elliptic":65,"./precomputed/secp256k1":79,"hash.js":84}],72:[function(l,n,u){"use strict";function e(l){return this instanceof e?("string"==typeof l&&(o(r.curves.hasOwnProperty(l),"Unknown curve "+l),l=r.curves[l]),l instanceof r.curves.PresetCurve&&(l={curve:l}),this.curve=l.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=l.curve.g,this.g.precompute(l.curve.n.bitLength()+1),void(this.hash=l.hash||l.curve.hash)):new e(l)}var t=l("bn.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=l("./key"),s=l("./signature");n.exports=e,e.prototype.keyPair=function(l){return new a(this,l)},e.prototype.keyFromPrivate=function(l,n){return a.fromPrivate(this,l,n)},e.prototype.keyFromPublic=function(l,n){return a.fromPublic(this,l,n)},e.prototype.genKeyPair=function(l){l||(l={});for(var n=new r.hmacDRBG({hash:this.hash,pers:l.pers,entropy:l.entropy||r.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),u=this.n.byteLength(),e=this.n.sub(new t(2));;){var i=new t(n.generate(u));if(!(i.cmp(e)>0))return i.iaddn(1),this.keyFromPrivate(i)}},e.prototype._truncateToN=function(l,n){var u=8*l.byteLength()-this.n.bitLength();return u>0&&(l=l.ushrn(u)),!n&&l.cmp(this.n)>=0?l.sub(this.n):l},e.prototype.sign=function(l,n,u,e){"object"==typeof u&&(e=u,u=null),e||(e={}),n=this.keyFromPrivate(n,u),l=this._truncateToN(new t(l,16));for(var i=this.n.byteLength(),o=n.getPrivate().toArray("be",i),a=l.toArray("be",i),f=new r.hmacDRBG({hash:this.hash,entropy:o,nonce:a,pers:e.pers,persEnc:e.persEnc}),c=this.n.sub(new t(1)),h=0;!0;h++){var d=e.k?e.k(h):new t(f.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(c)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=d.invm(this.n).mul(v.mul(n.getPrivate()).iadd(l));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return e.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new s({r:v,s:y,recoveryParam:g})}}}}}},e.prototype.verify=function(l,n,u,e){l=this._truncateToN(new t(l,16)),u=this.keyFromPublic(u,e),n=new s(n,"hex");var r=n.r,i=n.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var o=i.invm(this.n),a=o.mul(l).umod(this.n),f=o.mul(r).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(a,u.getPublic(),f);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(r)}var c=this.g.jmulAdd(a,u.getPublic(),f);return!c.isInfinity()&&c.eqXToP(r)},e.prototype.recoverPubKey=function(l,n,u,e){o((3&u)===u,"The recovery param is more than two bits"),n=new s(n,e);var r=this.n,i=new t(l),a=n.r,f=n.s,c=1&u,h=u>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=r.sub(i),p=n.r.invm(r);return this.g.mulAdd(d,a,f).mul(p)},e.prototype.getKeyRecoveryParam=function(l,n,u,e){if(n=new s(n,e),null!==n.recoveryParam)return n.recoveryParam;for(var t=0;t<4;t++){var r;try{r=this.recoverPubKey(l,n,t)}catch(l){continue}if(r.eq(u))return t}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":65,"./key":73,"./signature":74,"bn.js":16}],73:[function(l,n,u){"use strict";function e(l,n){this.ec=l,this.priv=null,this.pub=null,n.priv&&this._importPrivate(n.priv,n.privEnc),n.pub&&this._importPublic(n.pub,n.pubEnc)}var t=l("bn.js");n.exports=e,e.fromPublic=function(l,n,u){return n instanceof e?n:new e(l,{pub:n,pubEnc:u})},e.fromPrivate=function(l,n,u){return n instanceof e?n:new e(l,{priv:n,privEnc:u})},e.prototype.validate=function(){var l=this.getPublic();return l.isInfinity()?{result:!1,reason:"Invalid public key"}:l.validate()?l.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},e.prototype.getPublic=function(l,n){return"string"==typeof l&&(n=l,l=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),n?this.pub.encode(n,l):this.pub},e.prototype.getPrivate=function(l){return"hex"===l?this.priv.toString(16,2):this.priv},e.prototype._importPrivate=function(l,n){this.priv=new t(l,n||16),this.priv=this.priv.umod(this.ec.curve.n)},e.prototype._importPublic=function(l,n){return l.x||l.y?void(this.pub=this.ec.curve.point(l.x,l.y)):void(this.pub=this.ec.curve.decodePoint(l,n))},e.prototype.derive=function(l){return l.mul(this.priv).getX()},e.prototype.sign=function(l,n,u){return this.ec.sign(l,this,n,u)},e.prototype.verify=function(l,n){return this.ec.verify(l,n,this)},e.prototype.inspect=function(){return""}},{"bn.js":16}],74:[function(l,n,u){"use strict";function e(l,n){return l instanceof e?l:void(this._importDER(l,n)||(c(l.r&&l.s,"Signature without r or s"),this.r=new a(l.r,16),this.s=new a(l.s,16),void 0===l.recoveryParam?this.recoveryParam=null:this.recoveryParam=l.recoveryParam))}function t(){this.place=0}function r(l,n){var u=l[n.place++];if(!(128&u))return u;for(var e=15&u,t=0,r=0,i=n.place;r>>3);for(l.push(128|u);--u;)l.push(n>>>(u<<3)&255);l.push(n)}var a=l("bn.js"),s=l("../../elliptic"),f=s.utils,c=f.assert;n.exports=e,e.prototype._importDER=function(l,n){l=f.toArray(l,n);var u=new t;if(48!==l[u.place++])return!1;var e=r(l,u);if(e+u.place!==l.length)return!1;if(2!==l[u.place++])return!1;var i=r(l,u),o=l.slice(u.place,i+u.place);if(u.place+=i,2!==l[u.place++])return!1;var s=r(l,u);if(l.length!==s+u.place)return!1;var c=l.slice(u.place,s+u.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new a(o),this.s=new a(c),this.recoveryParam=null,!0},e.prototype.toDER=function(l){var n=this.r.toArray(),u=this.s.toArray();for(128&n[0]&&(n=[0].concat(n)),128&u[0]&&(u=[0].concat(u)),n=i(n),u=i(u);!(u[0]||128&u[1]);)u=u.slice(1);var e=[2];o(e,n.length),e=e.concat(n),e.push(2),o(e,u.length);var t=e.concat(u),r=[48];return o(r,t.length),r=r.concat(t),f.encode(r,l)}},{"../../elliptic":65,"bn.js":16}],75:[function(l,n,u){"use strict";function e(l){if(o("ed25519"===l,"only tested with ed25519 so far"),!(this instanceof e))return new e(l);var l=r.curves[l].curve;this.curve=l,this.g=l.g,this.g.precompute(l.n.bitLength()+1),this.pointClass=l.point().constructor,this.encodingLength=Math.ceil(l.n.bitLength()/8),this.hash=t.sha512}var t=l("hash.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=i.parseBytes,s=l("./key"),f=l("./signature");n.exports=e,e.prototype.sign=function(l,n){l=a(l);var u=this.keyFromSecret(n),e=this.hashInt(u.messagePrefix(),l),t=this.g.mul(e),r=this.encodePoint(t),i=this.hashInt(r,u.pubBytes(),l).mul(u.priv()),o=e.add(i).umod(this.curve.n);return this.makeSignature({R:t,S:o,Rencoded:r})},e.prototype.verify=function(l,n,u){l=a(l),n=this.makeSignature(n);var e=this.keyFromPublic(u),t=this.hashInt(n.Rencoded(),e.pubBytes(),l),r=this.g.mul(n.S()),i=n.R().add(e.pub().mul(t));return i.eq(r)},e.prototype.hashInt=function(){for(var l=this.hash(),n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,u,t)}var t=l("hash.js"),r=l("../elliptic"),i=r.utils,o=i.assert;n.exports=e,e.prototype._init=function(l,n,u){var e=l.concat(n).concat(u);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(u||[])),this.reseed=1},e.prototype.generate=function(l,n,u,e){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(e=u,u=n,n=null),u&&(u=i.toArray(u,e),this._update(u));for(var t=[];t.length>8,i=255&t;r?u.push(r,i):u.push(i)}return u}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",u=0;u=0;){var r;if(t.isOdd()){var i=t.andln(e-1);r=i>(e>>1)-1?(e>>1)-i:i,t.isubn(r)}else r=0;u.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(e-1)?n+1:1,a=1;a0||n.cmpn(-t)>0;){var r=l.andln(3)+e&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var a=l.andln(7)+e&7;o=3!==a&&5!==a||2!==i?r:-r}u[0].push(o);var s;if(0===(1&i))s=0;else{var a=n.andln(7)+t&7;s=3!==a&&5!==a||2!==r?i:-i}u[1].push(s),2*e===o+1&&(e=1-e),2*t===s+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return u}function a(l,n,u){var e="_"+n;l.prototype[n]=function(){return void 0!==this[e]?this[e]:this[e]=u.call(this)}}function s(l){return"string"==typeof l?c.toArray(l,"hex"):l}function f(l){return new h(l,"hex","le")}var c=u,h=l("bn.js");c.assert=function(l,n){if(!l)throw new Error(n||"Assertion failed")},c.toArray=e,c.zero2=t,c.toHex=r,c.encode=function(l,n){return"hex"===n?r(l):l},c.getNAF=i,c.getJSF=o,c.cachedProperty=a,c.parseBytes=s,c.intFromLE=f},{"bn.js":16}],81:[function(l,n,u){n.exports={_args:[[{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},"/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.3.1",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"6.0.0",_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.1.tgz_1465921413402_0.5202967382501811"},_npmUser:{email:"fedor@indutny.com",name:"indutny"},_npmVersion:"3.8.6",_phantomChildren:{},_requested:{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz",_shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign",author:{email:"fedor@indutny.com",name:"Fedor Indutny"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz"},files:["lib"],gitHead:"c53f5cf3d832c0073eb4a4ed423a464cbce68f3e",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{email:"fedor@indutny.com",name:"indutny"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.3.1"}},{}],82:[function(l,n,u){function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},e.prototype.emit=function(l){var n,u,e,r,a,s;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;throw TypeError('Uncaught, unspecified "error" event.')}if(u=this._events[l],o(u))return!1;if(t(u))switch(arguments.length){case 1:u.call(this);break;case 2:u.call(this,arguments[1]);break;case 3:u.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,r=new Array(e-1),a=1;a0&&this._events[l].length>u&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(l,n){function u(){this.removeListener(l,u),e||(e=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var e=!1;return u.listener=n,this.on(l,u),this},e.prototype.removeListener=function(l,n){var u,e,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(u=this._events[l],r=u.length,e=-1,u===n||t(u.listener)&&u.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(u)){for(o=r;o-- >0;)if(u[o]===n||u[o].listener&&u[o].listener===n){e=o;break}if(e<0)return this;1===u.length?(u.length=0,delete this._events[l]):u.splice(e,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},e.prototype.removeAllListeners=function(l){var n,u;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(u=this._events[l],t(u))this.removeListener(l,u);else for(;u.length;)this.removeListener(l,u[u.length-1]);return delete this._events[l],this},e.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},e.listenerCount=function(l,n){var u;return u=l._events&&l._events[n]?t(l._events[n])?1:l._events[n].length:0}},{}],83:[function(l,n,u){(function(u){function e(l,n,e,r){u.isBuffer(l)||(l=new u(l,"binary")),n&&!u.isBuffer(n)&&(n=new u(n,"binary")),e/=8,r=r||0;for(var i,o,a=0,s=0,f=new u(e),c=new u(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(u.concat(d)),d=[],o=0,e>0)for(;;){if(0===e)break;if(o===i.length)break;f[a++]=i[o],e--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[s++]=i[o],r--,o++}if(0===e&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var u=l.length%this._delta8;this.pending=l.slice(l.length-u,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-u,this.endian);for(var e=0;e>>24&255,e[t++]=l>>>16&255,e[t++]=l>>>8&255,e[t++]=255&l}else{e[t++]=255&l,e[t++]=l>>>8&255,e[t++]=l>>>16&255,e[t++]=l>>>24&255,e[t++]=0,e[t++]=0,e[t++]=0,e[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,u,e){return 0===l?a(n,u,e):1===l||3===l?f(n,u,e):2===l?s(n,u,e):void 0}function v(l,n,u,e,t,r){var i=l&u^~l&t;return i<0&&(i+=4294967296),i}function y(l,n,u,e,t,r){var i=n&e^~n&r;return i<0&&(i+=4294967296),i}function g(l,n,u,e,t,r){var i=l&u^l&t^u&t;return i<0&&(i+=4294967296),i}function m(l,n,u,e,t,r){var i=n&e^n&r^e&r;return i<0&&(i+=4294967296),i}function _(l,n){var u=T(l,n,28),e=T(n,l,2),t=T(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function w(l,n){var u=L(l,n,28),e=L(n,l,2),t=L(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function k(l,n){var u=T(l,n,14),e=T(l,n,18),t=T(n,l,9),r=u^e^t; -return r<0&&(r+=4294967296),r}function S(l,n){var u=L(l,n,14),e=L(l,n,18),t=L(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function E(l,n){var u=T(l,n,1),e=T(l,n,8),t=N(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function M(l,n){var u=L(l,n,1),e=L(l,n,8),t=D(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function I(l,n){var u=T(l,n,19),e=T(n,l,29),t=N(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}function A(l,n){var u=L(l,n,19),e=L(n,l,29),t=D(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}var x=l("../hash"),B=x.utils,j=B.assert,R=B.rotr32,O=B.rotl32,C=B.sum32,P=B.sum32_4,U=B.sum32_5,T=B.rotr64_hi,L=B.rotr64_lo,N=B.shr64_hi,D=B.shr64_lo,q=B.sum64,z=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,H=B.sum64_4_lo,V=B.sum64_5_hi,Y=B.sum64_5_lo,W=x.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Z=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],G=[1518500249,1859775393,2400959708,3395469782];B.inherits(e,W),u.sha256=e,e.blockSize=512,e.outSize=256,e.hmacStrength=192,e.padLength=64,e.prototype._update=function(l,n){for(var u=this.W,e=0;e<16;e++)u[e]=l[n+e];for(;e>8,i=255&t;r?u.push(r,i):u.push(i)}else for(var e=0;e>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var u="",e=0;e>>0}return r}function f(l,n){for(var u=new Array(4*l.length),e=0,t=0;e>>24,u[t+1]=r>>>16&255,u[t+2]=r>>>8&255,u[t+3]=255&r):(u[t+3]=r>>>24,u[t+2]=r>>>16&255,u[t+1]=r>>>8&255,u[t]=255&r)}return u}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,u){return l+n+u>>>0}function b(l,n,u,e){return l+n+u+e>>>0}function v(l,n,u,e,t){return l+n+u+e+t>>>0}function y(l,n){if(!l)throw new Error(n||"Assertion failed")}function g(l,n,u,e){var t=l[n],r=l[n+1],i=e+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,u,e){var t=n+e>>>0,r=(t>>0}function _(l,n,u,e){var t=n+e;return t>>>0}function w(l,n,u,e,t,r,i,o){var a=0,s=n;s=s+e>>>0,a+=s>>0,a+=s>>0,a+=s>>0}function k(l,n,u,e,t,r,i,o){var a=n+e+r+o;return a>>>0}function S(l,n,u,e,t,r,i,o,a,s){var f=0,c=n;c=c+e>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,u,e,t,r,i,o,a,s){var f=n+e+r+o+s;return f>>>0}function M(l,n,u){var e=n<<32-u|l>>>u;return e>>>0}function I(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}function A(l,n,u){return l>>>u}function x(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}var B=u,j=l("inherits");B.toArray=e,B.toHex=t,B.htonl=r,B.toHex32=i,B.zero2=o,B.zero8=a,B.join32=s,B.split32=f,B.rotr32=c,B.rotl32=h,B.sum32=d,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=j,u.sum64=g,u.sum64_hi=m,u.sum64_lo=_,u.sum64_4_hi=w,u.sum64_4_lo=k,u.sum64_5_hi=S,u.sum64_5_lo=E,u.rotr64_hi=M,u.rotr64_lo=I,u.shr64_hi=A,u.shr64_lo=x},{inherits:92}],90:[function(l,n,u){u.read=function(l,n,u,e,t){var r,i,o=8*t-e-1,a=(1<>1,f=-7,c=u?t-1:0,h=u?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=e;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-s;else{if(r===a)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,e),r-=s}return(d?-1:1)*i*Math.pow(2,r-e)},u.write=function(l,n,u,e,t,r){var i,o,a,s=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=e?0:r-1,p=e?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-i))<1&&(i--,a*=2),n+=i+c>=1?h/a:h*Math.pow(2,1-c),n*a>=2&&(i++,a/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*a-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[u+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[u+d]=255&i,d+=p,i/=256,s-=8);l[u+d-p]|=128*b}},{}],91:[function(l,n,u){var e=[].indexOf;n.exports=function(l,n){if(e)return l.indexOf(n);for(var u=0;u>=7-e),new t(u)},e.prototype.test=function(l,n,u){var e=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,e/48|0));for(var o=l.subn(1),a=o.subn(1),s=0;!o.testn(s);s++);for(var f=l.shrn(s),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(a);u&&u(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(e).redPow(s);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p=0;e--){var t=l[e];"."===t?l.splice(e,1):".."===t?(l.splice(e,1),u++):u&&(l.splice(e,1),u--)}if(n)for(;u--;u)l.unshift("..");return l}function e(l,n){if(l.filter)return l.filter(n);for(var u=[],e=0;e=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(u=i+"/"+u,t="/"===i.charAt(0))}return u=n(e(u.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+u||"."},u.normalize=function(l){var t=u.isAbsolute(l),r="/"===i(l,-1);return l=n(e(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},u.isAbsolute=function(l){return"/"===l.charAt(0)},u.join=function(){var l=Array.prototype.slice.call(arguments,0);return u.normalize(e(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},u.relative=function(l,n){function e(l){for(var n=0;n=0&&""===l[u];u--);return n>u?[]:l.slice(n,u-n+1)}l=u.resolve(l).substr(1),n=u.resolve(n).substr(1);for(var t=e(l.split("/")),r=e(n.split("/")),i=Math.min(t.length,r.length),o=i,a=0;ai)throw new TypeError("Bad key length");o=o||"sha1",n.isBuffer(l)||(l=new n(l,"binary")),n.isBuffer(u)||(u=new n(u,"binary"));var a,s=1,f=new n(t),c=new n(u.length+4);u.copy(c,0,0,u.length);for(var h,d,p=1;p<=s;p++){c.writeUInt32BE(p,u.length);var b=r(o,l).update(c).digest();a||(a=b.length,d=new n(a),s=Math.ceil(t/a),h=t-(s-1)*a),b.copy(d,0,0,a);for(var v=1;v1)for(var u=1;u=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==e.toString("hex")&&!u||"0001"!==e.toString("hex")&&u)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new u(l),n=new u(n);var e=0,t=l.length;l.length!==n.length&&(e++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new s(n).cmp(a.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new s(n),a):f(n,a);var p=new u(c-d.length);if(p.fill(0),d=u.concat([p,d],c),4===o)return e(a,d);if(1===o)return t(a,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":50,"parse-asn1":101}],109:[function(l,n,u){(function(u){function e(l,n){var e=l.modulus.byteLength(),t=n.length,r=a("sha1").update(new u("")).digest(),i=r.length,h=2*i;if(t>e-h-2)throw new Error("message too long");var d=new u(e-t-h-2);d.fill(0);var p=e-i-1,b=o(i),v=f(u.concat([r,d,new u([1]),n],p),s(b,p)),y=f(b,s(v,i));return new c(u.concat([new u([0]),y,v],e))}function t(l,n,e){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return e?(o=new u(i-t-3),o.fill(255)):o=r(i-t-3),new c(u.concat([new u([0,e?1:2]),o,new u([0]),n],i))}function r(l,n){for(var e,t=new u(l),r=0,i=o(2*l),a=0;r=0)throw new Error("data too long for modulus")}return u?d(o,a):h(o,a)}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":50,"parse-asn1":101,randombytes:112}],110:[function(l,n,u){(function(u){function e(l,n){return new u(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=e}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46}],111:[function(l,n,u){n.exports=function(l,n){for(var u=l.length,e=-1;++e65536)throw new Error("requested too many random bytes");var r=new u.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new e(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=u.crypto||u.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:105,buffer:46}],113:[function(l,n,u){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":114}],114:[function(l,n,u){"use strict";function e(l){return this instanceof e?(s.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new e(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var u in l)n.push(u);return n};n.exports=e;var o=l("process-nextick-args"),a=l("core-util-is");a.inherits=l("inherits");var s=l("./_stream_readable"),f=l("./_stream_writable");a.inherits(e,s);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var a=new Error("stream.unshift() after end event");l.emit("error",a)}else{var s;!n.decoder||t||e||(u=n.decoder.write(u),s=!n.objectMode&&0===u.length),t||(n.reading=!1),s||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",u),l.read(0)):(n.length+=n.objectMode?1:u.length,t?n.buffer.unshift(u):n.buffer.push(u),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=D?l=D:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function s(l,n){return 0===n.length&&n.ended?0:n.objectMode?0===l?0:1:null===l||isNaN(l)?n.flowing&&n.buffer.length?n.buffer[0].length:n.length:l<=0?0:(l>n.highWaterMark&&(n.highWaterMark=a(l)),l>n.length?n.ended?n.length:(n.needReadable=!0,0):l)}function f(l,n){var u=null;return R.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(u=new TypeError("Invalid non-string/buffer chunk")),u}function c(l,n){if(!n.ended){if(n.decoder){var u=n.decoder.end();u&&u.length&&(n.buffer.push(u),n.length+=n.objectMode?1:u.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(U("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?I(d,l):d(l))}function d(l){U("emit readable"),l.emit("readable"),_(l)}function p(l,n){n.readingMore||(n.readingMore=!0,I(b,l,n))}function b(l,n){for(var u=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=t)u=r?e.join(""):1===e.length?e[0]:R.concat(e,t),e.length=0;else if(l0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,I(S,n,l))}function S(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function E(l,n){for(var u=0,e=l.length;u0)&&(n.emittedReadable=!1),0===l&&n.needReadable&&(n.length>=n.highWaterMark||n.ended))return U("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?k(this):h(this),null;if(l=s(l,n),0===l&&n.ended)return 0===n.length&&k(this),null;var e=n.needReadable;U("need readable",e),(0===n.length||n.length-l0?w(l,n):null,null===t&&(n.needReadable=!0,l=0),n.length-=l,0!==n.length||n.ended||(n.needReadable=!0),u!==l&&n.ended&&0===n.length&&k(this),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("not implemented"))},r.prototype.pipe=function(l,n){function t(l){U("onunpipe"),l===h&&i()}function r(){U("onend"),l.end()}function i(){U("cleanup"),l.removeListener("close",s),l.removeListener("finish",f),l.removeListener("drain",y),l.removeListener("error",a),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),g=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||y()}function o(n){U("ondata");var u=l.write(n);!1===u&&((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&M(d.pipes,l)!==-1)&&!g&&(U("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++),h.pause())}function a(n){U("onerror",n),c(),l.removeListener("error",a),0===j(l,"error")&&l.emit("error",n)}function s(){l.removeListener("finish",f),c()}function f(){U("onfinish"),l.removeListener("close",s),c()}function c(){U("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,U("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==u.stdout&&l!==u.stderr,b=p?r:i;d.endEmitted?I(b):h.once("end",b),l.on("unpipe",t);var y=v(h);l.on("drain",y);var g=!1;return h.on("data",o),e(l,"error",a),l.once("close",s),l.once("finish",f),l.emit("pipe",h),d.flowing||(U("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var u=n.pipes,e=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:S;i.WritableState=r;var M=l("core-util-is");M.inherits=l("inherits");var I,A={deprecate:l("util-deprecate")};!function(){try{I=l("stream")}catch(n){}finally{I||(I=l("events").EventEmitter)}}();var x=l("buffer").Buffer,B=l("buffer-shims");M.inherits(i,I);var j;r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var j;i.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,u){var t=this._writableState,r=!1;return"function"==typeof n&&(u=n,n=null),x.isBuffer(l)?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof u&&(u=e),t.ended?o(this,u):a(this,t,l,u)&&(t.pendingcb++,r=f(this,t,l,n,u)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||y(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,u){u(new Error("not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,u){var e=this._writableState;"function"==typeof l?(u=l,l=null,n=null):"function"==typeof n&&(u=n,n=null),null!==l&&void 0!==l&&this.write(l,n),e.corked&&(e.corked=1,this.uncork()),e.ending||e.finished||w(this,e,u)}}).call(this,l("_process"))},{"./_stream_duplex":114,_process:105,buffer:46,"buffer-shims":44,"core-util-is":48,events:82,inherits:92,"process-nextick-args":104,"util-deprecate":134}],119:[function(l,n,u){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":115}],120:[function(l,n,u){(function(e){var t=function(){try{return l("stream")}catch(n){}}();u=n.exports=l("./lib/_stream_readable.js"),u.Stream=t||u,u.Readable=u,u.Writable=l("./lib/_stream_writable.js"),u.Duplex=l("./lib/_stream_duplex.js"),u.Transform=l("./lib/_stream_transform.js"),u.PassThrough=l("./lib/_stream_passthrough.js"),!e.browser&&"disable"===e.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":114,"./lib/_stream_passthrough.js":115,"./lib/_stream_readable.js":116,"./lib/_stream_transform.js":117,"./lib/_stream_writable.js":118,_process:105}],121:[function(l,n,u){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":117}],122:[function(l,n,u){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":118}],123:[function(l,n,u){(function(l){function u(l){for(var n=[],u=0,e=0;u>>5]|=l[u]<<24-e%32;return n}function e(l){for(var n=[],u=0;u<32*l.length;u+=8)n.push(l[u>>>5]>>>24-u%32&255);return n}function t(l,n,u){for(var e=0;e<16;e++){var t=u+e,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var g,m,_,w,k,S,E,M,I,A;S=g=l[0],E=m=l[1],M=_=l[2],I=w=l[3],A=k=l[4];var x;for(e=0;e<80;e+=1)x=g+n[u+h[e]]|0,x+=e<16?r(m,_,w)+v[0]:e<32?i(m,_,w)+v[1]:e<48?o(m,_,w)+v[2]:e<64?a(m,_,w)+v[3]:s(m,_,w)+v[4],x=0|x,x=f(x,p[e]),x=x+k|0,g=k,k=w,w=f(_,10),_=m,m=x,x=S+n[u+d[e]]|0,x+=e<16?s(E,M,I)+y[0]:e<32?a(E,M,I)+y[1]:e<48?o(E,M,I)+y[2]:e<64?i(E,M,I)+y[3]:r(E,M,I)+y[4],x=0|x,x=f(x,b[e]),x=x+A|0,S=A,A=I,I=f(M,10),M=E,E=x;x=l[1]+_+I|0,l[1]=l[2]+w+A|0,l[2]=l[3]+k+S|0,l[3]=l[4]+g+E|0,l[4]=l[0]+m+M|0,l[0]=x}function r(l,n,u){return l^n^u}function i(l,n,u){return l&n|~l&u}function o(l,n,u){return(l|~n)^u}function a(l,n,u){return l&u|n&~u}function s(l,n,u){return l^(n|~u)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=u(n),o=8*n.length,a=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);for(var s=0;s>>24)|4278255360&(f<<24|f>>>8)}var c=e(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:46}],124:[function(l,n,u){(function(l){function u(n,u){this._block=new l(n),this._finalSize=u,this._blockSize=n,this._len=0,this._s=0}u.prototype.update=function(n,u){"string"==typeof n&&(u=u||"utf8",n=new l(n,u));for(var e=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var u=this._update(this._block)||this._hash();return l?u.toString(l):u},u.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=u}).call(this,l("buffer").Buffer)},{buffer:46}],125:[function(l,n,u){var u=n.exports=function(l){l=l.toLowerCase();var n=u[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};u.sha=l("./sha"),u.sha1=l("./sha1"),u.sha224=l("./sha224"),u.sha256=l("./sha256"),u.sha384=l("./sha384"),u.sha512=l("./sha512")},{"./sha":126,"./sha1":127,"./sha224":128,"./sha256":129,"./sha384":130,"./sha512":131}],126:[function(l,n,u){(function(u){function e(){this.init(),this._w=f,a.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var o=l("inherits"),a=l("./hash"),s=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(e,a),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(u)+i(d,e,o,a)+f+n[h]+s[d]|0;f=a,a=o,o=r(e),e=u,u=p}this._a=u+this._a|0,this._b=e+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],127:[function(l,n,u){(function(u){function e(){this.init(),this._w=c,s.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var a=l("inherits"),s=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);a(e,s),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,a=0|this._c,s=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(u)+o(p,e,a,s)+c+n[d]+f[p]|0;c=s,s=a,a=i(e),e=u,u=b}this._a=u+this._a|0,this._b=e+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=c+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],128:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(e,r),e.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},e.prototype._hash=function(){var l=new u(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,"./sha256":129,buffer:46,inherits:92}],129:[function(l,n,u){(function(u){function e(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function a(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function s(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(e,c),e.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)n[y]=l.readInt32BE(4*y);for(;y<64;++y)n[y]=s(n[y-2])+n[y-7]+a(n[y-15])+n[y-16]|0;for(var g=0;g<64;++g){var m=v+o(d)+t(d,p,b)+h[g]+n[g]|0,_=i(u)+r(u,e,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=e,e=u,u=m+_|0}this._a=u+this._a|0,this._b=e+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},e.prototype._hash=function(){var l=new u(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],130:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(e,r),e.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,"./sha512":131,buffer:46,inherits:92}],131:[function(l,n,u){(function(u){function e(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(e,p),e.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._ah,e=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,g=0|this._gh,m=0|this._hh,_=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,A=0|this._hl,x=0;x<32;x+=2)n[x]=l.readInt32BE(4*x),n[x+1]=l.readInt32BE(4*x+4);for(;x<160;x+=2){var B=n[x-30],j=n[x-30+1],R=a(B,j),O=s(j,B);B=n[x-4],j=n[x-4+1];var C=f(B,j),P=c(j,B),U=n[x-14],T=n[x-14+1],L=n[x-32],N=n[x-32+1],D=O+T|0,q=R+U+h(D,O)|0;D=D+P|0,q=q+C+h(D,P)|0,D=D+N|0,q=q+L+h(D,N)|0,n[x]=q,n[x+1]=D}for(var z=0;z<160;z+=2){q=n[z],D=n[z+1];var F=r(u,e,d),K=r(_,w,k),H=i(u,_),V=i(_,u),Y=o(v,E),W=o(E,v),X=b[z],Z=b[z+1],G=t(v,y,g),J=t(E,M,I),$=A+W|0,Q=m+Y+h($,A)|0;$=$+J|0,Q=Q+G+h($,J)|0,$=$+Z|0,Q=Q+X+h($,Z)|0,$=$+D|0,Q=Q+q+h($,D)|0;var ll=V+K|0,nl=H+F+h(ll,V)|0;m=g,A=I,g=y,I=M,y=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=e,k=w,e=u,w=_,_=$+ll|0,u=Q+nl+h(_,$)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+A|0,this._ah=this._ah+u+h(this._al,_)|0,this._bh=this._bh+e+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+y+h(this._fl,M)|0,this._gh=this._gh+g+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,A)|0},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],132:[function(l,n,u){function e(){t.call(this)}n.exports=e;var t=l("events").EventEmitter,r=l("inherits");r(e,t),e.Readable=l("readable-stream/readable.js"),e.Writable=l("readable-stream/writable.js"),e.Duplex=l("readable-stream/duplex.js"),e.Transform=l("readable-stream/transform.js"),e.PassThrough=l("readable-stream/passthrough.js"),e.Stream=e,e.prototype.pipe=function(l,n){function u(n){l.writable&&!1===l.write(n)&&s.pause&&s.pause()}function e(){s.readable&&s.resume&&s.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(a(),0===t.listenerCount(this,"error"))throw l}function a(){s.removeListener("data",u),l.removeListener("drain",e),s.removeListener("end",r),s.removeListener("close",i),s.removeListener("error",o),l.removeListener("error",o),s.removeListener("end",a),s.removeListener("close",a),l.removeListener("close",a)}var s=this;s.on("data",u),l.on("drain",e),l._isStdio||n&&n.end===!1||(s.on("end",r),s.on("close",i));var f=!1;return s.on("error",o),l.on("error",o),s.on("end",a),s.on("close",a),l.on("close",a),l.emit("pipe",s),l}},{events:82,inherits:92,"readable-stream/duplex.js":113,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],133:[function(l,n,u){function e(l){if(l&&!a(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,a=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},s=u.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),e(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i; -break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};s.prototype.write=function(l){for(var n="";this.charLength;){var u=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,u),this.charReceived+=u,this.charReceived=55296&&e<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,e=n.charCodeAt(t);if(e>=55296&&e<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},s.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var u=l[l.length-n];if(1==n&&u>>5==6){this.charLength=2;break}if(n<=2&&u>>4==14){this.charLength=3;break}if(n<=3&&u>>3==30){this.charLength=4;break}}this.charReceived=n},s.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var u=this.charReceived,e=this.charBuffer,t=this.encoding;n+=e.slice(0,u).toString(t)}return n}},{buffer:46}],134:[function(l,n,u){(function(l){function u(l,n){function u(){if(!t){if(e("throwDeprecation"))throw new Error(n);e("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(e("noDeprecation"))return l;var t=!1;return u}function e(n){try{if(!l.localStorage)return!1}catch(u){return!1}var e=l.localStorage[n];return null!=e&&"true"===String(e).toLowerCase()}n.exports=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],135:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var u in l)n.push(u);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var u=0;u>6],t=0===(32&u);if(31===(31&u)){var r=u;for(u=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;u<<=7,u|=127&r}}else u&=31;var i=c.tag[u];return{cls:e,primitive:t,tag:u,tagStr:i}}function i(l,n,u){var e=l.readUInt8(u);if(l.isError(e))return e;if(!n&&128===e)return null;if(0===(128&e))return e;var t=127&e;if(t>=4)return l.error("length octect is too long");e=0;for(var r=0;r=31?e.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[u||"universal"]<<6)}var o=l("inherits"),a=l("buffer").Buffer,s=l("../../asn1"),f=s.base,c=s.constants.der;n.exports=e,e.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,u,e){var t=i(l,n,u,this.reporter);if(e.length<128){var r=new a(2);return r[0]=t,r[1]=e.length,this._createEncoderBuffer([r,e])}for(var o=1,s=e.length;s>=256;s>>=8)o++;var r=new a(2+o);r[0]=t,r[1]=128|o;for(var s=1+o,f=e.length;f>0;s--,f>>=8)r[s]=255&f;return this._createEncoderBuffer([r,e])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var u=new a(2*l.length),e=0;e=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,e=0;e=128;r>>=7)t++}for(var i=new a(t),o=i.length-1,e=l.length-1;e>=0;e--){var r=l[e];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var u,e=new Date(l);return"gentime"===n?u=[r(e.getFullYear()),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):"utctime"===n?u=[r(e.getFullYear()%100),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(u,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!a.isBuffer(l)){var u=l.toArray();!l.sign&&128&u[0]&&u.unshift(0),l=new a(u)}if(a.isBuffer(l)){var e=l.length;0===l.length&&e++;var t=new a(e);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var e=1,r=l;r>=256;r>>=8)e++;for(var t=new Array(e),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new a(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,u){var e,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,u).join()),r.length!==t.defaultBuffer.length)return!1;for(e=0;e0)throw new Error("Invalid string. Length must be a multiple of 4");var f=l.length;a="="===l.charAt(f-2)?2:"="===l.charAt(f-1)?1:0,s=new r(3*l.length/4-a),i=a>0?l.length-4:l.length;var c=0;for(e=0,t=0;e>16),u((65280&o)>>8),u(255&o);return 2===a?(o=n(l.charAt(e))<<2|n(l.charAt(e+1))>>4,u(255&o)):1===a&&(o=n(l.charAt(e))<<10|n(l.charAt(e+1))<<4|n(l.charAt(e+2))>>2,u(o>>8&255),u(255&o)),s}function t(l){function n(l){return e.charAt(l)}function u(l){return n(l>>18&63)+n(l>>12&63)+n(l>>6&63)+n(63&l)}var t,r,i,o=l.length%3,a="";for(t=0,i=l.length-o;t>2),a+=n(r<<4&63),a+="==";break;case 2:r=(l[l.length-2]<<8)+l[l.length-1],a+=n(r>>10),a+=n(r>>4&63),a+=n(r<<2&63),a+="="}return a}var r="undefined"!=typeof Uint8Array?Uint8Array:Array,i="+".charCodeAt(0),o="/".charCodeAt(0),a="0".charCodeAt(0),s="a".charCodeAt(0),f="A".charCodeAt(0),c="-".charCodeAt(0),h="_".charCodeAt(0);l.toByteArray=u,l.fromByteArray=t}("undefined"==typeof u?this.base64js={}:u)},{}],16:[function(l,n,u){!function(n,u){"use strict";function e(l,n){if(!l)throw new Error(n||"Assertion failed")}function t(l,n){l.super_=n;var u=function(){};u.prototype=n.prototype,l.prototype=new u,l.prototype.constructor=l}function r(l,n,u){return r.isBN(l)?l:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==l&&("le"!==n&&"be"!==n||(u=n,n=10),this._init(l||0,n||10,u||"be"))))}function i(l,n,u){for(var e=0,t=Math.min(l.length,u),r=n;r=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return e}function o(l,n,u,e){for(var t=0,r=Math.min(l.length,u),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function a(l){for(var n=new Array(l.bitLength()),u=0;u>>t}return n}function s(l,n,u){u.negative=n.negative^l.negative;var e=l.length+n.length|0;u.length=e,e=e-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,a=i/67108864|0;u.words[0]=o;for(var s=1;s>>26,c=67108863&a,h=Math.min(s,n.length-1),d=Math.max(0,s-l.length+1);d<=h;d++){var p=s-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}u.words[s]=0|c,a=0|f}return 0!==a?u.words[s]=0|a:u.length--,u.strip()}function f(l,n,u){u.negative=n.negative^l.negative,u.length=l.length+n.length;for(var e=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}u.words[r]=o,e=i,i=t}return 0!==e?u.words[r]=e:u.length--,u.strip()}function c(l,n,u){var e=new h;return e.mulp(l,n,u)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else e(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){g.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:u.BN=r,r.BN=r,r.wordSize=26;var _;try{_=l("buffer").Buffer}catch(w){}r.isBN=function(l){return l instanceof r||null!==l&&"object"==typeof l&&l.constructor.wordSize===r.wordSize&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,u){if("number"==typeof l)return this._initNumber(l,n,u);if("object"==typeof l)return this._initArray(l,n,u);"hex"===n&&(n=16),e(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initNumber=function(l,n,u){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(e(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initArray=function(l,n,u){if(e("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===u)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var u=0;u=n;u-=6)t=i(l,u,u+6),this.words[e]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,e++);u+6!==n&&(t=i(l,n,u+6),this.words[e]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,u){this.words=[0],this.length=1;for(var e=0,t=1;t<=67108863;t*=n)e++;e--,t=t/n|0;for(var r=l.length-u,i=r%e,a=Math.min(r,r-i)+u,s=0,f=u;f1&&0===this.words[this.length-1];)this.length--; +return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var u;if(16===l||"hex"===l){u="";for(var t=0,r=0,i=0;i>>24-t&16777215,u=0!==r||i!==this.length-1?k[6-a.length]+a+u:a+u,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(u=r.toString(16)+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}if(l===(0|l)&&l>=2&&l<=36){var s=S[l],f=E[l];u="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),u=c.isZero()?h+u:k[s-h.length]+h+u}for(this.isZero()&&(u="0"+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}e(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&e(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return e("undefined"!=typeof _),this.toArrayLike(_,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,u){var t=this.byteLength(),r=u||Math.max(1,t);e(t<=r,"byte array longer than desired length"),e(r>0,"Requested array length <= 0"),this.strip();var i,o,a="le"===n,s=new l(r),f=this.clone();if(a){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),s[o]=i;for(;o=4096&&(u+=13,n>>>=13),n>=64&&(u+=7,n>>>=7),n>=8&&(u+=4,n>>>=4),n>=2&&(u+=2,n>>>=2),u+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,u=0;return 0===(8191&n)&&(u+=13,n>>>=13),0===(127&n)&&(u+=7,n>>>=7),0===(15&n)&&(u+=4,n>>>=4),0===(3&n)&&(u+=2,n>>>=2),0===(1&n)&&u++,u},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var u=0;ul.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,u;this.length>l.length?(n=this,u=l):(n=l,u=this);for(var e=0;el.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){e("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),u=l%26;this._expand(n),u>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-u),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){e("number"==typeof l&&l>=0);var u=l/26|0,t=l%26;return this._expand(u+1),n?this.words[u]=this.words[u]|1<l.length?(u=this,e=l):(u=l,e=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=u.length,0!==t)this.words[this.length]=t,this.length++;else if(u!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var u=this.cmp(l);if(0===u)return this.negative=0,this.length=1,this.words[0]=0,this;var e,t;u>0?(e=this,t=l):(e=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],y=8191&v,g=v>>>13,m=0|i[3],_=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,A=M>>>13,x=0|i[6],B=8191&x,j=x>>>13,R=0|i[7],O=8191&R,C=R>>>13,P=0|i[8],U=8191&P,T=P>>>13,L=0|i[9],N=8191&L,D=L>>>13,q=0|o[0],z=8191&q,F=q>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,Z=0|o[3],G=8191&Z,J=Z>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],ul=8191&nl,el=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],al=8191&ol,sl=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;u.negative=l.negative^n.negative,u.length=19,e=Math.imul(c,z),t=Math.imul(c,F),t=t+Math.imul(h,z)|0,r=Math.imul(h,F);var vl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,e=Math.imul(p,z),t=Math.imul(p,F),t=t+Math.imul(b,z)|0,r=Math.imul(b,F),e=e+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var yl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,e=Math.imul(y,z),t=Math.imul(y,F),t=t+Math.imul(g,z)|0,r=Math.imul(g,F),e=e+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,e=e+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var gl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,e=Math.imul(_,z),t=Math.imul(_,F),t=t+Math.imul(w,z)|0,r=Math.imul(w,F),e=e+Math.imul(y,H)|0,t=t+Math.imul(y,V)|0,t=t+Math.imul(g,H)|0,r=r+Math.imul(g,V)|0,e=e+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,e=e+Math.imul(c,G)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,G)|0,r=r+Math.imul(h,J)|0;var ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,e=Math.imul(S,z),t=Math.imul(S,F),t=t+Math.imul(E,z)|0,r=Math.imul(E,F),e=e+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,e=e+Math.imul(y,W)|0,t=t+Math.imul(y,X)|0,t=t+Math.imul(g,W)|0,r=r+Math.imul(g,X)|0,e=e+Math.imul(p,G)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,G)|0,r=r+Math.imul(b,J)|0,e=e+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var _l=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,e=Math.imul(I,z),t=Math.imul(I,F),t=t+Math.imul(A,z)|0,r=Math.imul(A,F),e=e+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,e=e+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,e=e+Math.imul(y,G)|0,t=t+Math.imul(y,J)|0,t=t+Math.imul(g,G)|0,r=r+Math.imul(g,J)|0,e=e+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,e=e+Math.imul(c,ul)|0,t=t+Math.imul(c,el)|0,t=t+Math.imul(h,ul)|0,r=r+Math.imul(h,el)|0;var wl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,e=Math.imul(B,z),t=Math.imul(B,F),t=t+Math.imul(j,z)|0,r=Math.imul(j,F),e=e+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(A,H)|0,r=r+Math.imul(A,V)|0,e=e+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,e=e+Math.imul(_,G)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(w,G)|0,r=r+Math.imul(w,J)|0,e=e+Math.imul(y,Q)|0,t=t+Math.imul(y,ll)|0,t=t+Math.imul(g,Q)|0,r=r+Math.imul(g,ll)|0,e=e+Math.imul(p,ul)|0,t=t+Math.imul(p,el)|0,t=t+Math.imul(b,ul)|0,r=r+Math.imul(b,el)|0,e=e+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,e=Math.imul(O,z),t=Math.imul(O,F),t=t+Math.imul(C,z)|0,r=Math.imul(C,F),e=e+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,e=e+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(A,W)|0,r=r+Math.imul(A,X)|0,e=e+Math.imul(S,G)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,G)|0,r=r+Math.imul(E,J)|0,e=e+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,e=e+Math.imul(y,ul)|0,t=t+Math.imul(y,el)|0,t=t+Math.imul(g,ul)|0,r=r+Math.imul(g,el)|0,e=e+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,e=e+Math.imul(c,al)|0,t=t+Math.imul(c,sl)|0,t=t+Math.imul(h,al)|0,r=r+Math.imul(h,sl)|0;var Sl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,e=Math.imul(U,z),t=Math.imul(U,F),t=t+Math.imul(T,z)|0,r=Math.imul(T,F),e=e+Math.imul(O,H)|0,t=t+Math.imul(O,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,e=e+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,e=e+Math.imul(I,G)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(A,G)|0,r=r+Math.imul(A,J)|0,e=e+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,e=e+Math.imul(_,ul)|0,t=t+Math.imul(_,el)|0,t=t+Math.imul(w,ul)|0,r=r+Math.imul(w,el)|0,e=e+Math.imul(y,rl)|0,t=t+Math.imul(y,il)|0,t=t+Math.imul(g,rl)|0,r=r+Math.imul(g,il)|0,e=e+Math.imul(p,al)|0,t=t+Math.imul(p,sl)|0,t=t+Math.imul(b,al)|0,r=r+Math.imul(b,sl)|0,e=e+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,e=Math.imul(N,z),t=Math.imul(N,F),t=t+Math.imul(D,z)|0,r=Math.imul(D,F),e=e+Math.imul(U,H)|0,t=t+Math.imul(U,V)|0,t=t+Math.imul(T,H)|0,r=r+Math.imul(T,V)|0,e=e+Math.imul(O,W)|0,t=t+Math.imul(O,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,e=e+Math.imul(B,G)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(j,G)|0,r=r+Math.imul(j,J)|0,e=e+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(A,Q)|0,r=r+Math.imul(A,ll)|0,e=e+Math.imul(S,ul)|0,t=t+Math.imul(S,el)|0,t=t+Math.imul(E,ul)|0,r=r+Math.imul(E,el)|0,e=e+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,e=e+Math.imul(y,al)|0,t=t+Math.imul(y,sl)|0,t=t+Math.imul(g,al)|0,r=r+Math.imul(g,sl)|0,e=e+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,e=e+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,e=Math.imul(N,H),t=Math.imul(N,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),e=e+Math.imul(U,W)|0,t=t+Math.imul(U,X)|0,t=t+Math.imul(T,W)|0,r=r+Math.imul(T,X)|0,e=e+Math.imul(O,G)|0,t=t+Math.imul(O,J)|0,t=t+Math.imul(C,G)|0,r=r+Math.imul(C,J)|0,e=e+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,e=e+Math.imul(I,ul)|0,t=t+Math.imul(I,el)|0,t=t+Math.imul(A,ul)|0,r=r+Math.imul(A,el)|0,e=e+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,e=e+Math.imul(_,al)|0,t=t+Math.imul(_,sl)|0,t=t+Math.imul(w,al)|0,r=r+Math.imul(w,sl)|0,e=e+Math.imul(y,cl)|0,t=t+Math.imul(y,hl)|0,t=t+Math.imul(g,cl)|0,r=r+Math.imul(g,hl)|0,e=e+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,e=Math.imul(N,W),t=Math.imul(N,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),e=e+Math.imul(U,G)|0,t=t+Math.imul(U,J)|0,t=t+Math.imul(T,G)|0,r=r+Math.imul(T,J)|0,e=e+Math.imul(O,Q)|0,t=t+Math.imul(O,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,e=e+Math.imul(B,ul)|0,t=t+Math.imul(B,el)|0,t=t+Math.imul(j,ul)|0,r=r+Math.imul(j,el)|0,e=e+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(A,rl)|0,r=r+Math.imul(A,il)|0,e=e+Math.imul(S,al)|0,t=t+Math.imul(S,sl)|0,t=t+Math.imul(E,al)|0,r=r+Math.imul(E,sl)|0,e=e+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,e=e+Math.imul(y,pl)|0,t=t+Math.imul(y,bl)|0,t=t+Math.imul(g,pl)|0,r=r+Math.imul(g,bl)|0;var Al=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,e=Math.imul(N,G),t=Math.imul(N,J),t=t+Math.imul(D,G)|0,r=Math.imul(D,J),e=e+Math.imul(U,Q)|0,t=t+Math.imul(U,ll)|0,t=t+Math.imul(T,Q)|0,r=r+Math.imul(T,ll)|0,e=e+Math.imul(O,ul)|0,t=t+Math.imul(O,el)|0,t=t+Math.imul(C,ul)|0,r=r+Math.imul(C,el)|0,e=e+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,e=e+Math.imul(I,al)|0,t=t+Math.imul(I,sl)|0,t=t+Math.imul(A,al)|0,r=r+Math.imul(A,sl)|0,e=e+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,e=e+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var xl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,e=Math.imul(N,Q),t=Math.imul(N,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),e=e+Math.imul(U,ul)|0,t=t+Math.imul(U,el)|0,t=t+Math.imul(T,ul)|0,r=r+Math.imul(T,el)|0,e=e+Math.imul(O,rl)|0,t=t+Math.imul(O,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,e=e+Math.imul(B,al)|0,t=t+Math.imul(B,sl)|0,t=t+Math.imul(j,al)|0,r=r+Math.imul(j,sl)|0,e=e+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(A,cl)|0,r=r+Math.imul(A,hl)|0,e=e+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var Bl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,e=Math.imul(N,ul),t=Math.imul(N,el),t=t+Math.imul(D,ul)|0,r=Math.imul(D,el),e=e+Math.imul(U,rl)|0,t=t+Math.imul(U,il)|0,t=t+Math.imul(T,rl)|0,r=r+Math.imul(T,il)|0,e=e+Math.imul(O,al)|0,t=t+Math.imul(O,sl)|0,t=t+Math.imul(C,al)|0,r=r+Math.imul(C,sl)|0,e=e+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,e=e+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(A,pl)|0,r=r+Math.imul(A,bl)|0;var jl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,e=Math.imul(N,rl),t=Math.imul(N,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),e=e+Math.imul(U,al)|0,t=t+Math.imul(U,sl)|0,t=t+Math.imul(T,al)|0,r=r+Math.imul(T,sl)|0,e=e+Math.imul(O,cl)|0,t=t+Math.imul(O,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,e=e+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Rl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,e=Math.imul(N,al),t=Math.imul(N,sl),t=t+Math.imul(D,al)|0,r=Math.imul(D,sl),e=e+Math.imul(U,cl)|0,t=t+Math.imul(U,hl)|0,t=t+Math.imul(T,cl)|0,r=r+Math.imul(T,hl)|0,e=e+Math.imul(O,pl)|0,t=t+Math.imul(O,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Ol=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,e=Math.imul(N,cl),t=Math.imul(N,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),e=e+Math.imul(U,pl)|0,t=t+Math.imul(U,bl)|0,t=t+Math.imul(T,pl)|0,r=r+Math.imul(T,bl)|0;var Cl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,e=Math.imul(N,pl),t=Math.imul(N,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Pl=(s+e|0)+((8191&t)<<13)|0;return s=(r+(t>>>13)|0)+(Pl>>>26)|0,Pl&=67108863,a[0]=vl,a[1]=yl,a[2]=gl,a[3]=ml,a[4]=_l,a[5]=wl,a[6]=kl,a[7]=Sl,a[8]=El,a[9]=Ml,a[10]=Il,a[11]=Al,a[12]=xl,a[13]=Bl,a[14]=jl,a[15]=Rl,a[16]=Ol,a[17]=Cl,a[18]=Pl,0!==s&&(a[19]=s,u.length++),u};Math.imul||(M=s),r.prototype.mulTo=function(l,n){var u,e=this.length+l.length;return u=10===this.length&&10===l.length?M(this,l,n):e<63?s(this,l,n):e<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),u=r.prototype._countBits(l)-1,e=0;e>=1;return e},h.prototype.permute=function(l,n,u,e,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,u[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[u]=67108863&r}return 0!==n&&(this.words[u]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=a(l);if(0===n.length)return new r(1);for(var u=this,e=0;e=0);var n,u=l%26,t=(l-u)/26,r=67108863>>>26-u<<26-u;if(0!==u){var i=0;for(n=0;n>>26-u}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,s=0;s=0&&(0!==f||s>=t);s--){var c=0|this.words[s];this.words[s]=f<<26-r|c>>>r,f=c&o}return a&&0!==f&&(a.words[a.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,u){return e(0===this.negative),this.iushrn(l,n,u)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){e("number"==typeof l&&l>=0);var n=l%26,u=(l-n)/26,t=1<=0);var n=l%26,u=(l-n)/26;if(e(0===this.negative,"imaskn works only with positive numbers"),this.length<=u)return this;if(0!==n&&u++,this.length=Math.min(u,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(e("number"==typeof l),e(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(a/67108864|0),this.words[t+u]=67108863&i}for(;t>26,this.words[t+u]=67108863&i;if(0===o)return this.strip();for(e(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var u=this.length-l.length,e=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);u=26-o,0!==u&&(t=t.ushln(u),e.iushln(u),i=0|t.words[t.length-1]);var a,s=e.length-t.length;if("mod"!==n){a=new r(null),a.length=s+1,a.words=new Array(a.length);for(var f=0;f=0;h--){var d=67108864*(0|e.words[t.length+h])+(0|e.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),e._ishlnsubmul(t,d,h);0!==e.negative;)d--,e.negative=0,e._ishlnsubmul(t,1,h),e.isZero()||(e.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),e.strip(),"div"!==n&&0!==u&&e.iushrn(u),{div:a||null,mod:e}},r.prototype.divmod=function(l,n,u){if(e(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var u=0!==n.div.negative?n.mod.isub(l):n.mod,e=l.ushrn(1),t=l.andln(1),r=u.cmp(e);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){e(l<=67108863);for(var n=(1<<26)%l,u=0,t=this.length-1;t>=0;t--)u=(n*u+(0|this.words[t]))%l;return u},r.prototype.idivn=function(l){e(l<=67108863);for(var n=0,u=this.length-1;u>=0;u--){var t=(0|this.words[u])+67108864*n;this.words[u]=t/l|0,n=t%l}return this.strip()},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),a=new r(1),s=0;n.isEven()&&u.isEven();)n.iushrn(1),u.iushrn(1),++s;for(var f=u.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(u.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(u.iushrn(p);p-- >0;)(o.isOdd()||a.isOdd())&&(o.iadd(f),a.isub(c)),o.iushrn(1),a.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(o),i.isub(a)):(u.isub(n),o.isub(t),a.isub(i))}return{a:o,b:a,gcd:u.iushln(s)}},r.prototype._invmp=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=u.clone();n.cmpn(1)>0&&u.cmpn(1)>0;){for(var a=0,s=1;0===(n.words[0]&s)&&a<26;++a,s<<=1);if(a>0)for(n.iushrn(a);a-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(u.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(u.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(i)):(u.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),u=l.clone();n.negative=0,u.negative=0;for(var e=0;n.isEven()&&u.isEven();e++)n.iushrn(1),u.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;u.isEven();)u.iushrn(1);var t=n.cmp(u);if(t<0){var r=n;n=u,u=r}else if(0===t||0===u.cmpn(1))break;n.isub(u)}return u.iushln(e)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){e("number"==typeof l);var n=l%26,u=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var u;if(this.length>1)u=1;else{n&&(l=-l),e(l<=67108863,"Number is too big");var t=0|this.words[0];u=t===l?0:tl.length)return 1;if(this.length=0;u--){var e=0|this.words[u],t=0|l.words[u];if(e!==t){et&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new g(l)},r.prototype.toRed=function(l){return e(!this.red,"Already a number in reduction context"),e(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return e(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return e(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return e(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return e(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return e(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return e(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return e(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return e(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return e(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return e(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){ +return e(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return e(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return e(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,u=l;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),n=u.bitLength();while(n>this.n);var e=n0?u.isub(this.p):u.strip(),u},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var u=4194303,e=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,u=0;u>>=26,l.words[u]=t,n=e}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function A(l){if(I[l])return I[l];var A;if("k256"===l)A=new p;else if("p224"===l)A=new b;else if("p192"===l)A=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);A=new y}return I[l]=A,A},g.prototype._verify1=function(l){e(0===l.negative,"red works only with positives"),e(l.red,"red works only with red numbers")},g.prototype._verify2=function(l,n){e(0===(l.negative|n.negative),"red works only with positives"),e(l.red&&l.red===n.red,"red works only with red numbers")},g.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},g.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},g.prototype.add=function(l,n){this._verify2(l,n);var u=l.add(n);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},g.prototype.iadd=function(l,n){this._verify2(l,n);var u=l.iadd(n);return u.cmp(this.m)>=0&&u.isub(this.m),u},g.prototype.sub=function(l,n){this._verify2(l,n);var u=l.sub(n);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},g.prototype.isub=function(l,n){this._verify2(l,n);var u=l.isub(n);return u.cmpn(0)<0&&u.iadd(this.m),u},g.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},g.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},g.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},g.prototype.isqr=function(l){return this.imul(l,l.clone())},g.prototype.sqr=function(l){return this.mul(l,l)},g.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(e(n%2===1),3===n){var u=this.m.add(new r(1)).iushrn(2);return this.pow(l,u)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);e(!t.isZero());var o=new r(1).toRed(this),a=o.redNeg(),s=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,s).cmp(a);)f.redIAdd(a);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();e(v=0;t--){for(var f=n.words[t],c=s-1;c>=0;c--){var h=f>>c&1;i!==e[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,a++,(a===u||0===t&&0===c)&&(i=this.mul(i,e[o]),a=0,o=0)):a=0}s=26}return i},g.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},g.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,g),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var u=l.imul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var u=l.mul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],17:[function(l,n,u){function e(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new e(null)),t.generate(l)},n.exports.Rand=e,e.prototype.generate=function(l){return this._rand(l)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.crypto.getRandomValues(n),n}:window.msCrypto&&window.msCrypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.msCrypto.getRandomValues(n),n}:e.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var r=l("crypto");e.prototype._rand=function(l){return r.randomBytes(l)}}catch(i){e.prototype._rand=function(l){for(var n=new Uint8Array(l),u=0;uo||l<0?(u=Math.abs(l)%o,l<0?o-u:u):l}function e(l){for(var n=0;n>>8^255&u^99,this.SBOX[t]=u,this.INV_SBOX[u]=t,r=l[t],i=l[r],o=l[i],e=257*l[u]^16843008*u,this.SUB_MIX[0][t]=e<<24|e>>>8,this.SUB_MIX[1][t]=e<<16|e>>>16,this.SUB_MIX[2][t]=e<<8|e>>>24,this.SUB_MIX[3][t]=e,e=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][u]=e<<24|e>>>8,this.INV_SUB_MIX[1][u]=e<<16|e>>>16,this.INV_SUB_MIX[2][u]=e<<8|e>>>24,this.INV_SUB_MIX[3][u]=e,0===t?t=a=1:(t=r^l[l[l[o^r]]],a^=l[l[a]]);return!0};var a=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,u,e,t,r;for(u=this._key,n=u.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],e=0;e>>24,r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r],r^=a.RCON[e/n|0]<<24):n>6&&e%n===4?r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r]:void 0,this._keySchedule[e-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^a.INV_SUB_MIX[1][a.SBOX[r>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[r>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var u=this._doCryptBlock(n,this._keySchedule,a.SUB_MIX,a.SBOX),e=new l(16);return e.writeUInt32BE(u[0],0),e.writeUInt32BE(u[1],4),e.writeUInt32BE(u[2],8),e.writeUInt32BE(u[3],12),e},i.prototype.decryptBlock=function(n){n=r(new l(n));var u=[n[3],n[1]];n[1]=u[0],n[3]=u[1];var e=this._doCryptBlock(n,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX),t=new l(16);return t.writeUInt32BE(e[0],0),t.writeUInt32BE(e[3],4),t.writeUInt32BE(e[2],8),t.writeUInt32BE(e[1],12),t},i.prototype.scrub=function(){e(this._keySchedule),e(this._invKeySchedule),e(this._key)},i.prototype._doCryptBlock=function(l,u,e,t){var r,i,o,a,s,f,c,h,d;i=l[0]^u[0],o=l[1]^u[1],a=l[2]^u[2],s=l[3]^u[3],r=4;for(var p=1;p>>24]^e[1][o>>>16&255]^e[2][a>>>8&255]^e[3][255&s]^u[r++],c=e[0][o>>>24]^e[1][a>>>16&255]^e[2][s>>>8&255]^e[3][255&i]^u[r++],h=e[0][a>>>24]^e[1][s>>>16&255]^e[2][i>>>8&255]^e[3][255&o]^u[r++],d=e[0][s>>>24]^e[1][i>>>16&255]^e[2][o>>>8&255]^e[3][255&a]^u[r++],i=f,o=c,a=h,s=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[a>>>8&255]<<8|t[255&s])^u[r++],c=(t[o>>>24]<<24|t[a>>>16&255]<<16|t[s>>>8&255]<<8|t[255&i])^u[r++],h=(t[a>>>24]<<24|t[s>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^u[r++],d=(t[s>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&a])^u[r++],[n(f),n(c),n(h),n(d)]},u.AES=i}).call(this,l("buffer").Buffer)},{buffer:46}],20:[function(l,n,u){(function(u){function e(l,n,t,o){if(!(this instanceof e))return new e(l,n,t);i.call(this),this._finID=u.concat([t,new u([0,0,0,1])]),t=u.concat([t,new u([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new u(t.length),this._cache=new u(""),this._secCache=new u(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var s=new u(4);s.fill(0),this._ghash=new a(this._cipher.encryptBlock(s)),this._authTag=null,this._called=!1}function t(l,n){var u=0;l.length!==n.length&&u++;for(var e=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};u.createDecipher=o,u.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,buffer:46,"cipher-base":48,evp_bytestokey:84,inherits:93}],23:[function(l,n,u){(function(n){function e(l,u,r){return this instanceof e?(a.call(this),this._cache=new t,this._cipher=new o.AES(u),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new e(l,u,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,u,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof u&&(u=new n(u)),u.length!==r.key/8)throw new TypeError("invalid key length "+u.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],u,t):"auth"===r.type?new d(p[r.mode],u,t):new e(p[r.mode],u,t)}function i(l,n){var u=f[l.toLowerCase()];if(!u)throw new TypeError("invalid suite type");var e=c(n,!1,u.key,u.iv);return r(l,e.key,e.iv)}var o=l("./aes"),a=l("cipher-base"),s=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");s(e,a),e.prototype._update=function(l){this._cache.add(l);for(var u,e,t=[];u=this._cache.get();)e=this._mode.encrypt(this,u),t.push(e);return n.concat(t)},e.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},e.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,u=new n(l),e=-1;++ea||l<0?(u=Math.abs(l)%a,l<0?a-u:u):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=u,u.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,u&&(r[0]=r[0]^225<<24)}this.state=t(o)},u.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var u;this.cache.length>=16;)u=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(u)},u.prototype["final"]=function(n,u){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,u])),this.state};var a=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:46}],25:[function(l,n,u){u["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},u["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},u["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},u["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},u["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},u["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},u.aes128=u["aes-128-cbc"],u.aes192=u["aes-192-cbc"],u.aes256=u["aes-256-cbc"],u["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},u["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},u["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},u["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},u["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},u["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},u["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},u["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},u["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},u["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},u["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},u["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},u["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},u["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},u["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},u["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},u["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},u["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],26:[function(l,n,u){var e=l("buffer-xor");u.encrypt=function(l,n){var u=e(n,l._prev);return l._prev=l._cipher.encryptBlock(u),l._prev},u.decrypt=function(l,n){var u=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return e(t,u)}},{"buffer-xor":45}],27:[function(l,n,u){(function(n){function e(l,u,e){var r=u.length,i=t(u,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,e?u:i]),i}var t=l("buffer-xor");u.encrypt=function(l,u,t){for(var r,i=new n("");u.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=u.length)){i=n.concat([i,e(l,u,t)]);break}r=l._cache.length,i=n.concat([i,e(l,u.slice(0,r),t)]),u=u.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:46,"buffer-xor":45}],28:[function(l,n,u){(function(l){function n(l,n,u){for(var t,r,i,o=-1,a=8,s=0;++o>o%8,l._prev=e(l._prev,u?r:i);return s}function e(n,u){var e=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([u])]);++t>7;return r}u.encrypt=function(u,e,t){for(var r=e.length,i=new l(r),o=-1;++o=0||!u.umod(l.prime1)||!u.umod(l.prime2);)u=new i(o(n));return u}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46,randombytes:112}],38:[function(l,n,u){(function(l){"use strict";u["RSA-SHA224"]=u.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},u["RSA-SHA256"]=u.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},u["RSA-SHA384"]=u.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},u["RSA-SHA512"]=u.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},u["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},u["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},u.DSA=u["DSA-SHA1"]=u["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},u["DSA-SHA224"]=u["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224",id:new l("","hex")},u["DSA-SHA256"]=u["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},u["DSA-SHA384"]=u["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},u["DSA-SHA512"]=u["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},u["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},u["RSA-RIPEMD160"]=u.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},u["RSA-MD5"]=u.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:46}],39:[function(l,n,u){(function(u){function e(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new e(l)}function i(l){return new t(l)}var o=l("./algos"),a=l("create-hash"),s=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),s(e,c.Writable),e.prototype._write=function(l,n,u){this._hash.update(l),u()},e.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},e.prototype.sign=function(l,n){this.end();var e=this._hash.digest(),t=f(u.concat([this._tag,e]),l,this._hashType,this._signType);return n?t.toString(n):t},s(t,c.Writable),t.prototype._write=function(l,n,u){this._hash.update(l),u()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,e){"string"==typeof n&&(n=new u(n,e)),this.end();var t=this._hash.digest();return h(n,u.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":38,"./sign":41,"./verify":42,buffer:46,"create-hash":51,inherits:93,stream:122}],40:[function(l,n,u){"use strict";u["1.3.132.0.10"]="secp256k1",u["1.3.132.0.33"]="p224",u["1.2.840.10045.3.1.1"]="p192",u["1.2.840.10045.3.1.7"]="p256",u["1.3.132.0.34"]="p384",u["1.3.132.0.35"]="p521"},{}],41:[function(l,n,u){(function(u){function e(l,n,u,e){var i=v(n);if(i.curve){if("ecdsa"!==e)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==e)throw new Error("wrong private key type");return r(l,i,u)}if("rsa"!==e)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),a=[0,1];l.length+a.length+10&&u.ishrn(e),u}function s(l,n){l=a(l,n),l=l.mod(n);var e=new u(l.toArray());if(e.length=n)throw new Error("invalid sig")}var o=l("./curves"),a=l("elliptic"),s=l("parse-asn1"),f=l("bn.js"),c=a.ec;n.exports=e}).call(this,l("buffer").Buffer)},{"./curves":40,"bn.js":16,buffer:46,elliptic:66,"parse-asn1":101}],43:[function(l,n,u){arguments[4][18][0].apply(u,arguments)},{dup:18}],44:[function(l,n,u){(function(n){"use strict";var e=l("buffer"),t=e.Buffer,r=e.SlowBuffer,i=e.kMaxLength||2147483647;u.alloc=function(l,n,u){if("function"==typeof t.alloc)return t.alloc(l,n,u);if("number"==typeof u)throw new TypeError("encoding must not be number");if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var e=u,r=n;void 0===r&&(e=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var a=new t(r,e),s=a.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},u.from=function(l,u,e){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,u,e);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,u);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=u;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=e;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},u.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:46}],45:[function(l,n,u){(function(l){n.exports=function(n,u){for(var e=Math.min(n.length,u.length),t=new l(e),r=0;r1?arguments[1]:"utf8"):a(this,l)):arguments.length>1?new r(l,arguments[1]):new r(l)}function i(l,n){if(l=b(l,n<0?0:0|v(n)),!r.TYPED_ARRAY_SUPPORT)for(var u=0;u>>1;return u&&(l.parent=J),l}function v(l){if(l>=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function y(l,n){if(!(this instanceof y))return new y(l,n);var u=new r(l,n);return delete u.parent,u}function g(l,n){"string"!=typeof l&&(l=""+l);var u=l.length;if(0===u)return 0;for(var e=!1;;)switch(n){case"ascii":case"binary":case"raw":case"raws":return u;case"utf8":case"utf-8":return K(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return Y(l).length;default:if(e)return K(l).length;n=(""+n).toLowerCase(),e=!0}}function m(l,n,u){var e=!1;if(n=0|n,u=void 0===u||u===1/0?this.length:0|u,l||(l="utf8"),n<0&&(n=0),u>this.length&&(u=this.length),u<=n)return"";for(;;)switch(l){case"hex":return R(this,n,u);case"utf8":case"utf-8":return A(this,n,u);case"ascii":return B(this,n,u);case"binary":return j(this,n,u);case"base64":return I(this,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,n,u);default:if(e)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),e=!0}}function _(l,n,u,e){u=Number(u)||0;var t=l.length-u;e?(e=Number(e),e>t&&(e=t)):e=t;var r=n.length;if(r%2!==0)throw new Error("Invalid hex string");e>r/2&&(e=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=u){var a,s,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:a=l[t+1],128===(192&a)&&(c=(31&r)<<6|63&a,c>127&&(i=c));break;case 3:a=l[t+1],s=l[t+2],128===(192&a)&&128===(192&s)&&(c=(15&r)<<12|(63&a)<<6|63&s,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:a=l[t+1],s=l[t+2],f=l[t+3],128===(192&a)&&128===(192&s)&&128===(192&f)&&(c=(15&r)<<18|(63&a)<<12|(63&s)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,e.push(i>>>10&1023|55296),i=56320|1023&i),e.push(i),t+=o}return x(e)}function x(l){var n=l.length;if(n<=$)return String.fromCharCode.apply(String,l);for(var u="",e=0;ee)&&(u=e);for(var t="",r=n;ru)throw new RangeError("Trying to access beyond buffer length")}function P(l,n,u,e,t,i){if(!r.isBuffer(l))throw new TypeError("buffer must be a Buffer instance");if(n>t||nl.length)throw new RangeError("index out of range")}function U(l,n,u,e){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-u,2);t>>8*(e?t:1-t)}function T(l,n,u,e){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-u,4);t>>8*(e?t:3-t)&255}function L(l,n,u,e,t,r){if(n>t||nl.length)throw new RangeError("index out of range");if(u<0)throw new RangeError("index out of range")}function N(l,n,u,e,t){return t||L(l,n,u,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(l,n,u,e,23,4),u+4}function D(l,n,u,e,t){return t||L(l,n,u,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(l,n,u,e,52,8),u+8}function q(l){if(l=z(l).replace(ll,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function z(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function F(l){return l<16?"0"+l.toString(16):l.toString(16)}function K(l,n){n=n||1/0;for(var u,e=l.length,t=null,r=[],i=0;i55295&&u<57344){if(!t){if(u>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===e){(n-=3)>-1&&r.push(239,191,189);continue}t=u;continue}if(u<56320){(n-=3)>-1&&r.push(239,191,189),t=u;continue}u=(t-55296<<10|u-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,u<128){if((n-=1)<0)break;r.push(u)}else if(u<2048){if((n-=2)<0)break;r.push(u>>6|192,63&u|128)}else if(u<65536){if((n-=3)<0)break;r.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return r}function H(l){for(var n=[],u=0;u>8,t=u%256,r.push(t),r.push(e);return r}function Y(l){return X.toByteArray(q(l))}function W(l,n,u,e){for(var t=0;t=n.length||t>=l.length);t++)n[t+u]=l[t];return t}var X=l("base64-js"),Z=l("ieee754"),G=l("isarray");u.Buffer=r,u.SlowBuffer=y,u.INSPECT_MAX_BYTES=50,r.poolSize=8192;var J={};r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:e(),r.TYPED_ARRAY_SUPPORT?(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array):(r.prototype.length=void 0,r.prototype.parent=void 0),r.isBuffer=function(l){return!(null==l||!l._isBuffer)},r.compare=function(l,n){if(!r.isBuffer(l)||!r.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var u=l.length,e=n.length,t=0,i=Math.min(u,e);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},r.prototype.compare=function(l){if(!r.isBuffer(l))throw new TypeError("Argument must be a Buffer");return this===l?0:r.compare(this,l)},r.prototype.indexOf=function(l,n){function u(l,n,u){for(var e=-1,t=0;u+t2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(n<0&&(n=Math.max(this.length+n,0)),"string"==typeof l)return 0===l.length?-1:String.prototype.indexOf.call(this,l,n);if(r.isBuffer(l))return u(this,l,n);if("number"==typeof l)return r.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,l,n):u(this,[l],n);throw new TypeError("val must be string, number or Buffer")},r.prototype.get=function(l){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(l)},r.prototype.set=function(l,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(l,n)},r.prototype.write=function(l,n,u,e){if(void 0===n)e="utf8",u=this.length,n=0;else if(void 0===u&&"string"==typeof n)e=n,u=this.length,n=0;else if(isFinite(n))n=0|n,isFinite(u)?(u=0|u,void 0===e&&(e="utf8")):(e=u,u=void 0);else{var t=e;e=n,n=0|u,u=t}var r=this.length-n;if((void 0===u||u>r)&&(u=r),l.length>0&&(u<0||n<0)||n>this.length)throw new RangeError("attempt to write outside buffer bounds");e||(e="utf8");for(var i=!1;;)switch(e){case"hex":return _(this,l,n,u);case"utf8":case"utf-8":return w(this,l,n,u);case"ascii":return k(this,l,n,u);case"binary":return S(this,l,n,u);case"base64":return E(this,l,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,l,n,u);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),i=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;r.prototype.slice=function(l,n){var u=this.length;l=~~l,n=void 0===n?u:~~n,l<0?(l+=u,l<0&&(l=0)):l>u&&(l=u),n<0?(n+=u,n<0&&(n=0)):n>u&&(n=u),n0&&(t*=256);)e+=this[l+--n]*t;return e},r.prototype.readUInt8=function(l,n){return n||C(l,1,this.length),this[l]},r.prototype.readUInt16LE=function(l,n){return n||C(l,2,this.length),this[l]|this[l+1]<<8},r.prototype.readUInt16BE=function(l,n){return n||C(l,2,this.length),this[l]<<8|this[l+1]},r.prototype.readUInt32LE=function(l,n){return n||C(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},r.prototype.readUInt32BE=function(l,n){return n||C(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},r.prototype.readIntLE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=this[l],t=1,r=0;++r=t&&(e-=Math.pow(2,8*n)),e},r.prototype.readIntBE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=n,t=1,r=this[l+--e];e>0&&(t*=256);)r+=this[l+--e]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},r.prototype.readInt8=function(l,n){return n||C(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},r.prototype.readInt16LE=function(l,n){n||C(l,2,this.length);var u=this[l]|this[l+1]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt16BE=function(l,n){n||C(l,2,this.length);var u=this[l+1]|this[l]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt32LE=function(l,n){return n||C(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},r.prototype.readInt32BE=function(l,n){return n||C(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},r.prototype.readFloatLE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!0,23,4)},r.prototype.readFloatBE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!1,23,4)},r.prototype.readDoubleLE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!0,52,8)},r.prototype.readDoubleBE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!1,52,8)},r.prototype.writeUIntLE=function(l,n,u,e){l=+l,n=0|n,u=0|u,e||P(this,l,n,u,Math.pow(2,8*u),0);var t=1,r=0;for(this[n]=255&l;++r=0&&(r*=256);)this[n+t]=l/r&255;return n+u},r.prototype.writeUInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,255,0),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},r.prototype.writeUInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeUInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeUInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):T(this,l,n,!0),n+4},r.prototype.writeUInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeIntLE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=0,i=1,o=l<0?1:0;for(this[n]=255&l;++r>0)-o&255;return n+u},r.prototype.writeIntBE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=u-1,i=1,o=l<0?1:0;for(this[n+r]=255&l;--r>=0&&(i*=256);)this[n+r]=(l/i>>0)-o&255;return n+u},r.prototype.writeInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,127,-128),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},r.prototype.writeInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):T(this,l,n,!0),n+4},r.prototype.writeInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeFloatLE=function(l,n,u){return N(this,l,n,!0,u)},r.prototype.writeFloatBE=function(l,n,u){return N(this,l,n,!1,u)},r.prototype.writeDoubleLE=function(l,n,u){return D(this,l,n,!0,u)},r.prototype.writeDoubleBE=function(l,n,u){return D(this,l,n,!1,u)},r.prototype.copy=function(l,n,u,e){if(u||(u=0),e||0===e||(e=this.length),n>=l.length&&(n=l.length),n||(n=0),e>0&&e=this.length)throw new RangeError("sourceStart out of bounds");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),l.length-n=0;t--)l[t+n]=this[t+u];else if(i<1e3||!r.TYPED_ARRAY_SUPPORT)for(t=0;t=this.length)throw new RangeError("start out of bounds");if(u<0||u>this.length)throw new RangeError("end out of bounds");var e;if("number"==typeof l)for(e=n;e>5]|=128<>>9<<4)+14]=n;for(var u=1732584193,e=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(u>>16);return e<<16|65535&u}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,e,16)}},{"./helpers":52}],54:[function(l,n,u){(function(u){"use strict";function e(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new u(n));var e="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>e?n=t(l).update(n).digest():n.length0;e--)n+=this._buffer(l,n),u+=this._flushBuffer(t,u);return n+=this._buffer(l,n),t},e.prototype["final"]=function(l){var n;l&&(n=this.update(l));var u;return u="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(u):u},e.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];u=a.r28shl(u,i),e=a.r28shl(e,i),a.pc2(u,e,l.keys,t)}},t.prototype._update=function(l,n,u,e){var t=this._desState,r=a.readUInt32BE(l,n),i=a.readUInt32BE(l,n+4);a.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],a.writeUInt32BE(u,r,e),a.writeUInt32BE(u,i,e+4)},t.prototype._pad=function(l,n){for(var u=l.length-n,e=n;e>>0,r=d}a.rip(i,r,e,t)},t.prototype._decrypt=function(l,n,u,e,t){for(var r=u,i=n,o=l.keys.length-2;o>=0;o-=2){var s=l.keys[o],f=l.keys[o+1];a.expand(r,l.tmp,0),s^=l.tmp[0],f^=l.tmp[1];var c=a.substitute(s,f),h=a.permute(c),d=r;r=(i^h)>>>0,i=d}a.rip(r,i,e,t)}},{"../des":56,inherits:93,"minimalistic-assert":96}],60:[function(l,n,u){"use strict";function e(l,n){r.equal(n.length,24,"Invalid key length");var u=n.slice(0,8),e=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[s.create({type:"encrypt",key:u}),s.create({type:"decrypt",key:e}),s.create({type:"encrypt",key:t})]:this.ciphers=[s.create({type:"decrypt",key:t}),s.create({type:"encrypt",key:e}),s.create({type:"decrypt",key:u})]}function t(l){a.call(this,l);var n=new e(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),a=o.Cipher,s=o.DES;i(t,a),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,u,e){var t=this._edeState;t.ciphers[0]._update(l,n,u,e),t.ciphers[1]._update(u,e,u,e),t.ciphers[2]._update(u,e,u,e)},t.prototype._pad=s.prototype._pad,t.prototype._unpad=s.prototype._unpad},{"../des":56,inherits:93,"minimalistic-assert":96}],61:[function(l,n,u){"use strict";u.readUInt32BE=function(l,n){var u=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return u>>>0},u.writeUInt32BE=function(l,n,u){l[0+u]=n>>>24,l[1+u]=n>>>16&255,l[2+u]=n>>>8&255,l[3+u]=255&n},u.ip=function(l,n,u,e){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}u[e+0]=t>>>0,u[e+1]=r>>>0},u.rip=function(l,n,u,e){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.pc1=function(l,n,u,e){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.r28shl=function(l,n){return l<>>28-n};var e=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];u.pc2=function(l,n,u,t){for(var r=0,i=0,o=e.length>>>1,a=0;a>>e[a]&1;for(var a=o;a>>e[a]&1;u[t+0]=r>>>0,u[t+1]=i>>>0},u.expand=function(l,n,u){var e=0,t=0;e=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)e<<=6,e|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[u+0]=e>>>0,n[u+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];u.substitute=function(l,n){for(var u=0,e=0;e<4;e++){var r=l>>>18-6*e&63,i=t[64*e+r];u<<=4,u|=i}for(var e=0;e<4;e++){var r=n>>>18-6*e&63,i=t[256+64*e+r];u<<=4,u|=i}return u>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];u.permute=function(l){for(var n=0,u=0;u>>r[u]&1;return n>>>0},u.padSplit=function(l,n,u){for(var e=l.toString(2);e.lengthl;)u.ishrn(1);if(u.isEven()&&u.iadd(h),u.testn(1)||u.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;u.mod(b).cmp(v);)u.iadd(g)}else for(;u.mod(s).cmp(y);)u.iadd(g);if(e=u.shrn(1),t(e)&&t(u)&&r(e)&&r(u)&&c.test(e)&&c.test(u))return u}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var a=l("bn.js"),s=new a(24),f=l("miller-rabin"),c=new f,h=new a(1),d=new a(2),p=new a(5),b=(new a(16),new a(8),new a(10)),v=new a(3),y=(new a(7),new a(11)),g=new a(4),m=(new a(12),null)},{"bn.js":16,"miller-rabin":95,randombytes:112}],65:[function(l,n,u){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],66:[function(l,n,u){"use strict";var e=u;e.version=l("../package.json").version,e.utils=l("./elliptic/utils"),e.rand=l("brorand"),e.hmacDRBG=l("./elliptic/hmac-drbg"),e.curve=l("./elliptic/curve"),e.curves=l("./elliptic/curves"),e.ec=l("./elliptic/ec"),e.eddsa=l("./elliptic/eddsa")},{"../package.json":82,"./elliptic/curve":69,"./elliptic/curves":72,"./elliptic/ec":73,"./elliptic/eddsa":76,"./elliptic/hmac-drbg":79,"./elliptic/utils":81,brorand:17}],67:[function(l,n,u){"use strict";function e(l,n){this.type=l,this.p=new r(n.p,16),this.red=n.prime?r.red(n.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=n.n&&new r(n.n,16),this.g=n.g&&this.pointFromJSON(n.g,n.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var u=this.n&&this.p.div(this.n);!u||u.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function t(l,n){this.curve=l,this.type=n,this.precomputed=null}var r=l("bn.js"),i=l("../../elliptic"),o=i.utils,a=o.getNAF,s=o.getJSF,f=o.assert;n.exports=e,e.prototype.point=function(){throw new Error("Not implemented")},e.prototype.validate=function(){throw new Error("Not implemented")},e.prototype._fixedNafMul=function(l,n){f(l.precomputed);var u=l._getDoubles(),e=a(n,1),t=(1<=i;n--)o=(o<<1)+e[n];r.push(o)}for(var s=this.jpoint(null,null,null),c=this.jpoint(null,null,null),h=t;h>0;h--){for(var i=0;i=0;o--){for(var n=0;o>=0&&0===r[o];o--)n++;if(o>=0&&n++,i=i.dblp(n),o<0)break;var s=r[o];f(0!==s),i="affine"===l.type?s>0?i.mixedAdd(t[s-1>>1]):i.mixedAdd(t[-s-1>>1].neg()):s>0?i.add(t[s-1>>1]):i.add(t[-s-1>>1].neg())}return"affine"===l.type?i.toP():i},e.prototype._wnafMulAdd=function(l,n,u,e,t){for(var r=this._wnafT1,i=this._wnafT2,o=this._wnafT3,f=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===r[p]&&1===r[b]){var v=[n[p],null,null,n[b]];0===n[p].y.cmp(n[b].y)?(v[1]=n[p].add(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg())):0===n[p].y.cmp(n[b].y.redNeg())?(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].add(n[b].neg())):(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=s(u[p],u[b]);f=Math.max(g[0].length,f),o[p]=new Array(f),o[b]=new Array(f);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var M=!0,m=0;m=0&&E++,k=k.dblp(E),c<0)break;for(var m=0;m0?h=i[m][I-1>>1]:I<0&&(h=i[m][-I-1>>1].neg()),k="affine"===h.type?k.mixedAdd(h):k.add(h))}}for(var c=0;c=Math.ceil((l.bitLength()+1)/n.step)},t.prototype._getDoubles=function(l,n){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var u=[this],e=this,t=0;t":""},t.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},t.prototype._extDbl=function(){var l=this.x.redSqr(),n=this.y.redSqr(),u=this.z.redSqr();u=u.redIAdd(u);var e=this.curve._mulA(l),t=this.x.redAdd(this.y).redSqr().redISub(l).redISub(n),r=e.redAdd(n),i=r.redSub(u),o=e.redSub(n),a=t.redMul(i),s=r.redMul(o),f=t.redMul(o),c=i.redMul(r);return this.curve.point(a,s,c,f)},t.prototype._projDbl=function(){var l,n,u,e=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),r=this.y.redSqr();if(this.curve.twisted){var i=this.curve._mulA(t),o=i.redAdd(r);if(this.zOne)l=e.redSub(t).redSub(r).redMul(o.redSub(this.curve.two)),n=o.redMul(i.redSub(r)),u=o.redSqr().redSub(o).redSub(o);else{var a=this.z.redSqr(),s=o.redSub(a).redISub(a);l=e.redSub(t).redISub(r).redMul(s),n=o.redMul(i.redSub(r)),u=o.redMul(s)}}else{var i=t.redAdd(r),a=this.curve._mulC(this.c.redMul(this.z)).redSqr(),s=i.redSub(a).redSub(a);l=this.curve._mulC(e.redISub(i)).redMul(s),n=this.curve._mulC(i).redMul(t.redISub(r)),u=i.redMul(s)}return this.curve.point(l,n,u)},t.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},t.prototype._extAdd=function(l){var n=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),u=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),e=this.t.redMul(this.curve.dd).redMul(l.t),t=this.z.redMul(l.z.redAdd(l.z)),r=u.redSub(n),i=t.redSub(e),o=t.redAdd(e),a=u.redAdd(n),s=r.redMul(i),f=o.redMul(a),c=r.redMul(a),h=i.redMul(o);return this.curve.point(s,f,h,c)},t.prototype._projAdd=function(l){var n,u,e=this.z.redMul(l.z),t=e.redSqr(),r=this.x.redMul(l.x),i=this.y.redMul(l.y),o=this.curve.d.redMul(r).redMul(i),a=t.redSub(o),s=t.redAdd(o),f=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(r).redISub(i),c=e.redMul(a).redMul(f);return this.curve.twisted?(n=e.redMul(s).redMul(i.redSub(this.curve._mulA(r))),u=a.redMul(s)):(n=e.redMul(s).redMul(i.redSub(r)),u=this.curve._mulC(a).redMul(s)),this.curve.point(c,n,u)},t.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},t.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!1)},t.prototype.jmulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!0)},t.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},t.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()},t.prototype.getY=function(){return this.normalize(),this.y.fromRed()},t.prototype.eq=function(l){return this===l||0===this.getX().cmp(l.getX())&&0===this.getY().cmp(l.getY())},t.prototype.eqXToP=function(l){var n=l.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(n))return!0;for(var u=l.clone(),e=this.curve.redN.redMul(this.z);;){if(u.iadd(this.curve.n),u.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(e),0===this.x.cmp(n))return!0}return!1},t.prototype.toP=t.prototype.normalize,t.prototype.mixedAdd=t.prototype.add},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],69:[function(l,n,u){"use strict";var e=u;e.base=l("./base"),e["short"]=l("./short"),e.mont=l("./mont"),e.edwards=l("./edwards")},{"./base":67,"./edwards":68,"./mont":70,"./short":71}],70:[function(l,n,u){"use strict";function e(l){a.call(this,"mont",l),this.a=new i(l.a,16).toRed(this.red), +this.b=new i(l.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function t(l,n,u){a.BasePoint.call(this,l,"projective"),null===n&&null===u?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(n,16),this.z=new i(u,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var r=l("../curve"),i=l("bn.js"),o=l("inherits"),a=r.base,s=l("../../elliptic"),f=s.utils;o(e,a),n.exports=e,e.prototype.validate=function(l){var n=l.normalize().x,u=n.redSqr(),e=u.redMul(n).redAdd(u.redMul(this.a)).redAdd(n),t=e.redSqrt();return 0===t.redSqr().cmp(e)},o(t,a.BasePoint),e.prototype.decodePoint=function(l,n){return this.point(f.toArray(l,n),1)},e.prototype.point=function(l,n){return new t(this,l,n)},e.prototype.pointFromJSON=function(l){return t.fromJSON(this,l)},t.prototype.precompute=function(){},t.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},t.fromJSON=function(l,n){return new t(l,n[0],n[1]||l.one)},t.prototype.inspect=function(){return this.isInfinity()?"":""},t.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},t.prototype.dbl=function(){var l=this.x.redAdd(this.z),n=l.redSqr(),u=this.x.redSub(this.z),e=u.redSqr(),t=n.redSub(e),r=n.redMul(e),i=t.redMul(e.redAdd(this.curve.a24.redMul(t)));return this.curve.point(r,i)},t.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.diffAdd=function(l,n){var u=this.x.redAdd(this.z),e=this.x.redSub(this.z),t=l.x.redAdd(l.z),r=l.x.redSub(l.z),i=r.redMul(u),o=t.redMul(e),a=n.z.redMul(i.redAdd(o).redSqr()),s=n.x.redMul(i.redISub(o).redSqr());return this.curve.point(a,s)},t.prototype.mul=function(l){for(var n=l.clone(),u=this,e=this.curve.point(null,null),t=this,r=[];0!==n.cmpn(0);n.iushrn(1))r.push(n.andln(1));for(var i=r.length-1;i>=0;i--)0===r[i]?(u=u.diffAdd(e,t),e=e.dbl()):(e=u.diffAdd(e,t),u=u.dbl());return e},t.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.eq=function(l){return 0===this.getX().cmp(l.getX())},t.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],71:[function(l,n,u){"use strict";function e(l){f.call(this,"short",l),this.a=new a(l.a,16).toRed(this.red),this.b=new a(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function t(l,n,u,e){f.BasePoint.call(this,l,"affine"),null===n&&null===u?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(n,16),this.y=new a(u,16),e&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function r(l,n,u,e){f.BasePoint.call(this,l,"jacobian"),null===n&&null===u&&null===e?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(n,16),this.y=new a(u,16),this.z=new a(e,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var i=l("../curve"),o=l("../../elliptic"),a=l("bn.js"),s=l("inherits"),f=i.base,c=o.utils.assert;s(e,f),n.exports=e,e.prototype._getEndomorphism=function(l){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var n,u;if(l.beta)n=new a(l.beta,16).toRed(this.red);else{var e=this._getEndoRoots(this.p);n=e[0].cmp(e[1])<0?e[0]:e[1],n=n.toRed(this.red)}if(l.lambda)u=new a(l.lambda,16);else{var t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(n))?u=t[0]:(u=t[1],c(0===this.g.mul(u).x.cmp(this.g.x.redMul(n))))}var r;return r=l.basis?l.basis.map(function(l){return{a:new a(l.a,16),b:new a(l.b,16)}}):this._getEndoBasis(u),{beta:n,lambda:u,basis:r}}},e.prototype._getEndoRoots=function(l){var n=l===this.p?this.red:a.mont(l),u=new a(2).toRed(n).redInvm(),e=u.redNeg(),t=new a(3).toRed(n).redNeg().redSqrt().redMul(u),r=e.redAdd(t).fromRed(),i=e.redSub(t).fromRed();return[r,i]},e.prototype._getEndoBasis=function(l){for(var n,u,e,t,r,i,o,s,f,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=l,d=this.n.clone(),p=new a(1),b=new a(0),v=new a(0),y=new a(1),g=0;0!==h.cmpn(0);){var m=d.div(h);s=d.sub(m.mul(h)),f=v.sub(m.mul(p));var _=y.sub(m.mul(b));if(!e&&s.cmp(c)<0)n=o.neg(),u=p,e=s.neg(),t=f;else if(e&&2===++g)break;o=s,d=h,h=s,v=p,p=f,y=b,b=_}r=s.neg(),i=f;var w=e.sqr().add(t.sqr()),k=r.sqr().add(i.sqr());return k.cmp(w)>=0&&(r=n,i=u),e.negative&&(e=e.neg(),t=t.neg()),r.negative&&(r=r.neg(),i=i.neg()),[{a:e,b:t},{a:r,b:i}]},e.prototype._endoSplit=function(l){var n=this.endo.basis,u=n[0],e=n[1],t=e.b.mul(l).divRound(this.n),r=u.b.neg().mul(l).divRound(this.n),i=t.mul(u.a),o=r.mul(e.a),a=t.mul(u.b),s=r.mul(e.b),f=l.sub(i).sub(o),c=a.add(s).neg();return{k1:f,k2:c}},e.prototype.pointFromX=function(l,n){l=new a(l,16),l.red||(l=l.toRed(this.red));var u=l.redSqr().redMul(l).redIAdd(l.redMul(this.a)).redIAdd(this.b),e=u.redSqrt();if(0!==e.redSqr().redSub(u).cmp(this.zero))throw new Error("invalid point");var t=e.fromRed().isOdd();return(n&&!t||!n&&t)&&(e=e.redNeg()),this.point(l,e)},e.prototype.validate=function(l){if(l.inf)return!0;var n=l.x,u=l.y,e=this.a.redMul(n),t=n.redSqr().redMul(n).redIAdd(e).redIAdd(this.b);return 0===u.redSqr().redISub(t).cmpn(0)},e.prototype._endoWnafMulAdd=function(l,n,u){for(var e=this._endoWnafT1,t=this._endoWnafT2,r=0;r":""},t.prototype.isInfinity=function(){return this.inf},t.prototype.add=function(l){if(this.inf)return l;if(l.inf)return this;if(this.eq(l))return this.dbl();if(this.neg().eq(l))return this.curve.point(null,null);if(0===this.x.cmp(l.x))return this.curve.point(null,null);var n=this.y.redSub(l.y);0!==n.cmpn(0)&&(n=n.redMul(this.x.redSub(l.x).redInvm()));var u=n.redSqr().redISub(this.x).redISub(l.x),e=n.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,e)},t.prototype.dbl=function(){if(this.inf)return this;var l=this.y.redAdd(this.y);if(0===l.cmpn(0))return this.curve.point(null,null);var n=this.curve.a,u=this.x.redSqr(),e=l.redInvm(),t=u.redAdd(u).redIAdd(u).redIAdd(n).redMul(e),r=t.redSqr().redISub(this.x.redAdd(this.x)),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},t.prototype.getX=function(){return this.x.fromRed()},t.prototype.getY=function(){return this.y.fromRed()},t.prototype.mul=function(l){return l=new a(l,16),this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve.endo?this.curve._endoWnafMulAdd([this],[l]):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t):this.curve._wnafMulAdd(1,e,t,2)},t.prototype.jmulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t,!0):this.curve._wnafMulAdd(1,e,t,2,!0)},t.prototype.eq=function(l){return this===l||this.inf===l.inf&&(this.inf||0===this.x.cmp(l.x)&&0===this.y.cmp(l.y))},t.prototype.neg=function(l){if(this.inf)return this;var n=this.curve.point(this.x,this.y.redNeg());if(l&&this.precomputed){var u=this.precomputed,e=function(l){return l.neg()};n.precomputed={naf:u.naf&&{wnd:u.naf.wnd,points:u.naf.points.map(e)},doubles:u.doubles&&{step:u.doubles.step,points:u.doubles.points.map(e)}}}return n},t.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var l=this.curve.jpoint(this.x,this.y,this.curve.one);return l},s(r,f.BasePoint),e.prototype.jpoint=function(l,n,u){return new r(this,l,n,u)},r.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var l=this.z.redInvm(),n=l.redSqr(),u=this.x.redMul(n),e=this.y.redMul(n).redMul(l);return this.curve.point(u,e)},r.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},r.prototype.add=function(l){if(this.isInfinity())return l;if(l.isInfinity())return this;var n=l.z.redSqr(),u=this.z.redSqr(),e=this.x.redMul(n),t=l.x.redMul(u),r=this.y.redMul(n.redMul(l.z)),i=l.y.redMul(u.redMul(this.z)),o=e.redSub(t),a=r.redSub(i);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=o.redSqr(),f=s.redMul(o),c=e.redMul(s),h=a.redSqr().redIAdd(f).redISub(c).redISub(c),d=a.redMul(c.redISub(h)).redISub(r.redMul(f)),p=this.z.redMul(l.z).redMul(o);return this.curve.jpoint(h,d,p)},r.prototype.mixedAdd=function(l){if(this.isInfinity())return l.toJ();if(l.isInfinity())return this;var n=this.z.redSqr(),u=this.x,e=l.x.redMul(n),t=this.y,r=l.y.redMul(n).redMul(this.z),i=u.redSub(e),o=t.redSub(r);if(0===i.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=i.redSqr(),s=a.redMul(i),f=u.redMul(a),c=o.redSqr().redIAdd(s).redISub(f).redISub(f),h=o.redMul(f.redISub(c)).redISub(t.redMul(s)),d=this.z.redMul(i);return this.curve.jpoint(c,h,d)},r.prototype.dblp=function(l){if(0===l)return this;if(this.isInfinity())return this;if(!l)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var n=this,u=0;u=0)return!1;if(u.redIAdd(t),0===this.x.cmp(u))return!0}return!1},r.prototype.inspect=function(){return this.isInfinity()?"":""},r.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],72:[function(l,n,u){"use strict";function e(l){"short"===l.type?this.curve=new o.curve["short"](l):"edwards"===l.type?this.curve=new o.curve.edwards(l):this.curve=new o.curve.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function t(l,n){Object.defineProperty(r,l,{configurable:!0,enumerable:!0,get:function(){var u=new e(n);return Object.defineProperty(r,l,{configurable:!0,enumerable:!0,value:u}),u}})}var r=u,i=l("hash.js"),o=l("../elliptic"),a=o.utils.assert;r.PresetCurve=e,t("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),t("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),t("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),t("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),t("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),t("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),t("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var s;try{s=l("./precomputed/secp256k1")}catch(f){s=void 0}t("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",s]})},{"../elliptic":66,"./precomputed/secp256k1":80,"hash.js":85}],73:[function(l,n,u){"use strict";function e(l){return this instanceof e?("string"==typeof l&&(o(r.curves.hasOwnProperty(l),"Unknown curve "+l),l=r.curves[l]),l instanceof r.curves.PresetCurve&&(l={curve:l}),this.curve=l.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=l.curve.g,this.g.precompute(l.curve.n.bitLength()+1),void(this.hash=l.hash||l.curve.hash)):new e(l)}var t=l("bn.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=l("./key"),s=l("./signature");n.exports=e,e.prototype.keyPair=function(l){return new a(this,l)},e.prototype.keyFromPrivate=function(l,n){return a.fromPrivate(this,l,n)},e.prototype.keyFromPublic=function(l,n){return a.fromPublic(this,l,n)},e.prototype.genKeyPair=function(l){l||(l={});for(var n=new r.hmacDRBG({hash:this.hash,pers:l.pers,entropy:l.entropy||r.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),u=this.n.byteLength(),e=this.n.sub(new t(2));;){var i=new t(n.generate(u));if(!(i.cmp(e)>0))return i.iaddn(1),this.keyFromPrivate(i)}},e.prototype._truncateToN=function(l,n){var u=8*l.byteLength()-this.n.bitLength();return u>0&&(l=l.ushrn(u)),!n&&l.cmp(this.n)>=0?l.sub(this.n):l},e.prototype.sign=function(l,n,u,e){"object"==typeof u&&(e=u,u=null),e||(e={}),n=this.keyFromPrivate(n,u),l=this._truncateToN(new t(l,16));for(var i=this.n.byteLength(),o=n.getPrivate().toArray("be",i),a=l.toArray("be",i),f=new r.hmacDRBG({hash:this.hash,entropy:o,nonce:a,pers:e.pers,persEnc:e.persEnc}),c=this.n.sub(new t(1)),h=0;!0;h++){var d=e.k?e.k(h):new t(f.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(c)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=d.invm(this.n).mul(v.mul(n.getPrivate()).iadd(l));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return e.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new s({r:v,s:y,recoveryParam:g})}}}}}},e.prototype.verify=function(l,n,u,e){l=this._truncateToN(new t(l,16)),u=this.keyFromPublic(u,e),n=new s(n,"hex");var r=n.r,i=n.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var o=i.invm(this.n),a=o.mul(l).umod(this.n),f=o.mul(r).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(a,u.getPublic(),f);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(r)}var c=this.g.jmulAdd(a,u.getPublic(),f);return!c.isInfinity()&&c.eqXToP(r)},e.prototype.recoverPubKey=function(l,n,u,e){o((3&u)===u,"The recovery param is more than two bits"),n=new s(n,e);var r=this.n,i=new t(l),a=n.r,f=n.s,c=1&u,h=u>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=r.sub(i),p=n.r.invm(r);return this.g.mulAdd(d,a,f).mul(p)},e.prototype.getKeyRecoveryParam=function(l,n,u,e){if(n=new s(n,e),null!==n.recoveryParam)return n.recoveryParam;for(var t=0;t<4;t++){var r;try{r=this.recoverPubKey(l,n,t)}catch(l){continue}if(r.eq(u))return t}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":66,"./key":74,"./signature":75,"bn.js":16}],74:[function(l,n,u){"use strict";function e(l,n){this.ec=l,this.priv=null,this.pub=null,n.priv&&this._importPrivate(n.priv,n.privEnc),n.pub&&this._importPublic(n.pub,n.pubEnc)}var t=l("bn.js");n.exports=e,e.fromPublic=function(l,n,u){return n instanceof e?n:new e(l,{pub:n,pubEnc:u})},e.fromPrivate=function(l,n,u){return n instanceof e?n:new e(l,{priv:n,privEnc:u})},e.prototype.validate=function(){var l=this.getPublic();return l.isInfinity()?{result:!1,reason:"Invalid public key"}:l.validate()?l.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},e.prototype.getPublic=function(l,n){return"string"==typeof l&&(n=l,l=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),n?this.pub.encode(n,l):this.pub},e.prototype.getPrivate=function(l){return"hex"===l?this.priv.toString(16,2):this.priv},e.prototype._importPrivate=function(l,n){this.priv=new t(l,n||16),this.priv=this.priv.umod(this.ec.curve.n)},e.prototype._importPublic=function(l,n){return l.x||l.y?void(this.pub=this.ec.curve.point(l.x,l.y)):void(this.pub=this.ec.curve.decodePoint(l,n))},e.prototype.derive=function(l){return l.mul(this.priv).getX()},e.prototype.sign=function(l,n,u){return this.ec.sign(l,this,n,u)},e.prototype.verify=function(l,n){return this.ec.verify(l,n,this)},e.prototype.inspect=function(){return""}},{"bn.js":16}],75:[function(l,n,u){"use strict";function e(l,n){return l instanceof e?l:void(this._importDER(l,n)||(c(l.r&&l.s,"Signature without r or s"),this.r=new a(l.r,16),this.s=new a(l.s,16),void 0===l.recoveryParam?this.recoveryParam=null:this.recoveryParam=l.recoveryParam))}function t(){this.place=0}function r(l,n){var u=l[n.place++];if(!(128&u))return u;for(var e=15&u,t=0,r=0,i=n.place;r>>3);for(l.push(128|u);--u;)l.push(n>>>(u<<3)&255);l.push(n)}var a=l("bn.js"),s=l("../../elliptic"),f=s.utils,c=f.assert;n.exports=e,e.prototype._importDER=function(l,n){l=f.toArray(l,n);var u=new t;if(48!==l[u.place++])return!1;var e=r(l,u);if(e+u.place!==l.length)return!1;if(2!==l[u.place++])return!1;var i=r(l,u),o=l.slice(u.place,i+u.place);if(u.place+=i,2!==l[u.place++])return!1;var s=r(l,u);if(l.length!==s+u.place)return!1;var c=l.slice(u.place,s+u.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new a(o),this.s=new a(c),this.recoveryParam=null,!0},e.prototype.toDER=function(l){var n=this.r.toArray(),u=this.s.toArray();for(128&n[0]&&(n=[0].concat(n)),128&u[0]&&(u=[0].concat(u)),n=i(n),u=i(u);!(u[0]||128&u[1]);)u=u.slice(1);var e=[2];o(e,n.length),e=e.concat(n),e.push(2),o(e,u.length);var t=e.concat(u),r=[48];return o(r,t.length),r=r.concat(t),f.encode(r,l)}},{"../../elliptic":66,"bn.js":16}],76:[function(l,n,u){"use strict";function e(l){if(o("ed25519"===l,"only tested with ed25519 so far"),!(this instanceof e))return new e(l);var l=r.curves[l].curve;this.curve=l,this.g=l.g,this.g.precompute(l.n.bitLength()+1),this.pointClass=l.point().constructor,this.encodingLength=Math.ceil(l.n.bitLength()/8),this.hash=t.sha512}var t=l("hash.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=i.parseBytes,s=l("./key"),f=l("./signature");n.exports=e,e.prototype.sign=function(l,n){l=a(l);var u=this.keyFromSecret(n),e=this.hashInt(u.messagePrefix(),l),t=this.g.mul(e),r=this.encodePoint(t),i=this.hashInt(r,u.pubBytes(),l).mul(u.priv()),o=e.add(i).umod(this.curve.n);return this.makeSignature({R:t,S:o,Rencoded:r})},e.prototype.verify=function(l,n,u){l=a(l),n=this.makeSignature(n);var e=this.keyFromPublic(u),t=this.hashInt(n.Rencoded(),e.pubBytes(),l),r=this.g.mul(n.S()),i=n.R().add(e.pub().mul(t));return i.eq(r)},e.prototype.hashInt=function(){for(var l=this.hash(),n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,u,t)}var t=l("hash.js"),r=l("../elliptic"),i=r.utils,o=i.assert;n.exports=e,e.prototype._init=function(l,n,u){var e=l.concat(n).concat(u);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(u||[])),this.reseed=1},e.prototype.generate=function(l,n,u,e){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(e=u,u=n,n=null),u&&(u=i.toArray(u,e),this._update(u));for(var t=[];t.length>8,i=255&t;r?u.push(r,i):u.push(i)}return u}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",u=0;u=0;){var r;if(t.isOdd()){var i=t.andln(e-1);r=i>(e>>1)-1?(e>>1)-i:i,t.isubn(r)}else r=0;u.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(e-1)?n+1:1,a=1;a0||n.cmpn(-t)>0;){var r=l.andln(3)+e&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var a=l.andln(7)+e&7;o=3!==a&&5!==a||2!==i?r:-r}u[0].push(o);var s;if(0===(1&i))s=0;else{var a=n.andln(7)+t&7;s=3!==a&&5!==a||2!==r?i:-i}u[1].push(s),2*e===o+1&&(e=1-e),2*t===s+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return u}function a(l,n,u){var e="_"+n;l.prototype[n]=function(){return void 0!==this[e]?this[e]:this[e]=u.call(this)}}function s(l){return"string"==typeof l?c.toArray(l,"hex"):l}function f(l){return new h(l,"hex","le")}var c=u,h=l("bn.js");c.assert=function(l,n){if(!l)throw new Error(n||"Assertion failed")},c.toArray=e,c.zero2=t,c.toHex=r,c.encode=function(l,n){return"hex"===n?r(l):l},c.getNAF=i,c.getJSF=o,c.cachedProperty=a,c.parseBytes=s,c.intFromLE=f},{"bn.js":16}],82:[function(l,n,u){n.exports={_args:[["elliptic@^6.0.0","/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.3.1",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"6.0.0",_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.1.tgz_1465921413402_0.5202967382501811"},_npmUser:{email:"fedor@indutny.com",name:"indutny"},_npmVersion:"3.8.6",_phantomChildren:{},_requested:{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz",_shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign",author:{email:"fedor@indutny.com",name:"Fedor Indutny"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz"},files:["lib"],gitHead:"c53f5cf3d832c0073eb4a4ed423a464cbce68f3e",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{email:"fedor@indutny.com",name:"indutny"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.3.1"}},{}],83:[function(l,n,u){function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},e.prototype.emit=function(l){var n,u,e,r,a,s;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;throw TypeError('Uncaught, unspecified "error" event.')}if(u=this._events[l],o(u))return!1;if(t(u))switch(arguments.length){case 1:u.call(this);break;case 2:u.call(this,arguments[1]);break;case 3:u.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,r=new Array(e-1),a=1;a0&&this._events[l].length>u&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(l,n){function u(){this.removeListener(l,u),e||(e=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var e=!1;return u.listener=n,this.on(l,u),this},e.prototype.removeListener=function(l,n){var u,e,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(u=this._events[l],r=u.length,e=-1,u===n||t(u.listener)&&u.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(u)){for(o=r;o-- >0;)if(u[o]===n||u[o].listener&&u[o].listener===n){e=o;break}if(e<0)return this;1===u.length?(u.length=0,delete this._events[l]):u.splice(e,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},e.prototype.removeAllListeners=function(l){var n,u;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(u=this._events[l],t(u))this.removeListener(l,u);else for(;u.length;)this.removeListener(l,u[u.length-1]);return delete this._events[l],this},e.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},e.listenerCount=function(l,n){var u;return u=l._events&&l._events[n]?t(l._events[n])?1:l._events[n].length:0}},{}],84:[function(l,n,u){(function(u){function e(l,n,e,r){u.isBuffer(l)||(l=new u(l,"binary")),n&&!u.isBuffer(n)&&(n=new u(n,"binary")),e/=8,r=r||0;for(var i,o,a=0,s=0,f=new u(e),c=new u(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(u.concat(d)),d=[],o=0,e>0)for(;;){if(0===e)break;if(o===i.length)break;f[a++]=i[o],e--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[s++]=i[o],r--,o++}if(0===e&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var u=l.length%this._delta8;this.pending=l.slice(l.length-u,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-u,this.endian);for(var e=0;e>>24&255,e[t++]=l>>>16&255,e[t++]=l>>>8&255,e[t++]=255&l}else{e[t++]=255&l,e[t++]=l>>>8&255,e[t++]=l>>>16&255,e[t++]=l>>>24&255,e[t++]=0,e[t++]=0,e[t++]=0,e[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,u,e){return 0===l?a(n,u,e):1===l||3===l?f(n,u,e):2===l?s(n,u,e):void 0}function v(l,n,u,e,t,r){var i=l&u^~l&t;return i<0&&(i+=4294967296),i}function y(l,n,u,e,t,r){var i=n&e^~n&r;return i<0&&(i+=4294967296),i}function g(l,n,u,e,t,r){var i=l&u^l&t^u&t;return i<0&&(i+=4294967296),i}function m(l,n,u,e,t,r){var i=n&e^n&r^e&r;return i<0&&(i+=4294967296),i}function _(l,n){var u=T(l,n,28),e=T(n,l,2),t=T(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function w(l,n){var u=L(l,n,28),e=L(n,l,2),t=L(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function k(l,n){var u=T(l,n,14),e=T(l,n,18),t=T(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function S(l,n){var u=L(l,n,14),e=L(l,n,18),t=L(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function E(l,n){var u=T(l,n,1),e=T(l,n,8),t=N(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function M(l,n){var u=L(l,n,1),e=L(l,n,8),t=D(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function I(l,n){var u=T(l,n,19),e=T(n,l,29),t=N(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}function A(l,n){var u=L(l,n,19),e=L(n,l,29),t=D(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}var x=l("../hash"),B=x.utils,j=B.assert,R=B.rotr32,O=B.rotl32,C=B.sum32,P=B.sum32_4,U=B.sum32_5,T=B.rotr64_hi,L=B.rotr64_lo,N=B.shr64_hi,D=B.shr64_lo,q=B.sum64,z=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,H=B.sum64_4_lo,V=B.sum64_5_hi,Y=B.sum64_5_lo,W=x.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Z=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],G=[1518500249,1859775393,2400959708,3395469782];B.inherits(e,W),u.sha256=e,e.blockSize=512,e.outSize=256,e.hmacStrength=192,e.padLength=64,e.prototype._update=function(l,n){for(var u=this.W,e=0;e<16;e++)u[e]=l[n+e];for(;e>8,i=255&t;r?u.push(r,i):u.push(i)}else for(var e=0;e>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var u="",e=0;e>>0}return r}function f(l,n){for(var u=new Array(4*l.length),e=0,t=0;e>>24,u[t+1]=r>>>16&255,u[t+2]=r>>>8&255,u[t+3]=255&r):(u[t+3]=r>>>24,u[t+2]=r>>>16&255,u[t+1]=r>>>8&255,u[t]=255&r)}return u}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,u){return l+n+u>>>0}function b(l,n,u,e){return l+n+u+e>>>0}function v(l,n,u,e,t){return l+n+u+e+t>>>0}function y(l,n){if(!l)throw new Error(n||"Assertion failed")}function g(l,n,u,e){var t=l[n],r=l[n+1],i=e+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,u,e){var t=n+e>>>0,r=(t>>0}function _(l,n,u,e){var t=n+e;return t>>>0}function w(l,n,u,e,t,r,i,o){var a=0,s=n;s=s+e>>>0,a+=s>>0,a+=s>>0,a+=s>>0}function k(l,n,u,e,t,r,i,o){var a=n+e+r+o;return a>>>0}function S(l,n,u,e,t,r,i,o,a,s){var f=0,c=n;c=c+e>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,u,e,t,r,i,o,a,s){var f=n+e+r+o+s;return f>>>0}function M(l,n,u){var e=n<<32-u|l>>>u;return e>>>0}function I(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}function A(l,n,u){return l>>>u}function x(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}var B=u,j=l("inherits");B.toArray=e,B.toHex=t,B.htonl=r,B.toHex32=i,B.zero2=o,B.zero8=a,B.join32=s,B.split32=f,B.rotr32=c,B.rotl32=h,B.sum32=d,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=j,u.sum64=g,u.sum64_hi=m,u.sum64_lo=_,u.sum64_4_hi=w,u.sum64_4_lo=k,u.sum64_5_hi=S,u.sum64_5_lo=E,u.rotr64_hi=M,u.rotr64_lo=I,u.shr64_hi=A,u.shr64_lo=x},{inherits:93}],91:[function(l,n,u){u.read=function(l,n,u,e,t){var r,i,o=8*t-e-1,a=(1<>1,f=-7,c=u?t-1:0,h=u?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=e;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-s;else{if(r===a)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,e),r-=s}return(d?-1:1)*i*Math.pow(2,r-e)},u.write=function(l,n,u,e,t,r){var i,o,a,s=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=e?0:r-1,p=e?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-i))<1&&(i--,a*=2),n+=i+c>=1?h/a:h*Math.pow(2,1-c),n*a>=2&&(i++,a/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*a-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[u+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[u+d]=255&i,d+=p,i/=256,s-=8);l[u+d-p]|=128*b}},{}],92:[function(l,n,u){var e=[].indexOf;n.exports=function(l,n){if(e)return l.indexOf(n);for(var u=0;u>=7-e),new t(u)},e.prototype.test=function(l,n,u){var e=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,e/48|0));for(var o=l.subn(1),a=o.subn(1),s=0;!o.testn(s);s++);for(var f=l.shrn(s),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(a);u&&u(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(e).redPow(s);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p=0;e--){var t=l[e];"."===t?l.splice(e,1):".."===t?(l.splice(e,1),u++):u&&(l.splice(e,1),u--)}if(n)for(;u--;u)l.unshift("..");return l}function e(l,n){if(l.filter)return l.filter(n);for(var u=[],e=0;e=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(u=i+"/"+u,t="/"===i.charAt(0))}return u=n(e(u.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+u||"."},u.normalize=function(l){var t=u.isAbsolute(l),r="/"===i(l,-1);return l=n(e(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},u.isAbsolute=function(l){return"/"===l.charAt(0)},u.join=function(){var l=Array.prototype.slice.call(arguments,0);return u.normalize(e(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},u.relative=function(l,n){function e(l){for(var n=0;n=0&&""===l[u];u--);return n>u?[]:l.slice(n,u-n+1)}l=u.resolve(l).substr(1),n=u.resolve(n).substr(1);for(var t=e(l.split("/")),r=e(n.split("/")),i=Math.min(t.length,r.length),o=i,a=0;ai)throw new TypeError("Bad key length");o=o||"sha1",n.isBuffer(l)||(l=new n(l,"binary")),n.isBuffer(u)||(u=new n(u,"binary"));var a,s=1,f=new n(t),c=new n(u.length+4);u.copy(c,0,0,u.length);for(var h,d,p=1;p<=s;p++){c.writeUInt32BE(p,u.length);var b=r(o,l).update(c).digest();a||(a=b.length,d=new n(a),s=Math.ceil(t/a),h=t-(s-1)*a),b.copy(d,0,0,a);for(var v=1;v1)for(var u=1;u=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==e.toString("hex")&&!u||"0001"!==e.toString("hex")&&u)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new u(l),n=new u(n);var e=0,t=l.length;l.length!==n.length&&(e++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new s(n).cmp(a.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new s(n),a):f(n,a);var p=new u(c-d.length);if(p.fill(0),d=u.concat([p,d],c),4===o)return e(a,d);if(1===o)return t(a,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":51,"parse-asn1":101}],109:[function(l,n,u){(function(u){function e(l,n){var e=l.modulus.byteLength(),t=n.length,r=a("sha1").update(new u("")).digest(),i=r.length,h=2*i;if(t>e-h-2)throw new Error("message too long");var d=new u(e-t-h-2);d.fill(0);var p=e-i-1,b=o(i),v=f(u.concat([r,d,new u([1]),n],p),s(b,p)),y=f(b,s(v,i));return new c(u.concat([new u([0]),y,v],e))}function t(l,n,e){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return e?(o=new u(i-t-3),o.fill(255)):o=r(i-t-3),new c(u.concat([new u([0,e?1:2]),o,new u([0]),n],i))}function r(l,n){for(var e,t=new u(l),r=0,i=o(2*l),a=0;r=0)throw new Error("data too long for modulus")}return u?d(o,a):h(o,a)}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":51,"parse-asn1":101,randombytes:112}],110:[function(l,n,u){(function(u){function e(l,n){return new u(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=e}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46}],111:[function(l,n,u){n.exports=function(l,n){for(var u=l.length,e=-1;++e65536)throw new Error("requested too many random bytes");var r=new u.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new e(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=u.crypto||u.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:105,buffer:46}],113:[function(l,n,u){(function(l){function u(l){for(var n=[],u=0,e=0;u>>5]|=l[u]<<24-e%32;return n}function e(l){for(var n=[],u=0;u<32*l.length;u+=8)n.push(l[u>>>5]>>>24-u%32&255);return n}function t(l,n,u){for(var e=0;e<16;e++){var t=u+e,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var g,m,_,w,k,S,E,M,I,A;S=g=l[0],E=m=l[1],M=_=l[2],I=w=l[3],A=k=l[4];var x;for(e=0;e<80;e+=1)x=g+n[u+h[e]]|0,x+=e<16?r(m,_,w)+v[0]:e<32?i(m,_,w)+v[1]:e<48?o(m,_,w)+v[2]:e<64?a(m,_,w)+v[3]:s(m,_,w)+v[4],x=0|x,x=f(x,p[e]),x=x+k|0,g=k,k=w,w=f(_,10),_=m,m=x,x=S+n[u+d[e]]|0,x+=e<16?s(E,M,I)+y[0]:e<32?a(E,M,I)+y[1]:e<48?o(E,M,I)+y[2]:e<64?i(E,M,I)+y[3]:r(E,M,I)+y[4],x=0|x,x=f(x,b[e]),x=x+A|0,S=A,A=I,I=f(M,10),M=E,E=x;x=l[1]+_+I|0,l[1]=l[2]+w+A|0,l[2]=l[3]+k+S|0,l[3]=l[4]+g+E|0,l[4]=l[0]+m+M|0,l[0]=x}function r(l,n,u){return l^n^u}function i(l,n,u){return l&n|~l&u}function o(l,n,u){return(l|~n)^u}function a(l,n,u){return l&u|n&~u}function s(l,n,u){return l^(n|~u)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=u(n),o=8*n.length,a=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);for(var s=0;s>>24)|4278255360&(f<<24|f>>>8)}var c=e(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:46}],114:[function(l,n,u){(function(l){function u(n,u){this._block=new l(n),this._finalSize=u,this._blockSize=n,this._len=0,this._s=0}u.prototype.update=function(n,u){"string"==typeof n&&(u=u||"utf8",n=new l(n,u));for(var e=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var u=this._update(this._block)||this._hash();return l?u.toString(l):u},u.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=u}).call(this,l("buffer").Buffer)},{buffer:46}],115:[function(l,n,u){var u=n.exports=function(l){l=l.toLowerCase();var n=u[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};u.sha=l("./sha"),u.sha1=l("./sha1"),u.sha224=l("./sha224"),u.sha256=l("./sha256"),u.sha384=l("./sha384"),u.sha512=l("./sha512")},{"./sha":116,"./sha1":117,"./sha224":118,"./sha256":119,"./sha384":120,"./sha512":121}],116:[function(l,n,u){(function(u){function e(){this.init(),this._w=f,a.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var o=l("inherits"),a=l("./hash"),s=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(e,a),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(u)+i(d,e,o,a)+f+n[h]+s[d]|0;f=a,a=o,o=r(e),e=u,u=p}this._a=u+this._a|0,this._b=e+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],117:[function(l,n,u){(function(u){function e(){this.init(),this._w=c,s.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var a=l("inherits"),s=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);a(e,s),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,a=0|this._c,s=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(u)+o(p,e,a,s)+c+n[d]+f[p]|0;c=s,s=a,a=i(e),e=u,u=b}this._a=u+this._a|0,this._b=e+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=c+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],118:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(e,r),e.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},e.prototype._hash=function(){var l=new u(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,"./sha256":119,buffer:46,inherits:93}],119:[function(l,n,u){(function(u){function e(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function a(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function s(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(e,c),e.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)n[y]=l.readInt32BE(4*y);for(;y<64;++y)n[y]=s(n[y-2])+n[y-7]+a(n[y-15])+n[y-16]|0;for(var g=0;g<64;++g){var m=v+o(d)+t(d,p,b)+h[g]+n[g]|0,_=i(u)+r(u,e,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=e,e=u,u=m+_|0}this._a=u+this._a|0,this._b=e+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},e.prototype._hash=function(){var l=new u(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],120:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(e,r),e.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,"./sha512":121,buffer:46,inherits:93}],121:[function(l,n,u){(function(u){function e(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(e,p),e.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._ah,e=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,g=0|this._gh,m=0|this._hh,_=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,A=0|this._hl,x=0;x<32;x+=2)n[x]=l.readInt32BE(4*x),n[x+1]=l.readInt32BE(4*x+4);for(;x<160;x+=2){var B=n[x-30],j=n[x-30+1],R=a(B,j),O=s(j,B);B=n[x-4],j=n[x-4+1];var C=f(B,j),P=c(j,B),U=n[x-14],T=n[x-14+1],L=n[x-32],N=n[x-32+1],D=O+T|0,q=R+U+h(D,O)|0;D=D+P|0,q=q+C+h(D,P)|0,D=D+N|0,q=q+L+h(D,N)|0,n[x]=q,n[x+1]=D}for(var z=0;z<160;z+=2){q=n[z],D=n[z+1];var F=r(u,e,d),K=r(_,w,k),H=i(u,_),V=i(_,u),Y=o(v,E),W=o(E,v),X=b[z],Z=b[z+1],G=t(v,y,g),J=t(E,M,I),$=A+W|0,Q=m+Y+h($,A)|0;$=$+J|0,Q=Q+G+h($,J)|0,$=$+Z|0,Q=Q+X+h($,Z)|0,$=$+D|0,Q=Q+q+h($,D)|0;var ll=V+K|0,nl=H+F+h(ll,V)|0;m=g,A=I,g=y,I=M,y=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=e,k=w,e=u,w=_,_=$+ll|0,u=Q+nl+h(_,$)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+A|0,this._ah=this._ah+u+h(this._al,_)|0,this._bh=this._bh+e+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+y+h(this._fl,M)|0,this._gh=this._gh+g+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,A)|0},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],122:[function(l,n,u){function e(){t.call(this)}n.exports=e;var t=l("events").EventEmitter,r=l("inherits");r(e,t),e.Readable=l("readable-stream/readable.js"),e.Writable=l("readable-stream/writable.js"),e.Duplex=l("readable-stream/duplex.js"),e.Transform=l("readable-stream/transform.js"),e.PassThrough=l("readable-stream/passthrough.js"),e.Stream=e,e.prototype.pipe=function(l,n){function u(n){l.writable&&!1===l.write(n)&&s.pause&&s.pause()}function e(){s.readable&&s.resume&&s.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(a(),0===t.listenerCount(this,"error"))throw l}function a(){s.removeListener("data",u),l.removeListener("drain",e),s.removeListener("end",r),s.removeListener("close",i),s.removeListener("error",o),l.removeListener("error",o),s.removeListener("end",a),s.removeListener("close",a),l.removeListener("close",a)}var s=this;s.on("data",u),l.on("drain",e),l._isStdio||n&&n.end===!1||(s.on("end",r),s.on("close",i));var f=!1;return s.on("error",o),l.on("error",o),s.on("end",a),s.on("close",a),l.on("close",a),l.emit("pipe",s),l}},{events:83,inherits:93,"readable-stream/duplex.js":124,"readable-stream/passthrough.js":131,"readable-stream/readable.js":132,"readable-stream/transform.js":133,"readable-stream/writable.js":134}],123:[function(l,n,u){arguments[4][47][0].apply(u,arguments)},{dup:47}],124:[function(l,n,u){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":125}],125:[function(l,n,u){"use strict";function e(l){return this instanceof e?(s.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new e(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var u in l)n.push(u);return n};n.exports=e;var o=l("process-nextick-args"),a=l("core-util-is");a.inherits=l("inherits");var s=l("./_stream_readable"),f=l("./_stream_writable");a.inherits(e,s);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var a=new Error("stream.unshift() after end event");l.emit("error",a)}else{var s;!n.decoder||t||e||(u=n.decoder.write(u),s=!n.objectMode&&0===u.length),t||(n.reading=!1),s||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",u),l.read(0)):(n.length+=n.objectMode?1:u.length,t?n.buffer.unshift(u):n.buffer.push(u),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=z?l=z:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function s(l,n){return l<=0||0===n.length&&n.ended?0:n.objectMode?1:l!==l?n.flowing&&n.length?n.buffer.head.data.length:n.length:(l>n.highWaterMark&&(n.highWaterMark=a(l)),l<=n.length?l:n.ended?n.length:(n.needReadable=!0,0))}function f(l,n){var u=null;return C.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(u=new TypeError("Invalid non-string/buffer chunk")),u}function c(l,n){if(!n.ended){if(n.decoder){var u=n.decoder.end();u&&u.length&&(n.buffer.push(u),n.length+=n.objectMode?1:u.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(L("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?B(d,l):d(l))}function d(l){L("emit readable"),l.emit("readable"),_(l)}function p(l,n){n.readingMore||(n.readingMore=!0,B(b,l,n))}function b(l,n){for(var u=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=n.length?(u=n.decoder?n.buffer.join(""):1===n.buffer.length?n.buffer.head.data:n.buffer.concat(n.length),n.buffer.clear()):u=k(l,n.buffer,n.decoder),u}function k(l,n,u){var e;return lr.length?r.length:l;if(t+=i===r.length?r:r.slice(0,l),l-=i,0===l){i===r.length?(++e,u.next?n.head=u.next:n.head=n.tail=null):(n.head=u,u.data=r.slice(i));break}++e}return n.length-=e,t}function E(l,n){var u=P.allocUnsafe(l),e=n.head,t=1;for(e.data.copy(u),l-=e.data.length;e=e.next;){var r=e.data,i=l>r.length?r.length:l;if(r.copy(u,u.length-l,0,i),l-=i,0===l){i===r.length?(++t,e.next?n.head=e.next:n.head=n.tail=null):(n.head=e,e.data=r.slice(i));break}++t}return n.length-=t,u}function M(l){var n=l._readableState;if(n.length>0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,B(I,n,l))}function I(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function A(l,n){for(var u=0,e=l.length;u=n.highWaterMark||n.ended))return L("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?M(this):h(this),null;if(l=s(l,n),0===l&&n.ended)return 0===n.length&&M(this),null;var e=n.needReadable;L("need readable",e),(0===n.length||n.length-l0?w(l,n):null,null===t?(n.needReadable=!0,l=0):n.length-=l,0===n.length&&(n.ended||(n.needReadable=!0),u!==l&&n.ended&&M(this)),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("not implemented"))},r.prototype.pipe=function(l,n){function t(l){L("onunpipe"),l===h&&i()}function r(){L("onend"),l.end()}function i(){L("cleanup"),l.removeListener("close",s),l.removeListener("finish",f),l.removeListener("drain",y),l.removeListener("error",a),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),g=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||y()}function o(n){L("ondata"),m=!1;var u=l.write(n);!1!==u||m||((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&x(d.pipes,l)!==-1)&&!g&&(L("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,m=!0),h.pause())}function a(n){L("onerror",n),c(),l.removeListener("error",a),0===O(l,"error")&&l.emit("error",n)}function s(){l.removeListener("finish",f),c()}function f(){L("onfinish"),l.removeListener("close",s),c()}function c(){L("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,L("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==u.stdout&&l!==u.stderr,b=p?r:i;d.endEmitted?B(b):h.once("end",b),l.on("unpipe",t);var y=v(h);l.on("drain",y);var g=!1,m=!1;return h.on("data",o),e(l,"error",a),l.once("close",s),l.once("finish",f),l.emit("pipe",h),d.flowing||(L("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var u=n.pipes,e=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:S;i.WritableState=r;var M=l("core-util-is");M.inherits=l("inherits");var I,A={deprecate:l("util-deprecate")};!function(){try{I=l("stream")}catch(n){}finally{I||(I=l("events").EventEmitter)}}();var x=l("buffer").Buffer,B=l("buffer-shims");M.inherits(i,I);var j;r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var j;i.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,u){var t=this._writableState,r=!1;return"function"==typeof n&&(u=n,n=null),x.isBuffer(l)?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof u&&(u=e),t.ended?o(this,u):a(this,t,l,u)&&(t.pendingcb++,r=f(this,t,l,n,u)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||y(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,u){u(new Error("not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,u){var e=this._writableState;"function"==typeof l?(u=l,l=null,n=null):"function"==typeof n&&(u=n,n=null),null!==l&&void 0!==l&&this.write(l,n),e.corked&&(e.corked=1,this.uncork()),e.ending||e.finished||w(this,e,u)}}).call(this,l("_process"))},{"./_stream_duplex":125,_process:105,buffer:46,"buffer-shims":44,"core-util-is":49,events:83,inherits:93,"process-nextick-args":104,"util-deprecate":136}],130:[function(l,n,u){"use strict";function e(){this.head=null,this.tail=null,this.length=0}var t=(l("buffer").Buffer,l("buffer-shims"));n.exports=e,e.prototype.push=function(l){var n={data:l,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function(l){var n={data:l,next:this.head};0===this.length&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function(){if(0!==this.length){var l=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,l}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(l){if(0===this.length)return"";for(var n=this.head,u=""+n.data;n=n.next;)u+=l+n.data;return u},e.prototype.concat=function(l){if(0===this.length)return t.alloc(0);if(1===this.length)return this.head.data;for(var n=t.allocUnsafe(l>>>0),u=this.head,e=0;u;)u.data.copy(n,e),e+=u.data.length,u=u.next;return n}},{buffer:46,"buffer-shims":44}],131:[function(l,n,u){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":126}],132:[function(l,n,u){(function(e){var t=function(){try{return l("stream")}catch(n){}}();u=n.exports=l("./lib/_stream_readable.js"),u.Stream=t||u,u.Readable=u,u.Writable=l("./lib/_stream_writable.js"),u.Duplex=l("./lib/_stream_duplex.js"),u.Transform=l("./lib/_stream_transform.js"),u.PassThrough=l("./lib/_stream_passthrough.js"),!e.browser&&"disable"===e.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":125,"./lib/_stream_passthrough.js":126,"./lib/_stream_readable.js":127,"./lib/_stream_transform.js":128,"./lib/_stream_writable.js":129,_process:105}],133:[function(l,n,u){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":128}],134:[function(l,n,u){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":129}],135:[function(l,n,u){function e(l){if(l&&!a(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,a=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},s=u.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),e(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i;break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};s.prototype.write=function(l){for(var n="";this.charLength;){var u=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,u),this.charReceived+=u,this.charReceived=55296&&e<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,e=n.charCodeAt(t);if(e>=55296&&e<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},s.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var u=l[l.length-n];if(1==n&&u>>5==6){this.charLength=2;break}if(n<=2&&u>>4==14){this.charLength=3;break}if(n<=3&&u>>3==30){this.charLength=4;break}}this.charReceived=n},s.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var u=this.charReceived,e=this.charBuffer,t=this.encoding;n+=e.slice(0,u).toString(t)}return n}},{buffer:46}],136:[function(l,n,u){(function(l){function u(l,n){function u(){if(!t){if(e("throwDeprecation"))throw new Error(n);e("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(e("noDeprecation"))return l;var t=!1;return u}function e(n){try{if(!l.localStorage)return!1}catch(u){return!1}var e=l.localStorage[n];return null!=e&&"true"===String(e).toLowerCase()}n.exports=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],137:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var u in l)n.push(u);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var u=0;u57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(e===u-1)t.push(65533);else{var i=l.charCodeAt(e+1);if(56320<=i&&i<=57343){var o=1023&r,a=1023&i;t.push(65536+(o<<10)+a),e+=1}else t.push(65533)}e+=1}return t}function r(l){for(var n="",u=0;u>10)+55296,(1023&e)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function a(l){throw TypeError("The code point "+l+" could not be encoded.")}function s(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var u=n.indexOf(l);return u===-1?null:u}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,u=0,e=0,t=p("gb18030");for(n=0;n>6*e)+t];e>0;){var i=u>>6*(e-1);r.push(128|63&i),e-=1}return r}}function S(l,u){var e=u.fatal;this.handler=function(u,t){if(t===F)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(e):r}}function E(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,l);return null===t&&a(e),t+128}}function M(l){var u=l.fatal,e=0,t=0,r=0;this.handler=function(l,i){if(i===F&&0===e&&0===t&&0===r)return K;i!==F||0===e&&0===t&&0===r||(e=0,t=0,r=0,o(u));var a;if(0!==r){a=null,n(i,48,57)&&(a=b(10*(126*(10*(e-129)+(t-48))+(r-129))+i-48));var s=[t,r,i];return e=0,t=0,r=0,null===a?(l.prepend(s),o(u)):a}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),e=0,t=0,o(u));if(0!==e){if(n(i,48,57))return t=i,null;var f=e,c=null;e=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),a=null===c?null:h(c,p("gb18030")),null===a&&n(i,0,127)&&l.prepend(i),null===a?o(u):a}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(e=i,null):o(u)}}function I(l,e){l.fatal;this.handler=function(l,t){if(t===F)return K;if(n(t,0,127))return t;if(e&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=u(r,190)+129,o=r%190,s=o<63?64:65;return[i,o+s]}if(e)return a(t);r=v(t);var f=u(u(u(r,10),126),10);r-=10*f*126*10;var c=u(u(r,10),126);r-=10*c*126;var h=u(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function A(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-a)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var s=null===i?null:h(i,p("big5"));return null===s&&n(t,0,127)&&l.prepend(t),null===s?o(u):s}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function x(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=g(e,p("big5"));if(null===t)return a(e);var r=u(t,157)+129;if(r<161)return a(e);var i=t%157,o=i<63?64:98;return[r,i+o]}}function B(l){var u=l.fatal,e=!1,t=0;this.handler=function(l,r){if(r===F&&0!==t)return t=0,o(u);if(r===F&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return e=!0,t=r,null;if(0!==t){var i=t;t=0;var a=null;return n(i,161,254)&&n(r,161,254)&&(a=h(94*(i-161)+(r-161),p(e?"jis0212":"jis0208"))),e=!1,n(r,161,254)||l.prepend(r),null===a?o(u):a}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(u)}}function j(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return[142,e-65377+161];8226===e&&(e=65293);var t=d(e,p("jis0208"));if(null===t)return a(e);var r=u(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var u=l.fatal,e={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=e.ASCII,r=e.ASCII,i=0,a=!1;this.handler=function(l,s){switch(t){default:case e.ASCII:return 27===s?(t=e.EscapeStart,null):n(s,0,127)&&14!==s&&15!==s&&27!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Roman:return 27===s?(t=e.EscapeStart,null):92===s?(a=!1,165):126===s?(a=!1,8254):n(s,0,127)&&14!==s&&15!==s&&27!==s&&92!==s&&126!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Katakana:return 27===s?(t=e.EscapeStart,null):n(s,33,95)?(a=!1,65377+s-33):s===F?K:(a=!1,o(u));case e.LeadByte:return 27===s?(t=e.EscapeStart,null):n(s,33,126)?(a=!1,i=s,t=e.TrailByte,null):s===F?K:(a=!1,o(u));case e.TrailByte:if(27===s)return t=e.EscapeStart,o(u);if(n(s,33,126)){t=e.LeadByte;var f=94*(i-33)+s-33,c=h(f,p("jis0208"));return null===c?o(u):c}return s===F?(t=e.LeadByte,l.prepend(s),o(u)):(t=e.LeadByte,o(u));case e.EscapeStart:return 36===s||40===s?(i=s,t=e.Escape,null):(l.prepend(s),a=!1,t=r,o(u));case e.Escape:var d=i;i=0;var b=null;if(40===d&&66===s&&(b=e.ASCII),40===d&&74===s&&(b=e.Roman),40===d&&73===s&&(b=e.Katakana),36!==d||64!==s&&66!==s||(b=e.LeadByte),null!==b){t=t=b;var v=a;return a=!0,v?o(u):null}return l.prepend([d,s]),a=!1,t=r,o(u)}}}function O(l){var e=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=e.ASCII;this.handler=function(l,r){if(r===F&&t!==e.ASCII)return l.prepend(r),[27,40,66];if(r===F&&t===e.ASCII)return K;if(t===e.ASCII&&n(r,0,127))return r;if(t===e.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==e.ASCII)return l.prepend(r),t=e.ASCII,[27,40,66];if((165===r||8254===r)&&t!==e.Roman)return l.prepend(r),t=e.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return a(r);if(t!==e.jis0208)return l.prepend(r),t=e.jis0208,[27,36,66];var o=u(i,94)+33,s=i%94+33;return[o,s]}}function C(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:65,s=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-s)+t-a);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(u):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(e=t,null):o(u)}}function P(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,128))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return e-65377+161;8226===e&&(e=65293);var t=y(e);if(null===t)return a(e);var r=u(t,188),i=r<31?129:193,o=t%188,s=o<63?64:65;return[r+i,o+s]}}function U(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var a=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===a?o(u):a}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function T(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,p("euc-kr"));if(null===t)return a(e);var r=u(t,190)+129,i=t%190+65;return[r,i]}}function L(l,n){var u=l>>8,e=255&l;return n?[u,e]:[e,u]}function N(l,u){var e=u.fatal,t=null,r=null;this.handler=function(u,i){if(i===F&&(null!==t||null!==r))return o(e);if(i===F&&null===t&&null===r)return K;if(null===t)return t=i,null;var a;if(a=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var s=r;return r=null,n(a,56320,57343)?65536+1024*(s-55296)+(a-56320):(u.prepend(L(a,l)),o(e))}return n(a,55296,56319)?(r=a,null):n(a,56320,57343)?o(e):a}}function D(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,65535))return L(e,l);var t=L((e-65536>>10)+55296,l),r=L((e-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:63360+u-128}}function z(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:n(u,63360,63487)?u-63360+128:a(u)}}var F=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():F},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;s.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var u;u="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=e(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(u),a=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t))}while(!o.endOfStream());this._decoder=null}return a.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0, -a.shift()):this._BOMseen=!0)),r(a)}},_.prototype={encode:function(l,n){l=l?String(l):"",n=e(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var u,r=[],o=new i(t(l));!o.endOfStream()&&(u=this._encoder.handler(o,o.read()),u!==K);)Array.isArray(u)?r.push.apply(r,u):r.push(u);if(!this._streaming){for(;;){if(u=this._encoder.handler(o,o.read()),u===K)break;Array.isArray(u)?r.push.apply(r,u):r.push(u)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,u=p(n);W[n]=function(l){return new S(u,l)},Y[n]=function(l){return new E(u,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new x(l)},W.big5=function(l){return new A(l)},Y["euc-jp"]=function(l){return new j(l)},W["euc-jp"]=function(l){return new B(l)},Y["iso-2022-jp"]=function(l){return new O(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new P(l)},W.shift_jis=function(l){return new C(l)},Y["euc-kr"]=function(l){return new T(l)},W["euc-kr"]=function(l){return new U(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new N((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new N((!1),l)},Y["x-user-defined"]=function(l){return new z(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=_),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":138}],140:[function(l,n,u){"use strict";function e(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(n[u]=l[u]);return n["default"]=l,n}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./v1/index"),r=e(t);u["default"]={v1:r},n.exports=u["default"]},{"./v1/index":144}],141:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);l.prototype=Object.create(n&&n.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(l,n):l.__proto__=n)}function r(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function i(l,n){var u=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return new v(l,g,n,u)}Object.defineProperty(u,"__esModule",{value:!0});var o=function(l,n,u){for(var e=!0;e;){var t=l,r=n,i=u;e=!1,null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,r);if(void 0!==o){if("value"in o)return o.value;var a=o.get;if(void 0===a)return;return a.call(i)}var s=Object.getPrototypeOf(t);if(null===s)return;l=s,n=r,u=i,e=!0,o=s=void 0}},a=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],144:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":142,buffer:46}],147:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(n,u,e){if(!b["default"].existsSync(u))return void e(null);var t=!1;l("readline").createInterface({input:b["default"].createReadStream(u)}).on("line",function(l){l.startsWith(n)&&(t=!0,e(l.split(" ")[1]))}).on("close",function(){t||e(null)})}function o(l,n,u){b["default"].appendFile(n,l+" "+u+g.EOL,"utf8",function(l){l&&console.log(l)})}function a(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=c["default"].connect(l.port,l.host,n);return e.on("error",u),e}return k[l.trust]?k[l.trust](l,n,u):void u((0,_.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":146}],150:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(M,[l,n]),this._chunker.messageBoundary()}},{key:"run",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(x,[l,n]),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){this._queueObserver(l),this._packer.packStruct(j),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){this._queueObserver(l),this._packer.packStruct(B),this._chunker.messageBoundary()}},{key:"reset",value:function(l){this._isHandlingFailure=!0;var n=this,u={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){n._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(u),this._packer.packStruct(A),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){this._queueObserver(l),this._packer.packStruct(I),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],152:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],153:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"pack",value:function(l){if(null===l)this._ch.writeUInt8(p);else if(l===!0)this._ch.writeUInt8(y);else if(l===!1)this._ch.writeUInt8(v);else if("number"==typeof l)this.packFloat(l);else if("string"==typeof l)this.packString(l);else if(l instanceof a.Integer)this.packInteger(l);else if(l instanceof Array){this.packListHeader(l.length);for(var n=0;n>0),this._ch.writeUInt8(u%256),this._ch.writeBytes(n);else{if(!(u<4294967296))throw(0,s.newError)("UTF-8 strings of size "+u+" are not supported");this._ch.writeUInt8(E),this._ch.writeUInt8((u/16777216>>0)%256),this._ch.writeUInt8((u/65536>>0)%256),this._ch.writeUInt8((u/256>>0)%256),this._ch.writeUInt8(u%256),this._ch.writeBytes(n)}}},{key:"packListHeader",value:function(l){if(l<16)this._ch.writeUInt8(c|l);else if(l<256)this._ch.writeUInt8(M),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Lists of size "+l+" are not supported");this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packMapHeader",value:function(l){if(l<16)this._ch.writeUInt8(h|l);else if(l<256)this._ch.writeUInt8(x),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Maps of size "+l+" are not supported");this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packStructHeader",value:function(l,n){if(l<16)this._ch.writeUInt8(d|l),this._ch.writeUInt8(n);else if(l<256)this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n);else{if(!(l<65536))throw(0,s.newError)("Structures of size "+l+" are not supported");this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)}}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":157}],156:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,buffer:46,string_decoder:133}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":142}],158:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":145}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(e===u-1)t.push(65533);else{var i=l.charCodeAt(e+1);if(56320<=i&&i<=57343){var o=1023&r,a=1023&i;t.push(65536+(o<<10)+a),e+=1}else t.push(65533)}e+=1}return t}function r(l){for(var n="",u=0;u>10)+55296,(1023&e)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function a(l){throw TypeError("The code point "+l+" could not be encoded.")}function s(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var u=n.indexOf(l);return u===-1?null:u}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,u=0,e=0,t=p("gb18030");for(n=0;n>6*e)+t];e>0;){var i=u>>6*(e-1);r.push(128|63&i),e-=1}return r}}function S(l,u){var e=u.fatal;this.handler=function(u,t){if(t===F)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(e):r}}function E(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,l);return null===t&&a(e),t+128}}function M(l){var u=l.fatal,e=0,t=0,r=0;this.handler=function(l,i){if(i===F&&0===e&&0===t&&0===r)return K;i!==F||0===e&&0===t&&0===r||(e=0,t=0,r=0,o(u));var a;if(0!==r){a=null,n(i,48,57)&&(a=b(10*(126*(10*(e-129)+(t-48))+(r-129))+i-48));var s=[t,r,i];return e=0,t=0,r=0,null===a?(l.prepend(s),o(u)):a}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),e=0,t=0,o(u));if(0!==e){if(n(i,48,57))return t=i,null;var f=e,c=null;e=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),a=null===c?null:h(c,p("gb18030")),null===a&&n(i,0,127)&&l.prepend(i),null===a?o(u):a}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(e=i,null):o(u)}}function I(l,e){l.fatal;this.handler=function(l,t){if(t===F)return K;if(n(t,0,127))return t;if(e&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=u(r,190)+129,o=r%190,s=o<63?64:65;return[i,o+s]}if(e)return a(t);r=v(t);var f=u(u(u(r,10),126),10);r-=10*f*126*10;var c=u(u(r,10),126);r-=10*c*126;var h=u(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function A(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-a)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var s=null===i?null:h(i,p("big5"));return null===s&&n(t,0,127)&&l.prepend(t),null===s?o(u):s}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function x(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=g(e,p("big5"));if(null===t)return a(e);var r=u(t,157)+129;if(r<161)return a(e);var i=t%157,o=i<63?64:98;return[r,i+o]}}function B(l){var u=l.fatal,e=!1,t=0;this.handler=function(l,r){if(r===F&&0!==t)return t=0,o(u);if(r===F&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return e=!0,t=r,null;if(0!==t){var i=t;t=0;var a=null;return n(i,161,254)&&n(r,161,254)&&(a=h(94*(i-161)+(r-161),p(e?"jis0212":"jis0208"))),e=!1,n(r,161,254)||l.prepend(r),null===a?o(u):a}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(u)}}function j(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return[142,e-65377+161];8226===e&&(e=65293);var t=d(e,p("jis0208"));if(null===t)return a(e);var r=u(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var u=l.fatal,e={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=e.ASCII,r=e.ASCII,i=0,a=!1;this.handler=function(l,s){switch(t){default:case e.ASCII:return 27===s?(t=e.EscapeStart,null):n(s,0,127)&&14!==s&&15!==s&&27!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Roman:return 27===s?(t=e.EscapeStart,null):92===s?(a=!1,165):126===s?(a=!1,8254):n(s,0,127)&&14!==s&&15!==s&&27!==s&&92!==s&&126!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Katakana:return 27===s?(t=e.EscapeStart,null):n(s,33,95)?(a=!1,65377+s-33):s===F?K:(a=!1,o(u));case e.LeadByte:return 27===s?(t=e.EscapeStart,null):n(s,33,126)?(a=!1,i=s,t=e.TrailByte,null):s===F?K:(a=!1,o(u));case e.TrailByte:if(27===s)return t=e.EscapeStart,o(u);if(n(s,33,126)){t=e.LeadByte;var f=94*(i-33)+s-33,c=h(f,p("jis0208"));return null===c?o(u):c}return s===F?(t=e.LeadByte,l.prepend(s),o(u)):(t=e.LeadByte,o(u));case e.EscapeStart:return 36===s||40===s?(i=s,t=e.Escape,null):(l.prepend(s),a=!1,t=r,o(u));case e.Escape:var d=i;i=0;var b=null;if(40===d&&66===s&&(b=e.ASCII),40===d&&74===s&&(b=e.Roman),40===d&&73===s&&(b=e.Katakana),36!==d||64!==s&&66!==s||(b=e.LeadByte),null!==b){t=t=b;var v=a;return a=!0,v?o(u):null}return l.prepend([d,s]),a=!1,t=r,o(u)}}}function O(l){var e=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=e.ASCII;this.handler=function(l,r){if(r===F&&t!==e.ASCII)return l.prepend(r),[27,40,66];if(r===F&&t===e.ASCII)return K;if(t===e.ASCII&&n(r,0,127))return r;if(t===e.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==e.ASCII)return l.prepend(r),t=e.ASCII,[27,40,66];if((165===r||8254===r)&&t!==e.Roman)return l.prepend(r),t=e.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return a(r);if(t!==e.jis0208)return l.prepend(r),t=e.jis0208,[27,36,66];var o=u(i,94)+33,s=i%94+33;return[o,s]}}function C(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:65,s=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-s)+t-a);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(u):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(e=t,null):o(u)}}function P(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,128))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return e-65377+161;8226===e&&(e=65293);var t=y(e);if(null===t)return a(e);var r=u(t,188),i=r<31?129:193,o=t%188,s=o<63?64:65;return[r+i,o+s]}}function U(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var a=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===a?o(u):a}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function T(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,p("euc-kr"));if(null===t)return a(e);var r=u(t,190)+129,i=t%190+65;return[r,i]}}function L(l,n){var u=l>>8,e=255&l;return n?[u,e]:[e,u]}function N(l,u){var e=u.fatal,t=null,r=null;this.handler=function(u,i){if(i===F&&(null!==t||null!==r))return o(e);if(i===F&&null===t&&null===r)return K;if(null===t)return t=i,null;var a;if(a=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var s=r;return r=null,n(a,56320,57343)?65536+1024*(s-55296)+(a-56320):(u.prepend(L(a,l)),o(e))}return n(a,55296,56319)?(r=a,null):n(a,56320,57343)?o(e):a}}function D(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,65535))return L(e,l);var t=L((e-65536>>10)+55296,l),r=L((e-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:63360+u-128}}function z(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:n(u,63360,63487)?u-63360+128:a(u)}}var F=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():F},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;s.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var u;u="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=e(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(u),a=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t))}while(!o.endOfStream());this._decoder=null}return a.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0, +a.shift()):this._BOMseen=!0)),r(a)}},_.prototype={encode:function(l,n){l=l?String(l):"",n=e(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var u,r=[],o=new i(t(l));!o.endOfStream()&&(u=this._encoder.handler(o,o.read()),u!==K);)Array.isArray(u)?r.push.apply(r,u):r.push(u);if(!this._streaming){for(;;){if(u=this._encoder.handler(o,o.read()),u===K)break;Array.isArray(u)?r.push.apply(r,u):r.push(u)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,u=p(n);W[n]=function(l){return new S(u,l)},Y[n]=function(l){return new E(u,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new x(l)},W.big5=function(l){return new A(l)},Y["euc-jp"]=function(l){return new j(l)},W["euc-jp"]=function(l){return new B(l)},Y["iso-2022-jp"]=function(l){return new O(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new P(l)},W.shift_jis=function(l){return new C(l)},Y["euc-kr"]=function(l){return new T(l)},W["euc-kr"]=function(l){return new U(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new N((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new N((!1),l)},Y["x-user-defined"]=function(l){return new z(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=_),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":140}],142:[function(l,n,u){"use strict";function e(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(n[u]=l[u]);return n["default"]=l,n}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./v1/index"),r=e(t);u["default"]={v1:r},n.exports=u["default"]},{"./v1/index":146}],143:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);l.prototype=Object.create(n&&n.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(l,n):l.__proto__=n)}function r(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function i(l,n){var u=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return new v(l,g,n,u)}Object.defineProperty(u,"__esModule",{value:!0});var o=function(l,n,u){for(var e=!0;e;){var t=l,r=n,i=u;e=!1,null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,r);if(void 0!==o){if("value"in o)return o.value;var a=o.get;if(void 0===a)return;return a.call(i)}var s=Object.getPrototypeOf(t);if(null===s)return;l=s,n=r,u=i,e=!0,o=s=void 0}},a=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],146:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":143,"./error":144,"./graph-types":145,"./integer":147}],147:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":144,buffer:46}],149:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(l){try{v["default"].mkdirSync(l)}catch(n){if("ENOENT"===n.code)return i(g["default"].dirname(l)),void i(l);if("EEXIST"===n.code)return;throw n}}function o(n,u,e){try{v["default"].accessSync(u)}catch(t){return e(null)}var r=!1;l("readline").createInterface({input:v["default"].createReadStream(u)}).on("line",function(l){!r&&l.startsWith(n)&&(r=!0,e(l.split(" ")[1]))}).on("close",function(){r||e(null)})}function a(l,n,u,e){if(S[l])return e(null);S[l]=1;try{v["default"].accessSync(n)}catch(t){i(g["default"].dirname(n))}v["default"].appendFile(n,l+" "+u+m.EOL,"utf8",function(n){return delete S[l],n&&console.log(n),e(n)})}function s(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=h["default"].connect(l.port,l.host,n);return e.on("error",u),e}return E[l.trust]?E[l.trust](l,n,u):void u((0,w.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var f=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":148}],152:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(M,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary(),this.sync()}},{key:"run",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(x,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(j,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(B,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"reset",value:function(l){var n=this;this._isHandlingFailure=!0;var u=this,e={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){u._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(e),this._packer.packStruct(A,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(I,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}},{key:"_packable",value:function(l){var n=this;return this._packer.packable(l,function(l){return n._handleFatalError(l)})}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":145,"../integer":147,"./../error":144,"./buf":148,"./ch-node":149,"./ch-websocket":150,"./chunking":151,"./features":153,"./packstream":155}],153:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],154:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"packable",value:function(l,n){var u=this;if(null===l)return function(){return u._ch.writeUInt8(p)};if(l===!0)return function(){return u._ch.writeUInt8(y)};if(l===!1)return function(){return u._ch.writeUInt8(v)};if("number"==typeof l)return function(){return u.packFloat(l)};if("string"==typeof l)return function(){return u.packString(l,n)};if(l instanceof a.Integer)return function(){return u.packInteger(l)};if(l instanceof Array)return function(){u.packListHeader(l.length,n);for(var e=0;e>0),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):e<4294967296?(this._ch.writeUInt8(E),this._ch.writeUInt8((e/16777216>>0)%256),this._ch.writeUInt8((e/65536>>0)%256),this._ch.writeUInt8((e/256>>0)%256),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):n((0,s.newError)("UTF-8 strings of size "+e+" are not supported"))}},{key:"packListHeader",value:function(l,n){l<16?this._ch.writeUInt8(c|l):l<256?(this._ch.writeUInt8(M),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Lists of size "+l+" are not supported"))}},{key:"packMapHeader",value:function(l,n){l<16?this._ch.writeUInt8(h|l):l<256?(this._ch.writeUInt8(x),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Maps of size "+l+" are not supported"))}},{key:"packStructHeader",value:function(l,n,u){l<16?(this._ch.writeUInt8(d|l),this._ch.writeUInt8(n)):l<256?(this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n)):l<65536?(this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):u((0,s.newError)("Structures of size "+l+" are not supported"))}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":147,"./../error":144,"./buf":148,"./log":154,"./utf8":158}],156:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":159}],158:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":139,"./../error":144,"./buf":148,buffer:46,string_decoder:135}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":144}],160:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":147}],161:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Lists of size " + size + " are not supported"); + onError((0, _error.newError)("Lists of size " + size + " are not supported")); } } }, { key: "packMapHeader", - value: function packMapHeader(size) { + value: function packMapHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -8151,12 +8277,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Maps of size " + size + " are not supported"); + onError((0, _error.newError)("Maps of size " + size + " are not supported")); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature) { + value: function packStructHeader(size, signature, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -8169,7 +8295,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Structures of size " + size + " are not supported"); + onError((0, _error.newError)("Structures of size " + size + " are not supported")); } } }]); @@ -8703,7 +8829,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports['default'] = platformObj; module.exports = exports['default']; -},{"../../external/text-encoding/index":2,"./../error":6,"./buf":10,"buffer":73,"string_decoder":160}],22:[function(require,module,exports){ +},{"../../external/text-encoding/index":2,"./../error":6,"./buf":10,"buffer":73,"string_decoder":162}],22:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -9924,7 +10050,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":28,"inherits":119,"vm":162}],30:[function(require,module,exports){ +},{"../asn1":28,"inherits":120,"vm":164}],30:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -10042,7 +10168,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":31,"buffer":73,"inherits":119}],31:[function(require,module,exports){ +},{"../base":31,"buffer":73,"inherits":120}],31:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -10116,7 +10242,7 @@ module.exports = Node; var stateProps = [ 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit' + 'implicit', 'contains' ]; Node.prototype.clone = function clone() { @@ -10321,17 +10447,17 @@ Node.prototype.contains = function contains(item) { // Decoding // -Node.prototype._decode = function decode(input) { +Node.prototype._decode = function decode(input, options) { var state = this._baseState; // Decode root node if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input)); + return input.wrapResult(state.children[0]._decode(input, options)); var result = state['default']; var present = true; - var prevKey; + var prevKey = null; if (state.key !== null) prevKey = input.enterKey(state.key); @@ -10350,9 +10476,9 @@ Node.prototype._decode = function decode(input) { var save = input.save(); try { if (state.choice === null) - this._decodeGeneric(state.tag, input); + this._decodeGeneric(state.tag, input, options); else - this._decodeChoice(input); + this._decodeChoice(input, options); present = true; } catch (e) { present = false; @@ -10380,6 +10506,8 @@ Node.prototype._decode = function decode(input) { input = explicit; } + var start = input.offset; + // Unwrap implicit and normal values if (state.use === null && state.choice === null) { if (state.any) @@ -10398,13 +10526,19 @@ Node.prototype._decode = function decode(input) { input = body; } + if (options && options.track && state.tag !== null) + options.track(input.path(), start, input.length, 'tagged'); + + if (options && options.track && state.tag !== null) + options.track(input.path(), input.offset, input.length, 'content'); + // Select proper method for tag if (state.any) result = result; else if (state.choice === null) - result = this._decodeGeneric(state.tag, input); + result = this._decodeGeneric(state.tag, input, options); else - result = this._decodeChoice(input); + result = this._decodeChoice(input, options); if (input.isError(result)) return result; @@ -10414,14 +10548,15 @@ Node.prototype._decode = function decode(input) { state.children.forEach(function decodeChildren(child) { // NOTE: We are ignoring errors here, to let parser continue with other // parts of encoded data - child._decode(input); + child._decode(input, options); }); } // Decode contained/encoded by schema, only in bit or octet strings if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj)._decode(data); + result = this._getUse(state.contains, input._reporterState.obj) + ._decode(data, options); } } @@ -10432,35 +10567,40 @@ Node.prototype._decode = function decode(input) { // Set key if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result); + else if (prevKey !== null) + input.exitKey(prevKey); return result; }; -Node.prototype._decodeGeneric = function decodeGeneric(tag, input) { +Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { var state = this._baseState; if (tag === 'seq' || tag === 'set') return null; if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0]); + return this._decodeList(input, tag, state.args[0], options); else if (/str$/.test(tag)) - return this._decodeStr(input, tag); + return this._decodeStr(input, tag, options); else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1]); + return this._decodeObjid(input, state.args[0], state.args[1], options); else if (tag === 'objid') - return this._decodeObjid(input, null, null); + return this._decodeObjid(input, null, null, options); else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag); + return this._decodeTime(input, tag, options); else if (tag === 'null_') - return this._decodeNull(input); + return this._decodeNull(input, options); else if (tag === 'bool') - return this._decodeBool(input); + return this._decodeBool(input, options); else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0]); - else if (state.use !== null) - return this._getUse(state.use, input._reporterState.obj)._decode(input); - else + return this._decodeInt(input, state.args && state.args[0], options); + + if (state.use !== null) { + return this._getUse(state.use, input._reporterState.obj) + ._decode(input, options); + } else { return input.error('unknown tag: ' + tag); + } }; Node.prototype._getUse = function _getUse(entity, obj) { @@ -10477,7 +10617,7 @@ Node.prototype._getUse = function _getUse(entity, obj) { return state.useDecoder; }; -Node.prototype._decodeChoice = function decodeChoice(input) { +Node.prototype._decodeChoice = function decodeChoice(input, options) { var state = this._baseState; var result = null; var match = false; @@ -10486,7 +10626,7 @@ Node.prototype._decodeChoice = function decodeChoice(input) { var save = input.save(); var node = state.choice[key]; try { - var value = node._decode(input); + var value = node._decode(input, options); if (input.isError(value)) return false; @@ -10701,14 +10841,24 @@ Reporter.prototype.enterKey = function enterKey(key) { return this._reporterState.path.push(key); }; -Reporter.prototype.leaveKey = function leaveKey(index, key, value) { +Reporter.prototype.exitKey = function exitKey(index) { var state = this._reporterState; state.path = state.path.slice(0, index - 1); +}; + +Reporter.prototype.leaveKey = function leaveKey(index, key, value) { + var state = this._reporterState; + + this.exitKey(index); if (state.obj !== null) state.obj[key] = value; }; +Reporter.prototype.path = function path() { + return this._reporterState.path.join('/'); +}; + Reporter.prototype.enterObject = function enterObject() { var state = this._reporterState; @@ -10780,7 +10930,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":119}],34:[function(require,module,exports){ +},{"inherits":120}],34:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -10956,14 +11106,15 @@ DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { } }; -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder) { +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, + options) { var result = []; while (!buffer.isEmpty()) { var possibleEnd = this._peekTag(buffer, 'end'); if (buffer.isError(possibleEnd)) return possibleEnd; - var res = decoder.decode(buffer, 'der'); + var res = decoder.decode(buffer, 'der', options); if (buffer.isError(res) && possibleEnd) break; result.push(res); @@ -11168,7 +11319,7 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":28,"inherits":119}],37:[function(require,module,exports){ +},{"../../asn1":28,"inherits":120}],37:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); @@ -11225,7 +11376,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":36,"buffer":73,"inherits":119}],39:[function(require,module,exports){ +},{"./der":36,"buffer":73,"inherits":120}],39:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -11520,7 +11671,7 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":28,"buffer":73,"inherits":119}],40:[function(require,module,exports){ +},{"../../asn1":28,"buffer":73,"inherits":120}],40:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); @@ -11549,7 +11700,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":39,"inherits":119}],42:[function(require,module,exports){ +},{"./der":39,"inherits":120}],42:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { @@ -11733,8 +11884,12 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; } BN.isBN = function isBN (num) { + if (num instanceof BN) { + return true; + } + return num !== null && typeof num === 'object' && - num.constructor.name === 'BN' && Array.isArray(num.words); + num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); }; BN.max = function max (left, right) { @@ -13775,6 +13930,10 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; assert(this.negative === 0, 'imaskn works only with positive numbers'); + if (this.length <= s) { + return this; + } + if (r !== 0) { s++; } @@ -15441,7 +15600,7 @@ function xorTest (a, b) { }).call(this,require("buffer").Buffer) -},{"./aes":46,"./ghash":51,"buffer":73,"buffer-xor":72,"cipher-base":74,"inherits":119}],48:[function(require,module,exports){ +},{"./aes":46,"./ghash":51,"buffer":73,"buffer-xor":72,"cipher-base":75,"inherits":120}],48:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -15596,7 +15755,7 @@ exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":74,"evp_bytestokey":110,"inherits":119}],50:[function(require,module,exports){ +},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":75,"evp_bytestokey":111,"inherits":120}],50:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -15723,7 +15882,7 @@ exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":74,"evp_bytestokey":110,"inherits":119}],51:[function(require,module,exports){ +},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":75,"evp_bytestokey":111,"inherits":120}],51:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -16208,7 +16367,7 @@ StreamCipher.prototype._final = function () { }).call(this,require("buffer").Buffer) -},{"./aes":46,"buffer":73,"cipher-base":74,"inherits":119}],61:[function(require,module,exports){ +},{"./aes":46,"buffer":73,"cipher-base":75,"inherits":120}],61:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -16283,7 +16442,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":48,"browserify-aes/modes":52,"browserify-des":62,"browserify-des/modes":63,"evp_bytestokey":110}],62:[function(require,module,exports){ +},{"browserify-aes/browser":48,"browserify-aes/modes":52,"browserify-des":62,"browserify-des/modes":63,"evp_bytestokey":111}],62:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -16331,7 +16490,7 @@ DES.prototype._final = function () { }).call(this,require("buffer").Buffer) -},{"buffer":73,"cipher-base":74,"des.js":82,"inherits":119}],63:[function(require,module,exports){ +},{"buffer":73,"cipher-base":75,"des.js":83,"inherits":120}],63:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -16587,7 +16746,7 @@ module.exports = { }).call(this,require("buffer").Buffer) -},{"./algos":65,"./sign":68,"./verify":69,"buffer":73,"create-hash":77,"inherits":119,"stream":159}],67:[function(require,module,exports){ +},{"./algos":65,"./sign":68,"./verify":69,"buffer":73,"create-hash":78,"inherits":120,"stream":149}],67:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -16791,7 +16950,7 @@ module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":67,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hmac":80,"elliptic":92,"parse-asn1":128}],69:[function(require,module,exports){ +},{"./curves":67,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hmac":81,"elliptic":93,"parse-asn1":128}],69:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -16899,7 +17058,7 @@ module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":67,"bn.js":43,"buffer":73,"elliptic":92,"parse-asn1":128}],70:[function(require,module,exports){ +},{"./curves":67,"bn.js":43,"buffer":73,"elliptic":93,"parse-asn1":128}],70:[function(require,module,exports){ arguments[4][45][0].apply(exports,arguments) },{"dup":45}],71:[function(require,module,exports){ (function (global){ @@ -18582,7 +18741,14 @@ function blitBuffer (src, dst, offset, length) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":42,"ieee754":117,"isarray":121}],74:[function(require,module,exports){ +},{"base64-js":42,"ieee754":118,"isarray":74}],74:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],75:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -18677,7 +18843,7 @@ CipherBase.prototype._toString = function (value, enc, final) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"inherits":119,"stream":159,"string_decoder":160}],75:[function(require,module,exports){ +},{"buffer":73,"inherits":120,"stream":149,"string_decoder":162}],76:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -18789,7 +18955,7 @@ function objectToString(o) { }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":120}],76:[function(require,module,exports){ +},{"../../is-buffer/index.js":121}],77:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -18916,7 +19082,7 @@ function formatReturnValue(bn, enc, len) { }).call(this,require("buffer").Buffer) -},{"bn.js":43,"buffer":73,"elliptic":92}],77:[function(require,module,exports){ +},{"bn.js":43,"buffer":73,"elliptic":93}],78:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -18973,7 +19139,7 @@ module.exports = function createHash (alg) { }).call(this,require("buffer").Buffer) -},{"./md5":79,"buffer":73,"cipher-base":74,"inherits":119,"ripemd160":150,"sha.js":152}],78:[function(require,module,exports){ +},{"./md5":80,"buffer":73,"cipher-base":75,"inherits":120,"ripemd160":140,"sha.js":142}],79:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -19011,7 +19177,7 @@ function hash(buf, fn, hashSize, bigEndian) { exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":73}],79:[function(require,module,exports){ +},{"buffer":73}],80:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -19168,7 +19334,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":78}],80:[function(require,module,exports){ +},{"./helpers":79}],81:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -19241,7 +19407,7 @@ module.exports = function createHmac(alg, key) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash/browser":77,"inherits":119,"stream":159}],81:[function(require,module,exports){ +},{"buffer":73,"create-hash/browser":78,"inherits":120,"stream":149}],82:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -19320,7 +19486,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":61,"browserify-sign":66,"browserify-sign/algos":65,"create-ecdh":76,"create-hash":77,"create-hmac":80,"diffie-hellman":88,"pbkdf2":130,"public-encrypt":133,"randombytes":139}],82:[function(require,module,exports){ +},{"browserify-cipher":61,"browserify-sign":66,"browserify-sign/algos":65,"create-ecdh":77,"create-hash":78,"create-hmac":81,"diffie-hellman":89,"pbkdf2":130,"public-encrypt":133,"randombytes":139}],83:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -19329,7 +19495,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":83,"./des/cipher":84,"./des/des":85,"./des/ede":86,"./des/utils":87}],83:[function(require,module,exports){ +},{"./des/cbc":84,"./des/cipher":85,"./des/des":86,"./des/ede":87,"./des/utils":88}],84:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19396,7 +19562,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":119,"minimalistic-assert":123}],84:[function(require,module,exports){ +},{"inherits":120,"minimalistic-assert":123}],85:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19539,7 +19705,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":123}],85:[function(require,module,exports){ +},{"minimalistic-assert":123}],86:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19684,7 +19850,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":82,"inherits":119,"minimalistic-assert":123}],86:[function(require,module,exports){ +},{"../des":83,"inherits":120,"minimalistic-assert":123}],87:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19741,7 +19907,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":82,"inherits":119,"minimalistic-assert":123}],87:[function(require,module,exports){ +},{"../des":83,"inherits":120,"minimalistic-assert":123}],88:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -19999,7 +20165,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],88:[function(require,module,exports){ +},{}],89:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -20046,7 +20212,7 @@ exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":89,"./lib/generatePrime":90,"./lib/primes.json":91,"buffer":73}],89:[function(require,module,exports){ +},{"./lib/dh":90,"./lib/generatePrime":91,"./lib/primes.json":92,"buffer":73}],90:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -20215,7 +20381,7 @@ function formatReturnValue(bn, enc) { }).call(this,require("buffer").Buffer) -},{"./generatePrime":90,"bn.js":43,"buffer":73,"miller-rabin":122,"randombytes":139}],90:[function(require,module,exports){ +},{"./generatePrime":91,"bn.js":43,"buffer":73,"miller-rabin":122,"randombytes":139}],91:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -20322,7 +20488,7 @@ function findPrime(bits, gen) { } -},{"bn.js":43,"miller-rabin":122,"randombytes":139}],91:[function(require,module,exports){ +},{"bn.js":43,"miller-rabin":122,"randombytes":139}],92:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -20357,7 +20523,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],92:[function(require,module,exports){ +},{}],93:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -20373,7 +20539,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":108,"./elliptic/curve":95,"./elliptic/curves":98,"./elliptic/ec":99,"./elliptic/eddsa":102,"./elliptic/hmac-drbg":105,"./elliptic/utils":107,"brorand":44}],93:[function(require,module,exports){ +},{"../package.json":109,"./elliptic/curve":96,"./elliptic/curves":99,"./elliptic/ec":100,"./elliptic/eddsa":103,"./elliptic/hmac-drbg":106,"./elliptic/utils":108,"brorand":44}],94:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -20750,7 +20916,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":92,"bn.js":43}],94:[function(require,module,exports){ +},{"../../elliptic":93,"bn.js":43}],95:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -21185,7 +21351,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],95:[function(require,module,exports){ +},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],96:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -21195,7 +21361,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":93,"./edwards":94,"./mont":96,"./short":97}],96:[function(require,module,exports){ +},{"./base":94,"./edwards":95,"./mont":97,"./short":98}],97:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -21377,7 +21543,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],97:[function(require,module,exports){ +},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],98:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -22317,7 +22483,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],98:[function(require,module,exports){ +},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],99:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -22524,7 +22690,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":92,"./precomputed/secp256k1":106,"hash.js":111}],99:[function(require,module,exports){ +},{"../elliptic":93,"./precomputed/secp256k1":107,"hash.js":112}],100:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -22762,7 +22928,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":92,"./key":100,"./signature":101,"bn.js":43}],100:[function(require,module,exports){ +},{"../../elliptic":93,"./key":101,"./signature":102,"bn.js":43}],101:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -22871,7 +23037,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"bn.js":43}],101:[function(require,module,exports){ +},{"bn.js":43}],102:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -23008,7 +23174,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":92,"bn.js":43}],102:[function(require,module,exports){ +},{"../../elliptic":93,"bn.js":43}],103:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -23128,7 +23294,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":92,"./key":103,"./signature":104,"hash.js":111}],103:[function(require,module,exports){ +},{"../../elliptic":93,"./key":104,"./signature":105,"hash.js":112}],104:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -23226,7 +23392,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":92}],104:[function(require,module,exports){ +},{"../../elliptic":93}],105:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -23294,7 +23460,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":92,"bn.js":43}],105:[function(require,module,exports){ +},{"../../elliptic":93,"bn.js":43}],106:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -23410,7 +23576,7 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { return utils.encode(res, enc); }; -},{"../elliptic":92,"hash.js":111}],106:[function(require,module,exports){ +},{"../elliptic":93,"hash.js":112}],107:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -24192,7 +24358,7 @@ module.exports = { } }; -},{}],107:[function(require,module,exports){ +},{}],108:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -24366,19 +24532,12 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":43}],108:[function(require,module,exports){ +},{"bn.js":43}],109:[function(require,module,exports){ module.exports={ "_args": [ [ - { - "name": "elliptic", - "raw": "elliptic@^6.0.0", - "rawSpec": "^6.0.0", - "scope": null, - "spec": ">=6.0.0 <7.0.0", - "type": "range" - }, - "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign" + "elliptic@^6.0.0", + "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign" ] ], "_from": "elliptic@>=6.0.0 <7.0.0", @@ -24409,11 +24568,11 @@ module.exports={ "/browserify-sign", "/create-ecdh" ], - "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", + "_resolved": "http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", "_shasum": "17781f2109ab0ec686b146bdcff5d2e8c6aeceda", "_shrinkwrap": null, "_spec": "elliptic@^6.0.0", - "_where": "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign", + "_where": "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign", "author": { "email": "fedor@indutny.com", "name": "Fedor Indutny" @@ -24485,7 +24644,7 @@ module.exports={ "version": "6.3.1" } -},{}],109:[function(require,module,exports){ +},{}],110:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -24788,7 +24947,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],110:[function(require,module,exports){ +},{}],111:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -24861,7 +25020,7 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash/md5":79}],111:[function(require,module,exports){ +},{"buffer":73,"create-hash/md5":80}],112:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -24878,7 +25037,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":112,"./hash/hmac":113,"./hash/ripemd":114,"./hash/sha":115,"./hash/utils":116}],112:[function(require,module,exports){ +},{"./hash/common":113,"./hash/hmac":114,"./hash/ripemd":115,"./hash/sha":116,"./hash/utils":117}],113:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -24971,7 +25130,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":111}],113:[function(require,module,exports){ +},{"../hash":112}],114:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -25021,7 +25180,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":111}],114:[function(require,module,exports){ +},{"../hash":112}],115:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -25167,7 +25326,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":111}],115:[function(require,module,exports){ +},{"../hash":112}],116:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -25733,7 +25892,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":111}],116:[function(require,module,exports){ +},{"../hash":112}],117:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -25992,7 +26151,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":119}],117:[function(require,module,exports){ +},{"inherits":120}],118:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -26078,7 +26237,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],118:[function(require,module,exports){ +},{}],119:[function(require,module,exports){ var indexOf = [].indexOf; @@ -26089,7 +26248,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],119:[function(require,module,exports){ +},{}],120:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -26114,31 +26273,28 @@ if (typeof Object.create === 'function') { } } -},{}],120:[function(require,module,exports){ -/** - * Determine if an object is Buffer - * - * Author: Feross Aboukhadijeh - * License: MIT +},{}],121:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer * - * `npm install is-buffer` + * @author Feross Aboukhadijeh + * @license MIT */ +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually module.exports = function (obj) { - return !!(obj != null && - (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor) - (obj.constructor && - typeof obj.constructor.isBuffer === 'function' && - obj.constructor.isBuffer(obj)) - )) + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) } -},{}],121:[function(require,module,exports){ -var toString = {}.toString; +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} },{}],122:[function(require,module,exports){ var bn = require('bn.js'); @@ -26483,7 +26639,7 @@ module.exports = function (okey, password) { }).call(this,require("buffer").Buffer) -},{"browserify-aes":48,"buffer":73,"evp_bytestokey":110}],128:[function(require,module,exports){ +},{"browserify-aes":48,"buffer":73,"evp_bytestokey":111}],128:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -26903,7 +27059,7 @@ function pbkdf2Sync (password, salt, iterations, keylen, digest) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hmac":80}],131:[function(require,module,exports){ +},{"buffer":73,"create-hmac":81}],131:[function(require,module,exports){ (function (process){ 'use strict'; @@ -26953,7 +27109,6 @@ function nextTick(fn, arg1, arg2, arg3) { },{"_process":132}],132:[function(require,module,exports){ // shim for using process in browser - var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it @@ -26965,21 +27120,63 @@ var cachedSetTimeout; var cachedClearTimeout; (function () { - try { - cachedSetTimeout = setTimeout; - } catch (e) { - cachedSetTimeout = function () { - throw new Error('setTimeout is not defined'); + try { + cachedSetTimeout = setTimeout; + } catch (e) { + cachedSetTimeout = function () { + throw new Error('setTimeout is not defined'); + } } - } - try { - cachedClearTimeout = clearTimeout; - } catch (e) { - cachedClearTimeout = function () { - throw new Error('clearTimeout is not defined'); + try { + cachedClearTimeout = clearTimeout; + } catch (e) { + cachedClearTimeout = function () { + throw new Error('clearTimeout is not defined'); + } } - } } ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} var queue = []; var draining = false; var currentQueue; @@ -27004,7 +27201,7 @@ function drainQueue() { if (draining) { return; } - var timeout = cachedSetTimeout(cleanUpNextTick); + var timeout = runTimeout(cleanUpNextTick); draining = true; var len = queue.length; @@ -27021,7 +27218,7 @@ function drainQueue() { } currentQueue = null; draining = false; - cachedClearTimeout(timeout); + runClearTimeout(timeout); } process.nextTick = function (fun) { @@ -27033,7 +27230,7 @@ process.nextTick = function (fun) { } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { - cachedSetTimeout(drainQueue, 0); + runTimeout(drainQueue); } }; @@ -27103,7 +27300,7 @@ function i2ops(c) { } }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash":77}],135:[function(require,module,exports){ +},{"buffer":73,"create-hash":78}],135:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -27215,7 +27412,7 @@ function compare(a, b){ } }).call(this,require("buffer").Buffer) -},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":77,"parse-asn1":128}],136:[function(require,module,exports){ +},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":78,"parse-asn1":128}],136:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -27314,7 +27511,7 @@ function nonZero(len, crypto) { } }).call(this,require("buffer").Buffer) -},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":77,"parse-asn1":128,"randombytes":139}],137:[function(require,module,exports){ +},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":78,"parse-asn1":128,"randombytes":139}],137:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -27379,2907 +27576,3018 @@ function randomBytes (size, cb) { }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) },{"_process":132,"buffer":73}],140:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") +(function (Buffer){ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** @preserve +(c) 2012 by Cédric Mesnil. All rights reserved. -},{"./lib/_stream_duplex.js":141}],141:[function(require,module,exports){ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -'use strict'; + - 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. -/**/ +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 HOLDER 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. +*/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ +// constants table +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] -module.exports = Duplex; +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] -/**/ -var processNextTick = require('process-nextick-args'); -/**/ +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); +var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] +var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] -util.inherits(Duplex, Readable); +function bytesToWords (bytes) { + var words = [] + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { + words[b >>> 5] |= bytes[i] << (24 - b % 32) + } + return words +} -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +function wordsToBytes (words) { + var bytes = [] + for (var b = 0; b < words.length * 32; b += 8) { + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) + } + return bytes } -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); +function processBlock (H, M, offset) { + // swap endian + for (var i = 0; i < 16; i++) { + var offset_i = offset + i + var M_offset_i = M[offset_i] - Readable.call(this, options); - Writable.call(this, options); + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ) + } - if (options && options.readable === false) this.readable = false; + // Working variables + var al, bl, cl, dl, el + var ar, br, cr, dr, er - if (options && options.writable === false) this.writable = false; + ar = al = H[0] + br = bl = H[1] + cr = cl = H[2] + dr = dl = H[3] + er = el = H[4] - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + // computation + var t + for (i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0 + if (i < 16) { + t += f1(bl, cl, dl) + hl[0] + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1] + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2] + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3] + } else {// if (i<80) { + t += f5(bl, cl, dl) + hl[4] + } + t = t | 0 + t = rotl(t, sl[i]) + t = (t + el) | 0 + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = t - this.once('end', onend); -} + t = (ar + M[offset + zr[i]]) | 0 + if (i < 16) { + t += f5(br, cr, dr) + hr[0] + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1] + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2] + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3] + } else {// if (i<80) { + t += f1(br, cr, dr) + hr[4] + } -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; + t = t | 0 + t = rotl(t, sr[i]) + t = (t + er) | 0 + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = t + } - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); + // intermediate hash value + t = (H[1] + cl + dr) | 0 + H[1] = (H[2] + dl + er) | 0 + H[2] = (H[3] + el + ar) | 0 + H[3] = (H[4] + al + br) | 0 + H[4] = (H[0] + bl + cr) | 0 + H[0] = t } -function onEndNT(self) { - self.end(); +function f1 (x, y, z) { + return ((x) ^ (y) ^ (z)) } -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } +function f2 (x, y, z) { + return (((x) & (y)) | ((~x) & (z))) } -},{"./_stream_readable":143,"./_stream_writable":145,"core-util-is":75,"inherits":119,"process-nextick-args":131}],142:[function(require,module,exports){ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +function f3 (x, y, z) { + return (((x) | (~(y))) ^ (z)) +} -util.inherits(PassThrough, Transform); +function f4 (x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))) +} -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); +function f5 (x, y, z) { + return ((x) ^ ((y) | (~(z)))) +} - Transform.call(this, options); +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) } -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":144,"core-util-is":75,"inherits":119}],143:[function(require,module,exports){ -(function (process){ -'use strict'; +function ripemd160 (message) { + var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] -module.exports = Readable; + if (typeof message === 'string') { + message = new Buffer(message, 'utf8') + } -/**/ -var processNextTick = require('process-nextick-args'); -/**/ + var m = bytesToWords(message) -/**/ -var isArray = require('isarray'); -/**/ + var nBitsLeft = message.length * 8 + var nBitsTotal = message.length * 8 -Readable.ReadableState = ReadableState; + // Add padding + m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) + m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ) -/**/ -var EE = require('events').EventEmitter; + for (var i = 0; i < m.length; i += 16) { + processBlock(H, m, i) + } -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ + // swap endian + for (i = 0; i < 5; i++) { + // shortcut + var H_i = H[i] -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) } -})(); -/**/ -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ + var digestbytes = wordsToBytes(H) + return new Buffer(digestbytes) +} -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +module.exports = ripemd160 -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; +}).call(this,require("buffer").Buffer) + +},{"buffer":73}],141:[function(require,module,exports){ +(function (Buffer){ +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = new Buffer(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 + this._s = 0 } -/**/ -var StringDecoder; +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = new Buffer(data, enc) + } -util.inherits(Readable, Stream); + var l = this._len += data.length + var s = this._s || 0 + var f = 0 + var buffer = this._block -var hasPrependListener = typeof EE.prototype.prependListener === 'function'; + while (s < l) { + var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) + var ch = (t - f) -function prependListener(emitter, event, fn) { - if (hasPrependListener) return emitter.prependListener(event, fn); + for (var i = 0; i < ch; i++) { + buffer[(s % this._blockSize) + i] = data[i + f] + } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. This is here - // only because this code needs to continue to work with older versions - // of Node.js that do not include the prependListener() method. The goal - // is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; -} + s += ch + f += ch -var Duplex; -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); + if ((s % this._blockSize) === 0) { + this._update(buffer) + } + } + this._s = s - options = options || {}; + return this +} - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; +Hash.prototype.digest = function (enc) { + // Suppose the length of the message M, in bits, is l + var l = this._len * 8 - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + // Append the bit 1 to the end of the message + this._block[this._len % this._blockSize] = 0x80 - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize + this._block.fill(0, this._len % this._blockSize + 1) - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + if (l % (this._blockSize * 8) >= this._finalSize * 8) { + this._update(this._block) + this._block.fill(0) + } - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + // to this append the block which is equal to the number l written in binary + // TODO: handle case where l is > Math.pow(2, 29) + this._block.writeInt32BE(l, this._blockSize - 4) - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + var hash = this._update(this._block) || this._hash() - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } + return enc ? hash.toString(enc) : hash } -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} - if (!(this instanceof Readable)) return new Readable(options); +module.exports = Hash - this._readableState = new ReadableState(options, this); +}).call(this,require("buffer").Buffer) - // legacy - this.readable = true; +},{"buffer":73}],142:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() - if (options && typeof options.read === 'function') this._read = options.read; + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - Stream.call(this); + return new Algorithm() } -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = bufferShim.from(chunk, encoding); - encoding = ''; - } - } +exports.sha = require('./sha') +exports.sha1 = require('./sha1') +exports.sha224 = require('./sha224') +exports.sha256 = require('./sha256') +exports.sha384 = require('./sha384') +exports.sha512 = require('./sha512') - return readableAddChunk(this, state, chunk, encoding, false); -}; +},{"./sha":143,"./sha1":144,"./sha224":145,"./sha256":146,"./sha384":147,"./sha512":148}],143:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; +var inherits = require('inherits') +var Hash = require('./hash') -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } +var W = new Array(80) - if (!addToFront) state.reading = false; +function Sha () { + this.init() + this._w = W - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + Hash.call(this, 64, 56) +} - if (state.needReadable) emitReadable(stream); - } - } +inherits(Sha, Hash) - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - return needMoreData(state); + return this } -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +function rotl5 (num) { + return (num << 5) | (num >>> 27) } -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; +function rotl30 (num) { + return (num << 30) | (num >>> 2) } -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) return 0; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} - if (state.objectMode) return n === 0 ? 0 : 1; +Sha.prototype._update = function (M) { + var W = this._w - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; - } + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - if (n <= 0) return 0; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else { - return state.length; - } + e = d + d = c + c = rotl30(b) + b = a + a = t } - return n; + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 } -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; +Sha.prototype._hash = function () { + var H = new Buffer(20) - if (typeof n !== 'number' || n > 0) state.emittedReadable = false; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } + return H +} - n = howMuchToRead(n, state); +module.exports = Sha - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. +}).call(this,require("buffer").Buffer) - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); +},{"./hash":141,"buffer":73,"inherits":120}],144:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } +var inherits = require('inherits') +var Hash = require('./hash') - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } +var W = new Array(80) - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) n = howMuchToRead(nOrig, state); +function Sha1 () { + this.init() + this._w = W - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; + Hash.call(this, 64, 56) +} - if (ret === null) { - state.needReadable = true; - n = 0; - } +inherits(Sha1, Hash) - state.length -= n; +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) state.needReadable = true; + return this +} - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) endReadable(this); +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} - if (ret !== null) this.emit('data', ret); +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} - return ret; -}; +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d } -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; +Sha1.prototype._update = function (M) { + var W = this._w - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } -} + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); + e = d + d = c + c = rotl30(b) + b = a + a = t } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 } -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; +Sha1.prototype._hash = function () { + var H = new Buffer(20) + + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) + + return H } -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; +module.exports = Sha1 -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; +}).call(this,require("buffer").Buffer) - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); +},{"./hash":141,"buffer":73,"inherits":120}],145:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; +var inherits = require('inherits') +var Sha256 = require('./sha256') +var Hash = require('./hash') - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); +var W = new Array(64) - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } +function Sha224 () { + this.init() - function onend() { - debug('onend'); - dest.end(); - } + this._w = W // new Array(64) - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); + Hash.call(this, 64, 56) +} - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); +inherits(Sha224, Sha256) - cleanedUp = true; +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } + return this +} - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - } - src.pause(); - } - } +Sha224.prototype._hash = function () { + var H = new Buffer(28) - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); + return H +} - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); +module.exports = Sha224 - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } +}).call(this,require("buffer").Buffer) - // tell the dest that it's being piped to - dest.emit('pipe', src); +},{"./hash":141,"./sha256":146,"buffer":73,"inherits":120}],146:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } +var inherits = require('inherits') +var Hash = require('./hash') - return dest; -}; +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} +var W = new Array(64) -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; +function Sha256 () { + this.init() - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; + this._w = W // new Array(64) - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; + Hash.call(this, 64, 56) +} - if (!dest) dest = state.pipes; +inherits(Sha256, Hash) - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 - // slow case. multiple pipe destinations. + return this +} - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} - dest.emit('unpipe', this); +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} - return this; -}; +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); +Sha256.prototype._update = function (M) { + var W = this._w - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 - if (ev === 'readable' && !this._readableState.endEmitted) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 } -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} +Sha256.prototype._hash = function () { + var H = new Buffer(32) -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); + return H } -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; +module.exports = Sha256 -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} +}).call(this,require("buffer").Buffer) -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; +},{"./hash":141,"buffer":73,"inherits":120}],147:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var SHA512 = require('./sha512') +var Hash = require('./hash') - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } +var W = new Array(160) - self.push(null); - }); +function Sha384 () { + this.init() + this._w = W - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); + Hash.call(this, 128, 112) +} - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; +inherits(Sha384, SHA512) - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); + return this +} - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; +Sha384.prototype._hash = function () { + var H = new Buffer(48) - return self; -}; + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } -// exposed for testing purposes only. -Readable._fromList = fromList; + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; + return H +} - // nothing in the list, definitely empty. - if (list.length === 0) return null; +module.exports = Sha384 - if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) ret = '';else ret = bufferShim.allocUnsafe(n); +}).call(this,require("buffer").Buffer) - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var _buf = list[0]; - var cpy = Math.min(n - c, _buf.length); +},{"./hash":141,"./sha512":148,"buffer":73,"inherits":120}],148:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var Hash = require('./hash') - if (stringMode) ret += _buf.slice(0, cpy);else _buf.copy(ret, c, 0, cpy); +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] - if (cpy < _buf.length) list[0] = _buf.slice(cpy);else list.shift(); +var W = new Array(160) - c += cpy; - } - } - } +function Sha512 () { + this.init() + this._w = W - return ret; + Hash.call(this, 128, 112) } -function endReadable(stream) { - var state = stream._readableState; +inherits(Sha512, Hash) - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this } -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) } -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } +function maj (x, y, z) { + return (x & y) | (z & (x | y)) } -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) } -}).call(this,require('_process')) -},{"./_stream_duplex":141,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":75,"events":109,"inherits":119,"isarray":121,"process-nextick-args":131,"string_decoder/":160,"util":45}],144:[function(require,module,exports){ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} -'use strict'; +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} -module.exports = Transform; +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} -var Duplex = require('./_stream_duplex'); +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} -util.inherits(Transform, Duplex); +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; +Sha512.prototype._update = function (M) { + var W = this._w - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 - var cb = ts.writecb; + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) - ts.writechunk = null; - ts.writecb = null; + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] - if (data !== null && data !== undefined) stream.push(data); + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] - cb(er); + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); + W[i] = Wih + W[i + 1] = Wil } -} -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] - Duplex.call(this, options); + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) - this._transformState = new TransformState(this); + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) - // when the writable side finishes, then flush out anything remaining. - var stream = this; + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 - if (typeof options.flush === 'function') this._flush = options.flush; + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 } - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); -} + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; +Sha512.prototype._hash = function () { + var H = new Buffer(64) -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) } -}; -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; + return H +} -function done(stream, er) { - if (er) return stream.emit('error', er); +module.exports = Sha512 - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; +}).call(this,require("buffer").Buffer) - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); +},{"./hash":141,"buffer":73,"inherits":120}],149:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. - if (ts.transforming) throw new Error('Calling transform done when still transforming'); +module.exports = Stream; - return stream.push(null); -} -},{"./_stream_duplex":141,"core-util-is":75,"inherits":119}],145:[function(require,module,exports){ -(function (process){ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. +var EE = require('events').EventEmitter; +var inherits = require('inherits'); -'use strict'; +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); -module.exports = Writable; +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; -/**/ -var processNextTick = require('process-nextick-args'); -/**/ -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ -Writable.WritableState = WritableState; +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +function Stream() { + EE.call(this); +} -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ +Stream.prototype.pipe = function(dest, options) { + var source = this; -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } } -})(); -/**/ -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ + source.on('data', ondata); -util.inherits(Writable, Stream); + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } -function nop() {} + dest.on('drain', ondrain); -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; - options = options || {}; + dest.end(); + } - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + function onclose() { + if (didOnEnd) return; + didOnEnd = true; - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; + if (typeof dest.destroy === 'function') dest.destroy(); + } - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; + source.on('error', onerror); + dest.on('error', onerror); - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; + source.removeListener('end', onend); + source.removeListener('close', onclose); - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; + source.removeListener('error', onerror); + dest.removeListener('error', onerror); - // a flag to see when we're in the middle of a write. - this.writing = false; + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); - // when true all writes will be buffered until .uncork() call - this.corked = 0; + dest.removeListener('close', cleanup); + } - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + source.on('end', cleanup); + source.on('close', cleanup); - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; + dest.on('close', cleanup); - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; + dest.emit('pipe', source); - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; - // the amount that is being written when _write is called. - this.writelen = 0; +},{"events":110,"inherits":120,"readable-stream/duplex.js":151,"readable-stream/passthrough.js":158,"readable-stream/readable.js":159,"readable-stream/transform.js":160,"readable-stream/writable.js":161}],150:[function(require,module,exports){ +arguments[4][74][0].apply(exports,arguments) +},{"dup":74}],151:[function(require,module,exports){ +module.exports = require("./lib/_stream_duplex.js") - this.bufferedRequest = null; - this.lastBufferedRequest = null; +},{"./lib/_stream_duplex.js":152}],152:[function(require,module,exports){ +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; +'use strict'; - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; +/**/ - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ - // count buffered requests - this.bufferedRequestCount = 0; +module.exports = Duplex; - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} +/**/ +var processNextTick = require('process-nextick-args'); +/**/ -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); +util.inherits(Duplex, Readable); - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); +var keys = objectKeys(Writable.prototype); +for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; +} - this._writableState = new WritableState(options, this); +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); - // legacy. - this.writable = true; + Readable.call(this, options); + Writable.call(this, options); - if (options) { - if (typeof options.write === 'function') this._write = options.write; + if (options && options.readable === false) this.readable = false; - if (typeof options.writev === 'function') this._writev = options.writev; - } + if (options && options.writable === false) this.writable = false; - Stream.call(this); + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); } -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); + // no more data can be written. + // But allow more writes to happen in this tick. + processNextTick(onEndNT, this); } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - processNextTick(cb, er); - valid = false; +function onEndNT(self) { + self.end(); +} + +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); } - return valid; } +},{"./_stream_readable":154,"./_stream_writable":156,"core-util-is":76,"inherits":120,"process-nextick-args":131}],153:[function(require,module,exports){ +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; +'use strict'; - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } +module.exports = PassThrough; - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; +var Transform = require('./_stream_transform'); - if (typeof cb !== 'function') cb = nop; +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } +util.inherits(PassThrough, Transform); - return ret; -}; +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); -Writable.prototype.cork = function () { - var state = this._writableState; + Transform.call(this, options); +} - state.corked++; +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); }; +},{"./_stream_transform":155,"core-util-is":76,"inherits":120}],154:[function(require,module,exports){ +(function (process){ +'use strict'; -Writable.prototype.uncork = function () { - var state = this._writableState; +module.exports = Readable; - if (state.corked) { - state.corked--; +/**/ +var processNextTick = require('process-nextick-args'); +/**/ - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; +/**/ +var isArray = require('isarray'); +/**/ -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; }; +/**/ -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = bufferShim.from(chunk, encoding); +/**/ +var Stream; +(function () { + try { + Stream = require('st' + 'ream'); + } catch (_) {} finally { + if (!Stream) Stream = require('events').EventEmitter; } - return chunk; -} +})(); +/**/ -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - state.length += len; +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; +var BufferList = require('./internal/streams/BufferList'); +var StringDecoder; - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; +util.inherits(Readable, Stream); + +function prependListener(emitter, event, fn) { + if (typeof emitter.prependListener === 'function') { + return emitter.prependListener(event, fn); } else { - doWrite(stream, state, false, len, chunk, encoding, cb); + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; } - - return ret; } -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} +var Duplex; +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); + options = options || {}; - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - onwriteStateUpdate(state); + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } + // if true, a maybeReadMore has been scheduled + this.readingMore = false; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; +var Duplex; +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } + if (!(this instanceof Readable)) return new Readable(options); - if (entry === null) state.lastBufferedRequest = null; - } + this._readableState = new ReadableState(options, this); - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} + // legacy + this.readable = true; -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; + if (options && typeof options.read === 'function') this._read = options.read; -Writable.prototype._writev = null; + Stream.call(this); +} -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; + if (!state.objectMode && typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = bufferShim.from(chunk, encoding); + encoding = ''; + } } - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + return readableAddChunk(this, state, chunk, encoding, false); +}; - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; }; -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var _e = new Error('stream.unshift() after end event'); + stream.emit('error', _e); + } else { + var skipAdd; + if (state.decoder && !addToFront && !encoding) { + chunk = state.decoder.write(chunk); + skipAdd = !state.objectMode && chunk.length === 0; + } -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} + if (!addToFront) state.reading = false; -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); + // Don't add to the buffer if we've decoded to an empty string chunk and + // we're not in object mode + if (!skipAdd) { + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + } + + maybeReadMore(stream, state); } + } else if (!addToFront) { + state.reading = false; } - return need; -} -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; + return needMoreData(state); } -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} - this.next = null; - this.entry = null; +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; } -}).call(this,require('_process')) -},{"./_stream_duplex":141,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":75,"events":109,"inherits":119,"process-nextick-args":131,"util-deprecate":161}],146:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} -},{"./lib/_stream_passthrough.js":142}],147:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} + if (n !== 0) state.emittedReadable = false; -}).call(this,require('_process')) + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } -},{"./lib/_stream_duplex.js":141,"./lib/_stream_passthrough.js":142,"./lib/_stream_readable.js":143,"./lib/_stream_transform.js":144,"./lib/_stream_writable.js":145,"_process":132}],148:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") + n = howMuchToRead(n, state); -},{"./lib/_stream_transform.js":144}],149:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } -},{"./lib/_stream_writable.js":145}],150:[function(require,module,exports){ -(function (Buffer){ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/** @preserve -(c) 2012 by Cédric Mesnil. All rights reserved. + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); - - 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. + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } -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 HOLDER 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. -*/ + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } -// constants table -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } -var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] -var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] + if (ret !== null) this.emit('data', ret); -function bytesToWords (bytes) { - var words = [] - for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { - words[b >>> 5] |= bytes[i] << (24 - b % 32) + return ret; +}; + +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); } - return words + return er; } -function wordsToBytes (words) { - var bytes = [] - for (var b = 0; b < words.length * 32; b += 8) { - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } } - return bytes -} + state.ended = true; -function processBlock (H, M, offset) { - // swap endian - for (var i = 0; i < 16; i++) { - var offset_i = offset + i - var M_offset_i = M[offset_i] + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ) +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); } +} - // Working variables - var al, bl, cl, dl, el - var ar, br, cr, dr, er +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} - ar = al = H[0] - br = bl = H[1] - cr = cl = H[2] - dr = dl = H[3] - er = el = H[4] +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + processNextTick(maybeReadMore_, stream, state); + } +} - // computation - var t - for (i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0 - if (i < 16) { - t += f1(bl, cl, dl) + hl[0] - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1] - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2] - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3] - } else {// if (i<80) { - t += f5(bl, cl, dl) + hl[4] - } - t = t | 0 - t = rotl(t, sl[i]) - t = (t + el) | 0 - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = t +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} - t = (ar + M[offset + zr[i]]) | 0 - if (i < 16) { - t += f5(br, cr, dr) + hr[0] - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1] - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2] - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3] - } else {// if (i<80) { - t += f1(br, cr, dr) + hr[4] - } +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('not implemented')); +}; - t = t | 0 - t = rotl(t, sr[i]) - t = (t + er) | 0 - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = t - } +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; - // intermediate hash value - t = (H[1] + cl + dr) | 0 - H[1] = (H[2] + dl + er) | 0 - H[2] = (H[3] + el + ar) | 0 - H[3] = (H[4] + al + br) | 0 - H[4] = (H[0] + bl + cr) | 0 - H[0] = t -} + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); -function f1 (x, y, z) { - return ((x) ^ (y) ^ (z)) -} + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; -function f2 (x, y, z) { - return (((x) & (y)) | ((~x) & (z))) -} + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); -function f3 (x, y, z) { - return (((x) | (~(y))) ^ (z)) -} + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); + } + } -function f4 (x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))) -} + function onend() { + debug('onend'); + dest.end(); + } -function f5 (x, y, z) { - return ((x) ^ ((y) | (~(z)))) -} + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) -} + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); -function ripemd160 (message) { - var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] + cleanedUp = true; - if (typeof message === 'string') { - message = new Buffer(message, 'utf8') + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } - var m = bytesToWords(message) + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } - var nBitsLeft = message.length * 8 - var nBitsTotal = message.length * 8 + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } - // Add padding - m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) - m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ) + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); - for (var i = 0; i < m.length; i += 16) { - processBlock(H, m, i) + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); } + dest.once('finish', onfinish); - // swap endian - for (i = 0; i < 5; i++) { - // shortcut - var H_i = H[i] + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); } - var digestbytes = wordsToBytes(H) - return new Buffer(digestbytes) + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; } -module.exports = ripemd160 +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; -}).call(this,require("buffer").Buffer) + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; -},{"buffer":73}],151:[function(require,module,exports){ -(function (Buffer){ -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = new Buffer(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 - this._s = 0 -} + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = new Buffer(data, enc) + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this); + return this; } - var l = this._len += data.length - var s = this._s || 0 - var f = 0 - var buffer = this._block + // slow case. multiple pipe destinations. - while (s < l) { - var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) - var ch = (t - f) + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; - for (var i = 0; i < ch; i++) { - buffer[(s % this._blockSize) + i] = data[i + f] - } + for (var _i = 0; _i < len; _i++) { + dests[_i].emit('unpipe', this); + }return this; + } - s += ch - f += ch + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) return this; - if ((s % this._blockSize) === 0) { - this._update(buffer) - } - } - this._s = s + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; - return this -} + dest.emit('unpipe', this); -Hash.prototype.digest = function (enc) { - // Suppose the length of the message M, in bits, is l - var l = this._len * 8 + return this; +}; - // Append the bit 1 to the end of the message - this._block[this._len % this._blockSize] = 0x80 +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); - // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize - this._block.fill(0, this._len % this._blockSize + 1) + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + processNextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this, state); + } + } + } - if (l % (this._blockSize * 8) >= this._finalSize * 8) { - this._update(this._block) - this._block.fill(0) + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); } + return this; +}; - // to this append the block which is equal to the number l written in binary - // TODO: handle case where l is > Math.pow(2, 29) - this._block.writeInt32BE(l, this._blockSize - 4) +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + processNextTick(resume_, stream, state); + } +} - var hash = this._update(this._block) || this._hash() +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } - return enc ? hash.toString(enc) : hash + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); } -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -} +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; -module.exports = Hash +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} -}).call(this,require("buffer").Buffer) +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; -},{"buffer":73}],152:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() + var self = this; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); + } - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + self.push(null); + }); - return new Algorithm() -} + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; -},{"./sha":153,"./sha1":154,"./sha224":155,"./sha256":156,"./sha384":157,"./sha512":158}],153:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); -var inherits = require('inherits') -var Hash = require('./hash') + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function (ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); -var W = new Array(80) + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; -function Sha () { - this.init() - this._w = W + return self; +}; - Hash.call(this, 64, 56) -} +// exposed for testing purposes only. +Readable._fromList = fromList; -inherits(Sha, Hash) +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } - return this + return ret; } -function rotl5 (num) { - return (num << 5) | (num >>> 27) +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; } -function rotl30 (num) { - return (num << 30) | (num >>> 2) +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; } -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = bufferShim.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; } -Sha.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] +function endReadable(stream) { + var state = stream._readableState; - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - e = d - d = c - c = rotl30(b) - b = a - a = t + if (!state.endEmitted) { + state.ended = true; + processNextTick(endReadableNT, state, stream); } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 } -Sha.prototype._hash = function () { - var H = new Buffer(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } } -module.exports = Sha - -}).call(this,require("buffer").Buffer) - -},{"./hash":151,"buffer":73,"inherits":119}],154:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var inherits = require('inherits') -var Hash = require('./hash') +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this,require('_process')) -var W = new Array(80) +},{"./_stream_duplex":152,"./internal/streams/BufferList":157,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":76,"events":110,"inherits":120,"isarray":150,"process-nextick-args":131,"string_decoder/":162,"util":45}],155:[function(require,module,exports){ +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. -function Sha1 () { - this.init() - this._w = W +'use strict'; - Hash.call(this, 64, 56) -} +module.exports = Transform; -inherits(Sha1, Hash) +var Duplex = require('./_stream_duplex'); -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - return this -} +util.inherits(Transform, Duplex); -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform(stream, er, data); + }; -function rotl5 (num) { - return (num << 5) | (num >>> 27) + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; } -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} + var cb = ts.writecb; -Sha1.prototype._update = function (M) { - var W = this._w + if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 + ts.writechunk = null; + ts.writecb = null; - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) + if (data !== null && data !== undefined) stream.push(data); - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + cb(er); - e = d - d = c - c = rotl30(b) - b = a - a = t + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); } - - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha1.prototype._hash = function () { - var H = new Buffer(20) - - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) - - return H } -module.exports = Sha1 - -}).call(this,require("buffer").Buffer) - -},{"./hash":151,"buffer":73,"inherits":119}],155:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') + Duplex.call(this, options); -var W = new Array(64) + this._transformState = new TransformState(this); -function Sha224 () { - this.init() + // when the writable side finishes, then flush out anything remaining. + var stream = this; - this._w = W // new Array(64) + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - Hash.call(this, 64, 56) -} + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; -inherits(Sha224, Sha256) + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 + if (typeof options.flush === 'function') this._flush = options.flush; + } - return this + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er) { + done(stream, er); + });else done(stream); + }); } -Sha224.prototype._hash = function () { - var H = new Buffer(28) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - - return H -} +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; -module.exports = Sha224 +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('Not implemented'); +}; -}).call(this,require("buffer").Buffer) +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; -},{"./hash":151,"./sha256":156,"buffer":73,"inherits":119}],156:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; -var inherits = require('inherits') -var Hash = require('./hash') + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] +function done(stream, er) { + if (er) return stream.emit('error', er); -var W = new Array(64) + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; -function Sha256 () { - this.init() + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); - this._w = W // new Array(64) + if (ts.transforming) throw new Error('Calling transform done when still transforming'); - Hash.call(this, 64, 56) + return stream.push(null); } +},{"./_stream_duplex":152,"core-util-is":76,"inherits":120}],156:[function(require,module,exports){ +(function (process){ +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. -inherits(Sha256, Hash) +'use strict'; -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 +module.exports = Writable; - return this -} +/**/ +var processNextTick = require('process-nextick-args'); +/**/ -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; +/**/ -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} +Writable.WritableState = WritableState; -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} +/**/ +var Stream; +(function () { + try { + Stream = require('st' + 'ream'); + } catch (_) {} finally { + if (!Stream) Stream = require('events').EventEmitter; + } +})(); +/**/ -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ + +util.inherits(Writable, Stream); + +function nop() {} + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; } -Sha256.prototype._update = function (M) { - var W = this._w +var Duplex; +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 + options = options || {}; - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 - } + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 -} + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; -Sha256.prototype._hash = function () { - var H = new Buffer(32) + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; - return H -} + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; -module.exports = Sha256 + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; -}).call(this,require("buffer").Buffer) + // a flag to see when we're in the middle of a write. + this.writing = false; -},{"./hash":151,"buffer":73,"inherits":119}],157:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') + // when true all writes will be buffered until .uncork() call + this.corked = 0; -var W = new Array(160) + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; -function Sha384 () { - this.init() - this._w = W + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - Hash.call(this, 128, 112) -} + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; -inherits(Sha384, SHA512) + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d + // the amount that is being written when _write is called. + this.writelen = 0; - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 + this.bufferedRequest = null; + this.lastBufferedRequest = null; - return this -} + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; -Sha384.prototype._hash = function () { - var H = new Buffer(48) + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function writableStateGetBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; - return H -} +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') + }); + } catch (_) {} +})(); -module.exports = Sha384 +var Duplex; +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); -}).call(this,require("buffer").Buffer) + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); -},{"./hash":151,"./sha512":158,"buffer":73,"inherits":119}],158:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var Hash = require('./hash') + this._writableState = new WritableState(options, this); -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] + // legacy. + this.writable = true; -var W = new Array(160) + if (options) { + if (typeof options.write === 'function') this._write = options.write; -function Sha512 () { - this.init() - this._w = W + if (typeof options.writev === 'function') this._writev = options.writev; + } - Hash.call(this, 128, 112) + Stream.call(this); } -inherits(Sha512, Hash) - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 - - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; - return this +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + processNextTick(cb, er); } -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + // Always throw error if a null is written + // if we are not in object mode then throw + // if it is not a buffer, string, or undefined. + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + processNextTick(cb, er); + valid = false; + } + return valid; } -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} + if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} + if (typeof cb !== 'function') cb = nop; -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} + if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); + } -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} + return ret; +}; -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} +Writable.prototype.cork = function () { + var state = this._writableState; -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} + state.corked++; +}; -Sha512.prototype._update = function (M) { - var W = this._w +Writable.prototype.uncork = function () { + var state = this._writableState; - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 + if (state.corked) { + state.corked--; - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = bufferShim.from(chunk, encoding); } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) + return chunk; +} - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] + state.length += len; - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; - W[i] = Wih - W[i + 1] = Wil + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); } - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] + return ret; +} - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) processNextTick(cb, er);else cb(er); - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] + stream._writableState.errorEmitted = true; + stream.emit('error', er); +} - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + onwriteStateUpdate(state); - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 - } + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } } -Sha512.prototype._hash = function () { - var H = new Buffer(64) +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) - - return H } -module.exports = Sha512 +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; -}).call(this,require("buffer").Buffer) + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; -},{"./hash":151,"buffer":73,"inherits":119}],159:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. + var count = 0; + while (entry) { + buffer[count] = entry; + entry = entry.next; + count += 1; + } -module.exports = Stream; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); -var EE = require('events').EventEmitter; -var inherits = require('inherits'); + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; + if (entry === null) state.lastBufferedRequest = null; + } + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; +} +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('not implemented')); +}; -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. +Writable.prototype._writev = null; -function Stream() { - EE.call(this); -} +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; -Stream.prototype.pipe = function(dest, options) { - var source = this; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); } - source.on('data', ondata); + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); + } +} - function ondrain() { - if (source.readable && source.resume) { - source.resume(); +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else { + prefinish(stream, state); } } + return need; +} - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) processNextTick(cb);else stream.once('finish', cb); } + state.ended = true; + stream.writable = false; +} - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; - dest.end(); - } + this.next = null; + this.entry = null; + + this.finish = function (err) { + var entry = _this.entry; + _this.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = _this; + } else { + state.corkedRequestsFree = _this; + } + }; +} +}).call(this,require('_process')) +},{"./_stream_duplex":152,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":76,"events":110,"inherits":120,"process-nextick-args":131,"util-deprecate":163}],157:[function(require,module,exports){ +'use strict'; - function onclose() { - if (didOnEnd) return; - didOnEnd = true; +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ - if (typeof dest.destroy === 'function') dest.destroy(); - } +module.exports = BufferList; - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } +function BufferList() { + this.head = null; + this.tail = null; + this.length = 0; +} - source.on('error', onerror); - dest.on('error', onerror); +BufferList.prototype.push = function (v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; +}; - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); +BufferList.prototype.unshift = function (v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; +}; - source.removeListener('end', onend); - source.removeListener('close', onclose); +BufferList.prototype.shift = function () { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; +}; - source.removeListener('error', onerror); - dest.removeListener('error', onerror); +BufferList.prototype.clear = function () { + this.head = this.tail = null; + this.length = 0; +}; - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); +BufferList.prototype.join = function (s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; +}; - dest.removeListener('close', cleanup); +BufferList.prototype.concat = function (n) { + if (this.length === 0) return bufferShim.alloc(0); + if (this.length === 1) return this.head.data; + var ret = bufferShim.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + p.data.copy(ret, i); + i += p.data.length; + p = p.next; } + return ret; +}; +},{"buffer":73,"buffer-shims":71}],158:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") - source.on('end', cleanup); - source.on('close', cleanup); +},{"./lib/_stream_passthrough.js":153}],159:[function(require,module,exports){ +(function (process){ +var Stream = (function (){ + try { + return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify + } catch(_){} +}()); +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = Stream || exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); - dest.on('close', cleanup); +if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; +} - dest.emit('pipe', source); +}).call(this,require('_process')) - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; +},{"./lib/_stream_duplex.js":152,"./lib/_stream_passthrough.js":153,"./lib/_stream_readable.js":154,"./lib/_stream_transform.js":155,"./lib/_stream_writable.js":156,"_process":132}],160:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") -},{"events":109,"inherits":119,"readable-stream/duplex.js":140,"readable-stream/passthrough.js":146,"readable-stream/readable.js":147,"readable-stream/transform.js":148,"readable-stream/writable.js":149}],160:[function(require,module,exports){ +},{"./lib/_stream_transform.js":155}],161:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") + +},{"./lib/_stream_writable.js":156}],162:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -30502,7 +30810,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":73}],161:[function(require,module,exports){ +},{"buffer":73}],163:[function(require,module,exports){ (function (global){ /** @@ -30574,7 +30882,7 @@ function config (name) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],162:[function(require,module,exports){ +},{}],164:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -30714,7 +31022,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":118}],163:[function(require,module,exports){ +},{"indexof":119}],165:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30922,7 +31230,7 @@ function writeString(b, str) { return b; } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18,"../../lib/v1/internal/utf8":21}],164:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18,"../../lib/v1/internal/utf8":21}],166:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31062,7 +31370,7 @@ function bytes() { return b; } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/chunking":14}],165:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/chunking":14}],167:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31159,7 +31467,7 @@ describe('connector', function () { }); }); -},{"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/connector.js":15}],166:[function(require,module,exports){ +},{"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/connector.js":15}],168:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31190,6 +31498,7 @@ var alloc = require('../../lib/v1/internal/buf').alloc, Integer = integer.Integer; describe('packstream', function () { + it('should pack integers', function () { var n, i; // test small numbers @@ -31239,12 +31548,12 @@ describe('packstream', function () { function packAndUnpack(val, bufferSize) { bufferSize = bufferSize || 128; var buffer = alloc(bufferSize); - new Packer(buffer).pack(val); + new Packer(buffer).packable(val)(); buffer.reset(); return new Unpacker().unpack(buffer); } -},{"../../lib/v1/integer.js":9,"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18}],167:[function(require,module,exports){ +},{"../../lib/v1/integer.js":9,"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18}],169:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31362,7 +31671,7 @@ function Resource(id, release) { }; } -},{"../../lib/v1/internal/pool":19}],168:[function(require,module,exports){ +},{"../../lib/v1/internal/pool":19}],170:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31386,6 +31695,7 @@ function Resource(id, release) { var NodeChannel = require('../../lib/v1/internal/ch-node.js'); var neo4j = require("../../lib/v1"); var fs = require("fs"); +var path = require('path'); var hasFeature = require("../../lib/v1/internal/features"); describe('trust-signed-certificates', function () { @@ -31442,6 +31752,84 @@ describe('trust-on-first-use', function () { var driver; + it("should create known_hosts file including full path if it doesn't exist", function (done) { + // Assuming we only run this test on NodeJS with TOFU support + if (!hasFeature("trust_on_first_use")) { + done(); + return; + } + + // Given + // Non existing directory + var knownHostsDir = path.join("build", "hosts"); + var knownHostsPath = path.join(knownHostsDir, "known_hosts"); + try { + fs.unlinkSync(knownHostsPath); + } catch (_) {} + try { + fs.rmdirSync(knownHostsDir); + } catch (_) {} + + var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { + encrypted: true, + trust: "TRUST_ON_FIRST_USE", + knownHosts: knownHostsPath + }); + + // When + driver.session().run("RETURN 1").then(function () { + // Then we get to here. + // And then the known_hosts file should have been created + expect(function () { + fs.accessSync(knownHostsPath); + }).not.toThrow(); + done(); + })["catch"](function () { + // Just here to gracefully exit test on failure so we don't get timeouts + // when done() isn't called. + expect('this').toBe('to never happen'); + done(); + }); + }); + + it('should not throw an error if the host file contains two host duplicates', function (done) { + 'use strict'; + // Assuming we only run this test on NodeJS with TOFU support + if (!hasFeature("trust_on_first_use")) { + done(); + return; + } + + // Given + var knownHostsPath = "build/known_hosts"; + if (fs.existsSync(knownHostsPath)) { + fs.unlinkSync(knownHostsPath); + } + + driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { + encrypted: true, + trust: "TRUST_ON_FIRST_USE", + knownHosts: knownHostsPath + }); + + driver.session(); // write into the knownHost file + + // duplicate the same serverId twice + setTimeout(function () { + var text = fs.readFileSync(knownHostsPath, 'utf8'); + fs.writeFileSync(knownHostsPath, text + text); + }, 1000); + + // When + setTimeout(function () { + driver.session().run("RETURN true AS a").then(function (data) { + // Then we get to here. + expect(data.records[0].get('a')).toBe(true); + done(); + }); + }, 2000); + }); + it('should accept previously un-seen hosts', function (done) { // Assuming we only run this test on NodeJS with TOFU support if (!hasFeature("trust_on_first_use")) { @@ -31470,6 +31858,53 @@ describe('trust-on-first-use', function () { }); }); + it('should not duplicate fingerprint entries', function (done) { + // Assuming we only run this test on NodeJS with TOFU support + if (!hasFeature("trust_on_first_use")) { + done(); + return; + } + + // Given + var knownHostsPath = "build/known_hosts"; + if (fs.existsSync(knownHostsPath)) { + fs.unlinkSync(knownHostsPath); + } + fs.writeFileSync(knownHostsPath, ''); + + driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { + encrypted: true, + trust: "TRUST_ON_FIRST_USE", + knownHosts: knownHostsPath + }); + + // When + driver.session(); + driver.session(); + + // Then + setTimeout(function () { + var lines = {}; + fs.readFileSync(knownHostsPath, 'utf8').split('\n').filter(function (line) { + return !!line.trim(); + }).forEach(function (line) { + if (!lines[line]) { + lines[line] = 0; + } + lines[line]++; + }); + + var duplicatedLines = Object.keys(lines).map(function (line) { + return lines[line]; + }).filter(function (count) { + return count > 1; + }).length; + + expect(duplicatedLines).toBe(0); + done(); + }, 1000); + }); + it('should should give helpful error if database cert does not match stored certificate', function (done) { // Assuming we only run this test on NodeJS with TOFU support if (!hasFeature("trust_on_first_use")) { @@ -31500,7 +31935,7 @@ describe('trust-on-first-use', function () { }); }); -},{"../../lib/v1":8,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/features":16,"fs":70}],169:[function(require,module,exports){ +},{"../../lib/v1":8,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/features":16,"fs":70,"path":129}],171:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31664,7 +32099,7 @@ function packAndUnpack(str) { return utf8.decode(buffer, buffer.length); } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/utf8":21}],170:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/utf8":21}],172:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31716,9 +32151,37 @@ describe('driver', function () { // When driver.session(); }); + + it('should fail early on wrong credentials', function (done) { + // Given + var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "who would use such a password")); + + // Expect + driver.onError = function (err) { + //the error message is different whether in browser or node + expect(err.fields[0].code).toEqual('Neo.ClientError.Security.Unauthorized'); + done(); + }; + + // When + driver.session(); + }); + + it('should indicate success early on correct credentials', function (done) { + // Given + var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); + + // Expect + driver.onCompleted = function (meta) { + done(); + }; + + // When + driver.session(); + }); }); -},{"../../lib/v1":8}],171:[function(require,module,exports){ +},{"../../lib/v1":8}],173:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31802,7 +32265,7 @@ describe('Record', function () { }); }); -},{"../../lib/v1/error":6,"../../lib/v1/record":22}],172:[function(require,module,exports){ +},{"../../lib/v1/error":6,"../../lib/v1/record":22}],174:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31864,7 +32327,7 @@ describe('result stream', function () { }); }); -},{"../../lib/v1":8}],173:[function(require,module,exports){ +},{"../../lib/v1":8}],175:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32136,9 +32599,23 @@ describe('session', function () { }, 1000); }, 1500); }); + + it('should fail nicely on unpackable values ', function (done) { + // Given + var unpackable = function unpackable() { + throw Error(); + }; + + var statement = "RETURN {param}"; + var params = { param: unpackable }; + // When & Then + session.run(statement, params)["catch"](function (ignore) { + done(); + }); + }); }); -},{"../../lib/v1":8,"../../lib/v1/result-summary":23,"../../lib/v1/session":25}],174:[function(require,module,exports){ +},{"../../lib/v1":8,"../../lib/v1/result-summary":23,"../../lib/v1/session":25}],176:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32337,7 +32814,7 @@ describe('transaction', function () { }); }); -},{"../../lib/v1":8}],175:[function(require,module,exports){ +},{"../../lib/v1":8}],177:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32489,5 +32966,5 @@ function testVal(val, expected) { }; } -},{"../../lib/v1":8}]},{},[163,164,165,166,167,168,169,170,171,172,173,174,175]) -//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvZXM2LXByb21pc2UuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2RyaXZlci5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9lcnJvci5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9ncmFwaC10eXBlcy5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbmRleC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlZ2VyLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2J1Zi5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaHVua2luZy5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvbG9nLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3BhY2tzdHJlYW0uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvcG9vbC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXIuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvdXRmOC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZWNvcmQuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvcmVzdWx0LXN1bW1hcnkuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvcmVzdWx0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Nlc3Npb24uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvdHJhbnNhY3Rpb24uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwibm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9saWIvYjY0LmpzIiwibm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIm5vZGVfbW9kdWxlcy9icm9yYW5kL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYXV0aENpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9lbmNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZ2hhc2guanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIxLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY3RyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2VjYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9vZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvc3RyZWFtQ2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktY2lwaGVyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1yc2EvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2FsZ29zLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9jdXJ2ZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3NpZ24uanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3ZlcmlmeS5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXItc2hpbXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NiYy5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jaXBoZXIuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2VkZS5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9kaC5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZ2VuZXJhdGVQcmltZS5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvcHJpbWVzLmpzb24iLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9lZHdhcmRzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvbW9udC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvc2hvcnQuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlcy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL2tleS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMvc2lnbmF0dXJlLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2Eva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2htYWMtZHJiZy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9ldnBfYnl0ZXN0b2tleS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbGxlci1yYWJpbi9saWIvbXIuanMiLCJub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWFzc2VydC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9vcy1icm93c2VyaWZ5L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hZXNpZC5qc29uIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2ZpeFByb2MuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JpcGVtZDE2MC9saWIvcmlwZW1kMTYwLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy92bS1icm93c2VyaWZ5L2luZGV4LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9idWYudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY2h1bmtpbmcudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY29ubmVjdG9yLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3BhY2tzdHJlYW0udGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvcG9vbC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC90bHMudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvdXRmOC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9kcml2ZXIudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvdjEvcmVjb3JkLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3Jlc3VsdC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9zZXNzaW9uLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3RyYW5zYWN0aW9uLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3R5cGVzLnRlc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM1NUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwZ0dBLFlBQVksQ0FBQzs7QUFFYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDM0MsT0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7O0FBRUgsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRSxNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxTQUFTLEVBQUUsT0FBTyxNQUFNLEVBQUU7QUFBRSxRQUFJLE1BQU0sR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUc7UUFBRSxRQUFRLEdBQUcsR0FBRyxDQUFDLEFBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxBQUFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQUFBQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxVQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxNQUFNO0FBQUUsV0FBRyxHQUFHLE1BQU0sQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEFBQUMsU0FBUyxTQUFTLENBQUM7T0FBRTtLQUFFLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQUUsTUFBTTtBQUFFLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FBQztPQUFFLEFBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQUU7R0FBRTtDQUFFLENBQUM7O0FBRXJwQixJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFBRSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUFFLFVBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQUFBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxBQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FBRTtHQUFFLEFBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQUUsUUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxBQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxBQUFD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QyxFQUFFLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNqRyxVQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzs7QUFFakcsVUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDckIsWUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO09BQ3pJLE1BQU0sSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDOzs7QUFHdkYsVUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzs7Ozs7QUFLckksVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7QUFDM0IsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7QUFDN0IsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDMUIsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENB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QUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVscEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZO0FBQUUsV0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQUUsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFBRSxVQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQUFBQyxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLEFBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQUU7R0FBRSxBQUFDLE9BQU8sVUFBVSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtBQUFFLFFBQUksVUFBVSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUs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QUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzlHOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsV0FBVztBQUNoQixTQUFLLEVBQUUsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFO0FBQzNCLGFBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUMvRzs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQzFCLGFBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFD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SSxDQUFDLEFBQUMsU0FBUyxFQUFFLE9BQU8sTUFBTSxFQUFFO0FBQUUsUUFBSSxNQUFNLEdBQUcsRUFBRTtRQUFFLFFBQVEsR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUcsQ0FBQyxBQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQUFBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEFBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUFFLGVBQU8sU0FBUyxDQUFDO09BQUUsTUFBTTtBQUFFLFVBQUUsR0FBRyxNQUFNLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVscEIsU0FBUyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUU7QUFBRSxTQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxFQUFFLFNBQVMsRUFBRSxH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QyxDQUFDO09BQzdELE1BQU0sSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQzlCLGVBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7T0FDOUQsTUFBTSxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDOUIsZUFBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztPQUM5RCxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUMzQixlQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3BELE1BQU0sSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzVCLGVBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDckQsTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFDNUIsZUFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNyRCxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtBQUMxQixlQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ25ELE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO0FBQzNCLGVBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDcEQsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDM0IsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNwRCxN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Qzs7QUFFYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDM0MsT0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7O0FBRUgsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRSxNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxTQUFTLEVBQUUsT0FBTyxNQUFNLEVBQUU7QUFBRSxRQUFJLE1BQU0sR0FBRyxFQUFFO1FBQUUsUUFBUSxHQUFHLEdBQUc7UUFBRSxRQUFRLEdBQUcsR0FBRyxDQUFDLEFBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxBQUFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQUFBQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxVQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxNQUFNO0FBQUUsVUFBRSxHQUFHLE1BQU0sQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEFBQUMsU0FBUyxTQUFTLENBQUM7T0FBRTtLQUFFLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQUUsTUFBTTtBQUFFLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDclNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pEQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1Z0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzFGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2hRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2piQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxNkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN01BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNySEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDN1NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3JHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwQ0E7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNTNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ25MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzdnQkE7QUFDQTs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hCQTtBQUNBOztBQ0RBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNuUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM3TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SEEsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3ZELElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUN6RSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNqRCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQyxRQUFRLENBQUM7O0FBRXZFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBVztBQUM3QixJQUFFLENBQUMsOEJBQThCLEVBQUUsWUFBVzs7QUFFNUMsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEtBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2YsS0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQixLQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7QUFHakIsUUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3ZCLFFBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7O0FBR3BCLFVBQU0sQ0FBRSxHQUFHLENBQUUsQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN6RCxVQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0dBQ2xDLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsK0NBQStDLEVBQUUsWUFBVzs7QUFFN0QsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFFBQVEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUduQixZQUFNLENBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNuQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsZ0RBQWdELEVBQUUsWUFBVzs7QUFFOUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdwQixZQUFNLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNwQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsZ0RBQWdELEVBQUUsWUFBVzs7QUFFOUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdwQixZQUFNLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNwQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsNkNBQTZDLEVBQUUsWUFBVzs7QUFFM0QsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLE9BQU8sQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdsQixZQUFNLENBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNsQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsOENBQThDLEVBQUUsWUFBVzs7QUFFNUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFFBQVEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUduQixZQUFNLENBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElB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RztBQUNoQyxTQUFPLFVBQVUsSUFBSSxFQUFHO0FBQ3RCLFFBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEYsUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDOztBQUUvQixXQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQ3pDLElBQUksQ0FBRSxVQUFVLE1BQU0sRUFBRztBQUN4QixZQUFNLENBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBRSxDQUFDO0FBQ2hFLFlBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLFVBQUksRUFBRSxDQUFDO0tBQ1IsQ0FBQyxTQUFNLENBQUMsVUFBUyxHQUFHLEVBQUU7QUFBRSxhQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQUUsQ0FBQyxDQUFDO0dBQ2pELENBQUE7Q0FDRiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKiFcbiAqIEBvdmVydmlldyBlczYtcHJvbWlzZSAtIGEgdGlueSBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcy9BKy5cbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE0IFllaHVkYSBLYXR6LCBUb20gRGFsZSwgU3RlZmFuIFBlbm5lciBhbmQgY29udHJpYnV0b3JzIChDb252ZXJzaW9uIHRvIEVTNiBBUEkgYnkgSmFrZSBBcmNoaWJhbGQpXG4gKiBAbGljZW5zZSAgIExpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlXG4gKiAgICAgICAgICAgIFNlZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vamFrZWFyY2hpYmFsZC9lczYtcHJvbWlzZS9tYXN0ZXIvTElDRU5TRVxuICogQHZlcnNpb24gICAzLjAuMlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuKGZ1bmN0aW9uICgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkb2JqZWN0T3JGdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0Z1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzTWF5YmVUaGVuYWJsZSh4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXk7XG4gIGlmICghQXJyYXkuaXNBcnJheSkge1xuICAgIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXkgPSBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheSA9IGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXk7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID0gMDtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR0b1N0cmluZyA9ICh7fSkudG9TdHJpbmc7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkdmVydHhOZXh0O1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuO1xuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcCA9IGZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGFyZykge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuXSA9IGNhbGxiYWNrO1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuICsgMV0gPSBhcmc7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGxlbiArPSAyO1xuICAgIGlmIChsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID09PSAyKSB7XG4gICAgICAvLyBJZiBsZW4gaXMgMiwgdGhhdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gc2NoZWR1bGUgYW4gYXN5bmMgZmx1c2guXG4gICAgICAvLyBJZiBhZGRpdGlvbmFsIGNhbGxiYWNrcyBhcmUgcXVldWVkIGJlZm9yZSB0aGUgcXVldWUgaXMgZmx1c2hlZCwgdGhleVxuICAgICAgLy8gd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhpcyBmbHVzaCB0aGF0IHdlIGFyZSBzY2hlZHVsaW5nLlxuICAgICAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbikge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkY3VzdG9tU2NoZWR1bGVyRm4obGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRTY2hlZHVsZXIoc2NoZWR1bGVGbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbiA9IHNjaGVkdWxlRm47XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2V0QXNhcChhc2FwRm4pIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcCA9IGFzYXBGbjtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3NlcldpbmRvdyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdW5kZWZpbmVkO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3NlcldpbmRvdyB8fCB7fTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyR2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc05vZGUgPSB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHt9KS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXSc7XG5cbiAgLy8gdGVzdCBmb3Igd2ViIHdvcmtlciBidXQgbm90IGluIElFMTBcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc1dvcmtlciA9IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCc7XG5cbiAgLy8gbm9kZVxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTmV4dFRpY2soKSB7XG4gICAgLy8gbm9kZSB2ZXJzaW9uIDAuMTAueCBkaXNwbGF5cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2hlbiBuZXh0VGljayBpcyB1c2VkIHJlY3Vyc2l2ZWx5XG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jdWpvanMvd2hlbi9pc3N1ZXMvNDEwIGZvciBkZXRhaWxzXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gdmVydHhcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVZlcnR4VGltZXIoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU11dGF0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBsaWIkZXM2JHByb21pc2UkYXNhcCQkQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSBpdGVyYXRpb25zID0gKytpdGVyYXRpb25zICUgMjtcbiAgICB9O1xuICB9XG5cbiAgLy8gd2ViIHdvcmtlclxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTWVzc2FnZUNoYW5uZWwoKSB7XG4gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRmbHVzaDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgwKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVNldFRpbWVvdXQoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoLCAxKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZSA9IG5ldyBBcnJheSgxMDAwKTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGliJGVzNiRwcm9taXNlJGFzYXAkJGxlbjsgaSArPSAyKSB7XG4gICAgICB2YXIgY2FsbGJhY2sgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaV07XG4gICAgICB2YXIgYXJnID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2kgKyAxXTtcblxuICAgICAgY2FsbGJhY2soYXJnKTtcblxuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2ldID0gdW5kZWZpbmVkO1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2kgKyAxXSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhdHRlbXB0VmVydHgoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciByID0gcmVxdWlyZTtcbiAgICAgIHZhciB2ZXJ0eCA9IHIoJ3ZlcnR4Jyk7XG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkdmVydHhOZXh0ID0gdmVydHgucnVuT25Mb29wIHx8IHZlcnR4LnJ1bk9uQ29udGV4dDtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlVmVydHhUaW1lcigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlU2V0VGltZW91dCgpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaDtcbiAgLy8gRGVjaWRlIHdoYXQgYXN5bmMgbWV0aG9kIHRvIHVzZSB0byB0cmlnZ2VyaW5nIHByb2Nlc3Npbmcgb2YgcXVldWVkIGNhbGxiYWNrczpcbiAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc05vZGUpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VOZXh0VGljaygpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlcikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkYXNhcCQkaXNXb3JrZXIpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VNZXNzYWdlQ2hhbm5lbCgpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93ID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhdHRlbXB0VmVydHgoKTtcbiAgfSBlbHNlIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VTZXRUaW1lb3V0KCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKCkge31cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyA9IHZvaWQgMDtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCA9IDE7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCA9IDI7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SID0gbmV3IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEVycm9yT2JqZWN0KCk7XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc2VsZkZ1bGZpbGxtZW50KCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IGNhbm5vdCByZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZlwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGNhbm5vdFJldHVybk93bigpIHtcbiAgICByZXR1cm4gbmV3IFR5cGVFcnJvcignQSBwcm9taXNlcyBjYWxsYmFjayBjYW5ub3QgcmV0dXJuIHRoYXQgc2FtZSBwcm9taXNlLicpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZ2V0VGhlbihwcm9taXNlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBwcm9taXNlLnRoZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SLmVycm9yID0gZXJyb3I7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1I7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5VGhlbih0aGVuLCB2YWx1ZSwgZnVsZmlsbG1lbnRIYW5kbGVyLCByZWplY3Rpb25IYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgZnVsZmlsbG1lbnRIYW5kbGVyLCByZWplY3Rpb25IYW5kbGVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVGb3JlaWduVGhlbmFibGUocHJvbWlzZSwgdGhlbmFibGUsIHRoZW4pIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgdmFyIHNlYWxlZCA9IGZhbHNlO1xuICAgICAgdmFyIGVycm9yID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5VGhlbih0aGVuLCB0aGVuYWJsZSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmIChzZWFsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoZW5hYmxlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIGlmIChzZWFsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcblxuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICAgIH0sICdTZXR0bGU6ICcgKyAocHJvbWlzZS5fbGFiZWwgfHwgJyB1bmtub3duIHByb21pc2UnKSk7XG5cbiAgICAgIGlmICghc2VhbGVkICYmIGVycm9yKSB7XG4gICAgICAgIHNlYWxlZCA9IHRydWU7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgcHJvbWlzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVPd25UaGVuYWJsZShwcm9taXNlLCB0aGVuYWJsZSkge1xuICAgIGlmICh0aGVuYWJsZS5fc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB0aGVuYWJsZS5fcmVzdWx0KTtcbiAgICB9IGVsc2UgaWYgKHRoZW5hYmxlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB0aGVuYWJsZS5fcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHRoZW5hYmxlLCB1bmRlZmluZWQsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVNYXliZVRoZW5hYmxlKHByb21pc2UsIG1heWJlVGhlbmFibGUpIHtcbiAgICBpZiAobWF5YmVUaGVuYWJsZS5jb25zdHJ1Y3RvciA9PT0gcHJvbWlzZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlT3duVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0aGVuID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZ2V0VGhlbihtYXliZVRoZW5hYmxlKTtcblxuICAgICAgaWYgKHRoZW4gPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRHRVRfVEhFTl9FUlJPUi5lcnJvcik7XG4gICAgICB9IGVsc2UgaWYgKHRoZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIG1heWJlVGhlbmFibGUpO1xuICAgICAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24odGhlbikpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlRm9yZWlnblRoZW5hYmxlKHByb21pc2UsIG1heWJlVGhlbmFibGUsIHRoZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCBtYXliZVRoZW5hYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc2VsZkZ1bGZpbGxtZW50KCkpO1xuICAgIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJHV0aWxzJCRvYmplY3RPckZ1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlTWF5YmVUaGVuYWJsZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2hSZWplY3Rpb24ocHJvbWlzZSkge1xuICAgIGlmIChwcm9taXNlLl9vbmVycm9yKSB7XG4gICAgICBwcm9taXNlLl9vbmVycm9yKHByb21pc2UuX3Jlc3VsdCk7XG4gICAgfVxuXG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaChwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpIHtcbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9yZXN1bHQgPSB2YWx1ZTtcbiAgICBwcm9taXNlLl9zdGF0ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRDtcblxuICAgIGlmIChwcm9taXNlLl9zdWJzY3JpYmVycy5sZW5ndGggIT09IDApIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2gsIHByb21pc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pIHtcbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJvbWlzZS5fc3RhdGUgPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRDtcbiAgICBwcm9taXNlLl9yZXN1bHQgPSByZWFzb247XG5cbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoUmVqZWN0aW9uLCBwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHN1YnNjcmliZShwYXJlbnQsIGNoaWxkLCBvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbikge1xuICAgIHZhciBzdWJzY3JpYmVycyA9IHBhcmVudC5fc3Vic2NyaWJlcnM7XG4gICAgdmFyIGxlbmd0aCA9IHN1YnNjcmliZXJzLmxlbmd0aDtcblxuICAgIHBhcmVudC5fb25lcnJvciA9IG51bGw7XG5cbiAgICBzdWJzY3JpYmVyc1tsZW5ndGhdID0gY2hpbGQ7XG4gICAgc3Vic2NyaWJlcnNbbGVuZ3RoICsgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEXSA9IG9uRnVsZmlsbG1lbnQ7XG4gICAgc3Vic2NyaWJlcnNbbGVuZ3RoICsgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURURdID0gb25SZWplY3Rpb247XG5cbiAgICBpZiAobGVuZ3RoID09PSAwICYmIHBhcmVudC5fc3RhdGUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2gsIHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaChwcm9taXNlKSB7XG4gICAgdmFyIHN1YnNjcmliZXJzID0gcHJvbWlzZS5fc3Vic2NyaWJlcnM7XG4gICAgdmFyIHNldHRsZWQgPSBwcm9taXNlLl9zdGF0ZTtcblxuICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGQsXG4gICAgICAgIGNhbGxiYWNrLFxuICAgICAgICBkZXRhaWwgPSBwcm9taXNlLl9yZXN1bHQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnNjcmliZXJzLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICBjaGlsZCA9IHN1YnNjcmliZXJzW2ldO1xuICAgICAgY2FsbGJhY2sgPSBzdWJzY3JpYmVyc1tpICsgc2V0dGxlZF07XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbnZva2VDYWxsYmFjayhzZXR0bGVkLCBjaGlsZCwgY2FsbGJhY2ssIGRldGFpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhkZXRhaWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb21pc2UuX3N1YnNjcmliZXJzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRFcnJvck9iamVjdCgpIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRUUllfQ0FUQ0hfRVJST1IgPSBuZXcgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRXJyb3JPYmplY3QoKTtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlDYXRjaChjYWxsYmFjaywgZGV0YWlsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhkZXRhaWwpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUi5lcnJvciA9IGU7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHNldHRsZWQsIHByb21pc2UsIGNhbGxiYWNrLCBkZXRhaWwpIHtcbiAgICB2YXIgaGFzQ2FsbGJhY2sgPSBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24oY2FsbGJhY2spLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHN1Y2NlZWRlZCxcbiAgICAgICAgZmFpbGVkO1xuXG4gICAgaWYgKGhhc0NhbGxiYWNrKSB7XG4gICAgICB2YWx1ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHRyeUNhdGNoKGNhbGxiYWNrLCBkZXRhaWwpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUikge1xuICAgICAgICBmYWlsZWQgPSB0cnVlO1xuICAgICAgICBlcnJvciA9IHZhbHVlLmVycm9yO1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWNjZWVkZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGNhbm5vdFJldHVybk93bigpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGRldGFpbDtcbiAgICAgIHN1Y2NlZWRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlICE9PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HKSB7XG4gICAgICAvLyBub29wXG4gICAgfSBlbHNlIGlmIChoYXNDYWxsYmFjayAmJiBzdWNjZWVkZWQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGZhaWxlZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmIChzZXR0bGVkID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNldHRsZWQgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbml0aWFsaXplUHJvbWlzZShwcm9taXNlLCByZXNvbHZlcikge1xuICAgIHRyeSB7XG4gICAgICByZXNvbHZlcihmdW5jdGlvbiByZXNvbHZlUHJvbWlzZSh2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0sIGZ1bmN0aW9uIHJlamVjdFByb21pc2UocmVhc29uKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yKENvbnN0cnVjdG9yLCBpbnB1dCkge1xuICAgIHZhciBlbnVtZXJhdG9yID0gdGhpcztcblxuICAgIGVudW1lcmF0b3IuX2luc3RhbmNlQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICBlbnVtZXJhdG9yLnByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG5cbiAgICBpZiAoZW51bWVyYXRvci5fdmFsaWRhdGVJbnB1dChpbnB1dCkpIHtcbiAgICAgIGVudW1lcmF0b3IuX2lucHV0ID0gaW5wdXQ7XG4gICAgICBlbnVtZXJhdG9yLmxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGVudW1lcmF0b3IuX3JlbWFpbmluZyA9IGlucHV0Lmxlbmd0aDtcblxuICAgICAgZW51bWVyYXRvci5faW5pdCgpO1xuXG4gICAgICBpZiAoZW51bWVyYXRvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChlbnVtZXJhdG9yLnByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnVtZXJhdG9yLmxlbmd0aCA9IGVudW1lcmF0b3IubGVuZ3RoIHx8IDA7XG4gICAgICAgIGVudW1lcmF0b3IuX2VudW1lcmF0ZSgpO1xuICAgICAgICBpZiAoZW51bWVyYXRvci5fcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChlbnVtZXJhdG9yLnByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fdmFsaWRhdGlvbkVycm9yKCkpO1xuICAgIH1cbiAgfVxuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVJbnB1dCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzQXJyYXkoaW5wdXQpO1xuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGlvbkVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ0FycmF5IE1ldGhvZHMgbXVzdCBiZSBwcm92aWRlZCBhbiBBcnJheScpO1xuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9yZXN1bHQgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICB9O1xuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yO1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fZW51bWVyYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnVtZXJhdG9yID0gdGhpcztcblxuICAgIHZhciBsZW5ndGggPSBlbnVtZXJhdG9yLmxlbmd0aDtcbiAgICB2YXIgcHJvbWlzZSA9IGVudW1lcmF0b3IucHJvbWlzZTtcbiAgICB2YXIgaW5wdXQgPSBlbnVtZXJhdG9yLl9pbnB1dDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBwcm9taXNlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyAmJiBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGVudW1lcmF0b3IuX2VhY2hFbnRyeShpbnB1dFtpXSwgaSk7XG4gICAgfVxuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fZWFjaEVudHJ5ID0gZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuICAgIHZhciBjID0gZW51bWVyYXRvci5faW5zdGFuY2VDb25zdHJ1Y3RvcjtcblxuICAgIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzTWF5YmVUaGVuYWJsZShlbnRyeSkpIHtcbiAgICAgIGlmIChlbnRyeS5jb25zdHJ1Y3RvciA9PT0gYyAmJiBlbnRyeS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgICAgZW50cnkuX29uZXJyb3IgPSBudWxsO1xuICAgICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQoZW50cnkuX3N0YXRlLCBpLCBlbnRyeS5fcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudW1lcmF0b3IuX3dpbGxTZXR0bGVBdChjLnJlc29sdmUoZW50cnkpLCBpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZW51bWVyYXRvci5fcmVtYWluaW5nLS07XG4gICAgICBlbnVtZXJhdG9yLl9yZXN1bHRbaV0gPSBlbnRyeTtcbiAgICB9XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9zZXR0bGVkQXQgPSBmdW5jdGlvbiAoc3RhdGUsIGksIHZhbHVlKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gZW51bWVyYXRvci5wcm9taXNlO1xuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HKSB7XG4gICAgICBlbnVtZXJhdG9yLl9yZW1haW5pbmctLTtcblxuICAgICAgaWYgKHN0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW51bWVyYXRvci5fcmVzdWx0W2ldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudW1lcmF0b3IuX3JlbWFpbmluZyA9PT0gMCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCBlbnVtZXJhdG9yLl9yZXN1bHQpO1xuICAgIH1cbiAgfTtcblxuICBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkRW51bWVyYXRvci5wcm90b3R5cGUuX3dpbGxTZXR0bGVBdCA9IGZ1bmN0aW9uIChwcm9taXNlLCBpKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHByb21pc2UsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVELCBpLCB2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgZW51bWVyYXRvci5fc2V0dGxlZEF0KGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVELCBpLCByZWFzb24pO1xuICAgIH0pO1xuICB9O1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGFsbChlbnRyaWVzKSB7XG4gICAgcmV0dXJuIG5ldyBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkZGVmYXVsdCh0aGlzLCBlbnRyaWVzKS5wcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGRlZmF1bHQgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGFsbDtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkcmFjZShlbnRyaWVzKSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG5cbiAgICBpZiAoIWxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheShlbnRyaWVzKSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYW4gYXJyYXkgdG8gcmFjZS4nKSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBvbkZ1bGZpbGxtZW50KHZhbHVlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblJlamVjdGlvbihyZWFzb24pIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBwcm9taXNlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyAmJiBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHN1YnNjcmliZShDb25zdHJ1Y3Rvci5yZXNvbHZlKGVudHJpZXNbaV0pLCB1bmRlZmluZWQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJhY2UkJHJhY2U7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJHJlc29sdmUob2JqZWN0KSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QuY29uc3RydWN0b3IgPT09IENvbnN0cnVjdG9yKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBwcm9taXNlID0gbmV3IENvbnN0cnVjdG9yKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3ApO1xuICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgb2JqZWN0KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJHJlc29sdmU7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlamVjdCQkcmVqZWN0KHJlYXNvbikge1xuICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgdmFyIENvbnN0cnVjdG9yID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRyZWplY3Q7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRjb3VudGVyID0gMDtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNSZXNvbHZlcigpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGEgcmVzb2x2ZXIgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBwcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNOZXcoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Byb21pc2UnOiBQbGVhc2UgdXNlIHRoZSAnbmV3JyBvcGVyYXRvciwgdGhpcyBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlO1xuICAvKipcbiAgICBQcm9taXNlIG9iamVjdHMgcmVwcmVzZW50IHRoZSBldmVudHVhbCByZXN1bHQgb2YgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi4gVGhlXG4gICAgcHJpbWFyeSB3YXkgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhIHByb21pc2UgaXMgdGhyb3VnaCBpdHMgYHRoZW5gIG1ldGhvZCwgd2hpY2hcbiAgICByZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZSByZWFzb25cbiAgICB3aHkgdGhlIHByb21pc2UgY2Fubm90IGJlIGZ1bGZpbGxlZC5cbiAgICAgVGVybWlub2xvZ3lcbiAgICAtLS0tLS0tLS0tLVxuICAgICAtIGBwcm9taXNlYCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gd2l0aCBhIGB0aGVuYCBtZXRob2Qgd2hvc2UgYmVoYXZpb3IgY29uZm9ybXMgdG8gdGhpcyBzcGVjaWZpY2F0aW9uLlxuICAgIC0gYHRoZW5hYmxlYCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGEgYHRoZW5gIG1ldGhvZC5cbiAgICAtIGB2YWx1ZWAgaXMgYW55IGxlZ2FsIEphdmFTY3JpcHQgdmFsdWUgKGluY2x1ZGluZyB1bmRlZmluZWQsIGEgdGhlbmFibGUsIG9yIGEgcHJvbWlzZSkuXG4gICAgLSBgZXhjZXB0aW9uYCBpcyBhIHZhbHVlIHRoYXQgaXMgdGhyb3duIHVzaW5nIHRoZSB0aHJvdyBzdGF0ZW1lbnQuXG4gICAgLSBgcmVhc29uYCBpcyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoeSBhIHByb21pc2Ugd2FzIHJlamVjdGVkLlxuICAgIC0gYHNldHRsZWRgIHRoZSBmaW5hbCByZXN0aW5nIHN0YXRlIG9mIGEgcHJvbWlzZSwgZnVsZmlsbGVkIG9yIHJlamVjdGVkLlxuICAgICBBIHByb21pc2UgY2FuIGJlIGluIG9uZSBvZiB0aHJlZSBzdGF0ZXM6IHBlbmRpbmcsIGZ1bGZpbGxlZCwgb3IgcmVqZWN0ZWQuXG4gICAgIFByb21pc2VzIHRoYXQgYXJlIGZ1bGZpbGxlZCBoYXZlIGEgZnVsZmlsbG1lbnQgdmFsdWUgYW5kIGFyZSBpbiB0aGUgZnVsZmlsbGVkXG4gICAgc3RhdGUuICBQcm9taXNlcyB0aGF0IGFyZSByZWplY3RlZCBoYXZlIGEgcmVqZWN0aW9uIHJlYXNvbiBhbmQgYXJlIGluIHRoZVxuICAgIHJlamVjdGVkIHN0YXRlLiAgQSBmdWxmaWxsbWVudCB2YWx1ZSBpcyBuZXZlciBhIHRoZW5hYmxlLlxuICAgICBQcm9taXNlcyBjYW4gYWxzbyBiZSBzYWlkIHRvICpyZXNvbHZlKiBhIHZhbHVlLiAgSWYgdGhpcyB2YWx1ZSBpcyBhbHNvIGFcbiAgICBwcm9taXNlLCB0aGVuIHRoZSBvcmlnaW5hbCBwcm9taXNlJ3Mgc2V0dGxlZCBzdGF0ZSB3aWxsIG1hdGNoIHRoZSB2YWx1ZSdzXG4gICAgc2V0dGxlZCBzdGF0ZS4gIFNvIGEgcHJvbWlzZSB0aGF0ICpyZXNvbHZlcyogYSBwcm9taXNlIHRoYXQgcmVqZWN0cyB3aWxsXG4gICAgaXRzZWxmIHJlamVjdCwgYW5kIGEgcHJvbWlzZSB0aGF0ICpyZXNvbHZlcyogYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2lsbFxuICAgIGl0c2VsZiBmdWxmaWxsLlxuICAgICAgQmFzaWMgVXNhZ2U6XG4gICAgLS0tLS0tLS0tLS0tXG4gICAgIGBgYGpzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIC8vIG9uIHN1Y2Nlc3NcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgIC8vIG9uIGZhaWx1cmVcbiAgICAgIHJlamVjdChyZWFzb24pO1xuICAgIH0pO1xuICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIC8vIG9uIGZ1bGZpbGxtZW50XG4gICAgfSwgZnVuY3Rpb24ocmVhc29uKSB7XG4gICAgICAvLyBvbiByZWplY3Rpb25cbiAgICB9KTtcbiAgICBgYGBcbiAgICAgQWR2YW5jZWQgVXNhZ2U6XG4gICAgLS0tLS0tLS0tLS0tLS0tXG4gICAgIFByb21pc2VzIHNoaW5lIHdoZW4gYWJzdHJhY3RpbmcgYXdheSBhc3luY2hyb25vdXMgaW50ZXJhY3Rpb25zIHN1Y2ggYXNcbiAgICBgWE1MSHR0cFJlcXVlc3Rgcy5cbiAgICAgYGBganNcbiAgICBmdW5jdGlvbiBnZXRKU09OKHVybCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCl7XG4gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpO1xuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT09IHRoaXMuRE9ORSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ2dldEpTT046IGAnICsgdXJsICsgJ2AgZmFpbGVkIHdpdGggc3RhdHVzOiBbJyArIHRoaXMuc3RhdHVzICsgJ10nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgICBnZXRKU09OKCcvcG9zdHMuanNvbicpLnRoZW4oZnVuY3Rpb24oanNvbikge1xuICAgICAgLy8gb24gZnVsZmlsbG1lbnRcbiAgICB9LCBmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgIC8vIG9uIHJlamVjdGlvblxuICAgIH0pO1xuICAgIGBgYFxuICAgICBVbmxpa2UgY2FsbGJhY2tzLCBwcm9taXNlcyBhcmUgZ3JlYXQgY29tcG9zYWJsZSBwcmltaXRpdmVzLlxuICAgICBgYGBqc1xuICAgIFByb21pc2UuYWxsKFtcbiAgICAgIGdldEpTT04oJy9wb3N0cycpLFxuICAgICAgZ2V0SlNPTignL2NvbW1lbnRzJylcbiAgICBdKS50aGVuKGZ1bmN0aW9uKHZhbHVlcyl7XG4gICAgICB2YWx1ZXNbMF0gLy8gPT4gcG9zdHNKU09OXG4gICAgICB2YWx1ZXNbMV0gLy8gPT4gY29tbWVudHNKU09OXG4gICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9KTtcbiAgICBgYGBcbiAgICAgQGNsYXNzIFByb21pc2VcbiAgICBAcGFyYW0ge2Z1bmN0aW9ufSByZXNvbHZlclxuICAgIFVzZWZ1bCBmb3IgdG9vbGluZy5cbiAgICBAY29uc3RydWN0b3JcbiAgKi9cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UocmVzb2x2ZXIpIHtcbiAgICB0aGlzLl9pZCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRjb3VudGVyKys7XG4gICAgdGhpcy5fc3RhdGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N1YnNjcmliZXJzID0gW107XG5cbiAgICBpZiAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCAhPT0gcmVzb2x2ZXIpIHtcbiAgICAgIGlmICghbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0Z1bmN0aW9uKHJlc29sdmVyKSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNSZXNvbHZlcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UpKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc05ldygpO1xuICAgICAgfVxuXG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbml0aWFsaXplUHJvbWlzZSh0aGlzLCByZXNvbHZlcik7XG4gICAgfVxuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuYWxsID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkYWxsJCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5yYWNlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucmVzb2x2ZSA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJGRlZmF1bHQ7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLnJlamVjdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlamVjdCQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX3NldFNjaGVkdWxlciA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRTY2hlZHVsZXI7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLl9zZXRBc2FwID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldEFzYXA7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLl9hc2FwID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXA7XG5cbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZSxcblxuICAgIC8qKlxuICAgICAgVGhlIHByaW1hcnkgd2F5IG9mIGludGVyYWN0aW5nIHdpdGggYSBwcm9taXNlIGlzIHRocm91Z2ggaXRzIGB0aGVuYCBtZXRob2QsXG4gICAgICB3aGljaCByZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZVxuICAgICAgcmVhc29uIHdoeSB0aGUgcHJvbWlzZSBjYW5ub3QgYmUgZnVsZmlsbGVkLlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24odXNlcil7XG4gICAgICAgIC8vIHVzZXIgaXMgYXZhaWxhYmxlXG4gICAgICB9LCBmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyB1c2VyIGlzIHVuYXZhaWxhYmxlLCBhbmQgeW91IGFyZSBnaXZlbiB0aGUgcmVhc29uIHdoeVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBDaGFpbmluZ1xuICAgICAgLS0tLS0tLS1cbiAgICAgICBUaGUgcmV0dXJuIHZhbHVlIG9mIGB0aGVuYCBpcyBpdHNlbGYgYSBwcm9taXNlLiAgVGhpcyBzZWNvbmQsICdkb3duc3RyZWFtJ1xuICAgICAgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZpcnN0IHByb21pc2UncyBmdWxmaWxsbWVudFxuICAgICAgb3IgcmVqZWN0aW9uIGhhbmRsZXIsIG9yIHJlamVjdGVkIGlmIHRoZSBoYW5kbGVyIHRocm93cyBhbiBleGNlcHRpb24uXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gdXNlci5uYW1lO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICByZXR1cm4gJ2RlZmF1bHQgbmFtZSc7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh1c2VyTmFtZSkge1xuICAgICAgICAvLyBJZiBgZmluZFVzZXJgIGZ1bGZpbGxlZCwgYHVzZXJOYW1lYCB3aWxsIGJlIHRoZSB1c2VyJ3MgbmFtZSwgb3RoZXJ3aXNlIGl0XG4gICAgICAgIC8vIHdpbGwgYmUgYCdkZWZhdWx0IG5hbWUnYFxuICAgICAgfSk7XG4gICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgdXNlciwgYnV0IHN0aWxsIHVuaGFwcHknKTtcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZmluZFVzZXJgIHJlamVjdGVkIGFuZCB3ZSdyZSB1bmhhcHB5Jyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIGlmIGBmaW5kVXNlcmAgZnVsZmlsbGVkLCBgcmVhc29uYCB3aWxsIGJlICdGb3VuZCB1c2VyLCBidXQgc3RpbGwgdW5oYXBweScuXG4gICAgICAgIC8vIElmIGBmaW5kVXNlcmAgcmVqZWN0ZWQsIGByZWFzb25gIHdpbGwgYmUgJ2BmaW5kVXNlcmAgcmVqZWN0ZWQgYW5kIHdlJ3JlIHVuaGFwcHknLlxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgIElmIHRoZSBkb3duc3RyZWFtIHByb21pc2UgZG9lcyBub3Qgc3BlY2lmeSBhIHJlamVjdGlvbiBoYW5kbGVyLCByZWplY3Rpb24gcmVhc29ucyB3aWxsIGJlIHByb3BhZ2F0ZWQgZnVydGhlciBkb3duc3RyZWFtLlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBlZGFnb2dpY2FsRXhjZXB0aW9uKCdVcHN0cmVhbSBlcnJvcicpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZFxuICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZFxuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAvLyBUaGUgYFBlZGdhZ29jaWFsRXhjZXB0aW9uYCBpcyBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IGRvd24gdG8gaGVyZVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBBc3NpbWlsYXRpb25cbiAgICAgIC0tLS0tLS0tLS0tLVxuICAgICAgIFNvbWV0aW1lcyB0aGUgdmFsdWUgeW91IHdhbnQgdG8gcHJvcGFnYXRlIHRvIGEgZG93bnN0cmVhbSBwcm9taXNlIGNhbiBvbmx5IGJlXG4gICAgICByZXRyaWV2ZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHJldHVybmluZyBhIHByb21pc2UgaW4gdGhlXG4gICAgICBmdWxmaWxsbWVudCBvciByZWplY3Rpb24gaGFuZGxlci4gVGhlIGRvd25zdHJlYW0gcHJvbWlzZSB3aWxsIHRoZW4gYmUgcGVuZGluZ1xuICAgICAgdW50aWwgdGhlIHJldHVybmVkIHByb21pc2UgaXMgc2V0dGxlZC4gVGhpcyBpcyBjYWxsZWQgKmFzc2ltaWxhdGlvbiouXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gZmluZENvbW1lbnRzQnlBdXRob3IodXNlcik7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykge1xuICAgICAgICAvLyBUaGUgdXNlcidzIGNvbW1lbnRzIGFyZSBub3cgYXZhaWxhYmxlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIElmIHRoZSBhc3NpbWxpYXRlZCBwcm9taXNlIHJlamVjdHMsIHRoZW4gdGhlIGRvd25zdHJlYW0gcHJvbWlzZSB3aWxsIGFsc28gcmVqZWN0LlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRDb21tZW50c0J5QXV0aG9yKHVzZXIpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29tbWVudHMpIHtcbiAgICAgICAgLy8gSWYgYGZpbmRDb21tZW50c0J5QXV0aG9yYCBmdWxmaWxscywgd2UnbGwgaGF2ZSB0aGUgdmFsdWUgaGVyZVxuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAvLyBJZiBgZmluZENvbW1lbnRzQnlBdXRob3JgIHJlamVjdHMsIHdlJ2xsIGhhdmUgdGhlIHJlYXNvbiBoZXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFNpbXBsZSBFeGFtcGxlXG4gICAgICAtLS0tLS0tLS0tLS0tLVxuICAgICAgIFN5bmNocm9ub3VzIEV4YW1wbGVcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGZpbmRSZXN1bHQoKTtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfVxuICAgICAgYGBgXG4gICAgICAgRXJyYmFjayBFeGFtcGxlXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRSZXN1bHQoZnVuY3Rpb24ocmVzdWx0LCBlcnIpe1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBQcm9taXNlIEV4YW1wbGU7XG4gICAgICAgYGBgamF2YXNjcmlwdFxuICAgICAgZmluZFJlc3VsdCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSwgZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBBZHZhbmNlZCBFeGFtcGxlXG4gICAgICAtLS0tLS0tLS0tLS0tLVxuICAgICAgIFN5bmNocm9ub3VzIEV4YW1wbGVcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICB2YXIgYXV0aG9yLCBib29rcztcbiAgICAgICB0cnkge1xuICAgICAgICBhdXRob3IgPSBmaW5kQXV0aG9yKCk7XG4gICAgICAgIGJvb2tzICA9IGZpbmRCb29rc0J5QXV0aG9yKGF1dGhvcik7XG4gICAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgIH0gY2F0Y2gocmVhc29uKSB7XG4gICAgICAgIC8vIGZhaWx1cmVcbiAgICAgIH1cbiAgICAgIGBgYFxuICAgICAgIEVycmJhY2sgRXhhbXBsZVxuICAgICAgIGBgYGpzXG4gICAgICAgZnVuY3Rpb24gZm91bmRCb29rcyhib29rcykge1xuICAgICAgIH1cbiAgICAgICBmdW5jdGlvbiBmYWlsdXJlKHJlYXNvbikge1xuICAgICAgIH1cbiAgICAgICBmaW5kQXV0aG9yKGZ1bmN0aW9uKGF1dGhvciwgZXJyKXtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAvLyBmYWlsdXJlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpbmRCb29va3NCeUF1dGhvcihhdXRob3IsIGZ1bmN0aW9uKGJvb2tzLCBlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm91bmRCb29rcyhib29rcyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgIGZhaWx1cmUocmVhc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFByb21pc2UgRXhhbXBsZTtcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICBmaW5kQXV0aG9yKCkuXG4gICAgICAgIHRoZW4oZmluZEJvb2tzQnlBdXRob3IpLlxuICAgICAgICB0aGVuKGZ1bmN0aW9uKGJvb2tzKXtcbiAgICAgICAgICAvLyBmb3VuZCBib29rc1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgQG1ldGhvZCB0aGVuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBvbkZ1bGZpbGxlZFxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3RlZFxuICAgICAgVXNlZnVsIGZvciB0b29saW5nLlxuICAgICAgQHJldHVybiB7UHJvbWlzZX1cbiAgICAqL1xuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzO1xuICAgICAgdmFyIHN0YXRlID0gcGFyZW50Ll9zdGF0ZTtcblxuICAgICAgaWYgKHN0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQgJiYgIW9uRnVsZmlsbG1lbnQgfHwgc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEICYmICFvblJlamVjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIGNoaWxkID0gbmV3IHRoaXMuY29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG4gICAgICB2YXIgcmVzdWx0ID0gcGFyZW50Ll9yZXN1bHQ7XG5cbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbc3RhdGUgLSAxXTtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHN0YXRlLCBjaGlsZCwgY2FsbGJhY2ssIHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHBhcmVudCwgY2hpbGQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgIGBjYXRjaGAgaXMgc2ltcGx5IHN1Z2FyIGZvciBgdGhlbih1bmRlZmluZWQsIG9uUmVqZWN0aW9uKWAgd2hpY2ggbWFrZXMgaXQgdGhlIHNhbWVcbiAgICAgIGFzIHRoZSBjYXRjaCBibG9jayBvZiBhIHRyeS9jYXRjaCBzdGF0ZW1lbnQuXG4gICAgICAgYGBganNcbiAgICAgIGZ1bmN0aW9uIGZpbmRBdXRob3IoKXtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZG4ndCBmaW5kIHRoYXQgYXV0aG9yJyk7XG4gICAgICB9XG4gICAgICAgLy8gc3luY2hyb25vdXNcbiAgICAgIHRyeSB7XG4gICAgICAgIGZpbmRBdXRob3IoKTtcbiAgICAgIH0gY2F0Y2gocmVhc29uKSB7XG4gICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICB9XG4gICAgICAgLy8gYXN5bmMgd2l0aCBwcm9taXNlc1xuICAgICAgZmluZEF1dGhvcigpLmNhdGNoKGZ1bmN0aW9uKHJlYXNvbil7XG4gICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEBtZXRob2QgY2F0Y2hcbiAgICAgIEBwYXJhbSB7RnVuY3Rpb259IG9uUmVqZWN0aW9uXG4gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuXG4gICAgICBAcmV0dXJuIHtQcm9taXNlfVxuICAgICovXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gX2NhdGNoKG9uUmVqZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0aW9uKTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkcG9seWZpbGwoKSB7XG4gICAgdmFyIGxvY2FsO1xuXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsb2NhbCA9IGdsb2JhbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWwgPSBzZWxmO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2NhbCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncG9seWZpbGwgZmFpbGVkIGJlY2F1c2UgZ2xvYmFsIG9iamVjdCBpcyB1bmF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFAgPSBsb2NhbC5Qcm9taXNlO1xuXG4gICAgaWYgKFAgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFAucmVzb2x2ZSgpKSA9PT0gJ1tvYmplY3QgUHJvbWlzZV0nICYmICFQLmNhc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2NhbC5Qcm9taXNlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGRlZmF1bHQ7XG4gIH1cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkcG9seWZpbGw7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2UgPSB7XG4gICAgJ1Byb21pc2UnOiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdCxcbiAgICAncG9seWZpbGwnOiBsaWIkZXM2JHByb21pc2UkcG9seWZpbGwkJGRlZmF1bHRcbiAgfTtcblxuICAvKiBnbG9iYWwgZGVmaW5lOnRydWUgbW9kdWxlOnRydWUgd2luZG93OiB0cnVlICovXG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZVsnYW1kJ10pIHtcbiAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2U7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlWydleHBvcnRzJ10pIHtcbiAgICBtb2R1bGVbJ2V4cG9ydHMnXSA9IGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2U7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhpc1snRVM2UHJvbWlzZSddID0gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgfVxuXG4gIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdCgpO1xufSkuY2FsbCh1bmRlZmluZWQpOyIsIi8vIFRoaXMgaXMgZnJlZSBhbmQgdW5lbmN1bWJlcmVkIHNvZnR3YXJlIHJlbGVhc2VkIGludG8gdGhlIHB1YmxpYyBkb21haW4uXG4vLyBTZWUgTElDRU5TRS5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxudmFyIGVuY29kaW5nID0gcmVxdWlyZShcIi4vbGliL2VuY29kaW5nLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVGV4dEVuY29kZXI6IGVuY29kaW5nLlRleHRFbmNvZGVyLFxuICBUZXh0RGVjb2RlcjogZW5jb2RpbmcuVGV4dERlY29kZXIsXG59O1xuIiwiKGZ1bmN0aW9uKGdsb2JhbCkge1xuICAndXNlIHN0cmljdCc7XG4gIGdsb2JhbFtcImVuY29kaW5nLWluZGV4ZXNcIl0gPSB7XG4gIFwiYmlnNVwiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUwNiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQzLDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwzODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcsMTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgwOTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMzLDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEyNzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEsMTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEsNDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcsMjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwyMDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIwODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYwLDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGwsMzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUxMCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUzMiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2NjcsMjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQsMjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTksMjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAsMTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3MywxNjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYwMiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQsMTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwxOTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIxNzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDksMTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYxMTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEzNDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwxNDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMxLDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMzLDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEzNTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQyOCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkxOSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEzODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwzMTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUsMzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3MDAwMCw0MDA2MCw0MDQ3OSw0MDY0NCwyNzUwMyw2Mzc1MSwyMDAyMywxMzEyMDcsMzg0MjksMjUxNDMsMzgwNTAsbnVsbCwyMDUzOSwyODE1OCwxNzExMjMsNDA4NzAsMTU4MTcsMzQ5NTksMTQ3NzkwLDI4NzkxLDIzNzk3LDE5MjMyLDE1MjAxMywxMzY1NywxNTQ5MjgsMjQ4NjYsMTY2NDUwLDM2Nzc1LDM3MzY2LDI5MDczLDI2MzkzLDI5NjI2LDE0NDAwMSwxNzIyOTUsMTU0OTksMTM3NjAwLDE5MjE2LDMwOTQ4LDI5Njk4LDIwOTEwLDE2NTY0NywxNjM5MywyNzIzNSwxNzI3MzAsMTY5MzEsMzQzMTksMTMzNzQzLDMxMjc0LDE3MDMxMSwxNjY2MzQsMzg3NDEsMjg3NDksMjEyODQsMTM5MzkwLDM3ODc2LDMwNDI1LDE2NjM3MSw0MDg3MSwzMDY4NSwyMDEzMSwyMDQ2NCwyMDY2OCwyMDAxNSwyMDI0Nyw0MDg3MiwyMTU1NiwzMjEzOSwyMjY3NCwyMjczNiwxMzg2NzgsMjQyMTAsMjQyMTcsMjQ1MTQsMTQxMDc0LDI1OTk1LDE0NDM3NywyNjkwNSwyNzIwMywxNDY1MzEsMjc5MDMsbnVsbCwyOTE4NCwxNDg3NDEsMjk1ODAsMTYwOTEsMTUwMDM1LDIzMzE3LDI5ODgxLDM1NzE1LDE1NDc4OCwxNTMyMzcsMzEzNzksMzE3MjQsMzE5MzksMzIzNjQsMzM1MjgsMzQxOTksNDA4NzMsMzQ5NjAsNDA4NzQsMzY1MzcsNDA4NzUsMzY4MTUsMzQxNDMsMzkzOTIsMzc0MDksNDA4NzYsMTY3MzUzLDEzNjI1NSwxNjQ5NywxNzA1OCwyMzA2NixudWxsLG51bGwsbnVsbCwzOTAxNiwyNjQ3NSwxNzAxNCwyMjMzMyxudWxsLDM0MjYyLDE0OTg4MywzMzQ3MSwxNjAwMTMsMTk1ODUsMTU5MDkyLDIzOTMxLDE1ODQ4NSwxNTk2NzgsNDA4NzcsNDA4NzgsMjM0NDYsNDA4NzksMjYzNDMsMzIzNDcsMjgyNDcsMzExNzgsMTU3NTIsMTc2MDMsMTQzOTU4LDE0MTIwNiwxNzMwNiwxNzcxOCxudWxsLDIzNzY1LDE0NjIwMiwzNTU3NywyMzY3MiwxNTYzNCwxNDQ3MjEsMjM5MjgsNDA4ODIsMjkwMTUsMTc3NTIsMTQ3NjkyLDEzODc4NywxOTU3NSwxNDcxMiwxMzM4NiwxMzE0OTIsMTU4Nzg1LDM1NTMyLDIwNDA0LDEzMTY0MSwyMjk3NSwzMzEzMiwzODk5OCwxNzAyMzQsMjQzNzksMTM0MDQ3LG51bGwsMTM5NzEzLDE2NjI1MywxNjY0MiwxODEwNywxNjgwNTcsMTYxMzUsNDA4ODMsMTcyNDY5LDE2NjMyLDE0Mjk0LDE4MTY3LDE1ODc5MCwxNjc2NCwxNjU1NTQsMTYwNzY3LDE3NzczLDE0NTQ4LDE1MjczMCwxNzc2MSwxNzY5MSwxOTg0OSwxOTU3OSwxOTgzMCwxNzg5OCwxNjMyOCwxNTAyODcsMTM5MjEsMTc2MzAsMTc1OTcsMTY4NzcsMjM4NzAsMjM4ODAsMjM4OTQsMTU4NjgsMTQzNTEsMjM5NzIsMjM5OTMsMTQzNjgsMTQzOTIsMjQxMzAsMjQyNTMsMjQzNTcsMjQ0NTEsMTQ2MDAsMTQ2MTIsMTQ2NTUsMTQ2NjksMjQ3OTEsMjQ4OTMsMjM3ODEsMTQ3MjksMjUwMTUsMjUwMTcsMjUwMzksMTQ3NzYsMjUxMzIsMjUyMzIsMjUzMTcsMjUzNjgsMTQ4NDAsMjIxOTMsMTQ4NTEsMjU1NzAsMjU1OTUsMjU2MDcsMjU2OTAsMTQ5MjMsMjU3OTIsMjM4MjksMjIwNDksNDA4NjMsMTQ5OTksMjU5OTAsMTUwMzcsMjYxMTEsMjYxOTUsMTUwOTAsMjYyNTgsMTUxMzgsMjYzOTAsMTUxNzAsMjY1MzIsMjY2MjQsMTUxOTIsMjY2OTgsMjY3NTYsMTUyMTgsMTUyMTcsMTUyMjcsMjY4ODksMjY5NDcsMjkyNzYsMjY5ODAsMjcwMzksMjcwMTMsMTUyOTIsMjcwOTQsMTUzMjUsMjcyMzcsMjcyNTIsMjcyNDksMjcyNjYsMTUzNDAsMjcyODksMTUzNDYsMjczMDcsMjczMTcsMjczNDgsMjczODIsMjc1MjEsMjc1ODUsMjc2MjYsMjc3NjUsMjc4MTgsMTU1NjMsMjc5MDYsMjc5MTAsMjc5NDIsMjgwMzMsMTU1OTksMjgwNjgsMjgwODEsMjgxODEsMjgxODQsMjgyMDEsMjgyOTQsMTY2MzM2LDI4MzQ3LDI4Mzg2LDI4Mzc4LDQwODMxLDI4MzkyLDI4MzkzLDI4NDUyLDI4NDY4LDE1Njg2LDE0NzI2NSwyODU0NSwyODYwNiwxNTcyMiwxNTczMywyOTExMSwyMzcwNSwxNTc1NCwyODcxNiwxNTc2MSwyODc1MiwyODc1NiwyODc4MywyODc5OSwyODgwOSwxMzE4NzcsMTczNDUsMTM4MDksMTM0ODcyLDE0NzE1OSwyMjQ2MiwxNTk0NDMsMjg5OTAsMTUzNTY4LDEzOTAyLDI3MDQyLDE2Njg4OSwyMzQxMiwzMTMwNSwxNTM4MjUsMTY5MTc3LDMxMzMzLDMxMzU3LDE1NDAyOCwzMTQxOSwzMTQwOCwzMTQyNiwzMTQyNywyOTEzNywxNTY4MTMsMTY4NDIsMzE0NTAsMzE0NTMsMzE0NjYsMTY4NzksMjE2ODIsMTU0NjI1LDMxNDk5LDMxNTczLDMxNTI5LDE1MjMzNCwxNTQ4NzgsMzE2NTAsMzE1OTksMzM2OTIsMTU0NTQ4LDE1ODg0NywzMTY5NiwzMzgyNSwzMTYzNCwzMTY3MiwxNTQ5MTIsMTU3ODksMTU0NzI1LDMzOTM4LDMxNzM4LDMxNzUwLDMxNzk3LDE1NDgxNywzMTgxMiwzMTg3NSwxNDk2MzQsMzE5MTAsMjYyMzcsMTQ4ODU2LDMxOTQ1LDMxOTQzLDMxOTc0LDMxODYwLDMxOTg3LDMxOTg5LDMxOTUwLDMyMzU5LDE3NjkzLDE1OTMwMCwzMjA5MywxNTk0NDYsMjk4MzcsMzIxMzcsMzIxNzEsMjg5ODEsMzIxNzksMzIyMTAsMTQ3NTQzLDE1NTY4OSwzMjIyOCwxNTYzNSwzMjI0NSwxMzcyMDksMzIyMjksMTY0NzE3LDMyMjg1LDE1NTkzNywxNTU5OTQsMzIzNjYsMzI0MDIsMTcxOTUsMzc5OTYsMzIyOTUsMzI1NzYsMzI1NzcsMzI1ODMsMzEwMzAsMTU2MzY4LDM5MzkzLDMyNjYzLDE1NjQ5NywzMjY3NSwxMzY4MDEsMTMxMTc2LDE3NzU2LDE0NTI1NCwxNzY2NywxNjQ2NjYsMzI3NjIsMTU2ODA5LDMyNzczLDMyNzc2LDMyNzk3LDMyODA4LDMyODE1LDE3MjE2NywxNTg5MTUsMzI4MjcsMzI4MjgsMzI4NjUsMTQxMDc2LDE4ODI1LDE1NzIyMiwxNDY5MTUsMTU3NDE2LDI2NDA1LDMyOTM1LDE2NjQ3MiwzMzAzMSwzMzA1MCwyMjcwNCwxNDEwNDYsMjc3NzUsMTU2ODI0LDE1MTQ4MCwyNTgzMSwxMzYzMzAsMzMzMDQsMTM3MzEwLDI3MjE5LDE1MDExNywxNTAxNjUsMTc1MzAsMzMzMjEsMTMzOTAxLDE1ODI5MCwxNDY4MTQsMjA0NzMsMTM2NDQ1LDM0MDE4LDMzNjM0LDE1ODQ3NCwxNDk5MjcsMTQ0Njg4LDEzNzA3NSwxNDY5MzYsMzM0NTAsMjY5MDcsMTk0OTY0LDE2ODU5LDM0MTIzLDMzNDg4LDMzNTYyLDEzNDY3OCwxMzcxNDAsMTQwMTcsMTQzNzQxLDE0NDczMCwzMzQwMywzMzUwNiwzMzU2MCwxNDcwODMsMTU5MTM5LDE1ODQ2OSwxNTg2MTUsMTQ0ODQ2LDE1ODA3LDMzNTY1LDIxOTk2LDMzNjY5LDE3Njc1LDE1OTE0MSwzMzcwOCwzMzcyOSwzMzc0NywxMzQzOCwxNTk0NDQsMjcyMjMsMzQxMzgsMTM0NjIsMTU5Mjk4LDE0MzA4NywzMzg4MCwxNTQ1OTYsMzM5MDUsMTU4MjcsMTc2MzYsMjczMDMsMzM4NjYsMTQ2NjEzLDMxMDY0LDMzOTYwLDE1ODYxNCwxNTkzNTEsMTU5Mjk5LDM0MDE0LDMzODA3LDMzNjgxLDE3NTY4LDMzOTM5LDM0MDIwLDE1NDc2OSwxNjk2MCwxNTQ4MTYsMTc3MzEsMzQxMDAsMjMyODIsMTU5Mzg1LDE3NzAzLDM0MTYzLDE3Njg2LDI2NTU5LDM0MzI2LDE2NTQxMywxNjU0MzUsMzQyNDEsMTU5ODgwLDM0MzA2LDEzNjU3OCwxNTk5NDksMTk0OTk0LDE3NzcwLDM0MzQ0LDEzODk2LDEzNzM3OCwyMTQ5NSwxNjA2NjYsMzQ0MzAsMzQ2NzMsMTcyMjgwLDM0Nzk4LDE0MjM3NSwzNDczNywzNDc3OCwzNDgzMSwyMjExMywzNDQxMiwyNjcxMCwxNzkzNSwzNDg4NSwzNDg4NiwxNjEyNDgsMTQ2ODczLDE2MTI1MiwzNDkxMCwzNDk3MiwxODAxMSwzNDk5NiwzNDk5NywyNTUzNywzNTAxMywzMDU4MywxNjE1NTEsMzUyMDcsMzUyMTAsMzUyMzgsMzUyNDEsMzUyMzksMzUyNjAsMTY2NDM3LDM1MzAzLDE2MjA4NCwxNjI0OTMsMzU0ODQsMzA2MTEsMzczNzQsMzU0NzIsMTYyMzkzLDMxNDY1LDE2MjYxOCwxNDczNDMsMTgxOTUsMTYyNjE2LDI5MDUyLDM1NTk2LDM1NjE1LDE1MjYyNCwxNTI5MzMsMzU2NDcsMzU2NjAsMzU2NjEsMzU0OTcsMTUwMTM4LDM1NzI4LDM1NzM5LDM1NTAzLDEzNjkyNywxNzk0MSwzNDg5NSwzNTk5NSwxNjMxNTYsMTYzMjE1LDE5NTAyOCwxNDExNywxNjMxNTUsMzYwNTQsMTYzMjI0LDE2MzI2MSwzNjExNCwzNjA5OSwxMzc0ODgsMzYwNTksMjg3NjQsMzYxMTMsMTUwNzI5LDE2MDgwLDM2MjE1LDM2MjY1LDE2Mzg0MiwxMzUxODgsMTQ5ODk4LDE1MjI4LDE2NDI4NCwxNjAwMTIsMzE0NjMsMzY1MjUsMzY1MzQsMzY1NDcsMzc1ODgsMzY2MzMsMzY2NTMsMTY0NzA5LDE2NDg4MiwzNjc3MywzNzYzNSwxNzI3MDMsMTMzNzEyLDM2Nzg3LDE4NzMwLDE2NjM2NiwxNjUxODEsMTQ2ODc1LDI0MzEyLDE0Mzk3MCwzNjg1NywxNzIwNTIsMTY1NTY0LDE2NTEyMSwxNDAwNjksMTQ3MjAsMTU5NDQ3LDM2OTE5LDE2NTE4MCwxNjI0OTQsMzY5NjEsMTY1MjI4LDE2NTM4NywzNzAzMiwxNjU2NTEsMzcwNjAsMTY1NjA2LDM3MDM4LDM3MTE3LDM3MjIzLDE1MDg4LDM3Mjg5LDM3MzE2LDMxOTE2LDE2NjE5NSwxMzg4ODksMzczOTAsMjc4MDcsMzc0NDEsMzc0NzQsMTUzMDE3LDM3NTYxLDE2NjU5OCwxNDY1ODcsMTY2NjY4LDE1MzA1MSwxMzQ0NDksMzc2NzYsMzc3MzksMTY2NjI1LDE2Njg5MSwyODgxNSwyMzIzNSwxNjY2MjYsMTY2NjI5LDE4Nzg5LDM3NDQ0LDE2Njg5MiwxNjY5NjksMTY2OTExLDM3NzQ3LDM3OTc5LDM2NTQwLDM4Mjc3LDM4MzEwLDM3OTI2LDM4MzA0LDI4NjYyLDE3MDgxLDE0MDkyMiwxNjU1OTIsMTM1ODA0LDE0Njk5MCwxODkxMSwyNzY3NiwzODUyMywzODU1MCwxNjc0OCwzODU2MywxNTk0NDUsMjUwNTAsMzg1ODIsMzA5NjUsMTY2NjI0LDM4NTg5LDIxNDUyLDE4ODQ5LDE1ODkwNCwxMzE3MDAsMTU2Njg4LDE2ODExMSwxNjgxNjUsMTUwMjI1LDEzNzQ5MywxNDQxMzgsMzg3MDUsMzQzNzAsMzg3MTAsMTg5NTksMTc3MjUsMTc3OTcsMTUwMjQ5LDI4Nzg5LDIzMzYxLDM4NjgzLDM4NzQ4LDE2ODQwNSwzODc0MywyMzM3MCwxNjg0MjcsMzg3NTEsMzc5MjUsMjA2ODgsMTQzNTQzLDE0MzU0OCwzODc5MywzODgxNSwzODgzMywzODg0NiwzODg0OCwzODg2NiwzODg4MCwxNTI2ODQsMzg4OTQsMjk3MjQsMTY5MDExLDM4OTExLDM4OTAxLDE2ODk4OSwxNjIxNzAsMTkxNTMsMzg5NjQsMzg5NjMsMzg5ODcsMzkwMTQsMTUxMTgsMTYwMTE3LDE1Njk3LDEzMjY1NiwxNDc4MDQsMTUzMzUwLDM5MTE0LDM5MDk1LDM5MTEyLDM5MTExLDE5MTk5LDE1OTAxNSwxMzY5MTUsMjE5MzYsMzkxMzcsMzkxNDIsMzkxNDgsMzc3NTIsMzkyMjUsMTUwMDU3LDE5MzE0LDE3MDA3MSwxNzAyNDUsMzk0MTMsMzk0MzYsMzk0ODMsMzk0NDAsMzk1MTIsMTUzMzgxLDE0MDIwLDE2ODExMywxNzA5NjUsMzk2NDgsMzk2NTAsMTcwNzU3LDM5NjY4LDE5NDcwLDM5NzAwLDM5NzI1LDE2NTM3NiwyMDUzMiwzOTczMiwxNTgxMjAsMTQ1MzEsMTQzNDg1LDM5NzYwLDM5NzQ0LDE3MTMyNiwyMzEwOSwxMzczMTUsMzk4MjIsMTQ4MDQzLDM5OTM4LDM5OTM1LDM5OTQ4LDE3MTYyNCw0MDQwNCwxNzE5NTksMTcyNDM0LDE3MjQ1OSwxNzIyNTcsMTcyMzIzLDE3MjUxMSw0MDMxOCw0MDMyMywxNzIzNDAsNDA0NjIsMjY3NjAsNDAzODgsMTM5NjExLDE3MjQzNSwxNzI1NzYsMTM3NTMxLDE3MjU5NSw0MDI0OSwxNzIyMTcsMTcyNzI0LDQwNTkyLDQwNTk3LDQwNjA2LDQwNjEwLDE5NzY0LDQwNjE4LDQwNjIzLDE0ODMyNCw0MDY0MSwxNTIwMCwxNDgyMSwxNTY0NSwyMDI3NCwxNDI3MCwxNjY5NTUsNDA3MDYsNDA3MTIsMTkzNTAsMzc5MjQsMTU5MTM4LDQwNzI3LDQwNzI2LDQwNzYxLDIyMTc1LDIyMTU0LDQwNzczLDM5MzUyLDE2ODA3NSwzODg5OCwzMzkxOSw0MDgwMiw0MDgwOSwzMTQ1Miw0MDg0NiwyOTIwNiwxOTM5MCwxNDk4NzcsMTQ5OTQ3LDI5MDQ3LDE1MDAwOCwxNDgyOTYsMTUwMDk3LDI5NTk4LDE2Njg3NCwxMzc0NjYsMzExMzUsMTY2MjcwLDE2NzQ3OCwzNzczNywzNzg3NSwxNjY0NjgsMzc2MTIsMzc3NjEsMzc4MzUsMTY2MjUyLDE0ODY2NSwyOTIwNywxNjEwNywzMDU3OCwzMTI5OSwyODg4MCwxNDg1OTUsMTQ4NDcyLDI5MDU0LDEzNzE5OSwyODgzNSwxMzc0MDYsMTQ0NzkzLDE2MDcxLDEzNzM0OSwxNTI2MjMsMTM3MjA4LDE0MTE0LDEzNjk1NSwxMzcyNzMsMTQwNDksMTM3MDc2LDEzNzQyNSwxNTU0NjcsMTQxMTUsMTM2ODk2LDIyMzYzLDE1MDA1MywxMzYxOTAsMTM1ODQ4LDEzNjEzNCwxMzYzNzQsMzQwNTEsMTQ1MDYyLDM0MDUxLDMzODc3LDE0OTkwOCwxNjAxMDEsMTQ2OTkzLDE1MjkyNCwxNDcxOTUsMTU5ODI2LDE3NjUyLDE0NTEzNCwxNzAzOTcsMTU5NTI2LDI2NjE3LDE0MTMxLDE1MzgxLDE1ODQ3LDIyNjM2LDEzNzUwNiwyNjY0MCwxNjQ3MSwxNDUyMTUsMTQ3NjgxLDE0NzU5NSwxNDc3MjcsMTU4NzUzLDIxNzA3LDIyMTc0LDE1NzM2MSwyMjE2MiwxMzUxMzUsMTM0MDU2LDEzNDY2OSwzNzgzMCwxNjY2NzUsMzc3ODgsMjAyMTYsMjA3NzksMTQzNjEsMTQ4NTM0LDIwMTU2LDEzMjE5NywxMzE5NjcsMjAyOTksMjAzNjIsMTUzMTY5LDIzMTQ0LDEzMTQ5OSwxMzIwNDMsMTQ3NDUsMTMxODUwLDEzMjExNiwxMzM2NSwyMDI2NSwxMzE3NzYsMTY3NjAzLDEzMTcwMSwzNTU0NiwxMzE1OTYsMjAxMjAsMjA2ODUsMjA3NDksMjAzODYsMjAyMjcsMTUwMDMwLDE0NzA4MiwyMDI5MCwyMDUyNiwyMDU4OCwyMDYwOSwyMDQyOCwyMDQ1MywyMDU2OCwyMDczMiwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyODI3OCwxNDQ3ODksMTQ3MDAxLDE0NzEzNSwyODAxOCwxMzczNDgsMTQ3MDgxLDIwOTA0LDIwOTMxLDEzMjU3NiwxNzYyOSwxMzIyNTksMTMyMjQyLDEzMjI0MSwzNjIxOCwxNjY1NTYsMTMyODc4LDIxMDgxLDIxMTU2LDEzMzIzNSwyMTIxNywzNzc0MiwxODA0MiwyOTA2OCwxNDgzNjQsMTM0MTc2LDE0OTkzMiwxMzUzOTYsMjcwODksMTM0Njg1LDI5ODE3LDE2MDk0LDI5ODQ5LDI5NzE2LDI5NzgyLDI5NTkyLDE5MzQyLDE1MDIwNCwxNDc1OTcsMjE0NTYsMTM3MDAsMjkxOTksMTQ3NjU3LDIxOTQwLDEzMTkwOSwyMTcwOSwxMzQwODYsMjIzMDEsMzc0NjksMzg2NDQsMzc3MzQsMjI0OTMsMjI0MTMsMjIzOTksMTM4ODYsMjI3MzEsMjMxOTMsMTY2NDcwLDEzNjk1NCwxMzcwNzEsMTM2OTc2LDIzMDg0LDIyOTY4LDM3NTE5LDIzMTY2LDIzMjQ3LDIzMDU4LDE1MzkyNiwxMzc3MTUsMTM3MzEzLDE0ODExNywxNDA2OSwyNzkwOSwyOTc2MywyMzA3MywxNTUyNjcsMjMxNjksMTY2ODcxLDEzMjExNSwzNzg1NiwyOTgzNiwxMzU5MzksMjg5MzMsMTg4MDIsMzc4OTYsMTY2Mzk1LDM3ODIxLDE0MjQwLDIzNTgyLDIzNzEwLDI0MTU4LDI0MTM2LDEzNzYyMiwxMzc1OTYsMTQ2MTU4LDI0MjY5LDIzMzc1LDEzNzQ3NSwxMzc0NzYsMTQwODEsMTM3Mzc2LDE0MDQ1LDEzNjk1OCwxNDAzNSwzMzA2NiwxNjY0NzEsMTM4NjgyLDE0NDQ5OCwxNjYzMTIsMjQzMzIsMjQzMzQsMTM3NTExLDEzNzEzMSwyMzE0NywxMzcwMTksMjMzNjQsMzQzMjQsMTYxMjc3LDM0OTEyLDI0NzAyLDE0MTQwOCwxNDA4NDMsMjQ1MzksMTYwNTYsMTQwNzE5LDE0MDczNCwxNjgwNzIsMTU5NjAzLDI1MDI0LDEzMTEzNCwxMzExNDIsMTQwODI3LDI0OTg1LDI0OTg0LDI0NjkzLDE0MjQ5MSwxNDI1OTksMTQ5MjA0LDE2ODI2OSwyNTcxMywxNDkwOTMsMTQyMTg2LDE0ODg5LDE0MjExNCwxNDQ0NjQsMTcwMjE4LDE0Mjk2OCwyNTM5OSwxNzMxNDcsMjU3ODIsMjUzOTMsMjU1NTMsMTQ5OTg3LDE0MjY5NSwyNTI1MiwxNDI0OTcsMjU2NTksMjU5NjMsMjY5OTQsMTUzNDgsMTQzNTAyLDE0NDA0NSwxNDk4OTcsMTQ0MDQzLDIxNzczLDE0NDA5NiwxMzc0MzMsMTY5MDIzLDI2MzE4LDE0NDAwOSwxNDM3OTUsMTUwNzIsMTY3ODQsMTUyOTY0LDE2NjY5MCwxNTI5NzUsMTM2OTU2LDE1MjkyMywxNTI2MTMsMzA5NTgsMTQzNjE5LDEzNzI1OCwxNDM5MjQsMTM0MTIsMTQzODg3LDE0Mzc0NiwxNDgxNjksMjYyNTQsMTU5MDEyLDI2MjE5LDE5MzQ3LDI2MTYwLDE2MTkwNCwxMzg3MzEsMjYyMTEsMTQ0MDgyLDE0NDA5NywyNjE0MiwxNTM3MTQsMTQ1NDUsMTQ1NDY2LDE0NTM0MCwxNTI1NywxNDUzMTQsMTQ0MzgyLDI5OTA0LDE1MjU0LDI2NTExLDE0OTAzNCwyNjgwNiwyNjY1NCwxNTMwMCwyNzMyNiwxNDQzNSwxNDUzNjUsMTQ4NjE1LDI3MTg3LDI3MjE4LDI3MzM3LDI3Mzk3LDEzNzQ5MCwyNTg3MywyNjc3NiwyNzIxMiwxNTMxOSwyNzI1OCwyNzQ3OSwxNDczOTIsMTQ2NTg2LDM3NzkyLDM3NjE4LDE2Njg5MCwxNjY2MDMsMzc1MTMsMTYzODcwLDE2NjM2NCwzNzk5MSwyODA2OSwyODQyNywxNDk5OTYsMjgwMDcsMTQ3MzI3LDE1NzU5LDI4MTY0LDE0NzUxNiwyMzEwMSwyODE3MCwyMjU5OSwyNzk0MCwzMDc4NiwyODk4NywxNDgyNTAsMTQ4MDg2LDI4OTEzLDI5MjY0LDI5MzE5LDI5MzMyLDE0OTM5MSwxNDkyODUsMjA4NTcsMTUwMTgwLDEzMjU4NywyOTgxOCwxNDcxOTIsMTQ0OTkxLDE1MDA5MCwxNDk3ODMsMTU1NjE3LDE2MTM0LDE2MDQ5LDE1MDIzOSwxNjY5NDcsMTQ3MjUzLDI0NzQzLDE2MTE1LDI5OTAwLDI5NzU2LDM3NzY3LDI5NzUxLDE3NTY3LDE1OTIxMCwxNzc0NSwzMDA4MywxNjIyNywxNTA3NDUsMTUwNzkwLDE2MjE2LDMwMDM3LDMwMzIzLDE3MzUxMCwxNTEyOSwyOTgwMCwxNjY2MDQsMTQ5OTMxLDE0OTkwMiwxNTA5OSwxNTgyMSwxNTAwOTQsMTYxMjcsMTQ5OTU3LDE0OTc0NywzNzM3MCwyMjMyMiwzNzY5OCwxNjY2MjcsMTM3MzE2LDIwNzAzLDE1MjA5NywxNTIwMzksMzA1ODQsMTQzOTIyLDMwNDc4LDMwNDc5LDMwNTg3LDE0OTE0MywxNDUyODEsMTQ5NDIsMTQ5NzQ0LDI5NzUyLDI5ODUxLDE2MDYzLDE1MDIwMiwxNTAyMTUsMTY1ODQsMTUwMTY2LDE1NjA3OCwzNzYzOSwxNTI5NjEsMzA3NTAsMzA4NjEsMzA4NTYsMzA5MzAsMjk2NDgsMzEwNjUsMTYxNjAxLDE1MzMxNSwxNjY1NCwzMTEzMSwzMzk0MiwzMTE0MSwyNzE4MSwxNDcxOTQsMzEyOTAsMzEyMjAsMTY3NTAsMTM2OTM0LDE2NjkwLDM3NDI5LDMxMjE3LDEzNDQ3NiwxNDk5MDAsMTMxNzM3LDE0Njg3NCwxMzcwNzAsMTM3MTksMjE4NjcsMTM2ODAsMTM5OTQsMTMxNTQwLDEzNDE1NywzMTQ1OCwyMzEyOSwxNDEwNDUsMTU0Mjg3LDE1NDI2OCwyMzA1MywxMzE2NzUsMzA5NjAsMjMwODIsMTU0NTY2LDMxNDg2LDE2ODg5LDMxODM3LDMxODUzLDE2OTEzLDE1NDU0NywxNTUzMjQsMTU1MzAyLDMxOTQ5LDE1MDAwOSwxMzcxMzYsMzE4ODYsMzE4NjgsMzE5MTgsMjczMTQsMzIyMjAsMzIyNjMsMzIyMTEsMzI1OTAsMTU2MjU3LDE1NTk5NiwxNjI2MzIsMzIxNTEsMTU1MjY2LDE3MDAyLDE1ODU4MSwxMzMzOTgsMjY1ODIsMTMxMTUwLDE0NDg0NywyMjQ2OCwxNTY2OTAsMTU2NjY0LDE0OTg1OCwzMjczMywzMTUyNywxMzMxNjQsMTU0MzQ1LDE1NDk0NywzMTUwMCwxNTUxNTAsMzkzOTgsMzQzNzMsMzk1MjMsMjcxNjQsMTQ0NDQ3LDE0ODE4LDE1MDAwNywxNTcxMDEsMzk0NTUsMTU3MDg4LDMzOTIwLDE2MDAzOSwxNTg5MjksMTc2NDIsMzMwNzksMTc0MTAsMzI5NjYsMzMwMzMsMzMwOTAsMTU3NjIwLDM5MTA3LDE1ODI3NCwzMzM3OCwzMzM4MSwxNTgyODksMzM4NzUsMTU5MTQzLDM0MzIwLDE2MDI4MywyMzE3NCwxNjc2NywxMzcyODAsMjMzMzksMTM3Mzc3LDIzMjY4LDEzNzQzMiwzNDQ2NCwxOTUwMDQsMTQ2ODMxLDM0ODYxLDE2MDgwMiwyMzA0MiwzNDkyNiwyMDI5MywzNDk1MSwzNTAwNywzNTA0NiwzNTE3MywzNTE0OSwxNTMyMTksMzUxNTYsMTYxNjY5LDE2MTY2OCwxNjY5MDEsMTY2ODczLDE2NjgxMiwxNjYzOTMsMTYwNDUsMzM5NTUsMTgxNjUsMTgxMjcsMTQzMjIsMzUzODksMzUzNTYsMTY5MDMyLDI0Mzk3LDM3NDE5LDE0ODEwMCwyNjA2OCwyODk2OSwyODg2OCwxMzcyODUsNDAzMDEsMzU5OTksMzYwNzMsMTYzMjkyLDIyOTM4LDMwNjU5LDIzMDI0LDE3MjYyLDE0MDM2LDM2Mzk0LDM2NTE5LDE1MDUzNywzNjY1NiwzNjY4MiwxNzE0MCwyNzczNiwyODYwMywxNDAwNjUsMTg1ODcsMjg1MzcsMjgyOTksMTM3MTc4LDM5OTEzLDE0MDA1LDE0OTgwNywzNzA1MSwzNzAxNSwyMTg3MywxODY5NCwzNzMwNywzNzg5MiwxNjY0NzUsMTY0ODIsMTY2NjUyLDM3OTI3LDE2Njk0MSwxNjY5NzEsMzQwMjEsMzUzNzEsMzgyOTcsMzgzMTEsMzgyOTUsMzgyOTQsMTY3MjIwLDI5NzY1LDE2MDY2LDE0OTc1OSwxNTAwODIsMTQ4NDU4LDE2MTAzLDE0MzkwOSwzODU0MywxNjc2NTUsMTY3NTI2LDE2NzUyNSwxNjA3NiwxNDk5OTcsMTUwMTM2LDE0NzQzOCwyOTcxNCwyOTgwMywxNjEyNCwzODcyMSwxNjgxMTIsMjY2OTUsMTg5NzMsMTY4MDgzLDE1MzU2NywzODc0OSwzNzczNiwxNjYyODEsMTY2OTUwLDE2NjcwMywxNTY2MDYsMzc1NjIsMjMzMTMsMzU2ODksMTg3NDgsMjk2ODksMTQ3OTk1LDM4ODExLDM4NzY5LDM5MjI0LDEzNDk1MCwyNDAwMSwxNjY4NTMsMTUwMTk0LDM4OTQzLDE2OTE3OCwzNzYyMiwxNjk0MzEsMzczNDksMTc2MDAsMTY2NzM2LDE1MDExOSwxNjY3NTYsMzkxMzIsMTY2NDY5LDE2MTI4LDM3NDE4LDE4NzI1LDMzODEyLDM5MjI3LDM5MjQ1LDE2MjU2NiwxNTg2OSwzOTMyMywxOTMxMSwzOTMzOCwzOTUxNiwxNjY3NTcsMTUzODAwLDI3Mjc5LDM5NDU3LDIzMjk0LDM5NDcxLDE3MDIyNSwxOTM0NCwxNzAzMTIsMzkzNTYsMTkzODksMTkzNTEsMzc3NTcsMjI2NDIsMTM1OTM4LDIyNTYyLDE0OTk0NCwxMzY0MjQsMzA3ODgsMTQxMDg3LDE0Njg3MiwyNjgyMSwxNTc0MSwzNzk3NiwxNDYzMSwyNDkxMiwxNDExODUsMTQxNjc1LDI0ODM5LDQwMDE1LDQwMDE5LDQwMDU5LDM5OTg5LDM5OTUyLDM5ODA3LDM5ODg3LDE3MTU2NSwzOTgzOSwxNzI1MzMsMTcyMjg2LDQwMjI1LDE5NjMwLDE0NzcxNiw0MDQ3MiwxOTYzMiw0MDIwNCwxNzI0NjgsMTcyMjY5LDE3MjI3NSwxNzAyODcsNDAzNTcsMzM5ODEsMTU5MjUwLDE1OTcxMSwxNTg1OTQsMzQzMDAsMTc3MTUsMTU5MTQwLDE1OTM2NCwxNTkyMTYsMzM4MjQsMzQyODYsMTU5MjMyLDE0NTM2NywxNTU3NDgsMzEyMDIsMTQ0Nzk2LDE0NDk2MCwxODczMywxNDk5ODIsMTU3MTQsMzc4NTEsMzc1NjYsMzc3MDQsMTMxNzc1LDMwOTA1LDM3NDk1LDM3OTY1LDIwNDUyLDEzMzc2LDM2OTY0LDE1MjkyNSwzMDc4MSwzMDgwNCwzMDkwMiwzMDc5NSwxMzcwNDcsMTQzODE3LDE0OTgyNSwxMzk3OCwyMDMzOCwyODYzNCwyODYzMywyODcwMiwyODcwMiwyMTUyNCwxNDc4OTMsMjI0NTksMjI3NzEsMjI0MTAsNDAyMTQsMjI0ODcsMjg5ODAsMTM0ODcsMTQ3ODg0LDI5MTYzLDE1ODc4NCwxNTE0NDcsMjMzMzYsMTM3MTQxLDE2NjQ3MywyNDg0NCwyMzI0NiwyMzA1MSwxNzA4NCwxNDg2MTYsMTQxMjQsMTkzMjMsMTY2Mzk2LDM3ODE5LDM3ODE2LDEzNzQzMCwxMzQ5NDEsMzM5MDYsMTU4OTEyLDEzNjIxMSwxNDgyMTgsMTQyMzc0LDE0ODQxNywyMjkzMiwxNDY4NzEsMTU3NTA1LDMyMTY4LDE1NTk5NSwxNTU4MTIsMTQ5OTQ1LDE0OTg5OSwxNjYzOTQsMzc2MDUsMjk2NjYsMTYxMDUsMjk4NzYsMTY2NzU1LDEzNzM3NSwxNjA5NywxNTAxOTUsMjczNTIsMjk2ODMsMjk2OTEsMTYwODYsMTUwMDc4LDE1MDE2NCwxMzcxNzcsMTUwMTE4LDEzMjAwNywxMzYyMjgsMTQ5OTg5LDI5NzY4LDE0OTc4MiwyODgzNywxNDk4NzgsMzc1MDgsMjk2NzAsMzc3MjcsMTMyMzUwLDM3NjgxLDE2NjYwNiwxNjY0MjIsMzc3NjYsMTY2ODg3LDE1MzA0NSwxODc0MSwxNjY1MzAsMjkwMzUsMTQ5ODI3LDEzNDM5OSwyMjE4MCwxMzI2MzQsMTM0MTIzLDEzNDMyOCwyMTc2MiwzMTE3MiwxMzcyMTAsMzIyNTQsMTM2ODk4LDE1MDA5NiwxMzcyOTgsMTc3MTAsMzc4ODksMTQwOTAsMTY2NTkyLDE0OTkzMywyMjk2MCwxMzc0MDcsMTM3MzQ3LDE2MDkwMCwyMzIwMSwxNDA1MCwxNDY3NzksMTQwMDAsMzc0NzEsMjMxNjEsMTY2NTI5LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkwOTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3MjcsMTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2NjczLDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwxNDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywyMzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAyMCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcsMTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQwLDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQsMjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcyNzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQsMjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcyLDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2NiwzMDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwzMDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgsMjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMxMDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywzMjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywzMjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwxNzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIxNywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwzNDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwzNDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0MywzODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYwODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIwMDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUsMTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMsMzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAsMzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgzMDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIxMDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUsMTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUsMzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5NjgsMTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQwNjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMxNDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyMDAwLDI2OTA2LDM4MDgzLDIyOTU2LDEzMjMxMSwyMjU5MiwzODA4MSwxNDI2NSwxMzI1NjUsMTMyNjI5LDEzMjcyNiwxMzY4OTAsMjIzNTksMjkwNDMsMTMzODI2LDEzMzgzNywxMzQwNzksMjE2MTAsMTk0NjE5LDEzNDA5MSwyMTY2MiwxMzQxMzksMTM0MjAzLDEzNDIyNywxMzQyNDUsMTM0MjY4LDI0ODA3LDEzNDI4NSwyMjEzOCwxMzQzMjUsMTM0MzY1LDEzNDM4MSwxMzQ1MTEsMTM0NTc4LDEzNDYwMCwyNjk2NSwzOTk4MywzNDcyNSwxMzQ2NjAsMTM0NjcwLDEzNDg3MSwxMzUwNTYsMTM0OTU3LDEzNDc3MSwyMzU4NCwxMzUxMDAsMjQwNzUsMTM1MjYwLDEzNTI0NywxMzUyODYsMjYzOTgsMTM1MjkxLDEzNTMwNCwxMzUzMTgsMTM4OTUsMTM1MzU5LDEzNTM3OSwxMzU0NzEsMTM1NDgzLDIxMzQ4LDMzOTY1LDEzNTkwNywxMzYwNTMsMTM1OTkwLDM1NzEzLDEzNjU2NywxMzY3MjksMTM3MTU1LDEzNzE1OSwyMDA4OCwyODg1OSwxMzcyNjEsMTM3NTc4LDEzNzc3MywxMzc3OTcsMTM4MjgyLDEzODM1MiwxMzg0MTIsMTM4OTUyLDI1MjgzLDEzODk2NSwxMzkwMjksMjkwODAsMjY3MDksMTM5MzMzLDI3MTEzLDE0MDI0LDEzOTkwMCwxNDAyNDcsMTQwMjgyLDE0MTA5OCwxNDE0MjUsMTQxNjQ3LDMzNTMzLDE0MTY3MSwxNDE3MTUsMTQyMDM3LDM1MjM3LDE0MjA1NiwzNjc2OCwxNDIwOTQsMzg4NDAsMTQyMTQzLDM4OTgzLDM5NjEzLDE0MjQxMixudWxsLDE0MjQ3MiwxNDI1MTksMTU0NjAwLDE0MjYwMCwxNDI2MTAsMTQyNzc1LDE0Mjc0MSwxNDI5MTQsMTQzMjIwLDE0MzMwOCwxNDM0MTEsMTQzNDYyLDE0NDE1OSwxNDQzNTAsMjQ0OTcsMjYxODQsMjYzMDMsMTYyNDI1LDE0NDc0MywxNDQ4ODMsMjkxODUsMTQ5OTQ2LDMwNjc5LDE0NDkyMiwxNDUxNzQsMzIzOTEsMTMxOTEwLDIyNzA5LDI2MzgyLDI2OTA0LDE0NjA4NywxNjEzNjcsMTU1NjE4LDE0Njk2MSwxNDcxMjksMTYxMjc4LDEzOTQxOCwxODY0MCwxOTEyOCwxNDc3MzcsMTY2NTU0LDE0ODIwNiwxNDgyMzcsMTQ3NTE1LDE0ODI3NiwxNDgzNzQsMTUwMDg1LDEzMjU1NCwyMDk0NiwxMzI2MjUsMjI5NDMsMTM4OTIwLDE1Mjk0LDE0NjY4NywxNDg0ODQsMTQ4Njk0LDIyNDA4LDE0OTEwOCwxNDc0NywxNDkyOTUsMTY1MzUyLDE3MDQ0MSwxNDE3OCwxMzk3MTUsMzU2NzgsMTY2NzM0LDM5MzgyLDE0OTUyMiwxNDk3NTUsMTUwMDM3LDI5MTkzLDE1MDIwOCwxMzQyNjQsMjI4ODUsMTUxMjA1LDE1MTQzMCwxMzI5ODUsMzY1NzAsMTUxNTk2LDIxMTM1LDIyMzM1LDI5MDQxLDE1MjIxNywxNTI2MDEsMTQ3Mjc0LDE1MDE4MywyMTk0OCwxNTI2NDYsMTUyNjg2LDE1ODU0NiwzNzMzMiwxMzQyNywxNTI4OTUsMTYxMzMwLDE1MjkyNiwxODIwMCwxNTI5MzAsMTUyOTM0LDE1MzU0MywxNDk4MjMsMTUzNjkzLDIwNTgyLDEzNTYzLDE0NDMzMiwyNDc5OCwxNTM4NTksMTgzMDAsMTY2MjE2LDE1NDI4NiwxNTQ1MDUsMTU0NjMwLDEzODY0MCwyMjQzMywyOTAwOSwyODU5OCwxNTU5MDYsMTYyODM0LDM2OTUwLDE1NjA4MiwxNTE0NTAsMzU2ODIsMTU2Njc0LDE1Njc0NiwyMzg5OSwxNTg3MTEsMzY2NjIsMTU2ODA0LDEzNzUwMCwzNTU2MiwxNTAwMDYsMTU2ODA4LDE0NzQzOSwxNTY5NDYsMTkzOTIsMTU3MTE5LDE1NzM2NSwxNDEwODMsMzc5ODksMTUzNTY5LDI0OTgxLDIzMDc5LDE5NDc2NSwyMDQxMSwyMjIwMSwxNDg3NjksMTU3NDM2LDIwMDc0LDE0OTgxMiwzODQ4NiwyODA0NywxNTg5MDksMTM4NDgsMzUxOTEsMTU3NTkzLDE1NzgwNiwxNTY2ODksMTU3NzkwLDI5MTUxLDE1Nzg5NSwzMTU1NCwxNjgxMjgsMTMzNjQ5LDE1Nzk5MCwzNzEyNCwxNTgwMDksMzEzMDEsNDA0MzIsMTU4MjAyLDM5NDYyLDE1ODI1MywxMzkxOSwxNTY3NzcsMTMxMTA1LDMxMTA3LDE1ODI2MCwxNTg1NTUsMjM4NTIsMTQ0NjY1LDMzNzQzLDE1ODYyMSwxODEyOCwxNTg4ODQsMzAwMTEsMzQ5MTcsMTU5MTUwLDIyNzEwLDE0MTA4LDE0MDY4NSwxNTk4MTksMTYwMjA1LDE1NDQ0LDE2MDM4NCwxNjAzODksMzc1MDUsMTM5NjQyLDE2MDM5NSwzNzY4MCwxNjA0ODYsMTQ5OTY4LDI3NzA1LDM4MDQ3LDE2MDg0OCwxMzQ5MDQsMzQ4NTUsMzUwNjEsMTQxNjA2LDE2NDk3OSwxMzcxMzcsMjgzNDQsMTUwMDU4LDEzNzI0OCwxNDc1NiwxNDAwOSwyMzU2OCwzMTIwMywxNzcyNywyNjI5NCwxNzExODEsMTcwMTQ4LDM1MTM5LDE2MTc0MCwxNjE4ODAsMjIyMzAsMTY2MDcsMTM2NzE0LDE0NzUzLDE0NTE5OSwxNjQwNzIsMTM2MTMzLDI5MTAxLDMzNjM4LDE2MjI2OSwxNjgzNjAsMjMxNDMsMTk2MzksMTU5OTE5LDE2NjMxNSwxNjIzMDEsMTYyMzE0LDE2MjU3MSwxNjMxNzQsMTQ3ODM0LDMxNTU1LDMxMTAyLDE2Mzg0OSwyODU5NywxNzI3NjcsMjcxMzksMTY0NjMyLDIxNDEwLDE1OTIzOSwzNzgyMywyNjY3OCwzODc0OSwxNjQyMDcsMTYzODc1LDE1ODEzMywxMzYxNzMsMTQzOTE5LDE2MzkxMiwyMzk0MSwxNjY5NjAsMTYzOTcxLDIyMjkzLDM4OTQ3LDE2NjIxNywyMzk3OSwxNDk4OTYsMjYwNDYsMjcwOTMsMjE0NTgsMTUwMTgxLDE0NzMyOSwxNTM3NywyNjQyMiwxNjM5ODQsMTY0MDg0LDE2NDE0MiwxMzkxNjksMTY0MTc1LDE2NDIzMywxNjQyNzEsMTY0Mzc4LDE2NDYxNCwxNjQ2NTUsMTY0NzQ2LDEzNzcwLDE2NDk2OCwxNjU1NDYsMTg2ODIsMjU1NzQsMTY2MjMwLDMwNzI4LDM3NDYxLDE2NjMyOCwxNzM5NCwxNjYzNzUsMTczNzUsMTY2Mzc2LDE2NjcyNiwxNjY4NjgsMjMwMzIsMTY2OTIxLDM2NjE5LDE2Nzg3NywxNjgxNzIsMzE1NjksMTY4MjA4LDE2ODI1MiwxNTg2MywxNjgyODYsMTUwMjE4LDM2ODE2LDI5MzI3LDIyMTU1LDE2OTE5MSwxNjk0NDksMTY5MzkyLDE2OTQwMCwxNjk3NzgsMTcwMTkzLDE3MDMxMywxNzAzNDYsMTcwNDM1LDE3MDUzNiwxNzA3NjYsMTcxMzU0LDE3MTQxOSwzMjQxNSwxNzE3NjgsMTcxODExLDE5NjIwLDM4MjE1LDE3MjY5MSwyOTA5MCwxNzI3OTksMTk4NTcsMzY4ODIsMTczNTE1LDE5ODY4LDEzNDMwMCwzNjc5OCwyMTk1MywzNjc5NCwxNDA0NjQsMzY3OTMsMTUwMTYzLDE3NjczLDMyMzgzLDI4NTAyLDI3MzEzLDIwMjAyLDEzNTQwLDE2NjcwMCwxNjE5NDksMTQxMzgsMzY0ODAsMTM3MjA1LDE2Mzg3NiwxNjY3NjQsMTY2ODA5LDE2MjM2NiwxNTczNTksMTU4NTEsMTYxMzY1LDE0NjYxNSwxNTMxNDEsMTUzOTQyLDIwMTIyLDE1NTI2NSwxNTYyNDgsMjIyMDcsMTM0NzY1LDM2MzY2LDIzNDA1LDE0NzA4MCwxNTA2ODYsMjU1NjYsMjUyOTYsMTM3MjA2LDEzNzMzOSwyNTkwNCwyMjA2MSwxNTQ2OTgsMjE1MzAsMTUyMzM3LDE1ODE0LDE3MTQxNiwxOTU4MSwyMjA1MCwyMjA0NiwzMjU4NSwxNTUzNTIsMjI5MDEsMTQ2NzUyLDM0NjcyLDE5OTk2LDEzNTE0NiwxMzQ0NzMsMTQ1MDgyLDMzMDQ3LDQwMjg2LDM2MTIwLDMwMjY3LDQwMDA1LDMwMjg2LDMwNjQ5LDM3NzAxLDIxNTU0LDMzMDk2LDMzNTI3LDIyMDUzLDMzMDc0LDMzODE2LDMyOTU3LDIxOTk0LDMxMDc0LDIyMDgzLDIxNTI2LDEzNDgxMywxMzc3NCwyMjAyMSwyMjAwMSwyNjM1MywxNjQ1NzgsMTM4NjksMzAwMDQsMjIwMDAsMjE5NDYsMjE2NTUsMjE4NzQsMTM0MjA5LDEzNDI5NCwyNDI3MiwxNTE4ODAsMTM0Nzc0LDE0MjQzNCwxMzQ4MTgsNDA2MTksMzIwOTAsMjE5ODIsMTM1Mjg1LDI1MjQ1LDM4NzY1LDIxNjUyLDM2MDQ1LDI5MTc0LDM3MjM4LDI1NTk2LDI1NTI5LDI1NTk4LDIxODY1LDE0MjE0Nyw0MDA1MCwxNDMwMjcsMjA4OTAsMTM1MzUsMTM0NTY3LDIwOTAzLDIxNTgxLDIxNzkwLDIxNzc5LDMwMzEwLDM2Mzk3LDE1NzgzNCwzMDEyOSwzMjk1MCwzNDgyMCwzNDY5NCwzNTAxNSwzMzIwNiwzMzgyMCwxMzUzNjEsMTc2NDQsMjk0NDQsMTQ5MjU0LDIzNDQwLDMzNTQ3LDE1Nzg0MywyMjEzOSwxNDEwNDQsMTYzMTE5LDE0Nzg3NSwxNjMxODcsMTU5NDQwLDE2MDQzOCwzNzIzMiwxMzU2NDEsMzczODQsMTQ2Njg0LDE3MzczNywxMzQ4MjgsMTM0OTA1LDI5Mjg2LDEzODQwMiwxODI1NCwxNTE0OTAsMTYzODMzLDEzNTE0NywxNjYzNCw0MDAyOSwyNTg4NywxNDI3NTIsMTg2NzUsMTQ5NDcyLDE3MTM4OCwxMzUxNDgsMTM0NjY2LDI0Njc0LDE2MTE4NywxMzUxNDksbnVsbCwxNTU3MjAsMTM1NTU5LDI5MDkxLDMyMzk4LDQwMjcyLDE5OTk0LDE5OTcyLDEzNjg3LDIzMzA5LDI3ODI2LDIxMzUxLDEzOTk2LDE0ODEyLDIxMzczLDEzOTg5LDE0OTAxNiwyMjY4MiwxNTAzODIsMzMzMjUsMjE1NzksMjI0NDIsMTU0MjYxLDEzMzQ5NyxudWxsLDE0OTMwLDE0MDM4OSwyOTU1NiwxNzE2OTIsMTk3MjEsMzk5MTcsMTQ2Njg2LDE3MTgyNCwxOTU0NywxNTE0NjUsMTY5Mzc0LDE3MTk5OCwzMzg4NCwxNDY4NzAsMTYwNDM0LDE1NzYxOSwxNDUxODQsMjUzOTAsMzIwMzcsMTQ3MTkxLDE0Njk4OCwxNDg5MCwzNjg3MiwyMTE5NiwxNTk4OCwxMzk0NiwxNzg5NywxMzIyMzgsMzAyNzIsMjMyODAsMTM0ODM4LDMwODQyLDE2MzYzMCwyMjY5NSwxNjU3NSwyMjE0MCwzOTgxOSwyMzkyNCwzMDI5MiwxNzMxMDgsNDA1ODEsMTk2ODEsMzAyMDEsMTQzMzEsMjQ4NTcsMTQzNTc4LDE0ODQ2NixudWxsLDIyMTA5LDEzNTg0OSwyMjQzOSwxNDk4NTksMTcxNTI2LDIxMDQ0LDE1OTkxOCwxMzc0MSwyNzcyMiw0MDMxNiwzMTgzMCwzOTczNywyMjQ5NCwxMzcwNjgsMjM2MzUsMjU4MTEsMTY5MTY4LDE1NjQ2OSwxNjAxMDAsMzQ0NzcsMTM0NDQwLDE1OTAxMCwxNTAyNDIsMTM0NTEzLG51bGwsMjA5OTAsMTM5MDIzLDIzOTUwLDM4NjU5LDEzODcwNSw0MDU3NywzNjk0MCwzMTUxOSwzOTY4MiwyMzc2MSwzMTY1MSwyNTE5MiwyNTM5NywzOTY3OSwzMTY5NSwzOTcyMiwzMTg3MCwzOTcyNiwzMTgxMCwzMTg3OCwzOTk1NywzMTc0MCwzOTY4OSw0MDcyNywzOTk2MywxNDk4MjIsNDA3OTQsMjE4NzUsMjM0OTEsMjA0NzcsNDA2MDAsMjA0NjYsMjEwODgsMTU4NzgsMjEyMDEsMjIzNzUsMjA1NjYsMjI5NjcsMjQwODIsMzg4NTYsNDAzNjMsMzY3MDAsMjE2MDksMzg4MzYsMzkyMzIsMzg4NDIsMjEyOTIsMjQ4ODAsMjY5MjQsMjE0NjYsMzk5NDYsNDAxOTQsMTk1MTUsMzg0NjUsMjcwMDgsMjA2NDYsMzAwMjIsMTM3MDY5LDM5Mzg2LDIxMTA3LG51bGwsMzcyMDksMzg1MjksMzcyMTIsbnVsbCwzNzIwMSwxNjc1NzUsMjU0NzEsMTU5MDExLDI3MzM4LDIyMDMzLDM3MjYyLDMwMDc0LDI1MjIxLDEzMjA5MiwyOTUxOSwzMTg1NiwxNTQ2NTcsMTQ2Njg1LG51bGwsMTQ5Nzg1LDMwNDIyLDM5ODM3LDIwMDEwLDEzNDM1NiwzMzcyNiwzNDg4MixudWxsLDIzNjI2LDI3MDcyLDIwNzE3LDIyMzk0LDIxMDIzLDI0MDUzLDIwMTc0LDI3Njk3LDEzMTU3MCwyMDI4MSwyMTY2MCwyMTcyMiwyMTE0NiwzNjIyNiwxMzgyMiwyNDMzMiwxMzgxMSxudWxsLDI3NDc0LDM3MjQ0LDQwODY5LDM5ODMxLDM4OTU4LDM5MDkyLDM5NjEwLDQwNjE2LDQwNTgwLDI5MDUwLDMxNTA4LG51bGwsMjc2NDIsMzQ4NDAsMzI2MzIsbnVsbCwyMjA0OCwxNzM2NDIsMzY0NzEsNDA3ODcsbnVsbCwzNjMwOCwzNjQzMSw0MDQ3NiwzNjM1MywyNTIxOCwxNjQ3MzMsMzYzOTIsMzY0NjksMzE0NDMsMTUwMTM1LDMxMjk0LDMwOTM2LDI3ODgyLDM1NDMxLDMwMjE1LDE2NjQ5MCw0MDc0MiwyNzg1NCwzNDc3NCwzMDE0NywxNzI3MjIsMzA4MDMsMTk0NjI0LDM2MTA4LDI5NDEwLDI5NTUzLDM1NjI5LDI5NDQyLDI5OTM3LDM2MDc1LDE1MDIwMywzNDM1MSwyNDUwNiwzNDk3NiwxNzU5MSxudWxsLDEzNzI3NSwxNTkyMzcsbnVsbCwzNTQ1NCwxNDA1NzEsbnVsbCwyNDgyOSwzMDMxMSwzOTYzOSw0MDI2MCwzNzc0MiwzOTgyMywzNDgwNSxudWxsLDM0ODMxLDM2MDg3LDI5NDg0LDM4Njg5LDM5ODU2LDEzNzgyLDI5MzYyLDE5NDYzLDMxODI1LDM5MjQyLDE1NTk5MywyNDkyMSwxOTQ2MCw0MDU5OCwyNDk1NyxudWxsLDIyMzY3LDI0OTQzLDI1MjU0LDI1MTQ1LDI1Mjk0LDE0OTQwLDI1MDU4LDIxNDE4LDE0NDM3MywyNTQ0NCwyNjYyNiwxMzc3OCwyMzg5NSwxNjY4NTAsMzY4MjYsMTY3NDgxLG51bGwsMjA2OTcsMTM4NTY2LDMwOTgyLDIxMjk4LDM4NDU2LDEzNDk3MSwxNjQ4NSxudWxsLDMwNzE4LG51bGwsMzE5MzgsMTU1NDE4LDMxOTYyLDMxMjc3LDMyODcwLDMyODY3LDMyMDc3LDI5OTU3LDI5OTM4LDM1MjIwLDMzMzA2LDI2MzgwLDMyODY2LDE2MDkwMiwzMjg1OSwyOTkzNiwzMzAyNywzMDUwMCwzNTIwOSwxNTc2NDQsMzAwMzUsMTU5NDQxLDM0NzI5LDM0NzY2LDMzMjI0LDM0NzAwLDM1NDAxLDM2MDEzLDM1NjUxLDMwNTA3LDI5OTQ0LDM0MDEwLDEzODc3LDI3MDU4LDM2MjYyLG51bGwsMzUyNDEsMjk4MDAsMjgwODksMzQ3NTMsMTQ3NDczLDI5OTI3LDE1ODM1LDI5MDQ2LDI0NzQwLDI0OTg4LDE1NTY5LDI5MDI2LDI0Njk1LG51bGwsMzI2MjUsMTY2NzAxLDI5MjY0LDI0ODA5LDE5MzI2LDIxMDI0LDE1Mzg0LDE0NjYzMSwxNTUzNTEsMTYxMzY2LDE1Mjg4MSwxMzc1NDAsMTM1OTM0LDE3MDI0MywxNTkxOTYsMTU5OTE3LDIzNzQ1LDE1NjA3NywxNjY0MTUsMTQ1MDE1LDEzMTMxMCwxNTc3NjYsMTUxMzEwLDE3NzYyLDIzMzI3LDE1NjQ5Miw0MDc4NCw0MDYxNCwxNTYyNjcsMTIyODgsNjUyOTIsMTIyODksMTIyOTAsNjUyOTQsODIzMSw2NTMwNyw2NTMwNiw2NTMxMSw2NTI4MSw2NTA3Miw4MjMwLDgyMjksNjUxMDQsNjUxMDUsNjUxMDYsMTgzLDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MzcyLDgyMTEsNjUwNzMsODIxMiw2NTA3NSw5NTg4LDY1MDc2LDY1MTAzLDY1Mjg4LDY1Mjg5LDY1MDc3LDY1MDc4LDY1MzcxLDY1MzczLDY1MDc5LDY1MDgwLDEyMzA4LDEyMzA5LDY1MDgxLDY1MDgyLDEyMzA0LDEyMzA1LDY1MDgzLDY1MDg0LDEyMjk4LDEyMjk5LDY1MDg1LDY1MDg2LDEyMjk2LDEyMjk3LDY1MDg3LDY1MDg4LDEyMzAwLDEyMzAxLDY1MDg5LDY1MDkwLDEyMzAyLDEyMzAzLDY1MDkxLDY1MDkyLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMTcsMTIzMTgsODI0NSw4MjQyLDY1MjgzLDY1Mjg2LDY1MjkwLDgyNTEsMTY3LDEyMjkxLDk2NzUsOTY3OSw5NjUxLDk2NTAsOTY3OCw5NzM0LDk3MzMsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjYxLDk2NjAsMTI5NjMsODQ1MywxNzUsNjU1MDcsNjUzNDMsNzE3LDY1MDk3LDY1MDk4LDY1MTAxLDY1MTAyLDY1MDk5LDY1MTAwLDY1MTE5LDY1MTIwLDY1MTIxLDY1MjkxLDY1MjkzLDIxNSwyNDcsMTc3LDg3MzAsNjUzMDgsNjUzMTAsNjUzMDksODgwNiw4ODA3LDg4MDAsODczNCw4Nzg2LDg4MDEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUzNzQsODc0NSw4NzQ2LDg4NjksODczNiw4NzM1LDg4OTUsMTMyNjYsMTMyNjUsODc0Nyw4NzUwLDg3NTcsODc1Niw5NzkyLDk3OTQsODg1Myw4ODU3LDg1OTMsODU5NSw4NTkyLDg1OTQsODU5OCw4NTk5LDg2MDEsODYwMCw4NzQxLDg3MzksNjUyOTUsNjUzNDAsODcyNSw2NTEyOCw2NTI4NCw2NTUwOSwxMjMwNiw2NTUwNCw2NTUwNSw2NTI4NSw2NTMxMiw4NDUxLDg0NTcsNjUxMjksNjUxMzAsNjUxMzEsMTMyNjksMTMyMTIsMTMyMTMsMTMyMTQsMTMyNjIsMTMyMTcsMTMxOTgsMTMxOTksMTMyNTIsMTc2LDIwODI1LDIwODI3LDIwODMwLDIwODI5LDIwODMzLDIwODM1LDIxOTkxLDI5OTI5LDMxOTUwLDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjE1LDk2MTQsOTYxMyw5NjEyLDk2MTEsOTYxMCw5NjA5LDk1MzIsOTUyNCw5NTE2LDk1MDgsOTUwMCw5NjIwLDk0NzIsOTQ3NCw5NjIxLDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTU4MSw5NTgyLDk1ODQsOTU4Myw5NTUyLDk1NjYsOTU3OCw5NTY5LDk2OTgsOTY5OSw5NzAxLDk3MDAsOTU4NSw5NTg2LDk1ODcsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MywxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwyMTMxMywyMTMxNiwyMTMxNyw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw3MjksNzEzLDcxNCw3MTEsNzE1LDkyMTYsOTIxNyw5MjE4LDkyMTksOTIyMCw5MjIxLDkyMjIsOTIyMyw5MjI0LDkyMjUsOTIyNiw5MjI3LDkyMjgsOTIyOSw5MjMwLDkyMzEsOTIzMiw5MjMzLDkyMzQsOTIzNSw5MjM2LDkyMzcsOTIzOCw5MjM5LDkyNDAsOTI0MSw5MjQyLDkyNDMsOTI0NCw5MjQ1LDkyNDYsOTI0Nyw5MjQ5LDgzNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTY4LDIwMDU3LDE5OTY5LDE5OTcxLDIwMDM1LDIwMDYxLDIwMTAyLDIwMTA4LDIwMTU0LDIwNzk5LDIwODM3LDIwODQzLDIwOTYwLDIwOTkyLDIwOTkzLDIxMTQ3LDIxMjY5LDIxMzEzLDIxMzQwLDIxNDQ4LDE5OTc3LDE5OTc5LDE5OTc2LDE5OTc4LDIwMDExLDIwMDI0LDIwOTYxLDIwMDM3LDIwMDQwLDIwMDYzLDIwMDYyLDIwMTEwLDIwMTI5LDIwODAwLDIwOTk1LDIxMjQyLDIxMzE1LDIxNDQ5LDIxNDc1LDIyMzAzLDIyNzYzLDIyODA1LDIyODIzLDIyODk5LDIzMzc2LDIzMzc3LDIzMzc5LDIzNTQ0LDIzNTY3LDIzNTg2LDIzNjA4LDIzNjY1LDI0MDI5LDI0MDM3LDI0MDQ5LDI0MDUwLDI0MDUxLDI0MDYyLDI0MTc4LDI0MzE4LDI0MzMxLDI0MzM5LDI1MTY1LDE5OTg1LDE5OTg0LDE5OTgxLDIwMDEzLDIwMDE2LDIwMDI1LDIwMDQzLDIzNjA5LDIwMTA0LDIwMTEzLDIwMTE3LDIwMTE0LDIwMTE2LDIwMTMwLDIwMTYxLDIwMTYwLDIwMTYzLDIwMTY2LDIwMTY3LDIwMTczLDIwMTcwLDIwMTcxLDIwMTY0LDIwODAzLDIwODAxLDIwODM5LDIwODQ1LDIwODQ2LDIwODQ0LDIwODg3LDIwOTgyLDIwOTk4LDIwOTk5LDIxMDAwLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIxNDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIyODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIzNjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkwLDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAwLDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIwMDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIwMTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIwMTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkxLDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIyMjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIyOTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkxLDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEyLDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDMwMDAwLDMwMDAxLDMwMDAyLDMwMDAzLDMwMDkxLDMwMzMzLDMwMzgyLDMwMzk5LDMwNDQ2LDMwNjgzLDMwNjkwLDMwNzA3LDMxMDM0LDMxMTY2LDMxMzQ4LDMxNDM1LDE5OTk4LDE5OTk5LDIwMDUwLDIwMDUxLDIwMDczLDIwMTIxLDIwMTMyLDIwMTM0LDIwMTMzLDIwMjIzLDIwMjMzLDIwMjQ5LDIwMjM0LDIwMjQ1LDIwMjM3LDIwMjQwLDIwMjQxLDIwMjM5LDIwMjEwLDIwMjE0LDIwMjE5LDIwMjA4LDIwMjExLDIwMjIxLDIwMjI1LDIwMjM1LDIwODA5LDIwODA3LDIwODA2LDIwODA4LDIwODQwLDIwODQ5LDIwODc3LDIwOTEyLDIxMDE1LDIxMDA5LDIxMDEwLDIxMDA2LDIxMDE0LDIxMTU1LDIxMjU2LDIxMjgxLDIxMjgwLDIxMzYwLDIxMzYxLDIxNTEzLDIxNTE5LDIxNTE2LDIxNTE0LDIxNTIwLDIxNTA1LDIxNTE1LDIxNTA4LDIxNTIxLDIxNTE3LDIxNTEyLDIxNTA3LDIxNTE4LDIxNTEwLDIxNTIyLDIyMjQwLDIyMjM4LDIyMjM3LDIyMzIzLDIyMzIwLDIyMzEyLDIyMzE3LDIyMzE2LDIyMzE5LDIyMzEzLDIyODA5LDIyODEwLDIyODM5LDIyODQwLDIyOTE2LDIyOTA0LDIyOTE1LDIyOTA5LDIyOTA1LDIyOTE0LDIyOTEzLDIzMzgzLDIzMzg0LDIzNDMxLDIzNDMyLDIzNDI5LDIzNDMzLDIzNTQ2LDIzNTc0LDIzNjczLDI0MDMwLDI0MDcwLDI0MTgyLDI0MTgwLDI0MzM1LDI0MzQ3LDI0NTM3LDI0NTM0LDI1MTAyLDI1MTAwLDI1MTAxLDI1MTA0LDI1MTg3LDI1MTc5LDI1MTc2LDI1OTEwLDI2MDg5LDI2MDg4LDI2MDkyLDI2MDkzLDI2MzU0LDI2MzU1LDI2Mzc3LDI2NDI5LDI2NDIwLDI2NDE3LDI2NDIxLDI3NDI1LDI3NDkyLDI3NTE1LDI3NjcwLDI3NzQxLDI3NzM1LDI3NzM3LDI3NzQzLDI3NzQ0LDI3NzI4LDI3NzMzLDI3NzQ1LDI3NzM5LDI3NzI1LDI3NzI2LDI4Nzg0LDI5Mjc5LDI5Mjc3LDMwMzM0LDMxNDgxLDMxODU5LDMxOTkyLDMyNTY2LDMyNjUwLDMyNzAxLDMyNzY5LDMyNzcxLDMyNzgwLDMyNzg2LDMyODE5LDMyODk1LDMyOTA1LDMyOTA3LDMyOTA4LDMzMjUxLDMzMjU4LDMzMjY3LDMzMjc2LDMzMjkyLDMzMzA3LDMzMzExLDMzMzkwLDMzMzk0LDMzNDA2LDM0NDExLDM0ODgwLDM0ODkyLDM0OTE1LDM1MTk5LDM4NDMzLDIwMDE4LDIwMTM2LDIwMzAxLDIwMzAzLDIwMjk1LDIwMzExLDIwMzE4LDIwMjc2LDIwMzE1LDIwMzA5LDIwMjcyLDIwMzA0LDIwMzA1LDIwMjg1LDIwMjgyLDIwMjgwLDIwMjkxLDIwMzA4LDIwMjg0LDIwMjk0LDIwMzIzLDIwMzE2LDIwMzIwLDIwMjcxLDIwMzAyLDIwMjc4LDIwMzEzLDIwMzE3LDIwMjk2LDIwMzE0LDIwODEyLDIwODExLDIwODEzLDIwODUzLDIwOTE4LDIwOTE5LDIxMDI5LDIxMDI4LDIxMDMzLDIxMDM0LDIxMDMyLDIxMTYzLDIxMTYxLDIxMTYyLDIxMTY0LDIxMjgzLDIxMzYzLDIxMzY1LDIxNTMzLDIxNTQ5LDIxNTM0LDIxNTY2LDIxNTQyLDIxNTgyLDIxNTQzLDIxNTc0LDIxNTcxLDIxNTU1LDIxNTc2LDIxNTcwLDIxNTMxLDIxNTQ1LDIxNTc4LDIxNTYxLDIxNTYzLDIxNTYwLDIxNTUwLDIxNTU3LDIxNTU4LDIxNTM2LDIxNTY0LDIxNTY4LDIxNTUzLDIxNTQ3LDIxNTM1LDIxNTQ4LDIyMjUwLDIyMjU2LDIyMjQ0LDIyMjUxLDIyMzQ2LDIyMzUzLDIyMzM2LDIyMzQ5LDIyMzQzLDIyMzUwLDIyMzM0LDIyMzUyLDIyMzUxLDIyMzMxLDIyNzY3LDIyODQ2LDIyOTQxLDIyOTMwLDIyOTUyLDIyOTQyLDIyOTQ3LDIyOTM3LDIyOTM0LDIyOTI1LDIyOTQ4LDIyOTMxLDIyOTIyLDIyOTQ5LDIzMzg5LDIzMzg4LDIzMzg2LDIzMzg3LDIzNDM2LDIzNDM1LDIzNDM5LDIzNTk2LDIzNjE2LDIzNjE3LDIzNjE1LDIzNjE0LDIzNjk2LDIzNjk3LDIzNzAwLDIzNjkyLDI0MDQzLDI0MDc2LDI0MjA3LDI0MTk5LDI0MjAyLDI0MzExLDI0MzI0LDI0MzUxLDI0NDIwLDI0NDE4LDI0NDM5LDI0NDQxLDI0NTM2LDI0NTI0LDI0NTM1LDI0NTI1LDI0NTYxLDI0NTU1LDI0NTY4LDI0NTU0LDI1MTA2LDI1MTA1LDI1MjIwLDI1MjM5LDI1MjM4LDI1MjE2LDI1MjA2LDI1MjI1LDI1MTk3LDI1MjI2LDI1MjEyLDI1MjE0LDI1MjA5LDI1MjAzLDI1MjM0LDI1MTk5LDI1MjQwLDI1MTk4LDI1MjM3LDI1MjM1LDI1MjMzLDI1MjIyLDI1OTEzLDI1OTE1LDI1OTEyLDI2MDk3LDI2MzU2LDI2NDYzLDI2NDQ2LDI2NDQ3LDI2NDQ4LDI2NDQ5LDI2NDYwLDI2NDU0LDI2NDYyLDI2NDQxLDI2NDM4LDI2NDY0LDI2NDUxLDI2NDU1LDI3NDkzLDI3NTk5LDI3NzE0LDI3NzQyLDI3ODAxLDI3Nzc3LDI3Nzg0LDI3Nzg1LDI3NzgxLDI3ODAzLDI3NzU0LDI3NzcwLDI3NzkyLDI3NzYwLDI3Nzg4LDI3NzUyLDI3Nzk4LDI3Nzk0LDI3NzczLDI3Nzc5LDI3NzYyLDI3Nzc0LDI3NzY0LDI3NzgyLDI3NzY2LDI3Nzg5LDI3Nzk2LDI3ODAwLDI3Nzc4LDI4NzkwLDI4Nzk2LDI4Nzk3LDI4NzkyLDI5MjgyLDI5MjgxLDI5MjgwLDI5MzgwLDI5Mzc4LDI5NTkwLDI5OTk2LDI5OTk1LDMwMDA3LDMwMDA4LDMwMzM4LDMwNDQ3LDMwNjkxLDMxMTY5LDMxMTY4LDMxMTY3LDMxMzUwLDMxOTk1LDMyNTk3LDMyOTE4LDMyOTE1LDMyOTI1LDMyOTIwLDMyOTIzLDMyOTIyLDMyOTQ2LDMzMzkxLDMzNDI2LDMzNDE5LDMzNDIxLDM1MjExLDM1MjgyLDM1MzI4LDM1ODk1LDM1OTEwLDM1OTI1LDM1OTk3LDM2MTk2LDM2MjA4LDM2Mjc1LDM2NTIzLDM2NTU0LDM2NzYzLDM2Nzg0LDM2ODAyLDM2ODA2LDM2ODA1LDM2ODA0LDI0MDMzLDM3MDA5LDM3MDI2LDM3MDM0LDM3MDMwLDM3MDI3LDM3MTkzLDM3MzE4LDM3MzI0LDM4NDUwLDM4NDQ2LDM4NDQ5LDM4NDQyLDM4NDQ0LDIwMDA2LDIwMDU0LDIwMDgzLDIwMTA3LDIwMTIzLDIwMTI2LDIwMTM5LDIwMTQwLDIwMzM1LDIwMzgxLDIwMzY1LDIwMzM5LDIwMzUxLDIwMzMyLDIwMzc5LDIwMzYzLDIwMzU4LDIwMzU1LDIwMzM2LDIwMzQxLDIwMzYwLDIwMzI5LDIwMzQ3LDIwMzc0LDIwMzUwLDIwMzY3LDIwMzY5LDIwMzQ2LDIwODIwLDIwODE4LDIwODIxLDIwODQxLDIwODU1LDIwODU0LDIwODU2LDIwOTI1LDIwOTg5LDIxMDUxLDIxMDQ4LDIxMDQ3LDIxMDUwLDIxMDQwLDIxMDM4LDIxMDQ2LDIxMDU3LDIxMTgyLDIxMTc5LDIxMzMwLDIxMzMyLDIxMzMxLDIxMzI5LDIxMzUwLDIxMzY3LDIxMzY4LDIxMzY5LDIxNDYyLDIxNDYwLDIxNDYzLDIxNjE5LDIxNjIxLDIxNjU0LDIxNjI0LDIxNjUzLDIxNjMyLDIxNjI3LDIxNjIzLDIxNjM2LDIxNjUwLDIxNjM4LDIxNjI4LDIxNjQ4LDIxNjE3LDIxNjIyLDIxNjQ0LDIxNjU4LDIxNjAyLDIxNjA4LDIxNjQzLDIxNjI5LDIxNjQ2LDIyMjY2LDIyNDAzLDIyMzkxLDIyMzc4LDIyMzc3LDIyMzY5LDIyMzc0LDIyMzcyLDIyMzk2LDIyODEyLDIyODU3LDIyODU1LDIyODU2LDIyODUyLDIyODY4LDIyOTc0LDIyOTcxLDIyOTk2LDIyOTY5LDIyOTU4LDIyOTkzLDIyOTgyLDIyOTkyLDIyOTg5LDIyOTg3LDIyOTk1LDIyOTg2LDIyOTU5LDIyOTYzLDIyOTk0LDIyOTgxLDIzMzkxLDIzMzk2LDIzMzk1LDIzNDQ3LDIzNDUwLDIzNDQ4LDIzNDUyLDIzNDQ5LDIzNDUxLDIzNTc4LDIzNjI0LDIzNjIxLDIzNjIyLDIzNzM1LDIzNzEzLDIzNzM2LDIzNzIxLDIzNzIzLDIzNzI5LDIzNzMxLDI0MDg4LDI0MDkwLDI0MDg2LDI0MDg1LDI0MDkxLDI0MDgxLDI0MTg0LDI0MjE4LDI0MjE1LDI0MjIwLDI0MjEzLDI0MjE0LDI0MzEwLDI0MzU4LDI0MzU5LDI0MzYxLDI0NDQ4LDI0NDQ5LDI0NDQ3LDI0NDQ0LDI0NTQxLDI0NTQ0LDI0NTczLDI0NTY1LDI0NTc1LDI0NTkxLDI0NTk2LDI0NjIzLDI0NjI5LDI0NTk4LDI0NjE4LDI0NTk3LDI0NjA5LDI0NjE1LDI0NjE3LDI0NjE5LDI0NjAzLDI1MTEwLDI1MTA5LDI1MTUxLDI1MTUwLDI1MTUyLDI1MjE1LDI1Mjg5LDI1MjkyLDI1Mjg0LDI1Mjc5LDI1MjgyLDI1MjczLDI1Mjk4LDI1MzA3LDI1MjU5LDI1Mjk5LDI1MzAwLDI1MjkxLDI1Mjg4LDI1MjU2LDI1Mjc3LDI1Mjc2LDI1Mjk2LDI1MzA1LDI1Mjg3LDI1MjkzLDI1MjY5LDI1MzA2LDI1MjY1LDI1MzA0LDI1MzAyLDI1MzAzLDI1Mjg2LDI1MjYwLDI1Mjk0LDI1OTE4LDI2MDIzLDI2MDQ0LDI2MTA2LDI2MTMyLDI2MTMxLDI2MTI0LDI2MTE4LDI2MTE0LDI2MTI2LDI2MTEyLDI2MTI3LDI2MTMzLDI2MTIyLDI2MTE5LDI2MzgxLDI2Mzc5LDI2NDc3LDI2NTA3LDI2NTE3LDI2NDgxLDI2NTI0LDI2NDgzLDI2NDg3LDI2NTAzLDI2NTI1LDI2NTE5LDI2NDc5LDI2NDgwLDI2NDk1LDI2NTA1LDI2NDk0LDI2NTEyLDI2NDg1LDI2NTIyLDI2NTE1LDI2NDkyLDI2NDc0LDI2NDgyLDI3NDI3LDI3NDk0LDI3NDk1LDI3NTE5LDI3NjY3LDI3Njc1LDI3ODc1LDI3ODgwLDI3ODkxLDI3ODI1LDI3ODUyLDI3ODc3LDI3ODI3LDI3ODM3LDI3ODM4LDI3ODM2LDI3ODc0LDI3ODE5LDI3ODYxLDI3ODU5LDI3ODMyLDI3ODQ0LDI3ODMzLDI3ODQxLDI3ODIyLDI3ODYzLDI3ODQ1LDI3ODg5LDI3ODM5LDI3ODM1LDI3ODczLDI3ODY3LDI3ODUwLDI3ODIwLDI3ODg3LDI3ODY4LDI3ODYyLDI3ODcyLDI4ODIxLDI4ODE0LDI4ODE4LDI4ODEwLDI4ODI1LDI5MjI4LDI5MjI5LDI5MjQwLDI5MjU2LDI5Mjg3LDI5Mjg5LDI5Mzc2LDI5MzkwLDI5NDAxLDI5Mzk5LDI5MzkyLDI5NjA5LDI5NjA4LDI5NTk5LDI5NjExLDI5NjA1LDMwMDEzLDMwMTA5LDMwMTA1LDMwMTA2LDMwMzQwLDMwNDAyLDMwNDUwLDMwNDUyLDMwNjkzLDMwNzE3LDMxMDM4LDMxMDQwLDMxMDQxLDMxMTc3LDMxMTc2LDMxMzU0LDMxMzUzLDMxNDgyLDMxOTk4LDMyNTk2LDMyNjUyLDMyNjUxLDMyNzczLDMyOTU0LDMyOTMzLDMyOTMwLDMyOTQ1LDMyOTI5LDMyOTM5LDMyOTM3LDMyOTQ4LDMyOTM4LDMyOTQzLDMzMjUzLDMzMjc4LDMzMjkzLDMzNDU5LDMzNDM3LDMzNDMzLDMzNDUzLDMzNDY5LDMzNDM5LDMzNDY1LDMzNDU3LDMzNDUyLDMzNDQ1LDMzNDU1LDMzNDY0LDMzNDQzLDMzNDU2LDMzNDcwLDMzNDYzLDM0MzgyLDM0NDE3LDIxMDIxLDM0OTIwLDM2NTU1LDM2ODE0LDM2ODIwLDM2ODE3LDM3MDQ1LDM3MDQ4LDM3MDQxLDM3MDQ2LDM3MzE5LDM3MzI5LDM4MjYzLDM4MjcyLDM4NDI4LDM4NDY0LDM4NDYzLDM4NDU5LDM4NDY4LDM4NDY2LDM4NTg1LDM4NjMyLDM4NzM4LDM4NzUwLDIwMTI3LDIwMTQxLDIwMTQyLDIwNDQ5LDIwNDA1LDIwMzk5LDIwNDE1LDIwNDQ4LDIwNDMzLDIwNDMxLDIwNDQ1LDIwNDE5LDIwNDA2LDIwNDQwLDIwNDQ3LDIwNDI2LDIwNDM5LDIwMzk4LDIwNDMyLDIwNDIwLDIwNDE4LDIwNDQyLDIwNDMwLDIwNDQ2LDIwNDA3LDIwODIzLDIwODgyLDIwODgxLDIwODk2LDIxMDcwLDIxMDU5LDIxMDY2LDIxMDY5LDIxMDY4LDIxMDY3LDIxMDYzLDIxMTkxLDIxMTkzLDIxMTg3LDIxMTg1LDIxMjYxLDIxMzM1LDIxMzcxLDIxNDAyLDIxNDY3LDIxNjc2LDIxNjk2LDIxNjcyLDIxNzEwLDIxNzA1LDIxNjg4LDIxNjcwLDIxNjgzLDIxNzAzLDIxNjk4LDIxNjkzLDIxNjc0LDIxNjk3LDIxNzAwLDIxNzA0LDIxNjc5LDIxNjc1LDIxNjgxLDIxNjkxLDIxNjczLDIxNjcxLDIxNjk1LDIyMjcxLDIyNDAyLDIyNDExLDIyNDMyLDIyNDM1LDIyNDM0LDIyNDc4LDIyNDQ2LDIyNDE5LDIyODY5LDIyODY1LDIyODYzLDIyODYyLDIyODY0LDIzMDA0LDIzMDAwLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIzMDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYxLDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMxLDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUwLDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAzLDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDczLDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIyLDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMxODY5LDMyMDAyLDMyMDA1LDMyMDAwLDMyMDA5LDMyMDA3LDMyMDA0LDMyMDA2LDMyNTY4LDMyNjU0LDMyNzAzLDMyNzcyLDMyNzg0LDMyNzgxLDMyNzg1LDMyODIyLDMyOTgyLDMyOTk3LDMyOTg2LDMyOTYzLDMyOTY0LDMyOTcyLDMyOTkzLDMyOTg3LDMyOTc0LDMyOTkwLDMyOTk2LDMyOTg5LDMzMjY4LDMzMzE0LDMzNTExLDMzNTM5LDMzNTQxLDMzNTA3LDMzNDk5LDMzNTEwLDMzNTQwLDMzNTA5LDMzNTM4LDMzNTQ1LDMzNDkwLDMzNDk1LDMzNTIxLDMzNTM3LDMzNTAwLDMzNDkyLDMzNDg5LDMzNTAyLDMzNDkxLDMzNTAzLDMzNTE5LDMzNTQyLDM0Mzg0LDM0NDI1LDM0NDI3LDM0NDI2LDM0ODkzLDM0OTIzLDM1MjAxLDM1Mjg0LDM1MzM2LDM1MzMwLDM1MzMxLDM1OTk4LDM2MDAwLDM2MjEyLDM2MjExLDM2Mjc2LDM2NTU3LDM2NTU2LDM2ODQ4LDM2ODM4LDM2ODM0LDM2ODQyLDM2ODM3LDM2ODQ1LDM2ODQzLDM2ODM2LDM2ODQwLDM3MDY2LDM3MDcwLDM3MDU3LDM3MDU5LDM3MTk1LDM3MTk0LDM3MzI1LDM4Mjc0LDM4NDgwLDM4NDc1LDM4NDc2LDM4NDc3LDM4NzU0LDM4NzYxLDM4ODU5LDM4ODkzLDM4ODk5LDM4OTEzLDM5MDgwLDM5MTMxLDM5MTM1LDM5MzE4LDM5MzIxLDIwMDU2LDIwMTQ3LDIwNDkyLDIwNDkzLDIwNTE1LDIwNDYzLDIwNTE4LDIwNTE3LDIwNDcyLDIwNTIxLDIwNTAyLDIwNDg2LDIwNTQwLDIwNTExLDIwNTA2LDIwNDk4LDIwNDk3LDIwNDc0LDIwNDgwLDIwNTAwLDIwNTIwLDIwNDY1LDIwNTEzLDIwNDkxLDIwNTA1LDIwNTA0LDIwNDY3LDIwNDYyLDIwNTI1LDIwNTIyLDIwNDc4LDIwNTIzLDIwNDg5LDIwODYwLDIwOTAwLDIwOTAxLDIwODk4LDIwOTQxLDIwOTQwLDIwOTM0LDIwOTM5LDIxMDc4LDIxMDg0LDIxMDc2LDIxMDgzLDIxMDg1LDIxMjkwLDIxMzc1LDIxNDA3LDIxNDA1LDIxNDcxLDIxNzM2LDIxNzc2LDIxNzYxLDIxODE1LDIxNzU2LDIxNzMzLDIxNzQ2LDIxNzY2LDIxNzU0LDIxNzgwLDIxNzM3LDIxNzQxLDIxNzI5LDIxNzY5LDIxNzQyLDIxNzM4LDIxNzM0LDIxNzk5LDIxNzY3LDIxNzU3LDIxNzc1LDIyMjc1LDIyMjc2LDIyNDY2LDIyNDg0LDIyNDc1LDIyNDY3LDIyNTM3LDIyNzk5LDIyODcxLDIyODcyLDIyODc0LDIzMDU3LDIzMDY0LDIzMDY4LDIzMDcxLDIzMDY3LDIzMDU5LDIzMDIwLDIzMDcyLDIzMDc1LDIzMDgxLDIzMDc3LDIzMDUyLDIzMDQ5LDIzNDAzLDIzNjQwLDIzNDcyLDIzNDc1LDIzNDc4LDIzNDc2LDIzNDcwLDIzNDc3LDIzNDgxLDIzNDgwLDIzNTU2LDIzNjMzLDIzNjM3LDIzNjMyLDIzNzg5LDIzODA1LDIzODAzLDIzNzg2LDIzNzg0LDIzNzkyLDIzNzk4LDIzODA5LDIzNzk2LDI0MDQ2LDI0MTA5LDI0MTA3LDI0MjM1LDI0MjM3LDI0MjMxLDI0MzY5LDI0NDY2LDI0NDY1LDI0NDY0LDI0NjY1LDI0Njc1LDI0Njc3LDI0NjU2LDI0NjYxLDI0Njg1LDI0NjgxLDI0Njg3LDI0NzA4LDI0NzM1LDI0NzMwLDI0NzE3LDI0NzI0LDI0NzE2LDI0NzA5LDI0NzI2LDI1MTU5LDI1MzMxLDI1MzUyLDI1MzQzLDI1NDIyLDI1NDA2LDI1MzkxLDI1NDI5LDI1NDEwLDI1NDE0LDI1NDIzLDI1NDE3LDI1NDAyLDI1NDI0LDI1NDA1LDI1Mzg2LDI1Mzg3LDI1Mzg0LDI1NDIxLDI1NDIwLDI1OTI4LDI1OTI5LDI2MDA5LDI2MDQ5LDI2MDUzLDI2MTc4LDI2MTg1LDI2MTkxLDI2MTc5LDI2MTk0LDI2MTg4LDI2MTgxLDI2MTc3LDI2MzYwLDI2Mzg4LDI2Mzg5LDI2MzkxLDI2NjU3LDI2NjgwLDI2Njk2LDI2Njk0LDI2NzA3LDI2NjgxLDI2NjkwLDI2NzA4LDI2NjY1LDI2ODAzLDI2NjQ3LDI2NzAwLDI2NzA1LDI2Njg1LDI2NjEyLDI2NzA0LDI2Njg4LDI2Njg0LDI2NjkxLDI2NjY2LDI2NjkzLDI2NjQzLDI2NjQ4LDI2Njg5LDI3NTMwLDI3NTI5LDI3NTc1LDI3NjgzLDI3Njg3LDI3Njg4LDI3Njg2LDI3Njg0LDI3ODg4LDI4MDEwLDI4MDUzLDI4MDQwLDI4MDM5LDI4MDA2LDI4MDI0LDI4MDIzLDI3OTkzLDI4MDUxLDI4MDEyLDI4MDQxLDI4MDE0LDI3OTk0LDI4MDIwLDI4MDA5LDI4MDQ0LDI4MDQyLDI4MDI1LDI4MDM3LDI4MDA1LDI4MDUyLDI4ODc0LDI4ODg4LDI4OTAwLDI4ODg5LDI4ODcyLDI4ODc5LDI5MjQxLDI5MzA1LDI5NDM2LDI5NDMzLDI5NDM3LDI5NDMyLDI5NDMxLDI5NTc0LDI5Njc3LDI5NzA1LDI5Njc4LDI5NjY0LDI5Njc0LDI5NjYyLDMwMDM2LDMwMDQ1LDMwMDQ0LDMwMDQyLDMwMDQxLDMwMTQyLDMwMTQ5LDMwMTUxLDMwMTMwLDMwMTMxLDMwMTQxLDMwMTQwLDMwMTM3LDMwMTQ2LDMwMTM2LDMwMzQ3LDMwMzg0LDMwNDEwLDMwNDEzLDMwNDE0LDMwNTA1LDMwNDk1LDMwNDk2LDMwNTA0LDMwNjk3LDMwNzY4LDMwNzU5LDMwNzc2LDMwNzQ5LDMwNzcyLDMwNzc1LDMwNzU3LDMwNzY1LDMwNzUyLDMwNzUxLDMwNzcwLDMxMDYxLDMxMDU2LDMxMDcyLDMxMDcxLDMxMDYyLDMxMDcwLDMxMDY5LDMxMDYzLDMxMDY2LDMxMjA0LDMxMjAzLDMxMjA3LDMxMTk5LDMxMjA2LDMxMjA5LDMxMTkyLDMxMzY0LDMxMzY4LDMxNDQ5LDMxNDk0LDMxNTA1LDMxODgxLDMyMDMzLDMyMDIzLDMyMDExLDMyMDEwLDMyMDMyLDMyMDM0LDMyMDIwLDMyMDE2LDMyMDIxLDMyMDI2LDMyMDI4LDMyMDEzLDMyMDI1LDMyMDI3LDMyNTcwLDMyNjA3LDMyNjYwLDMyNzA5LDMyNzA1LDMyNzc0LDMyNzkyLDMyNzg5LDMyNzkzLDMyNzkxLDMyODI5LDMyODMxLDMzMDA5LDMzMDI2LDMzMDA4LDMzMDI5LDMzMDA1LDMzMDEyLDMzMDMwLDMzMDE2LDMzMDExLDMzMDMyLDMzMDIxLDMzMDM0LDMzMDIwLDMzMDA3LDMzMjYxLDMzMjYwLDMzMjgwLDMzMjk2LDMzMzIyLDMzMzIzLDMzMzIwLDMzMzI0LDMzNDY3LDMzNTc5LDMzNjE4LDMzNjIwLDMzNjEwLDMzNTkyLDMzNjE2LDMzNjA5LDMzNTg5LDMzNTg4LDMzNjE1LDMzNTg2LDMzNTkzLDMzNTkwLDMzNTU5LDMzNjAwLDMzNTg1LDMzNTc2LDMzNjAzLDM0Mzg4LDM0NDQyLDM0NDc0LDM0NDUxLDM0NDY4LDM0NDczLDM0NDQ0LDM0NDY3LDM0NDYwLDM0OTI4LDM0OTM1LDM0OTQ1LDM0OTQ2LDM0OTQxLDM0OTM3LDM1MzUyLDM1MzQ0LDM1MzQyLDM1MzQwLDM1MzQ5LDM1MzM4LDM1MzUxLDM1MzQ3LDM1MzUwLDM1MzQzLDM1MzQ1LDM1OTEyLDM1OTYyLDM1OTYxLDM2MDAxLDM2MDAyLDM2MjE1LDM2NTI0LDM2NTYyLDM2NTY0LDM2NTU5LDM2Nzg1LDM2ODY1LDM2ODcwLDM2ODU1LDM2ODY0LDM2ODU4LDM2ODUyLDM2ODY3LDM2ODYxLDM2ODY5LDM2ODU2LDM3MDEzLDM3MDg5LDM3MDg1LDM3MDkwLDM3MjAyLDM3MTk3LDM3MTk2LDM3MzM2LDM3MzQxLDM3MzM1LDM3MzQwLDM3MzM3LDM4Mjc1LDM4NDk4LDM4NDk5LDM4NDk3LDM4NDkxLDM4NDkzLDM4NTAwLDM4NDg4LDM4NDk0LDM4NTg3LDM5MTM4LDM5MzQwLDM5NTkyLDM5NjQwLDM5NzE3LDM5NzMwLDM5NzQwLDIwMDk0LDIwNjAyLDIwNjA1LDIwNTcyLDIwNTUxLDIwNTQ3LDIwNTU2LDIwNTcwLDIwNTUzLDIwNTgxLDIwNTk4LDIwNTU4LDIwNTY1LDIwNTk3LDIwNTk2LDIwNTk5LDIwNTU5LDIwNDk1LDIwNTkxLDIwNTg5LDIwODI4LDIwODg1LDIwOTc2LDIxMDk4LDIxMTAzLDIxMjAyLDIxMjA5LDIxMjA4LDIxMjA1LDIxMjY0LDIxMjYzLDIxMjczLDIxMzExLDIxMzEyLDIxMzEwLDIxNDQzLDI2MzY0LDIxODMwLDIxODY2LDIxODYyLDIxODI4LDIxODU0LDIxODU3LDIxODI3LDIxODM0LDIxODA5LDIxODQ2LDIxODM5LDIxODQ1LDIxODA3LDIxODYwLDIxODE2LDIxODA2LDIxODUyLDIxODA0LDIxODU5LDIxODExLDIxODI1LDIxODQ3LDIyMjgwLDIyMjgzLDIyMjgxLDIyNDk1LDIyNTMzLDIyNTM4LDIyNTM0LDIyNDk2LDIyNTAwLDIyNTIyLDIyNTMwLDIyNTgxLDIyNTE5LDIyNTIxLDIyODE2LDIyODgyLDIzMDk0LDIzMTA1LDIzMTEzLDIzMTQyLDIzMTQ2LDIzMTA0LDIzMTAwLDIzMTM4LDIzMTMwLDIzMTEwLDIzMTE0LDIzNDA4LDIzNDk1LDIzNDkzLDIzNDkyLDIzNDkwLDIzNDg3LDIzNDk0LDIzNTYxLDIzNTYwLDIzNTU5LDIzNjQ4LDIzNjQ0LDIzNjQ1LDIzODE1LDIzODE0LDIzODIyLDIzODM1LDIzODMwLDIzODQyLDIzODI1LDIzODQ5LDIzODI4LDIzODMzLDIzODQ0LDIzODQ3LDIzODMxLDI0MDM0LDI0MTIwLDI0MTE4LDI0MTE1LDI0MTE5LDI0MjQ3LDI0MjQ4LDI0MjQ2LDI0MjQ1LDI0MjU0LDI0MzczLDI0Mzc1LDI0NDA3LDI0NDI4LDI0NDI1LDI0NDI3LDI0NDcxLDI0NDczLDI0NDc4LDI0NDcyLDI0NDgxLDI0NDgwLDI0NDc2LDI0NzAzLDI0NzM5LDI0NzEzLDI0NzM2LDI0NzQ0LDI0Nzc5LDI0NzU2LDI0ODA2LDI0NzY1LDI0NzczLDI0NzYzLDI0NzU3LDI0Nzk2LDI0NzY0LDI0NzkyLDI0Nzg5LDI0Nzc0LDI0Nzk5LDI0NzYwLDI0Nzk0LDI0Nzc1LDI1MTE0LDI1MTE1LDI1MTYwLDI1NTA0LDI1NTExLDI1NDU4LDI1NDk0LDI1NTA2LDI1NTA5LDI1NDYzLDI1NDQ3LDI1NDk2LDI1NTE0LDI1NDU3LDI1NTEzLDI1NDgxLDI1NDc1LDI1NDk5LDI1NDUxLDI1NTEyLDI1NDc2LDI1NDgwLDI1NDk3LDI1NTA1LDI1NTE2LDI1NDkwLDI1NDg3LDI1NDcyLDI1NDY3LDI1NDQ5LDI1NDQ4LDI1NDY2LDI1OTQ5LDI1OTQyLDI1OTM3LDI1OTQ1LDI1OTQzLDIxODU1LDI1OTM1LDI1OTQ0LDI1OTQxLDI1OTQwLDI2MDEyLDI2MDExLDI2MDI4LDI2MDYzLDI2MDU5LDI2MDYwLDI2MDYyLDI2MjA1LDI2MjAyLDI2MjEyLDI2MjE2LDI2MjE0LDI2MjA2LDI2MzYxLDIxMjA3LDI2Mzk1LDI2NzUzLDI2Nzk5LDI2Nzg2LDI2NzcxLDI2ODA1LDI2NzUxLDI2NzQyLDI2ODAxLDI2NzkxLDI2Nzc1LDI2ODAwLDI2NzU1LDI2ODIwLDI2Nzk3LDI2NzU4LDI2NzU3LDI2NzcyLDI2NzgxLDI2NzkyLDI2NzgzLDI2Nzg1LDI2NzU0LDI3NDQyLDI3NTc4LDI3NjI3LDI3NjI4LDI3NjkxLDI4MDQ2LDI4MDkyLDI4MTQ3LDI4MTIxLDI4MDgyLDI4MTI5LDI4MTA4LDI4MTMyLDI4MTU1LDI4MTU0LDI4MTY1LDI4MTAzLDI4MTA3LDI4MDc5LDI4MTEzLDI4MDc4LDI4MTI2LDI4MTUzLDI4MDg4LDI4MTUxLDI4MTQ5LDI4MTAxLDI4MTE0LDI4MTg2LDI4MDg1LDI4MTIyLDI4MTM5LDI4MTIwLDI4MTM4LDI4MTQ1LDI4MTQyLDI4MTM2LDI4MTAyLDI4MTAwLDI4MDc0LDI4MTQwLDI4MDk1LDI4MTM0LDI4OTIxLDI4OTM3LDI4OTM4LDI4OTI1LDI4OTExLDI5MjQ1LDI5MzA5LDI5MzEzLDI5NDY4LDI5NDY3LDI5NDYyLDI5NDU5LDI5NDY1LDI5NTc1LDI5NzAxLDI5NzA2LDI5Njk5LDI5NzAyLDI5Njk0LDI5NzA5LDI5OTIwLDI5OTQyLDI5OTQzLDI5OTgwLDI5OTg2LDMwMDUzLDMwMDU0LDMwMDUwLDMwMDY0LDMwMDk1LDMwMTY0LDMwMTY1LDMwMTMzLDMwMTU0LDMwMTU3LDMwMzUwLDMwNDIwLDMwNDE4LDMwNDI3LDMwNTE5LDMwNTI2LDMwNTI0LDMwNTE4LDMwNTIwLDMwNTIyLDMwODI3LDMwNzg3LDMwNzk4LDMxMDc3LDMxMDgwLDMxMDg1LDMxMjI3LDMxMzc4LDMxMzgxLDMxNTIwLDMxNTI4LDMxNTE1LDMxNTMyLDMxNTI2LDMxNTEzLDMxNTE4LDMxNTM0LDMxODkwLDMxODk1LDMxODkzLDMyMDcwLDMyMDY3LDMyMTEzLDMyMDQ2LDMyMDU3LDMyMDYwLDMyMDY0LDMyMDQ4LDMyMDUxLDMyMDY4LDMyMDQ3LDMyMDY2LDMyMDUwLDMyMDQ5LDMyNTczLDMyNjcwLDMyNjY2LDMyNzE2LDMyNzE4LDMyNzIyLDMyNzk2LDMyODQyLDMyODM4LDMzMDcxLDMzMDQ2LDMzMDU5LDMzMDY3LDMzMDY1LDMzMDcyLDMzMDYwLDMzMjgyLDMzMzMzLDMzMzM1LDMzMzM0LDMzMzM3LDMzNjc4LDMzNjk0LDMzNjg4LDMzNjU2LDMzNjk4LDMzNjg2LDMzNzI1LDMzNzA3LDMzNjgyLDMzNjc0LDMzNjgzLDMzNjczLDMzNjk2LDMzNjU1LDMzNjU5LDMzNjYwLDMzNjcwLDMzNzAzLDM0Mzg5LDI0NDI2LDM0NTAzLDM0NDk2LDM0NDg2LDM0NTAwLDM0NDg1LDM0NTAyLDM0NTA3LDM0NDgxLDM0NDc5LDM0NTA1LDM0ODk5LDM0OTc0LDM0OTUyLDM0OTg3LDM0OTYyLDM0OTY2LDM0OTU3LDM0OTU1LDM1MjE5LDM1MjE1LDM1MzcwLDM1MzU3LDM1MzYzLDM1MzY1LDM1Mzc3LDM1MzczLDM1MzU5LDM1MzU1LDM1MzYyLDM1OTEzLDM1OTMwLDM2MDA5LDM2MDEyLDM2MDExLDM2MDA4LDM2MDEwLDM2MDA3LDM2MTk5LDM2MTk4LDM2Mjg2LDM2MjgyLDM2NTcxLDM2NTc1LDM2ODg5LDM2ODc3LDM2ODkwLDM2ODg3LDM2ODk5LDM2ODk1LDM2ODkzLDM2ODgwLDM2ODg1LDM2ODk0LDM2ODk2LDM2ODc5LDM2ODk4LDM2ODg2LDM2ODkxLDM2ODg0LDM3MDk2LDM3MTAxLDM3MTE3LDM3MjA3LDM3MzI2LDM3MzY1LDM3MzUwLDM3MzQ3LDM3MzUxLDM3MzU3LDM3MzUzLDM4MjgxLDM4NTA2LDM4NTE3LDM4NTE1LDM4NTIwLDM4NTEyLDM4NTE2LDM4NTE4LDM4NTE5LDM4NTA4LDM4NTkyLDM4NjM0LDM4NjMzLDMxNDU2LDMxNDU1LDM4OTE0LDM4OTE1LDM5NzcwLDQwMTY1LDQwNTY1LDQwNTc1LDQwNjEzLDQwNjM1LDIwNjQyLDIwNjIxLDIwNjEzLDIwNjMzLDIwNjI1LDIwNjA4LDIwNjMwLDIwNjMyLDIwNjM0LDI2MzY4LDIwOTc3LDIxMTA2LDIxMTA4LDIxMTA5LDIxMDk3LDIxMjE0LDIxMjEzLDIxMjExLDIxMzM4LDIxNDEzLDIxODgzLDIxODg4LDIxOTI3LDIxODg0LDIxODk4LDIxOTE3LDIxOTEyLDIxODkwLDIxOTE2LDIxOTMwLDIxOTA4LDIxODk1LDIxODk5LDIxODkxLDIxOTM5LDIxOTM0LDIxOTE5LDIxODIyLDIxOTM4LDIxOTE0LDIxOTQ3LDIxOTMyLDIxOTM3LDIxODg2LDIxODk3LDIxOTMxLDIxOTEzLDIyMjg1LDIyNTc1LDIyNTcwLDIyNTgwLDIyNTY0LDIyNTc2LDIyNTc3LDIyNTYxLDIyNTU3LDIyNTYwLDIyNzc3LDIyNzc4LDIyODgwLDIzMTU5LDIzMTk0LDIzMTY3LDIzMTg2LDIzMTk1LDIzMjA3LDIzNDExLDIzNDA5LDIzNTA2LDIzNTAwLDIzNTA3LDIzNTA0LDIzNTYyLDIzNTYzLDIzNjAxLDIzODg0LDIzODg4LDIzODYwLDIzODc5LDI0MDYxLDI0MTMzLDI0MTI1LDI0MTI4LDI0MTMxLDI0MTkwLDI0MjY2LDI0MjU3LDI0MjU4LDI0MjYwLDI0MzgwLDI0NDI5LDI0NDg5LDI0NDkwLDI0NDg4LDI0Nzg1LDI0ODAxLDI0NzU0LDI0NzU4LDI0ODAwLDI0ODYwLDI0ODY3LDI0ODI2LDI0ODUzLDI0ODE2LDI0ODI3LDI0ODIwLDI0OTM2LDI0ODE3LDI0ODQ2LDI0ODIyLDI0ODQxLDI0ODMyLDI0ODUwLDI1MTE5LDI1MTYxLDI1NTA3LDI1NDg0LDI1NTUxLDI1NTM2LDI1NTc3LDI1NTQ1LDI1NTQyLDI1NTQ5LDI1NTU0LDI1NTcxLDI1NTUyLDI1NTY5LDI1NTU4LDI1NTgxLDI1NTgyLDI1NDYyLDI1NTg4LDI1NTc4LDI1NTYzLDI1NjgyLDI1NTYyLDI1NTkzLDI1OTUwLDI1OTU4LDI1OTU0LDI1OTU1LDI2MDAxLDI2MDAwLDI2MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUxLDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUzLDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQzLDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgzLDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMyMDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMyMTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIxODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMzNzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMyLDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIwNjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcxLDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIyNjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIyNjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIzMjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAwLDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcxLDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQyLDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAyLDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYxLDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMwNDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMwNTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMwNTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUyLDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgwLDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMyNjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMyOTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMzMTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAwLDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkxLDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMyLDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIyLDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIyNjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIyNjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIyODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQzLDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYzLDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMzLDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMxNDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMxNjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMxNjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMzMzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMzOTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMzOTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAxLDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIxLDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQxLDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMzLDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDczLDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIyNzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIzMjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIzNTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0MzkyLDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUzLDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAzLDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMxNjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMxNjg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMyMjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMxLDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgwLDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcwLDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTczLDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIyNzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIzNTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcyLDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMxMzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMxNzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMxOTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAzLDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUzLDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIwLDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIyMTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIyMTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIzMzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUyLDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMxNDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMxNzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMxOTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgzLDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjExLDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAwLDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDkyLDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgyLDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUxLDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIyNzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4NjgzLDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMxNDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMxNzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMyMzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2OTk1LDM3MDAwLDM3MjkxLDM3MjkyLDM3MzI4LDM3NzgwLDM3NzcwLDM3NzgyLDM3Nzk0LDM3ODExLDM3ODA2LDM3ODA0LDM3ODA4LDM3Nzg0LDM3Nzg2LDM3NzgzLDM4MzU2LDM4MzU4LDM4MzUyLDM4MzU3LDM4NjI2LDM4NjIwLDM4NjE3LDM4NjE5LDM4NjIyLDM4NjkyLDM4ODE5LDM4ODIyLDM4ODI5LDM4OTA1LDM4OTg5LDM4OTkxLDM4OTg4LDM4OTkwLDM4OTk1LDM5MDk4LDM5MjMwLDM5MjMxLDM5MjI5LDM5MjE0LDM5MzMzLDM5NDM4LDM5NjE3LDM5NjgzLDM5Njg2LDM5NzU5LDM5NzU4LDM5NzU3LDM5ODgyLDM5ODgxLDM5OTMzLDM5ODgwLDM5ODcyLDQwMjczLDQwMjg1LDQwMjg4LDQwNjcyLDQwNzI1LDQwNzQ4LDIwNzg3LDIyMTgxLDIyNzUwLDIyNzUxLDIyNzU0LDIzNTQxLDQwODQ4LDI0MzAwLDI1MDc0LDI1MDc5LDI1MDc4LDI1MDc3LDI1ODU2LDI1ODcxLDI2MzM2LDI2MzMzLDI3MzY1LDI3MzU3LDI3MzU0LDI3MzQ3LDI4Njk5LDI4NzAzLDI4NzEyLDI4Njk4LDI4NzAxLDI4NjkzLDI4Njk2LDI5MTkwLDI5MTk3LDI5MjcyLDI5MzQ2LDI5NTYwLDI5NTYyLDI5ODg1LDI5ODk4LDI5OTIzLDMwMDg3LDMwMDg2LDMwMzAzLDMwMzA1LDMwNjYzLDMxMDAxLDMxMTUzLDMxMzM5LDMxMzM3LDMxODA2LDMxODA3LDMxODAwLDMxODA1LDMxNzk5LDMxODA4LDMyMzYzLDMyMzY1LDMyMzc3LDMyMzYxLDMyMzYyLDMyNjQ1LDMyMzcxLDMyNjk0LDMyNjk3LDMyNjk2LDMzMjQwLDM0MjgxLDM0MjY5LDM0MjgyLDM0MjYxLDM0Mjc2LDM0Mjc3LDM0Mjk1LDM0ODExLDM0ODIxLDM0ODI5LDM0ODA5LDM0ODE0LDM1MTY4LDM1MTY3LDM1MTU4LDM1MTY2LDM1NjQ5LDM1Njc2LDM1NjcyLDM1NjU3LDM1Njc0LDM1NjYyLDM1NjYzLDM1NjU0LDM1NjczLDM2MTA0LDM2MTA2LDM2NDc2LDM2NDY2LDM2NDg3LDM2NDcwLDM2NDYwLDM2NDc0LDM2NDY4LDM2NjkyLDM2Njg2LDM2NzgxLDM3MDAyLDM3MDAzLDM3Mjk3LDM3Mjk0LDM3ODU3LDM3ODQxLDM3ODU1LDM3ODI3LDM3ODMyLDM3ODUyLDM3ODUzLDM3ODQ2LDM3ODU4LDM3ODM3LDM3ODQ4LDM3ODYwLDM3ODQ3LDM3ODY0LDM4MzY0LDM4NTgwLDM4NjI3LDM4Njk4LDM4Njk1LDM4NzUzLDM4ODc2LDM4OTA3LDM5MDA2LDM5MDAwLDM5MDAzLDM5MTAwLDM5MjM3LDM5MjQxLDM5NDQ2LDM5NDQ5LDM5NjkzLDM5OTEyLDM5OTExLDM5ODk0LDM5ODk5LDQwMzI5LDQwMjg5LDQwMzA2LDQwMjk4LDQwMzAwLDQwNTk0LDQwNTk5LDQwNTk1LDQwNjI4LDIxMjQwLDIyMTg0LDIyMTk5LDIyMTk4LDIyMTk2LDIyMjA0LDIyNzU2LDIzMzYwLDIzMzYzLDIzNDIxLDIzNTQyLDI0MDA5LDI1MDgwLDI1MDgyLDI1ODgwLDI1ODc2LDI1ODgxLDI2MzQyLDI2NDA3LDI3MzcyLDI4NzM0LDI4NzIwLDI4NzIyLDI5MjAwLDI5NTYzLDI5OTAzLDMwMzA2LDMwMzA5LDMxMDE0LDMxMDE4LDMxMDIwLDMxMDE5LDMxNDMxLDMxNDc4LDMxODIwLDMxODExLDMxODIxLDMxOTgzLDMxOTg0LDM2NzgyLDMyMzgxLDMyMzgwLDMyMzg2LDMyNTg4LDMyNzY4LDMzMjQyLDMzMzgyLDM0Mjk5LDM0Mjk3LDM0MzIxLDM0Mjk4LDM0MzEwLDM0MzE1LDM0MzExLDM0MzE0LDM0ODM2LDM0ODM3LDM1MTcyLDM1MjU4LDM1MzIwLDM1Njk2LDM1NjkyLDM1Njg2LDM1Njk1LDM1Njc5LDM1NjkxLDM2MTExLDM2MTA5LDM2NDg5LDM2NDgxLDM2NDg1LDM2NDgyLDM3MzAwLDM3MzIzLDM3OTEyLDM3ODkxLDM3ODg1LDM4MzY5LDM4NzA0LDM5MTA4LDM5MjUwLDM5MjQ5LDM5MzM2LDM5NDY3LDM5NDcyLDM5NDc5LDM5NDc3LDM5OTU1LDM5OTQ5LDQwNTY5LDQwNjI5LDQwNjgwLDQwNzUxLDQwNzk5LDQwODAzLDQwODAxLDIwNzkxLDIwNzkyLDIyMjA5LDIyMjA4LDIyMjEwLDIyODA0LDIzNjYwLDI0MDEzLDI1MDg0LDI1MDg2LDI1ODg1LDI1ODg0LDI2MDA1LDI2MzQ1LDI3Mzg3LDI3Mzk2LDI3Mzg2LDI3NTcwLDI4NzQ4LDI5MjExLDI5MzUxLDI5OTEwLDI5OTA4LDMwMzEzLDMwNjc1LDMxODI0LDMyMzk5LDMyMzk2LDMyNzAwLDM0MzI3LDM0MzQ5LDM0MzMwLDM0ODUxLDM0ODUwLDM0ODQ5LDM0ODQ3LDM1MTc4LDM1MTgwLDM1MjYxLDM1NzAwLDM1NzAzLDM1NzA5LDM2MTE1LDM2NDkwLDM2NDkzLDM2NDkxLDM2NzAzLDM2NzgzLDM3MzA2LDM3OTM0LDM3OTM5LDM3OTQxLDM3OTQ2LDM3OTQ0LDM3OTM4LDM3OTMxLDM4MzcwLDM4NzEyLDM4NzEzLDM4NzA2LDM4OTExLDM5MDE1LDM5MDEzLDM5MjU1LDM5NDkzLDM5NDkxLDM5NDg4LDM5NDg2LDM5NjMxLDM5NzY0LDM5NzYxLDM5OTgxLDM5OTczLDQwMzY3LDQwMzcyLDQwMzg2LDQwMzc2LDQwNjA1LDQwNjg3LDQwNzI5LDQwNzk2LDQwODA2LDQwODA3LDIwNzk2LDIwNzk1LDIyMjE2LDIyMjE4LDIyMjE3LDIzNDIzLDI0MDIwLDI0MDE4LDI0Mzk4LDI1MDg3LDI1ODkyLDI3NDAyLDI3NDg5LDI4NzUzLDI4NzYwLDI5NTY4LDI5OTI0LDMwMDkwLDMwMzE4LDMwMzE2LDMxMTU1LDMxODQwLDMxODM5LDMyODk0LDMyODkzLDMzMjQ3LDM1MTg2LDM1MTgzLDM1MzI0LDM1NzEyLDM2MTE4LDM2MTE5LDM2NDk3LDM2NDk5LDM2NzA1LDM3MTkyLDM3OTU2LDM3OTY5LDM3OTcwLDM4NzE3LDM4NzE4LDM4ODUxLDM4ODQ5LDM5MDE5LDM5MjUzLDM5NTA5LDM5NTAxLDM5NjM0LDM5NzA2LDQwMDA5LDM5OTg1LDM5OTk4LDM5OTk1LDQwNDAzLDQwNDA3LDQwNzU2LDQwODEyLDQwODEwLDQwODUyLDIyMjIwLDI0MDIyLDI1MDg4LDI1ODkxLDI1ODk5LDI1ODk4LDI2MzQ4LDI3NDA4LDI5OTE0LDMxNDM0LDMxODQ0LDMxODQzLDMxODQ1LDMyNDAzLDMyNDA2LDMyNDA0LDMzMjUwLDM0MzYwLDM0MzY3LDM0ODY1LDM1NzIyLDM3MDA4LDM3MDA3LDM3OTg3LDM3OTg0LDM3OTg4LDM4NzYwLDM5MDIzLDM5MjYwLDM5NTE0LDM5NTE1LDM5NTExLDM5NjM1LDM5NjM2LDM5NjMzLDQwMDIwLDQwMDIzLDQwMDIyLDQwNDIxLDQwNjA3LDQwNjkyLDIyMjI1LDIyNzYxLDI1OTAwLDI4NzY2LDMwMzIxLDMwMzIyLDMwNjc5LDMyNTkyLDMyNjQ4LDM0ODcwLDM0ODczLDM0OTE0LDM1NzMxLDM1NzMwLDM1NzM0LDMzMzk5LDM2MTIzLDM3MzEyLDM3OTk0LDM4NzIyLDM4NzI4LDM4NzI0LDM4ODU0LDM5MDI0LDM5NTE5LDM5NzE0LDM5NzY4LDQwMDMxLDQwNDQxLDQwNDQyLDQwNTcyLDQwNTczLDQwNzExLDQwODIzLDQwODE4LDI0MzA3LDI3NDE0LDI4NzcxLDMxODUyLDMxODU0LDM0ODc1LDM1MjY0LDM2NTEzLDM3MzEzLDM4MDAyLDM4MDAwLDM5MDI1LDM5MjYyLDM5NjM4LDM5NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIwMTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwxNzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAsMTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcsMTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYsMTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGwsNjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMzMSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIxMzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcxLDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIyODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIzNjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQzLDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIyMzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIyOTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIzNTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgyLDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMwLDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMzNDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIyLDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIxNTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIxNTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIxNTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUxLDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkzLDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIzLDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTExLDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5MzgyLDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkxLDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAwLDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMzNDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAwLDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUzLDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcwLDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIxMzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIxNjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIxNjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgxLDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAwLDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIyOTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIzMzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIzNzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUyLDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUzLDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzExLDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMzNDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMzNDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMzNDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODExLDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIzLDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIwNDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIwNDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIxMzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjkyLDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUzLDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIyODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIzMDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIzMDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUzLDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIzLDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUzLDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIyLDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMxMTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMxMzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMxODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIzLDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMzNDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMzNTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMzNTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIxLDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIwNDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIwNDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIwNDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQyLDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIxNzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIxNzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIyNDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUwLDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEzLDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMyLDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2NjgyLDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQxLDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3OTk4LDI4MDA3LDI4MDAwLDI4MDU1LDI4MDE2LDI4MDI4LDI3OTk5LDI4MDM0LDI4MDU2LDI3OTUxLDI4MDA4LDI4MDQzLDI4MDMwLDI4MDMyLDI4MDM2LDI3OTI2LDI4MDM1LDI4MDI3LDI4MDI5LDI4MDIxLDI4MDQ4LDI4ODkyLDI4ODgzLDI4ODgxLDI4ODkzLDI4ODc1LDMyNTY5LDI4ODk4LDI4ODg3LDI4ODgyLDI4ODk0LDI4ODk2LDI4ODg0LDI4ODc3LDI4ODY5LDI4ODcwLDI4ODcxLDI4ODkwLDI4ODc4LDI4ODk3LDI5MjUwLDI5MzA0LDI5MzAzLDI5MzAyLDI5NDQwLDI5NDM0LDI5NDI4LDI5NDM4LDI5NDMwLDI5NDI3LDI5NDM1LDI5NDQxLDI5NjUxLDI5NjU3LDI5NjY5LDI5NjU0LDI5NjI4LDI5NjcxLDI5NjY3LDI5NjczLDI5NjYwLDI5NjUwLDI5NjU5LDI5NjUyLDI5NjYxLDI5NjU4LDI5NjU1LDI5NjU2LDI5NjcyLDI5OTE4LDI5OTE5LDI5OTQwLDI5OTQxLDI5OTg1LDMwMDQzLDMwMDQ3LDMwMTI4LDMwMTQ1LDMwMTM5LDMwMTQ4LDMwMTQ0LDMwMTQzLDMwMTM0LDMwMTM4LDMwMzQ2LDMwNDA5LDMwNDkzLDMwNDkxLDMwNDgwLDMwNDgzLDMwNDgyLDMwNDk5LDMwNDgxLDMwNDg1LDMwNDg5LDMwNDkwLDMwNDk4LDMwNTAzLDMwNzU1LDMwNzY0LDMwNzU0LDMwNzczLDMwNzY3LDMwNzYwLDMwNzY2LDMwNzYzLDMwNzUzLDMwNzYxLDMwNzcxLDMwNzYyLDMwNzY5LDMxMDYwLDMxMDY3LDMxMDU1LDMxMDY4LDMxMDU5LDMxMDU4LDMxMDU3LDMxMjExLDMxMjEyLDMxMjAwLDMxMjE0LDMxMjEzLDMxMjEwLDMxMTk2LDMxMTk4LDMxMTk3LDMxMzY2LDMxMzY5LDMxMzY1LDMxMzcxLDMxMzcyLDMxMzcwLDMxMzY3LDMxNDQ4LDMxNTA0LDMxNDkyLDMxNTA3LDMxNDkzLDMxNTAzLDMxNDk2LDMxNDk4LDMxNTAyLDMxNDk3LDMxNTA2LDMxODc2LDMxODg5LDMxODgyLDMxODg0LDMxODgwLDMxODg1LDMxODc3LDMyMDMwLDMyMDI5LDMyMDE3LDMyMDE0LDMyMDI0LDMyMDIyLDMyMDE5LDMyMDMxLDMyMDE4LDMyMDE1LDMyMDEyLDMyNjA0LDMyNjA5LDMyNjA2LDMyNjA4LDMyNjA1LDMyNjAzLDMyNjYyLDMyNjU4LDMyNzA3LDMyNzA2LDMyNzA0LDMyNzkwLDMyODMwLDMyODI1LDMzMDE4LDMzMDEwLDMzMDE3LDMzMDEzLDMzMDI1LDMzMDE5LDMzMDI0LDMzMjgxLDMzMzI3LDMzMzE3LDMzNTg3LDMzNTgxLDMzNjA0LDMzNTYxLDMzNjE3LDMzNTczLDMzNjIyLDMzNTk5LDMzNjAxLDMzNTc0LDMzNTY0LDMzNTcwLDMzNjAyLDMzNjE0LDMzNTYzLDMzNTc4LDMzNTQ0LDMzNTk2LDMzNjEzLDMzNTU4LDMzNTcyLDMzNTY4LDMzNTkxLDMzNTgzLDMzNTc3LDMzNjA3LDMzNjA1LDMzNjEyLDMzNjE5LDMzNTY2LDMzNTgwLDMzNjExLDMzNTc1LDMzNjA4LDM0Mzg3LDM0Mzg2LDM0NDY2LDM0NDcyLDM0NDU0LDM0NDQ1LDM0NDQ5LDM0NDYyLDM0NDM5LDM0NDU1LDM0NDM4LDM0NDQzLDM0NDU4LDM0NDM3LDM0NDY5LDM0NDU3LDM0NDY1LDM0NDcxLDM0NDUzLDM0NDU2LDM0NDQ2LDM0NDYxLDM0NDQ4LDM0NDUyLDM0ODgzLDM0ODg0LDM0OTI1LDM0OTMzLDM0OTM0LDM0OTMwLDM0OTQ0LDM0OTI5LDM0OTQzLDM0OTI3LDM0OTQ3LDM0OTQyLDM0OTMyLDM0OTQwLDM1MzQ2LDM1OTExLDM1OTI3LDM1OTYzLDM2MDA0LDM2MDAzLDM2MjE0LDM2MjE2LDM2Mjc3LDM2Mjc5LDM2Mjc4LDM2NTYxLDM2NTYzLDM2ODYyLDM2ODUzLDM2ODY2LDM2ODYzLDM2ODU5LDM2ODY4LDM2ODYwLDM2ODU0LDM3MDc4LDM3MDg4LDM3MDgxLDM3MDgyLDM3MDkxLDM3MDg3LDM3MDkzLDM3MDgwLDM3MDgzLDM3MDc5LDM3MDg0LDM3MDkyLDM3MjAwLDM3MTk4LDM3MTk5LDM3MzMzLDM3MzQ2LDM3MzM4LDM4NDkyLDM4NDk1LDM4NTg4LDM5MTM5LDM5NjQ3LDM5NzI3LDIwMDk1LDIwNTkyLDIwNTg2LDIwNTc3LDIwNTc0LDIwNTc2LDIwNTYzLDIwNTU1LDIwNTczLDIwNTk0LDIwNTUyLDIwNTU3LDIwNTQ1LDIwNTcxLDIwNTU0LDIwNTc4LDIwNTAxLDIwNTQ5LDIwNTc1LDIwNTg1LDIwNTg3LDIwNTc5LDIwNTgwLDIwNTUwLDIwNTQ0LDIwNTkwLDIwNTk1LDIwNTY3LDIwNTYxLDIwOTQ0LDIxMDk5LDIxMTAxLDIxMTAwLDIxMTAyLDIxMjA2LDIxMjAzLDIxMjkzLDIxNDA0LDIxODc3LDIxODc4LDIxODIwLDIxODM3LDIxODQwLDIxODEyLDIxODAyLDIxODQxLDIxODU4LDIxODE0LDIxODEzLDIxODA4LDIxODQyLDIxODI5LDIxNzcyLDIxODEwLDIxODYxLDIxODM4LDIxODE3LDIxODMyLDIxODA1LDIxODE5LDIxODI0LDIxODM1LDIyMjgyLDIyMjc5LDIyNTIzLDIyNTQ4LDIyNDk4LDIyNTE4LDIyNDkyLDIyNTE2LDIyNTI4LDIyNTA5LDIyNTI1LDIyNTM2LDIyNTIwLDIyNTM5LDIyNTE1LDIyNDc5LDIyNTM1LDIyNTEwLDIyNDk5LDIyNTE0LDIyNTAxLDIyNTA4LDIyNDk3LDIyNTQyLDIyNTI0LDIyNTQ0LDIyNTAzLDIyNTI5LDIyNTQwLDIyNTEzLDIyNTA1LDIyNTEyLDIyNTQxLDIyNTMyLDIyODc2LDIzMTM2LDIzMTI4LDIzMTI1LDIzMTQzLDIzMTM0LDIzMDk2LDIzMDkzLDIzMTQ5LDIzMTIwLDIzMTM1LDIzMTQxLDIzMTQ4LDIzMTIzLDIzMTQwLDIzMTI3LDIzMTA3LDIzMTMzLDIzMTIyLDIzMTA4LDIzMTMxLDIzMTEyLDIzMTgyLDIzMTAyLDIzMTE3LDIzMDk3LDIzMTE2LDIzMTUyLDIzMTQ1LDIzMTExLDIzMTIxLDIzMTI2LDIzMTA2LDIzMTMyLDIzNDEwLDIzNDA2LDIzNDg5LDIzNDg4LDIzNjQxLDIzODM4LDIzODE5LDIzODM3LDIzODM0LDIzODQwLDIzODIwLDIzODQ4LDIzODIxLDIzODQ2LDIzODQ1LDIzODIzLDIzODU2LDIzODI2LDIzODQzLDIzODM5LDIzODU0LDI0MTI2LDI0MTE2LDI0MjQxLDI0MjQ0LDI0MjQ5LDI0MjQyLDI0MjQzLDI0Mzc0LDI0Mzc2LDI0NDc1LDI0NDcwLDI0NDc5LDI0NzE0LDI0NzIwLDI0NzEwLDI0NzY2LDI0NzUyLDI0NzYyLDI0Nzg3LDI0Nzg4LDI0NzgzLDI0ODA0LDI0NzkzLDI0Nzk3LDI0Nzc2LDI0NzUzLDI0Nzk1LDI0NzU5LDI0Nzc4LDI0NzY3LDI0NzcxLDI0NzgxLDI0NzY4LDI1Mzk0LDI1NDQ1LDI1NDgyLDI1NDc0LDI1NDY5LDI1NTMzLDI1NTAyLDI1NTE3LDI1NTAxLDI1NDk1LDI1NTE1LDI1NDg2LDI1NDU1LDI1NDc5LDI1NDg4LDI1NDU0LDI1NTE5LDI1NDYxLDI1NTAwLDI1NDUzLDI1NTE4LDI1NDY4LDI1NTA4LDI1NDAzLDI1NTAzLDI1NDY0LDI1NDc3LDI1NDczLDI1NDg5LDI1NDg1LDI1NDU2LDI1OTM5LDI2MDYxLDI2MjEzLDI2MjA5LDI2MjAzLDI2MjAxLDI2MjA0LDI2MjEwLDI2MzkyLDI2NzQ1LDI2NzU5LDI2NzY4LDI2NzgwLDI2NzMzLDI2NzM0LDI2Nzk4LDI2Nzk1LDI2OTY2LDI2NzM1LDI2Nzg3LDI2Nzk2LDI2NzkzLDI2NzQxLDI2NzQwLDI2ODAyLDI2NzY3LDI2NzQzLDI2NzcwLDI2NzQ4LDI2NzMxLDI2NzM4LDI2Nzk0LDI2NzUyLDI2NzM3LDI2NzUwLDI2Nzc5LDI2Nzc0LDI2NzYzLDI2Nzg0LDI2NzYxLDI2Nzg4LDI2NzQ0LDI2NzQ3LDI2NzY5LDI2NzY0LDI2NzYyLDI2NzQ5LDI3NDQ2LDI3NDQzLDI3NDQ3LDI3NDQ4LDI3NTM3LDI3NTM1LDI3NTMzLDI3NTM0LDI3NTMyLDI3NjkwLDI4MDk2LDI4MDc1LDI4MDg0LDI4MDgzLDI4Mjc2LDI4MDc2LDI4MTM3LDI4MTMwLDI4MDg3LDI4MTUwLDI4MTE2LDI4MTYwLDI4MTA0LDI4MTI4LDI4MTI3LDI4MTE4LDI4MDk0LDI4MTMzLDI4MTI0LDI4MTI1LDI4MTIzLDI4MTQ4LDI4MTA2LDI4MDkzLDI4MTQxLDI4MTQ0LDI4MDkwLDI4MTE3LDI4MDk4LDI4MTExLDI4MTA1LDI4MTEyLDI4MTQ2LDI4MTE1LDI4MTU3LDI4MTE5LDI4MTA5LDI4MTMxLDI4MDkxLDI4OTIyLDI4OTQxLDI4OTE5LDI4OTUxLDI4OTE2LDI4OTQwLDI4OTEyLDI4OTMyLDI4OTE1LDI4OTQ0LDI4OTI0LDI4OTI3LDI4OTM0LDI4OTQ3LDI4OTI4LDI4OTIwLDI4OTE4LDI4OTM5LDI4OTMwLDI4OTQyLDI5MzEwLDI5MzA3LDI5MzA4LDI5MzExLDI5NDY5LDI5NDYzLDI5NDQ3LDI5NDU3LDI5NDY0LDI5NDUwLDI5NDQ4LDI5NDM5LDI5NDU1LDI5NDcwLDI5NTc2LDI5Njg2LDI5Njg4LDI5Njg1LDI5NzAwLDI5Njk3LDI5NjkzLDI5NzAzLDI5Njk2LDI5NjkwLDI5NjkyLDI5Njk1LDI5NzA4LDI5NzA3LDI5Njg0LDI5NzA0LDMwMDUyLDMwMDUxLDMwMTU4LDMwMTYyLDMwMTU5LDMwMTU1LDMwMTU2LDMwMTYxLDMwMTYwLDMwMzUxLDMwMzQ1LDMwNDE5LDMwNTIxLDMwNTExLDMwNTA5LDMwNTEzLDMwNTE0LDMwNTE2LDMwNTE1LDMwNTI1LDMwNTAxLDMwNTIzLDMwNTE3LDMwNzkyLDMwODAyLDMwNzkzLDMwNzk3LDMwNzk0LDMwNzk2LDMwNzU4LDMwNzg5LDMwODAwLDMxMDc2LDMxMDc5LDMxMDgxLDMxMDgyLDMxMDc1LDMxMDgzLDMxMDczLDMxMTYzLDMxMjI2LDMxMjI0LDMxMjIyLDMxMjIzLDMxMzc1LDMxMzgwLDMxMzc2LDMxNTQxLDMxNTU5LDMxNTQwLDMxNTI1LDMxNTM2LDMxNTIyLDMxNTI0LDMxNTM5LDMxNTEyLDMxNTMwLDMxNTE3LDMxNTM3LDMxNTMxLDMxNTMzLDMxNTM1LDMxNTM4LDMxNTQ0LDMxNTE0LDMxNTIzLDMxODkyLDMxODk2LDMxODk0LDMxOTA3LDMyMDUzLDMyMDYxLDMyMDU2LDMyMDU0LDMyMDU4LDMyMDY5LDMyMDQ0LDMyMDQxLDMyMDY1LDMyMDcxLDMyMDYyLDMyMDYzLDMyMDc0LDMyMDU5LDMyMDQwLDMyNjExLDMyNjYxLDMyNjY4LDMyNjY5LDMyNjY3LDMyNzE0LDMyNzE1LDMyNzE3LDMyNzIwLDMyNzIxLDMyNzExLDMyNzE5LDMyNzEzLDMyNzk5LDMyNzk4LDMyNzk1LDMyODM5LDMyODM1LDMyODQwLDMzMDQ4LDMzMDYxLDMzMDQ5LDMzMDUxLDMzMDY5LDMzMDU1LDMzMDY4LDMzMDU0LDMzMDU3LDMzMDQ1LDMzMDYzLDMzMDUzLDMzMDU4LDMzMjk3LDMzMzM2LDMzMzMxLDMzMzM4LDMzMzMyLDMzMzMwLDMzMzk2LDMzNjgwLDMzNjk5LDMzNzA0LDMzNjc3LDMzNjU4LDMzNjUxLDMzNzAwLDMzNjUyLDMzNjc5LDMzNjY1LDMzNjg1LDMzNjg5LDMzNjUzLDMzNjg0LDMzNzA1LDMzNjYxLDMzNjY3LDMzNjc2LDMzNjkzLDMzNjkxLDMzNzA2LDMzNjc1LDMzNjYyLDMzNzAxLDMzNzExLDMzNjcyLDMzNjg3LDMzNzEyLDMzNjYzLDMzNzAyLDMzNjcxLDMzNzEwLDMzNjU0LDMzNjkwLDM0MzkzLDM0MzkwLDM0NDk1LDM0NDg3LDM0NDk4LDM0NDk3LDM0NTAxLDM0NDkwLDM0NDgwLDM0NTA0LDM0NDg5LDM0NDgzLDM0NDg4LDM0NTA4LDM0NDg0LDM0NDkxLDM0NDkyLDM0NDk5LDM0NDkzLDM0NDk0LDM0ODk4LDM0OTUzLDM0OTY1LDM0OTg0LDM0OTc4LDM0OTg2LDM0OTcwLDM0OTYxLDM0OTc3LDM0OTc1LDM0OTY4LDM0OTgzLDM0OTY5LDM0OTcxLDM0OTY3LDM0OTgwLDM0OTg4LDM0OTU2LDM0OTYzLDM0OTU4LDM1MjAyLDM1Mjg2LDM1Mjg5LDM1Mjg1LDM1Mzc2LDM1MzY3LDM1MzcyLDM1MzU4LDM1ODk3LDM1ODk5LDM1OTMyLDM1OTMzLDM1OTY1LDM2MDA1LDM2MjIxLDM2MjE5LDM2MjE3LDM2Mjg0LDM2MjkwLDM2MjgxLDM2Mjg3LDM2Mjg5LDM2NTY4LDM2NTc0LDM2NTczLDM2NTcyLDM2NTY3LDM2NTc2LDM2NTc3LDM2OTAwLDM2ODc1LDM2ODgxLDM2ODkyLDM2ODc2LDM2ODk3LDM3MTAzLDM3MDk4LDM3MTA0LDM3MTA4LDM3MTA2LDM3MTA3LDM3MDc2LDM3MDk5LDM3MTAwLDM3MDk3LDM3MjA2LDM3MjA4LDM3MjEwLDM3MjAzLDM3MjA1LDM3MzU2LDM3MzY0LDM3MzYxLDM3MzYzLDM3MzY4LDM3MzQ4LDM3MzY5LDM3MzU0LDM3MzU1LDM3MzY3LDM3MzUyLDM3MzU4LDM4MjY2LDM4Mjc4LDM4MjgwLDM4NTI0LDM4NTA5LDM4NTA3LDM4NTEzLDM4NTExLDM4NTkxLDM4NzYyLDM4OTE2LDM5MTQxLDM5MzE5LDIwNjM1LDIwNjI5LDIwNjI4LDIwNjM4LDIwNjE5LDIwNjQzLDIwNjExLDIwNjIwLDIwNjIyLDIwNjM3LDIwNTg0LDIwNjM2LDIwNjI2LDIwNjEwLDIwNjE1LDIwODMxLDIwOTQ4LDIxMjY2LDIxMjY1LDIxNDEyLDIxNDE1LDIxOTA1LDIxOTI4LDIxOTI1LDIxOTMzLDIxODc5LDIyMDg1LDIxOTIyLDIxOTA3LDIxODk2LDIxOTAzLDIxOTQxLDIxODg5LDIxOTIzLDIxOTA2LDIxOTI0LDIxODg1LDIxOTAwLDIxOTI2LDIxODg3LDIxOTA5LDIxOTIxLDIxOTAyLDIyMjg0LDIyNTY5LDIyNTgzLDIyNTUzLDIyNTU4LDIyNTY3LDIyNTYzLDIyNTY4LDIyNTE3LDIyNjAwLDIyNTY1LDIyNTU2LDIyNTU1LDIyNTc5LDIyNTkxLDIyNTgyLDIyNTc0LDIyNTg1LDIyNTg0LDIyNTczLDIyNTcyLDIyNTg3LDIyODgxLDIzMjE1LDIzMTg4LDIzMTk5LDIzMTYyLDIzMjAyLDIzMTk4LDIzMTYwLDIzMjA2LDIzMTY0LDIzMjA1LDIzMjEyLDIzMTg5LDIzMjE0LDIzMDk1LDIzMTcyLDIzMTc4LDIzMTkxLDIzMTcxLDIzMTc5LDIzMjA5LDIzMTYzLDIzMTY1LDIzMTgwLDIzMTk2LDIzMTgzLDIzMTg3LDIzMTk3LDIzNTMwLDIzNTAxLDIzNDk5LDIzNTA4LDIzNTA1LDIzNDk4LDIzNTAyLDIzNTY0LDIzNjAwLDIzODYzLDIzODc1LDIzOTE1LDIzODczLDIzODgzLDIzODcxLDIzODYxLDIzODg5LDIzODg2LDIzODkzLDIzODU5LDIzODY2LDIzODkwLDIzODY5LDIzODU3LDIzODk3LDIzODc0LDIzODY1LDIzODgxLDIzODY0LDIzODY4LDIzODU4LDIzODYyLDIzODcyLDIzODc3LDI0MTMyLDI0MTI5LDI0NDA4LDI0NDg2LDI0NDg1LDI0NDkxLDI0Nzc3LDI0NzYxLDI0NzgwLDI0ODAyLDI0NzgyLDI0NzcyLDI0ODUyLDI0ODE4LDI0ODQyLDI0ODU0LDI0ODM3LDI0ODIxLDI0ODUxLDI0ODI0LDI0ODI4LDI0ODMwLDI0NzY5LDI0ODM1LDI0ODU2LDI0ODYxLDI0ODQ4LDI0ODMxLDI0ODM2LDI0ODQzLDI1MTYyLDI1NDkyLDI1NTIxLDI1NTIwLDI1NTUwLDI1NTczLDI1NTc2LDI1NTgzLDI1NTM5LDI1NzU3LDI1NTg3LDI1NTQ2LDI1NTY4LDI1NTkwLDI1NTU3LDI1NTg2LDI1NTg5LDI1Njk3LDI1NTY3LDI1NTM0LDI1NTY1LDI1NTY0LDI1NTQwLDI1NTYwLDI1NTU1LDI1NTM4LDI1NTQzLDI1NTQ4LDI1NTQ3LDI1NTQ0LDI1NTg0LDI1NTU5LDI1NTYxLDI1OTA2LDI1OTU5LDI1OTYyLDI1OTU2LDI1OTQ4LDI1OTYwLDI1OTU3LDI1OTk2LDI2MDEzLDI2MDE0LDI2MDMwLDI2MDY0LDI2MDY2LDI2MjM2LDI2MjIwLDI2MjM1LDI2MjQwLDI2MjI1LDI2MjMzLDI2MjE4LDI2MjI2LDI2MzY5LDI2ODkyLDI2ODM1LDI2ODg0LDI2ODQ0LDI2OTIyLDI2ODYwLDI2ODU4LDI2ODY1LDI2ODk1LDI2ODM4LDI2ODcxLDI2ODU5LDI2ODUyLDI2ODcwLDI2ODk5LDI2ODk2LDI2ODY3LDI2ODQ5LDI2ODg3LDI2ODI4LDI2ODg4LDI2OTkyLDI2ODA0LDI2ODk3LDI2ODYzLDI2ODIyLDI2OTAwLDI2ODcyLDI2ODMyLDI2ODc3LDI2ODc2LDI2ODU2LDI2ODkxLDI2ODkwLDI2OTAzLDI2ODMwLDI2ODI0LDI2ODQ1LDI2ODQ2LDI2ODU0LDI2ODY4LDI2ODMzLDI2ODg2LDI2ODM2LDI2ODU3LDI2OTAxLDI2OTE3LDI2ODIzLDI3NDQ5LDI3NDUxLDI3NDU1LDI3NDUyLDI3NTQwLDI3NTQzLDI3NTQ1LDI3NTQxLDI3NTgxLDI3NjMyLDI3NjM0LDI3NjM1LDI3Njk2LDI4MTU2LDI4MjMwLDI4MjMxLDI4MTkxLDI4MjMzLDI4Mjk2LDI4MjIwLDI4MjIxLDI4MjI5LDI4MjU4LDI4MjAzLDI4MjIzLDI4MjI1LDI4MjUzLDI4Mjc1LDI4MTg4LDI4MjExLDI4MjM1LDI4MjI0LDI4MjQxLDI4MjE5LDI4MTYzLDI4MjA2LDI4MjU0LDI4MjY0LDI4MjUyLDI4MjU3LDI4MjA5LDI4MjAwLDI4MjU2LDI4MjczLDI4MjY3LDI4MjE3LDI4MTk0LDI4MjA4LDI4MjQzLDI4MjYxLDI4MTk5LDI4MjgwLDI4MjYwLDI4Mjc5LDI4MjQ1LDI4MjgxLDI4MjQyLDI4MjYyLDI4MjEzLDI4MjE0LDI4MjUwLDI4OTYwLDI4OTU4LDI4OTc1LDI4OTIzLDI4OTc0LDI4OTc3LDI4OTYzLDI4OTY1LDI4OTYyLDI4OTc4LDI4OTU5LDI4OTY4LDI4OTg2LDI4OTU1LDI5MjU5LDI5Mjc0LDI5MzIwLDI5MzIxLDI5MzE4LDI5MzE3LDI5MzIzLDI5NDU4LDI5NDUxLDI5NDg4LDI5NDc0LDI5NDg5LDI5NDkxLDI5NDc5LDI5NDkwLDI5NDg1LDI5NDc4LDI5NDc1LDI5NDkzLDI5NDUyLDI5NzQyLDI5NzQwLDI5NzQ0LDI5NzM5LDI5NzE4LDI5NzIyLDI5NzI5LDI5NzQxLDI5NzQ1LDI5NzMyLDI5NzMxLDI5NzI1LDI5NzM3LDI5NzI4LDI5NzQ2LDI5OTQ3LDI5OTk5LDMwMDYzLDMwMDYwLDMwMTgzLDMwMTcwLDMwMTc3LDMwMTgyLDMwMTczLDMwMTc1LDMwMTgwLDMwMTY3LDMwMzU3LDMwMzU0LDMwNDI2LDMwNTM0LDMwNTM1LDMwNTMyLDMwNTQxLDMwNTMzLDMwNTM4LDMwNTQyLDMwNTM5LDMwNTQwLDMwNjg2LDMwNzAwLDMwODE2LDMwODIwLDMwODIxLDMwODEyLDMwODI5LDMwODMzLDMwODI2LDMwODMwLDMwODMyLDMwODI1LDMwODI0LDMwODE0LDMwODE4LDMxMDkyLDMxMDkxLDMxMDkwLDMxMDg4LDMxMjM0LDMxMjQyLDMxMjM1LDMxMjQ0LDMxMjM2LDMxMzg1LDMxNDYyLDMxNDYwLDMxNTYyLDMxNTQ3LDMxNTU2LDMxNTYwLDMxNTY0LDMxNTY2LDMxNTUyLDMxNTc2LDMxNTU3LDMxOTA2LDMxOTAyLDMxOTEyLDMxOTA1LDMyMDg4LDMyMTExLDMyMDk5LDMyMDgzLDMyMDg2LDMyMTAzLDMyMTA2LDMyMDc5LDMyMTA5LDMyMDkyLDMyMTA3LDMyMDgyLDMyMDg0LDMyMTA1LDMyMDgxLDMyMDk1LDMyMDc4LDMyNTc0LDMyNTc1LDMyNjEzLDMyNjE0LDMyNjc0LDMyNjcyLDMyNjczLDMyNzI3LDMyODQ5LDMyODQ3LDMyODQ4LDMzMDIyLDMyOTgwLDMzMDkxLDMzMDk4LDMzMTA2LDMzMTAzLDMzMDk1LDMzMDg1LDMzMTAxLDMzMDgyLDMzMjU0LDMzMjYyLDMzMjcxLDMzMjcyLDMzMjczLDMzMjg0LDMzMzQwLDMzMzQxLDMzMzQzLDMzMzk3LDMzNTk1LDMzNzQzLDMzNzg1LDMzODI3LDMzNzI4LDMzNzY4LDMzODEwLDMzNzY3LDMzNzY0LDMzNzg4LDMzNzgyLDMzODA4LDMzNzM0LDMzNzM2LDMzNzcxLDMzNzYzLDMzNzI3LDMzNzkzLDMzNzU3LDMzNzY1LDMzNzUyLDMzNzkxLDMzNzYxLDMzNzM5LDMzNzQyLDMzNzUwLDMzNzgxLDMzNzM3LDMzODAxLDMzODA3LDMzNzU4LDMzODA5LDMzNzk4LDMzNzMwLDMzNzc5LDMzNzQ5LDMzNzg2LDMzNzM1LDMzNzQ1LDMzNzcwLDMzODExLDMzNzMxLDMzNzcyLDMzNzc0LDMzNzMyLDMzNzg3LDMzNzUxLDMzNzYyLDMzODE5LDMzNzU1LDMzNzkwLDM0NTIwLDM0NTMwLDM0NTM0LDM0NTE1LDM0NTMxLDM0NTIyLDM0NTM4LDM0NTI1LDM0NTM5LDM0NTI0LDM0NTQwLDM0NTM3LDM0NTE5LDM0NTM2LDM0NTEzLDM0ODg4LDM0OTAyLDM0OTAxLDM1MDAyLDM1MDMxLDM1MDAxLDM1MDAwLDM1MDA4LDM1MDA2LDM0OTk4LDM1MDA0LDM0OTk5LDM1MDA1LDM0OTk0LDM1MDczLDM1MDE3LDM1MjIxLDM1MjI0LDM1MjIzLDM1MjkzLDM1MjkwLDM1MjkxLDM1NDA2LDM1NDA1LDM1Mzg1LDM1NDE3LDM1MzkyLDM1NDE1LDM1NDE2LDM1Mzk2LDM1Mzk3LDM1NDEwLDM1NDAwLDM1NDA5LDM1NDAyLDM1NDA0LDM1NDA3LDM1OTM1LDM1OTY5LDM1OTY4LDM2MDI2LDM2MDMwLDM2MDE2LDM2MDI1LDM2MDIxLDM2MjI4LDM2MjI0LDM2MjMzLDM2MzEyLDM2MzA3LDM2MzAxLDM2Mjk1LDM2MzEwLDM2MzE2LDM2MzAzLDM2MzA5LDM2MzEzLDM2Mjk2LDM2MzExLDM2MjkzLDM2NTkxLDM2NTk5LDM2NjAyLDM2NjAxLDM2NTgyLDM2NTkwLDM2NTgxLDM2NTk3LDM2NTgzLDM2NTg0LDM2NTk4LDM2NTg3LDM2NTkzLDM2NTg4LDM2NTk2LDM2NTg1LDM2OTA5LDM2OTE2LDM2OTExLDM3MTI2LDM3MTY0LDM3MTI0LDM3MTE5LDM3MTE2LDM3MTI4LDM3MTEzLDM3MTE1LDM3MTIxLDM3MTIwLDM3MTI3LDM3MTI1LDM3MTIzLDM3MjE3LDM3MjIwLDM3MjE1LDM3MjE4LDM3MjE2LDM3Mzc3LDM3Mzg2LDM3NDEzLDM3Mzc5LDM3NDAyLDM3NDE0LDM3MzkxLDM3Mzg4LDM3Mzc2LDM3Mzk0LDM3Mzc1LDM3MzczLDM3MzgyLDM3MzgwLDM3NDE1LDM3Mzc4LDM3NDA0LDM3NDEyLDM3NDAxLDM3Mzk5LDM3MzgxLDM3Mzk4LDM4MjY3LDM4Mjg1LDM4Mjg0LDM4Mjg4LDM4NTM1LDM4NTI2LDM4NTM2LDM4NTM3LDM4NTMxLDM4NTI4LDM4NTk0LDM4NjAwLDM4NTk1LDM4NjQxLDM4NjQwLDM4NzY0LDM4NzY4LDM4NzY2LDM4OTE5LDM5MDgxLDM5MTQ3LDQwMTY2LDQwNjk3LDIwMDk5LDIwMTAwLDIwMTUwLDIwNjY5LDIwNjcxLDIwNjc4LDIwNjU0LDIwNjc2LDIwNjgyLDIwNjYwLDIwNjgwLDIwNjc0LDIwNjU2LDIwNjczLDIwNjY2LDIwNjU3LDIwNjgzLDIwNjgxLDIwNjYyLDIwNjY0LDIwOTUxLDIxMTE0LDIxMTEyLDIxMTE1LDIxMTE2LDIxOTU1LDIxOTc5LDIxOTY0LDIxOTY4LDIxOTYzLDIxOTYyLDIxOTgxLDIxOTUyLDIxOTcyLDIxOTU2LDIxOTkzLDIxOTUxLDIxOTcwLDIxOTAxLDIxOTY3LDIxOTczLDIxOTg2LDIxOTc0LDIxOTYwLDIyMDAyLDIxOTY1LDIxOTc3LDIxOTU0LDIyMjkyLDIyNjExLDIyNjMyLDIyNjI4LDIyNjA3LDIyNjA1LDIyNjAxLDIyNjM5LDIyNjEzLDIyNjA2LDIyNjIxLDIyNjE3LDIyNjI5LDIyNjE5LDIyNTg5LDIyNjI3LDIyNjQxLDIyNzgwLDIzMjM5LDIzMjM2LDIzMjQzLDIzMjI2LDIzMjI0LDIzMjE3LDIzMjIxLDIzMjE2LDIzMjMxLDIzMjQwLDIzMjI3LDIzMjM4LDIzMjIzLDIzMjMyLDIzMjQyLDIzMjIwLDIzMjIyLDIzMjQ1LDIzMjI1LDIzMTg0LDIzNTEwLDIzNTEyLDIzNTEzLDIzNTgzLDIzNjAzLDIzOTIxLDIzOTA3LDIzODgyLDIzOTA5LDIzOTIyLDIzOTE2LDIzOTAyLDIzOTEyLDIzOTExLDIzOTA2LDI0MDQ4LDI0MTQzLDI0MTQyLDI0MTM4LDI0MTQxLDI0MTM5LDI0MjYxLDI0MjY4LDI0MjYyLDI0MjY3LDI0MjYzLDI0Mzg0LDI0NDk1LDI0NDkzLDI0ODIzLDI0OTA1LDI0OTA2LDI0ODc1LDI0OTAxLDI0ODg2LDI0ODgyLDI0ODc4LDI0OTAyLDI0ODc5LDI0OTExLDI0ODczLDI0ODk2LDI1MTIwLDM3MjI0LDI1MTIzLDI1MTI1LDI1MTI0LDI1NTQxLDI1NTg1LDI1NTc5LDI1NjE2LDI1NjE4LDI1NjA5LDI1NjMyLDI1NjM2LDI1NjUxLDI1NjY3LDI1NjMxLDI1NjIxLDI1NjI0LDI1NjU3LDI1NjU1LDI1NjM0LDI1NjM1LDI1NjEyLDI1NjM4LDI1NjQ4LDI1NjQwLDI1NjY1LDI1NjUzLDI1NjQ3LDI1NjEwLDI1NjI2LDI1NjY0LDI1NjM3LDI1NjM5LDI1NjExLDI1NTc1LDI1NjI3LDI1NjQ2LDI1NjMzLDI1NjE0LDI1OTY3LDI2MDAyLDI2MDY3LDI2MjQ2LDI2MjUyLDI2MjYxLDI2MjU2LDI2MjUxLDI2MjUwLDI2MjY1LDI2MjYwLDI2MjMyLDI2NDAwLDI2OTgyLDI2OTc1LDI2OTM2LDI2OTU4LDI2OTc4LDI2OTkzLDI2OTQzLDI2OTQ5LDI2OTg2LDI2OTM3LDI2OTQ2LDI2OTY3LDI2OTY5LDI3MDAyLDI2OTUyLDI2OTUzLDI2OTMzLDI2OTg4LDI2OTMxLDI2OTQxLDI2OTgxLDI2ODY0LDI3MDAwLDI2OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUyLDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQyLDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDExLDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMwODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMwODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMxMTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkwLDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAwLDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMyMTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMyMTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMyNjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIxLDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMzODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMzODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMzOTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQzLDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYwLDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUwLDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQyLDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMzLDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMxLDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIwNzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIwNzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIxMjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgwLDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUwLDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIzMjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIzMjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIzMjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUyLDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0MjcwLDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYzLDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcxLDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMwMjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkwLDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkxLDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMxMjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMxNjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMxNjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMyODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMzMTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMzOTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0MDAwLDMzOTQ5LDMzOTU5LDMzOTc5LDMzOTU0LDMzOTQwLDMzOTkxLDMzOTk2LDMzOTQ3LDMzOTYxLDMzOTY3LDMzOTYwLDM0MDA2LDMzOTQ0LDMzOTc0LDMzOTk5LDMzOTUyLDM0MDA3LDM0MDA0LDM0MDAyLDM0MDExLDMzOTY4LDMzOTM3LDM0NDAxLDM0NjExLDM0NTk1LDM0NjAwLDM0NjY3LDM0NjI0LDM0NjA2LDM0NTkwLDM0NTkzLDM0NTg1LDM0NTg3LDM0NjI3LDM0NjA0LDM0NjI1LDM0NjIyLDM0NjMwLDM0NTkyLDM0NjEwLDM0NjAyLDM0NjA1LDM0NjIwLDM0NTc4LDM0NjE4LDM0NjA5LDM0NjEzLDM0NjI2LDM0NTk4LDM0NTk5LDM0NjE2LDM0NTk2LDM0NTg2LDM0NjA4LDM0NTc3LDM1MDYzLDM1MDQ3LDM1MDU3LDM1MDU4LDM1MDY2LDM1MDcwLDM1MDU0LDM1MDY4LDM1MDYyLDM1MDY3LDM1MDU2LDM1MDUyLDM1MDUxLDM1MjI5LDM1MjMzLDM1MjMxLDM1MjMwLDM1MzA1LDM1MzA3LDM1MzA0LDM1NDk5LDM1NDgxLDM1NDY3LDM1NDc0LDM1NDcxLDM1NDc4LDM1OTAxLDM1OTQ0LDM1OTQ1LDM2MDUzLDM2MDQ3LDM2MDU1LDM2MjQ2LDM2MzYxLDM2MzU0LDM2MzUxLDM2MzY1LDM2MzQ5LDM2MzYyLDM2MzU1LDM2MzU5LDM2MzU4LDM2MzU3LDM2MzUwLDM2MzUyLDM2MzU2LDM2NjI0LDM2NjI1LDM2NjIyLDM2NjIxLDM3MTU1LDM3MTQ4LDM3MTUyLDM3MTU0LDM3MTUxLDM3MTQ5LDM3MTQ2LDM3MTU2LDM3MTUzLDM3MTQ3LDM3MjQyLDM3MjM0LDM3MjQxLDM3MjM1LDM3NTQxLDM3NTQwLDM3NDk0LDM3NTMxLDM3NDk4LDM3NTM2LDM3NTI0LDM3NTQ2LDM3NTE3LDM3NTQyLDM3NTMwLDM3NTQ3LDM3NDk3LDM3NTI3LDM3NTAzLDM3NTM5LDM3NjE0LDM3NTE4LDM3NTA2LDM3NTI1LDM3NTM4LDM3NTAxLDM3NTEyLDM3NTM3LDM3NTE0LDM3NTEwLDM3NTE2LDM3NTI5LDM3NTQzLDM3NTAyLDM3NTExLDM3NTQ1LDM3NTMzLDM3NTE1LDM3NDIxLDM4NTU4LDM4NTYxLDM4NjU1LDM4NzQ0LDM4NzgxLDM4Nzc4LDM4NzgyLDM4Nzg3LDM4Nzg0LDM4Nzg2LDM4Nzc5LDM4Nzg4LDM4Nzg1LDM4NzgzLDM4ODYyLDM4ODYxLDM4OTM0LDM5MDg1LDM5MDg2LDM5MTcwLDM5MTY4LDM5MTc1LDM5MzI1LDM5MzI0LDM5MzYzLDM5MzUzLDM5MzU1LDM5MzU0LDM5MzYyLDM5MzU3LDM5MzY3LDM5NjAxLDM5NjUxLDM5NjU1LDM5NzQyLDM5NzQzLDM5Nzc2LDM5Nzc3LDM5Nzc1LDQwMTc3LDQwMTc4LDQwMTgxLDQwNjE1LDIwNzM1LDIwNzM5LDIwNzg0LDIwNzI4LDIwNzQyLDIwNzQzLDIwNzI2LDIwNzM0LDIwNzQ3LDIwNzQ4LDIwNzMzLDIwNzQ2LDIxMTMxLDIxMTMyLDIxMjMzLDIxMjMxLDIyMDg4LDIyMDgyLDIyMDkyLDIyMDY5LDIyMDgxLDIyMDkwLDIyMDg5LDIyMDg2LDIyMTA0LDIyMTA2LDIyMDgwLDIyMDY3LDIyMDc3LDIyMDYwLDIyMDc4LDIyMDcyLDIyMDU4LDIyMDc0LDIyMjk4LDIyNjk5LDIyNjg1LDIyNzA1LDIyNjg4LDIyNjkxLDIyNzAzLDIyNzAwLDIyNjkzLDIyNjg5LDIyNzgzLDIzMjk1LDIzMjg0LDIzMjkzLDIzMjg3LDIzMjg2LDIzMjk5LDIzMjg4LDIzMjk4LDIzMjg5LDIzMjk3LDIzMzAzLDIzMzAxLDIzMzExLDIzNjU1LDIzOTYxLDIzOTU5LDIzOTY3LDIzOTU0LDIzOTcwLDIzOTU1LDIzOTU3LDIzOTY4LDIzOTY0LDIzOTY5LDIzOTYyLDIzOTY2LDI0MTY5LDI0MTU3LDI0MTYwLDI0MTU2LDMyMjQzLDI0MjgzLDI0Mjg2LDI0Mjg5LDI0MzkzLDI0NDk4LDI0OTcxLDI0OTYzLDI0OTUzLDI1MDA5LDI1MDA4LDI0OTk0LDI0OTY5LDI0OTg3LDI0OTc5LDI1MDA3LDI1MDA1LDI0OTkxLDI0OTc4LDI1MDAyLDI0OTkzLDI0OTczLDI0OTM0LDI1MDExLDI1MTMzLDI1NzEwLDI1NzEyLDI1NzUwLDI1NzYwLDI1NzMzLDI1NzUxLDI1NzU2LDI1NzQzLDI1NzM5LDI1NzM4LDI1NzQwLDI1NzYzLDI1NzU5LDI1NzA0LDI1Nzc3LDI1NzUyLDI1OTc0LDI1OTc4LDI1OTc3LDI1OTc5LDI2MDM0LDI2MDM1LDI2MjkzLDI2Mjg4LDI2MjgxLDI2MjkwLDI2Mjk1LDI2MjgyLDI2Mjg3LDI3MTM2LDI3MTQyLDI3MTU5LDI3MTA5LDI3MTI4LDI3MTU3LDI3MTIxLDI3MTA4LDI3MTY4LDI3MTM1LDI3MTE2LDI3MTA2LDI3MTYzLDI3MTY1LDI3MTM0LDI3MTc1LDI3MTIyLDI3MTE4LDI3MTU2LDI3MTI3LDI3MTExLDI3MjAwLDI3MTQ0LDI3MTEwLDI3MTMxLDI3MTQ5LDI3MTMyLDI3MTE1LDI3MTQ1LDI3MTQwLDI3MTYwLDI3MTczLDI3MTUxLDI3MTI2LDI3MTc0LDI3MTQzLDI3MTI0LDI3MTU4LDI3NDczLDI3NTU3LDI3NTU1LDI3NTU0LDI3NTU4LDI3NjQ5LDI3NjQ4LDI3NjQ3LDI3NjUwLDI4NDgxLDI4NDU0LDI4NTQyLDI4NTUxLDI4NjE0LDI4NTYyLDI4NTU3LDI4NTUzLDI4NTU2LDI4NTE0LDI4NDk1LDI4NTQ5LDI4NTA2LDI4NTY2LDI4NTM0LDI4NTI0LDI4NTQ2LDI4NTAxLDI4NTMwLDI4NDk4LDI4NDk2LDI4NTAzLDI4NTY0LDI4NTYzLDI4NTA5LDI4NDE2LDI4NTEzLDI4NTIzLDI4NTQxLDI4NTE5LDI4NTYwLDI4NDk5LDI4NTU1LDI4NTIxLDI4NTQzLDI4NTY1LDI4NTE1LDI4NTM1LDI4NTIyLDI4NTM5LDI5MTA2LDI5MTAzLDI5MDgzLDI5MTA0LDI5MDg4LDI5MDgyLDI5MDk3LDI5MTA5LDI5MDg1LDI5MDkzLDI5MDg2LDI5MDkyLDI5MDg5LDI5MDk4LDI5MDg0LDI5MDk1LDI5MTA3LDI5MzM2LDI5MzM4LDI5NTI4LDI5NTIyLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTMzLDI5NTMxLDI5NTM3LDI5NTMwLDI5NTI5LDI5NTM4LDI5ODMxLDI5ODMzLDI5ODM0LDI5ODMwLDI5ODI1LDI5ODIxLDI5ODI5LDI5ODMyLDI5ODIwLDI5ODE3LDI5OTYwLDI5OTU5LDMwMDc4LDMwMjQ1LDMwMjM4LDMwMjMzLDMwMjM3LDMwMjM2LDMwMjQzLDMwMjM0LDMwMjQ4LDMwMjM1LDMwMzY0LDMwMzY1LDMwMzY2LDMwMzYzLDMwNjA1LDMwNjA3LDMwNjAxLDMwNjAwLDMwOTI1LDMwOTA3LDMwOTI3LDMwOTI0LDMwOTI5LDMwOTI2LDMwOTMyLDMwOTIwLDMwOTE1LDMwOTE2LDMwOTIxLDMxMTMwLDMxMTM3LDMxMTM2LDMxMTMyLDMxMTM4LDMxMTMxLDI3NTEwLDMxMjg5LDMxNDEwLDMxNDEyLDMxNDExLDMxNjcxLDMxNjkxLDMxNjc4LDMxNjYwLDMxNjk0LDMxNjYzLDMxNjczLDMxNjkwLDMxNjY5LDMxOTQxLDMxOTQ0LDMxOTQ4LDMxOTQ3LDMyMjQ3LDMyMjE5LDMyMjM0LDMyMjMxLDMyMjE1LDMyMjI1LDMyMjU5LDMyMjUwLDMyMjMwLDMyMjQ2LDMyMjQxLDMyMjQwLDMyMjM4LDMyMjIzLDMyNjMwLDMyNjg0LDMyNjg4LDMyNjg1LDMyNzQ5LDMyNzQ3LDMyNzQ2LDMyNzQ4LDMyNzQyLDMyNzQ0LDMyODY4LDMyODcxLDMzMTg3LDMzMTgzLDMzMTgyLDMzMTczLDMzMTg2LDMzMTc3LDMzMTc1LDMzMzAyLDMzMzU5LDMzMzYzLDMzMzYyLDMzMzYwLDMzMzU4LDMzMzYxLDM0MDg0LDM0MTA3LDM0MDYzLDM0MDQ4LDM0MDg5LDM0MDYyLDM0MDU3LDM0MDYxLDM0MDc5LDM0MDU4LDM0MDg3LDM0MDc2LDM0MDQzLDM0MDkxLDM0MDQyLDM0MDU2LDM0MDYwLDM0MDM2LDM0MDkwLDM0MDM0LDM0MDY5LDM0MDM5LDM0MDI3LDM0MDM1LDM0MDQ0LDM0MDY2LDM0MDI2LDM0MDI1LDM0MDcwLDM0MDQ2LDM0MDg4LDM0MDc3LDM0MDk0LDM0MDUwLDM0MDQ1LDM0MDc4LDM0MDM4LDM0MDk3LDM0MDg2LDM0MDIzLDM0MDI0LDM0MDMyLDM0MDMxLDM0MDQxLDM0MDcyLDM0MDgwLDM0MDk2LDM0MDU5LDM0MDczLDM0MDk1LDM0NDAyLDM0NjQ2LDM0NjU5LDM0NjYwLDM0Njc5LDM0Nzg1LDM0Njc1LDM0NjQ4LDM0NjQ0LDM0NjUxLDM0NjQyLDM0NjU3LDM0NjUwLDM0NjQxLDM0NjU0LDM0NjY5LDM0NjY2LDM0NjQwLDM0NjM4LDM0NjU1LDM0NjUzLDM0NjcxLDM0NjY4LDM0NjgyLDM0NjcwLDM0NjUyLDM0NjYxLDM0NjM5LDM0NjgzLDM0Njc3LDM0NjU4LDM0NjYzLDM0NjY1LDM0OTA2LDM1MDc3LDM1MDg0LDM1MDkyLDM1MDgzLDM1MDk1LDM1MDk2LDM1MDk3LDM1MDc4LDM1MDk0LDM1MDg5LDM1MDg2LDM1MDgxLDM1MjM0LDM1MjM2LDM1MjM1LDM1MzA5LDM1MzEyLDM1MzA4LDM1NTM1LDM1NTI2LDM1NTEyLDM1NTM5LDM1NTM3LDM1NTQwLDM1NTQxLDM1NTE1LDM1NTQzLDM1NTE4LDM1NTIwLDM1NTI1LDM1NTQ0LDM1NTIzLDM1NTE0LDM1NTE3LDM1NTQ1LDM1OTAyLDM1OTE3LDM1OTgzLDM2MDY5LDM2MDYzLDM2MDU3LDM2MDcyLDM2MDU4LDM2MDYxLDM2MDcxLDM2MjU2LDM2MjUyLDM2MjU3LDM2MjUxLDM2Mzg0LDM2Mzg3LDM2Mzg5LDM2Mzg4LDM2Mzk4LDM2MzczLDM2Mzc5LDM2Mzc0LDM2MzY5LDM2Mzc3LDM2MzkwLDM2MzkxLDM2MzcyLDM2MzcwLDM2Mzc2LDM2MzcxLDM2MzgwLDM2Mzc1LDM2Mzc4LDM2NjUyLDM2NjQ0LDM2NjMyLDM2NjM0LDM2NjQwLDM2NjQzLDM2NjMwLDM2NjMxLDM2OTc5LDM2OTc2LDM2OTc1LDM2OTY3LDM2OTcxLDM3MTY3LDM3MTYzLDM3MTYxLDM3MTYyLDM3MTcwLDM3MTU4LDM3MTY2LDM3MjUzLDM3MjU0LDM3MjU4LDM3MjQ5LDM3MjUwLDM3MjUyLDM3MjQ4LDM3NTg0LDM3NTcxLDM3NTcyLDM3NTY4LDM3NTkzLDM3NTU4LDM3NTgzLDM3NjE3LDM3NTk5LDM3NTkyLDM3NjA5LDM3NTkxLDM3NTk3LDM3NTgwLDM3NjE1LDM3NTcwLDM3NjA4LDM3NTc4LDM3NTc2LDM3NTgyLDM3NjA2LDM3NTgxLDM3NTg5LDM3NTc3LDM3NjAwLDM3NTk4LDM3NjA3LDM3NTg1LDM3NTg3LDM3NTU3LDM3NjAxLDM3NTc0LDM3NTU2LDM4MjY4LDM4MzE2LDM4MzE1LDM4MzE4LDM4MzIwLDM4NTY0LDM4NTYyLDM4NjExLDM4NjYxLDM4NjY0LDM4NjU4LDM4NzQ2LDM4Nzk0LDM4Nzk4LDM4NzkyLDM4ODY0LDM4ODYzLDM4OTQyLDM4OTQxLDM4OTUwLDM4OTUzLDM4OTUyLDM4OTQ0LDM4OTM5LDM4OTUxLDM5MDkwLDM5MTc2LDM5MTYyLDM5MTg1LDM5MTg4LDM5MTkwLDM5MTkxLDM5MTg5LDM5Mzg4LDM5MzczLDM5Mzc1LDM5Mzc5LDM5MzgwLDM5Mzc0LDM5MzY5LDM5MzgyLDM5Mzg0LDM5MzcxLDM5MzgzLDM5MzcyLDM5NjAzLDM5NjYwLDM5NjU5LDM5NjY3LDM5NjY2LDM5NjY1LDM5NzUwLDM5NzQ3LDM5NzgzLDM5Nzk2LDM5NzkzLDM5NzgyLDM5Nzk4LDM5Nzk3LDM5NzkyLDM5Nzg0LDM5NzgwLDM5Nzg4LDQwMTg4LDQwMTg2LDQwMTg5LDQwMTkxLDQwMTgzLDQwMTk5LDQwMTkyLDQwMTg1LDQwMTg3LDQwMjAwLDQwMTk3LDQwMTk2LDQwNTc5LDQwNjU5LDQwNzE5LDQwNzIwLDIwNzY0LDIwNzU1LDIwNzU5LDIwNzYyLDIwNzUzLDIwOTU4LDIxMzAwLDIxNDczLDIyMTI4LDIyMTEyLDIyMTI2LDIyMTMxLDIyMTE4LDIyMTE1LDIyMTI1LDIyMTMwLDIyMTEwLDIyMTM1LDIyMzAwLDIyMjk5LDIyNzI4LDIyNzE3LDIyNzI5LDIyNzE5LDIyNzE0LDIyNzIyLDIyNzE2LDIyNzI2LDIzMzE5LDIzMzIxLDIzMzIzLDIzMzI5LDIzMzE2LDIzMzE1LDIzMzEyLDIzMzE4LDIzMzM2LDIzMzIyLDIzMzI4LDIzMzI2LDIzNTM1LDIzOTgwLDIzOTg1LDIzOTc3LDIzOTc1LDIzOTg5LDIzOTg0LDIzOTgyLDIzOTc4LDIzOTc2LDIzOTg2LDIzOTgxLDIzOTgzLDIzOTg4LDI0MTY3LDI0MTY4LDI0MTY2LDI0MTc1LDI0Mjk3LDI0Mjk1LDI0Mjk0LDI0Mjk2LDI0MjkzLDI0Mzk1LDI0NTA4LDI0OTg5LDI1MDAwLDI0OTgyLDI1MDI5LDI1MDEyLDI1MDMwLDI1MDI1LDI1MDM2LDI1MDE4LDI1MDIzLDI1MDE2LDI0OTcyLDI1ODE1LDI1ODE0LDI1ODA4LDI1ODA3LDI1ODAxLDI1Nzg5LDI1NzM3LDI1Nzk1LDI1ODE5LDI1ODQzLDI1ODE3LDI1OTA3LDI1OTgzLDI1OTgwLDI2MDE4LDI2MzEyLDI2MzAyLDI2MzA0LDI2MzE0LDI2MzE1LDI2MzE5LDI2MzAxLDI2Mjk5LDI2Mjk4LDI2MzE2LDI2NDAzLDI3MTg4LDI3MjM4LDI3MjA5LDI3MjM5LDI3MTg2LDI3MjQwLDI3MTk4LDI3MjI5LDI3MjQ1LDI3MjU0LDI3MjI3LDI3MjE3LDI3MTc2LDI3MjI2LDI3MTk1LDI3MTk5LDI3MjAxLDI3MjQyLDI3MjM2LDI3MjE2LDI3MjE1LDI3MjIwLDI3MjQ3LDI3MjQxLDI3MjMyLDI3MTk2LDI3MjMwLDI3MjIyLDI3MjIxLDI3MjEzLDI3MjE0LDI3MjA2LDI3NDc3LDI3NDc2LDI3NDc4LDI3NTU5LDI3NTYyLDI3NTYzLDI3NTkyLDI3NTkxLDI3NjUyLDI3NjUxLDI3NjU0LDI4NTg5LDI4NjE5LDI4NTc5LDI4NjE1LDI4NjA0LDI4NjIyLDI4NjE2LDI4NTEwLDI4NjEyLDI4NjA1LDI4NTc0LDI4NjE4LDI4NTg0LDI4Njc2LDI4NTgxLDI4NTkwLDI4NjAyLDI4NTg4LDI4NTg2LDI4NjIzLDI4NjA3LDI4NjAwLDI4NTc4LDI4NjE3LDI4NTg3LDI4NjIxLDI4NTkxLDI4NTk0LDI4NTkyLDI5MTI1LDI5MTIyLDI5MTE5LDI5MTEyLDI5MTQyLDI5MTIwLDI5MTIxLDI5MTMxLDI5MTQwLDI5MTMwLDI5MTI3LDI5MTM1LDI5MTE3LDI5MTQ0LDI5MTE2LDI5MTI2LDI5MTQ2LDI5MTQ3LDI5MzQxLDI5MzQyLDI5NTQ1LDI5NTQyLDI5NTQzLDI5NTQ4LDI5NTQxLDI5NTQ3LDI5NTQ2LDI5ODIzLDI5ODUwLDI5ODU2LDI5ODQ0LDI5ODQyLDI5ODQ1LDI5ODU3LDI5OTYzLDMwMDgwLDMwMjU1LDMwMjUzLDMwMjU3LDMwMjY5LDMwMjU5LDMwMjY4LDMwMjYxLDMwMjU4LDMwMjU2LDMwMzk1LDMwNDM4LDMwNjE4LDMwNjIxLDMwNjI1LDMwNjIwLDMwNjE5LDMwNjI2LDMwNjI3LDMwNjEzLDMwNjE3LDMwNjE1LDMwOTQxLDMwOTUzLDMwOTQ5LDMwOTU0LDMwOTQyLDMwOTQ3LDMwOTM5LDMwOTQ1LDMwOTQ2LDMwOTU3LDMwOTQzLDMwOTQ0LDMxMTQwLDMxMzAwLDMxMzA0LDMxMzAzLDMxNDE0LDMxNDE2LDMxNDEzLDMxNDA5LDMxNDE1LDMxNzEwLDMxNzE1LDMxNzE5LDMxNzA5LDMxNzAxLDMxNzE3LDMxNzA2LDMxNzIwLDMxNzM3LDMxNzAwLDMxNzIyLDMxNzE0LDMxNzA4LDMxNzIzLDMxNzA0LDMxNzExLDMxOTU0LDMxOTU2LDMxOTU5LDMxOTUyLDMxOTUzLDMyMjc0LDMyMjg5LDMyMjc5LDMyMjY4LDMyMjg3LDMyMjg4LDMyMjc1LDMyMjcwLDMyMjg0LDMyMjc3LDMyMjgyLDMyMjkwLDMyMjY3LDMyMjcxLDMyMjc4LDMyMjY5LDMyMjc2LDMyMjkzLDMyMjkyLDMyNTc5LDMyNjM1LDMyNjM2LDMyNjM0LDMyNjg5LDMyNzUxLDMyODEwLDMyODA5LDMyODc2LDMzMjAxLDMzMTkwLDMzMTk4LDMzMjA5LDMzMjA1LDMzMTk1LDMzMjAwLDMzMTk2LDMzMjA0LDMzMjAyLDMzMjA3LDMzMTkxLDMzMjY2LDMzMzY1LDMzMzY2LDMzMzY3LDM0MTM0LDM0MTE3LDM0MTU1LDM0MTI1LDM0MTMxLDM0MTQ1LDM0MTM2LDM0MTEyLDM0MTE4LDM0MTQ4LDM0MTEzLDM0MTQ2LDM0MTE2LDM0MTI5LDM0MTE5LDM0MTQ3LDM0MTEwLDM0MTM5LDM0MTYxLDM0MTI2LDM0MTU4LDM0MTY1LDM0MTMzLDM0MTUxLDM0MTQ0LDM0MTg4LDM0MTUwLDM0MTQxLDM0MTMyLDM0MTQ5LDM0MTU2LDM0NDAzLDM0NDA1LDM0NDA0LDM0NzE1LDM0NzAzLDM0NzExLDM0NzA3LDM0NzA2LDM0Njk2LDM0Njg5LDM0NzEwLDM0NzEyLDM0NjgxLDM0Njk1LDM0NzIzLDM0NjkzLDM0NzA0LDM0NzA1LDM0NzE3LDM0NjkyLDM0NzA4LDM0NzE2LDM0NzE0LDM0Njk3LDM1MTAyLDM1MTEwLDM1MTIwLDM1MTE3LDM1MTE4LDM1MTExLDM1MTIxLDM1MTA2LDM1MTEzLDM1MTA3LDM1MTE5LDM1MTE2LDM1MTAzLDM1MzEzLDM1NTUyLDM1NTU0LDM1NTcwLDM1NTcyLDM1NTczLDM1NTQ5LDM1NjA0LDM1NTU2LDM1NTUxLDM1NTY4LDM1NTI4LDM1NTUwLDM1NTUzLDM1NTYwLDM1NTgzLDM1NTY3LDM1NTc5LDM1OTg1LDM1OTg2LDM1OTg0LDM2MDg1LDM2MDc4LDM2MDgxLDM2MDgwLDM2MDgzLDM2MjA0LDM2MjA2LDM2MjYxLDM2MjYzLDM2NDAzLDM2NDE0LDM2NDA4LDM2NDE2LDM2NDIxLDM2NDA2LDM2NDEyLDM2NDEzLDM2NDE3LDM2NDAwLDM2NDE1LDM2NTQxLDM2NjYyLDM2NjU0LDM2NjYxLDM2NjU4LDM2NjY1LDM2NjYzLDM2NjYwLDM2OTgyLDM2OTg1LDM2OTg3LDM2OTk4LDM3MTE0LDM3MTcxLDM3MTczLDM3MTc0LDM3MjY3LDM3MjY0LDM3MjY1LDM3MjYxLDM3MjYzLDM3NjcxLDM3NjYyLDM3NjQwLDM3NjYzLDM3NjM4LDM3NjQ3LDM3NzU0LDM3Njg4LDM3NjkyLDM3NjU5LDM3NjY3LDM3NjUwLDM3NjMzLDM3NzAyLDM3Njc3LDM3NjQ2LDM3NjQ1LDM3NTc5LDM3NjYxLDM3NjI2LDM3NjY5LDM3NjUxLDM3NjI1LDM3NjIzLDM3Njg0LDM3NjM0LDM3NjY4LDM3NjMxLDM3NjczLDM3Njg5LDM3Njg1LDM3Njc0LDM3NjUyLDM3NjQ0LDM3NjQzLDM3NjMwLDM3NjQxLDM3NjMyLDM3NjI3LDM3NjU0LDM4MzMyLDM4MzQ5LDM4MzM0LDM4MzI5LDM4MzMwLDM4MzI2LDM4MzM1LDM4MzI1LDM4MzMzLDM4NTY5LDM4NjEyLDM4NjY3LDM4Njc0LDM4NjcyLDM4ODA5LDM4ODA3LDM4ODA0LDM4ODk2LDM4OTA0LDM4OTY1LDM4OTU5LDM4OTYyLDM5MjA0LDM5MTk5LDM5MjA3LDM5MjA5LDM5MzI2LDM5NDA2LDM5NDA0LDM5Mzk3LDM5Mzk2LDM5NDA4LDM5Mzk1LDM5NDAyLDM5NDAxLDM5Mzk5LDM5NjA5LDM5NjE1LDM5NjA0LDM5NjExLDM5NjcwLDM5Njc0LDM5NjczLDM5NjcxLDM5NzMxLDM5ODA4LDM5ODEzLDM5ODE1LDM5ODA0LDM5ODA2LDM5ODAzLDM5ODEwLDM5ODI3LDM5ODI2LDM5ODI0LDM5ODAyLDM5ODI5LDM5ODA1LDM5ODE2LDQwMjI5LDQwMjE1LDQwMjI0LDQwMjIyLDQwMjEyLDQwMjMzLDQwMjIxLDQwMjE2LDQwMjI2LDQwMjA4LDQwMjE3LDQwMjIzLDQwNTg0LDQwNTgyLDQwNTgzLDQwNjIyLDQwNjIxLDQwNjYxLDQwNjYyLDQwNjk4LDQwNzIyLDQwNzY1LDIwNzc0LDIwNzczLDIwNzcwLDIwNzcyLDIwNzY4LDIwNzc3LDIxMjM2LDIyMTYzLDIyMTU2LDIyMTU3LDIyMTUwLDIyMTQ4LDIyMTQ3LDIyMTQyLDIyMTQ2LDIyMTQzLDIyMTQ1LDIyNzQyLDIyNzQwLDIyNzM1LDIyNzM4LDIzMzQxLDIzMzMzLDIzMzQ2LDIzMzMxLDIzMzQwLDIzMzM1LDIzMzM0LDIzMzQzLDIzMzQyLDIzNDE5LDIzNTM3LDIzNTM4LDIzOTkxLDI0MTcyLDI0MTcwLDI0NTEwLDI0NTA3LDI1MDI3LDI1MDEzLDI1MDIwLDI1MDYzLDI1MDU2LDI1MDYxLDI1MDYwLDI1MDY0LDI1MDU0LDI1ODM5LDI1ODMzLDI1ODI3LDI1ODM1LDI1ODI4LDI1ODMyLDI1OTg1LDI1OTg0LDI2MDM4LDI2MDc0LDI2MzIyLDI3Mjc3LDI3Mjg2LDI3MjY1LDI3MzAxLDI3MjczLDI3Mjk1LDI3MjkxLDI3Mjk3LDI3Mjk0LDI3MjcxLDI3MjgzLDI3Mjc4LDI3Mjg1LDI3MjY3LDI3MzA0LDI3MzAwLDI3MjgxLDI3MjYzLDI3MzAyLDI3MjkwLDI3MjY5LDI3Mjc2LDI3MjgyLDI3NDgzLDI3NTY1LDI3NjU3LDI4NjIwLDI4NTg1LDI4NjYwLDI4NjI4LDI4NjQzLDI4NjM2LDI4NjUzLDI4NjQ3LDI4NjQ2LDI4NjM4LDI4NjU4LDI4NjM3LDI4NjQyLDI4NjQ4LDI5MTUzLDI5MTY5LDI5MTYwLDI5MTcwLDI5MTU2LDI5MTY4LDI5MTU0LDI5NTU1LDI5NTUwLDI5NTUxLDI5ODQ3LDI5ODc0LDI5ODY3LDI5ODQwLDI5ODY2LDI5ODY5LDI5ODczLDI5ODYxLDI5ODcxLDI5OTY4LDI5OTY5LDI5OTcwLDI5OTY3LDMwMDg0LDMwMjc1LDMwMjgwLDMwMjgxLDMwMjc5LDMwMzcyLDMwNDQxLDMwNjQ1LDMwNjM1LDMwNjQyLDMwNjQ3LDMwNjQ2LDMwNjQ0LDMwNjQxLDMwNjMyLDMwNzA0LDMwOTYzLDMwOTczLDMwOTc4LDMwOTcxLDMwOTcyLDMwOTYyLDMwOTgxLDMwOTY5LDMwOTc0LDMwOTgwLDMxMTQ3LDMxMTQ0LDMxMzI0LDMxMzIzLDMxMzE4LDMxMzIwLDMxMzE2LDMxMzIyLDMxNDIyLDMxNDI0LDMxNDI1LDMxNzQ5LDMxNzU5LDMxNzMwLDMxNzQ0LDMxNzQzLDMxNzM5LDMxNzU4LDMxNzMyLDMxNzU1LDMxNzMxLDMxNzQ2LDMxNzUzLDMxNzQ3LDMxNzQ1LDMxNzM2LDMxNzQxLDMxNzUwLDMxNzI4LDMxNzI5LDMxNzYwLDMxNzU0LDMxOTc2LDMyMzAxLDMyMzE2LDMyMzIyLDMyMzA3LDM4OTg0LDMyMzEyLDMyMjk4LDMyMzI5LDMyMzIwLDMyMzI3LDMyMjk3LDMyMzMyLDMyMzA0LDMyMzE1LDMyMzEwLDMyMzI0LDMyMzE0LDMyNTgxLDMyNjM5LDMyNjM4LDMyNjM3LDMyNzU2LDMyNzU0LDMyODEyLDMzMjExLDMzMjIwLDMzMjI4LDMzMjI2LDMzMjIxLDMzMjIzLDMzMjEyLDMzMjU3LDMzMzcxLDMzMzcwLDMzMzcyLDM0MTc5LDM0MTc2LDM0MTkxLDM0MjE1LDM0MTk3LDM0MjA4LDM0MTg3LDM0MjExLDM0MTcxLDM0MjEyLDM0MjAyLDM0MjA2LDM0MTY3LDM0MTcyLDM0MTg1LDM0MjA5LDM0MTcwLDM0MTY4LDM0MTM1LDM0MTkwLDM0MTk4LDM0MTgyLDM0MTg5LDM0MjAxLDM0MjA1LDM0MTc3LDM0MjEwLDM0MTc4LDM0MTg0LDM0MTgxLDM0MTY5LDM0MTY2LDM0MjAwLDM0MTkyLDM0MjA3LDM0NDA4LDM0NzUwLDM0NzMwLDM0NzMzLDM0NzU3LDM0NzM2LDM0NzMyLDM0NzQ1LDM0NzQxLDM0NzQ4LDM0NzM0LDM0NzYxLDM0NzU1LDM0NzU0LDM0NzY0LDM0NzQzLDM0NzM1LDM0NzU2LDM0NzYyLDM0NzQwLDM0NzQyLDM0NzUxLDM0NzQ0LDM0NzQ5LDM0NzgyLDM0NzM4LDM1MTI1LDM1MTIzLDM1MTMyLDM1MTM0LDM1MTM3LDM1MTU0LDM1MTI3LDM1MTM4LDM1MjQ1LDM1MjQ3LDM1MjQ2LDM1MzE0LDM1MzE1LDM1NjE0LDM1NjA4LDM1NjA2LDM1NjAxLDM1NTg5LDM1NTk1LDM1NjE4LDM1NTk5LDM1NjAyLDM1NjA1LDM1NTkxLDM1NTk3LDM1NTkyLDM1NTkwLDM1NjEyLDM1NjAzLDM1NjEwLDM1OTE5LDM1OTUyLDM1OTU0LDM1OTUzLDM1OTUxLDM1OTg5LDM1OTg4LDM2MDg5LDM2MjA3LDM2NDMwLDM2NDI5LDM2NDM1LDM2NDMyLDM2NDI4LDM2NDIzLDM2Njc1LDM2NjcyLDM2OTk3LDM2OTkwLDM3MTc2LDM3Mjc0LDM3MjgyLDM3Mjc1LDM3MjczLDM3Mjc5LDM3MjgxLDM3Mjc3LDM3MjgwLDM3NzkzLDM3NzYzLDM3ODA3LDM3NzMyLDM3NzE4LDM3NzAzLDM3NzU2LDM3NzIwLDM3NzI0LDM3NzUwLDM3NzA1LDM3NzEyLDM3NzEzLDM3NzI4LDM3NzQxLDM3Nzc1LDM3NzA4LDM3NzM4LDM3NzUzLDM3NzE5LDM3NzE3LDM3NzE0LDM3NzExLDM3NzQ1LDM3NzUxLDM3NzU1LDM3NzI5LDM3NzI2LDM3NzMxLDM3NzM1LDM3NzYwLDM3NzEwLDM3NzIxLDM4MzQzLDM4MzM2LDM4MzQ1LDM4MzM5LDM4MzQxLDM4MzI3LDM4NTc0LDM4NTc2LDM4NTcyLDM4Njg4LDM4Njg3LDM4NjgwLDM4Njg1LDM4NjgxLDM4ODEwLDM4ODE3LDM4ODEyLDM4ODE0LDM4ODEzLDM4ODY5LDM4ODY4LDM4ODk3LDM4OTc3LDM4OTgwLDM4OTg2LDM4OTg1LDM4OTgxLDM4OTc5LDM5MjA1LDM5MjExLDM5MjEyLDM5MjEwLDM5MjE5LDM5MjE4LDM5MjE1LDM5MjEzLDM5MjE3LDM5MjE2LDM5MzIwLDM5MzMxLDM5MzI5LDM5NDI2LDM5NDE4LDM5NDEyLDM5NDE1LDM5NDE3LDM5NDE2LDM5NDE0LDM5NDE5LDM5NDIxLDM5NDIyLDM5NDIwLDM5NDI3LDM5NjE0LDM5Njc4LDM5Njc3LDM5NjgxLDM5Njc2LDM5NzUyLDM5ODM0LDM5ODQ4LDM5ODM4LDM5ODM1LDM5ODQ2LDM5ODQxLDM5ODQ1LDM5ODQ0LDM5ODE0LDM5ODQyLDM5ODQwLDM5ODU1LDQwMjQzLDQwMjU3LDQwMjk1LDQwMjQ2LDQwMjM4LDQwMjM5LDQwMjQxLDQwMjQ4LDQwMjQwLDQwMjYxLDQwMjU4LDQwMjU5LDQwMjU0LDQwMjQ3LDQwMjU2LDQwMjUzLDMyNzU3LDQwMjM3LDQwNTg2LDQwNTg1LDQwNTg5LDQwNjI0LDQwNjQ4LDQwNjY2LDQwNjk5LDQwNzAzLDQwNzQwLDQwNzM5LDQwNzM4LDQwNzg4LDQwODY0LDIwNzg1LDIwNzgxLDIwNzgyLDIyMTY4LDIyMTcyLDIyMTY3LDIyMTcwLDIyMTczLDIyMTY5LDIyODk2LDIzMzU2LDIzNjU3LDIzNjU4LDI0MDAwLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDczLDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcyLDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkxLDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMxMTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMxNzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMxNzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMyLDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQzLDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUzLDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMyLDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODczLDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkzLDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcxLDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIyNzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIzMzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMwNjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAzLDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcyLDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIyLDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgxLDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUwLDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUxLDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUyLDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQwMzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIzLDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMxMTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMxODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMyMzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMxLDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEwLDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDQwMDAwLDM5OTQzLDM5OTUwLDM5OTQyLDM5OTU5LDM5OTU2LDM5OTQ1LDQwMzUxLDQwMzQ1LDQwMzU2LDQwMzQ5LDQwMzM4LDQwMzQ0LDQwMzM2LDQwMzQ3LDQwMzUyLDQwMzQwLDQwMzQ4LDQwMzYyLDQwMzQzLDQwMzUzLDQwMzQ2LDQwMzU0LDQwMzYwLDQwMzUwLDQwMzU1LDQwMzgzLDQwMzYxLDQwMzQyLDQwMzU4LDQwMzU5LDQwNjAxLDQwNjAzLDQwNjAyLDQwNjc3LDQwNjc2LDQwNjc5LDQwNjc4LDQwNzUyLDQwNzUwLDQwNzk1LDQwODAwLDQwNzk4LDQwNzk3LDQwNzkzLDQwODQ5LDIwNzk0LDIwNzkzLDIxMTQ0LDIxMTQzLDIyMjExLDIyMjA1LDIyMjA2LDIzMzY4LDIzMzY3LDI0MDExLDI0MDE1LDI0MzA1LDI1MDg1LDI1ODgzLDI3Mzk0LDI3Mzg4LDI3Mzk1LDI3Mzg0LDI3MzkyLDI4NzM5LDI4NzQwLDI4NzQ2LDI4NzQ0LDI4NzQ1LDI4NzQxLDI4NzQyLDI5MjEzLDI5MjEwLDI5MjA5LDI5NTY2LDI5OTc1LDMwMzE0LDMwNjcyLDMxMDIxLDMxMDI1LDMxMDIzLDMxODI4LDMxODI3LDMxOTg2LDMyMzk0LDMyMzkxLDMyMzkyLDMyMzk1LDMyMzkwLDMyMzk3LDMyNTg5LDMyNjk5LDMyODE2LDMzMjQ1LDM0MzI4LDM0MzQ2LDM0MzQyLDM0MzM1LDM0MzM5LDM0MzMyLDM0MzI5LDM0MzQzLDM0MzUwLDM0MzM3LDM0MzM2LDM0MzQ1LDM0MzM0LDM0MzQxLDM0ODU3LDM0ODQ1LDM0ODQzLDM0ODQ4LDM0ODUyLDM0ODQ0LDM0ODU5LDM0ODkwLDM1MTgxLDM1MTc3LDM1MTgyLDM1MTc5LDM1MzIyLDM1NzA1LDM1NzA0LDM1NjUzLDM1NzA2LDM1NzA3LDM2MTEyLDM2MTE2LDM2MjcxLDM2NDk0LDM2NDkyLDM2NzAyLDM2Njk5LDM2NzAxLDM3MTkwLDM3MTg4LDM3MTg5LDM3MzA1LDM3OTUxLDM3OTQ3LDM3OTQyLDM3OTI5LDM3OTQ5LDM3OTQ4LDM3OTM2LDM3OTQ1LDM3OTMwLDM3OTQzLDM3OTMyLDM3OTUyLDM3OTM3LDM4MzczLDM4MzcyLDM4MzcxLDM4NzA5LDM4NzE0LDM4ODQ3LDM4ODgxLDM5MDEyLDM5MTEzLDM5MTEwLDM5MTA0LDM5MjU2LDM5MjU0LDM5NDgxLDM5NDg1LDM5NDk0LDM5NDkyLDM5NDkwLDM5NDg5LDM5NDgyLDM5NDg3LDM5NjI5LDM5NzAxLDM5NzAzLDM5NzA0LDM5NzAyLDM5NzM4LDM5NzYyLDM5OTc5LDM5OTY1LDM5OTY0LDM5OTgwLDM5OTcxLDM5OTc2LDM5OTc3LDM5OTcyLDM5OTY5LDQwMzc1LDQwMzc0LDQwMzgwLDQwMzg1LDQwMzkxLDQwMzk0LDQwMzk5LDQwMzgyLDQwMzg5LDQwMzg3LDQwMzc5LDQwMzczLDQwMzk4LDQwMzc3LDQwMzc4LDQwMzY0LDQwMzkyLDQwMzY5LDQwMzY1LDQwMzk2LDQwMzcxLDQwMzk3LDQwMzcwLDQwNTcwLDQwNjA0LDQwNjgzLDQwNjg2LDQwNjg1LDQwNzMxLDQwNzI4LDQwNzMwLDQwNzUzLDQwNzgyLDQwODA1LDQwODA0LDQwODUwLDIwMTUzLDIyMjE0LDIyMjEzLDIyMjE5LDIyODk3LDIzMzcxLDIzMzcyLDI0MDIxLDI0MDE3LDI0MzA2LDI1ODg5LDI1ODg4LDI1ODk0LDI1ODkwLDI3NDAzLDI3NDAwLDI3NDAxLDI3NjYxLDI4NzU3LDI4NzU4LDI4NzU5LDI4NzU0LDI5MjE0LDI5MjE1LDI5MzUzLDI5NTY3LDI5OTEyLDI5OTA5LDI5OTEzLDI5OTExLDMwMzE3LDMwMzgxLDMxMDI5LDMxMTU2LDMxMzQ0LDMxMzQ1LDMxODMxLDMxODM2LDMxODMzLDMxODM1LDMxODM0LDMxOTg4LDMxOTg1LDMyNDAxLDMyNTkxLDMyNjQ3LDMzMjQ2LDMzMzg3LDM0MzU2LDM0MzU3LDM0MzU1LDM0MzQ4LDM0MzU0LDM0MzU4LDM0ODYwLDM0ODU2LDM0ODU0LDM0ODU4LDM0ODUzLDM1MTg1LDM1MjYzLDM1MjYyLDM1MzIzLDM1NzEwLDM1NzE2LDM1NzE0LDM1NzE4LDM1NzE3LDM1NzExLDM2MTE3LDM2NTAxLDM2NTAwLDM2NTA2LDM2NDk4LDM2NDk2LDM2NTAyLDM2NTAzLDM2NzA0LDM2NzA2LDM3MTkxLDM3OTY0LDM3OTY4LDM3OTYyLDM3OTYzLDM3OTY3LDM3OTU5LDM3OTU3LDM3OTYwLDM3OTYxLDM3OTU4LDM4NzE5LDM4ODgzLDM5MDE4LDM5MDE3LDM5MTE1LDM5MjUyLDM5MjU5LDM5NTAyLDM5NTA3LDM5NTA4LDM5NTAwLDM5NTAzLDM5NDk2LDM5NDk4LDM5NDk3LDM5NTA2LDM5NTA0LDM5NjMyLDM5NzA1LDM5NzIzLDM5NzM5LDM5NzY2LDM5NzY1LDQwMDA2LDQwMDA4LDM5OTk5LDQwMDA0LDM5OTkzLDM5OTg3LDQwMDAxLDM5OTk2LDM5OTkxLDM5OTg4LDM5OTg2LDM5OTk3LDM5OTkwLDQwNDExLDQwNDAyLDQwNDE0LDQwNDEwLDQwMzk1LDQwNDAwLDQwNDEyLDQwNDAxLDQwNDE1LDQwNDI1LDQwNDA5LDQwNDA4LDQwNDA2LDQwNDM3LDQwNDA1LDQwNDEzLDQwNjMwLDQwNjg4LDQwNzU3LDQwNzU1LDQwNzU0LDQwNzcwLDQwODExLDQwODUzLDQwODY2LDIwNzk3LDIxMTQ1LDIyNzYwLDIyNzU5LDIyODk4LDIzMzczLDI0MDI0LDM0ODYzLDI0Mzk5LDI1MDg5LDI1MDkxLDI1MDkyLDI1ODk3LDI1ODkzLDI2MDA2LDI2MzQ3LDI3NDA5LDI3NDEwLDI3NDA3LDI3NTk0LDI4NzYzLDI4NzYyLDI5MjE4LDI5NTcwLDI5NTY5LDI5NTcxLDMwMzIwLDMwNjc2LDMxODQ3LDMxODQ2LDMyNDA1LDMzMzg4LDM0MzYyLDM0MzY4LDM0MzYxLDM0MzY0LDM0MzUzLDM0MzYzLDM0MzY2LDM0ODY0LDM0ODY2LDM0ODYyLDM0ODY3LDM1MTkwLDM1MTg4LDM1MTg3LDM1MzI2LDM1NzI0LDM1NzI2LDM1NzIzLDM1NzIwLDM1OTA5LDM2MTIxLDM2NTA0LDM2NzA4LDM2NzA3LDM3MzA4LDM3OTg2LDM3OTczLDM3OTgxLDM3OTc1LDM3OTgyLDM4ODUyLDM4ODUzLDM4OTEyLDM5NTEwLDM5NTEzLDM5NzEwLDM5NzExLDM5NzEyLDQwMDE4LDQwMDI0LDQwMDE2LDQwMDEwLDQwMDEzLDQwMDExLDQwMDIxLDQwMDI1LDQwMDEyLDQwMDE0LDQwNDQzLDQwNDM5LDQwNDMxLDQwNDE5LDQwNDI3LDQwNDQwLDQwNDIwLDQwNDM4LDQwNDE3LDQwNDMwLDQwNDIyLDQwNDM0LDQwNDMyLDQwNDE4LDQwNDI4LDQwNDM2LDQwNDM1LDQwNDI0LDQwNDI5LDQwNjQyLDQwNjU2LDQwNjkwLDQwNjkxLDQwNzEwLDQwNzMyLDQwNzYwLDQwNzU5LDQwNzU4LDQwNzcxLDQwNzgzLDQwODE3LDQwODE2LDQwODE0LDQwODE1LDIyMjI3LDIyMjIxLDIzMzc0LDIzNjYxLDI1OTAxLDI2MzQ5LDI2MzUwLDI3NDExLDI4NzY3LDI4NzY5LDI4NzY1LDI4NzY4LDI5MjE5LDI5OTE1LDI5OTI1LDMwNjc3LDMxMDMyLDMxMTU5LDMxMTU4LDMxODUwLDMyNDA3LDMyNjQ5LDMzMzg5LDM0MzcxLDM0ODcyLDM0ODcxLDM0ODY5LDM0ODkxLDM1NzMyLDM1NzMzLDM2NTEwLDM2NTExLDM2NTEyLDM2NTA5LDM3MzEwLDM3MzA5LDM3MzE0LDM3OTk1LDM3OTkyLDM3OTkzLDM4NjI5LDM4NzI2LDM4NzIzLDM4NzI3LDM4ODU1LDM4ODg1LDM5NTE4LDM5NjM3LDM5NzY5LDQwMDM1LDQwMDM5LDQwMDM4LDQwMDM0LDQwMDMwLDQwMDMyLDQwNDUwLDQwNDQ2LDQwNDU1LDQwNDUxLDQwNDU0LDQwNDUzLDQwNDQ4LDQwNDQ5LDQwNDU3LDQwNDQ3LDQwNDQ1LDQwNDUyLDQwNjA4LDQwNzM0LDQwNzc0LDQwODIwLDQwODIxLDQwODIyLDIyMjI4LDI1OTAyLDI2MDQwLDI3NDE2LDI3NDE3LDI3NDE1LDI3NDE4LDI4NzcwLDI5MjIyLDI5MzU0LDMwNjgwLDMwNjgxLDMxMDMzLDMxODQ5LDMxODUxLDMxOTkwLDMyNDEwLDMyNDA4LDMyNDExLDMyNDA5LDMzMjQ4LDMzMjQ5LDM0Mzc0LDM0Mzc1LDM0Mzc2LDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk1LDM1MzI3LDM1NzM2LDM1NzM3LDM2NTE3LDM2NTE2LDM2NTE1LDM3OTk4LDM3OTk3LDM3OTk5LDM4MDAxLDM4MDAzLDM4NzI5LDM5MDI2LDM5MjYzLDQwMDQwLDQwMDQ2LDQwMDQ1LDQwNDU5LDQwNDYxLDQwNDY0LDQwNDYzLDQwNDY2LDQwNDY1LDQwNjA5LDQwNjkzLDQwNzEzLDQwNzc1LDQwODI0LDQwODI3LDQwODI2LDQwODI1LDIyMzAyLDI4Nzc0LDMxODU1LDM0ODc2LDM2Mjc0LDM2NTE4LDM3MzE1LDM4MDA0LDM4MDA4LDM4MDA2LDM4MDA1LDM5NTIwLDQwMDUyLDQwMDUxLDQwMDQ5LDQwMDUzLDQwNDY4LDQwNDY3LDQwNjk0LDQwNzE0LDQwODY4LDI4Nzc2LDI4NzczLDMxOTkxLDM0NDEwLDM0ODc4LDM0ODc3LDM0ODc5LDM1NzQyLDM1OTk2LDM2NTIxLDM2NTUzLDM4NzMxLDM5MDI3LDM5MDI4LDM5MTE2LDM5MjY1LDM5MzM5LDM5NTI0LDM5NTI2LDM5NTI3LDM5NzE2LDQwNDY5LDQwNDcxLDQwNzc2LDI1MDk1LDI3NDIyLDI5MjIzLDM0MzgwLDM2NTIwLDM4MDE4LDM4MDE2LDM4MDE3LDM5NTI5LDM5NTI4LDM5NzI2LDQwNDczLDI5MjI1LDM0Mzc5LDM1NzQzLDM4MDE5LDQwMDU3LDQwNjMxLDMwMzI1LDM5NTMxLDQwMDU4LDQwNDc3LDI4Nzc3LDI4Nzc4LDQwNjEyLDQwODMwLDQwNzc3LDQwODU2LDMwODQ5LDM3NTYxLDM1MDIzLDIyNzE1LDI0NjU4LDMxOTExLDIzMjkwLDk1NTYsOTU3NCw5NTU5LDk1NjgsOTU4MCw5NTcxLDk1NjIsOTU3Nyw5NTY1LDk1NTQsOTU3Miw5NTU3LDk1NjYsOTU3OCw5NTY5LDk1NjAsOTU3NSw5NTYzLDk1NTUsOTU3Myw5NTU4LDk1NjcsOTU3OSw5NTcwLDk1NjEsOTU3Niw5NTY0LDk1NTMsOTU1Miw5NTgxLDk1ODIsOTU4NCw5NTgzLDY1NTE3LDEzMjQyMywzNzU5NSwxMzI1NzUsMTQ3Mzk3LDM0MTI0LDE3MDc3LDI5Njc5LDIwOTE3LDEzODk3LDE0OTgyNiwxNjYzNzIsMzc3MDAsMTM3NjkxLDMzNTE4LDE0NjYzMiwzMDc4MCwyNjQzNiwyNTMxMSwxNDk4MTEsMTY2MzE0LDEzMTc0NCwxNTg2NDMsMTM1OTQxLDIwMzk1LDE0MDUyNSwyMDQ4OCwxNTkwMTcsMTYyNDM2LDE0NDg5NiwxNTAxOTMsMTQwNTYzLDIwNTIxLDEzMTk2NiwyNDQ4NCwxMzE5NjgsMTMxOTExLDI4Mzc5LDEzMjEyNywyMDYwNSwyMDczNywxMzQzNCwyMDc1MCwzOTAyMCwxNDE0NywzMzgxNCwxNDk5MjQsMTMyMjMxLDIwODMyLDE0NDMwOCwyMDg0MiwxMzQxNDMsMTM5NTE2LDEzMTgxMywxNDA1OTIsMTMyNDk0LDE0MzkyMywxMzc2MDMsMjM0MjYsMzQ2ODUsMTMyNTMxLDE0NjU4NSwyMDkxNCwyMDkyMCw0MDI0NCwyMDkzNywyMDk0MywyMDk0NSwxNTU4MCwyMDk0NywxNTAxODIsMjA5MTUsMjA5NjIsMjEzMTQsMjA5NzMsMzM3NDEsMjY5NDIsMTQ1MTk3LDI0NDQzLDIxMDAzLDIxMDMwLDIxMDUyLDIxMTczLDIxMDc5LDIxMTQwLDIxMTc3LDIxMTg5LDMxNzY1LDM0MTE0LDIxMjE2LDM0MzE3LDE1ODQ4MywyMTI1MywxNjY2MjIsMjE4MzMsMjgzNzcsMTQ3MzI4LDEzMzQ2MCwxNDc0MzYsMjEyOTksMjEzMTYsMTM0MTE0LDI3ODUxLDEzNjk5OCwyNjY1MSwyOTY1MywyNDY1MCwxNjA0MiwxNDU0MCwxMzY5MzYsMjkxNDksMTc1NzAsMjEzNTcsMjEzNjQsMTY1NTQ3LDIxMzc0LDIxMzc1LDEzNjU5OCwxMzY3MjMsMzA2OTQsMjEzOTUsMTY2NTU1LDIxNDA4LDIxNDE5LDIxNDIyLDI5NjA3LDE1MzQ1OCwxNjIxNywyOTU5NiwyMTQ0MSwyMTQ0NSwyNzcyMSwyMDA0MSwyMjUyNiwyMTQ2NSwxNTAxOSwxMzQwMzEsMjE0NzIsMTQ3NDM1LDE0Mjc1NSwyMTQ5NCwxMzQyNjMsMjE1MjMsMjg3OTMsMjE4MDMsMjYxOTksMjc5OTUsMjE2MTMsMTU4NTQ3LDEzNDUxNiwyMTg1MywyMTY0NywyMTY2OCwxODM0MiwxMzY5NzMsMTM0ODc3LDE1Nzk2LDEzNDQ3NywxNjYzMzIsMTQwOTUyLDIxODMxLDE5NjkzLDIxNTUxLDI5NzE5LDIxODk0LDIxOTI5LDIyMDIxLDEzNzQzMSwxNDc1MTQsMTc3NDYsMTQ4NTMzLDI2MjkxLDEzNTM0OCwyMjA3MSwyNjMxNywxNDQwMTAsMjYyNzYsMjYyODUsMjIwOTMsMjIwOTUsMzA5NjEsMjIyNTcsMzg3OTEsMjE1MDIsMjIyNzIsMjIyNTUsMjIyNTMsMTY2NzU4LDEzODU5LDEzNTc1OSwyMjM0MiwxNDc4NzcsMjc3NTgsMjg4MTEsMjIzMzgsMTQwMDEsMTU4ODQ2LDIyNTAyLDEzNjIxNCwyMjUzMSwxMzYyNzYsMTQ4MzIzLDIyNTY2LDE1MDUxNywyMjYyMCwyMjY5OCwxMzY2NSwyMjc1MiwyMjc0OCwxMzU3NDAsMjI3NzksMjM1NTEsMjIzMzksMTcyMzY4LDE0ODA4OCwzNzg0MywxMzcyOSwyMjgxNSwyNjc5MCwxNDAxOSwyODI0OSwxMzY3NjYsMjMwNzYsMjE4NDMsMTM2ODUwLDM0MDUzLDIyOTg1LDEzNDQ3OCwxNTg4NDksMTU5MDE4LDEzNzE4MCwyMzAwMSwxMzcyMTEsMTM3MTM4LDE1OTE0MiwyODAxNywxMzcyNTYsMTM2OTE3LDIzMDMzLDE1OTMwMSwyMzIxMSwyMzEzOSwxNDA1NCwxNDk5MjksMjMxNTksMTQwODgsMjMxOTAsMjk3OTcsMjMyNTEsMTU5NjQ5LDE0MDYyOCwxNTc0OSwxMzc0ODksMTQxMzAsMTM2ODg4LDI0MTk1LDIxMjAwLDIzNDE0LDI1OTkyLDIzNDIwLDE2MjMxOCwxNjM4OCwxODUyNSwxMzE1ODgsMjM1MDksMjQ5MjgsMTM3NzgwLDE1NDA2MCwxMzI1MTcsMjM1MzksMjM0NTMsMTk3MjgsMjM1NTcsMTM4MDUyLDIzNTcxLDI5NjQ2LDIzNTcyLDEzODQwNSwxNTg1MDQsMjM2MjUsMTg2NTMsMjM2ODUsMjM3ODUsMjM3OTEsMjM5NDcsMTM4NzQ1LDEzODgwNywyMzgyNCwyMzgzMiwyMzg3OCwxMzg5MTYsMjM3MzgsMjQwMjMsMzM1MzIsMTQzODEsMTQ5NzYxLDEzOTMzNywxMzk2MzUsMzM0MTUsMTQzOTAsMTUyOTgsMjQxMTAsMjcyNzQsMjQxODEsMjQxODYsMTQ4NjY4LDEzNDM1NSwyMTQxNCwyMDE1MSwyNDI3MiwyMTQxNiwxMzcwNzMsMjQwNzMsMjQzMDgsMTY0OTk0LDI0MzEzLDI0MzE1LDE0NDk2LDI0MzE2LDI2Njg2LDM3OTE1LDI0MzMzLDEzMTUyMSwxOTQ3MDgsMTUwNzAsMTg2MDYsMTM1OTk0LDI0Mzc4LDE1NzgzMiwxNDAyNDAsMjQ0MDgsMTQwNDAxLDI0NDE5LDM4ODQ1LDE1OTM0MiwyNDQzNCwzNzY5NiwxNjY0NTQsMjQ0ODcsMjM5OTAsMTU3MTEsMTUyMTQ0LDEzOTExNCwxNTk5OTIsMTQwOTA0LDM3MzM0LDEzMTc0MiwxNjY0NDEsMjQ2MjUsMjYyNDUsMTM3MzM1LDE0NjkxLDE1ODE1LDEzODgxLDIyNDE2LDE0MTIzNiwzMTA4OSwxNTkzNiwyNDczNCwyNDc0MCwyNDc1NSwxNDk4OTAsMTQ5OTAzLDE2MjM4NywyOTg2MCwyMDcwNSwyMzIwMCwyNDkzMiwzMzgyOCwyNDg5OCwxOTQ3MjYsMTU5NDQyLDI0OTYxLDIwOTgwLDEzMjY5NCwyNDk2NywyMzQ2NiwxNDczODMsMTQxNDA3LDI1MDQzLDE2NjgxMywxNzAzMzMsMjUwNDAsMTQ2NDIsMTQxNjk2LDE0MTUwNSwyNDYxMSwyNDkyNCwyNTg4NiwyNTQ4MywxMzEzNTIsMjUyODUsMTM3MDcyLDI1MzAxLDE0Mjg2MSwyNTQ1MiwxNDk5ODMsMTQ4NzEsMjU2NTYsMjU1OTIsMTM2MDc4LDEzNzIxMiwyNTc0NCwyODU1NCwxNDI5MDIsMzg5MzIsMTQ3NTk2LDE1MzM3MywyNTgyNSwyNTgyOSwzODAxMSwxNDk1MCwyNTY1OCwxNDkzNSwyNTkzMywyODQzOCwxNTAwNTYsMTUwMDUxLDI1OTg5LDI1OTY1LDI1OTUxLDE0MzQ4NiwyNjAzNywxNDk4MjQsMTkyNTUsMjYwNjUsMTY2MDAsMTM3MjU3LDI2MDgwLDI2MDgzLDI0NTQzLDE0NDM4NCwyNjEzNiwxNDM4NjMsMTQzODY0LDI2MTgwLDE0Mzc4MCwxNDM3ODEsMjYxODcsMTM0NzczLDI2MjE1LDE1MjAzOCwyNjIyNywyNjIyOCwxMzg4MTMsMTQzOTIxLDE2NTM2NCwxNDM4MTYsMTUyMzM5LDMwNjYxLDE0MTU1OSwzOTMzMiwyNjM3MCwxNDgzODAsMTUwMDQ5LDE1MTQ3LDI3MTMwLDE0NTM0NiwyNjQ2MiwyNjQ3MSwyNjQ2NiwxNDc5MTcsMTY4MTczLDI2NTgzLDE3NjQxLDI2NjU4LDI4MjQwLDM3NDM2LDI2NjI1LDE0NDM1OCwxNTkxMzYsMjY3MTcsMTQ0NDk1LDI3MTA1LDI3MTQ3LDE2NjYyMywyNjk5NSwyNjgxOSwxNDQ4NDUsMjY4ODEsMjY4ODAsMTU2NjYsMTQ4NDksMTQ0OTU2LDE1MjMyLDI2NTQwLDI2OTc3LDE2NjQ3NCwxNzE0OCwyNjkzNCwyNzAzMiwxNTI2NSwxMzIwNDEsMzM2MzUsMjA2MjQsMjcxMjksMTQ0OTg1LDEzOTU2MiwyNzIwNSwxNDUxNTUsMjcyOTMsMTUzNDcsMjY1NDUsMjczMzYsMTY4MzQ4LDE1MzczLDI3NDIxLDEzMzQxMSwyNDc5OCwyNzQ0NSwyNzUwOCwxNDEyNjEsMjgzNDEsMTQ2MTM5LDEzMjAyMSwxMzc1NjAsMTQxNDQsMjE1MzcsMTQ2MjY2LDI3NjE3LDE0NzE5NiwyNzYxMiwyNzcwMywxNDA0MjcsMTQ5NzQ1LDE1ODU0NSwyNzczOCwzMzMxOCwyNzc2OSwxNDY4NzYsMTc2MDUsMTQ2ODc3LDE0Nzg3NiwxNDk3NzIsMTQ5NzYwLDE0NjYzMywxNDA1MywxNTU5NSwxMzQ0NTAsMzk4MTEsMTQzODY1LDE0MDQzMywzMjY1NSwyNjY3OSwxNTkwMTMsMTU5MTM3LDE1OTIxMSwyODA1NCwyNzk5NiwyODI4NCwyODQyMCwxNDk4ODcsMTQ3NTg5LDE1OTM0NiwzNDA5OSwxNTk2MDQsMjA5MzUsMjc4MDQsMjgxODksMzM4MzgsMTY2Njg5LDI4MjA3LDE0Njk5MSwyOTc3OSwxNDczMzAsMzExODAsMjgyMzksMjMxODUsMTQzNDM1LDI4NjY0LDE0MDkzLDI4NTczLDE0Njk5MiwyODQxMCwxMzYzNDMsMTQ3NTE3LDE3NzQ5LDM3ODcyLDI4NDg0LDI4NTA4LDE1Njk0LDI4NTMyLDE2ODMwNCwxNTY3NSwyODU3NSwxNDc3ODAsMjg2MjcsMTQ3NjAxLDE0Nzc5NywxNDc1MTMsMTQ3NDQwLDE0NzM4MCwxNDc3NzUsMjA5NTksMTQ3Nzk4LDE0Nzc5OSwxNDc3NzYsMTU2MTI1LDI4NzQ3LDI4Nzk4LDI4ODM5LDI4ODAxLDI4ODc2LDI4ODg1LDI4ODg2LDI4ODk1LDE2NjQ0LDE1ODQ4LDI5MTA4LDI5MDc4LDE0ODA4NywyODk3MSwyODk5NywyMzE3NiwyOTAwMiwyOTAzOCwyMzcwOCwxNDgzMjUsMjkwMDcsMzc3MzAsMTQ4MTYxLDI4OTcyLDE0ODU3MCwxNTAwNTUsMTUwMDUwLDI5MTE0LDE2Njg4OCwyODg2MSwyOTE5OCwzNzk1NCwyOTIwNSwyMjgwMSwzNzk1NSwyOTIyMCwzNzY5NywxNTMwOTMsMjkyMzAsMjkyNDgsMTQ5ODc2LDI2ODEzLDI5MjY5LDI5MjcxLDE1OTU3LDE0MzQyOCwyNjYzNywyODQ3NywyOTMxNCwyOTQ4MiwyOTQ4MywxNDk1MzksMTY1OTMxLDE4NjY5LDE2NTg5MiwyOTQ4MCwyOTQ4NiwyOTY0NywyOTYxMCwxMzQyMDIsMTU4MjU0LDI5NjQxLDI5NzY5LDE0NzkzOCwxMzY5MzUsMTUwMDUyLDI2MTQ3LDE0MDIxLDE0OTk0MywxNDk5MDEsMTUwMDExLDI5Njg3LDI5NzE3LDI2ODgzLDE1MDA1NCwyOTc1MywxMzI1NDcsMTYwODcsMjk3ODgsMTQxNDg1LDI5NzkyLDE2NzYwMiwyOTc2NywyOTY2OCwyOTgxNCwzMzcyMSwyOTgwNCwxNDEyOCwyOTgxMiwzNzg3MywyNzE4MCwyOTgyNiwxODc3MSwxNTAxNTYsMTQ3ODA3LDE1MDEzNywxNjY3OTksMjMzNjYsMTY2OTE1LDEzNzM3NCwyOTg5NiwxMzc2MDgsMjk5NjYsMjk5MjksMjk5ODIsMTY3NjQxLDEzNzgwMywyMzUxMSwxNjc1OTYsMzc3NjUsMzAwMjksMzAwMjYsMzAwNTUsMzAwNjIsMTUxNDI2LDE2MTMyLDE1MDgwMywzMDA5NCwyOTc4OSwzMDExMCwzMDEzMiwzMDIxMCwzMDI1MiwzMDI4OSwzMDI4NywzMDMxOSwzMDMyNiwxNTY2NjEsMzAzNTIsMzMyNjMsMTQzMjgsMTU3OTY5LDE1Nzk2NiwzMDM2OSwzMDM3MywzMDM5MSwzMDQxMiwxNTk2NDcsMzM4OTAsMTUxNzA5LDE1MTkzMywxMzg3ODAsMzA0OTQsMzA1MDIsMzA1MjgsMjU3NzUsMTUyMDk2LDMwNTUyLDE0NDA0NCwzMDYzOSwxNjYyNDQsMTY2MjQ4LDEzNjg5NywzMDcwOCwzMDcyOSwxMzYwNTQsMTUwMDM0LDI2ODI2LDMwODk1LDMwOTE5LDMwOTMxLDM4NTY1LDMxMDIyLDE1MzA1NiwzMDkzNSwzMTAyOCwzMDg5NywxNjEyOTIsMzY3OTIsMzQ5NDgsMTY2Njk5LDE1NTc3OSwxNDA4MjgsMzExMTAsMzUwNzIsMjY4ODIsMzExMDQsMTUzNjg3LDMxMTMzLDE2MjYxNywzMTAzNiwzMTE0NSwyODIwMiwxNjAwMzgsMTYwNDAsMzExNzQsMTY4MjA1LDMxMTg4XSxcbiAgXCJldWMta3JcIjpbNDQwMzQsNDQwMzUsNDQwMzcsNDQwMzgsNDQwNDMsNDQwNDQsNDQwNDUsNDQwNDYsNDQwNDcsNDQwNTYsNDQwNjIsNDQwNjMsNDQwNjUsNDQwNjYsNDQwNjcsNDQwNjksNDQwNzAsNDQwNzEsNDQwNzIsNDQwNzMsNDQwNzQsNDQwNzUsNDQwNzgsNDQwODIsNDQwODMsNDQwODQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQwODUsNDQwODYsNDQwODcsNDQwOTAsNDQwOTEsNDQwOTMsNDQwOTQsNDQwOTUsNDQwOTcsNDQwOTgsNDQwOTksNDQxMDAsNDQxMDEsNDQxMDIsNDQxMDMsNDQxMDQsNDQxMDUsNDQxMDYsNDQxMDgsNDQxMTAsNDQxMTEsNDQxMTIsNDQxMTMsNDQxMTQsNDQxMTUsNDQxMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQxMTgsNDQxMTksNDQxMjEsNDQxMjIsNDQxMjMsNDQxMjUsNDQxMjYsNDQxMjcsNDQxMjgsNDQxMjksNDQxMzAsNDQxMzEsNDQxMzIsNDQxMzMsNDQxMzQsNDQxMzUsNDQxMzYsNDQxMzcsNDQxMzgsNDQxMzksNDQxNDAsNDQxNDEsNDQxNDIsNDQxNDMsNDQxNDYsNDQxNDcsNDQxNDksNDQxNTAsNDQxNTMsNDQxNTUsNDQxNTYsNDQxNTcsNDQxNTgsNDQxNTksNDQxNjIsNDQxNjcsNDQxNjgsNDQxNzMsNDQxNzQsNDQxNzUsNDQxNzcsNDQxNzgsNDQxNzksNDQxODEsNDQxODIsNDQxODMsNDQxODQsNDQxODUsNDQxODYsNDQxODcsNDQxOTAsNDQxOTQsNDQxOTUsNDQxOTYsNDQxOTcsNDQxOTgsNDQxOTksNDQyMDMsNDQyMDUsNDQyMDYsNDQyMDksNDQyMTAsNDQyMTEsNDQyMTIsNDQyMTMsNDQyMTQsNDQyMTUsNDQyMTgsNDQyMjIsNDQyMjMsNDQyMjQsNDQyMjYsNDQyMjcsNDQyMjksNDQyMzAsNDQyMzEsNDQyMzMsNDQyMzQsNDQyMzUsNDQyMzcsNDQyMzgsNDQyMzksNDQyNDAsNDQyNDEsNDQyNDIsNDQyNDMsNDQyNDQsNDQyNDYsNDQyNDgsNDQyNDksNDQyNTAsNDQyNTEsNDQyNTIsNDQyNTMsNDQyNTQsNDQyNTUsNDQyNTgsNDQyNTksNDQyNjEsNDQyNjIsNDQyNjUsNDQyNjcsNDQyNjksNDQyNzAsNDQyNzQsNDQyNzYsNDQyNzksNDQyODAsNDQyODEsNDQyODIsNDQyODMsNDQyODYsNDQyODcsNDQyODksNDQyOTAsNDQyOTEsNDQyOTMsNDQyOTUsNDQyOTYsNDQyOTcsNDQyOTgsNDQyOTksNDQzMDIsNDQzMDQsNDQzMDYsNDQzMDcsNDQzMDgsNDQzMDksNDQzMTAsNDQzMTEsNDQzMTMsNDQzMTQsNDQzMTUsNDQzMTcsNDQzMTgsNDQzMTksNDQzMjEsNDQzMjIsNDQzMjMsNDQzMjQsNDQzMjUsNDQzMjYsNDQzMjcsNDQzMjgsNDQzMzAsNDQzMzEsNDQzMzQsNDQzMzUsNDQzMzYsNDQzMzcsNDQzMzgsNDQzMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNDIsNDQzNDMsNDQzNDUsNDQzNDYsNDQzNDcsNDQzNDksNDQzNTAsNDQzNTEsNDQzNTIsNDQzNTMsNDQzNTQsNDQzNTUsNDQzNTgsNDQzNjAsNDQzNjIsNDQzNjMsNDQzNjQsNDQzNjUsNDQzNjYsNDQzNjcsNDQzNjksNDQzNzAsNDQzNzEsNDQzNzMsNDQzNzQsNDQzNzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNzcsNDQzNzgsNDQzNzksNDQzODAsNDQzODEsNDQzODIsNDQzODMsNDQzODQsNDQzODYsNDQzODgsNDQzODksNDQzOTAsNDQzOTEsNDQzOTIsNDQzOTMsNDQzOTQsNDQzOTUsNDQzOTgsNDQzOTksNDQ0MDEsNDQ0MDIsNDQ0MDcsNDQ0MDgsNDQ0MDksNDQ0MTAsNDQ0MTQsNDQ0MTYsNDQ0MTksNDQ0MjAsNDQ0MjEsNDQ0MjIsNDQ0MjMsNDQ0MjYsNDQ0MjcsNDQ0MjksNDQ0MzAsNDQ0MzEsNDQ0MzMsNDQ0MzQsNDQ0MzUsNDQ0MzYsNDQ0MzcsNDQ0MzgsNDQ0MzksNDQ0NDAsNDQ0NDEsNDQ0NDIsNDQ0NDMsNDQ0NDYsNDQ0NDcsNDQ0NDgsNDQ0NDksNDQ0NTAsNDQ0NTEsNDQ0NTMsNDQ0NTQsNDQ0NTUsNDQ0NTYsNDQ0NTcsNDQ0NTgsNDQ0NTksNDQ0NjAsNDQ0NjEsNDQ0NjIsNDQ0NjMsNDQ0NjQsNDQ0NjUsNDQ0NjYsNDQ0NjcsNDQ0NjgsNDQ0NjksNDQ0NzAsNDQ0NzIsNDQ0NzMsNDQ0NzQsNDQ0NzUsNDQ0NzYsNDQ0NzcsNDQ0NzgsNDQ0NzksNDQ0ODIsNDQ0ODMsNDQ0ODUsNDQ0ODYsNDQ0ODcsNDQ0ODksNDQ0OTAsNDQ0OTEsNDQ0OTIsNDQ0OTMsNDQ0OTQsNDQ0OTUsNDQ0OTgsNDQ1MDAsNDQ1MDEsNDQ1MDIsNDQ1MDMsNDQ1MDQsNDQ1MDUsNDQ1MDYsNDQ1MDcsNDQ1MDksNDQ1MTAsNDQ1MTEsNDQ1MTMsNDQ1MTQsNDQ1MTUsNDQ1MTcsNDQ1MTgsNDQ1MTksNDQ1MjAsNDQ1MjEsNDQ1MjIsNDQ1MjMsNDQ1MjQsNDQ1MjUsNDQ1MjYsNDQ1MjcsNDQ1MjgsNDQ1MjksNDQ1MzAsNDQ1MzEsNDQ1MzIsNDQ1MzMsNDQ1MzQsNDQ1MzUsNDQ1MzgsNDQ1MzksNDQ1NDEsNDQ1NDIsNDQ1NDYsNDQ1NDcsNDQ1NDgsNDQ1NDksNDQ1NTAsNDQ1NTEsNDQ1NTQsNDQ1NTYsNDQ1NTgsNDQ1NTksNDQ1NjAsNDQ1NjEsNDQ1NjIsNDQ1NjMsNDQ1NjUsNDQ1NjYsNDQ1NjcsNDQ1NjgsNDQ1NjksNDQ1NzAsNDQ1NzEsNDQ1NzIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ1NzMsNDQ1NzQsNDQ1NzUsNDQ1NzYsNDQ1NzcsNDQ1NzgsNDQ1NzksNDQ1ODAsNDQ1ODEsNDQ1ODIsNDQ1ODMsNDQ1ODQsNDQ1ODUsNDQ1ODYsNDQ1ODcsNDQ1ODgsNDQ1ODksNDQ1OTAsNDQ1OTEsNDQ1OTQsNDQ1OTUsNDQ1OTcsNDQ1OTgsNDQ2MDEsNDQ2MDMsNDQ2MDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ2MDUsNDQ2MDYsNDQ2MDcsNDQ2MTAsNDQ2MTIsNDQ2MTUsNDQ2MTYsNDQ2MTcsNDQ2MTksNDQ2MjMsNDQ2MjUsNDQ2MjYsNDQ2MjcsNDQ2MjksNDQ2MzEsNDQ2MzIsNDQ2MzMsNDQ2MzQsNDQ2MzUsNDQ2MzgsNDQ2NDIsNDQ2NDMsNDQ2NDQsNDQ2NDYsNDQ2NDcsNDQ2NTAsNDQ2NTEsNDQ2NTMsNDQ2NTQsNDQ2NTUsNDQ2NTcsNDQ2NTgsNDQ2NTksNDQ2NjAsNDQ2NjEsNDQ2NjIsNDQ2NjMsNDQ2NjYsNDQ2NzAsNDQ2NzEsNDQ2NzIsNDQ2NzMsNDQ2NzQsNDQ2NzUsNDQ2NzgsNDQ2NzksNDQ2ODAsNDQ2ODEsNDQ2ODIsNDQ2ODMsNDQ2ODUsNDQ2ODYsNDQ2ODcsNDQ2ODgsNDQ2ODksNDQ2OTAsNDQ2OTEsNDQ2OTIsNDQ2OTMsNDQ2OTQsNDQ2OTUsNDQ2OTYsNDQ2OTcsNDQ2OTgsNDQ2OTksNDQ3MDAsNDQ3MDEsNDQ3MDIsNDQ3MDMsNDQ3MDQsNDQ3MDUsNDQ3MDYsNDQ3MDcsNDQ3MDgsNDQ3MDksNDQ3MTAsNDQ3MTEsNDQ3MTIsNDQ3MTMsNDQ3MTQsNDQ3MTUsNDQ3MTYsNDQ3MTcsNDQ3MTgsNDQ3MTksNDQ3MjAsNDQ3MjEsNDQ3MjIsNDQ3MjMsNDQ3MjQsNDQ3MjUsNDQ3MjYsNDQ3MjcsNDQ3MjgsNDQ3MjksNDQ3MzAsNDQ3MzEsNDQ3MzUsNDQ3MzcsNDQ3MzgsNDQ3MzksNDQ3NDEsNDQ3NDIsNDQ3NDMsNDQ3NDQsNDQ3NDUsNDQ3NDYsNDQ3NDcsNDQ3NTAsNDQ3NTQsNDQ3NTUsNDQ3NTYsNDQ3NTcsNDQ3NTgsNDQ3NTksNDQ3NjIsNDQ3NjMsNDQ3NjUsNDQ3NjYsNDQ3NjcsNDQ3NjgsNDQ3NjksNDQ3NzAsNDQ3NzEsNDQ3NzIsNDQ3NzMsNDQ3NzQsNDQ3NzUsNDQ3NzcsNDQ3NzgsNDQ3ODAsNDQ3ODIsNDQ3ODMsNDQ3ODQsNDQ3ODUsNDQ3ODYsNDQ3ODcsNDQ3ODksNDQ3OTAsNDQ3OTEsNDQ3OTMsNDQ3OTQsNDQ3OTUsNDQ3OTcsNDQ3OTgsNDQ3OTksNDQ4MDAsNDQ4MDEsNDQ4MDIsNDQ4MDMsNDQ4MDQsNDQ4MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MDYsNDQ4MDksNDQ4MTAsNDQ4MTEsNDQ4MTIsNDQ4MTQsNDQ4MTUsNDQ4MTcsNDQ4MTgsNDQ4MTksNDQ4MjAsNDQ4MjEsNDQ4MjIsNDQ4MjMsNDQ4MjQsNDQ4MjUsNDQ4MjYsNDQ4MjcsNDQ4MjgsNDQ4MjksNDQ4MzAsNDQ4MzEsNDQ4MzIsNDQ4MzMsNDQ4MzQsNDQ4MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MzYsNDQ4MzcsNDQ4MzgsNDQ4MzksNDQ4NDAsNDQ4NDEsNDQ4NDIsNDQ4NDMsNDQ4NDYsNDQ4NDcsNDQ4NDksNDQ4NTEsNDQ4NTMsNDQ4NTQsNDQ4NTUsNDQ4NTYsNDQ4NTcsNDQ4NTgsNDQ4NTksNDQ4NjIsNDQ4NjQsNDQ4NjgsNDQ4NjksNDQ4NzAsNDQ4NzEsNDQ4NzQsNDQ4NzUsNDQ4NzYsNDQ4NzcsNDQ4NzgsNDQ4NzksNDQ4ODEsNDQ4ODIsNDQ4ODMsNDQ4ODQsNDQ4ODUsNDQ4ODYsNDQ4ODcsNDQ4ODgsNDQ4ODksNDQ4OTAsNDQ4OTEsNDQ4OTQsNDQ4OTUsNDQ4OTYsNDQ4OTcsNDQ4OTgsNDQ4OTksNDQ5MDIsNDQ5MDMsNDQ5MDQsNDQ5MDUsNDQ5MDYsNDQ5MDcsNDQ5MDgsNDQ5MDksNDQ5MTAsNDQ5MTEsNDQ5MTIsNDQ5MTMsNDQ5MTQsNDQ5MTUsNDQ5MTYsNDQ5MTcsNDQ5MTgsNDQ5MTksNDQ5MjAsNDQ5MjIsNDQ5MjMsNDQ5MjQsNDQ5MjUsNDQ5MjYsNDQ5MjcsNDQ5MjksNDQ5MzAsNDQ5MzEsNDQ5MzMsNDQ5MzQsNDQ5MzUsNDQ5MzcsNDQ5MzgsNDQ5MzksNDQ5NDAsNDQ5NDEsNDQ5NDIsNDQ5NDMsNDQ5NDYsNDQ5NDcsNDQ5NDgsNDQ5NTAsNDQ5NTEsNDQ5NTIsNDQ5NTMsNDQ5NTQsNDQ5NTUsNDQ5NTcsNDQ5NTgsNDQ5NTksNDQ5NjAsNDQ5NjEsNDQ5NjIsNDQ5NjMsNDQ5NjQsNDQ5NjUsNDQ5NjYsNDQ5NjcsNDQ5NjgsNDQ5NjksNDQ5NzAsNDQ5NzEsNDQ5NzIsNDQ5NzMsNDQ5NzQsNDQ5NzUsNDQ5NzYsNDQ5NzcsNDQ5NzgsNDQ5NzksNDQ5ODAsNDQ5ODEsNDQ5ODIsNDQ5ODMsNDQ5ODYsNDQ5ODcsNDQ5ODksNDQ5OTAsNDQ5OTEsNDQ5OTMsNDQ5OTQsNDQ5OTUsNDQ5OTYsNDQ5OTcsNDQ5OTgsNDUwMDIsNDUwMDQsNDUwMDcsNDUwMDgsNDUwMDksNDUwMTAsNDUwMTEsNDUwMTMsNDUwMTQsNDUwMTUsNDUwMTYsNDUwMTcsNDUwMTgsNDUwMTksNDUwMjEsNDUwMjIsNDUwMjMsNDUwMjQsNDUwMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwMjYsNDUwMjcsNDUwMjgsNDUwMjksNDUwMzAsNDUwMzEsNDUwMzQsNDUwMzUsNDUwMzYsNDUwMzcsNDUwMzgsNDUwMzksNDUwNDIsNDUwNDMsNDUwNDUsNDUwNDYsNDUwNDcsNDUwNDksNDUwNTAsNDUwNTEsNDUwNTIsNDUwNTMsNDUwNTQsNDUwNTUsNDUwNTgsNDUwNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwNjEsNDUwNjIsNDUwNjMsNDUwNjQsNDUwNjUsNDUwNjYsNDUwNjcsNDUwNjksNDUwNzAsNDUwNzEsNDUwNzMsNDUwNzQsNDUwNzUsNDUwNzcsNDUwNzgsNDUwNzksNDUwODAsNDUwODEsNDUwODIsNDUwODMsNDUwODYsNDUwODcsNDUwODgsNDUwODksNDUwOTAsNDUwOTEsNDUwOTIsNDUwOTMsNDUwOTQsNDUwOTUsNDUwOTcsNDUwOTgsNDUwOTksNDUxMDAsNDUxMDEsNDUxMDIsNDUxMDMsNDUxMDQsNDUxMDUsNDUxMDYsNDUxMDcsNDUxMDgsNDUxMDksNDUxMTAsNDUxMTEsNDUxMTIsNDUxMTMsNDUxMTQsNDUxMTUsNDUxMTYsNDUxMTcsNDUxMTgsNDUxMTksNDUxMjAsNDUxMjEsNDUxMjIsNDUxMjMsNDUxMjYsNDUxMjcsNDUxMjksNDUxMzEsNDUxMzMsNDUxMzUsNDUxMzYsNDUxMzcsNDUxMzgsNDUxNDIsNDUxNDQsNDUxNDYsNDUxNDcsNDUxNDgsNDUxNTAsNDUxNTEsNDUxNTIsNDUxNTMsNDUxNTQsNDUxNTUsNDUxNTYsNDUxNTcsNDUxNTgsNDUxNTksNDUxNjAsNDUxNjEsNDUxNjIsNDUxNjMsNDUxNjQsNDUxNjUsNDUxNjYsNDUxNjcsNDUxNjgsNDUxNjksNDUxNzAsNDUxNzEsNDUxNzIsNDUxNzMsNDUxNzQsNDUxNzUsNDUxNzYsNDUxNzcsNDUxNzgsNDUxNzksNDUxODIsNDUxODMsNDUxODUsNDUxODYsNDUxODcsNDUxODksNDUxOTAsNDUxOTEsNDUxOTIsNDUxOTMsNDUxOTQsNDUxOTUsNDUxOTgsNDUyMDAsNDUyMDIsNDUyMDMsNDUyMDQsNDUyMDUsNDUyMDYsNDUyMDcsNDUyMTEsNDUyMTMsNDUyMTQsNDUyMTksNDUyMjAsNDUyMjEsNDUyMjIsNDUyMjMsNDUyMjYsNDUyMzIsNDUyMzQsNDUyMzgsNDUyMzksNDUyNDEsNDUyNDIsNDUyNDMsNDUyNDUsNDUyNDYsNDUyNDcsNDUyNDgsNDUyNDksNDUyNTAsNDUyNTEsNDUyNTQsNDUyNTgsNDUyNTksNDUyNjAsNDUyNjEsNDUyNjIsNDUyNjMsNDUyNjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyNjcsNDUyNjksNDUyNzAsNDUyNzEsNDUyNzMsNDUyNzQsNDUyNzUsNDUyNzYsNDUyNzcsNDUyNzgsNDUyNzksNDUyODEsNDUyODIsNDUyODMsNDUyODQsNDUyODYsNDUyODcsNDUyODgsNDUyODksNDUyOTAsNDUyOTEsNDUyOTIsNDUyOTMsNDUyOTQsNDUyOTUsNDUyOTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyOTcsNDUyOTgsNDUyOTksNDUzMDAsNDUzMDEsNDUzMDIsNDUzMDMsNDUzMDQsNDUzMDUsNDUzMDYsNDUzMDcsNDUzMDgsNDUzMDksNDUzMTAsNDUzMTEsNDUzMTIsNDUzMTMsNDUzMTQsNDUzMTUsNDUzMTYsNDUzMTcsNDUzMTgsNDUzMTksNDUzMjIsNDUzMjUsNDUzMjYsNDUzMjcsNDUzMjksNDUzMzIsNDUzMzMsNDUzMzQsNDUzMzUsNDUzMzgsNDUzNDIsNDUzNDMsNDUzNDQsNDUzNDUsNDUzNDYsNDUzNTAsNDUzNTEsNDUzNTMsNDUzNTQsNDUzNTUsNDUzNTcsNDUzNTgsNDUzNTksNDUzNjAsNDUzNjEsNDUzNjIsNDUzNjMsNDUzNjYsNDUzNzAsNDUzNzEsNDUzNzIsNDUzNzMsNDUzNzQsNDUzNzUsNDUzNzgsNDUzNzksNDUzODEsNDUzODIsNDUzODMsNDUzODUsNDUzODYsNDUzODcsNDUzODgsNDUzODksNDUzOTAsNDUzOTEsNDUzOTQsNDUzOTUsNDUzOTgsNDUzOTksNDU0MDEsNDU0MDIsNDU0MDMsNDU0MDUsNDU0MDYsNDU0MDcsNDU0MDksNDU0MTAsNDU0MTEsNDU0MTIsNDU0MTMsNDU0MTQsNDU0MTUsNDU0MTYsNDU0MTcsNDU0MTgsNDU0MTksNDU0MjAsNDU0MjEsNDU0MjIsNDU0MjMsNDU0MjQsNDU0MjUsNDU0MjYsNDU0MjcsNDU0MjgsNDU0MjksNDU0MzAsNDU0MzEsNDU0MzQsNDU0MzUsNDU0MzcsNDU0MzgsNDU0MzksNDU0NDEsNDU0NDMsNDU0NDQsNDU0NDUsNDU0NDYsNDU0NDcsNDU0NTAsNDU0NTIsNDU0NTQsNDU0NTUsNDU0NTYsNDU0NTcsNDU0NjEsNDU0NjIsNDU0NjMsNDU0NjUsNDU0NjYsNDU0NjcsNDU0NjksNDU0NzAsNDU0NzEsNDU0NzIsNDU0NzMsNDU0NzQsNDU0NzUsNDU0NzYsNDU0NzcsNDU0NzgsNDU0NzksNDU0ODEsNDU0ODIsNDU0ODMsNDU0ODQsNDU0ODUsNDU0ODYsNDU0ODcsNDU0ODgsNDU0ODksNDU0OTAsNDU0OTEsNDU0OTIsNDU0OTMsNDU0OTQsNDU0OTUsNDU0OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU0OTcsNDU0OTgsNDU0OTksNDU1MDAsNDU1MDEsNDU1MDIsNDU1MDMsNDU1MDQsNDU1MDUsNDU1MDYsNDU1MDcsNDU1MDgsNDU1MDksNDU1MTAsNDU1MTEsNDU1MTIsNDU1MTMsNDU1MTQsNDU1MTUsNDU1MTcsNDU1MTgsNDU1MTksNDU1MjEsNDU1MjIsNDU1MjMsNDU1MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU1MjYsNDU1MjcsNDU1MjgsNDU1MjksNDU1MzAsNDU1MzEsNDU1MzQsNDU1MzYsNDU1MzcsNDU1MzgsNDU1MzksNDU1NDAsNDU1NDEsNDU1NDIsNDU1NDMsNDU1NDYsNDU1NDcsNDU1NDksNDU1NTAsNDU1NTEsNDU1NTMsNDU1NTQsNDU1NTUsNDU1NTYsNDU1NTcsNDU1NTgsNDU1NTksNDU1NjAsNDU1NjIsNDU1NjQsNDU1NjYsNDU1NjcsNDU1NjgsNDU1NjksNDU1NzAsNDU1NzEsNDU1NzQsNDU1NzUsNDU1NzcsNDU1NzgsNDU1ODEsNDU1ODIsNDU1ODMsNDU1ODQsNDU1ODUsNDU1ODYsNDU1ODcsNDU1OTAsNDU1OTIsNDU1OTQsNDU1OTUsNDU1OTYsNDU1OTcsNDU1OTgsNDU1OTksNDU2MDEsNDU2MDIsNDU2MDMsNDU2MDQsNDU2MDUsNDU2MDYsNDU2MDcsNDU2MDgsNDU2MDksNDU2MTAsNDU2MTEsNDU2MTIsNDU2MTMsNDU2MTQsNDU2MTUsNDU2MTYsNDU2MTcsNDU2MTgsNDU2MTksNDU2MjEsNDU2MjIsNDU2MjMsNDU2MjQsNDU2MjUsNDU2MjYsNDU2MjcsNDU2MjksNDU2MzAsNDU2MzEsNDU2MzIsNDU2MzMsNDU2MzQsNDU2MzUsNDU2MzYsNDU2MzcsNDU2MzgsNDU2MzksNDU2NDAsNDU2NDEsNDU2NDIsNDU2NDMsNDU2NDQsNDU2NDUsNDU2NDYsNDU2NDcsNDU2NDgsNDU2NDksNDU2NTAsNDU2NTEsNDU2NTIsNDU2NTMsNDU2NTQsNDU2NTUsNDU2NTcsNDU2NTgsNDU2NTksNDU2NjEsNDU2NjIsNDU2NjMsNDU2NjUsNDU2NjYsNDU2NjcsNDU2NjgsNDU2NjksNDU2NzAsNDU2NzEsNDU2NzQsNDU2NzUsNDU2NzYsNDU2NzcsNDU2NzgsNDU2NzksNDU2ODAsNDU2ODEsNDU2ODIsNDU2ODMsNDU2ODYsNDU2ODcsNDU2ODgsNDU2ODksNDU2OTAsNDU2OTEsNDU2OTMsNDU2OTQsNDU2OTUsNDU2OTYsNDU2OTcsNDU2OTgsNDU2OTksNDU3MDIsNDU3MDMsNDU3MDQsNDU3MDYsNDU3MDcsNDU3MDgsNDU3MDksNDU3MTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3MTEsNDU3MTQsNDU3MTUsNDU3MTcsNDU3MTgsNDU3MTksNDU3MjMsNDU3MjQsNDU3MjUsNDU3MjYsNDU3MjcsNDU3MzAsNDU3MzIsNDU3MzUsNDU3MzYsNDU3MzcsNDU3MzksNDU3NDEsNDU3NDIsNDU3NDMsNDU3NDUsNDU3NDYsNDU3NDcsNDU3NDksNDU3NTAsNDU3NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3NTIsNDU3NTMsNDU3NTQsNDU3NTUsNDU3NTYsNDU3NTcsNDU3NTgsNDU3NTksNDU3NjAsNDU3NjEsNDU3NjIsNDU3NjMsNDU3NjQsNDU3NjUsNDU3NjYsNDU3NjcsNDU3NzAsNDU3NzEsNDU3NzMsNDU3NzQsNDU3NzUsNDU3NzcsNDU3NzksNDU3ODAsNDU3ODEsNDU3ODIsNDU3ODMsNDU3ODYsNDU3ODgsNDU3OTAsNDU3OTEsNDU3OTIsNDU3OTMsNDU3OTUsNDU3OTksNDU4MDEsNDU4MDIsNDU4MDgsNDU4MDksNDU4MTAsNDU4MTQsNDU4MjAsNDU4MjEsNDU4MjIsNDU4MjYsNDU4MjcsNDU4MjksNDU4MzAsNDU4MzEsNDU4MzMsNDU4MzQsNDU4MzUsNDU4MzYsNDU4MzcsNDU4MzgsNDU4MzksNDU4NDIsNDU4NDYsNDU4NDcsNDU4NDgsNDU4NDksNDU4NTAsNDU4NTEsNDU4NTMsNDU4NTQsNDU4NTUsNDU4NTYsNDU4NTcsNDU4NTgsNDU4NTksNDU4NjAsNDU4NjEsNDU4NjIsNDU4NjMsNDU4NjQsNDU4NjUsNDU4NjYsNDU4NjcsNDU4NjgsNDU4NjksNDU4NzAsNDU4NzEsNDU4NzIsNDU4NzMsNDU4NzQsNDU4NzUsNDU4NzYsNDU4NzcsNDU4NzgsNDU4NzksNDU4ODAsNDU4ODEsNDU4ODIsNDU4ODMsNDU4ODQsNDU4ODUsNDU4ODYsNDU4ODcsNDU4ODgsNDU4ODksNDU4OTAsNDU4OTEsNDU4OTIsNDU4OTMsNDU4OTQsNDU4OTUsNDU4OTYsNDU4OTcsNDU4OTgsNDU4OTksNDU5MDAsNDU5MDEsNDU5MDIsNDU5MDMsNDU5MDQsNDU5MDUsNDU5MDYsNDU5MDcsNDU5MTEsNDU5MTMsNDU5MTQsNDU5MTcsNDU5MjAsNDU5MjEsNDU5MjIsNDU5MjMsNDU5MjYsNDU5MjgsNDU5MzAsNDU5MzIsNDU5MzMsNDU5MzUsNDU5MzgsNDU5MzksNDU5NDEsNDU5NDIsNDU5NDMsNDU5NDUsNDU5NDYsNDU5NDcsNDU5NDgsNDU5NDksNDU5NTAsNDU5NTEsNDU5NTQsNDU5NTgsNDU5NTksNDU5NjAsNDU5NjEsNDU5NjIsNDU5NjMsNDU5NjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5NjYsNDU5NjcsNDU5NjksNDU5NzAsNDU5NzEsNDU5NzMsNDU5NzQsNDU5NzUsNDU5NzYsNDU5NzcsNDU5NzgsNDU5NzksNDU5ODAsNDU5ODEsNDU5ODIsNDU5ODMsNDU5ODYsNDU5ODcsNDU5ODgsNDU5ODksNDU5OTAsNDU5OTEsNDU5OTMsNDU5OTQsNDU5OTUsNDU5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5OTgsNDU5OTksNDYwMDAsNDYwMDEsNDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcsNDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYwMjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYwMzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYwNDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcsNDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIsNDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzksNDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYwOTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYxMDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYxMTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAsNDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYsNDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIsNDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYxNTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYxNjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYxNzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAsNDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUsNDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEsNDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYyMTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYyMjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYyMjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMsNDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAsNDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcsNDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYyNzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYyODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYyOTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUsNDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQsNDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEsNDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYzNDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYzNTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYzNjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODksNDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUsNDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAsNDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUsNDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEsNDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEsNDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEsNDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEsNDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMsNDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgsNDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQsNDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2MzksNDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUsNDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEsNDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgsNDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQsNDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAsNDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcsNDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUsNDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEsNDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcsNDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIsNDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4NjcsNDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMsNDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5MjgsNDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUsNDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEsNDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcsNDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMsNDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQsNDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcwNDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcwNTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgsNDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQsNDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcwOTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcxMDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcxMTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYsNDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMsNDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEsNDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcxNzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcxODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcxODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgsNDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYsNDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMsNDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcyNDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcyNDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcyNTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUsNDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAsNDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcsNDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDczMDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDczMDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgsNDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQsNDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMsNDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDczNjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDczNzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDczNzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUsNDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAsNDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYsNDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEsNDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAsNDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0NzgsNDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEsNDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYsNDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQsNDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMsNDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQsNDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIsNDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2NjgsNDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUsNDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQsNDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIsNDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAsNDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgsNDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcsNDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMsNDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAsNDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYsNDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMsNDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAsNDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIsNDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAsNDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcsNDc5OTgsNDc5OTksNDgwMDAsNDgwMDEsNDgwMDIsNDgwMDMsNDgwMDQsNDgwMDUsNDgwMDYsNDgwMDcsNDgwMDksNDgwMTAsNDgwMTEsNDgwMTMsNDgwMTQsNDgwMTUsNDgwMTcsNDgwMTgsNDgwMTksNDgwMjAsNDgwMjEsNDgwMjIsNDgwMjMsNDgwMjQsNDgwMjUsNDgwMjYsNDgwMjcsNDgwMjgsNDgwMjksNDgwMzAsNDgwMzEsNDgwMzIsNDgwMzMsNDgwMzQsNDgwMzUsNDgwMzcsNDgwMzgsNDgwMzksNDgwNDEsNDgwNDIsNDgwNDMsNDgwNDUsNDgwNDYsNDgwNDcsNDgwNDgsNDgwNDksNDgwNTAsNDgwNTEsNDgwNTMsNDgwNTQsNDgwNTYsNDgwNTcsNDgwNTgsNDgwNTksNDgwNjAsNDgwNjEsNDgwNjIsNDgwNjMsNDgwNjUsNDgwNjYsNDgwNjcsNDgwNjksNDgwNzAsNDgwNzEsNDgwNzMsNDgwNzQsNDgwNzUsNDgwNzYsNDgwNzcsNDgwNzgsNDgwNzksNDgwODEsNDgwODIsNDgwODQsNDgwODUsNDgwODYsNDgwODcsNDgwODgsNDgwODksNDgwOTAsNDgwOTEsNDgwOTIsNDgwOTMsNDgwOTQsNDgwOTUsNDgwOTYsNDgwOTcsNDgwOTgsNDgwOTksNDgxMDAsNDgxMDEsNDgxMDIsNDgxMDMsNDgxMDQsNDgxMDUsNDgxMDYsNDgxMDcsNDgxMDgsNDgxMDksNDgxMTAsNDgxMTEsNDgxMTIsNDgxMTMsNDgxMTQsNDgxMTUsNDgxMTYsNDgxMTcsNDgxMTgsNDgxMTksNDgxMjIsNDgxMjMsNDgxMjUsNDgxMjYsNDgxMjksNDgxMzEsNDgxMzIsNDgxMzMsNDgxMzQsNDgxMzUsNDgxMzgsNDgxNDIsNDgxNDQsNDgxNDYsNDgxNDcsNDgxNTMsNDgxNTQsNDgxNjAsNDgxNjEsNDgxNjIsNDgxNjMsNDgxNjYsNDgxNjgsNDgxNzAsNDgxNzEsNDgxNzIsNDgxNzQsNDgxNzUsNDgxNzgsNDgxNzksNDgxODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgxODIsNDgxODMsNDgxODUsNDgxODYsNDgxODcsNDgxODgsNDgxODksNDgxOTAsNDgxOTEsNDgxOTQsNDgxOTgsNDgxOTksNDgyMDAsNDgyMDIsNDgyMDMsNDgyMDYsNDgyMDcsNDgyMDksNDgyMTAsNDgyMTEsNDgyMTIsNDgyMTMsNDgyMTQsNDgyMTUsNDgyMTYsNDgyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgyMTgsNDgyMTksNDgyMjAsNDgyMjIsNDgyMjMsNDgyMjQsNDgyMjUsNDgyMjYsNDgyMjcsNDgyMjgsNDgyMjksNDgyMzAsNDgyMzEsNDgyMzIsNDgyMzMsNDgyMzQsNDgyMzUsNDgyMzYsNDgyMzcsNDgyMzgsNDgyMzksNDgyNDAsNDgyNDEsNDgyNDIsNDgyNDMsNDgyNDQsNDgyNDUsNDgyNDYsNDgyNDcsNDgyNDgsNDgyNDksNDgyNTAsNDgyNTEsNDgyNTIsNDgyNTMsNDgyNTQsNDgyNTUsNDgyNTYsNDgyNTcsNDgyNTgsNDgyNTksNDgyNjIsNDgyNjMsNDgyNjUsNDgyNjYsNDgyNjksNDgyNzEsNDgyNzIsNDgyNzMsNDgyNzQsNDgyNzUsNDgyNzgsNDgyODAsNDgyODMsNDgyODQsNDgyODUsNDgyODYsNDgyODcsNDgyOTAsNDgyOTEsNDgyOTMsNDgyOTQsNDgyOTcsNDgyOTgsNDgyOTksNDgzMDAsNDgzMDEsNDgzMDIsNDgzMDMsNDgzMDYsNDgzMTAsNDgzMTEsNDgzMTIsNDgzMTMsNDgzMTQsNDgzMTUsNDgzMTgsNDgzMTksNDgzMjEsNDgzMjIsNDgzMjMsNDgzMjUsNDgzMjYsNDgzMjcsNDgzMjgsNDgzMjksNDgzMzAsNDgzMzEsNDgzMzIsNDgzMzQsNDgzMzgsNDgzMzksNDgzNDAsNDgzNDIsNDgzNDMsNDgzNDUsNDgzNDYsNDgzNDcsNDgzNDksNDgzNTAsNDgzNTEsNDgzNTIsNDgzNTMsNDgzNTQsNDgzNTUsNDgzNTYsNDgzNTcsNDgzNTgsNDgzNTksNDgzNjAsNDgzNjEsNDgzNjIsNDgzNjMsNDgzNjQsNDgzNjUsNDgzNjYsNDgzNjcsNDgzNjgsNDgzNjksNDgzNzAsNDgzNzEsNDgzNzUsNDgzNzcsNDgzNzgsNDgzNzksNDgzODEsNDgzODIsNDgzODMsNDgzODQsNDgzODUsNDgzODYsNDgzODcsNDgzOTAsNDgzOTIsNDgzOTQsNDgzOTUsNDgzOTYsNDgzOTcsNDgzOTgsNDgzOTksNDg0MDEsNDg0MDIsNDg0MDMsNDg0MDUsNDg0MDYsNDg0MDcsNDg0MDgsNDg0MDksNDg0MTAsNDg0MTEsNDg0MTIsNDg0MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0MTQsNDg0MTUsNDg0MTYsNDg0MTcsNDg0MTgsNDg0MTksNDg0MjEsNDg0MjIsNDg0MjMsNDg0MjQsNDg0MjUsNDg0MjYsNDg0MjcsNDg0MjksNDg0MzAsNDg0MzEsNDg0MzIsNDg0MzMsNDg0MzQsNDg0MzUsNDg0MzYsNDg0MzcsNDg0MzgsNDg0MzksNDg0NDAsNDg0NDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0NDIsNDg0NDMsNDg0NDQsNDg0NDUsNDg0NDYsNDg0NDcsNDg0NDksNDg0NTAsNDg0NTEsNDg0NTIsNDg0NTMsNDg0NTQsNDg0NTUsNDg0NTgsNDg0NTksNDg0NjEsNDg0NjIsNDg0NjMsNDg0NjUsNDg0NjYsNDg0NjcsNDg0NjgsNDg0NjksNDg0NzAsNDg0NzEsNDg0NzQsNDg0NzUsNDg0NzYsNDg0NzcsNDg0NzgsNDg0NzksNDg0ODAsNDg0ODEsNDg0ODIsNDg0ODMsNDg0ODUsNDg0ODYsNDg0ODcsNDg0ODksNDg0OTAsNDg0OTEsNDg0OTIsNDg0OTMsNDg0OTQsNDg0OTUsNDg0OTYsNDg0OTcsNDg0OTgsNDg0OTksNDg1MDAsNDg1MDEsNDg1MDIsNDg1MDMsNDg1MDQsNDg1MDUsNDg1MDYsNDg1MDcsNDg1MDgsNDg1MDksNDg1MTAsNDg1MTEsNDg1MTQsNDg1MTUsNDg1MTcsNDg1MTgsNDg1MjMsNDg1MjQsNDg1MjUsNDg1MjYsNDg1MjcsNDg1MzAsNDg1MzIsNDg1MzQsNDg1MzUsNDg1MzYsNDg1MzksNDg1NDEsNDg1NDIsNDg1NDMsNDg1NDQsNDg1NDUsNDg1NDYsNDg1NDcsNDg1NDksNDg1NTAsNDg1NTEsNDg1NTIsNDg1NTMsNDg1NTQsNDg1NTUsNDg1NTYsNDg1NTcsNDg1NTgsNDg1NTksNDg1NjEsNDg1NjIsNDg1NjMsNDg1NjQsNDg1NjUsNDg1NjYsNDg1NjcsNDg1NjksNDg1NzAsNDg1NzEsNDg1NzIsNDg1NzMsNDg1NzQsNDg1NzUsNDg1NzYsNDg1NzcsNDg1NzgsNDg1NzksNDg1ODAsNDg1ODEsNDg1ODIsNDg1ODMsNDg1ODQsNDg1ODUsNDg1ODYsNDg1ODcsNDg1ODgsNDg1ODksNDg1OTAsNDg1OTEsNDg1OTIsNDg1OTMsNDg1OTQsNDg1OTUsNDg1OTgsNDg1OTksNDg2MDEsNDg2MDIsNDg2MDMsNDg2MDUsNDg2MDYsNDg2MDcsNDg2MDgsNDg2MDksNDg2MTAsNDg2MTEsNDg2MTIsNDg2MTMsNDg2MTQsNDg2MTUsNDg2MTYsNDg2MTgsNDg2MTksNDg2MjAsNDg2MjEsNDg2MjIsNDg2MjMsNDg2MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2MjYsNDg2MjcsNDg2MjksNDg2MzAsNDg2MzEsNDg2MzMsNDg2MzQsNDg2MzUsNDg2MzYsNDg2MzcsNDg2MzgsNDg2MzksNDg2NDEsNDg2NDIsNDg2NDQsNDg2NDYsNDg2NDcsNDg2NDgsNDg2NDksNDg2NTAsNDg2NTEsNDg2NTQsNDg2NTUsNDg2NTcsNDg2NTgsNDg2NTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2NjEsNDg2NjIsNDg2NjMsNDg2NjQsNDg2NjUsNDg2NjYsNDg2NjcsNDg2NzAsNDg2NzIsNDg2NzMsNDg2NzQsNDg2NzUsNDg2NzYsNDg2NzcsNDg2NzgsNDg2NzksNDg2ODAsNDg2ODEsNDg2ODIsNDg2ODMsNDg2ODQsNDg2ODUsNDg2ODYsNDg2ODcsNDg2ODgsNDg2ODksNDg2OTAsNDg2OTEsNDg2OTIsNDg2OTMsNDg2OTQsNDg2OTUsNDg2OTYsNDg2OTcsNDg2OTgsNDg2OTksNDg3MDAsNDg3MDEsNDg3MDIsNDg3MDMsNDg3MDQsNDg3MDUsNDg3MDYsNDg3MDcsNDg3MTAsNDg3MTEsNDg3MTMsNDg3MTQsNDg3MTUsNDg3MTcsNDg3MTksNDg3MjAsNDg3MjEsNDg3MjIsNDg3MjMsNDg3MjYsNDg3MjgsNDg3MzIsNDg3MzMsNDg3MzQsNDg3MzUsNDg3MzgsNDg3MzksNDg3NDEsNDg3NDIsNDg3NDMsNDg3NDUsNDg3NDcsNDg3NDgsNDg3NDksNDg3NTAsNDg3NTEsNDg3NTQsNDg3NTgsNDg3NTksNDg3NjAsNDg3NjEsNDg3NjIsNDg3NjYsNDg3NjcsNDg3NjksNDg3NzAsNDg3NzEsNDg3NzMsNDg3NzQsNDg3NzUsNDg3NzYsNDg3NzcsNDg3NzgsNDg3NzksNDg3ODIsNDg3ODYsNDg3ODcsNDg3ODgsNDg3ODksNDg3OTAsNDg3OTEsNDg3OTQsNDg3OTUsNDg3OTYsNDg3OTcsNDg3OTgsNDg3OTksNDg4MDAsNDg4MDEsNDg4MDIsNDg4MDMsNDg4MDQsNDg4MDUsNDg4MDYsNDg4MDcsNDg4MDksNDg4MTAsNDg4MTEsNDg4MTIsNDg4MTMsNDg4MTQsNDg4MTUsNDg4MTYsNDg4MTcsNDg4MTgsNDg4MTksNDg4MjAsNDg4MjEsNDg4MjIsNDg4MjMsNDg4MjQsNDg4MjUsNDg4MjYsNDg4MjcsNDg4MjgsNDg4MjksNDg4MzAsNDg4MzEsNDg4MzIsNDg4MzMsNDg4MzQsNDg4MzUsNDg4MzYsNDg4MzcsNDg4MzgsNDg4MzksNDg4NDAsNDg4NDEsNDg4NDIsNDg4NDMsNDg4NDQsNDg4NDUsNDg4NDYsNDg4NDcsNDg4NTAsNDg4NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4NTMsNDg4NTQsNDg4NTcsNDg4NTgsNDg4NTksNDg4NjAsNDg4NjEsNDg4NjIsNDg4NjMsNDg4NjUsNDg4NjYsNDg4NzAsNDg4NzEsNDg4NzIsNDg4NzMsNDg4NzQsNDg4NzUsNDg4NzcsNDg4NzgsNDg4NzksNDg4ODAsNDg4ODEsNDg4ODIsNDg4ODMsNDg4ODQsNDg4ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4ODYsNDg4ODcsNDg4ODgsNDg4ODksNDg4OTAsNDg4OTEsNDg4OTIsNDg4OTMsNDg4OTQsNDg4OTUsNDg4OTYsNDg4OTgsNDg4OTksNDg5MDAsNDg5MDEsNDg5MDIsNDg5MDMsNDg5MDYsNDg5MDcsNDg5MDgsNDg5MDksNDg5MTAsNDg5MTEsNDg5MTIsNDg5MTMsNDg5MTQsNDg5MTUsNDg5MTYsNDg5MTcsNDg5MTgsNDg5MTksNDg5MjIsNDg5MjYsNDg5MjcsNDg5MjgsNDg5MjksNDg5MzAsNDg5MzEsNDg5MzIsNDg5MzMsNDg5MzQsNDg5MzUsNDg5MzYsNDg5MzcsNDg5MzgsNDg5MzksNDg5NDAsNDg5NDEsNDg5NDIsNDg5NDMsNDg5NDQsNDg5NDUsNDg5NDYsNDg5NDcsNDg5NDgsNDg5NDksNDg5NTAsNDg5NTEsNDg5NTIsNDg5NTMsNDg5NTQsNDg5NTUsNDg5NTYsNDg5NTcsNDg5NTgsNDg5NTksNDg5NjIsNDg5NjMsNDg5NjUsNDg5NjYsNDg5NjcsNDg5NjksNDg5NzAsNDg5NzEsNDg5NzIsNDg5NzMsNDg5NzQsNDg5NzUsNDg5NzgsNDg5NzksNDg5ODAsNDg5ODIsNDg5ODMsNDg5ODQsNDg5ODUsNDg5ODYsNDg5ODcsNDg5ODgsNDg5ODksNDg5OTAsNDg5OTEsNDg5OTIsNDg5OTMsNDg5OTQsNDg5OTUsNDg5OTYsNDg5OTcsNDg5OTgsNDg5OTksNDkwMDAsNDkwMDEsNDkwMDIsNDkwMDMsNDkwMDQsNDkwMDUsNDkwMDYsNDkwMDcsNDkwMDgsNDkwMDksNDkwMTAsNDkwMTEsNDkwMTIsNDkwMTMsNDkwMTQsNDkwMTUsNDkwMTYsNDkwMTcsNDkwMTgsNDkwMTksNDkwMjAsNDkwMjEsNDkwMjIsNDkwMjMsNDkwMjQsNDkwMjUsNDkwMjYsNDkwMjcsNDkwMjgsNDkwMjksNDkwMzAsNDkwMzEsNDkwMzIsNDkwMzMsNDkwMzQsNDkwMzUsNDkwMzYsNDkwMzcsNDkwMzgsNDkwMzksNDkwNDAsNDkwNDEsNDkwNDIsNDkwNDMsNDkwNDUsNDkwNDYsNDkwNDcsNDkwNDgsNDkwNDksNDkwNTAsNDkwNTEsNDkwNTIsNDkwNTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwNTQsNDkwNTUsNDkwNTYsNDkwNTcsNDkwNTgsNDkwNTksNDkwNjAsNDkwNjEsNDkwNjIsNDkwNjMsNDkwNjQsNDkwNjUsNDkwNjYsNDkwNjcsNDkwNjgsNDkwNjksNDkwNzAsNDkwNzEsNDkwNzMsNDkwNzQsNDkwNzUsNDkwNzYsNDkwNzcsNDkwNzgsNDkwNzksNDkwODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwODEsNDkwODIsNDkwODMsNDkwODQsNDkwODUsNDkwODYsNDkwODcsNDkwODgsNDkwODksNDkwOTAsNDkwOTEsNDkwOTIsNDkwOTQsNDkwOTUsNDkwOTYsNDkwOTcsNDkwOTgsNDkwOTksNDkxMDIsNDkxMDMsNDkxMDUsNDkxMDYsNDkxMDcsNDkxMDksNDkxMTAsNDkxMTEsNDkxMTIsNDkxMTMsNDkxMTQsNDkxMTUsNDkxMTcsNDkxMTgsNDkxMjAsNDkxMjIsNDkxMjMsNDkxMjQsNDkxMjUsNDkxMjYsNDkxMjcsNDkxMjgsNDkxMjksNDkxMzAsNDkxMzEsNDkxMzIsNDkxMzMsNDkxMzQsNDkxMzUsNDkxMzYsNDkxMzcsNDkxMzgsNDkxMzksNDkxNDAsNDkxNDEsNDkxNDIsNDkxNDMsNDkxNDQsNDkxNDUsNDkxNDYsNDkxNDcsNDkxNDgsNDkxNDksNDkxNTAsNDkxNTEsNDkxNTIsNDkxNTMsNDkxNTQsNDkxNTUsNDkxNTYsNDkxNTcsNDkxNTgsNDkxNTksNDkxNjAsNDkxNjEsNDkxNjIsNDkxNjMsNDkxNjQsNDkxNjUsNDkxNjYsNDkxNjcsNDkxNjgsNDkxNjksNDkxNzAsNDkxNzEsNDkxNzIsNDkxNzMsNDkxNzQsNDkxNzUsNDkxNzYsNDkxNzcsNDkxNzgsNDkxNzksNDkxODAsNDkxODEsNDkxODIsNDkxODMsNDkxODQsNDkxODUsNDkxODYsNDkxODcsNDkxODgsNDkxODksNDkxOTAsNDkxOTEsNDkxOTIsNDkxOTMsNDkxOTQsNDkxOTUsNDkxOTYsNDkxOTcsNDkxOTgsNDkxOTksNDkyMDAsNDkyMDEsNDkyMDIsNDkyMDMsNDkyMDQsNDkyMDUsNDkyMDYsNDkyMDcsNDkyMDgsNDkyMDksNDkyMTAsNDkyMTEsNDkyMTMsNDkyMTQsNDkyMTUsNDkyMTYsNDkyMTcsNDkyMTgsNDkyMTksNDkyMjAsNDkyMjEsNDkyMjIsNDkyMjMsNDkyMjQsNDkyMjUsNDkyMjYsNDkyMjcsNDkyMjgsNDkyMjksNDkyMzAsNDkyMzEsNDkyMzIsNDkyMzQsNDkyMzUsNDkyMzYsNDkyMzcsNDkyMzgsNDkyMzksNDkyNDEsNDkyNDIsNDkyNDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNDUsNDkyNDYsNDkyNDcsNDkyNDksNDkyNTAsNDkyNTEsNDkyNTIsNDkyNTMsNDkyNTQsNDkyNTUsNDkyNTgsNDkyNTksNDkyNjAsNDkyNjEsNDkyNjIsNDkyNjMsNDkyNjQsNDkyNjUsNDkyNjYsNDkyNjcsNDkyNjgsNDkyNjksNDkyNzAsNDkyNzEsNDkyNzIsNDkyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNzQsNDkyNzUsNDkyNzYsNDkyNzcsNDkyNzgsNDkyNzksNDkyODAsNDkyODEsNDkyODIsNDkyODMsNDkyODQsNDkyODUsNDkyODYsNDkyODcsNDkyODgsNDkyODksNDkyOTAsNDkyOTEsNDkyOTIsNDkyOTMsNDkyOTQsNDkyOTUsNDkyOTgsNDkyOTksNDkzMDEsNDkzMDIsNDkzMDMsNDkzMDUsNDkzMDYsNDkzMDcsNDkzMDgsNDkzMDksNDkzMTAsNDkzMTEsNDkzMTQsNDkzMTYsNDkzMTgsNDkzMTksNDkzMjAsNDkzMjEsNDkzMjIsNDkzMjMsNDkzMjYsNDkzMjksNDkzMzAsNDkzMzUsNDkzMzYsNDkzMzcsNDkzMzgsNDkzMzksNDkzNDIsNDkzNDYsNDkzNDcsNDkzNDgsNDkzNTAsNDkzNTEsNDkzNTQsNDkzNTUsNDkzNTcsNDkzNTgsNDkzNTksNDkzNjEsNDkzNjIsNDkzNjMsNDkzNjQsNDkzNjUsNDkzNjYsNDkzNjcsNDkzNzAsNDkzNzQsNDkzNzUsNDkzNzYsNDkzNzcsNDkzNzgsNDkzNzksNDkzODIsNDkzODMsNDkzODUsNDkzODYsNDkzODcsNDkzODksNDkzOTAsNDkzOTEsNDkzOTIsNDkzOTMsNDkzOTQsNDkzOTUsNDkzOTgsNDk0MDAsNDk0MDIsNDk0MDMsNDk0MDQsNDk0MDUsNDk0MDYsNDk0MDcsNDk0MDksNDk0MTAsNDk0MTEsNDk0MTMsNDk0MTQsNDk0MTUsNDk0MTcsNDk0MTgsNDk0MTksNDk0MjAsNDk0MjEsNDk0MjIsNDk0MjMsNDk0MjUsNDk0MjYsNDk0MjcsNDk0MjgsNDk0MzAsNDk0MzEsNDk0MzIsNDk0MzMsNDk0MzQsNDk0MzUsNDk0NDEsNDk0NDIsNDk0NDUsNDk0NDgsNDk0NDksNDk0NTAsNDk0NTEsNDk0NTQsNDk0NTgsNDk0NTksNDk0NjAsNDk0NjEsNDk0NjMsNDk0NjYsNDk0NjcsNDk0NjksNDk0NzAsNDk0NzEsNDk0NzMsNDk0NzQsNDk0NzUsNDk0NzYsNDk0NzcsNDk0NzgsNDk0NzksNDk0ODIsNDk0ODYsNDk0ODcsNDk0ODgsNDk0ODksNDk0OTAsNDk0OTEsNDk0OTQsNDk0OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk0OTcsNDk0OTgsNDk0OTksNDk1MDEsNDk1MDIsNDk1MDMsNDk1MDQsNDk1MDUsNDk1MDYsNDk1MDcsNDk1MTAsNDk1MTQsNDk1MTUsNDk1MTYsNDk1MTcsNDk1MTgsNDk1MTksNDk1MjEsNDk1MjIsNDk1MjMsNDk1MjUsNDk1MjYsNDk1MjcsNDk1MjksNDk1MzAsNDk1MzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk1MzIsNDk1MzMsNDk1MzQsNDk1MzUsNDk1MzYsNDk1MzcsNDk1MzgsNDk1MzksNDk1NDAsNDk1NDIsNDk1NDMsNDk1NDQsNDk1NDUsNDk1NDYsNDk1NDcsNDk1NTEsNDk1NTMsNDk1NTQsNDk1NTUsNDk1NTcsNDk1NTksNDk1NjAsNDk1NjEsNDk1NjIsNDk1NjMsNDk1NjYsNDk1NjgsNDk1NzAsNDk1NzEsNDk1NzIsNDk1NzQsNDk1NzUsNDk1NzgsNDk1NzksNDk1ODEsNDk1ODIsNDk1ODMsNDk1ODUsNDk1ODYsNDk1ODcsNDk1ODgsNDk1ODksNDk1OTAsNDk1OTEsNDk1OTIsNDk1OTMsNDk1OTQsNDk1OTUsNDk1OTYsNDk1OTgsNDk1OTksNDk2MDAsNDk2MDEsNDk2MDIsNDk2MDMsNDk2MDUsNDk2MDYsNDk2MDcsNDk2MDksNDk2MTAsNDk2MTEsNDk2MTMsNDk2MTQsNDk2MTUsNDk2MTYsNDk2MTcsNDk2MTgsNDk2MTksNDk2MjEsNDk2MjIsNDk2MjUsNDk2MjYsNDk2MjcsNDk2MjgsNDk2MjksNDk2MzAsNDk2MzEsNDk2MzMsNDk2MzQsNDk2MzUsNDk2MzcsNDk2MzgsNDk2MzksNDk2NDEsNDk2NDIsNDk2NDMsNDk2NDQsNDk2NDUsNDk2NDYsNDk2NDcsNDk2NTAsNDk2NTIsNDk2NTMsNDk2NTQsNDk2NTUsNDk2NTYsNDk2NTcsNDk2NTgsNDk2NTksNDk2NjIsNDk2NjMsNDk2NjUsNDk2NjYsNDk2NjcsNDk2NjksNDk2NzAsNDk2NzEsNDk2NzIsNDk2NzMsNDk2NzQsNDk2NzUsNDk2NzgsNDk2ODAsNDk2ODIsNDk2ODMsNDk2ODQsNDk2ODUsNDk2ODYsNDk2ODcsNDk2OTAsNDk2OTEsNDk2OTMsNDk2OTQsNDk2OTcsNDk2OTgsNDk2OTksNDk3MDAsNDk3MDEsNDk3MDIsNDk3MDMsNDk3MDYsNDk3MDgsNDk3MTAsNDk3MTIsNDk3MTUsNDk3MTcsNDk3MTgsNDk3MTksNDk3MjAsNDk3MjEsNDk3MjIsNDk3MjMsNDk3MjQsNDk3MjUsNDk3MjYsNDk3MjcsNDk3MjgsNDk3MjksNDk3MzAsNDk3MzEsNDk3MzIsNDk3MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3MzQsNDk3MzUsNDk3MzcsNDk3MzgsNDk3MzksNDk3NDAsNDk3NDEsNDk3NDIsNDk3NDMsNDk3NDYsNDk3NDcsNDk3NDksNDk3NTAsNDk3NTEsNDk3NTMsNDk3NTQsNDk3NTUsNDk3NTYsNDk3NTcsNDk3NTgsNDk3NTksNDk3NjEsNDk3NjIsNDk3NjMsNDk3NjQsNDk3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3NjcsNDk3NjgsNDk3NjksNDk3NzAsNDk3NzEsNDk3NzQsNDk3NzUsNDk3NzcsNDk3NzgsNDk3NzksNDk3ODEsNDk3ODIsNDk3ODMsNDk3ODQsNDk3ODUsNDk3ODYsNDk3ODcsNDk3OTAsNDk3OTIsNDk3OTQsNDk3OTUsNDk3OTYsNDk3OTcsNDk3OTgsNDk3OTksNDk4MDIsNDk4MDMsNDk4MDQsNDk4MDUsNDk4MDYsNDk4MDcsNDk4MDksNDk4MTAsNDk4MTEsNDk4MTIsNDk4MTMsNDk4MTQsNDk4MTUsNDk4MTcsNDk4MTgsNDk4MjAsNDk4MjIsNDk4MjMsNDk4MjQsNDk4MjUsNDk4MjYsNDk4MjcsNDk4MzAsNDk4MzEsNDk4MzMsNDk4MzQsNDk4MzUsNDk4MzgsNDk4MzksNDk4NDAsNDk4NDEsNDk4NDIsNDk4NDMsNDk4NDYsNDk4NDgsNDk4NTAsNDk4NTEsNDk4NTIsNDk4NTMsNDk4NTQsNDk4NTUsNDk4NTYsNDk4NTcsNDk4NTgsNDk4NTksNDk4NjAsNDk4NjEsNDk4NjIsNDk4NjMsNDk4NjQsNDk4NjUsNDk4NjYsNDk4NjcsNDk4NjgsNDk4NjksNDk4NzAsNDk4NzEsNDk4NzIsNDk4NzMsNDk4NzQsNDk4NzUsNDk4NzYsNDk4NzcsNDk4NzgsNDk4NzksNDk4ODAsNDk4ODEsNDk4ODIsNDk4ODMsNDk4ODYsNDk4ODcsNDk4ODksNDk4OTAsNDk4OTMsNDk4OTQsNDk4OTUsNDk4OTYsNDk4OTcsNDk4OTgsNDk5MDIsNDk5MDQsNDk5MDYsNDk5MDcsNDk5MDgsNDk5MDksNDk5MTEsNDk5MTQsNDk5MTcsNDk5MTgsNDk5MTksNDk5MjEsNDk5MjIsNDk5MjMsNDk5MjQsNDk5MjUsNDk5MjYsNDk5MjcsNDk5MzAsNDk5MzEsNDk5MzQsNDk5MzUsNDk5MzYsNDk5MzcsNDk5MzgsNDk5NDIsNDk5NDMsNDk5NDUsNDk5NDYsNDk5NDcsNDk5NDksNDk5NTAsNDk5NTEsNDk5NTIsNDk5NTMsNDk5NTQsNDk5NTUsNDk5NTgsNDk5NTksNDk5NjIsNDk5NjMsNDk5NjQsNDk5NjUsNDk5NjYsNDk5NjcsNDk5NjgsNDk5NjksNDk5NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5NzEsNDk5NzIsNDk5NzMsNDk5NzQsNDk5NzUsNDk5NzYsNDk5NzcsNDk5NzgsNDk5NzksNDk5ODAsNDk5ODEsNDk5ODIsNDk5ODMsNDk5ODQsNDk5ODUsNDk5ODYsNDk5ODcsNDk5ODgsNDk5OTAsNDk5OTEsNDk5OTIsNDk5OTMsNDk5OTQsNDk5OTUsNDk5OTYsNDk5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5OTgsNDk5OTksNTAwMDAsNTAwMDEsNTAwMDIsNTAwMDMsNTAwMDQsNTAwMDUsNTAwMDYsNTAwMDcsNTAwMDgsNTAwMDksNTAwMTAsNTAwMTEsNTAwMTIsNTAwMTMsNTAwMTQsNTAwMTUsNTAwMTYsNTAwMTcsNTAwMTgsNTAwMTksNTAwMjAsNTAwMjEsNTAwMjIsNTAwMjMsNTAwMjYsNTAwMjcsNTAwMjksNTAwMzAsNTAwMzEsNTAwMzMsNTAwMzUsNTAwMzYsNTAwMzcsNTAwMzgsNTAwMzksNTAwNDIsNTAwNDMsNTAwNDYsNTAwNDcsNTAwNDgsNTAwNDksNTAwNTAsNTAwNTEsNTAwNTMsNTAwNTQsNTAwNTUsNTAwNTcsNTAwNTgsNTAwNTksNTAwNjEsNTAwNjIsNTAwNjMsNTAwNjQsNTAwNjUsNTAwNjYsNTAwNjcsNTAwNjgsNTAwNjksNTAwNzAsNTAwNzEsNTAwNzIsNTAwNzMsNTAwNzQsNTAwNzUsNTAwNzYsNTAwNzcsNTAwNzgsNTAwNzksNTAwODAsNTAwODEsNTAwODIsNTAwODMsNTAwODQsNTAwODUsNTAwODYsNTAwODcsNTAwODgsNTAwODksNTAwOTAsNTAwOTEsNTAwOTIsNTAwOTMsNTAwOTQsNTAwOTUsNTAwOTYsNTAwOTcsNTAwOTgsNTAwOTksNTAxMDAsNTAxMDEsNTAxMDIsNTAxMDMsNTAxMDQsNTAxMDUsNTAxMDYsNTAxMDcsNTAxMDgsNTAxMDksNTAxMTAsNTAxMTEsNTAxMTMsNTAxMTQsNTAxMTUsNTAxMTYsNTAxMTcsNTAxMTgsNTAxMTksNTAxMjAsNTAxMjEsNTAxMjIsNTAxMjMsNTAxMjQsNTAxMjUsNTAxMjYsNTAxMjcsNTAxMjgsNTAxMjksNTAxMzAsNTAxMzEsNTAxMzIsNTAxMzMsNTAxMzQsNTAxMzUsNTAxMzgsNTAxMzksNTAxNDEsNTAxNDIsNTAxNDUsNTAxNDcsNTAxNDgsNTAxNDksNTAxNTAsNTAxNTEsNTAxNTQsNTAxNTUsNTAxNTYsNTAxNTgsNTAxNTksNTAxNjAsNTAxNjEsNTAxNjIsNTAxNjMsNTAxNjYsNTAxNjcsNTAxNjksNTAxNzAsNTAxNzEsNTAxNzIsNTAxNzMsNTAxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAxNzUsNTAxNzYsNTAxNzcsNTAxNzgsNTAxNzksNTAxODAsNTAxODEsNTAxODIsNTAxODMsNTAxODUsNTAxODYsNTAxODcsNTAxODgsNTAxODksNTAxOTAsNTAxOTEsNTAxOTMsNTAxOTQsNTAxOTUsNTAxOTYsNTAxOTcsNTAxOTgsNTAxOTksNTAyMDAsNTAyMDEsNTAyMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAyMDMsNTAyMDQsNTAyMDUsNTAyMDYsNTAyMDcsNTAyMDgsNTAyMDksNTAyMTAsNTAyMTEsNTAyMTMsNTAyMTQsNTAyMTUsNTAyMTYsNTAyMTcsNTAyMTgsNTAyMTksNTAyMjEsNTAyMjIsNTAyMjMsNTAyMjUsNTAyMjYsNTAyMjcsNTAyMjksNTAyMzAsNTAyMzEsNTAyMzIsNTAyMzMsNTAyMzQsNTAyMzUsNTAyMzgsNTAyMzksNTAyNDAsNTAyNDEsNTAyNDIsNTAyNDMsNTAyNDQsNTAyNDUsNTAyNDYsNTAyNDcsNTAyNDksNTAyNTAsNTAyNTEsNTAyNTIsNTAyNTMsNTAyNTQsNTAyNTUsNTAyNTYsNTAyNTcsNTAyNTgsNTAyNTksNTAyNjAsNTAyNjEsNTAyNjIsNTAyNjMsNTAyNjQsNTAyNjUsNTAyNjYsNTAyNjcsNTAyNjgsNTAyNjksNTAyNzAsNTAyNzEsNTAyNzIsNTAyNzMsNTAyNzQsNTAyNzUsNTAyNzgsNTAyNzksNTAyODEsNTAyODIsNTAyODMsNTAyODUsNTAyODYsNTAyODcsNTAyODgsNTAyODksNTAyOTAsNTAyOTEsNTAyOTQsNTAyOTUsNTAyOTYsNTAyOTgsNTAyOTksNTAzMDAsNTAzMDEsNTAzMDIsNTAzMDMsNTAzMDUsNTAzMDYsNTAzMDcsNTAzMDgsNTAzMDksNTAzMTAsNTAzMTEsNTAzMTIsNTAzMTMsNTAzMTQsNTAzMTUsNTAzMTYsNTAzMTcsNTAzMTgsNTAzMTksNTAzMjAsNTAzMjEsNTAzMjIsNTAzMjMsNTAzMjUsNTAzMjYsNTAzMjcsNTAzMjgsNTAzMjksNTAzMzAsNTAzMzEsNTAzMzMsNTAzMzQsNTAzMzUsNTAzMzYsNTAzMzcsNTAzMzgsNTAzMzksNTAzNDAsNTAzNDEsNTAzNDIsNTAzNDMsNTAzNDQsNTAzNDUsNTAzNDYsNTAzNDcsNTAzNDgsNTAzNDksNTAzNTAsNTAzNTEsNTAzNTIsNTAzNTMsNTAzNTQsNTAzNTUsNTAzNTYsNTAzNTcsNTAzNTgsNTAzNTksNTAzNjEsNTAzNjIsNTAzNjMsNTAzNjUsNTAzNjYsNTAzNjcsNTAzNjgsNTAzNjksNTAzNzAsNTAzNzEsNTAzNzIsNTAzNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAzNzQsNTAzNzUsNTAzNzYsNTAzNzcsNTAzNzgsNTAzNzksNTAzODAsNTAzODEsNTAzODIsNTAzODMsNTAzODQsNTAzODUsNTAzODYsNTAzODcsNTAzODgsNTAzODksNTAzOTAsNTAzOTEsNTAzOTIsNTAzOTMsNTAzOTQsNTAzOTUsNTAzOTYsNTAzOTcsNTAzOTgsNTAzOTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA0MDAsNTA0MDEsNTA0MDIsNTA0MDMsNTA0MDQsNTA0MDUsNTA0MDYsNTA0MDcsNTA0MDgsNTA0MTAsNTA0MTEsNTA0MTIsNTA0MTMsNTA0MTQsNTA0MTUsNTA0MTgsNTA0MTksNTA0MjEsNTA0MjIsNTA0MjMsNTA0MjUsNTA0MjcsNTA0MjgsNTA0MjksNTA0MzAsNTA0MzQsNTA0MzUsNTA0MzYsNTA0MzcsNTA0MzgsNTA0MzksNTA0NDAsNTA0NDEsNTA0NDIsNTA0NDMsNTA0NDUsNTA0NDYsNTA0NDcsNTA0NDksNTA0NTAsNTA0NTEsNTA0NTMsNTA0NTQsNTA0NTUsNTA0NTYsNTA0NTcsNTA0NTgsNTA0NTksNTA0NjEsNTA0NjIsNTA0NjMsNTA0NjQsNTA0NjUsNTA0NjYsNTA0NjcsNTA0NjgsNTA0NjksNTA0NzAsNTA0NzEsNTA0NzQsNTA0NzUsNTA0NzcsNTA0NzgsNTA0NzksNTA0ODEsNTA0ODIsNTA0ODMsNTA0ODQsNTA0ODUsNTA0ODYsNTA0ODcsNTA0OTAsNTA0OTIsNTA0OTQsNTA0OTUsNTA0OTYsNTA0OTcsNTA0OTgsNTA0OTksNTA1MDIsNTA1MDMsNTA1MDcsNTA1MTEsNTA1MTIsNTA1MTMsNTA1MTQsNTA1MTgsNTA1MjIsNTA1MjMsNTA1MjQsNTA1MjcsNTA1MzAsNTA1MzEsNTA1MzMsNTA1MzQsNTA1MzUsNTA1MzcsNTA1MzgsNTA1MzksNTA1NDAsNTA1NDEsNTA1NDIsNTA1NDMsNTA1NDYsNTA1NTAsNTA1NTEsNTA1NTIsNTA1NTMsNTA1NTQsNTA1NTUsNTA1NTgsNTA1NTksNTA1NjEsNTA1NjIsNTA1NjMsNTA1NjUsNTA1NjYsNTA1NjgsNTA1NjksNTA1NzAsNTA1NzEsNTA1NzQsNTA1NzYsNTA1NzgsNTA1NzksNTA1ODAsNTA1ODIsNTA1ODUsNTA1ODYsNTA1ODcsNTA1ODksNTA1OTAsNTA1OTEsNTA1OTMsNTA1OTQsNTA1OTUsNTA1OTYsNTA1OTcsNTA1OTgsNTA1OTksNTA2MDAsNTA2MDIsNTA2MDMsNTA2MDQsNTA2MDUsNTA2MDYsNTA2MDcsNTA2MDgsNTA2MDksNTA2MTAsNTA2MTEsNTA2MTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2MTUsNTA2MTgsNTA2MjMsNTA2MjQsNTA2MjUsNTA2MjYsNTA2MjcsNTA2MzUsNTA2MzcsNTA2MzksNTA2NDIsNTA2NDMsNTA2NDUsNTA2NDYsNTA2NDcsNTA2NDksNTA2NTAsNTA2NTEsNTA2NTIsNTA2NTMsNTA2NTQsNTA2NTUsNTA2NTgsNTA2NjAsNTA2NjIsNTA2NjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2NjQsNTA2NjUsNTA2NjYsNTA2NjcsNTA2NzEsNTA2NzMsNTA2NzQsNTA2NzUsNTA2NzcsNTA2ODAsNTA2ODEsNTA2ODIsNTA2ODMsNTA2OTAsNTA2OTEsNTA2OTIsNTA2OTcsNTA2OTgsNTA2OTksNTA3MDEsNTA3MDIsNTA3MDMsNTA3MDUsNTA3MDYsNTA3MDcsNTA3MDgsNTA3MDksNTA3MTAsNTA3MTEsNTA3MTQsNTA3MTcsNTA3MTgsNTA3MTksNTA3MjAsNTA3MjEsNTA3MjIsNTA3MjMsNTA3MjYsNTA3MjcsNTA3MjksNTA3MzAsNTA3MzEsNTA3MzUsNTA3MzcsNTA3MzgsNTA3NDIsNTA3NDQsNTA3NDYsNTA3NDgsNTA3NDksNTA3NTAsNTA3NTEsNTA3NTQsNTA3NTUsNTA3NTcsNTA3NTgsNTA3NTksNTA3NjEsNTA3NjIsNTA3NjMsNTA3NjQsNTA3NjUsNTA3NjYsNTA3NjcsNTA3NzAsNTA3NzQsNTA3NzUsNTA3NzYsNTA3NzcsNTA3NzgsNTA3NzksNTA3ODIsNTA3ODMsNTA3ODUsNTA3ODYsNTA3ODcsNTA3ODgsNTA3ODksNTA3OTAsNTA3OTEsNTA3OTIsNTA3OTMsNTA3OTQsNTA3OTUsNTA3OTcsNTA3OTgsNTA4MDAsNTA4MDIsNTA4MDMsNTA4MDQsNTA4MDUsNTA4MDYsNTA4MDcsNTA4MTAsNTA4MTEsNTA4MTMsNTA4MTQsNTA4MTUsNTA4MTcsNTA4MTgsNTA4MTksNTA4MjAsNTA4MjEsNTA4MjIsNTA4MjMsNTA4MjYsNTA4MjgsNTA4MzAsNTA4MzEsNTA4MzIsNTA4MzMsNTA4MzQsNTA4MzUsNTA4MzgsNTA4MzksNTA4NDEsNTA4NDIsNTA4NDMsNTA4NDUsNTA4NDYsNTA4NDcsNTA4NDgsNTA4NDksNTA4NTAsNTA4NTEsNTA4NTQsNTA4NTYsNTA4NTgsNTA4NTksNTA4NjAsNTA4NjEsNTA4NjIsNTA4NjMsNTA4NjYsNTA4NjcsNTA4NjksNTA4NzAsNTA4NzEsNTA4NzUsNTA4NzYsNTA4NzcsNTA4NzgsNTA4NzksNTA4ODIsNTA4ODQsNTA4ODYsNTA4ODcsNTA4ODgsNTA4ODksNTA4OTAsNTA4OTEsNTA4OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA4OTUsNTA4OTcsNTA4OTgsNTA4OTksNTA5MDEsNTA5MDIsNTA5MDMsNTA5MDQsNTA5MDUsNTA5MDYsNTA5MDcsNTA5MTAsNTA5MTEsNTA5MTQsNTA5MTUsNTA5MTYsNTA5MTcsNTA5MTgsNTA5MTksNTA5MjIsNTA5MjMsNTA5MjUsNTA5MjYsNTA5MjcsNTA5MjksNTA5MzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA5MzEsNTA5MzIsNTA5MzMsNTA5MzQsNTA5MzUsNTA5MzgsNTA5MzksNTA5NDAsNTA5NDIsNTA5NDMsNTA5NDQsNTA5NDUsNTA5NDYsNTA5NDcsNTA5NTAsNTA5NTEsNTA5NTMsNTA5NTQsNTA5NTUsNTA5NTcsNTA5NTgsNTA5NTksNTA5NjAsNTA5NjEsNTA5NjIsNTA5NjMsNTA5NjYsNTA5NjgsNTA5NzAsNTA5NzEsNTA5NzIsNTA5NzMsNTA5NzQsNTA5NzUsNTA5NzgsNTA5NzksNTA5ODEsNTA5ODIsNTA5ODMsNTA5ODUsNTA5ODYsNTA5ODcsNTA5ODgsNTA5ODksNTA5OTAsNTA5OTEsNTA5OTQsNTA5OTYsNTA5OTgsNTEwMDAsNTEwMDEsNTEwMDIsNTEwMDMsNTEwMDYsNTEwMDcsNTEwMDksNTEwMTAsNTEwMTEsNTEwMTMsNTEwMTQsNTEwMTUsNTEwMTYsNTEwMTcsNTEwMTksNTEwMjIsNTEwMjQsNTEwMzMsNTEwMzQsNTEwMzUsNTEwMzcsNTEwMzgsNTEwMzksNTEwNDEsNTEwNDIsNTEwNDMsNTEwNDQsNTEwNDUsNTEwNDYsNTEwNDcsNTEwNDksNTEwNTAsNTEwNTIsNTEwNTMsNTEwNTQsNTEwNTUsNTEwNTYsNTEwNTcsNTEwNTgsNTEwNTksNTEwNjIsNTEwNjMsNTEwNjUsNTEwNjYsNTEwNjcsNTEwNzEsNTEwNzIsNTEwNzMsNTEwNzQsNTEwNzgsNTEwODMsNTEwODQsNTEwODUsNTEwODcsNTEwOTAsNTEwOTEsNTEwOTMsNTEwOTcsNTEwOTksNTExMDAsNTExMDEsNTExMDIsNTExMDMsNTExMDYsNTExMTEsNTExMTIsNTExMTMsNTExMTQsNTExMTUsNTExMTgsNTExMTksNTExMjEsNTExMjIsNTExMjMsNTExMjUsNTExMjYsNTExMjcsNTExMjgsNTExMjksNTExMzAsNTExMzEsNTExMzQsNTExMzgsNTExMzksNTExNDAsNTExNDEsNTExNDIsNTExNDMsNTExNDYsNTExNDcsNTExNDksNTExNTEsNTExNTMsNTExNTQsNTExNTUsNTExNTYsNTExNTcsNTExNTgsNTExNTksNTExNjEsNTExNjIsNTExNjMsNTExNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExNjYsNTExNjcsNTExNjgsNTExNjksNTExNzAsNTExNzEsNTExNzMsNTExNzQsNTExNzUsNTExNzcsNTExNzgsNTExNzksNTExODEsNTExODIsNTExODMsNTExODQsNTExODUsNTExODYsNTExODcsNTExODgsNTExODksNTExOTAsNTExOTEsNTExOTIsNTExOTMsNTExOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExOTUsNTExOTYsNTExOTcsNTExOTgsNTExOTksNTEyMDIsNTEyMDMsNTEyMDUsNTEyMDYsNTEyMDcsNTEyMDksNTEyMTEsNTEyMTIsNTEyMTMsNTEyMTQsNTEyMTUsNTEyMTgsNTEyMjAsNTEyMjMsNTEyMjQsNTEyMjUsNTEyMjYsNTEyMjcsNTEyMzAsNTEyMzEsNTEyMzMsNTEyMzQsNTEyMzUsNTEyMzcsNTEyMzgsNTEyMzksNTEyNDAsNTEyNDEsNTEyNDIsNTEyNDMsNTEyNDYsNTEyNDgsNTEyNTAsNTEyNTEsNTEyNTIsNTEyNTMsNTEyNTQsNTEyNTUsNTEyNTcsNTEyNTgsNTEyNTksNTEyNjEsNTEyNjIsNTEyNjMsNTEyNjUsNTEyNjYsNTEyNjcsNTEyNjgsNTEyNjksNTEyNzAsNTEyNzEsNTEyNzQsNTEyNzUsNTEyNzgsNTEyNzksNTEyODAsNTEyODEsNTEyODIsNTEyODMsNTEyODUsNTEyODYsNTEyODcsNTEyODgsNTEyODksNTEyOTAsNTEyOTEsNTEyOTIsNTEyOTMsNTEyOTQsNTEyOTUsNTEyOTYsNTEyOTcsNTEyOTgsNTEyOTksNTEzMDAsNTEzMDEsNTEzMDIsNTEzMDMsNTEzMDQsNTEzMDUsNTEzMDYsNTEzMDcsNTEzMDgsNTEzMDksNTEzMTAsNTEzMTEsNTEzMTQsNTEzMTUsNTEzMTcsNTEzMTgsNTEzMTksNTEzMjEsNTEzMjMsNTEzMjQsNTEzMjUsNTEzMjYsNTEzMjcsNTEzMzAsNTEzMzIsNTEzMzYsNTEzMzcsNTEzMzgsNTEzNDIsNTEzNDMsNTEzNDQsNTEzNDUsNTEzNDYsNTEzNDcsNTEzNDksNTEzNTAsNTEzNTEsNTEzNTIsNTEzNTMsNTEzNTQsNTEzNTUsNTEzNTYsNTEzNTgsNTEzNjAsNTEzNjIsNTEzNjMsNTEzNjQsNTEzNjUsNTEzNjYsNTEzNjcsNTEzNjksNTEzNzAsNTEzNzEsNTEzNzIsNTEzNzMsNTEzNzQsNTEzNzUsNTEzNzYsNTEzNzcsNTEzNzgsNTEzNzksNTEzODAsNTEzODEsNTEzODIsNTEzODMsNTEzODQsNTEzODUsNTEzODYsNTEzODcsNTEzOTAsNTEzOTEsNTEzOTIsNTEzOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEzOTQsNTEzOTUsNTEzOTcsNTEzOTgsNTEzOTksNTE0MDEsNTE0MDIsNTE0MDMsNTE0MDUsNTE0MDYsNTE0MDcsNTE0MDgsNTE0MDksNTE0MTAsNTE0MTEsNTE0MTQsNTE0MTYsNTE0MTgsNTE0MTksNTE0MjAsNTE0MjEsNTE0MjIsNTE0MjMsNTE0MjYsNTE0MjcsNTE0MjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE0MzAsNTE0MzEsNTE0MzIsNTE0MzMsNTE0MzQsNTE0MzUsNTE0MzYsNTE0MzcsNTE0MzgsNTE0MzksNTE0NDAsNTE0NDEsNTE0NDIsNTE0NDMsNTE0NDQsNTE0NDYsNTE0NDcsNTE0NDgsNTE0NDksNTE0NTAsNTE0NTEsNTE0NTQsNTE0NTUsNTE0NTcsNTE0NTgsNTE0NTksNTE0NjMsNTE0NjQsNTE0NjUsNTE0NjYsNTE0NjcsNTE0NzAsMTIyODgsMTIyODksMTIyOTAsMTgzLDgyMjksODIzMCwxNjgsMTIyOTEsMTczLDgyMTMsODc0MSw2NTM0MCw4NzY0LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODgwMCw4ODA0LDg4MDUsODczNCw4NzU2LDE3Niw4MjQyLDgyNDMsODQ1MSw4NDkxLDY1NTA0LDY1NTA1LDY1NTA5LDk3OTQsOTc5Miw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDE2Nyw4MjUxLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODU5NCw4NTkyLDg1OTMsODU5NSw4NTk2LDEyMzA3LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsODc0Myw4NzQ0LDY1NTA2LDUxNDcyLDUxNDc0LDUxNDc1LDUxNDc2LDUxNDc3LDUxNDc4LDUxNDc5LDUxNDgxLDUxNDgyLDUxNDgzLDUxNDg0LDUxNDg1LDUxNDg2LDUxNDg3LDUxNDg4LDUxNDg5LDUxNDkwLDUxNDkxLDUxNDkyLDUxNDkzLDUxNDk0LDUxNDk1LDUxNDk2LDUxNDk3LDUxNDk4LDUxNDk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTAxLDUxNTAyLDUxNTAzLDUxNTA0LDUxNTA1LDUxNTA2LDUxNTA3LDUxNTA5LDUxNTEwLDUxNTExLDUxNTEyLDUxNTEzLDUxNTE0LDUxNTE1LDUxNTE2LDUxNTE3LDUxNTE4LDUxNTE5LDUxNTIwLDUxNTIxLDUxNTIyLDUxNTIzLDUxNTI0LDUxNTI1LDUxNTI2LDUxNTI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTI4LDUxNTI5LDUxNTMwLDUxNTMxLDUxNTMyLDUxNTMzLDUxNTM0LDUxNTM1LDUxNTM4LDUxNTM5LDUxNTQxLDUxNTQyLDUxNTQzLDUxNTQ1LDUxNTQ2LDUxNTQ3LDUxNTQ4LDUxNTQ5LDUxNTUwLDUxNTUxLDUxNTU0LDUxNTU2LDUxNTU3LDUxNTU4LDUxNTU5LDUxNTYwLDUxNTYxLDUxNTYyLDUxNTYzLDUxNTY1LDUxNTY2LDUxNTY3LDg2NTgsODY2MCw4NzA0LDg3MDcsMTgwLDY1Mzc0LDcxMSw3MjgsNzMzLDczMCw3MjksMTg0LDczMSwxNjEsMTkxLDcyMCw4NzUwLDg3MjEsODcxOSwxNjQsODQ1Nyw4MjQwLDk2NjUsOTY2NCw5NjU1LDk2NTQsOTgyOCw5ODI0LDk4MjUsOTgyOSw5ODMxLDk4MjcsODg1Nyw5NjcyLDk2MzUsOTY4MCw5NjgxLDk2MTgsOTYzNiw5NjM3LDk2NDAsOTYzOSw5NjM4LDk2NDEsOTgzMiw5NzQzLDk3NDIsOTc1Niw5NzU4LDE4Miw4MjI0LDgyMjUsODU5Nyw4NTk5LDg2MDEsODU5OCw4NjAwLDk4MzcsOTgzMyw5ODM0LDk4MzYsMTI5MjcsMTI4MjgsODQ3MCwxMzI1NSw4NDgyLDEzMjUwLDEzMjcyLDg0ODEsODM2NCwxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTY5LDUxNTcwLDUxNTcxLDUxNTczLDUxNTc0LDUxNTc1LDUxNTc2LDUxNTc3LDUxNTc4LDUxNTc5LDUxNTgxLDUxNTgyLDUxNTgzLDUxNTg0LDUxNTg1LDUxNTg2LDUxNTg3LDUxNTg4LDUxNTg5LDUxNTkwLDUxNTkxLDUxNTk0LDUxNTk1LDUxNTk3LDUxNTk4LDUxNTk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjAxLDUxNjAyLDUxNjAzLDUxNjA0LDUxNjA1LDUxNjA2LDUxNjA3LDUxNjEwLDUxNjEyLDUxNjE0LDUxNjE1LDUxNjE2LDUxNjE3LDUxNjE4LDUxNjE5LDUxNjIwLDUxNjIxLDUxNjIyLDUxNjIzLDUxNjI0LDUxNjI1LDUxNjI2LDUxNjI3LDUxNjI4LDUxNjI5LDUxNjMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjMxLDUxNjMyLDUxNjMzLDUxNjM0LDUxNjM1LDUxNjM2LDUxNjM3LDUxNjM4LDUxNjM5LDUxNjQwLDUxNjQxLDUxNjQyLDUxNjQzLDUxNjQ0LDUxNjQ1LDUxNjQ2LDUxNjQ3LDUxNjUwLDUxNjUxLDUxNjUzLDUxNjU0LDUxNjU3LDUxNjU5LDUxNjYwLDUxNjYxLDUxNjYyLDUxNjYzLDUxNjY2LDUxNjY4LDUxNjcxLDUxNjcyLDUxNjc1LDY1MjgxLDY1MjgyLDY1MjgzLDY1Mjg0LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1NTEwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDUxNjc4LDUxNjc5LDUxNjgxLDUxNjgzLDUxNjg1LDUxNjg2LDUxNjg4LDUxNjg5LDUxNjkwLDUxNjkxLDUxNjk0LDUxNjk4LDUxNjk5LDUxNzAwLDUxNzAxLDUxNzAyLDUxNzAzLDUxNzA2LDUxNzA3LDUxNzA5LDUxNzEwLDUxNzExLDUxNzEzLDUxNzE0LDUxNzE1LDUxNzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzE3LDUxNzE4LDUxNzE5LDUxNzIyLDUxNzI2LDUxNzI3LDUxNzI4LDUxNzI5LDUxNzMwLDUxNzMxLDUxNzMzLDUxNzM0LDUxNzM1LDUxNzM3LDUxNzM4LDUxNzM5LDUxNzQwLDUxNzQxLDUxNzQyLDUxNzQzLDUxNzQ0LDUxNzQ1LDUxNzQ2LDUxNzQ3LDUxNzQ4LDUxNzQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzUwLDUxNzUxLDUxNzUyLDUxNzU0LDUxNzU1LDUxNzU2LDUxNzU3LDUxNzU4LDUxNzU5LDUxNzYwLDUxNzYxLDUxNzYyLDUxNzYzLDUxNzY0LDUxNzY1LDUxNzY2LDUxNzY3LDUxNzY4LDUxNzY5LDUxNzcwLDUxNzcxLDUxNzcyLDUxNzczLDUxNzc0LDUxNzc1LDUxNzc2LDUxNzc3LDUxNzc4LDUxNzc5LDUxNzgwLDUxNzgxLDUxNzgyLDEyNTkzLDEyNTk0LDEyNTk1LDEyNTk2LDEyNTk3LDEyNTk4LDEyNTk5LDEyNjAwLDEyNjAxLDEyNjAyLDEyNjAzLDEyNjA0LDEyNjA1LDEyNjA2LDEyNjA3LDEyNjA4LDEyNjA5LDEyNjEwLDEyNjExLDEyNjEyLDEyNjEzLDEyNjE0LDEyNjE1LDEyNjE2LDEyNjE3LDEyNjE4LDEyNjE5LDEyNjIwLDEyNjIxLDEyNjIyLDEyNjIzLDEyNjI0LDEyNjI1LDEyNjI2LDEyNjI3LDEyNjI4LDEyNjI5LDEyNjMwLDEyNjMxLDEyNjMyLDEyNjMzLDEyNjM0LDEyNjM1LDEyNjM2LDEyNjM3LDEyNjM4LDEyNjM5LDEyNjQwLDEyNjQxLDEyNjQyLDEyNjQzLDEyNjQ0LDEyNjQ1LDEyNjQ2LDEyNjQ3LDEyNjQ4LDEyNjQ5LDEyNjUwLDEyNjUxLDEyNjUyLDEyNjUzLDEyNjU0LDEyNjU1LDEyNjU2LDEyNjU3LDEyNjU4LDEyNjU5LDEyNjYwLDEyNjYxLDEyNjYyLDEyNjYzLDEyNjY0LDEyNjY1LDEyNjY2LDEyNjY3LDEyNjY4LDEyNjY5LDEyNjcwLDEyNjcxLDEyNjcyLDEyNjczLDEyNjc0LDEyNjc1LDEyNjc2LDEyNjc3LDEyNjc4LDEyNjc5LDEyNjgwLDEyNjgxLDEyNjgyLDEyNjgzLDEyNjg0LDEyNjg1LDEyNjg2LDUxNzgzLDUxNzg0LDUxNzg1LDUxNzg2LDUxNzg3LDUxNzkwLDUxNzkxLDUxNzkzLDUxNzk0LDUxNzk1LDUxNzk3LDUxNzk4LDUxNzk5LDUxODAwLDUxODAxLDUxODAyLDUxODAzLDUxODA2LDUxODEwLDUxODExLDUxODEyLDUxODEzLDUxODE0LDUxODE1LDUxODE3LDUxODE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODE5LDUxODIwLDUxODIxLDUxODIyLDUxODIzLDUxODI0LDUxODI1LDUxODI2LDUxODI3LDUxODI4LDUxODI5LDUxODMwLDUxODMxLDUxODMyLDUxODMzLDUxODM0LDUxODM1LDUxODM2LDUxODM4LDUxODM5LDUxODQwLDUxODQxLDUxODQyLDUxODQzLDUxODQ1LDUxODQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODQ3LDUxODQ4LDUxODQ5LDUxODUwLDUxODUxLDUxODUyLDUxODUzLDUxODU0LDUxODU1LDUxODU2LDUxODU3LDUxODU4LDUxODU5LDUxODYwLDUxODYxLDUxODYyLDUxODYzLDUxODY1LDUxODY2LDUxODY3LDUxODY4LDUxODY5LDUxODcwLDUxODcxLDUxODcyLDUxODczLDUxODc0LDUxODc1LDUxODc2LDUxODc3LDUxODc4LDUxODc5LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4ODAsNTE4ODEsNTE4ODIsNTE4ODMsNTE4ODQsNTE4ODUsNTE4ODYsNTE4ODcsNTE4ODgsNTE4ODksNTE4OTAsNTE4OTEsNTE4OTIsNTE4OTMsNTE4OTQsNTE4OTUsNTE4OTYsNTE4OTcsNTE4OTgsNTE4OTksNTE5MDIsNTE5MDMsNTE5MDUsNTE5MDYsNTE5MDcsNTE5MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5MTAsNTE5MTEsNTE5MTIsNTE5MTMsNTE5MTQsNTE5MTUsNTE5MTgsNTE5MjAsNTE5MjIsNTE5MjQsNTE5MjUsNTE5MjYsNTE5MjcsNTE5MzAsNTE5MzEsNTE5MzIsNTE5MzMsNTE5MzQsNTE5MzUsNTE5MzcsNTE5MzgsNTE5MzksNTE5NDAsNTE5NDEsNTE5NDIsNTE5NDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NDQsNTE5NDUsNTE5NDYsNTE5NDcsNTE5NDksNTE5NTAsNTE5NTEsNTE5NTIsNTE5NTMsNTE5NTQsNTE5NTUsNTE5NTcsNTE5NTgsNTE5NTksNTE5NjAsNTE5NjEsNTE5NjIsNTE5NjMsNTE5NjQsNTE5NjUsNTE5NjYsNTE5NjcsNTE5NjgsNTE5NjksNTE5NzAsNTE5NzEsNTE5NzIsNTE5NzMsNTE5NzQsNTE5NzUsNTE5NzcsNTE5NzgsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LDk0OTAsOTQ4OSw5NDk4LDk0OTcsOTQ5NCw5NDkzLDk0ODYsOTQ4NSw5NTAyLDk1MDMsOTUwNSw5NTA2LDk1MTAsOTUxMSw5NTEzLDk1MTQsOTUxNyw5NTE4LDk1MjEsOTUyMiw5NTI1LDk1MjYsOTUyOSw5NTMwLDk1MzMsOTUzNCw5NTM2LDk1MzcsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk3OSw1MTk4MCw1MTk4MSw1MTk4Miw1MTk4Myw1MTk4NSw1MTk4Niw1MTk4Nyw1MTk4OSw1MTk5MCw1MTk5MSw1MTk5Myw1MTk5NCw1MTk5NSw1MTk5Niw1MTk5Nyw1MTk5OCw1MTk5OSw1MjAwMiw1MjAwMyw1MjAwNCw1MjAwNSw1MjAwNiw1MjAwNyw1MjAwOCw1MjAwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAxMCw1MjAxMSw1MjAxMiw1MjAxMyw1MjAxNCw1MjAxNSw1MjAxNiw1MjAxNyw1MjAxOCw1MjAxOSw1MjAyMCw1MjAyMSw1MjAyMiw1MjAyMyw1MjAyNCw1MjAyNSw1MjAyNiw1MjAyNyw1MjAyOCw1MjAyOSw1MjAzMCw1MjAzMSw1MjAzMiw1MjAzNCw1MjAzNSw1MjAzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAzNyw1MjAzOCw1MjAzOSw1MjA0Miw1MjA0Myw1MjA0NSw1MjA0Niw1MjA0Nyw1MjA0OSw1MjA1MCw1MjA1MSw1MjA1Miw1MjA1Myw1MjA1NCw1MjA1NSw1MjA1OCw1MjA1OSw1MjA2MCw1MjA2Miw1MjA2Myw1MjA2NCw1MjA2NSw1MjA2Niw1MjA2Nyw1MjA2OSw1MjA3MCw1MjA3MSw1MjA3Miw1MjA3Myw1MjA3NCw1MjA3NSw1MjA3NiwxMzIwNSwxMzIwNiwxMzIwNyw4NDY3LDEzMjA4LDEzMjUyLDEzMjE5LDEzMjIwLDEzMjIxLDEzMjIyLDEzMjA5LDEzMjEwLDEzMjExLDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE1LDEzMjE2LDEzMjE3LDEzMjE4LDEzMjU4LDEzMTk3LDEzMTk4LDEzMTk5LDEzMjYzLDEzMTkyLDEzMTkzLDEzMjU2LDEzMjIzLDEzMjI0LDEzMjMyLDEzMjMzLDEzMjM0LDEzMjM1LDEzMjM2LDEzMjM3LDEzMjM4LDEzMjM5LDEzMjQwLDEzMjQxLDEzMTg0LDEzMTg1LDEzMTg2LDEzMTg3LDEzMTg4LDEzMjQyLDEzMjQzLDEzMjQ0LDEzMjQ1LDEzMjQ2LDEzMjQ3LDEzMjAwLDEzMjAxLDEzMjAyLDEzMjAzLDEzMjA0LDg0ODYsMTMyNDgsMTMyNDksMTMxOTQsMTMxOTUsMTMxOTYsMTMyNzAsMTMyNTMsMTMyMjksMTMyMzAsMTMyMzEsMTMyNzUsMTMyMjUsMTMyMjYsMTMyMjcsMTMyMjgsMTMyNzcsMTMyNjQsMTMyNjcsMTMyNTEsMTMyNTcsMTMyNzYsMTMyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwNzcsNTIwNzgsNTIwNzksNTIwODAsNTIwODEsNTIwODIsNTIwODMsNTIwODQsNTIwODUsNTIwODYsNTIwODcsNTIwOTAsNTIwOTEsNTIwOTIsNTIwOTMsNTIwOTQsNTIwOTUsNTIwOTYsNTIwOTcsNTIwOTgsNTIwOTksNTIxMDAsNTIxMDEsNTIxMDIsNTIxMDMsNTIxMDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMDUsNTIxMDYsNTIxMDcsNTIxMDgsNTIxMDksNTIxMTAsNTIxMTEsNTIxMTIsNTIxMTMsNTIxMTQsNTIxMTUsNTIxMTYsNTIxMTcsNTIxMTgsNTIxMTksNTIxMjAsNTIxMjEsNTIxMjIsNTIxMjMsNTIxMjUsNTIxMjYsNTIxMjcsNTIxMjgsNTIxMjksNTIxMzAsNTIxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMzIsNTIxMzMsNTIxMzQsNTIxMzUsNTIxMzYsNTIxMzcsNTIxMzgsNTIxMzksNTIxNDAsNTIxNDEsNTIxNDIsNTIxNDMsNTIxNDQsNTIxNDUsNTIxNDYsNTIxNDcsNTIxNDgsNTIxNDksNTIxNTAsNTIxNTEsNTIxNTMsNTIxNTQsNTIxNTUsNTIxNTYsNTIxNTcsNTIxNTgsNTIxNTksNTIxNjAsNTIxNjEsNTIxNjIsNTIxNjMsNTIxNjQsMTk4LDIwOCwxNzAsMjk0LG51bGwsMzA2LG51bGwsMzE5LDMyMSwyMTYsMzM4LDE4NiwyMjIsMzU4LDMzMCxudWxsLDEyODk2LDEyODk3LDEyODk4LDEyODk5LDEyOTAwLDEyOTAxLDEyOTAyLDEyOTAzLDEyOTA0LDEyOTA1LDEyOTA2LDEyOTA3LDEyOTA4LDEyOTA5LDEyOTEwLDEyOTExLDEyOTEyLDEyOTEzLDEyOTE0LDEyOTE1LDEyOTE2LDEyOTE3LDEyOTE4LDEyOTE5LDEyOTIwLDEyOTIxLDEyOTIyLDEyOTIzLDk0MjQsOTQyNSw5NDI2LDk0MjcsOTQyOCw5NDI5LDk0MzAsOTQzMSw5NDMyLDk0MzMsOTQzNCw5NDM1LDk0MzYsOTQzNyw5NDM4LDk0MzksOTQ0MCw5NDQxLDk0NDIsOTQ0Myw5NDQ0LDk0NDUsOTQ0Niw5NDQ3LDk0NDgsOTQ0OSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiwxODksODUzMSw4NTMyLDE4OCwxOTAsODUzOSw4NTQwLDg1NDEsODU0Miw1MjE2NSw1MjE2Niw1MjE2Nyw1MjE2OCw1MjE2OSw1MjE3MCw1MjE3MSw1MjE3Miw1MjE3Myw1MjE3NCw1MjE3NSw1MjE3Niw1MjE3Nyw1MjE3OCw1MjE3OSw1MjE4MSw1MjE4Miw1MjE4Myw1MjE4NCw1MjE4NSw1MjE4Niw1MjE4Nyw1MjE4OCw1MjE4OSw1MjE5MCw1MjE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjE5Miw1MjE5Myw1MjE5NCw1MjE5NSw1MjE5Nyw1MjE5OCw1MjIwMCw1MjIwMiw1MjIwMyw1MjIwNCw1MjIwNSw1MjIwNiw1MjIwNyw1MjIwOCw1MjIwOSw1MjIxMCw1MjIxMSw1MjIxMiw1MjIxMyw1MjIxNCw1MjIxNSw1MjIxNiw1MjIxNyw1MjIxOCw1MjIxOSw1MjIyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjIyMSw1MjIyMiw1MjIyMyw1MjIyNCw1MjIyNSw1MjIyNiw1MjIyNyw1MjIyOCw1MjIyOSw1MjIzMCw1MjIzMSw1MjIzMiw1MjIzMyw1MjIzNCw1MjIzNSw1MjIzOCw1MjIzOSw1MjI0MSw1MjI0Miw1MjI0Myw1MjI0NSw1MjI0Niw1MjI0Nyw1MjI0OCw1MjI0OSw1MjI1MCw1MjI1MSw1MjI1NCw1MjI1NSw1MjI1Niw1MjI1OSw1MjI2MCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIwLDMyMiwyNDgsMzM5LDIyMywyNTQsMzU5LDMzMSwzMjksMTI4MDAsMTI4MDEsMTI4MDIsMTI4MDMsMTI4MDQsMTI4MDUsMTI4MDYsMTI4MDcsMTI4MDgsMTI4MDksMTI4MTAsMTI4MTEsMTI4MTIsMTI4MTMsMTI4MTQsMTI4MTUsMTI4MTYsMTI4MTcsMTI4MTgsMTI4MTksMTI4MjAsMTI4MjEsMTI4MjIsMTI4MjMsMTI4MjQsMTI4MjUsMTI4MjYsMTI4MjcsOTM3Miw5MzczLDkzNzQsOTM3NSw5Mzc2LDkzNzcsOTM3OCw5Mzc5LDkzODAsOTM4MSw5MzgyLDkzODMsOTM4NCw5Mzg1LDkzODYsOTM4Nyw5Mzg4LDkzODksOTM5MCw5MzkxLDkzOTIsOTM5Myw5Mzk0LDkzOTUsOTM5Niw5Mzk3LDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDE4NSwxNzgsMTc5LDgzMDgsODMxOSw4MzIxLDgzMjIsODMyMyw4MzI0LDUyMjYxLDUyMjYyLDUyMjY2LDUyMjY3LDUyMjY5LDUyMjcxLDUyMjczLDUyMjc0LDUyMjc1LDUyMjc2LDUyMjc3LDUyMjc4LDUyMjc5LDUyMjgyLDUyMjg3LDUyMjg4LDUyMjg5LDUyMjkwLDUyMjkxLDUyMjk0LDUyMjk1LDUyMjk3LDUyMjk4LDUyMjk5LDUyMzAxLDUyMzAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzAzLDUyMzA0LDUyMzA1LDUyMzA2LDUyMzA3LDUyMzEwLDUyMzE0LDUyMzE1LDUyMzE2LDUyMzE3LDUyMzE4LDUyMzE5LDUyMzIxLDUyMzIyLDUyMzIzLDUyMzI1LDUyMzI3LDUyMzI5LDUyMzMwLDUyMzMxLDUyMzMyLDUyMzMzLDUyMzM0LDUyMzM1LDUyMzM3LDUyMzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzM5LDUyMzQwLDUyMzQyLDUyMzQzLDUyMzQ0LDUyMzQ1LDUyMzQ2LDUyMzQ3LDUyMzQ4LDUyMzQ5LDUyMzUwLDUyMzUxLDUyMzUyLDUyMzUzLDUyMzU0LDUyMzU1LDUyMzU2LDUyMzU3LDUyMzU4LDUyMzU5LDUyMzYwLDUyMzYxLDUyMzYyLDUyMzYzLDUyMzY0LDUyMzY1LDUyMzY2LDUyMzY3LDUyMzY4LDUyMzY5LDUyMzcwLDUyMzcxLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjM3Miw1MjM3Myw1MjM3NCw1MjM3NSw1MjM3OCw1MjM3OSw1MjM4MSw1MjM4Miw1MjM4Myw1MjM4NSw1MjM4Niw1MjM4Nyw1MjM4OCw1MjM4OSw1MjM5MCw1MjM5MSw1MjM5NCw1MjM5OCw1MjM5OSw1MjQwMCw1MjQwMSw1MjQwMiw1MjQwMyw1MjQwNiw1MjQwNyw1MjQwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQxMCw1MjQxMSw1MjQxMyw1MjQxNCw1MjQxNSw1MjQxNiw1MjQxNyw1MjQxOCw1MjQxOSw1MjQyMiw1MjQyNCw1MjQyNiw1MjQyNyw1MjQyOCw1MjQyOSw1MjQzMCw1MjQzMSw1MjQzMyw1MjQzNCw1MjQzNSw1MjQzNyw1MjQzOCw1MjQzOSw1MjQ0MCw1MjQ0MSw1MjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ0Myw1MjQ0NCw1MjQ0NSw1MjQ0Niw1MjQ0Nyw1MjQ0OCw1MjQ0OSw1MjQ1MCw1MjQ1MSw1MjQ1Myw1MjQ1NCw1MjQ1NSw1MjQ1Niw1MjQ1Nyw1MjQ1OCw1MjQ1OSw1MjQ2MSw1MjQ2Miw1MjQ2Myw1MjQ2NSw1MjQ2Niw1MjQ2Nyw1MjQ2OCw1MjQ2OSw1MjQ3MCw1MjQ3MSw1MjQ3Miw1MjQ3Myw1MjQ3NCw1MjQ3NSw1MjQ3Niw1MjQ3NywxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NzgsNTI0NzksNTI0ODAsNTI0ODIsNTI0ODMsNTI0ODQsNTI0ODUsNTI0ODYsNTI0ODcsNTI0OTAsNTI0OTEsNTI0OTMsNTI0OTQsNTI0OTUsNTI0OTcsNTI0OTgsNTI0OTksNTI1MDAsNTI1MDEsNTI1MDIsNTI1MDMsNTI1MDYsNTI1MDgsNTI1MTAsNTI1MTEsNTI1MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1MTMsNTI1MTQsNTI1MTUsNTI1MTcsNTI1MTgsNTI1MTksNTI1MjEsNTI1MjIsNTI1MjMsNTI1MjUsNTI1MjYsNTI1MjcsNTI1MjgsNTI1MjksNTI1MzAsNTI1MzEsNTI1MzIsNTI1MzMsNTI1MzQsNTI1MzUsNTI1MzYsNTI1MzgsNTI1MzksNTI1NDAsNTI1NDEsNTI1NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NDMsNTI1NDQsNTI1NDUsNTI1NDYsNTI1NDcsNTI1NDgsNTI1NDksNTI1NTAsNTI1NTEsNTI1NTIsNTI1NTMsNTI1NTQsNTI1NTUsNTI1NTYsNTI1NTcsNTI1NTgsNTI1NTksNTI1NjAsNTI1NjEsNTI1NjIsNTI1NjMsNTI1NjQsNTI1NjUsNTI1NjYsNTI1NjcsNTI1NjgsNTI1NjksNTI1NzAsNTI1NzEsNTI1NzMsNTI1NzQsNTI1NzUsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU3Nyw1MjU3OCw1MjU3OSw1MjU4MSw1MjU4Miw1MjU4Myw1MjU4NCw1MjU4NSw1MjU4Niw1MjU4Nyw1MjU5MCw1MjU5Miw1MjU5NCw1MjU5NSw1MjU5Niw1MjU5Nyw1MjU5OCw1MjU5OSw1MjYwMSw1MjYwMiw1MjYwMyw1MjYwNCw1MjYwNSw1MjYwNiw1MjYwNyw1MjYwOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjYwOSw1MjYxMCw1MjYxMSw1MjYxMiw1MjYxMyw1MjYxNCw1MjYxNSw1MjYxNyw1MjYxOCw1MjYxOSw1MjYyMCw1MjYyMSw1MjYyMiw1MjYyMyw1MjYyNCw1MjYyNSw1MjYyNiw1MjYyNyw1MjYzMCw1MjYzMSw1MjYzMyw1MjYzNCw1MjYzNSw1MjYzNyw1MjYzOCw1MjYzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY0MCw1MjY0MSw1MjY0Miw1MjY0Myw1MjY0Niw1MjY0OCw1MjY1MCw1MjY1MSw1MjY1Miw1MjY1Myw1MjY1NCw1MjY1NSw1MjY1Nyw1MjY1OCw1MjY1OSw1MjY2MCw1MjY2MSw1MjY2Miw1MjY2Myw1MjY2NCw1MjY2NSw1MjY2Niw1MjY2Nyw1MjY2OCw1MjY2OSw1MjY3MCw1MjY3MSw1MjY3Miw1MjY3Myw1MjY3NCw1MjY3NSw1MjY3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjc4LDUyNjc5LDUyNjgwLDUyNjgxLDUyNjgyLDUyNjgzLDUyNjg1LDUyNjg2LDUyNjg3LDUyNjg5LDUyNjkwLDUyNjkxLDUyNjkyLDUyNjkzLDUyNjk0LDUyNjk1LDUyNjk2LDUyNjk3LDUyNjk4LDUyNjk5LDUyNzAwLDUyNzAxLDUyNzAyLDUyNzAzLDUyNzA0LDUyNzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzA2LDUyNzA3LDUyNzA4LDUyNzA5LDUyNzEwLDUyNzExLDUyNzEzLDUyNzE0LDUyNzE1LDUyNzE3LDUyNzE4LDUyNzE5LDUyNzIxLDUyNzIyLDUyNzIzLDUyNzI0LDUyNzI1LDUyNzI2LDUyNzI3LDUyNzMwLDUyNzMyLDUyNzM0LDUyNzM1LDUyNzM2LDUyNzM3LDUyNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzM5LDUyNzQxLDUyNzQyLDUyNzQzLDUyNzQ1LDUyNzQ2LDUyNzQ3LDUyNzQ5LDUyNzUwLDUyNzUxLDUyNzUyLDUyNzUzLDUyNzU0LDUyNzU1LDUyNzU3LDUyNzU4LDUyNzU5LDUyNzYwLDUyNzYyLDUyNzYzLDUyNzY0LDUyNzY1LDUyNzY2LDUyNzY3LDUyNzcwLDUyNzcxLDUyNzczLDUyNzc0LDUyNzc1LDUyNzc3LDUyNzc4LDUyNzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3ODAsNTI3ODEsNTI3ODIsNTI3ODMsNTI3ODYsNTI3ODgsNTI3OTAsNTI3OTEsNTI3OTIsNTI3OTMsNTI3OTQsNTI3OTUsNTI3OTYsNTI3OTcsNTI3OTgsNTI3OTksNTI4MDAsNTI4MDEsNTI4MDIsNTI4MDMsNTI4MDQsNTI4MDUsNTI4MDYsNTI4MDcsNTI4MDgsNTI4MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4MTAsNTI4MTEsNTI4MTIsNTI4MTMsNTI4MTQsNTI4MTUsNTI4MTYsNTI4MTcsNTI4MTgsNTI4MTksNTI4MjAsNTI4MjEsNTI4MjIsNTI4MjMsNTI4MjYsNTI4MjcsNTI4MjksNTI4MzAsNTI4MzQsNTI4MzUsNTI4MzYsNTI4MzcsNTI4MzgsNTI4MzksNTI4NDIsNTI4NDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4NDYsNTI4NDcsNTI4NDgsNTI4NDksNTI4NTAsNTI4NTEsNTI4NTQsNTI4NTUsNTI4NTcsNTI4NTgsNTI4NTksNTI4NjEsNTI4NjIsNTI4NjMsNTI4NjQsNTI4NjUsNTI4NjYsNTI4NjcsNTI4NzAsNTI4NzIsNTI4NzQsNTI4NzUsNTI4NzYsNTI4NzcsNTI4NzgsNTI4NzksNTI4ODIsNTI4ODMsNTI4ODUsNTI4ODYsNTI4ODcsNTI4ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg5MCw1Mjg5MSw1Mjg5Miw1Mjg5Myw1Mjg5NCw1Mjg5NSw1Mjg5OCw1MjkwMiw1MjkwMyw1MjkwNCw1MjkwNSw1MjkwNiw1MjkwNyw1MjkxMCw1MjkxMSw1MjkxMiw1MjkxMyw1MjkxNCw1MjkxNSw1MjkxNiw1MjkxNyw1MjkxOCw1MjkxOSw1MjkyMCw1MjkyMSw1MjkyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjkyMyw1MjkyNCw1MjkyNSw1MjkyNiw1MjkyNyw1MjkyOCw1MjkzMCw1MjkzMSw1MjkzMiw1MjkzMyw1MjkzNCw1MjkzNSw1MjkzNiw1MjkzNyw1MjkzOCw1MjkzOSw1Mjk0MCw1Mjk0MSw1Mjk0Miw1Mjk0Myw1Mjk0NCw1Mjk0NSw1Mjk0Niw1Mjk0Nyw1Mjk0OCw1Mjk0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjk1MCw1Mjk1MSw1Mjk1Miw1Mjk1Myw1Mjk1NCw1Mjk1NSw1Mjk1Niw1Mjk1Nyw1Mjk1OCw1Mjk1OSw1Mjk2MCw1Mjk2MSw1Mjk2Miw1Mjk2Myw1Mjk2Niw1Mjk2Nyw1Mjk2OSw1Mjk3MCw1Mjk3Myw1Mjk3NCw1Mjk3NSw1Mjk3Niw1Mjk3Nyw1Mjk3OCw1Mjk3OSw1Mjk4Miw1Mjk4Niw1Mjk4Nyw1Mjk4OCw1Mjk4OSw1Mjk5MCw1Mjk5MSw0NDAzMiw0NDAzMyw0NDAzNiw0NDAzOSw0NDA0MCw0NDA0MSw0NDA0Miw0NDA0OCw0NDA0OSw0NDA1MCw0NDA1MSw0NDA1Miw0NDA1Myw0NDA1NCw0NDA1NSw0NDA1Nyw0NDA1OCw0NDA1OSw0NDA2MCw0NDA2MSw0NDA2NCw0NDA2OCw0NDA3Niw0NDA3Nyw0NDA3OSw0NDA4MCw0NDA4MSw0NDA4OCw0NDA4OSw0NDA5Miw0NDA5Niw0NDEwNyw0NDEwOSw0NDExNiw0NDEyMCw0NDEyNCw0NDE0NCw0NDE0NSw0NDE0OCw0NDE1MSw0NDE1Miw0NDE1NCw0NDE2MCw0NDE2MSw0NDE2Myw0NDE2NCw0NDE2NSw0NDE2Niw0NDE2OSw0NDE3MCw0NDE3MSw0NDE3Miw0NDE3Niw0NDE4MCw0NDE4OCw0NDE4OSw0NDE5MSw0NDE5Miw0NDE5Myw0NDIwMCw0NDIwMSw0NDIwMiw0NDIwNCw0NDIwNyw0NDIwOCw0NDIxNiw0NDIxNyw0NDIxOSw0NDIyMCw0NDIyMSw0NDIyNSw0NDIyOCw0NDIzMiw0NDIzNiw0NDI0NSw0NDI0Nyw0NDI1Niw0NDI1Nyw0NDI2MCw0NDI2Myw0NDI2NCw0NDI2Niw0NDI2OCw0NDI3MSw0NDI3Miw0NDI3Myw0NDI3NSw0NDI3Nyw0NDI3OCw0NDI4NCw0NDI4NSw0NDI4OCw0NDI5Miw0NDI5NCw1Mjk5NCw1Mjk5NSw1Mjk5Nyw1Mjk5OCw1Mjk5OSw1MzAwMSw1MzAwMiw1MzAwMyw1MzAwNCw1MzAwNSw1MzAwNiw1MzAwNyw1MzAxMCw1MzAxMiw1MzAxNCw1MzAxNSw1MzAxNiw1MzAxNyw1MzAxOCw1MzAxOSw1MzAyMSw1MzAyMiw1MzAyMyw1MzAyNSw1MzAyNiw1MzAyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzAyOSw1MzAzMCw1MzAzMSw1MzAzMiw1MzAzMyw1MzAzNCw1MzAzNSw1MzAzOCw1MzA0Miw1MzA0Myw1MzA0NCw1MzA0NSw1MzA0Niw1MzA0Nyw1MzA0OSw1MzA1MCw1MzA1MSw1MzA1Miw1MzA1Myw1MzA1NCw1MzA1NSw1MzA1Niw1MzA1Nyw1MzA1OCw1MzA1OSw1MzA2MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzA2MSw1MzA2Miw1MzA2Myw1MzA2NCw1MzA2NSw1MzA2Niw1MzA2Nyw1MzA2OCw1MzA2OSw1MzA3MCw1MzA3MSw1MzA3Miw1MzA3Myw1MzA3NCw1MzA3NSw1MzA3OCw1MzA3OSw1MzA4MSw1MzA4Miw1MzA4Myw1MzA4NSw1MzA4Niw1MzA4Nyw1MzA4OCw1MzA4OSw1MzA5MCw1MzA5MSw1MzA5NCw1MzA5Niw1MzA5OCw1MzA5OSw1MzEwMCw0NDMwMCw0NDMwMSw0NDMwMyw0NDMwNSw0NDMxMiw0NDMxNiw0NDMyMCw0NDMyOSw0NDMzMiw0NDMzMyw0NDM0MCw0NDM0MSw0NDM0NCw0NDM0OCw0NDM1Niw0NDM1Nyw0NDM1OSw0NDM2MSw0NDM2OCw0NDM3Miw0NDM3Niw0NDM4NSw0NDM4Nyw0NDM5Niw0NDM5Nyw0NDQwMCw0NDQwMyw0NDQwNCw0NDQwNSw0NDQwNiw0NDQxMSw0NDQxMiw0NDQxMyw0NDQxNSw0NDQxNyw0NDQxOCw0NDQyNCw0NDQyNSw0NDQyOCw0NDQzMiw0NDQ0NCw0NDQ0NSw0NDQ1Miw0NDQ3MSw0NDQ4MCw0NDQ4MSw0NDQ4NCw0NDQ4OCw0NDQ5Niw0NDQ5Nyw0NDQ5OSw0NDUwOCw0NDUxMiw0NDUxNiw0NDUzNiw0NDUzNyw0NDU0MCw0NDU0Myw0NDU0NCw0NDU0NSw0NDU1Miw0NDU1Myw0NDU1NSw0NDU1Nyw0NDU2NCw0NDU5Miw0NDU5Myw0NDU5Niw0NDU5OSw0NDYwMCw0NDYwMiw0NDYwOCw0NDYwOSw0NDYxMSw0NDYxMyw0NDYxNCw0NDYxOCw0NDYyMCw0NDYyMSw0NDYyMiw0NDYyNCw0NDYyOCw0NDYzMCw0NDYzNiw0NDYzNyw0NDYzOSw0NDY0MCw0NDY0MSw0NDY0NSw0NDY0OCw0NDY0OSw0NDY1Miw0NDY1Niw0NDY2NCw1MzEwMSw1MzEwMiw1MzEwMyw1MzEwNiw1MzEwNyw1MzEwOSw1MzExMCw1MzExMSw1MzExMyw1MzExNCw1MzExNSw1MzExNiw1MzExNyw1MzExOCw1MzExOSw1MzEyMSw1MzEyMiw1MzEyMyw1MzEyNCw1MzEyNiw1MzEyNyw1MzEyOCw1MzEyOSw1MzEzMCw1MzEzMSw1MzEzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzEzNCw1MzEzNSw1MzEzNiw1MzEzNyw1MzEzOCw1MzEzOSw1MzE0MCw1MzE0MSw1MzE0Miw1MzE0Myw1MzE0NCw1MzE0NSw1MzE0Niw1MzE0Nyw1MzE0OCw1MzE0OSw1MzE1MCw1MzE1MSw1MzE1Miw1MzE1NCw1MzE1NSw1MzE1Niw1MzE1Nyw1MzE1OCw1MzE1OSw1MzE2MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzE2Miw1MzE2Myw1MzE2NCw1MzE2NSw1MzE2Niw1MzE2Nyw1MzE2OSw1MzE3MCw1MzE3MSw1MzE3Miw1MzE3Myw1MzE3NCw1MzE3NSw1MzE3Niw1MzE3Nyw1MzE3OCw1MzE3OSw1MzE4MCw1MzE4MSw1MzE4Miw1MzE4Myw1MzE4NCw1MzE4NSw1MzE4Niw1MzE4Nyw1MzE4OSw1MzE5MCw1MzE5MSw1MzE5Miw1MzE5Myw1MzE5NCw1MzE5NSw0NDY2NSw0NDY2Nyw0NDY2OCw0NDY2OSw0NDY3Niw0NDY3Nyw0NDY4NCw0NDczMiw0NDczMyw0NDczNCw0NDczNiw0NDc0MCw0NDc0OCw0NDc0OSw0NDc1MSw0NDc1Miw0NDc1Myw0NDc2MCw0NDc2MSw0NDc2NCw0NDc3Niw0NDc3OSw0NDc4MSw0NDc4OCw0NDc5Miw0NDc5Niw0NDgwNyw0NDgwOCw0NDgxMyw0NDgxNiw0NDg0NCw0NDg0NSw0NDg0OCw0NDg1MCw0NDg1Miw0NDg2MCw0NDg2MSw0NDg2Myw0NDg2NSw0NDg2Niw0NDg2Nyw0NDg3Miw0NDg3Myw0NDg4MCw0NDg5Miw0NDg5Myw0NDkwMCw0NDkwMSw0NDkyMSw0NDkyOCw0NDkzMiw0NDkzNiw0NDk0NCw0NDk0NSw0NDk0OSw0NDk1Niw0NDk4NCw0NDk4NSw0NDk4OCw0NDk5Miw0NDk5OSw0NTAwMCw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIwMCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIwNSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIxMSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIyOCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIzNSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQzMyw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMzNSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgwNiw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQxMCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQxOCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQyNSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAzOSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjExMiw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUxMCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQxMiw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQyOSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUwMCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0NjkyNCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYzOCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1MzcwMCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1MzcwNiw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0NzAwMCw0NzAwMSw0NzAwNCw0NzAwOCw0NzAxNiw0NzAxNyw0NzAxOSw0NzAyMCw0NzAyMSw0NzAyOCw0NzAyOSw0NzAzMiw0NzA0Nyw0NzA0OSw0NzA4NCw0NzA4NSw0NzA4OCw0NzA5Miw0NzEwMCw0NzEwMSw0NzEwMyw0NzEwNCw0NzEwNSw0NzExMSw0NzExMiw0NzExMyw0NzExNiw0NzEyMCw0NzEyOCw0NzEyOSw0NzEzMSw0NzEzMyw0NzE0MCw0NzE0MSw0NzE0NCw0NzE0OCw0NzE1Niw0NzE1Nyw0NzE1OSw0NzE2MCw0NzE2MSw0NzE2OCw0NzE3Miw0NzE4NSw0NzE4Nyw0NzE5Niw0NzE5Nyw0NzIwMCw0NzIwNCw0NzIxMiw0NzIxMyw0NzIxNSw0NzIxNyw0NzIyNCw0NzIyOCw0NzI0NSw0NzI3Miw0NzI4MCw0NzI4NCw0NzI4OCw0NzI5Niw0NzI5Nyw0NzI5OSw0NzMwMSw0NzMwOCw0NzMxMiw0NzMxNiw0NzMyNSw0NzMyNyw0NzMyOSw0NzMzNiw0NzMzNyw0NzM0MCw0NzM0NCw0NzM1Miw0NzM1Myw0NzM1NSw0NzM1Nyw0NzM2NCw0NzM4NCw0NzM5Miw0NzQyMCw0NzQyMSw0NzQyNCw0NzQyOCw0NzQzNiw0NzQzOSw0NzQ0MSw0NzQ0OCw0NzQ0OSw0NzQ1Miw0NzQ1Niw0NzQ2NCw0NzQ2NSw1MzcxMiw1MzcxMyw1MzcxNCw1MzcxNSw1MzcxNiw1MzcxNyw1MzcxOCw1MzcxOSw1MzcyMSw1MzcyMiw1MzcyMyw1MzcyNCw1MzcyNSw1MzcyNiw1MzcyNyw1MzcyOCw1MzcyOSw1MzczMCw1MzczMSw1MzczMiw1MzczMyw1MzczNCw1MzczNSw1MzczNiw1MzczNyw1MzczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzczOSw1Mzc0MCw1Mzc0MSw1Mzc0Miw1Mzc0Myw1Mzc0NCw1Mzc0NSw1Mzc0Niw1Mzc0Nyw1Mzc0OSw1Mzc1MCw1Mzc1MSw1Mzc1Myw1Mzc1NCw1Mzc1NSw1Mzc1Niw1Mzc1Nyw1Mzc1OCw1Mzc1OSw1Mzc2MCw1Mzc2MSw1Mzc2Miw1Mzc2Myw1Mzc2NCw1Mzc2NSw1Mzc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzc2OCw1Mzc3MCw1Mzc3MSw1Mzc3Miw1Mzc3Myw1Mzc3NCw1Mzc3NSw1Mzc3Nyw1Mzc3OCw1Mzc3OSw1Mzc4MCw1Mzc4MSw1Mzc4Miw1Mzc4Myw1Mzc4NCw1Mzc4NSw1Mzc4Niw1Mzc4Nyw1Mzc4OCw1Mzc4OSw1Mzc5MCw1Mzc5MSw1Mzc5Miw1Mzc5Myw1Mzc5NCw1Mzc5NSw1Mzc5Niw1Mzc5Nyw1Mzc5OCw1Mzc5OSw1MzgwMCw1MzgwMSw0NzQ2Nyw0NzQ2OSw0NzQ3Niw0NzQ3Nyw0NzQ4MCw0NzQ4NCw0NzQ5Miw0NzQ5Myw0NzQ5NSw0NzQ5Nyw0NzQ5OCw0NzUwMSw0NzUwMiw0NzUzMiw0NzUzMyw0NzUzNiw0NzU0MCw0NzU0OCw0NzU0OSw0NzU1MSw0NzU1Myw0NzU2MCw0NzU2MSw0NzU2NCw0NzU2Niw0NzU2Nyw0NzU2OCw0NzU2OSw0NzU3MCw0NzU3Niw0NzU3Nyw0NzU3OSw0NzU4MSw0NzU4Miw0NzU4NSw0NzU4Nyw0NzU4OCw0NzU4OSw0NzU5Miw0NzU5Niw0NzYwNCw0NzYwNSw0NzYwNyw0NzYwOCw0NzYwOSw0NzYxMCw0NzYxNiw0NzYxNyw0NzYyNCw0NzYzNyw0NzY3Miw0NzY3Myw0NzY3Niw0NzY4MCw0NzY4Miw0NzY4OCw0NzY4OSw0NzY5MSw0NzY5Myw0NzY5NCw0NzY5OSw0NzcwMCw0NzcwMSw0NzcwNCw0NzcwOCw0NzcxNiw0NzcxNyw0NzcxOSw0NzcyMCw0NzcyMSw0NzcyOCw0NzcyOSw0NzczMiw0NzczNiw0Nzc0Nyw0Nzc0OCw0Nzc0OSw0Nzc1MSw0Nzc1Niw0Nzc4NCw0Nzc4NSw0Nzc4Nyw0Nzc4OCw0Nzc5Miw0Nzc5NCw0NzgwMCw0NzgwMSw0NzgwMyw0NzgwNSw0NzgxMiw0NzgxNiw0NzgzMiw0NzgzMyw0Nzg2OCw1MzgwMiw1MzgwMyw1MzgwNiw1MzgwNyw1MzgwOSw1MzgxMCw1MzgxMSw1MzgxMyw1MzgxNCw1MzgxNSw1MzgxNiw1MzgxNyw1MzgxOCw1MzgxOSw1MzgyMiw1MzgyNCw1MzgyNiw1MzgyNyw1MzgyOCw1MzgyOSw1MzgzMCw1MzgzMSw1MzgzMyw1MzgzNCw1MzgzNSw1MzgzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzgzNyw1MzgzOCw1MzgzOSw1Mzg0MCw1Mzg0MSw1Mzg0Miw1Mzg0Myw1Mzg0NCw1Mzg0NSw1Mzg0Niw1Mzg0Nyw1Mzg0OCw1Mzg0OSw1Mzg1MCw1Mzg1MSw1Mzg1Myw1Mzg1NCw1Mzg1NSw1Mzg1Niw1Mzg1Nyw1Mzg1OCw1Mzg1OSw1Mzg2MSw1Mzg2Miw1Mzg2Myw1Mzg2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2NSw1Mzg2Niw1Mzg2Nyw1Mzg2OCw1Mzg2OSw1Mzg3MCw1Mzg3MSw1Mzg3Miw1Mzg3Myw1Mzg3NCw1Mzg3NSw1Mzg3Niw1Mzg3Nyw1Mzg3OCw1Mzg3OSw1Mzg4MCw1Mzg4MSw1Mzg4Miw1Mzg4Myw1Mzg4NCw1Mzg4NSw1Mzg4Niw1Mzg4Nyw1Mzg5MCw1Mzg5MSw1Mzg5Myw1Mzg5NCw1Mzg5NSw1Mzg5Nyw1Mzg5OCw1Mzg5OSw1MzkwMCw0Nzg3Miw0Nzg3Niw0Nzg4NSw0Nzg4Nyw0Nzg4OSw0Nzg5Niw0NzkwMCw0NzkwNCw0NzkxMyw0NzkxNSw0NzkyNCw0NzkyNSw0NzkyNiw0NzkyOCw0NzkzMSw0NzkzMiw0NzkzMyw0NzkzNCw0Nzk0MCw0Nzk0MSw0Nzk0Myw0Nzk0NSw0Nzk0OSw0Nzk1MSw0Nzk1Miw0Nzk1Niw0Nzk2MCw0Nzk2OSw0Nzk3MSw0Nzk4MCw0ODAwOCw0ODAxMiw0ODAxNiw0ODAzNiw0ODA0MCw0ODA0NCw0ODA1Miw0ODA1NSw0ODA2NCw0ODA2OCw0ODA3Miw0ODA4MCw0ODA4Myw0ODEyMCw0ODEyMSw0ODEyNCw0ODEyNyw0ODEyOCw0ODEzMCw0ODEzNiw0ODEzNyw0ODEzOSw0ODE0MCw0ODE0MSw0ODE0Myw0ODE0NSw0ODE0OCw0ODE0OSw0ODE1MCw0ODE1MSw0ODE1Miw0ODE1NSw0ODE1Niw0ODE1Nyw0ODE1OCw0ODE1OSw0ODE2NCw0ODE2NSw0ODE2Nyw0ODE2OSw0ODE3Myw0ODE3Niw0ODE3Nyw0ODE4MCw0ODE4NCw0ODE5Miw0ODE5Myw0ODE5NSw0ODE5Niw0ODE5Nyw0ODIwMSw0ODIwNCw0ODIwNSw0ODIwOCw0ODIyMSw0ODI2MCw0ODI2MSw0ODI2NCw0ODI2Nyw0ODI2OCw0ODI3MCw0ODI3Niw0ODI3Nyw0ODI3OSw1MzkwMSw1MzkwMiw1MzkwMyw1MzkwNiw1MzkwNyw1MzkwOCw1MzkxMCw1MzkxMSw1MzkxMiw1MzkxMyw1MzkxNCw1MzkxNSw1MzkxNyw1MzkxOCw1MzkxOSw1MzkyMSw1MzkyMiw1MzkyMyw1MzkyNSw1MzkyNiw1MzkyNyw1MzkyOCw1MzkyOSw1MzkzMCw1MzkzMSw1MzkzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzkzNCw1MzkzNSw1MzkzNiw1MzkzOCw1MzkzOSw1Mzk0MCw1Mzk0MSw1Mzk0Miw1Mzk0Myw1Mzk0Niw1Mzk0Nyw1Mzk0OSw1Mzk1MCw1Mzk1Myw1Mzk1NSw1Mzk1Niw1Mzk1Nyw1Mzk1OCw1Mzk1OSw1Mzk2Miw1Mzk2NCw1Mzk2NSw1Mzk2Niw1Mzk2Nyw1Mzk2OCw1Mzk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzk3MCw1Mzk3MSw1Mzk3Myw1Mzk3NCw1Mzk3NSw1Mzk3Nyw1Mzk3OCw1Mzk3OSw1Mzk4MSw1Mzk4Miw1Mzk4Myw1Mzk4NCw1Mzk4NSw1Mzk4Niw1Mzk4Nyw1Mzk5MCw1Mzk5MSw1Mzk5Miw1Mzk5Myw1Mzk5NCw1Mzk5NSw1Mzk5Niw1Mzk5Nyw1Mzk5OCw1Mzk5OSw1NDAwMiw1NDAwMyw1NDAwNSw1NDAwNiw1NDAwNyw1NDAwOSw1NDAxMCw0ODI4MSw0ODI4Miw0ODI4OCw0ODI4OSw0ODI5Miw0ODI5NSw0ODI5Niw0ODMwNCw0ODMwNSw0ODMwNyw0ODMwOCw0ODMwOSw0ODMxNiw0ODMxNyw0ODMyMCw0ODMyNCw0ODMzMyw0ODMzNSw0ODMzNiw0ODMzNyw0ODM0MSw0ODM0NCw0ODM0OCw0ODM3Miw0ODM3Myw0ODM3NCw0ODM3Niw0ODM4MCw0ODM4OCw0ODM4OSw0ODM5MSw0ODM5Myw0ODQwMCw0ODQwNCw0ODQyMCw0ODQyOCw0ODQ0OCw0ODQ1Niw0ODQ1Nyw0ODQ2MCw0ODQ2NCw0ODQ3Miw0ODQ3Myw0ODQ4NCw0ODQ4OCw0ODUxMiw0ODUxMyw0ODUxNiw0ODUxOSw0ODUyMCw0ODUyMSw0ODUyMiw0ODUyOCw0ODUyOSw0ODUzMSw0ODUzMyw0ODUzNyw0ODUzOCw0ODU0MCw0ODU0OCw0ODU2MCw0ODU2OCw0ODU5Niw0ODU5Nyw0ODYwMCw0ODYwNCw0ODYxNyw0ODYyNCw0ODYyOCw0ODYzMiw0ODY0MCw0ODY0Myw0ODY0NSw0ODY1Miw0ODY1Myw0ODY1Niw0ODY2MCw0ODY2OCw0ODY2OSw0ODY3MSw0ODcwOCw0ODcwOSw0ODcxMiw0ODcxNiw0ODcxOCw0ODcyNCw0ODcyNSw0ODcyNyw0ODcyOSw0ODczMCw0ODczMSw0ODczNiw0ODczNyw0ODc0MCw1NDAxMSw1NDAxMiw1NDAxMyw1NDAxNCw1NDAxNSw1NDAxOCw1NDAyMCw1NDAyMiw1NDAyMyw1NDAyNCw1NDAyNSw1NDAyNiw1NDAyNyw1NDAzMSw1NDAzMyw1NDAzNCw1NDAzNSw1NDAzNyw1NDAzOSw1NDA0MCw1NDA0MSw1NDA0Miw1NDA0Myw1NDA0Niw1NDA1MCw1NDA1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA1Miw1NDA1NCw1NDA1NSw1NDA1OCw1NDA1OSw1NDA2MSw1NDA2Miw1NDA2Myw1NDA2NSw1NDA2Niw1NDA2Nyw1NDA2OCw1NDA2OSw1NDA3MCw1NDA3MSw1NDA3NCw1NDA3OCw1NDA3OSw1NDA4MCw1NDA4MSw1NDA4Miw1NDA4Myw1NDA4Niw1NDA4Nyw1NDA4OCw1NDA4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA5MCw1NDA5MSw1NDA5Miw1NDA5Myw1NDA5NCw1NDA5NSw1NDA5Niw1NDA5Nyw1NDA5OCw1NDA5OSw1NDEwMCw1NDEwMSw1NDEwMiw1NDEwMyw1NDEwNCw1NDEwNSw1NDEwNiw1NDEwNyw1NDEwOCw1NDEwOSw1NDExMCw1NDExMSw1NDExMiw1NDExMyw1NDExNCw1NDExNSw1NDExNiw1NDExNyw1NDExOCw1NDExOSw1NDEyMCw1NDEyMSw0ODc0NCw0ODc0Niw0ODc1Miw0ODc1Myw0ODc1NSw0ODc1Niw0ODc1Nyw0ODc2Myw0ODc2NCw0ODc2NSw0ODc2OCw0ODc3Miw0ODc4MCw0ODc4MSw0ODc4Myw0ODc4NCw0ODc4NSw0ODc5Miw0ODc5Myw0ODgwOCw0ODg0OCw0ODg0OSw0ODg1Miw0ODg1NSw0ODg1Niw0ODg2NCw0ODg2Nyw0ODg2OCw0ODg2OSw0ODg3Niw0ODg5Nyw0ODkwNCw0ODkwNSw0ODkyMCw0ODkyMSw0ODkyMyw0ODkyNCw0ODkyNSw0ODk2MCw0ODk2MSw0ODk2NCw0ODk2OCw0ODk3Niw0ODk3Nyw0ODk4MSw0OTA0NCw0OTA3Miw0OTA5Myw0OTEwMCw0OTEwMSw0OTEwNCw0OTEwOCw0OTExNiw0OTExOSw0OTEyMSw0OTIxMiw0OTIzMyw0OTI0MCw0OTI0NCw0OTI0OCw0OTI1Niw0OTI1Nyw0OTI5Niw0OTI5Nyw0OTMwMCw0OTMwNCw0OTMxMiw0OTMxMyw0OTMxNSw0OTMxNyw0OTMyNCw0OTMyNSw0OTMyNyw0OTMyOCw0OTMzMSw0OTMzMiw0OTMzMyw0OTMzNCw0OTM0MCw0OTM0MSw0OTM0Myw0OTM0NCw0OTM0NSw0OTM0OSw0OTM1Miw0OTM1Myw0OTM1Niw0OTM2MCw0OTM2OCw0OTM2OSw0OTM3MSw0OTM3Miw0OTM3Myw0OTM4MCw1NDEyMiw1NDEyMyw1NDEyNCw1NDEyNSw1NDEyNiw1NDEyNyw1NDEyOCw1NDEyOSw1NDEzMCw1NDEzMSw1NDEzMiw1NDEzMyw1NDEzNCw1NDEzNSw1NDEzNiw1NDEzNyw1NDEzOCw1NDEzOSw1NDE0Miw1NDE0Myw1NDE0NSw1NDE0Niw1NDE0Nyw1NDE0OSw1NDE1MCw1NDE1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE1Miw1NDE1Myw1NDE1NCw1NDE1NSw1NDE1OCw1NDE2Miw1NDE2Myw1NDE2NCw1NDE2NSw1NDE2Niw1NDE2Nyw1NDE3MCw1NDE3MSw1NDE3Myw1NDE3NCw1NDE3NSw1NDE3Nyw1NDE3OCw1NDE3OSw1NDE4MCw1NDE4MSw1NDE4Miw1NDE4Myw1NDE4Niw1NDE4OCw1NDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE5MSw1NDE5Miw1NDE5Myw1NDE5NCw1NDE5NSw1NDE5Nyw1NDE5OCw1NDE5OSw1NDIwMSw1NDIwMiw1NDIwMyw1NDIwNSw1NDIwNiw1NDIwNyw1NDIwOCw1NDIwOSw1NDIxMCw1NDIxMSw1NDIxNCw1NDIxNSw1NDIxOCw1NDIxOSw1NDIyMCw1NDIyMSw1NDIyMiw1NDIyMyw1NDIyNSw1NDIyNiw1NDIyNyw1NDIyOCw1NDIyOSw1NDIzMCw0OTM4MSw0OTM4NCw0OTM4OCw0OTM5Niw0OTM5Nyw0OTM5OSw0OTQwMSw0OTQwOCw0OTQxMiw0OTQxNiw0OTQyNCw0OTQyOSw0OTQzNiw0OTQzNyw0OTQzOCw0OTQzOSw0OTQ0MCw0OTQ0Myw0OTQ0NCw0OTQ0Niw0OTQ0Nyw0OTQ1Miw0OTQ1Myw0OTQ1NSw0OTQ1Niw0OTQ1Nyw0OTQ2Miw0OTQ2NCw0OTQ2NSw0OTQ2OCw0OTQ3Miw0OTQ4MCw0OTQ4MSw0OTQ4Myw0OTQ4NCw0OTQ4NSw0OTQ5Miw0OTQ5Myw0OTQ5Niw0OTUwMCw0OTUwOCw0OTUwOSw0OTUxMSw0OTUxMiw0OTUxMyw0OTUyMCw0OTUyNCw0OTUyOCw0OTU0MSw0OTU0OCw0OTU0OSw0OTU1MCw0OTU1Miw0OTU1Niw0OTU1OCw0OTU2NCw0OTU2NSw0OTU2Nyw0OTU2OSw0OTU3Myw0OTU3Niw0OTU3Nyw0OTU4MCw0OTU4NCw0OTU5Nyw0OTYwNCw0OTYwOCw0OTYxMiw0OTYyMCw0OTYyMyw0OTYyNCw0OTYzMiw0OTYzNiw0OTY0MCw0OTY0OCw0OTY0OSw0OTY1MSw0OTY2MCw0OTY2MSw0OTY2NCw0OTY2OCw0OTY3Niw0OTY3Nyw0OTY3OSw0OTY4MSw0OTY4OCw0OTY4OSw0OTY5Miw0OTY5NSw0OTY5Niw0OTcwNCw0OTcwNSw0OTcwNyw0OTcwOSw1NDIzMSw1NDIzMyw1NDIzNCw1NDIzNSw1NDIzNiw1NDIzNyw1NDIzOCw1NDIzOSw1NDI0MCw1NDI0Miw1NDI0NCw1NDI0NSw1NDI0Niw1NDI0Nyw1NDI0OCw1NDI0OSw1NDI1MCw1NDI1MSw1NDI1NCw1NDI1NSw1NDI1Nyw1NDI1OCw1NDI1OSw1NDI2MSw1NDI2Miw1NDI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI2NCw1NDI2NSw1NDI2Niw1NDI2Nyw1NDI3MCw1NDI3Miw1NDI3NCw1NDI3NSw1NDI3Niw1NDI3Nyw1NDI3OCw1NDI3OSw1NDI4MSw1NDI4Miw1NDI4Myw1NDI4NCw1NDI4NSw1NDI4Niw1NDI4Nyw1NDI4OCw1NDI4OSw1NDI5MCw1NDI5MSw1NDI5Miw1NDI5Myw1NDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI5NSw1NDI5Niw1NDI5Nyw1NDI5OCw1NDI5OSw1NDMwMCw1NDMwMiw1NDMwMyw1NDMwNCw1NDMwNSw1NDMwNiw1NDMwNyw1NDMwOCw1NDMwOSw1NDMxMCw1NDMxMSw1NDMxMiw1NDMxMyw1NDMxNCw1NDMxNSw1NDMxNiw1NDMxNyw1NDMxOCw1NDMxOSw1NDMyMCw1NDMyMSw1NDMyMiw1NDMyMyw1NDMyNCw1NDMyNSw1NDMyNiw1NDMyNyw0OTcxMSw0OTcxMyw0OTcxNCw0OTcxNiw0OTczNiw0OTc0NCw0OTc0NSw0OTc0OCw0OTc1Miw0OTc2MCw0OTc2NSw0OTc3Miw0OTc3Myw0OTc3Niw0OTc4MCw0OTc4OCw0OTc4OSw0OTc5MSw0OTc5Myw0OTgwMCw0OTgwMSw0OTgwOCw0OTgxNiw0OTgxOSw0OTgyMSw0OTgyOCw0OTgyOSw0OTgzMiw0OTgzNiw0OTgzNyw0OTg0NCw0OTg0NSw0OTg0Nyw0OTg0OSw0OTg4NCw0OTg4NSw0OTg4OCw0OTg5MSw0OTg5Miw0OTg5OSw0OTkwMCw0OTkwMSw0OTkwMyw0OTkwNSw0OTkxMCw0OTkxMiw0OTkxMyw0OTkxNSw0OTkxNiw0OTkyMCw0OTkyOCw0OTkyOSw0OTkzMiw0OTkzMyw0OTkzOSw0OTk0MCw0OTk0MSw0OTk0NCw0OTk0OCw0OTk1Niw0OTk1Nyw0OTk2MCw0OTk2MSw0OTk4OSw1MDAyNCw1MDAyNSw1MDAyOCw1MDAzMiw1MDAzNCw1MDA0MCw1MDA0MSw1MDA0NCw1MDA0NSw1MDA1Miw1MDA1Niw1MDA2MCw1MDExMiw1MDEzNiw1MDEzNyw1MDE0MCw1MDE0Myw1MDE0NCw1MDE0Niw1MDE1Miw1MDE1Myw1MDE1Nyw1MDE2NCw1MDE2NSw1MDE2OCw1MDE4NCw1MDE5Miw1MDIxMiw1MDIyMCw1MDIyNCw1NDMyOCw1NDMyOSw1NDMzMCw1NDMzMSw1NDMzMiw1NDMzMyw1NDMzNCw1NDMzNSw1NDMzNyw1NDMzOCw1NDMzOSw1NDM0MSw1NDM0Miw1NDM0Myw1NDM0NCw1NDM0NSw1NDM0Niw1NDM0Nyw1NDM0OCw1NDM0OSw1NDM1MCw1NDM1MSw1NDM1Miw1NDM1Myw1NDM1NCw1NDM1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM1Niw1NDM1Nyw1NDM1OCw1NDM1OSw1NDM2MCw1NDM2MSw1NDM2Miw1NDM2Myw1NDM2NSw1NDM2Niw1NDM2Nyw1NDM2OSw1NDM3MCw1NDM3MSw1NDM3Myw1NDM3NCw1NDM3NSw1NDM3Niw1NDM3Nyw1NDM3OCw1NDM3OSw1NDM4MCw1NDM4Miw1NDM4NCw1NDM4NSw1NDM4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM4Nyw1NDM4OCw1NDM4OSw1NDM5MCw1NDM5MSw1NDM5NCw1NDM5NSw1NDM5Nyw1NDM5OCw1NDQwMSw1NDQwMyw1NDQwNCw1NDQwNSw1NDQwNiw1NDQwNyw1NDQxMCw1NDQxMiw1NDQxNCw1NDQxNSw1NDQxNiw1NDQxNyw1NDQxOCw1NDQxOSw1NDQyMSw1NDQyMiw1NDQyMyw1NDQyNCw1NDQyNSw1NDQyNiw1NDQyNyw1NDQyOCw1NDQyOSw1MDIyOCw1MDIzNiw1MDIzNyw1MDI0OCw1MDI3Niw1MDI3Nyw1MDI4MCw1MDI4NCw1MDI5Miw1MDI5Myw1MDI5Nyw1MDMwNCw1MDMyNCw1MDMzMiw1MDM2MCw1MDM2NCw1MDQwOSw1MDQxNiw1MDQxNyw1MDQyMCw1MDQyNCw1MDQyNiw1MDQzMSw1MDQzMiw1MDQzMyw1MDQ0NCw1MDQ0OCw1MDQ1Miw1MDQ2MCw1MDQ3Miw1MDQ3Myw1MDQ3Niw1MDQ4MCw1MDQ4OCw1MDQ4OSw1MDQ5MSw1MDQ5Myw1MDUwMCw1MDUwMSw1MDUwNCw1MDUwNSw1MDUwNiw1MDUwOCw1MDUwOSw1MDUxMCw1MDUxNSw1MDUxNiw1MDUxNyw1MDUxOSw1MDUyMCw1MDUyMSw1MDUyNSw1MDUyNiw1MDUyOCw1MDUyOSw1MDUzMiw1MDUzNiw1MDU0NCw1MDU0NSw1MDU0Nyw1MDU0OCw1MDU0OSw1MDU1Niw1MDU1Nyw1MDU2MCw1MDU2NCw1MDU2Nyw1MDU3Miw1MDU3Myw1MDU3NSw1MDU3Nyw1MDU4MSw1MDU4Myw1MDU4NCw1MDU4OCw1MDU5Miw1MDYwMSw1MDYxMiw1MDYxMyw1MDYxNiw1MDYxNyw1MDYxOSw1MDYyMCw1MDYyMSw1MDYyMiw1MDYyOCw1MDYyOSw1MDYzMCw1MDYzMSw1MDYzMiw1MDYzMyw1MDYzNCw1MDYzNiw1MDYzOCw1NDQzMCw1NDQzMSw1NDQzMiw1NDQzMyw1NDQzNCw1NDQzNSw1NDQzNiw1NDQzNyw1NDQzOCw1NDQzOSw1NDQ0MCw1NDQ0Miw1NDQ0Myw1NDQ0NCw1NDQ0NSw1NDQ0Niw1NDQ0Nyw1NDQ0OCw1NDQ0OSw1NDQ1MCw1NDQ1MSw1NDQ1Miw1NDQ1Myw1NDQ1NCw1NDQ1NSw1NDQ1NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ1Nyw1NDQ1OCw1NDQ1OSw1NDQ2MCw1NDQ2MSw1NDQ2Miw1NDQ2Myw1NDQ2NCw1NDQ2NSw1NDQ2Niw1NDQ2Nyw1NDQ2OCw1NDQ2OSw1NDQ3MCw1NDQ3MSw1NDQ3Miw1NDQ3Myw1NDQ3NCw1NDQ3NSw1NDQ3Nyw1NDQ3OCw1NDQ3OSw1NDQ4MSw1NDQ4Miw1NDQ4Myw1NDQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ4Niw1NDQ4Nyw1NDQ4OCw1NDQ4OSw1NDQ5MCw1NDQ5MSw1NDQ5Myw1NDQ5NCw1NDQ5Niw1NDQ5Nyw1NDQ5OCw1NDQ5OSw1NDUwMCw1NDUwMSw1NDUwMiw1NDUwMyw1NDUwNSw1NDUwNiw1NDUwNyw1NDUwOSw1NDUxMCw1NDUxMSw1NDUxMyw1NDUxNCw1NDUxNSw1NDUxNiw1NDUxNyw1NDUxOCw1NDUxOSw1NDUyMSw1NDUyMiw1NDUyNCw1MDY0MCw1MDY0MSw1MDY0NCw1MDY0OCw1MDY1Niw1MDY1Nyw1MDY1OSw1MDY2MSw1MDY2OCw1MDY2OSw1MDY3MCw1MDY3Miw1MDY3Niw1MDY3OCw1MDY3OSw1MDY4NCw1MDY4NSw1MDY4Niw1MDY4Nyw1MDY4OCw1MDY4OSw1MDY5Myw1MDY5NCw1MDY5NSw1MDY5Niw1MDcwMCw1MDcwNCw1MDcxMiw1MDcxMyw1MDcxNSw1MDcxNiw1MDcyNCw1MDcyNSw1MDcyOCw1MDczMiw1MDczMyw1MDczNCw1MDczNiw1MDczOSw1MDc0MCw1MDc0MSw1MDc0Myw1MDc0NSw1MDc0Nyw1MDc1Miw1MDc1Myw1MDc1Niw1MDc2MCw1MDc2OCw1MDc2OSw1MDc3MSw1MDc3Miw1MDc3Myw1MDc4MCw1MDc4MSw1MDc4NCw1MDc5Niw1MDc5OSw1MDgwMSw1MDgwOCw1MDgwOSw1MDgxMiw1MDgxNiw1MDgyNCw1MDgyNSw1MDgyNyw1MDgyOSw1MDgzNiw1MDgzNyw1MDg0MCw1MDg0NCw1MDg1Miw1MDg1Myw1MDg1NSw1MDg1Nyw1MDg2NCw1MDg2NSw1MDg2OCw1MDg3Miw1MDg3Myw1MDg3NCw1MDg4MCw1MDg4MSw1MDg4Myw1MDg4NSw1MDg5Miw1MDg5Myw1MDg5Niw1MDkwMCw1MDkwOCw1MDkwOSw1MDkxMiw1MDkxMyw1MDkyMCw1NDUyNiw1NDUyNyw1NDUyOCw1NDUyOSw1NDUzMCw1NDUzMSw1NDUzMyw1NDUzNCw1NDUzNSw1NDUzNyw1NDUzOCw1NDUzOSw1NDU0MSw1NDU0Miw1NDU0Myw1NDU0NCw1NDU0NSw1NDU0Niw1NDU0Nyw1NDU1MCw1NDU1Miw1NDU1Myw1NDU1NCw1NDU1NSw1NDU1Niw1NDU1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU1OCw1NDU1OSw1NDU2MCw1NDU2MSw1NDU2Miw1NDU2Myw1NDU2NCw1NDU2NSw1NDU2Niw1NDU2Nyw1NDU2OCw1NDU2OSw1NDU3MCw1NDU3MSw1NDU3Miw1NDU3Myw1NDU3NCw1NDU3NSw1NDU3Niw1NDU3Nyw1NDU3OCw1NDU3OSw1NDU4MCw1NDU4MSw1NDU4Miw1NDU4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU4NCw1NDU4NSw1NDU4Niw1NDU4Nyw1NDU5MCw1NDU5MSw1NDU5Myw1NDU5NCw1NDU5NSw1NDU5Nyw1NDU5OCw1NDU5OSw1NDYwMCw1NDYwMSw1NDYwMiw1NDYwMyw1NDYwNiw1NDYwOCw1NDYxMCw1NDYxMSw1NDYxMiw1NDYxMyw1NDYxNCw1NDYxNSw1NDYxOCw1NDYxOSw1NDYyMSw1NDYyMiw1NDYyMyw1NDYyNSw1NDYyNiw1NDYyNyw1MDkyMSw1MDkyNCw1MDkyOCw1MDkzNiw1MDkzNyw1MDk0MSw1MDk0OCw1MDk0OSw1MDk1Miw1MDk1Niw1MDk2NCw1MDk2NSw1MDk2Nyw1MDk2OSw1MDk3Niw1MDk3Nyw1MDk4MCw1MDk4NCw1MDk5Miw1MDk5Myw1MDk5NSw1MDk5Nyw1MDk5OSw1MTAwNCw1MTAwNSw1MTAwOCw1MTAxMiw1MTAxOCw1MTAyMCw1MTAyMSw1MTAyMyw1MTAyNSw1MTAyNiw1MTAyNyw1MTAyOCw1MTAyOSw1MTAzMCw1MTAzMSw1MTAzMiw1MTAzNiw1MTA0MCw1MTA0OCw1MTA1MSw1MTA2MCw1MTA2MSw1MTA2NCw1MTA2OCw1MTA2OSw1MTA3MCw1MTA3NSw1MTA3Niw1MTA3Nyw1MTA3OSw1MTA4MCw1MTA4MSw1MTA4Miw1MTA4Niw1MTA4OCw1MTA4OSw1MTA5Miw1MTA5NCw1MTA5NSw1MTA5Niw1MTA5OCw1MTEwNCw1MTEwNSw1MTEwNyw1MTEwOCw1MTEwOSw1MTExMCw1MTExNiw1MTExNyw1MTEyMCw1MTEyNCw1MTEzMiw1MTEzMyw1MTEzNSw1MTEzNiw1MTEzNyw1MTE0NCw1MTE0NSw1MTE0OCw1MTE1MCw1MTE1Miw1MTE2MCw1MTE2NSw1MTE3Miw1MTE3Niw1MTE4MCw1MTIwMCw1MTIwMSw1MTIwNCw1MTIwOCw1MTIxMCw1NDYyOCw1NDYzMCw1NDYzMSw1NDYzNCw1NDYzNiw1NDYzOCw1NDYzOSw1NDY0MCw1NDY0MSw1NDY0Miw1NDY0Myw1NDY0Niw1NDY0Nyw1NDY0OSw1NDY1MCw1NDY1MSw1NDY1Myw1NDY1NCw1NDY1NSw1NDY1Niw1NDY1Nyw1NDY1OCw1NDY1OSw1NDY2Miw1NDY2Niw1NDY2NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY2OCw1NDY2OSw1NDY3MCw1NDY3MSw1NDY3Myw1NDY3NCw1NDY3NSw1NDY3Niw1NDY3Nyw1NDY3OCw1NDY3OSw1NDY4MCw1NDY4MSw1NDY4Miw1NDY4Myw1NDY4NCw1NDY4NSw1NDY4Niw1NDY4Nyw1NDY4OCw1NDY4OSw1NDY5MCw1NDY5MSw1NDY5Miw1NDY5NCw1NDY5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY5Niw1NDY5Nyw1NDY5OCw1NDY5OSw1NDcwMCw1NDcwMSw1NDcwMiw1NDcwMyw1NDcwNCw1NDcwNSw1NDcwNiw1NDcwNyw1NDcwOCw1NDcwOSw1NDcxMCw1NDcxMSw1NDcxMiw1NDcxMyw1NDcxNCw1NDcxNSw1NDcxNiw1NDcxNyw1NDcxOCw1NDcxOSw1NDcyMCw1NDcyMSw1NDcyMiw1NDcyMyw1NDcyNCw1NDcyNSw1NDcyNiw1NDcyNyw1MTIxNiw1MTIxNyw1MTIxOSw1MTIyMSw1MTIyMiw1MTIyOCw1MTIyOSw1MTIzMiw1MTIzNiw1MTI0NCw1MTI0NSw1MTI0Nyw1MTI0OSw1MTI1Niw1MTI2MCw1MTI2NCw1MTI3Miw1MTI3Myw1MTI3Niw1MTI3Nyw1MTI4NCw1MTMxMiw1MTMxMyw1MTMxNiw1MTMyMCw1MTMyMiw1MTMyOCw1MTMyOSw1MTMzMSw1MTMzMyw1MTMzNCw1MTMzNSw1MTMzOSw1MTM0MCw1MTM0MSw1MTM0OCw1MTM1Nyw1MTM1OSw1MTM2MSw1MTM2OCw1MTM4OCw1MTM4OSw1MTM5Niw1MTQwMCw1MTQwNCw1MTQxMiw1MTQxMyw1MTQxNSw1MTQxNyw1MTQyNCw1MTQyNSw1MTQyOCw1MTQ0NSw1MTQ1Miw1MTQ1Myw1MTQ1Niw1MTQ2MCw1MTQ2MSw1MTQ2Miw1MTQ2OCw1MTQ2OSw1MTQ3MSw1MTQ3Myw1MTQ4MCw1MTUwMCw1MTUwOCw1MTUzNiw1MTUzNyw1MTU0MCw1MTU0NCw1MTU1Miw1MTU1Myw1MTU1NSw1MTU2NCw1MTU2OCw1MTU3Miw1MTU4MCw1MTU5Miw1MTU5Myw1MTU5Niw1MTYwMCw1MTYwOCw1MTYwOSw1MTYxMSw1MTYxMyw1MTY0OCw1MTY0OSw1MTY1Miw1MTY1NSw1MTY1Niw1MTY1OCw1MTY2NCw1MTY2NSw1MTY2Nyw1NDczMCw1NDczMSw1NDczMyw1NDczNCw1NDczNSw1NDczNyw1NDczOSw1NDc0MCw1NDc0MSw1NDc0Miw1NDc0Myw1NDc0Niw1NDc0OCw1NDc1MCw1NDc1MSw1NDc1Miw1NDc1Myw1NDc1NCw1NDc1NSw1NDc1OCw1NDc1OSw1NDc2MSw1NDc2Miw1NDc2Myw1NDc2NSw1NDc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDc2Nyw1NDc2OCw1NDc2OSw1NDc3MCw1NDc3MSw1NDc3NCw1NDc3Niw1NDc3OCw1NDc3OSw1NDc4MCw1NDc4MSw1NDc4Miw1NDc4Myw1NDc4Niw1NDc4Nyw1NDc4OSw1NDc5MCw1NDc5MSw1NDc5Myw1NDc5NCw1NDc5NSw1NDc5Niw1NDc5Nyw1NDc5OCw1NDc5OSw1NDgwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgwNiw1NDgwNyw1NDgwOCw1NDgwOSw1NDgxMCw1NDgxMSw1NDgxMyw1NDgxNCw1NDgxNSw1NDgxNyw1NDgxOCw1NDgxOSw1NDgyMSw1NDgyMiw1NDgyMyw1NDgyNCw1NDgyNSw1NDgyNiw1NDgyNyw1NDgyOCw1NDgzMCw1NDgzMSw1NDgzMiw1NDgzMyw1NDgzNCw1NDgzNSw1NDgzNiw1NDgzNyw1NDgzOCw1NDgzOSw1NDg0Miw1NDg0Myw1MTY2OSw1MTY3MCw1MTY3Myw1MTY3NCw1MTY3Niw1MTY3Nyw1MTY4MCw1MTY4Miw1MTY4NCw1MTY4Nyw1MTY5Miw1MTY5Myw1MTY5NSw1MTY5Niw1MTY5Nyw1MTcwNCw1MTcwNSw1MTcwOCw1MTcxMiw1MTcyMCw1MTcyMSw1MTcyMyw1MTcyNCw1MTcyNSw1MTczMiw1MTczNiw1MTc1Myw1MTc4OCw1MTc4OSw1MTc5Miw1MTc5Niw1MTgwNCw1MTgwNSw1MTgwNyw1MTgwOCw1MTgwOSw1MTgxNiw1MTgzNyw1MTg0NCw1MTg2NCw1MTkwMCw1MTkwMSw1MTkwNCw1MTkwOCw1MTkxNiw1MTkxNyw1MTkxOSw1MTkyMSw1MTkyMyw1MTkyOCw1MTkyOSw1MTkzNiw1MTk0OCw1MTk1Niw1MTk3Niw1MTk4NCw1MTk4OCw1MTk5Miw1MjAwMCw1MjAwMSw1MjAzMyw1MjA0MCw1MjA0MSw1MjA0NCw1MjA0OCw1MjA1Niw1MjA1Nyw1MjA2MSw1MjA2OCw1MjA4OCw1MjA4OSw1MjEyNCw1MjE1Miw1MjE4MCw1MjE5Niw1MjE5OSw1MjIwMSw1MjIzNiw1MjIzNyw1MjI0MCw1MjI0NCw1MjI1Miw1MjI1Myw1MjI1Nyw1MjI1OCw1MjI2Myw1MjI2NCw1MjI2NSw1MjI2OCw1MjI3MCw1MjI3Miw1MjI4MCw1MjI4MSw1MjI4Myw1NDg0NSw1NDg0Niw1NDg0Nyw1NDg0OSw1NDg1MCw1NDg1MSw1NDg1Miw1NDg1NCw1NDg1NSw1NDg1OCw1NDg2MCw1NDg2Miw1NDg2Myw1NDg2NCw1NDg2Niw1NDg2Nyw1NDg3MCw1NDg3MSw1NDg3Myw1NDg3NCw1NDg3NSw1NDg3Nyw1NDg3OCw1NDg3OSw1NDg4MCw1NDg4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDg4Miw1NDg4Myw1NDg4NCw1NDg4NSw1NDg4Niw1NDg4OCw1NDg5MCw1NDg5MSw1NDg5Miw1NDg5Myw1NDg5NCw1NDg5NSw1NDg5OCw1NDg5OSw1NDkwMSw1NDkwMiw1NDkwMyw1NDkwNCw1NDkwNSw1NDkwNiw1NDkwNyw1NDkwOCw1NDkwOSw1NDkxMCw1NDkxMSw1NDkxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDkxMyw1NDkxNCw1NDkxNiw1NDkxOCw1NDkxOSw1NDkyMCw1NDkyMSw1NDkyMiw1NDkyMyw1NDkyNiw1NDkyNyw1NDkyOSw1NDkzMCw1NDkzMSw1NDkzMyw1NDkzNCw1NDkzNSw1NDkzNiw1NDkzNyw1NDkzOCw1NDkzOSw1NDk0MCw1NDk0Miw1NDk0NCw1NDk0Niw1NDk0Nyw1NDk0OCw1NDk0OSw1NDk1MCw1NDk1MSw1NDk1Myw1NDk1NCw1MjI4NCw1MjI4NSw1MjI4Niw1MjI5Miw1MjI5Myw1MjI5Niw1MjMwMCw1MjMwOCw1MjMwOSw1MjMxMSw1MjMxMiw1MjMxMyw1MjMyMCw1MjMyNCw1MjMyNiw1MjMyOCw1MjMzNiw1MjM0MSw1MjM3Niw1MjM3Nyw1MjM4MCw1MjM4NCw1MjM5Miw1MjM5Myw1MjM5NSw1MjM5Niw1MjM5Nyw1MjQwNCw1MjQwNSw1MjQwOCw1MjQxMiw1MjQyMCw1MjQyMSw1MjQyMyw1MjQyNSw1MjQzMiw1MjQzNiw1MjQ1Miw1MjQ2MCw1MjQ2NCw1MjQ4MSw1MjQ4OCw1MjQ4OSw1MjQ5Miw1MjQ5Niw1MjUwNCw1MjUwNSw1MjUwNyw1MjUwOSw1MjUxNiw1MjUyMCw1MjUyNCw1MjUzNyw1MjU3Miw1MjU3Niw1MjU4MCw1MjU4OCw1MjU4OSw1MjU5MSw1MjU5Myw1MjYwMCw1MjYxNiw1MjYyOCw1MjYyOSw1MjYzMiw1MjYzNiw1MjY0NCw1MjY0NSw1MjY0Nyw1MjY0OSw1MjY1Niw1MjY3Niw1MjY4NCw1MjY4OCw1MjcxMiw1MjcxNiw1MjcyMCw1MjcyOCw1MjcyOSw1MjczMSw1MjczMyw1Mjc0MCw1Mjc0NCw1Mjc0OCw1Mjc1Niw1Mjc2MSw1Mjc2OCw1Mjc2OSw1Mjc3Miw1Mjc3Niw1Mjc4NCw1Mjc4NSw1Mjc4Nyw1Mjc4OSw1NDk1NSw1NDk1Nyw1NDk1OCw1NDk1OSw1NDk2MSw1NDk2Miw1NDk2Myw1NDk2NCw1NDk2NSw1NDk2Niw1NDk2Nyw1NDk2OCw1NDk3MCw1NDk3Miw1NDk3Myw1NDk3NCw1NDk3NSw1NDk3Niw1NDk3Nyw1NDk3OCw1NDk3OSw1NDk4Miw1NDk4Myw1NDk4NSw1NDk4Niw1NDk4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDk4OSw1NDk5MCw1NDk5MSw1NDk5Miw1NDk5NCw1NDk5NSw1NDk5Nyw1NDk5OCw1NTAwMCw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5Niw1MzAwMCw1MzAwOCw1MzAwOSw1MzAxMSw1MzAxMyw1MzAyMCw1MzAyNCw1MzAyOCw1MzAzNiw1MzAzNyw1MzAzOSw1MzA0MCw1MzA0MSw1MzA0OCw1MzA3Niw1MzA3Nyw1MzA4MCw1MzA4NCw1MzA5Miw1MzA5Myw1MzA5NSw1MzA5Nyw1MzEwNCw1MzEwNSw1MzEwOCw1MzExMiw1MzEyMCw1MzEyNSw1MzEzMiw1MzE1Myw1MzE2MCw1MzE2OCw1MzE4OCw1MzIxNiw1MzIxNyw1MzIyMCw1MzIyNCw1MzIzMiw1MzIzMyw1MzIzNSw1MzIzNyw1MzI0NCw1MzI0OCw1MzI1Miw1MzI2NSw1MzI3Miw1MzI5Myw1MzMwMCw1MzMwMSw1MzMwNCw1MzMwOCw1NTA2MSw1NTA2Miw1NTA2Myw1NTA2Niw1NTA2Nyw1NTA2OSw1NTA3MCw1NTA3MSw1NTA3Myw1NTA3NCw1NTA3NSw1NTA3Niw1NTA3Nyw1NTA3OCw1NTA3OSw1NTA4Miw1NTA4NCw1NTA4Niw1NTA4Nyw1NTA4OCw1NTA4OSw1NTA5MCw1NTA5MSw1NTA5NCw1NTA5NSw1NTA5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTA5OCw1NTA5OSw1NTEwMSw1NTEwMiw1NTEwMyw1NTEwNCw1NTEwNSw1NTEwNiw1NTEwNyw1NTEwOSw1NTExMCw1NTExMiw1NTExNCw1NTExNSw1NTExNiw1NTExNyw1NTExOCw1NTExOSw1NTEyMiw1NTEyMyw1NTEyNSw1NTEzMCw1NTEzMSw1NTEzMiw1NTEzMyw1NTEzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTEzNSw1NTEzOCw1NTE0MCw1NTE0Miw1NTE0Myw1NTE0NCw1NTE0Niw1NTE0Nyw1NTE0OSw1NTE1MCw1NTE1MSw1NTE1Myw1NTE1NCw1NTE1NSw1NTE1Nyw1NTE1OCw1NTE1OSw1NTE2MCw1NTE2MSw1NTE2Miw1NTE2Myw1NTE2Niw1NTE2Nyw1NTE2OCw1NTE3MCw1NTE3MSw1NTE3Miw1NTE3Myw1NTE3NCw1NTE3NSw1NTE3OCw1NTE3OSw1MzMxNiw1MzMxNyw1MzMxOSw1MzMyMSw1MzMyOCw1MzMzMiw1MzMzNiw1MzM0NCw1MzM1Niw1MzM1Nyw1MzM2MCw1MzM2NCw1MzM3Miw1MzM3Myw1MzM3Nyw1MzQxMiw1MzQxMyw1MzQxNiw1MzQyMCw1MzQyOCw1MzQyOSw1MzQzMSw1MzQzMyw1MzQ0MCw1MzQ0MSw1MzQ0NCw1MzQ0OCw1MzQ0OSw1MzQ1Niw1MzQ1Nyw1MzQ1OSw1MzQ2MCw1MzQ2MSw1MzQ2OCw1MzQ2OSw1MzQ3Miw1MzQ3Niw1MzQ4NCw1MzQ4NSw1MzQ4Nyw1MzQ4OCw1MzQ4OSw1MzQ5Niw1MzUxNyw1MzU1Miw1MzU1Myw1MzU1Niw1MzU2MCw1MzU2Miw1MzU2OCw1MzU2OSw1MzU3MSw1MzU3Miw1MzU3Myw1MzU4MCw1MzU4MSw1MzU4NCw1MzU4OCw1MzU5Niw1MzU5Nyw1MzU5OSw1MzYwMSw1MzYwOCw1MzYxMiw1MzYyOCw1MzYzNiw1MzY0MCw1MzY2NCw1MzY2NSw1MzY2OCw1MzY3Miw1MzY4MCw1MzY4MSw1MzY4Myw1MzY4NSw1MzY5MCw1MzY5Miw1MzY5Niw1MzcyMCw1Mzc0OCw1Mzc1Miw1Mzc2Nyw1Mzc2OSw1Mzc3Niw1MzgwNCw1MzgwNSw1MzgwOCw1MzgxMiw1MzgyMCw1MzgyMSw1MzgyMyw1MzgyNSw1MzgzMiw1Mzg1Miw1NTE4MSw1NTE4Miw1NTE4Myw1NTE4NSw1NTE4Niw1NTE4Nyw1NTE4OCw1NTE4OSw1NTE5MCw1NTE5MSw1NTE5NCw1NTE5Niw1NTE5OCw1NTE5OSw1NTIwMCw1NTIwMSw1NTIwMiw1NTIwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2MCw1Mzg4OCw1Mzg4OSw1Mzg5Miw1Mzg5Niw1MzkwNCw1MzkwNSw1MzkwOSw1MzkxNiw1MzkyMCw1MzkyNCw1MzkzMiw1MzkzNyw1Mzk0NCw1Mzk0NSw1Mzk0OCw1Mzk1MSw1Mzk1Miw1Mzk1NCw1Mzk2MCw1Mzk2MSw1Mzk2Myw1Mzk3Miw1Mzk3Niw1Mzk4MCw1Mzk4OCw1Mzk4OSw1NDAwMCw1NDAwMSw1NDAwNCw1NDAwOCw1NDAxNiw1NDAxNyw1NDAxOSw1NDAyMSw1NDAyOCw1NDAyOSw1NDAzMCw1NDAzMiw1NDAzNiw1NDAzOCw1NDA0NCw1NDA0NSw1NDA0Nyw1NDA0OCw1NDA0OSw1NDA1Myw1NDA1Niw1NDA1Nyw1NDA2MCw1NDA2NCw1NDA3Miw1NDA3Myw1NDA3NSw1NDA3Niw1NDA3Nyw1NDA4NCw1NDA4NSw1NDE0MCw1NDE0MSw1NDE0NCw1NDE0OCw1NDE1Niw1NDE1Nyw1NDE1OSw1NDE2MCw1NDE2MSw1NDE2OCw1NDE2OSw1NDE3Miw1NDE3Niw1NDE4NCw1NDE4NSw1NDE4Nyw1NDE4OSw1NDE5Niw1NDIwMCw1NDIwNCw1NDIxMiw1NDIxMyw1NDIxNiw1NDIxNyw1NDIyNCw1NDIzMiw1NDI0MSw1NDI0Myw1NDI1Miw1NDI1Myw1NDI1Niw1NDI2MCw1NDI2OCw1NDI2OSw1NDI3MSw1NDI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI4MCw1NDMwMSw1NDMzNiw1NDM0MCw1NDM2NCw1NDM2OCw1NDM3Miw1NDM4MSw1NDM4Myw1NDM5Miw1NDM5Myw1NDM5Niw1NDM5OSw1NDQwMCw1NDQwMiw1NDQwOCw1NDQwOSw1NDQxMSw1NDQxMyw1NDQyMCw1NDQ0MSw1NDQ3Niw1NDQ4MCw1NDQ4NCw1NDQ5Miw1NDQ5NSw1NDUwNCw1NDUwOCw1NDUxMiw1NDUyMCw1NDUyMyw1NDUyNSw1NDUzMiw1NDUzNiw1NDU0MCw1NDU0OCw1NDU0OSw1NDU1MSw1NDU4OCw1NDU4OSw1NDU5Miw1NDU5Niw1NDYwNCw1NDYwNSw1NDYwNyw1NDYwOSw1NDYxNiw1NDYxNyw1NDYyMCw1NDYyNCw1NDYyOSw1NDYzMiw1NDYzMyw1NDYzNSw1NDYzNyw1NDY0NCw1NDY0NSw1NDY0OCw1NDY1Miw1NDY2MCw1NDY2MSw1NDY2Myw1NDY2NCw1NDY2NSw1NDY3Miw1NDY5Myw1NDcyOCw1NDcyOSw1NDczMiw1NDczNiw1NDczOCw1NDc0NCw1NDc0NSw1NDc0Nyw1NDc0OSw1NDc1Niw1NDc1Nyw1NDc2MCw1NDc2NCw1NDc3Miw1NDc3Myw1NDc3NSw1NDc3Nyw1NDc4NCw1NDc4NSw1NDc4OCw1NDc5Miw1NDgwMCw1NDgwMSw1NDgwMyw1NDgwNCw1NDgwNSw1NDgxMiw1NDgxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgyMCw1NDgyOSw1NDg0MCw1NDg0MSw1NDg0NCw1NDg0OCw1NDg1Myw1NDg1Niw1NDg1Nyw1NDg1OSw1NDg2MSw1NDg2NSw1NDg2OCw1NDg2OSw1NDg3Miw1NDg3Niw1NDg4Nyw1NDg4OSw1NDg5Niw1NDg5Nyw1NDkwMCw1NDkxNSw1NDkxNyw1NDkyNCw1NDkyNSw1NDkyOCw1NDkzMiw1NDk0MSw1NDk0Myw1NDk0NSw1NDk1Miw1NDk1Niw1NDk2MCw1NDk2OSw1NDk3MSw1NDk4MCw1NDk4MSw1NDk4NCw1NDk4OCw1NDk5Myw1NDk5Niw1NDk5OSw1NTAwMSw1NTAwOCw1NTAxMiw1NTAxNiw1NTAyNCw1NTAyOSw1NTAzNiw1NTAzNyw1NTA0MCw1NTA0NCw1NTA1Nyw1NTA2NCw1NTA2NSw1NTA2OCw1NTA3Miw1NTA4MCw1NTA4MSw1NTA4Myw1NTA4NSw1NTA5Miw1NTA5Myw1NTA5Niw1NTEwMCw1NTEwOCw1NTExMSw1NTExMyw1NTEyMCw1NTEyMSw1NTEyNCw1NTEyNiw1NTEyNyw1NTEyOCw1NTEyOSw1NTEzNiw1NTEzNyw1NTEzOSw1NTE0MSw1NTE0NSw1NTE0OCw1NTE1Miw1NTE1Niw1NTE2NCw1NTE2NSw1NTE2OSw1NTE3Niw1NTE3Nyw1NTE4MCw1NTE4NCw1NTE5Miw1NTE5Myw1NTE5NSw1NTE5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMjg1LDIwMzM5LDIwNTUxLDIwNzI5LDIxMTUyLDIxNDg3LDIxNjIxLDIxNzMzLDIyMDI1LDIzMjMzLDIzNDc4LDI2MjQ3LDI2NTUwLDI2NTUxLDI2NjA3LDI3NDY4LDI5NjM0LDMwMTQ2LDMxMjkyLDMzNDk5LDMzNTQwLDM0OTAzLDM0OTUyLDM1MzgyLDM2MDQwLDM2MzAzLDM2NjAzLDM2ODM4LDM5MzgxLDIxMDUxLDIxMzY0LDIxNTA4LDI0NjgyLDI0OTMyLDI3NTgwLDI5NjQ3LDMzMDUwLDM1MjU4LDM1MjgyLDM4MzA3LDIwMzU1LDIxMDAyLDIyNzE4LDIyOTA0LDIzMDE0LDI0MTc4LDI0MTg1LDI1MDMxLDI1NTM2LDI2NDM4LDI2NjA0LDI2NzUxLDI4NTY3LDMwMjg2LDMwNDc1LDMwOTY1LDMxMjQwLDMxNDg3LDMxNzc3LDMyOTI1LDMzMzkwLDMzMzkzLDM1NTYzLDM4MjkxLDIwMDc1LDIxOTE3LDI2MzU5LDI4MjEyLDMwODgzLDMxNDY5LDMzODgzLDM1MDg4LDM0NjM4LDM4ODI0LDIxMjA4LDIyMzUwLDIyNTcwLDIzODg0LDI0ODYzLDI1MDIyLDI1MTIxLDI1OTU0LDI2NTc3LDI3MjA0LDI4MTg3LDI5OTc2LDMwMTMxLDMwNDM1LDMwNjQwLDMyMDU4LDM3MDM5LDM3OTY5LDM3OTcwLDQwODUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMjgzLDIzNzI0LDMwMDAyLDMyOTg3LDM3NDQwLDM4Mjk2LDIxMDgzLDIyNTM2LDIzMDA0LDIzNzEzLDIzODMxLDI0MjQ3LDI0Mzc4LDI0Mzk0LDI0OTUxLDI3NzQzLDMwMDc0LDMwMDg2LDMxOTY4LDMyMTE1LDMyMTc3LDMyNjUyLDMzMTA4LDMzMzEzLDM0MTkzLDM1MTM3LDM1NjExLDM3NjI4LDM4NDc3LDQwMDA3LDIwMTcxLDIwMjE1LDIwNDkxLDIwOTc3LDIyNjA3LDI0ODg3LDI0ODk0LDI0OTM2LDI1OTEzLDI3MTE0LDI4NDMzLDMwMTE3LDMwMzQyLDMwNDIyLDMxNjIzLDMzNDQ1LDMzOTk1LDYzNzQ0LDM3Nzk5LDM4MjgzLDIxODg4LDIzNDU4LDIyMzUzLDYzNzQ1LDMxOTIzLDMyNjk3LDM3MzAxLDIwNTIwLDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1NDU0LDI1ODE4LDI1ODMxLDI4MTkyLDI4ODQ0LDMxMDY3LDM2MzE3LDM2MzgyLDYzNzQ2LDM2OTg5LDM3NDQ1LDM3NjI0LDIwMDk0LDIwMjE0LDIwNTgxLDI0MDYyLDI0MzE0LDI0ODM4LDI2OTY3LDMzMTM3LDM0Mzg4LDM2NDIzLDM3NzQ5LDM5NDY3LDIwMDYyLDIwNjI1LDI2NDgwLDI2Njg4LDIwNzQ1LDIxMTMzLDIxMTM4LDI3Mjk4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwNjUyLDM3MzkyLDQwNjYwLDIxMTYzLDI0NjIzLDM2ODUwLDIwNTUyLDI1MDAxLDI1NTgxLDI1ODAyLDI2Njg0LDI3MjY4LDI4NjA4LDMzMTYwLDM1MjMzLDM4NTQ4LDIyNTMzLDI5MzA5LDI5MzU2LDI5OTU2LDMyMTIxLDMyMzY1LDMyOTM3LDM1MjExLDM1NzAwLDM2OTYzLDQwMjczLDI1MjI1LDI3NzcwLDI4NTAwLDMyMDgwLDMyNTcwLDM1MzYzLDIwODYwLDI0OTA2LDMxNjQ1LDM1NjA5LDM3NDYzLDM3NzcyLDIwMTQwLDIwNDM1LDIwNTEwLDIwNjcwLDIwNzQyLDIxMTg1LDIxMTk3LDIxMzc1LDIyMzg0LDIyNjU5LDI0MjE4LDI0NDY1LDI0OTUwLDI1MDA0LDI1ODA2LDI1OTY0LDI2MjIzLDI2Mjk5LDI2MzU2LDI2Nzc1LDI4MDM5LDI4ODA1LDI4OTEzLDI5ODU1LDI5ODYxLDI5ODk4LDMwMTY5LDMwODI4LDMwOTU2LDMxNDU1LDMxNDc4LDMyMDY5LDMyMTQ3LDMyNzg5LDMyODMxLDMzMDUxLDMzNjg2LDM1Njg2LDM2NjI5LDM2ODg1LDM3ODU3LDM4OTE1LDM4OTY4LDM5NTE0LDM5OTEyLDIwNDE4LDIxODQzLDIyNTg2LDIyODY1LDIzMzk1LDIzNjIyLDI0NzYwLDI1MTA2LDI2NjkwLDI2ODAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODU2LDI4MzMwLDMwMDI4LDMwMzI4LDMwOTI2LDMxMjkzLDMxOTk1LDMyMzYzLDMyMzgwLDM1MzM2LDM1NDg5LDM1OTAzLDM4NTQyLDQwMzg4LDIxNDc2LDIxNDgxLDIxNTc4LDIxNjE3LDIyMjY2LDIyOTkzLDIzMzk2LDIzNjExLDI0MjM1LDI1MzM1LDI1OTExLDI1OTI1LDI1OTcwLDI2MjcyLDI2NTQzLDI3MDczLDI3ODM3LDMwMjA0LDMwMzUyLDMwNTkwLDMxMjk1LDMyNjYwLDMyNzcxLDMyOTI5LDMzMTY3LDMzNTEwLDMzNTMzLDMzNzc2LDM0MjQxLDM0ODY1LDM0OTk2LDM1NDkzLDYzNzQ3LDM2NzY0LDM3Njc4LDM4NTk5LDM5MDE1LDM5NjQwLDQwNzIzLDIxNzQxLDI2MDExLDI2MzU0LDI2NzY3LDMxMjk2LDM1ODk1LDQwMjg4LDIyMjU2LDIyMzcyLDIzODI1LDI2MTE4LDI2ODAxLDI2ODI5LDI4NDE0LDI5NzM2LDM0OTc0LDM5OTA4LDI3NzUyLDYzNzQ4LDM5NTkyLDIwMzc5LDIwODQ0LDIwODQ5LDIxMTUxLDIzMzgwLDI0MDM3LDI0NjU2LDI0Njg1LDI1MzI5LDI1NTExLDI1OTE1LDI5NjU3LDMxMzU0LDM0NDY3LDM2MDAyLDM4Nzk5LDIwMDE4LDIzNTIxLDI1MDk2LDI2NTI0LDI5OTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTg1LDMzNzQ3LDM1NDYzLDM1NTA2LDM2MzI4LDM2OTQyLDM3NzA3LDM4OTgyLDI0Mjc1LDI3MTEyLDM0MzAzLDM3MTAxLDYzNzQ5LDIwODk2LDIzNDQ4LDIzNTMyLDI0OTMxLDI2ODc0LDI3NDU0LDI4NzQ4LDI5NzQzLDI5OTEyLDMxNjQ5LDMyNTkyLDMzNzMzLDM1MjY0LDM2MDExLDM4MzY0LDM5MjA4LDIxMDM4LDI0NjY5LDI1MzI0LDM2ODY2LDIwMzYyLDIwODA5LDIxMjgxLDIyNzQ1LDI0MjkxLDI2MzM2LDI3OTYwLDI4ODI2LDI5Mzc4LDI5NjU0LDMxNTY4LDMzMDA5LDM3OTc5LDIxMzUwLDI1NDk5LDMyNjE5LDIwMDU0LDIwNjA4LDIyNjAyLDIyNzUwLDI0NjE4LDI0ODcxLDI1Mjk2LDI3MDg4LDM5NzQ1LDIzNDM5LDMyMDI0LDMyOTQ1LDM2NzAzLDIwMTMyLDIwNjg5LDIxNjc2LDIxOTMyLDIzMzA4LDIzOTY4LDI0MDM5LDI1ODk4LDI1OTM0LDI2NjU3LDI3MjExLDI5NDA5LDMwMzUwLDMwNzAzLDMyMDk0LDMyNzYxLDMzMTg0LDM0MTI2LDM0NTI3LDM2NjExLDM2Njg2LDM3MDY2LDM5MTcxLDM5NTA5LDM5ODUxLDE5OTkyLDIwMDM3LDIwMDYxLDIwMTY3LDIwNDY1LDIwODU1LDIxMjQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMzEyLDIxNDc1LDIxNDc3LDIxNjQ2LDIyMDM2LDIyMzg5LDIyNDM0LDIzNDk1LDIzOTQzLDI0MjcyLDI1MDg0LDI1MzA0LDI1OTM3LDI2NTUyLDI2NjAxLDI3MDgzLDI3NDcyLDI3NTkwLDI3NjI4LDI3NzE0LDI4MzE3LDI4NzkyLDI5Mzk5LDI5NTkwLDI5Njk5LDMwNjU1LDMwNjk3LDMxMzUwLDMyMTI3LDMyNzc3LDMzMjc2LDMzMjg1LDMzMjkwLDMzNTAzLDM0OTE0LDM1NjM1LDM2MDkyLDM2NTQ0LDM2ODgxLDM3MDQxLDM3NDc2LDM3NTU4LDM5Mzc4LDM5NDkzLDQwMTY5LDQwNDA3LDQwODYwLDIyMjgzLDIzNjE2LDMzNzM4LDM4ODE2LDM4ODI3LDQwNjI4LDIxNTMxLDMxMzg0LDMyNjc2LDM1MDMzLDM2NTU3LDM3MDg5LDIyNTI4LDIzNjI0LDI1NDk2LDMxMzkxLDIzNDcwLDI0MzM5LDMxMzUzLDMxNDA2LDMzNDIyLDM2NTI0LDIwNTE4LDIxMDQ4LDIxMjQwLDIxMzY3LDIyMjgwLDI1MzMxLDI1NDU4LDI3NDAyLDI4MDk5LDMwNTE5LDIxNDEzLDI5NTI3LDM0MTUyLDM2NDcwLDM4MzU3LDI2NDI2LDI3MzMxLDI4NTI4LDM1NDM3LDM2NTU2LDM5MjQzLDYzNzUwLDI2MjMxLDI3NTEyLDM2MDIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM5NzQwLDYzNzUxLDIxNDgzLDIyMzE3LDIyODYyLDI1NTQyLDI3MTMxLDI5Njc0LDMwNzg5LDMxNDE4LDMxNDI5LDMxOTk4LDMzOTA5LDM1MjE1LDM2MjExLDM2OTE3LDM4MzEyLDIxMjQzLDIyMzQzLDMwMDIzLDMxNTg0LDMzNzQwLDM3NDA2LDYzNzUyLDI3MjI0LDIwODExLDIxMDY3LDIxMTI3LDI1MTE5LDI2ODQwLDI2OTk3LDM4NTUzLDIwNjc3LDIxMTU2LDIxMjIwLDI1MDI3LDI2MDIwLDI2NjgxLDI3MTM1LDI5ODIyLDMxNTYzLDMzNDY1LDMzNzcxLDM1MjUwLDM1NjQxLDM2ODE3LDM5MjQxLDYzNzUzLDIwMTcwLDIyOTM1LDI1ODEwLDI2MTI5LDI3Mjc4LDI5NzQ4LDMxMTA1LDMxMTY1LDMzNDQ5LDM0OTQyLDM0OTQzLDM1MTY3LDYzNzU0LDM3NjcwLDIwMjM1LDIxNDUwLDI0NjEzLDI1MjAxLDI3NzYyLDMyMDI2LDMyMTAyLDIwMTIwLDIwODM0LDMwNjg0LDMyOTQzLDIwMjI1LDIwMjM4LDIwODU0LDIwODY0LDIxOTgwLDIyMTIwLDIyMzMxLDIyNTIyLDIyNTI0LDIyODA0LDIyODU1LDIyOTMxLDIzNDkyLDIzNjk2LDIzODIyLDI0MDQ5LDI0MTkwLDI0NTI0LDI1MjE2LDI2MDcxLDI2MDgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2Mzk4LDI2Mzk5LDI2NDYyLDI2ODI3LDI2ODIwLDI3MjMxLDI3NDUwLDI3NjgzLDI3NzczLDI3Nzc4LDI4MTAzLDI5NTkyLDI5NzM0LDI5NzM4LDI5ODI2LDI5ODU5LDMwMDcyLDMwMDc5LDMwODQ5LDMwOTU5LDMxMDQxLDMxMDQ3LDMxMDQ4LDMxMDk4LDMxNjM3LDMyMDAwLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEzLDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYzNzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYzNzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYzNzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYzNzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAwLDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYzODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMzMjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYzODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIxLDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMxNTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIyNjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMxOTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQxLDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIwOTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMxLDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYzLDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUzLDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQwNTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAxLDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIyMjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMxNTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQwLDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMzLDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAwLDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMwMTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQwNjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3MDAwLDE5OTc1LDIxMzI1LDIzMDgxLDI0MDE4LDI0Mzk4LDI0OTMwLDI1NDA1LDI2MjE3LDI2MzY0LDI4NDE1LDI4NDU5LDI4NzcxLDMwNjIyLDMzODM2LDM0MDY3LDM0ODc1LDM2NjI3LDM5MjM3LDM5OTk1LDIxNzg4LDI1MjczLDI2NDExLDI3ODE5LDMzNTQ1LDM1MTc4LDM4Nzc4LDIwMTI5LDIyOTE2LDI0NTM2LDI0NTM3LDI2Mzk1LDMyMTc4LDMyNTk2LDMzNDI2LDMzNTc5LDMzNzI1LDM2NjM4LDM3MDE3LDIyNDc1LDIyOTY5LDIzMTg2LDIzNTA0LDI2MTUxLDI2NTIyLDI2NzU3LDI3NTk5LDI5MDI4LDMyNjI5LDM2MDIzLDM2MDY3LDM2OTkzLDM5NzQ5LDMzMDMyLDM1OTc4LDM4NDc2LDM5NDg4LDQwNjEzLDIzMzkxLDI3NjY3LDI5NDY3LDMwNDUwLDMwNDMxLDMzODA0LDIwOTA2LDM1MjE5LDIwODEzLDIwODg1LDIxMTkzLDI2ODI1LDI3Nzk2LDMwNDY4LDMwNDk2LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjI5LDI4MzU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MDY1LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDI2MjY5LDI2OTE5LDI4MzE5LDMwMzk5LDMwNjA5LDMzNTU5LDMzOTg2LDM0NzE5LDM3MjI1LDM3NTI4LDQwMTgwLDM0OTQ2LDIwMzk4LDIwODgyLDIxMjE1LDIyOTgyLDI0MTI1LDI0OTE3LDI1NzIwLDI1NzIxLDI2Mjg2LDI2NTc2LDI3MTY5LDI3NTk3LDI3NjExLDI5Mjc5LDI5MjgxLDI5NzYxLDMwNTIwLDMwNjgzLDMyNzkxLDMzNDY4LDMzNTQxLDM1NTg0LDM1NjI0LDM1OTgwLDI2NDA4LDI3NzkyLDI5Mjg3LDMwNDQ2LDMwNTY2LDMxMzAyLDQwMzYxLDI3NTE5LDI3Nzk0LDIyODE4LDI2NDA2LDMzOTQ1LDIxMzU5LDIyNjc1LDIyOTM3LDI0Mjg3LDI1NTUxLDI2MTY0LDI2NDgzLDI4MjE4LDI5NDgzLDMxNDQ3LDMzNDk1LDM3NjcyLDIxMjA5LDI0MDQzLDI1MDA2LDI1MDM1LDI1MDk4LDI1Mjg3LDI1NzcxLDI2MDgwLDI2OTY5LDI3NDk0LDI3NTk1LDI4OTYxLDI5Njg3LDMwMDQ1LDMyMzI2LDMzMzEwLDMzNTM4LDM0MTU0LDM1NDkxLDM2MDMxLDM4Njk1LDQwMjg5LDIyNjk2LDQwNjY0LDIwNDk3LDIxMDA2LDIxNTYzLDIxODM5LDI1OTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3NzY2LDMyMDEwLDMyMDExLDMyODYyLDM0NDQyLDM4MjcyLDM4NjM5LDIxMjQ3LDI3Nzk3LDI5Mjg5LDIxNjE5LDIzMTk0LDIzNjE0LDIzODgzLDI0Mzk2LDI0NDk0LDI2NDEwLDI2ODA2LDI2OTc5LDI4MjIwLDI4MjI4LDMwNDczLDMxODU5LDMyNjU0LDM0MTgzLDM1NTk4LDM2ODU1LDM4NzUzLDQwNjkyLDIzNzM1LDI0NzU4LDI0ODQ1LDI1MDAzLDI1OTM1LDI2MTA3LDI2MTA4LDI3NjY1LDI3ODg3LDI5NTk5LDI5NjQxLDMyMjI1LDM4MjkyLDIzNDk0LDM0NTg4LDM1NjAwLDIxMDg1LDIxMzM4LDI1MjkzLDI1NjE1LDI1Nzc4LDI2NDIwLDI3MTkyLDI3ODUwLDI5NjMyLDI5ODU0LDMxNjM2LDMxODkzLDMyMjgzLDMzMTYyLDMzMzM0LDM0MTgwLDM2ODQzLDM4NjQ5LDM5MzYxLDIwMjc2LDIxMzIyLDIxNDUzLDIxNDY3LDI1MjkyLDI1NjQ0LDI1ODU2LDI2MDAxLDI3MDc1LDI3ODg2LDI4NTA0LDI5Njc3LDMwMDM2LDMwMjQyLDMwNDM2LDMwNDYwLDMwOTI4LDMwOTcxLDMxMDIwLDMyMDcwLDMzMzI0LDM0Nzg0LDM2ODIwLDM4OTMwLDM5MTUxLDIxMTg3LDI1MzAwLDI1NzY1LDI4MTk2LDI4NDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwMzMyLDM2Mjk5LDM3Mjk3LDM3NDc0LDM5NjYyLDM5NzQ3LDIwNTE1LDIwNjIxLDIyMzQ2LDIyOTUyLDIzNTkyLDI0MTM1LDI0NDM5LDI1MTUxLDI1OTE4LDI2MDQxLDI2MDQ5LDI2MTIxLDI2NTA3LDI3MDM2LDI4MzU0LDMwOTE3LDMyMDMzLDMyOTM4LDMzMTUyLDMzMzIzLDMzNDU5LDMzOTUzLDM0NDQ0LDM1MzcwLDM1NjA3LDM3MDMwLDM4NDUwLDQwODQ4LDIwNDkzLDIwNDY3LDYzODQzLDIyNTIxLDI0NDcyLDI1MzA4LDI1NDkwLDI2NDc5LDI4MjI3LDI4OTUzLDMwNDAzLDMyOTcyLDMyOTg2LDM1MDYwLDM1MDYxLDM1MDk3LDM2MDY0LDM2NjQ5LDM3MTk3LDM4NTA2LDIwMjcxLDIwMzM2LDI0MDkxLDI2NTc1LDI2NjU4LDMwMzMzLDMwMzM0LDM5NzQ4LDI0MTYxLDI3MTQ2LDI5MDMzLDI5MTQwLDMwMDU4LDYzODQ0LDMyMzIxLDM0MTE1LDM0MjgxLDM5MTMyLDIwMjQwLDMxNTY3LDMyNjI0LDM4MzA5LDIwOTYxLDI0MDcwLDI2ODA1LDI3NzEwLDI3NzI2LDI3ODY3LDI5MzU5LDMxNjg0LDMzNTM5LDI3ODYxLDI5NzU0LDIwNzMxLDIxMTI4LDIyNzIxLDI1ODE2LDI3Mjg3LDI5ODYzLDMwMjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwODg3LDM0MzI3LDM4MzcwLDM4NzEzLDYzODQ1LDIxMzQyLDI0MzIxLDM1NzIyLDM2Nzc2LDM2NzgzLDM3MDAyLDIxMDI5LDMwNjI5LDQwMDA5LDQwNzEyLDE5OTkzLDIwNDgyLDIwODUzLDIzNjQzLDI0MTgzLDI2MTQyLDI2MTcwLDI2NTY0LDI2ODIxLDI4ODUxLDI5OTUzLDMwMTQ5LDMxMTc3LDMxNDUzLDM2NjQ3LDM5MjAwLDM5NDMyLDIwNDQ1LDIyNTYxLDIyNTc3LDIzNTQyLDI2MjIyLDI3NDkzLDI3OTIxLDI4MjgyLDI4NTQxLDI5NjY4LDI5OTk1LDMzNzY5LDM1MDM2LDM1MDkxLDM1Njc2LDM2NjI4LDIwMjM5LDIwNjkzLDIxMjY0LDIxMzQwLDIzNDQzLDI0NDg5LDI2MzgxLDMxMTE5LDMzMTQ1LDMzNTgzLDM0MDY4LDM1MDc5LDM1MjA2LDM2NjY1LDM2NjY3LDM5MzMzLDM5OTU0LDI2NDEyLDIwMDg2LDIwNDcyLDIyODU3LDIzNTUzLDIzNzkxLDIzNzkyLDI1NDQ3LDI2ODM0LDI4OTI1LDI5MDkwLDI5NzM5LDMyMjk5LDM0MDI4LDM0NTYyLDM2ODk4LDM3NTg2LDQwMTc5LDE5OTgxLDIwMTg0LDIwNDYzLDIwNjEzLDIxMDc4LDIxMTAzLDIxNTQyLDIxNjQ4LDIyNDk2LDIyODI3LDIzMTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMzg2LDIzNDEzLDIzNTAwLDI0MjIwLDYzODQ2LDI1MjA2LDI1OTc1LDI2MDIzLDI4MDE0LDI4MzI1LDI5MjM4LDMxNTI2LDMxODA3LDMyNTY2LDMzMTA0LDMzMTA1LDMzMTc4LDMzMzQ0LDMzNDMzLDMzNzA1LDM1MzMxLDM2MDAwLDM2MDcwLDM2MDkxLDM2MjEyLDM2MjgyLDM3MDk2LDM3MzQwLDM4NDI4LDM4NDY4LDM5Mzg1LDQwMTY3LDIxMjcxLDIwOTk4LDIxNTQ1LDIyMTMyLDIyNzA3LDIyODY4LDIyODk0LDI0NTc1LDI0OTk2LDI1MTk4LDI2MTI4LDI3Nzc0LDI4OTU0LDMwNDA2LDMxODgxLDMxOTY2LDMyMDI3LDMzNDUyLDM2MDMzLDM4NjQwLDYzODQ3LDIwMzE1LDI0MzQzLDI0NDQ3LDI1MjgyLDIzODQ5LDI2Mzc5LDI2ODQyLDMwODQ0LDMyMzIzLDQwMzAwLDE5OTg5LDIwNjMzLDIxMjY5LDIxMjkwLDIxMzI5LDIyOTE1LDIzMTM4LDI0MTk5LDI0NzU0LDI0OTcwLDI1MTYxLDI1MjA5LDI2MDAwLDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMyNzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEzLDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYzLDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMyODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIwMTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIxNDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEyLDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIyLDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIwNjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIyNzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIyODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMzOTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMxLDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQxLDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMyODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIxMjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYzODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMyLDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMyMzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIzNDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYzLDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUzLDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0MjgyLDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIzNDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAwLDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYyLDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcwLDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMyNzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUxLDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYwLDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIwLDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIyNTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMyLDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYzLDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5MzkwLDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMzNDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMzOTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIwMzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIyMTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIwODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYzODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYzODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3NzgzLDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkwLDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYzODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMzODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIzOTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUyLDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxMDAwLDIxNDczLDI2MzU1LDI3NzU3LDI4NjE4LDI5NDUwLDMwNTkxLDMxMzMwLDMzNDU0LDM0MjY5LDM0MzA2LDYzOTI2LDM1MDI4LDM1NDI3LDM1NzA5LDM1OTQ3LDYzOTI3LDM3NTU1LDYzOTI4LDM4Njc1LDM4OTI4LDIwMTE2LDIwMjM3LDIwNDI1LDIwNjU4LDIxMzIwLDIxNTY2LDIxNTU1LDIxOTc4LDIyNjI2LDIyNzE0LDIyODg3LDIzMDY3LDIzNTI0LDI0NzM1LDYzOTI5LDI1MDM0LDI1OTQyLDI2MTExLDI2MjEyLDI2NzkxLDI3NzM4LDI4NTk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4ODc5LDI5MTAwLDI5NTIyLDMxNjEzLDM0NTY4LDM1NDkyLDM5OTg2LDQwNzExLDIzNjI3LDI3Nzc5LDI5NTA4LDI5NTc3LDM3NDM0LDI4MzMxLDI5Nzk3LDMwMjM5LDMxMzM3LDMyMjc3LDM0MzE0LDIwODAwLDIyNzI1LDI1NzkzLDI5OTM0LDI5OTczLDMwMzIwLDMyNzA1LDM3MDEzLDM4NjA1LDM5MjUyLDI4MTk4LDI5OTI2LDMxNDAxLDMxNDAyLDMzMjUzLDM0NTIxLDM0NjgwLDM1MzU1LDIzMTEzLDIzNDM2LDIzNDUxLDI2Nzg1LDI2ODgwLDI4MDAzLDI5NjA5LDI5NzE1LDI5NzQwLDMwODcxLDMyMjMzLDMyNzQ3LDMzMDQ4LDMzMTA5LDMzNjk0LDM1OTE2LDM4NDQ2LDM4OTI5LDI2MzUyLDI0NDQ4LDI2MTA2LDI2NTA1LDI3NzU0LDI5NTc5LDIwNTI1LDIzMDQzLDI3NDk4LDMwNzAyLDIyODA2LDIzOTE2LDI0MDEzLDI5NDc3LDMwMDMxLDYzOTMwLDYzOTMxLDIwNzA5LDIwOTg1LDIyNTc1LDIyODI5LDIyOTM0LDIzMDAyLDIzNTI1LDYzOTMyLDYzOTMzLDIzOTcwLDI1MzAzLDI1NjIyLDI1NzQ3LDI1ODU0LDYzOTM0LDI2MzMyLDYzOTM1LDI3MjA4LDYzOTM2LDI5MTgzLDI5Nzk2LDYzOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMzY4LDMxNDA3LDMyMzI3LDMyMzUwLDMyNzY4LDMzMTM2LDYzOTM4LDM0Nzk5LDM1MjAxLDM1NjE2LDM2OTUzLDYzOTM5LDM2OTkyLDM5MjUwLDI0OTU4LDI3NDQyLDI4MDIwLDMyMjg3LDM1MTA5LDM2Nzg1LDIwNDMzLDIwNjUzLDIwODg3LDIxMTkxLDIyNDcxLDIyNjY1LDIzNDgxLDI0MjQ4LDI0ODk4LDI3MDI5LDI4MDQ0LDI4MjYzLDI4MzQyLDI5MDc2LDI5Nzk0LDI5OTkyLDI5OTk2LDMyODgzLDMzNTkyLDMzOTkzLDM2MzYyLDM3NzgwLDM3ODU0LDYzOTQwLDIwMTEwLDIwMzA1LDIwNTk4LDIwNzc4LDIxNDQ4LDIxNDUxLDIxNDkxLDIzNDMxLDIzNTA3LDIzNTg4LDI0ODU4LDI0OTYyLDI2MTAwLDI5Mjc1LDI5NTkxLDI5NzYwLDMwNDAyLDMxMDU2LDMxMTIxLDMxMTYxLDMyMDA2LDMyNzAxLDMzNDE5LDM0MjYxLDM0Mzk4LDM2ODAyLDM2OTM1LDM3MTA5LDM3MzU0LDM4NTMzLDM4NjMyLDM4NjMzLDIxMjA2LDI0NDIzLDI2MDkzLDI2MTYxLDI2NjcxLDI5MDIwLDMxMjg2LDM3MDU3LDM4OTIyLDIwMTEzLDYzOTQxLDI3MjE4LDI3NTUwLDI4NTYwLDI5MDY1LDMyNzkyLDMzNDY0LDM0MTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTM5LDM4NTQ5LDM4NjQyLDM4OTA3LDM0MDc0LDM5NzI5LDIwMTEyLDI5MDY2LDM4NTk2LDIwODAzLDIxNDA3LDIxNzI5LDIyMjkxLDIyMjkwLDIyNDM1LDIzMTk1LDIzMjM2LDIzNDkxLDI0NjE2LDI0ODk1LDI1NTg4LDI3NzgxLDI3OTYxLDI4Mjc0LDI4MzA0LDI5MjMyLDI5NTAzLDI5NzgzLDMzNDg5LDM0OTQ1LDM2Njc3LDM2OTYwLDYzOTQyLDM4NDk4LDM5MDAwLDQwMjE5LDI2Mzc2LDM2MjM0LDM3NDcwLDIwMzAxLDIwNTUzLDIwNzAyLDIxMzYxLDIyMjg1LDIyOTk2LDIzMDQxLDIzNTYxLDI0OTQ0LDI2MjU2LDI4MjA1LDI5MjM0LDI5NzcxLDMyMjM5LDMyOTYzLDMzODA2LDMzODk0LDM0MTExLDM0NjU1LDM0OTA3LDM1MDk2LDM1NTg2LDM2OTQ5LDM4ODU5LDM5NzU5LDIwMDgzLDIwMzY5LDIwNzU0LDIwODQyLDYzOTQzLDIxODA3LDIxOTI5LDIzNDE4LDIzNDYxLDI0MTg4LDI0MTg5LDI0MjU0LDI0NzM2LDI0Nzk5LDI0ODQwLDI0ODQxLDI1NTQwLDI1OTEyLDI2Mzc3LDYzOTQ0LDI2NTgwLDI2NTg2LDYzOTQ1LDI2OTc3LDI2OTc4LDI3ODMzLDI3OTQzLDYzOTQ2LDI4MjE2LDYzOTQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4NjQxLDI5NDk0LDI5NDk1LDYzOTQ4LDI5Nzg4LDMwMDAxLDYzOTQ5LDMwMjkwLDYzOTUwLDYzOTUxLDMyMTczLDMzMjc4LDMzODQ4LDM1MDI5LDM1NDgwLDM1NTQ3LDM1NTY1LDM2NDAwLDM2NDE4LDM2OTM4LDM2OTI2LDM2OTg2LDM3MTkzLDM3MzIxLDM3NzQyLDYzOTUyLDYzOTUzLDIyNTM3LDYzOTU0LDI3NjAzLDMyOTA1LDMyOTQ2LDYzOTU1LDYzOTU2LDIwODAxLDIyODkxLDIzNjA5LDYzOTU3LDYzOTU4LDI4NTE2LDI5NjA3LDMyOTk2LDM2MTAzLDYzOTU5LDM3Mzk5LDM4Mjg3LDYzOTYwLDYzOTYxLDYzOTYyLDYzOTYzLDMyODk1LDI1MTAyLDI4NzAwLDMyMTA0LDM0NzAxLDYzOTY0LDIyNDMyLDI0NjgxLDI0OTAzLDI3NTc1LDM1NTE4LDM3NTA0LDM4NTc3LDIwMDU3LDIxNTM1LDI4MTM5LDM0MDkzLDM4NTEyLDM4ODk5LDM5MTUwLDI1NTU4LDI3ODc1LDM3MDA5LDIwOTU3LDI1MDMzLDMzMjEwLDQwNDQxLDIwMzgxLDIwNTA2LDIwNzM2LDIzNDUyLDI0ODQ3LDI1MDg3LDI1ODM2LDI2ODg1LDI3NTg5LDMwMDk3LDMwNjkxLDMyNjgxLDMzMzgwLDM0MTkxLDM0ODExLDM0OTE1LDM1NTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM1Njk2LDM3MjkxLDIwMTA4LDIwMTk3LDIwMjM0LDYzOTY1LDYzOTY2LDIyODM5LDIzMDE2LDYzOTY3LDI0MDUwLDI0MzQ3LDI0NDExLDI0NjA5LDYzOTY4LDYzOTY5LDYzOTcwLDYzOTcxLDI5MjQ2LDI5NjY5LDYzOTcyLDMwMDY0LDMwMTU3LDYzOTczLDMxMjI3LDYzOTc0LDMyNzgwLDMyODE5LDMyOTAwLDMzNTA1LDMzNjE3LDYzOTc1LDYzOTc2LDM2MDI5LDM2MDE5LDM2OTk5LDYzOTc3LDYzOTc4LDM5MTU2LDM5MTgwLDYzOTc5LDYzOTgwLDI4NzI3LDMwNDEwLDMyNzE0LDMyNzE2LDMyNzY0LDM1NjEwLDIwMTU0LDIwMTYxLDIwOTk1LDIxMzYwLDYzOTgxLDIxNjkzLDIyMjQwLDIzMDM1LDIzNDkzLDI0MzQxLDI0NTI1LDI4MjcwLDYzOTgyLDYzOTgzLDMyMTA2LDMzNTg5LDYzOTg0LDM0NDUxLDM1NDY5LDYzOTg1LDM4NzY1LDM4Nzc1LDYzOTg2LDYzOTg3LDE5OTY4LDIwMzE0LDIwMzUwLDIyNzc3LDI2MDg1LDI4MzIyLDM2OTIwLDM3ODA4LDM5MzUzLDIwMjE5LDIyNzY0LDIyOTIyLDIzMDAxLDI0NjQxLDYzOTg4LDYzOTg5LDMxMjUyLDYzOTkwLDMzNjE1LDM2MDM1LDIwODM3LDIxMzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTkxLDYzOTkyLDYzOTkzLDIwMTczLDIxMDk3LDIzMzgxLDMzNDcxLDIwMTgwLDIxMDUwLDIxNjcyLDIyOTg1LDIzMDM5LDIzMzc2LDIzMzgzLDIzMzg4LDI0Njc1LDI0OTA0LDI4MzYzLDI4ODI1LDI5MDM4LDI5NTc0LDI5OTQzLDMwMTMzLDMwOTEzLDMyMDQzLDMyNzczLDMzMjU4LDMzNTc2LDM0MDcxLDM0MjQ5LDM1NTY2LDM2MDM5LDM4NjA0LDIwMzE2LDIxMjQyLDIyMjA0LDI2MDI3LDI2MTUyLDI4Nzk2LDI4ODU2LDI5MjM3LDMyMTg5LDMzNDIxLDM3MTk2LDM4NTkyLDQwMzA2LDIzNDA5LDI2ODU1LDI3NTQ0LDI4NTM4LDMwNDMwLDIzNjk3LDI2MjgzLDI4NTA3LDMxNjY4LDMxNzg2LDM0ODcwLDM4NjIwLDE5OTc2LDIwMTgzLDIxMjgwLDIyNTgwLDIyNzE1LDIyNzY3LDIyODkyLDIzNTU5LDI0MTE1LDI0MTk2LDI0MzczLDI1NDg0LDI2MjkwLDI2NDU0LDI3MTY3LDI3Mjk5LDI3NDA0LDI4NDc5LDI5MjU0LDYzOTk0LDI5NTIwLDI5ODM1LDMxNDU2LDMxOTExLDMzMTQ0LDMzMjQ3LDMzMjU1LDMzNjc0LDMzOTAwLDM0MDgzLDM0MTk2LDM0MjU1LDM1MDM3LDM2MTE1LDM3MjkyLDM4MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NTU2LDIwODc3LDIxNzA1LDIyMzEyLDIzNDcyLDI1MTY1LDI2NDQ4LDI2Njg1LDI2NzcxLDI4MjIxLDI4MzcxLDI4Nzk3LDMyMjg5LDM1MDA5LDM2MDAxLDM2NjE3LDQwNzc5LDQwNzgyLDI5MjI5LDMxNjMxLDM1NTMzLDM3NjU4LDIwMjk1LDIwMzAyLDIwNzg2LDIxNjMyLDIyOTkyLDI0MjEzLDI1MjY5LDI2NDg1LDI2OTkwLDI3MTU5LDI3ODIyLDI4MTg2LDI5NDAxLDI5NDgyLDMwMTQxLDMxNjcyLDMyMDUzLDMzNTExLDMzNzg1LDMzODc5LDM0Mjk1LDM1NDE5LDM2MDE1LDM2NDg3LDM2ODg5LDM3MDQ4LDM4NjA2LDQwNzk5LDIxMjE5LDIxNTE0LDIzMjY1LDIzNDkwLDI1Njg4LDI1OTczLDI4NDA0LDI5MzgwLDYzOTk1LDMwMzQwLDMxMzA5LDMxNTE1LDMxODIxLDMyMzE4LDMyNzM1LDMzNjU5LDM1NjI3LDM2MDQyLDM2MTk2LDM2MzIxLDM2NDQ3LDM2ODQyLDM2ODU3LDM2OTY5LDM3ODQxLDIwMjkxLDIwMzQ2LDIwNjU5LDIwODQwLDIwODU2LDIxMDY5LDIxMDk4LDIyNjI1LDIyNjUyLDIyODgwLDIzNTYwLDIzNjM3LDI0MjgzLDI0NzMxLDI1MTM2LDI2NjQzLDI3NTgzLDI3NjU2LDI4NTkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDA2LDI5NzI4LDMwMDAwLDMwMDA4LDMwMDMzLDMwMzIyLDMxNTY0LDMxNjI3LDMxNjYxLDMxNjg2LDMyMzk5LDM1NDM4LDM2NjcwLDM2NjgxLDM3NDM5LDM3NTIzLDM3NjY2LDM3OTMxLDM4NjUxLDM5MDAyLDM5MDE5LDM5MTk4LDIwOTk5LDI1MTMwLDI1MjQwLDI3OTkzLDMwMzA4LDMxNDM0LDMxNjgwLDMyMTE4LDIxMzQ0LDIzNzQyLDI0MjE1LDI4NDcyLDI4ODU3LDMxODk2LDM4NjczLDM5ODIyLDQwNjcwLDI1NTA5LDI1NzIyLDM0Njc4LDE5OTY5LDIwMTE3LDIwMTQxLDIwNTcyLDIwNTk3LDIxNTc2LDIyOTc5LDIzNDUwLDI0MTI4LDI0MjM3LDI0MzExLDI0NDQ5LDI0NzczLDI1NDAyLDI1OTE5LDI1OTcyLDI2MDYwLDI2MjMwLDI2MjMyLDI2NjIyLDI2OTg0LDI3MjczLDI3NDkxLDI3NzEyLDI4MDk2LDI4MTM2LDI4MTkxLDI4MjU0LDI4NzAyLDI4ODMzLDI5NTgyLDI5NjkzLDMwMDEwLDMwNTU1LDMwODU1LDMxMTE4LDMxMjQzLDMxMzU3LDMxOTM0LDMyMTQyLDMzMzUxLDM1MzMwLDM1NTYyLDM1OTk4LDM3MTY1LDM3MTk0LDM3MzM2LDM3NDc4LDM3NTgwLDM3NjY0LDM4NjYyLDM4NzQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NzQ4LDM4OTE0LDQwNzE4LDIxMDQ2LDIxMTM3LDIxODg0LDIyNTY0LDI0MDkzLDI0MzUxLDI0NzE2LDI1NTUyLDI2Nzk5LDI4NjM5LDMxMDg1LDMxNTMyLDMzMjI5LDM0MjM0LDM1MDY5LDM1NTc2LDM2NDIwLDM3MjYxLDM4NTAwLDM4NTU1LDM4NzE3LDM4OTg4LDQwNzc4LDIwNDMwLDIwODA2LDIwOTM5LDIxMTYxLDIyMDY2LDI0MzQwLDI0NDI3LDI1NTE0LDI1ODA1LDI2MDg5LDI2MTc3LDI2MzYyLDI2MzYxLDI2Mzk3LDI2NzgxLDI2ODM5LDI3MTMzLDI4NDM3LDI4NTI2LDI5MDMxLDI5MTU3LDI5MjI2LDI5ODY2LDMwNTIyLDMxMDYyLDMxMDY2LDMxMTk5LDMxMjY0LDMxMzgxLDMxODk1LDMxOTY3LDMyMDY4LDMyMzY4LDMyOTAzLDM0Mjk5LDM0NDY4LDM1NDEyLDM1NTE5LDM2MjQ5LDM2NDgxLDM2ODk2LDM2OTczLDM3MzQ3LDM4NDU5LDM4NjEzLDQwMTY1LDI2MDYzLDMxNzUxLDM2Mjc1LDM3ODI3LDIzMzg0LDIzNTYyLDIxMzMwLDI1MzA1LDI5NDY5LDIwNTE5LDIzNDQ3LDI0NDc4LDI0NzUyLDI0OTM5LDI2ODM3LDI4MTIxLDI5NzQyLDMxMjc4LDMyMDY2LDMyMTU2LDMyMzA1LDMzMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2Mzk0LDM2NDA1LDM3NzU4LDM3OTEyLDIwMzA0LDIyMzUyLDI0MDM4LDI0MjMxLDI1Mzg3LDMyNjE4LDIwMDI3LDIwMzAzLDIwMzY3LDIwNTcwLDIzMDA1LDMyOTY0LDIxNjEwLDIxNjA4LDIyMDE0LDIyODYzLDIzNDQ5LDI0MDMwLDI0MjgyLDI2MjA1LDI2NDE3LDI2NjA5LDI2NjY2LDI3ODgwLDI3OTU0LDI4MjM0LDI4NTU3LDI4ODU1LDI5NjY0LDMwMDg3LDMxODIwLDMyMDAyLDMyMDQ0LDMyMTYyLDMzMzExLDM0NTIzLDM1Mzg3LDM1NDYxLDM2MjA4LDM2NDkwLDM2NjU5LDM2OTEzLDM3MTk4LDM3MjAyLDM3OTU2LDM5Mzc2LDMxNDgxLDMxOTA5LDIwNDI2LDIwNzM3LDIwOTM0LDIyNDcyLDIzNTM1LDIzODAzLDI2MjAxLDI3MTk3LDI3OTk0LDI4MzEwLDI4NjUyLDI4OTQwLDMwMDYzLDMxNDU5LDM0ODUwLDM2ODk3LDM2OTgxLDM4NjAzLDM5NDIzLDMzNTM3LDIwMDEzLDIwMjEwLDM0ODg2LDM3MzI1LDIxMzczLDI3MzU1LDI2OTg3LDI3NzEzLDMzOTE0LDIyNjg2LDI0OTc0LDI2MzY2LDI1MzI3LDI4ODkzLDI5OTY5LDMwMTUxLDMyMzM4LDMzOTc2LDM1NjU3LDM2MTA0LDIwMDQzLDIxNDgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjc1LDIyMzIwLDIyMzM2LDI0NTM1LDI1MzQ1LDI1MzUxLDI1NzExLDI1OTAzLDI2MDg4LDI2MjM0LDI2NTI1LDI2NTQ3LDI3NDkwLDI3NzQ0LDI3ODAyLDI4NDYwLDMwNjkzLDMwNzU3LDMxMDQ5LDMxMDYzLDMyMDI1LDMyOTMwLDMzMDI2LDMzMjY3LDMzNDM3LDMzNDYzLDM0NTg0LDM1NDY4LDYzOTk2LDM2MTAwLDM2Mjg2LDM2OTc4LDMwNDUyLDMxMjU3LDMxMjg3LDMyMzQwLDMyODg3LDIxNzY3LDIxOTcyLDIyNjQ1LDI1MzkxLDI1NjM0LDI2MTg1LDI2MTg3LDI2NzMzLDI3MDM1LDI3NTI0LDI3OTQxLDI4MzM3LDI5NjQ1LDI5ODAwLDI5ODU3LDMwMDQzLDMwMTM3LDMwNDMzLDMwNDk0LDMwNjAzLDMxMjA2LDMyMjY1LDMyMjg1LDMzMjc1LDM0MDk1LDM0OTY3LDM1Mzg2LDM2MDQ5LDM2NTg3LDM2Nzg0LDM2OTE0LDM3ODA1LDM4NDk5LDM4NTE1LDM4NjYzLDIwMzU2LDIxNDg5LDIzMDE4LDIzMjQxLDI0MDg5LDI2NzAyLDI5ODk0LDMwMTQyLDMxMjA5LDMxMzc4LDMzMTg3LDM0NTQxLDM2MDc0LDM2MzAwLDM2ODQ1LDI2MDE1LDI2Mzg5LDYzOTk3LDIyNTE5LDI4NTAzLDMyMjIxLDM2NjU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3ODc4LDM4NTk4LDI0NTAxLDI1MDc0LDI4NTQ4LDE5OTg4LDIwMzc2LDIwNTExLDIxNDQ5LDIxOTgzLDIzOTE5LDI0MDQ2LDI3NDI1LDI3NDkyLDMwOTIzLDMxNjQyLDYzOTk4LDM2NDI1LDM2NTU0LDM2OTc0LDI1NDE3LDI1NjYyLDMwNTI4LDMxMzY0LDM3Njc5LDM4MDE1LDQwODEwLDI1Nzc2LDI4NTkxLDI5MTU4LDI5ODY0LDI5OTE0LDMxNDI4LDMxNzYyLDMyMzg2LDMxOTIyLDMyNDA4LDM1NzM4LDM2MTA2LDM4MDEzLDM5MTg0LDM5MjQ0LDIxMDQ5LDIzNTE5LDI1ODMwLDI2NDEzLDMyMDQ2LDIwNzE3LDIxNDQzLDIyNjQ5LDI0OTIwLDI0OTIxLDI1MDgyLDI2MDI4LDMxNDQ5LDM1NzMwLDM1NzM0LDIwNDg5LDIwNTEzLDIxMTA5LDIxODA5LDIzMTAwLDI0Mjg4LDI0NDMyLDI0ODg0LDI1OTUwLDI2MTI0LDI2MTY2LDI2Mjc0LDI3MDg1LDI4MzU2LDI4NDY2LDI5NDYyLDMwMjQxLDMxMzc5LDMzMDgxLDMzMzY5LDMzNzUwLDMzOTgwLDIwNjYxLDIyNTEyLDIzNDg4LDIzNTI4LDI0NDI1LDI1NTA1LDMwNzU4LDMyMTgxLDMzNzU2LDM0MDgxLDM3MzE5LDM3MzY1LDIwODc0LDI2NjEzLDMxNTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MDEyLDIwOTMyLDIyOTcxLDI0NzY1LDM0Mzg5LDIwNTA4LDYzOTk5LDIxMDc2LDIzNjEwLDI0OTU3LDI1MTE0LDI1Mjk5LDI1ODQyLDI2MDIxLDI4MzY0LDMwMjQwLDMzMDM0LDM2NDQ4LDM4NDk1LDM4NTg3LDIwMTkxLDIxMzE1LDIxOTEyLDIyODI1LDI0MDI5LDI1Nzk3LDI3ODQ5LDI4MTU0LDI5NTg4LDMxMzU5LDMzMzA3LDM0MjE0LDM2MDY4LDM2MzY4LDM2OTgzLDM3MzUxLDM4MzY5LDM4NDMzLDM4ODU0LDIwOTg0LDIxNzQ2LDIxODk0LDI0NTA1LDI1NzY0LDI4NTUyLDMyMTgwLDM2NjM5LDM2Njg1LDM3OTQxLDIwNjgxLDIzNTc0LDI3ODM4LDI4MTU1LDI5OTc5LDMwNjUxLDMxODA1LDMxODQ0LDM1NDQ5LDM1NTIyLDIyNTU4LDIyOTc0LDI0MDg2LDI1NDYzLDI5MjY2LDMwMDkwLDMwNTcxLDM1NTQ4LDM2MDI4LDM2NjI2LDI0MzA3LDI2MjI4LDI4MTUyLDMyODkzLDMzNzI5LDM1NTMxLDM4NzM3LDM5ODk0LDY0MDAwLDIxMDU5LDI2MzY3LDI4MDUzLDI4Mzk5LDMyMjI0LDM1NTU4LDM2OTEwLDM2OTU4LDM5NjM2LDIxMDIxLDIxMTE5LDIxNzM2LDI0OTgwLDI1MjIwLDI1MzA3LDI2Nzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODk4LDI2OTcwLDI3MTg5LDI4ODE4LDI4OTY2LDMwODEzLDMwOTc3LDMwOTkwLDMxMTg2LDMxMjQ1LDMyOTE4LDMzNDAwLDMzNDkzLDMzNjA5LDM0MTIxLDM1OTcwLDM2MjI5LDM3MjE4LDM3MjU5LDM3Mjk0LDIwNDE5LDIyMjI1LDI5MTY1LDMwNjc5LDM0NTYwLDM1MzIwLDIzNTQ0LDI0NTM0LDI2NDQ5LDM3MDMyLDIxNDc0LDIyNjE4LDIzNTQxLDI0NzQwLDI0OTYxLDI1Njk2LDMyMzE3LDMyODgwLDM0MDg1LDM3NTA3LDI1Nzc0LDIwNjUyLDIzODI4LDI2MzY4LDIyNjg0LDI1Mjc3LDI1NTEyLDI2ODk0LDI3MDAwLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMzNDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQzLDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAxLDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYxLDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMwMzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMyNjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQwNzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgyLDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcxLDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYwLDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMzNDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcxLDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcxLDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIwNDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMyNzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUzLDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIxMTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5NzgxLDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcyLDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIwOTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQwNTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIzNDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIxLDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIwNDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMwNTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMyLDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMzLDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2MjkxLDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMyOTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTczLDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYyLDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgyLDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMzLDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMxMjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImdiMTgwMzBcIjpbMTk5NzAsMTk5NzIsMTk5NzMsMTk5NzQsMTk5ODMsMTk5ODYsMTk5OTEsMTk5OTksMjAwMDAsMjAwMDEsMjAwMDMsMjAwMDYsMjAwMDksMjAwMTQsMjAwMTUsMjAwMTcsMjAwMTksMjAwMjEsMjAwMjMsMjAwMjgsMjAwMzIsMjAwMzMsMjAwMzQsMjAwMzYsMjAwMzgsMjAwNDIsMjAwNDksMjAwNTMsMjAwNTUsMjAwNTgsMjAwNTksMjAwNjYsMjAwNjcsMjAwNjgsMjAwNjksMjAwNzEsMjAwNzIsMjAwNzQsMjAwNzUsMjAwNzYsMjAwNzcsMjAwNzgsMjAwNzksMjAwODIsMjAwODQsMjAwODUsMjAwODYsMjAwODcsMjAwODgsMjAwODksMjAwOTAsMjAwOTEsMjAwOTIsMjAwOTMsMjAwOTUsMjAwOTYsMjAwOTcsMjAwOTgsMjAwOTksMjAxMDAsMjAxMDEsMjAxMDMsMjAxMDYsMjAxMTIsMjAxMTgsMjAxMTksMjAxMjEsMjAxMjQsMjAxMjUsMjAxMjYsMjAxMzEsMjAxMzgsMjAxNDMsMjAxNDQsMjAxNDUsMjAxNDgsMjAxNTAsMjAxNTEsMjAxNTIsMjAxNTMsMjAxNTYsMjAxNTcsMjAxNTgsMjAxNjgsMjAxNzIsMjAxNzUsMjAxNzYsMjAxNzgsMjAxODYsMjAxODcsMjAxODgsMjAxOTIsMjAxOTQsMjAxOTgsMjAxOTksMjAyMDEsMjAyMDUsMjAyMDYsMjAyMDcsMjAyMDksMjAyMTIsMjAyMTYsMjAyMTcsMjAyMTgsMjAyMjAsMjAyMjIsMjAyMjQsMjAyMjYsMjAyMjcsMjAyMjgsMjAyMjksMjAyMzAsMjAyMzEsMjAyMzIsMjAyMzUsMjAyMzYsMjAyNDIsMjAyNDMsMjAyNDQsMjAyNDUsMjAyNDYsMjAyNTIsMjAyNTMsMjAyNTcsMjAyNTksMjAyNjQsMjAyNjUsMjAyNjgsMjAyNjksMjAyNzAsMjAyNzMsMjAyNzUsMjAyNzcsMjAyNzksMjAyODEsMjAyODMsMjAyODYsMjAyODcsMjAyODgsMjAyODksMjAyOTAsMjAyOTIsMjAyOTMsMjAyOTUsMjAyOTYsMjAyOTcsMjAyOTgsMjAyOTksMjAzMDAsMjAzMDYsMjAzMDgsMjAzMTAsMjAzMjEsMjAzMjIsMjAzMjYsMjAzMjgsMjAzMzAsMjAzMzEsMjAzMzMsMjAzMzQsMjAzMzcsMjAzMzgsMjAzNDEsMjAzNDMsMjAzNDQsMjAzNDUsMjAzNDYsMjAzNDksMjAzNTIsMjAzNTMsMjAzNTQsMjAzNTcsMjAzNTgsMjAzNTksMjAzNjIsMjAzNjQsMjAzNjYsMjAzNjgsMjAzNzAsMjAzNzEsMjAzNzMsMjAzNzQsMjAzNzYsMjAzNzcsMjAzNzgsMjAzODAsMjAzODIsMjAzODMsMjAzODUsMjAzODYsMjAzODgsMjAzOTUsMjAzOTcsMjA0MDAsMjA0MDEsMjA0MDIsMjA0MDMsMjA0MDQsMjA0MDYsMjA0MDcsMjA0MDgsMjA0MDksMjA0MTAsMjA0MTEsMjA0MTIsMjA0MTMsMjA0MTQsMjA0MTYsMjA0MTcsMjA0MTgsMjA0MjIsMjA0MjMsMjA0MjQsMjA0MjUsMjA0MjcsMjA0MjgsMjA0MjksMjA0MzQsMjA0MzUsMjA0MzYsMjA0MzcsMjA0MzgsMjA0NDEsMjA0NDMsMjA0NDgsMjA0NTAsMjA0NTIsMjA0NTMsMjA0NTUsMjA0NTksMjA0NjAsMjA0NjQsMjA0NjYsMjA0NjgsMjA0NjksMjA0NzAsMjA0NzEsMjA0NzMsMjA0NzUsMjA0NzYsMjA0NzcsMjA0NzksMjA0ODAsMjA0ODEsMjA0ODIsMjA0ODMsMjA0ODQsMjA0ODUsMjA0ODYsMjA0ODcsMjA0ODgsMjA0ODksMjA0OTAsMjA0OTEsMjA0OTQsMjA0OTYsMjA0OTcsMjA0OTksMjA1MDEsMjA1MDIsMjA1MDMsMjA1MDcsMjA1MDksMjA1MTAsMjA1MTIsMjA1MTQsMjA1MTUsMjA1MTYsMjA1MTksMjA1MjMsMjA1MjcsMjA1MjgsMjA1MjksMjA1MzAsMjA1MzEsMjA1MzIsMjA1MzMsMjA1MzQsMjA1MzUsMjA1MzYsMjA1MzcsMjA1MzksMjA1NDEsMjA1NDMsMjA1NDQsMjA1NDUsMjA1NDYsMjA1NDgsMjA1NDksMjA1NTAsMjA1NTMsMjA1NTQsMjA1NTUsMjA1NTcsMjA1NjAsMjA1NjEsMjA1NjIsMjA1NjMsMjA1NjQsMjA1NjYsMjA1NjcsMjA1NjgsMjA1NjksMjA1NzEsMjA1NzMsMjA1NzQsMjA1NzUsMjA1NzYsMjA1NzcsMjA1NzgsMjA1NzksMjA1ODAsMjA1ODIsMjA1ODMsMjA1ODQsMjA1ODUsMjA1ODYsMjA1ODcsMjA1ODksMjA1OTAsMjA1OTEsMjA1OTIsMjA1OTMsMjA1OTQsMjA1OTUsMjA1OTYsMjA1OTcsMjA2MDAsMjA2MDEsMjA2MDIsMjA2MDQsMjA2MDUsMjA2MDksMjA2MTAsMjA2MTEsMjA2MTIsMjA2MTQsMjA2MTUsMjA2MTcsMjA2MTgsMjA2MTksMjA2MjAsMjA2MjIsMjA2MjMsMjA2MjQsMjA2MjUsMjA2MjYsMjA2MjcsMjA2MjgsMjA2MjksMjA2MzAsMjA2MzEsMjA2MzIsMjA2MzMsMjA2MzQsMjA2MzUsMjA2MzYsMjA2MzcsMjA2MzgsMjA2MzksMjA2NDAsMjA2NDEsMjA2NDIsMjA2NDQsMjA2NDYsMjA2NTAsMjA2NTEsMjA2NTMsMjA2NTQsMjA2NTUsMjA2NTYsMjA2NTcsMjA2NTksMjA2NjAsMjA2NjEsMjA2NjIsMjA2NjMsMjA2NjQsMjA2NjUsMjA2NjgsMjA2NjksMjA2NzAsMjA2NzEsMjA2NzIsMjA2NzMsMjA2NzQsMjA2NzUsMjA2NzYsMjA2NzcsMjA2NzgsMjA2NzksMjA2ODAsMjA2ODEsMjA2ODIsMjA2ODMsMjA2ODQsMjA2ODUsMjA2ODYsMjA2ODgsMjA2ODksMjA2OTAsMjA2OTEsMjA2OTIsMjA2OTMsMjA2OTUsMjA2OTYsMjA2OTcsMjA2OTksMjA3MDAsMjA3MDEsMjA3MDIsMjA3MDMsMjA3MDQsMjA3MDUsMjA3MDYsMjA3MDcsMjA3MDgsMjA3MDksMjA3MTIsMjA3MTMsMjA3MTQsMjA3MTUsMjA3MTksMjA3MjAsMjA3MjEsMjA3MjIsMjA3MjQsMjA3MjYsMjA3MjcsMjA3MjgsMjA3MjksMjA3MzAsMjA3MzIsMjA3MzMsMjA3MzQsMjA3MzUsMjA3MzYsMjA3MzcsMjA3MzgsMjA3MzksMjA3NDAsMjA3NDEsMjA3NDQsMjA3NDUsMjA3NDYsMjA3NDgsMjA3NDksMjA3NTAsMjA3NTEsMjA3NTIsMjA3NTMsMjA3NTUsMjA3NTYsMjA3NTcsMjA3NTgsMjA3NTksMjA3NjAsMjA3NjEsMjA3NjIsMjA3NjMsMjA3NjQsMjA3NjUsMjA3NjYsMjA3NjcsMjA3NjgsMjA3NzAsMjA3NzEsMjA3NzIsMjA3NzMsMjA3NzQsMjA3NzUsMjA3NzYsMjA3NzcsMjA3NzgsMjA3NzksMjA3ODAsMjA3ODEsMjA3ODIsMjA3ODMsMjA3ODQsMjA3ODUsMjA3ODYsMjA3ODcsMjA3ODgsMjA3ODksMjA3OTAsMjA3OTEsMjA3OTIsMjA3OTMsMjA3OTQsMjA3OTUsMjA3OTYsMjA3OTcsMjA3OTgsMjA4MDIsMjA4MDcsMjA4MTAsMjA4MTIsMjA4MTQsMjA4MTUsMjA4MTYsMjA4MTgsMjA4MTksMjA4MjMsMjA4MjQsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjA4MzEsMjA4MzIsMjA4MzMsMjA4MzUsMjA4MzYsMjA4MzgsMjA4MzksMjA4NDEsMjA4NDIsMjA4NDcsMjA4NTAsMjA4NTgsMjA4NjIsMjA4NjMsMjA4NjcsMjA4NjgsMjA4NzAsMjA4NzEsMjA4NzQsMjA4NzUsMjA4NzgsMjA4NzksMjA4ODAsMjA4ODEsMjA4ODMsMjA4ODQsMjA4ODgsMjA4OTAsMjA4OTMsMjA4OTQsMjA4OTUsMjA4OTcsMjA4OTksMjA5MDIsMjA5MDMsMjA5MDQsMjA5MDUsMjA5MDYsMjA5MDksMjA5MTAsMjA5MTYsMjA5MjAsMjA5MjEsMjA5MjIsMjA5MjYsMjA5MjcsMjA5MjksMjA5MzAsMjA5MzEsMjA5MzMsMjA5MzYsMjA5MzgsMjA5NDEsMjA5NDIsMjA5NDQsMjA5NDYsMjA5NDcsMjA5NDgsMjA5NDksMjA5NTAsMjA5NTEsMjA5NTIsMjA5NTMsMjA5NTQsMjA5NTYsMjA5NTgsMjA5NTksMjA5NjIsMjA5NjMsMjA5NjUsMjA5NjYsMjA5NjcsMjA5NjgsMjA5NjksMjA5NzAsMjA5NzIsMjA5NzQsMjA5NzcsMjA5NzgsMjA5ODAsMjA5ODMsMjA5OTAsMjA5OTYsMjA5OTcsMjEwMDEsMjEwMDMsMjEwMDQsMjEwMDcsMjEwMDgsMjEwMTEsMjEwMTIsMjEwMTMsMjEwMjAsMjEwMjIsMjEwMjMsMjEwMjUsMjEwMjYsMjEwMjcsMjEwMjksMjEwMzAsMjEwMzEsMjEwMzQsMjEwMzYsMjEwMzksMjEwNDEsMjEwNDIsMjEwNDQsMjEwNDUsMjEwNTIsMjEwNTQsMjEwNjAsMjEwNjEsMjEwNjIsMjEwNjMsMjEwNjQsMjEwNjUsMjEwNjcsMjEwNzAsMjEwNzEsMjEwNzQsMjEwNzUsMjEwNzcsMjEwNzksMjEwODAsMjEwODEsMjEwODIsMjEwODMsMjEwODUsMjEwODcsMjEwODgsMjEwOTAsMjEwOTEsMjEwOTIsMjEwOTQsMjEwOTYsMjEwOTksMjExMDAsMjExMDEsMjExMDIsMjExMDQsMjExMDUsMjExMDcsMjExMDgsMjExMDksMjExMTAsMjExMTEsMjExMTIsMjExMTMsMjExMTQsMjExMTUsMjExMTYsMjExMTgsMjExMjAsMjExMjMsMjExMjQsMjExMjUsMjExMjYsMjExMjcsMjExMjksMjExMzAsMjExMzEsMjExMzIsMjExMzMsMjExMzQsMjExMzUsMjExMzcsMjExMzgsMjExNDAsMjExNDEsMjExNDIsMjExNDMsMjExNDQsMjExNDUsMjExNDYsMjExNDgsMjExNTYsMjExNTcsMjExNTgsMjExNTksMjExNjYsMjExNjcsMjExNjgsMjExNzIsMjExNzMsMjExNzQsMjExNzUsMjExNzYsMjExNzcsMjExNzgsMjExNzksMjExODAsMjExODEsMjExODQsMjExODUsMjExODYsMjExODgsMjExODksMjExOTAsMjExOTIsMjExOTQsMjExOTYsMjExOTcsMjExOTgsMjExOTksMjEyMDEsMjEyMDMsMjEyMDQsMjEyMDUsMjEyMDcsMjEyMDksMjEyMTAsMjEyMTEsMjEyMTIsMjEyMTMsMjEyMTQsMjEyMTYsMjEyMTcsMjEyMTgsMjEyMTksMjEyMjEsMjEyMjIsMjEyMjMsMjEyMjQsMjEyMjUsMjEyMjYsMjEyMjcsMjEyMjgsMjEyMjksMjEyMzAsMjEyMzEsMjEyMzMsMjEyMzQsMjEyMzUsMjEyMzYsMjEyMzcsMjEyMzgsMjEyMzksMjEyNDAsMjEyNDMsMjEyNDQsMjEyNDUsMjEyNDksMjEyNTAsMjEyNTEsMjEyNTIsMjEyNTUsMjEyNTcsMjEyNTgsMjEyNTksMjEyNjAsMjEyNjIsMjEyNjUsMjEyNjYsMjEyNjcsMjEyNjgsMjEyNzIsMjEyNzUsMjEyNzYsMjEyNzgsMjEyNzksMjEyODIsMjEyODQsMjEyODUsMjEyODcsMjEyODgsMjEyODksMjEyOTEsMjEyOTIsMjEyOTMsMjEyOTUsMjEyOTYsMjEyOTcsMjEyOTgsMjEyOTksMjEzMDAsMjEzMDEsMjEzMDIsMjEzMDMsMjEzMDQsMjEzMDgsMjEzMDksMjEzMTIsMjEzMTQsMjEzMTYsMjEzMTgsMjEzMjMsMjEzMjQsMjEzMjUsMjEzMjgsMjEzMzIsMjEzMzYsMjEzMzcsMjEzMzksMjEzNDEsMjEzNDksMjEzNTIsMjEzNTQsMjEzNTYsMjEzNTcsMjEzNjIsMjEzNjYsMjEzNjksMjEzNzEsMjEzNzIsMjEzNzMsMjEzNzQsMjEzNzYsMjEzNzcsMjEzNzksMjEzODMsMjEzODQsMjEzODYsMjEzOTAsMjEzOTEsMjEzOTIsMjEzOTMsMjEzOTQsMjEzOTUsMjEzOTYsMjEzOTgsMjEzOTksMjE0MDEsMjE0MDMsMjE0MDQsMjE0MDYsMjE0MDgsMjE0MDksMjE0MTIsMjE0MTUsMjE0MTgsMjE0MTksMjE0MjAsMjE0MjEsMjE0MjMsMjE0MjQsMjE0MjUsMjE0MjYsMjE0MjcsMjE0MjgsMjE0MjksMjE0MzEsMjE0MzIsMjE0MzMsMjE0MzQsMjE0MzYsMjE0MzcsMjE0MzgsMjE0NDAsMjE0NDMsMjE0NDQsMjE0NDUsMjE0NDYsMjE0NDcsMjE0NTQsMjE0NTUsMjE0NTYsMjE0NTgsMjE0NTksMjE0NjEsMjE0NjYsMjE0NjgsMjE0NjksMjE0NzAsMjE0NzMsMjE0NzQsMjE0NzksMjE0OTIsMjE0OTgsMjE1MDIsMjE1MDMsMjE1MDQsMjE1MDYsMjE1MDksMjE1MTEsMjE1MTUsMjE1MjQsMjE1MjgsMjE1MjksMjE1MzAsMjE1MzIsMjE1MzgsMjE1NDAsMjE1NDEsMjE1NDYsMjE1NTIsMjE1NTUsMjE1NTgsMjE1NTksMjE1NjIsMjE1NjUsMjE1NjcsMjE1NjksMjE1NzAsMjE1NzIsMjE1NzMsMjE1NzUsMjE1NzcsMjE1ODAsMjE1ODEsMjE1ODIsMjE1ODMsMjE1ODUsMjE1OTQsMjE1OTcsMjE1OTgsMjE1OTksMjE2MDAsMjE2MDEsMjE2MDMsMjE2MDUsMjE2MDcsMjE2MDksMjE2MTAsMjE2MTEsMjE2MTIsMjE2MTMsMjE2MTQsMjE2MTUsMjE2MTYsMjE2MjAsMjE2MjUsMjE2MjYsMjE2MzAsMjE2MzEsMjE2MzMsMjE2MzUsMjE2MzcsMjE2MzksMjE2NDAsMjE2NDEsMjE2NDIsMjE2NDUsMjE2NDksMjE2NTEsMjE2NTUsMjE2NTYsMjE2NjAsMjE2NjIsMjE2NjMsMjE2NjQsMjE2NjUsMjE2NjYsMjE2NjksMjE2NzgsMjE2ODAsMjE2ODIsMjE2ODUsMjE2ODYsMjE2ODcsMjE2ODksMjE2OTAsMjE2OTIsMjE2OTQsMjE2OTksMjE3MDEsMjE3MDYsMjE3MDcsMjE3MTgsMjE3MjAsMjE3MjMsMjE3MjgsMjE3MjksMjE3MzAsMjE3MzEsMjE3MzIsMjE3MzksMjE3NDAsMjE3NDMsMjE3NDQsMjE3NDUsMjE3NDgsMjE3NDksMjE3NTAsMjE3NTEsMjE3NTIsMjE3NTMsMjE3NTUsMjE3NTgsMjE3NjAsMjE3NjIsMjE3NjMsMjE3NjQsMjE3NjUsMjE3NjgsMjE3NzAsMjE3NzEsMjE3NzIsMjE3NzMsMjE3NzQsMjE3NzgsMjE3NzksMjE3ODEsMjE3ODIsMjE3ODMsMjE3ODQsMjE3ODUsMjE3ODYsMjE3ODgsMjE3ODksMjE3OTAsMjE3OTEsMjE3OTMsMjE3OTcsMjE3OTgsMjE4MDAsMjE4MDEsMjE4MDMsMjE4MDUsMjE4MTAsMjE4MTIsMjE4MTMsMjE4MTQsMjE4MTYsMjE4MTcsMjE4MTgsMjE4MTksMjE4MjEsMjE4MjQsMjE4MjYsMjE4MjksMjE4MzEsMjE4MzIsMjE4MzUsMjE4MzYsMjE4MzcsMjE4MzgsMjE4MzksMjE4NDEsMjE4NDIsMjE4NDMsMjE4NDQsMjE4NDcsMjE4NDgsMjE4NDksMjE4NTAsMjE4NTEsMjE4NTMsMjE4NTQsMjE4NTUsMjE4NTYsMjE4NTgsMjE4NTksMjE4NjQsMjE4NjUsMjE4NjcsMjE4NzEsMjE4NzIsMjE4NzMsMjE4NzQsMjE4NzUsMjE4NzYsMjE4ODEsMjE4ODIsMjE4ODUsMjE4ODcsMjE4OTMsMjE4OTQsMjE5MDAsMjE5MDEsMjE5MDIsMjE5MDQsMjE5MDYsMjE5MDcsMjE5MDksMjE5MTAsMjE5MTEsMjE5MTQsMjE5MTUsMjE5MTgsMjE5MjAsMjE5MjEsMjE5MjIsMjE5MjMsMjE5MjQsMjE5MjUsMjE5MjYsMjE5MjgsMjE5MjksMjE5MzAsMjE5MzEsMjE5MzIsMjE5MzMsMjE5MzQsMjE5MzUsMjE5MzYsMjE5MzgsMjE5NDAsMjE5NDIsMjE5NDQsMjE5NDYsMjE5NDgsMjE5NTEsMjE5NTIsMjE5NTMsMjE5NTQsMjE5NTUsMjE5NTgsMjE5NTksMjE5NjAsMjE5NjIsMjE5NjMsMjE5NjYsMjE5NjcsMjE5NjgsMjE5NzMsMjE5NzUsMjE5NzYsMjE5NzcsMjE5NzgsMjE5NzksMjE5ODIsMjE5ODQsMjE5ODYsMjE5OTEsMjE5OTMsMjE5OTcsMjE5OTgsMjIwMDAsMjIwMDEsMjIwMDQsMjIwMDYsMjIwMDgsMjIwMDksMjIwMTAsMjIwMTEsMjIwMTIsMjIwMTUsMjIwMTgsMjIwMTksMjIwMjAsMjIwMjEsMjIwMjIsMjIwMjMsMjIwMjYsMjIwMjcsMjIwMjksMjIwMzIsMjIwMzMsMjIwMzQsMjIwMzUsMjIwMzYsMjIwMzcsMjIwMzgsMjIwMzksMjIwNDEsMjIwNDIsMjIwNDQsMjIwNDUsMjIwNDgsMjIwNDksMjIwNTAsMjIwNTMsMjIwNTQsMjIwNTYsMjIwNTcsMjIwNTgsMjIwNTksMjIwNjIsMjIwNjMsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzIsMjIwNzQsMjIwNzYsMjIwNzcsMjIwNzgsMjIwODAsMjIwODEsMjIwODIsMjIwODMsMjIwODQsMjIwODUsMjIwODYsMjIwODcsMjIwODgsMjIwODksMjIwOTAsMjIwOTEsMjIwOTUsMjIwOTYsMjIwOTcsMjIwOTgsMjIwOTksMjIxMDEsMjIxMDIsMjIxMDYsMjIxMDcsMjIxMDksMjIxMTAsMjIxMTEsMjIxMTIsMjIxMTMsMjIxMTUsMjIxMTcsMjIxMTgsMjIxMTksMjIxMjUsMjIxMjYsMjIxMjcsMjIxMjgsMjIxMzAsMjIxMzEsMjIxMzIsMjIxMzMsMjIxMzUsMjIxMzYsMjIxMzcsMjIxMzgsMjIxNDEsMjIxNDIsMjIxNDMsMjIxNDQsMjIxNDUsMjIxNDYsMjIxNDcsMjIxNDgsMjIxNTEsMjIxNTIsMjIxNTMsMjIxNTQsMjIxNTUsMjIxNTYsMjIxNTcsMjIxNjAsMjIxNjEsMjIxNjIsMjIxNjQsMjIxNjUsMjIxNjYsMjIxNjcsMjIxNjgsMjIxNjksMjIxNzAsMjIxNzEsMjIxNzIsMjIxNzMsMjIxNzQsMjIxNzUsMjIxNzYsMjIxNzcsMjIxNzgsMjIxODAsMjIxODEsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODYsMjIxODcsMjIxODgsMjIxODksMjIxOTAsMjIxOTIsMjIxOTMsMjIxOTQsMjIxOTUsMjIxOTYsMjIxOTcsMjIxOTgsMjIyMDAsMjIyMDEsMjIyMDIsMjIyMDMsMjIyMDUsMjIyMDYsMjIyMDcsMjIyMDgsMjIyMDksMjIyMTAsMjIyMTEsMjIyMTIsMjIyMTMsMjIyMTQsMjIyMTUsMjIyMTYsMjIyMTcsMjIyMTksMjIyMjAsMjIyMjEsMjIyMjIsMjIyMjMsMjIyMjQsMjIyMjUsMjIyMjYsMjIyMjcsMjIyMjksMjIyMzAsMjIyMzIsMjIyMzMsMjIyMzYsMjIyNDMsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNDksMjIyNTAsMjIyNTIsMjIyNTQsMjIyNTUsMjIyNTgsMjIyNTksMjIyNjIsMjIyNjMsMjIyNjQsMjIyNjcsMjIyNjgsMjIyNzIsMjIyNzMsMjIyNzQsMjIyNzcsMjIyNzksMjIyODMsMjIyODQsMjIyODUsMjIyODYsMjIyODcsMjIyODgsMjIyODksMjIyOTAsMjIyOTEsMjIyOTIsMjIyOTMsMjIyOTQsMjIyOTUsMjIyOTYsMjIyOTcsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDIsMjIzMDQsMjIzMDUsMjIzMDYsMjIzMDgsMjIzMDksMjIzMTAsMjIzMTEsMjIzMTUsMjIzMjEsMjIzMjIsMjIzMjQsMjIzMjUsMjIzMjYsMjIzMjcsMjIzMjgsMjIzMzIsMjIzMzMsMjIzMzUsMjIzMzcsMjIzMzksMjIzNDAsMjIzNDEsMjIzNDIsMjIzNDQsMjIzNDUsMjIzNDcsMjIzNTQsMjIzNTUsMjIzNTYsMjIzNTcsMjIzNTgsMjIzNjAsMjIzNjEsMjIzNzAsMjIzNzEsMjIzNzMsMjIzNzUsMjIzODAsMjIzODIsMjIzODQsMjIzODUsMjIzODYsMjIzODgsMjIzODksMjIzOTIsMjIzOTMsMjIzOTQsMjIzOTcsMjIzOTgsMjIzOTksMjI0MDAsMjI0MDEsMjI0MDcsMjI0MDgsMjI0MDksMjI0MTAsMjI0MTMsMjI0MTQsMjI0MTUsMjI0MTYsMjI0MTcsMjI0MjAsMjI0MjEsMjI0MjIsMjI0MjMsMjI0MjQsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzcsMjI0NDAsMjI0NDIsMjI0NDQsMjI0NDcsMjI0NDgsMjI0NDksMjI0NTEsMjI0NTMsMjI0NTQsMjI0NTUsMjI0NTcsMjI0NTgsMjI0NTksMjI0NjAsMjI0NjEsMjI0NjIsMjI0NjMsMjI0NjQsMjI0NjUsMjI0NjgsMjI0NjksMjI0NzAsMjI0NzEsMjI0NzIsMjI0NzMsMjI0NzQsMjI0NzYsMjI0NzcsMjI0ODAsMjI0ODEsMjI0ODMsMjI0ODYsMjI0ODcsMjI0OTEsMjI0OTIsMjI0OTQsMjI0OTcsMjI0OTgsMjI0OTksMjI1MDEsMjI1MDIsMjI1MDMsMjI1MDQsMjI1MDUsMjI1MDYsMjI1MDcsMjI1MDgsMjI1MTAsMjI1MTIsMjI1MTMsMjI1MTQsMjI1MTUsMjI1MTcsMjI1MTgsMjI1MTksMjI1MjMsMjI1MjQsMjI1MjYsMjI1MjcsMjI1MjksMjI1MzEsMjI1MzIsMjI1MzMsMjI1MzYsMjI1MzcsMjI1MzgsMjI1NDAsMjI1NDIsMjI1NDMsMjI1NDQsMjI1NDYsMjI1NDcsMjI1NDgsMjI1NTAsMjI1NTEsMjI1NTIsMjI1NTQsMjI1NTUsMjI1NTYsMjI1NTcsMjI1NTksMjI1NjIsMjI1NjMsMjI1NjUsMjI1NjYsMjI1NjcsMjI1NjgsMjI1NjksMjI1NzEsMjI1NzIsMjI1NzMsMjI1NzQsMjI1NzUsMjI1NzcsMjI1NzgsMjI1NzksMjI1ODAsMjI1ODIsMjI1ODMsMjI1ODQsMjI1ODUsMjI1ODYsMjI1ODcsMjI1ODgsMjI1ODksMjI1OTAsMjI1OTEsMjI1OTIsMjI1OTMsMjI1OTQsMjI1OTUsMjI1OTcsMjI1OTgsMjI1OTksMjI2MDAsMjI2MDEsMjI2MDIsMjI2MDMsMjI2MDYsMjI2MDcsMjI2MDgsMjI2MTAsMjI2MTEsMjI2MTMsMjI2MTQsMjI2MTUsMjI2MTcsMjI2MTgsMjI2MTksMjI2MjAsMjI2MjEsMjI2MjMsMjI2MjQsMjI2MjUsMjI2MjYsMjI2MjcsMjI2MjgsMjI2MzAsMjI2MzEsMjI2MzIsMjI2MzMsMjI2MzQsMjI2MzcsMjI2MzgsMjI2MzksMjI2NDAsMjI2NDEsMjI2NDIsMjI2NDMsMjI2NDQsMjI2NDUsMjI2NDYsMjI2NDcsMjI2NDgsMjI2NDksMjI2NTAsMjI2NTEsMjI2NTIsMjI2NTMsMjI2NTUsMjI2NTgsMjI2NjAsMjI2NjIsMjI2NjMsMjI2NjQsMjI2NjYsMjI2NjcsMjI2NjgsMjI2NjksMjI2NzAsMjI2NzEsMjI2NzIsMjI2NzMsMjI2NzYsMjI2NzcsMjI2NzgsMjI2NzksMjI2ODAsMjI2ODMsMjI2ODQsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTEsMjI2OTIsMjI2OTMsMjI2OTQsMjI2OTUsMjI2OTgsMjI2OTksMjI3MDAsMjI3MDEsMjI3MDIsMjI3MDMsMjI3MDQsMjI3MDUsMjI3MDYsMjI3MDcsMjI3MDgsMjI3MDksMjI3MTAsMjI3MTEsMjI3MTIsMjI3MTMsMjI3MTQsMjI3MTUsMjI3MTcsMjI3MTgsMjI3MTksMjI3MjAsMjI3MjIsMjI3MjMsMjI3MjQsMjI3MjYsMjI3MjcsMjI3MjgsMjI3MjksMjI3MzAsMjI3MzEsMjI3MzIsMjI3MzMsMjI3MzQsMjI3MzUsMjI3MzYsMjI3MzgsMjI3MzksMjI3NDAsMjI3NDIsMjI3NDMsMjI3NDQsMjI3NDUsMjI3NDYsMjI3NDcsMjI3NDgsMjI3NDksMjI3NTAsMjI3NTEsMjI3NTIsMjI3NTMsMjI3NTQsMjI3NTUsMjI3NTcsMjI3NTgsMjI3NTksMjI3NjAsMjI3NjEsMjI3NjIsMjI3NjUsMjI3NjcsMjI3NjksMjI3NzAsMjI3NzIsMjI3NzMsMjI3NzUsMjI3NzYsMjI3NzgsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODIsMjI3ODMsMjI3ODQsMjI3ODUsMjI3ODcsMjI3ODksMjI3OTAsMjI3OTIsMjI3OTMsMjI3OTQsMjI3OTUsMjI3OTYsMjI3OTgsMjI4MDAsMjI4MDEsMjI4MDIsMjI4MDMsMjI4MDcsMjI4MDgsMjI4MTEsMjI4MTMsMjI4MTQsMjI4MTYsMjI4MTcsMjI4MTgsMjI4MTksMjI4MjIsMjI4MjQsMjI4MjgsMjI4MzIsMjI4MzQsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDMsMjI4NDUsMjI4NDYsMjI4NDcsMjI4NDgsMjI4NTEsMjI4NTMsMjI4NTQsMjI4NTgsMjI4NjAsMjI4NjEsMjI4NjQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzYsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4ODQsMjI4ODYsMjI4ODcsMjI4ODgsMjI4ODksMjI4OTAsMjI4OTEsMjI4OTIsMjI4OTMsMjI4OTQsMjI4OTUsMjI4OTYsMjI4OTcsMjI4OTgsMjI5MDEsMjI5MDMsMjI5MDYsMjI5MDcsMjI5MDgsMjI5MTAsMjI5MTEsMjI5MTIsMjI5MTcsMjI5MjEsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MjcsMjI5MjgsMjI5MjksMjI5MzIsMjI5MzMsMjI5MzYsMjI5MzgsMjI5MzksMjI5NDAsMjI5NDEsMjI5NDMsMjI5NDQsMjI5NDUsMjI5NDYsMjI5NTAsMjI5NTEsMjI5NTYsMjI5NTcsMjI5NjAsMjI5NjEsMjI5NjMsMjI5NjQsMjI5NjUsMjI5NjYsMjI5NjcsMjI5NjgsMjI5NzAsMjI5NzIsMjI5NzMsMjI5NzUsMjI5NzYsMjI5NzcsMjI5NzgsMjI5NzksMjI5ODAsMjI5ODEsMjI5ODMsMjI5ODQsMjI5ODUsMjI5ODgsMjI5ODksMjI5OTAsMjI5OTEsMjI5OTcsMjI5OTgsMjMwMDEsMjMwMDMsMjMwMDYsMjMwMDcsMjMwMDgsMjMwMDksMjMwMTAsMjMwMTIsMjMwMTQsMjMwMTUsMjMwMTcsMjMwMTgsMjMwMTksMjMwMjEsMjMwMjIsMjMwMjMsMjMwMjQsMjMwMjUsMjMwMjYsMjMwMjcsMjMwMjgsMjMwMjksMjMwMzAsMjMwMzEsMjMwMzIsMjMwMzQsMjMwMzYsMjMwMzcsMjMwMzgsMjMwNDAsMjMwNDIsMjMwNTAsMjMwNTEsMjMwNTMsMjMwNTQsMjMwNTUsMjMwNTYsMjMwNTgsMjMwNjAsMjMwNjEsMjMwNjIsMjMwNjMsMjMwNjUsMjMwNjYsMjMwNjcsMjMwNjksMjMwNzAsMjMwNzMsMjMwNzQsMjMwNzYsMjMwNzgsMjMwNzksMjMwODAsMjMwODIsMjMwODMsMjMwODQsMjMwODUsMjMwODYsMjMwODcsMjMwODgsMjMwOTEsMjMwOTMsMjMwOTUsMjMwOTYsMjMwOTcsMjMwOTgsMjMwOTksMjMxMDEsMjMxMDIsMjMxMDMsMjMxMDUsMjMxMDYsMjMxMDcsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTUsMjMxMTYsMjMxMTcsMjMxMTgsMjMxMTksMjMxMjAsMjMxMjEsMjMxMjIsMjMxMjMsMjMxMjQsMjMxMjYsMjMxMjcsMjMxMjgsMjMxMjksMjMxMzEsMjMxMzIsMjMxMzMsMjMxMzQsMjMxMzUsMjMxMzYsMjMxMzcsMjMxMzksMjMxNDAsMjMxNDEsMjMxNDIsMjMxNDQsMjMxNDUsMjMxNDcsMjMxNDgsMjMxNDksMjMxNTAsMjMxNTEsMjMxNTIsMjMxNTMsMjMxNTQsMjMxNTUsMjMxNjAsMjMxNjEsMjMxNjMsMjMxNjQsMjMxNjUsMjMxNjYsMjMxNjgsMjMxNjksMjMxNzAsMjMxNzEsMjMxNzIsMjMxNzMsMjMxNzQsMjMxNzUsMjMxNzYsMjMxNzcsMjMxNzgsMjMxNzksMjMxODAsMjMxODEsMjMxODIsMjMxODMsMjMxODQsMjMxODUsMjMxODcsMjMxODgsMjMxODksMjMxOTAsMjMxOTEsMjMxOTIsMjMxOTMsMjMxOTYsMjMxOTcsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDEsMjMyMDIsMjMyMDMsMjMyMDQsMjMyMDUsMjMyMDYsMjMyMDcsMjMyMDgsMjMyMDksMjMyMTEsMjMyMTIsMjMyMTMsMjMyMTQsMjMyMTUsMjMyMTYsMjMyMTcsMjMyMjAsMjMyMjIsMjMyMjMsMjMyMjUsMjMyMjYsMjMyMjcsMjMyMjgsMjMyMjksMjMyMzEsMjMyMzIsMjMyMzUsMjMyMzYsMjMyMzcsMjMyMzgsMjMyMzksMjMyNDAsMjMyNDIsMjMyNDMsMjMyNDUsMjMyNDYsMjMyNDcsMjMyNDgsMjMyNDksMjMyNTEsMjMyNTMsMjMyNTUsMjMyNTcsMjMyNTgsMjMyNTksMjMyNjEsMjMyNjIsMjMyNjMsMjMyNjYsMjMyNjgsMjMyNjksMjMyNzEsMjMyNzIsMjMyNzQsMjMyNzYsMjMyNzcsMjMyNzgsMjMyNzksMjMyODAsMjMyODIsMjMyODMsMjMyODQsMjMyODUsMjMyODYsMjMyODcsMjMyODgsMjMyODksMjMyOTAsMjMyOTEsMjMyOTIsMjMyOTMsMjMyOTQsMjMyOTUsMjMyOTYsMjMyOTcsMjMyOTgsMjMyOTksMjMzMDAsMjMzMDEsMjMzMDIsMjMzMDMsMjMzMDQsMjMzMDYsMjMzMDcsMjMzMDgsMjMzMDksMjMzMTAsMjMzMTEsMjMzMTIsMjMzMTMsMjMzMTQsMjMzMTUsMjMzMTYsMjMzMTcsMjMzMjAsMjMzMjEsMjMzMjIsMjMzMjMsMjMzMjQsMjMzMjUsMjMzMjYsMjMzMjcsMjMzMjgsMjMzMjksMjMzMzAsMjMzMzEsMjMzMzIsMjMzMzMsMjMzMzQsMjMzMzUsMjMzMzYsMjMzMzcsMjMzMzgsMjMzMzksMjMzNDAsMjMzNDEsMjMzNDIsMjMzNDMsMjMzNDQsMjMzNDUsMjMzNDcsMjMzNDksMjMzNTAsMjMzNTIsMjMzNTMsMjMzNTQsMjMzNTUsMjMzNTYsMjMzNTcsMjMzNTgsMjMzNTksMjMzNjEsMjMzNjIsMjMzNjMsMjMzNjQsMjMzNjUsMjMzNjYsMjMzNjcsMjMzNjgsMjMzNjksMjMzNzAsMjMzNzEsMjMzNzIsMjMzNzMsMjMzNzQsMjMzNzUsMjMzNzgsMjMzODIsMjMzOTAsMjMzOTIsMjMzOTMsMjMzOTksMjM0MDAsMjM0MDMsMjM0MDUsMjM0MDYsMjM0MDcsMjM0MTAsMjM0MTIsMjM0MTQsMjM0MTUsMjM0MTYsMjM0MTcsMjM0MTksMjM0MjAsMjM0MjIsMjM0MjMsMjM0MjYsMjM0MzAsMjM0MzQsMjM0MzcsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDIsMjM0NDQsMjM0NDYsMjM0NTUsMjM0NjMsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzAsMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODMsMjM0ODQsMjM0ODgsMjM0ODksMjM0OTEsMjM0OTYsMjM0OTcsMjM0OTgsMjM0OTksMjM1MDEsMjM1MDIsMjM1MDMsMjM1MDUsMjM1MDgsMjM1MDksMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MTUsMjM1MTYsMjM1MjAsMjM1MjIsMjM1MjMsMjM1MjYsMjM1MjcsMjM1MjksMjM1MzAsMjM1MzEsMjM1MzIsMjM1MzMsMjM1MzUsMjM1MzcsMjM1MzgsMjM1MzksMjM1NDAsMjM1NDEsMjM1NDIsMjM1NDMsMjM1NDksMjM1NTAsMjM1NTIsMjM1NTQsMjM1NTUsMjM1NTcsMjM1NTksMjM1NjAsMjM1NjMsMjM1NjQsMjM1NjUsMjM1NjYsMjM1NjgsMjM1NzAsMjM1NzEsMjM1NzUsMjM1NzcsMjM1NzksMjM1ODIsMjM1ODMsMjM1ODQsMjM1ODUsMjM1ODcsMjM1OTAsMjM1OTIsMjM1OTMsMjM1OTQsMjM1OTUsMjM1OTcsMjM1OTgsMjM1OTksMjM2MDAsMjM2MDIsMjM2MDMsMjM2MDUsMjM2MDYsMjM2MDcsMjM2MTksMjM2MjAsMjM2MjIsMjM2MjMsMjM2MjgsMjM2MjksMjM2MzQsMjM2MzUsMjM2MzYsMjM2MzgsMjM2MzksMjM2NDAsMjM2NDIsMjM2NDMsMjM2NDQsMjM2NDUsMjM2NDcsMjM2NTAsMjM2NTIsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NTgsMjM2NTksMjM2NjAsMjM2NjEsMjM2NjQsMjM2NjYsMjM2NjcsMjM2NjgsMjM2NjksMjM2NzAsMjM2NzEsMjM2NzIsMjM2NzUsMjM2NzYsMjM2NzcsMjM2NzgsMjM2ODAsMjM2ODMsMjM2ODQsMjM2ODUsMjM2ODYsMjM2ODcsMjM2ODksMjM2OTAsMjM2OTEsMjM2OTQsMjM2OTUsMjM2OTgsMjM2OTksMjM3MDEsMjM3MDksMjM3MTAsMjM3MTEsMjM3MTIsMjM3MTMsMjM3MTYsMjM3MTcsMjM3MTgsMjM3MTksMjM3MjAsMjM3MjIsMjM3MjYsMjM3MjcsMjM3MjgsMjM3MzAsMjM3MzIsMjM3MzQsMjM3MzcsMjM3MzgsMjM3MzksMjM3NDAsMjM3NDIsMjM3NDQsMjM3NDYsMjM3NDcsMjM3NDksMjM3NTAsMjM3NTEsMjM3NTIsMjM3NTMsMjM3NTQsMjM3NTYsMjM3NTcsMjM3NTgsMjM3NTksMjM3NjAsMjM3NjEsMjM3NjMsMjM3NjQsMjM3NjUsMjM3NjYsMjM3NjcsMjM3NjgsMjM3NzAsMjM3NzEsMjM3NzIsMjM3NzMsMjM3NzQsMjM3NzUsMjM3NzYsMjM3NzgsMjM3NzksMjM3ODMsMjM3ODUsMjM3ODcsMjM3ODgsMjM3OTAsMjM3OTEsMjM3OTMsMjM3OTQsMjM3OTUsMjM3OTYsMjM3OTcsMjM3OTgsMjM3OTksMjM4MDAsMjM4MDEsMjM4MDIsMjM4MDQsMjM4MDUsMjM4MDYsMjM4MDcsMjM4MDgsMjM4MDksMjM4MTIsMjM4MTMsMjM4MTYsMjM4MTcsMjM4MTgsMjM4MTksMjM4MjAsMjM4MjEsMjM4MjMsMjM4MjQsMjM4MjUsMjM4MjYsMjM4MjcsMjM4MjksMjM4MzEsMjM4MzIsMjM4MzMsMjM4MzQsMjM4MzYsMjM4MzcsMjM4MzksMjM4NDAsMjM4NDEsMjM4NDIsMjM4NDMsMjM4NDUsMjM4NDgsMjM4NTAsMjM4NTEsMjM4NTIsMjM4NTUsMjM4NTYsMjM4NTcsMjM4NTgsMjM4NTksMjM4NjEsMjM4NjIsMjM4NjMsMjM4NjQsMjM4NjUsMjM4NjYsMjM4NjcsMjM4NjgsMjM4NzEsMjM4NzIsMjM4NzMsMjM4NzQsMjM4NzUsMjM4NzYsMjM4NzcsMjM4NzgsMjM4ODAsMjM4ODEsMjM4ODUsMjM4ODYsMjM4ODcsMjM4ODgsMjM4ODksMjM4OTAsMjM4OTEsMjM4OTIsMjM4OTMsMjM4OTQsMjM4OTUsMjM4OTcsMjM4OTgsMjM5MDAsMjM5MDIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDcsMjM5MDgsMjM5MDksMjM5MTAsMjM5MTEsMjM5MTIsMjM5MTQsMjM5MTcsMjM5MTgsMjM5MjAsMjM5MjEsMjM5MjIsMjM5MjMsMjM5MjUsMjM5MjYsMjM5MjcsMjM5MjgsMjM5MjksMjM5MzAsMjM5MzEsMjM5MzIsMjM5MzMsMjM5MzQsMjM5MzUsMjM5MzYsMjM5MzcsMjM5MzksMjM5NDAsMjM5NDEsMjM5NDIsMjM5NDMsMjM5NDQsMjM5NDUsMjM5NDYsMjM5NDcsMjM5NDgsMjM5NDksMjM5NTAsMjM5NTEsMjM5NTIsMjM5NTMsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NTgsMjM5NTksMjM5NjAsMjM5NjIsMjM5NjMsMjM5NjQsMjM5NjYsMjM5NjcsMjM5NjgsMjM5NjksMjM5NzAsMjM5NzEsMjM5NzIsMjM5NzMsMjM5NzQsMjM5NzUsMjM5NzYsMjM5NzcsMjM5NzgsMjM5NzksMjM5ODAsMjM5ODEsMjM5ODIsMjM5ODMsMjM5ODQsMjM5ODUsMjM5ODYsMjM5ODcsMjM5ODgsMjM5ODksMjM5OTAsMjM5OTIsMjM5OTMsMjM5OTQsMjM5OTUsMjM5OTYsMjM5OTcsMjM5OTgsMjM5OTksMjQwMDAsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQwMDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMsMjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEsMjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUsMjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQwNzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQwOTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQxMDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcsMjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUsMjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIsMjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQxNjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQxNzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYsMjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcsMjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYsMjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQyNjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQyNjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQyNzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUsMjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIsMjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDksMjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQzNDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcsMjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIsMjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgsMjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQsMjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTksMjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUsMjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAsMjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODksMjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIsMjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEsMjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMsMjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAsMjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIsMjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4NzgsMjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMsMjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODksMjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUsMjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIsMjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAsMjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYsMjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMsMjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUwNDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUwNTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUsMjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEsMjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgsMjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUxMjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUxMzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUxNDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgsMjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQsMjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEsMjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUyMjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyMzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUyNTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAsMjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcsMjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYsMjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUzNTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUzNjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUzNzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQsMjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIsMjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTksMjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUsMjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIsMjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMsMjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMsMjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAsMjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAsMjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcsMjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQsMjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAsMjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3NjcsMjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQsMjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4MzksMjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUsMjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQsMjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAsMjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEsMjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYsMjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMsMjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYwMjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYwMzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYwNDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjksMjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYsMjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQsMjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYxMTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYxMjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYxMzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMsMjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEsMjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEsMjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYyMTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYyMTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYyMjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEsMjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgsMjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYyODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYyOTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYzMDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcsMjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIsMjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgsMjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYzNTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYzNjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYzNzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAsMjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUsMjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTksMjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEsMjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDksMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYsMjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAsMjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAsMjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgsMjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEsMjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIsMjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgsMjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMsMjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEsMjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYsMjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUsMjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMsMjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5MzksMjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgsMjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcsMjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTksMjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYsMjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcwNTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcwNTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcwNjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcsMjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQsMjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEsMjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcxMjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcxMjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIsMjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcsMjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUsMjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcxODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcxOTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcyMDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEsMjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjksMjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYsMjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcyNTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcyNjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcyNzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAsMjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUsMjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIsMjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjczMjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjczMjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjczMzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDksMjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQsMjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAsMjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjczNzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjczODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjczODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQsMjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUsMjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUsMjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAsMjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcsMjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcsMjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1NjksMjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2MzgsMjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQsMjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEsMjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3MzgsMjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEsMjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEsMjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEsMjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgsMjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEsMjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgsMjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5NjgsMjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODksMjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgwMTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgwMjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgwMzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgsMjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcsMjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcsMjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgxMTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgxMjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgxMzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTksMjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQsMjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUsMjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgyMDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgyMTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgyMjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUsMjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAsMjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgyNzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgyODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgyOTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUsMjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMsMjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIsMjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgzNjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgzNjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgzODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcsMjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMsMjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAsMjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEsMjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgsMjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUsMjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1NjksMjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIsMjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2MjksMjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUsMjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQsMjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAsMjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYsMjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIsMjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgsMjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMsMjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEsMjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4MzcsMjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMsMjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgsMjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5MjcsMjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUsMjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAsMjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYsMjg5OTgsMjg5OTksMjkwMDAsMjkwMDEsMjkwMDMsMjkwMDUsMjkwMDcsMjkwMDgsMjkwMDksMjkwMTAsMjkwMTEsMjkwMTIsMjkwMTMsMjkwMTQsMjkwMTUsMjkwMTYsMjkwMTcsMjkwMTgsMjkwMTksMjkwMjEsMjkwMjMsMjkwMjQsMjkwMjUsMjkwMjYsMjkwMjcsMjkwMjksMjkwMzMsMjkwMzQsMjkwMzUsMjkwMzYsMjkwMzcsMjkwMzksMjkwNDAsMjkwNDEsMjkwNDQsMjkwNDUsMjkwNDYsMjkwNDcsMjkwNDksMjkwNTEsMjkwNTIsMjkwNTQsMjkwNTUsMjkwNTYsMjkwNTcsMjkwNTgsMjkwNTksMjkwNjEsMjkwNjIsMjkwNjMsMjkwNjQsMjkwNjUsMjkwNjcsMjkwNjgsMjkwNjksMjkwNzAsMjkwNzIsMjkwNzMsMjkwNzQsMjkwNzUsMjkwNzcsMjkwNzgsMjkwNzksMjkwODIsMjkwODMsMjkwODQsMjkwODUsMjkwODYsMjkwODksMjkwOTAsMjkwOTEsMjkwOTIsMjkwOTMsMjkwOTQsMjkwOTUsMjkwOTcsMjkwOTgsMjkwOTksMjkxMDEsMjkxMDIsMjkxMDMsMjkxMDQsMjkxMDUsMjkxMDYsMjkxMDgsMjkxMTAsMjkxMTEsMjkxMTIsMjkxMTQsMjkxMTUsMjkxMTYsMjkxMTcsMjkxMTgsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjIsMjkxMjQsMjkxMjUsMjkxMjYsMjkxMjcsMjkxMjgsMjkxMjksMjkxMzAsMjkxMzEsMjkxMzIsMjkxMzMsMjkxMzUsMjkxMzYsMjkxMzcsMjkxMzgsMjkxMzksMjkxNDIsMjkxNDMsMjkxNDQsMjkxNDUsMjkxNDYsMjkxNDcsMjkxNDgsMjkxNDksMjkxNTAsMjkxNTEsMjkxNTMsMjkxNTQsMjkxNTUsMjkxNTYsMjkxNTgsMjkxNjAsMjkxNjEsMjkxNjIsMjkxNjMsMjkxNjQsMjkxNjUsMjkxNjcsMjkxNjgsMjkxNjksMjkxNzAsMjkxNzEsMjkxNzIsMjkxNzMsMjkxNzQsMjkxNzUsMjkxNzYsMjkxNzgsMjkxNzksMjkxODAsMjkxODEsMjkxODIsMjkxODMsMjkxODQsMjkxODUsMjkxODYsMjkxODcsMjkxODgsMjkxODksMjkxOTEsMjkxOTIsMjkxOTMsMjkxOTQsMjkxOTUsMjkxOTYsMjkxOTcsMjkxOTgsMjkxOTksMjkyMDAsMjkyMDEsMjkyMDIsMjkyMDMsMjkyMDQsMjkyMDUsMjkyMDYsMjkyMDcsMjkyMDgsMjkyMDksMjkyMTAsMjkyMTEsMjkyMTIsMjkyMTQsMjkyMTUsMjkyMTYsMjkyMTcsMjkyMTgsMjkyMTksMjkyMjAsMjkyMjEsMjkyMjIsMjkyMjMsMjkyMjUsMjkyMjcsMjkyMjksMjkyMzAsMjkyMzEsMjkyMzQsMjkyMzUsMjkyMzYsMjkyNDIsMjkyNDQsMjkyNDYsMjkyNDgsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTIsMjkyNTMsMjkyNTQsMjkyNTcsMjkyNTgsMjkyNTksMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjUsMjkyNjcsMjkyNjgsMjkyNjksMjkyNzEsMjkyNzIsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODQsMjkyODUsMjkyODgsMjkyOTAsMjkyOTEsMjkyOTIsMjkyOTMsMjkyOTYsMjkyOTcsMjkyOTksMjkzMDAsMjkzMDIsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMDksMjkzMTQsMjkzMTUsMjkzMTcsMjkzMTgsMjkzMTksMjkzMjAsMjkzMjEsMjkzMjQsMjkzMjYsMjkzMjgsMjkzMjksMjkzMzEsMjkzMzIsMjkzMzMsMjkzMzQsMjkzMzUsMjkzMzYsMjkzMzcsMjkzMzgsMjkzMzksMjkzNDAsMjkzNDEsMjkzNDIsMjkzNDQsMjkzNDUsMjkzNDYsMjkzNDcsMjkzNDgsMjkzNDksMjkzNTAsMjkzNTEsMjkzNTIsMjkzNTMsMjkzNTQsMjkzNTUsMjkzNTgsMjkzNjEsMjkzNjIsMjkzNjMsMjkzNjUsMjkzNzAsMjkzNzEsMjkzNzIsMjkzNzMsMjkzNzQsMjkzNzUsMjkzNzYsMjkzODEsMjkzODIsMjkzODMsMjkzODUsMjkzODYsMjkzODcsMjkzODgsMjkzOTEsMjkzOTMsMjkzOTUsMjkzOTYsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDIsMjk0MDMsNTg1NjYsNTg1NjcsNTg1NjgsNTg1NjksNTg1NzAsNTg1NzEsNTg1NzIsNTg1NzMsNTg1NzQsNTg1NzUsNTg1NzYsNTg1NzcsNTg1NzgsNTg1NzksNTg1ODAsNTg1ODEsNTg1ODIsNTg1ODMsNTg1ODQsNTg1ODUsNTg1ODYsNTg1ODcsNTg1ODgsNTg1ODksNTg1OTAsNTg1OTEsNTg1OTIsNTg1OTMsNTg1OTQsNTg1OTUsNTg1OTYsNTg1OTcsNTg1OTgsNTg1OTksNTg2MDAsNTg2MDEsNTg2MDIsNTg2MDMsNTg2MDQsNTg2MDUsNTg2MDYsNTg2MDcsNTg2MDgsNTg2MDksNTg2MTAsNTg2MTEsNTg2MTIsNTg2MTMsNTg2MTQsNTg2MTUsNTg2MTYsNTg2MTcsNTg2MTgsNTg2MTksNTg2MjAsNTg2MjEsNTg2MjIsNTg2MjMsNTg2MjQsNTg2MjUsNTg2MjYsNTg2MjcsNTg2MjgsNTg2MjksNTg2MzAsNTg2MzEsNTg2MzIsNTg2MzMsNTg2MzQsNTg2MzUsNTg2MzYsNTg2MzcsNTg2MzgsNTg2MzksNTg2NDAsNTg2NDEsNTg2NDIsNTg2NDMsNTg2NDQsNTg2NDUsNTg2NDYsNTg2NDcsNTg2NDgsNTg2NDksNTg2NTAsNTg2NTEsNTg2NTIsNTg2NTMsNTg2NTQsNTg2NTUsNTg2NTYsNTg2NTcsNTg2NTgsNTg2NTksNTg2NjAsNTg2NjEsMTIyODgsMTIyODksMTIyOTAsMTgzLDcxMyw3MTEsMTY4LDEyMjkxLDEyMjkzLDgyMTIsNjUzNzQsODIxNCw4MjMwLDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMTAsMTIzMTEsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODc1OCw4NzQzLDg3NDQsODcyMSw4NzE5LDg3NDYsODc0NSw4NzEyLDg3NTksODczMCw4ODY5LDg3NDEsODczNiw4OTc4LDg4NTcsODc0Nyw4NzUwLDg4MDEsODc4MCw4Nzc2LDg3NjUsODczMyw4ODAwLDg4MTQsODgxNSw4ODA0LDg4MDUsODczNCw4NzU3LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTI4NCwxNjQsNjU1MDQsNjU1MDUsODI0MCwxNjcsODQ3MCw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsODI1MSw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LDU4NjYyLDU4NjYzLDU4NjY0LDU4NjY1LDU4NjY2LDU4NjY3LDU4NjY4LDU4NjY5LDU4NjcwLDU4NjcxLDU4NjcyLDU4NjczLDU4Njc0LDU4Njc1LDU4Njc2LDU4Njc3LDU4Njc4LDU4Njc5LDU4NjgwLDU4NjgxLDU4NjgyLDU4NjgzLDU4Njg0LDU4Njg1LDU4Njg2LDU4Njg3LDU4Njg4LDU4Njg5LDU4NjkwLDU4NjkxLDU4NjkyLDU4NjkzLDU4Njk0LDU4Njk1LDU4Njk2LDU4Njk3LDU4Njk4LDU4Njk5LDU4NzAwLDU4NzAxLDU4NzAyLDU4NzAzLDU4NzA0LDU4NzA1LDU4NzA2LDU4NzA3LDU4NzA4LDU4NzA5LDU4NzEwLDU4NzExLDU4NzEyLDU4NzEzLDU4NzE0LDU4NzE1LDU4NzE2LDU4NzE3LDU4NzE4LDU4NzE5LDU4NzIwLDU4NzIxLDU4NzIyLDU4NzIzLDU4NzI0LDU4NzI1LDU4NzI2LDU4NzI3LDU4NzI4LDU4NzI5LDU4NzMwLDU4NzMxLDU4NzMyLDU4NzMzLDU4NzM0LDU4NzM1LDU4NzM2LDU4NzM3LDU4NzM4LDU4NzM5LDU4NzQwLDU4NzQxLDU4NzQyLDU4NzQzLDU4NzQ0LDU4NzQ1LDU4NzQ2LDU4NzQ3LDU4NzQ4LDU4NzQ5LDU4NzUwLDU4NzUxLDU4NzUyLDU4NzUzLDU4NzU0LDU4NzU1LDU4NzU2LDU4NzU3LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksNTkyMzgsNTkyMzksNTkyNDAsNTkyNDEsNTkyNDIsNTkyNDMsOTM1Miw5MzUzLDkzNTQsOTM1NSw5MzU2LDkzNTcsOTM1OCw5MzU5LDkzNjAsOTM2MSw5MzYyLDkzNjMsOTM2NCw5MzY1LDkzNjYsOTM2Nyw5MzY4LDkzNjksOTM3MCw5MzcxLDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDkzNDcsOTM0OCw5MzQ5LDkzNTAsOTM1MSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDgzNjQsNTkyNDUsMTI4MzIsMTI4MzMsMTI4MzQsMTI4MzUsMTI4MzYsMTI4MzcsMTI4MzgsMTI4MzksMTI4NDAsMTI4NDEsNTkyNDYsNTkyNDcsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw4NTU0LDg1NTUsNTkyNDgsNTkyNDksNTg3NTgsNTg3NTksNTg3NjAsNTg3NjEsNTg3NjIsNTg3NjMsNTg3NjQsNTg3NjUsNTg3NjYsNTg3NjcsNTg3NjgsNTg3NjksNTg3NzAsNTg3NzEsNTg3NzIsNTg3NzMsNTg3NzQsNTg3NzUsNTg3NzYsNTg3NzcsNTg3NzgsNTg3NzksNTg3ODAsNTg3ODEsNTg3ODIsNTg3ODMsNTg3ODQsNTg3ODUsNTg3ODYsNTg3ODcsNTg3ODgsNTg3ODksNTg3OTAsNTg3OTEsNTg3OTIsNTg3OTMsNTg3OTQsNTg3OTUsNTg3OTYsNTg3OTcsNTg3OTgsNTg3OTksNTg4MDAsNTg4MDEsNTg4MDIsNTg4MDMsNTg4MDQsNTg4MDUsNTg4MDYsNTg4MDcsNTg4MDgsNTg4MDksNTg4MTAsNTg4MTEsNTg4MTIsNTg4MTMsNTg4MTQsNTg4MTUsNTg4MTYsNTg4MTcsNTg4MTgsNTg4MTksNTg4MjAsNTg4MjEsNTg4MjIsNTg4MjMsNTg4MjQsNTg4MjUsNTg4MjYsNTg4MjcsNTg4MjgsNTg4MjksNTg4MzAsNTg4MzEsNTg4MzIsNTg4MzMsNTg4MzQsNTg4MzUsNTg4MzYsNTg4MzcsNTg4MzgsNTg4MzksNTg4NDAsNTg4NDEsNTg4NDIsNTg4NDMsNTg4NDQsNTg4NDUsNTg4NDYsNTg4NDcsNTg4NDgsNTg4NDksNTg4NTAsNTg4NTEsNTg4NTIsMTIyODgsNjUyODEsNjUyODIsNjUyODMsNjU1MDksNjUyODUsNjUyODYsNjUyODcsNjUyODgsNjUyODksNjUyOTAsNjUyOTEsNjUyOTIsNjUyOTMsNjUyOTQsNjUyOTUsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsNjUzMDYsNjUzMDcsNjUzMDgsNjUzMDksNjUzMTAsNjUzMTEsNjUzMTIsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzMzksNjUzNDAsNjUzNDEsNjUzNDIsNjUzNDMsNjUzNDQsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsNjUzNzEsNjUzNzIsNjUzNzMsNjU1MDcsNTg4NTQsNTg4NTUsNTg4NTYsNTg4NTcsNTg4NTgsNTg4NTksNTg4NjAsNTg4NjEsNTg4NjIsNTg4NjMsNTg4NjQsNTg4NjUsNTg4NjYsNTg4NjcsNTg4NjgsNTg4NjksNTg4NzAsNTg4NzEsNTg4NzIsNTg4NzMsNTg4NzQsNTg4NzUsNTg4NzYsNTg4NzcsNTg4NzgsNTg4NzksNTg4ODAsNTg4ODEsNTg4ODIsNTg4ODMsNTg4ODQsNTg4ODUsNTg4ODYsNTg4ODcsNTg4ODgsNTg4ODksNTg4OTAsNTg4OTEsNTg4OTIsNTg4OTMsNTg4OTQsNTg4OTUsNTg4OTYsNTg4OTcsNTg4OTgsNTg4OTksNTg5MDAsNTg5MDEsNTg5MDIsNTg5MDMsNTg5MDQsNTg5MDUsNTg5MDYsNTg5MDcsNTg5MDgsNTg5MDksNTg5MTAsNTg5MTEsNTg5MTIsNTg5MTMsNTg5MTQsNTg5MTUsNTg5MTYsNTg5MTcsNTg5MTgsNTg5MTksNTg5MjAsNTg5MjEsNTg5MjIsNTg5MjMsNTg5MjQsNTg5MjUsNTg5MjYsNTg5MjcsNTg5MjgsNTg5MjksNTg5MzAsNTg5MzEsNTg5MzIsNTg5MzMsNTg5MzQsNTg5MzUsNTg5MzYsNTg5MzcsNTg5MzgsNTg5MzksNTg5NDAsNTg5NDEsNTg5NDIsNTg5NDMsNTg5NDQsNTg5NDUsNTg5NDYsNTg5NDcsNTg5NDgsNTg5NDksMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsNTkyNTAsNTkyNTEsNTkyNTIsNTkyNTMsNTkyNTQsNTkyNTUsNTkyNTYsNTkyNTcsNTkyNTgsNTkyNTksNTkyNjAsNTg5NTAsNTg5NTEsNTg5NTIsNTg5NTMsNTg5NTQsNTg5NTUsNTg5NTYsNTg5NTcsNTg5NTgsNTg5NTksNTg5NjAsNTg5NjEsNTg5NjIsNTg5NjMsNTg5NjQsNTg5NjUsNTg5NjYsNTg5NjcsNTg5NjgsNTg5NjksNTg5NzAsNTg5NzEsNTg5NzIsNTg5NzMsNTg5NzQsNTg5NzUsNTg5NzYsNTg5NzcsNTg5NzgsNTg5NzksNTg5ODAsNTg5ODEsNTg5ODIsNTg5ODMsNTg5ODQsNTg5ODUsNTg5ODYsNTg5ODcsNTg5ODgsNTg5ODksNTg5OTAsNTg5OTEsNTg5OTIsNTg5OTMsNTg5OTQsNTg5OTUsNTg5OTYsNTg5OTcsNTg5OTgsNTg5OTksNTkwMDAsNTkwMDEsNTkwMDIsNTkwMDMsNTkwMDQsNTkwMDUsNTkwMDYsNTkwMDcsNTkwMDgsNTkwMDksNTkwMTAsNTkwMTEsNTkwMTIsNTkwMTMsNTkwMTQsNTkwMTUsNTkwMTYsNTkwMTcsNTkwMTgsNTkwMTksNTkwMjAsNTkwMjEsNTkwMjIsNTkwMjMsNTkwMjQsNTkwMjUsNTkwMjYsNTkwMjcsNTkwMjgsNTkwMjksNTkwMzAsNTkwMzEsNTkwMzIsNTkwMzMsNTkwMzQsNTkwMzUsNTkwMzYsNTkwMzcsNTkwMzgsNTkwMzksNTkwNDAsNTkwNDEsNTkwNDIsNTkwNDMsNTkwNDQsNTkwNDUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsNTkyNjEsNTkyNjIsNTkyNjMsNTkyNjQsNTkyNjUsNTkyNjYsNTkyNjcsNTkyNjgsNTkwNDYsNTkwNDcsNTkwNDgsNTkwNDksNTkwNTAsNTkwNTEsNTkwNTIsNTkwNTMsNTkwNTQsNTkwNTUsNTkwNTYsNTkwNTcsNTkwNTgsNTkwNTksNTkwNjAsNTkwNjEsNTkwNjIsNTkwNjMsNTkwNjQsNTkwNjUsNTkwNjYsNTkwNjcsNTkwNjgsNTkwNjksNTkwNzAsNTkwNzEsNTkwNzIsNTkwNzMsNTkwNzQsNTkwNzUsNTkwNzYsNTkwNzcsNTkwNzgsNTkwNzksNTkwODAsNTkwODEsNTkwODIsNTkwODMsNTkwODQsNTkwODUsNTkwODYsNTkwODcsNTkwODgsNTkwODksNTkwOTAsNTkwOTEsNTkwOTIsNTkwOTMsNTkwOTQsNTkwOTUsNTkwOTYsNTkwOTcsNTkwOTgsNTkwOTksNTkxMDAsNTkxMDEsNTkxMDIsNTkxMDMsNTkxMDQsNTkxMDUsNTkxMDYsNTkxMDcsNTkxMDgsNTkxMDksNTkxMTAsNTkxMTEsNTkxMTIsNTkxMTMsNTkxMTQsNTkxMTUsNTkxMTYsNTkxMTcsNTkxMTgsNTkxMTksNTkxMjAsNTkxMjEsNTkxMjIsNTkxMjMsNTkxMjQsNTkxMjUsNTkxMjYsNTkxMjcsNTkxMjgsNTkxMjksNTkxMzAsNTkxMzEsNTkxMzIsNTkxMzMsNTkxMzQsNTkxMzUsNTkxMzYsNTkxMzcsNTkxMzgsNTkxMzksNTkxNDAsNTkxNDEsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsNTkyNjksNTkyNzAsNTkyNzEsNTkyNzIsNTkyNzMsNTkyNzQsNTkyNzUsNTkyNzYsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksNTkyNzcsNTkyNzgsNTkyNzksNTkyODAsNTkyODEsNTkyODIsNTkyODMsNjUwNzcsNjUwNzgsNjUwODEsNjUwODIsNjUwODcsNjUwODgsNjUwODUsNjUwODYsNjUwODksNjUwOTAsNjUwOTEsNjUwOTIsNTkyODQsNTkyODUsNjUwODMsNjUwODQsNjUwNzksNjUwODAsNjUwNzMsNTkyODYsNjUwNzUsNjUwNzYsNTkyODcsNTkyODgsNTkyODksNTkyOTAsNTkyOTEsNTkyOTIsNTkyOTMsNTkyOTQsNTkyOTUsNTkxNDIsNTkxNDMsNTkxNDQsNTkxNDUsNTkxNDYsNTkxNDcsNTkxNDgsNTkxNDksNTkxNTAsNTkxNTEsNTkxNTIsNTkxNTMsNTkxNTQsNTkxNTUsNTkxNTYsNTkxNTcsNTkxNTgsNTkxNTksNTkxNjAsNTkxNjEsNTkxNjIsNTkxNjMsNTkxNjQsNTkxNjUsNTkxNjYsNTkxNjcsNTkxNjgsNTkxNjksNTkxNzAsNTkxNzEsNTkxNzIsNTkxNzMsNTkxNzQsNTkxNzUsNTkxNzYsNTkxNzcsNTkxNzgsNTkxNzksNTkxODAsNTkxODEsNTkxODIsNTkxODMsNTkxODQsNTkxODUsNTkxODYsNTkxODcsNTkxODgsNTkxODksNTkxOTAsNTkxOTEsNTkxOTIsNTkxOTMsNTkxOTQsNTkxOTUsNTkxOTYsNTkxOTcsNTkxOTgsNTkxOTksNTkyMDAsNTkyMDEsNTkyMDIsNTkyMDMsNTkyMDQsNTkyMDUsNTkyMDYsNTkyMDcsNTkyMDgsNTkyMDksNTkyMTAsNTkyMTEsNTkyMTIsNTkyMTMsNTkyMTQsNTkyMTUsNTkyMTYsNTkyMTcsNTkyMTgsNTkyMTksNTkyMjAsNTkyMjEsNTkyMjIsNTkyMjMsNTkyMjQsNTkyMjUsNTkyMjYsNTkyMjcsNTkyMjgsNTkyMjksNTkyMzAsNTkyMzEsNTkyMzIsNTkyMzMsNTkyMzQsNTkyMzUsNTkyMzYsNTkyMzcsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsNTkyOTYsNTkyOTcsNTkyOTgsNTkyOTksNTkzMDAsNTkzMDEsNTkzMDIsNTkzMDMsNTkzMDQsNTkzMDUsNTkzMDYsNTkzMDcsNTkzMDgsNTkzMDksNTkzMTAsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsNTkzMTEsNTkzMTIsNTkzMTMsNTkzMTQsNTkzMTUsNTkzMTYsNTkzMTcsNTkzMTgsNTkzMTksNTkzMjAsNTkzMjEsNTkzMjIsNTkzMjMsNzE0LDcxNSw3MjksODIxMSw4MjEzLDgyMjksODI0NSw4NDUzLDg0NTcsODU5OCw4NTk5LDg2MDAsODYwMSw4NzI1LDg3MzUsODczOSw4Nzg2LDg4MDYsODgwNyw4ODk1LDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NTgxLDk1ODIsOTU4Myw5NTg0LDk1ODUsOTU4Niw5NTg3LDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjA5LDk2MTAsOTYxMSw5NjEyLDk2MTMsOTYxNCw5NjE1LDk2MTksOTYyMCw5NjIxLDk2NjAsOTY2MSw5Njk4LDk2OTksOTcwMCw5NzAxLDk3MzcsODg1MywxMjMwNiwxMjMxNywxMjMxOCw1OTMyNCw1OTMyNSw1OTMyNiw1OTMyNyw1OTMyOCw1OTMyOSw1OTMzMCw1OTMzMSw1OTMzMiw1OTMzMyw1OTMzNCwyNTcsMjI1LDQ2MiwyMjQsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsMjM0LDU5Myw1OTMzNSwzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMsNTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDksNTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEyNTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEyMjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMwLDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAsOTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYsOTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMsOTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1MjksOTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDksMjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcsMjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1MjgsMjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAsMjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTczNTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTczNTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTczNjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcsNTczNzgsNTczNzksNTczODAsNTczODEsNTczODIsNTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgsNTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIsNTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0MzcsMjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTksMjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEsMjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2MzcsMjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYsNTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEsNTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcsNTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEsNTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYsNTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIsNTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTksMjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYsMjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUsMjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMsMjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEsMjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAsNTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUsNTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEsNTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUsMjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYsMjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQsMjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcsMjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIsMjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgsMjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2MzksNTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQsNTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAsNTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQsNTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTksNTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUsNTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEsMjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcsMjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQsMzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAwMzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAwNDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAwNTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcsNTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMsNTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3NjgsNTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQsNTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMsMzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQsMzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTksMzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAxNzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAsMzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcsMzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYsMzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAyNjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAyNjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIsNTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4MzcsNTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMsNTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcsNTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIsNTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgsNTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAyODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAyOTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAyOTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAsMzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUsMzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUsMzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAzNjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUsMzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEsMzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAsMjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYsMzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAsMzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMsMjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMxNTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0MjgsMzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQsMzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEsMzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAsMzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYsMzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAsMzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUyNTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEsMjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTksMjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMsMzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAyMDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEsMjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYsMjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQsMTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYsMzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEsMzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIsMzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODksMzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAsMjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcsMjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYxMzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzksMjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMsMjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYsMjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYxMjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMsMzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3MjgsMzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3MzksMzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgsMzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMsMzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQsMzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEzNzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUyMjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQsMjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIsMzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUsMjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAzNjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEsMjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcsMzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIsMzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUsMzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEsMzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAsMzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYsMzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTksMjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYsMzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMsMzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAsMzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQsMjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUxNDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzEwMDAsMzEwMDEsMzEwMDIsMzEwMDMsMzEwMDQsMzEwMDUsMzEwMDcsMzEwMDgsMzEwMDksMzEwMTAsMzEwMTEsMzEwMTMsMzEwMTQsMzEwMTUsMzEwMTYsMzEwMTcsMzEwMTgsMzEwMTksMzEwMjAsMzEwMjEsMzEwMjIsMzEwMjMsMzEwMjQsMzEwMjUsMzEwMjYsMzEwMjcsMzEwMjksMzEwMzAsMzEwMzEsMzEwMzIsMzEwMzMsMzEwMzcsMzEwMzksMzEwNDIsMzEwNDMsMzEwNDQsMzEwNDUsMzEwNDcsMzEwNTAsMzEwNTEsMzEwNTIsMzEwNTMsMzEwNTQsMzEwNTUsMzEwNTYsMzEwNTcsMzEwNTgsMzEwNjAsMzEwNjEsMzEwNjQsMzEwNjUsMzEwNzMsMzEwNzUsMzEwNzYsMzEwNzgsMzEwODEsMzEwODIsMzEwODMsMzEwODQsMzEwODYsMzEwODgsMzEwODksMzEwOTAsMzEwOTEsMzEwOTIsMzEwOTMsMzEwOTQsMzEwOTcsMzEwOTksMzExMDAsMzExMDEsMzExMDIsMzExMDMsMzExMDYsMzExMDcsMzExMTAsMzExMTEsMzExMTIsMzExMTMsMzExMTUsMzExMTYsMzExMTcsMzExMTgsMzExMjAsMzExMjEsMzExMjIsMjQ2MDgsMzI4MjksMjUyODUsMjAwMjUsMjEzMzMsMzcxMTIsMjU1MjgsMzI5NjYsMjYwODYsMjc2OTQsMjAyOTQsMjQ4MTQsMjgxMjksMzU4MDYsMjQzNzcsMzQ1MDcsMjQ0MDMsMjUzNzcsMjA4MjYsMzM2MzMsMjY3MjMsMjA5OTIsMjU0NDMsMzY0MjQsMjA0OTgsMjM3MDcsMzEwOTUsMjM1NDgsMjEwNDAsMzEyOTEsMjQ3NjQsMzY5NDcsMzA0MjMsMjQ1MDMsMjQ0NzEsMzAzNDAsMzY0NjAsMjg3ODMsMzAzMzEsMzE1NjEsMzA2MzQsMjA5NzksMzcwMTEsMjI1NjQsMjAzMDIsMjg0MDQsMzY4NDIsMjU5MzIsMzE1MTUsMjkzODAsMjgwNjgsMzI3MzUsMjMyNjUsMjUyNjksMjQyMTMsMjIzMjAsMzM5MjIsMzE1MzIsMjQwOTMsMjQzNTEsMzY4ODIsMzI1MzIsMzkwNzIsMjU0NzQsMjgzNTksMzA4NzIsMjg4NTcsMjA4NTYsMzg3NDcsMjI0NDMsMzAwMDUsMjAyOTEsMzAwMDgsMjQyMTUsMjQ4MDYsMjI4ODAsMjgwOTYsMjc1ODMsMzA4NTcsMjE1MDAsMzg2MTMsMjA5MzksMjA5OTMsMjU0ODEsMjE1MTQsMzgwMzUsMzU4NDMsMzYzMDAsMjkyNDEsMzA4NzksMzQ2NzgsMzY4NDUsMzU4NTMsMjE0NzIsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjcsMzExMjgsMzExMjksMzExMzEsMzExMzIsMzExMzMsMzExMzQsMzExMzUsMzExMzYsMzExMzcsMzExMzgsMzExMzksMzExNDAsMzExNDEsMzExNDIsMzExNDQsMzExNDUsMzExNDYsMzExNDcsMzExNDgsMzExNDksMzExNTAsMzExNTEsMzExNTIsMzExNTMsMzExNTQsMzExNTYsMzExNTcsMzExNTgsMzExNTksMzExNjAsMzExNjQsMzExNjcsMzExNzAsMzExNzIsMzExNzMsMzExNzUsMzExNzYsMzExNzgsMzExODAsMzExODIsMzExODMsMzExODQsMzExODcsMzExODgsMzExOTAsMzExOTEsMzExOTMsMzExOTQsMzExOTUsMzExOTYsMzExOTcsMzExOTgsMzEyMDAsMzEyMDEsMzEyMDIsMzEyMDUsMzEyMDgsMzEyMTAsMzEyMTIsMzEyMTQsMzEyMTcsMzEyMTgsMzEyMTksMzEyMjAsMzEyMjEsMzEyMjIsMzEyMjMsMzEyMjUsMzEyMjYsMzEyMjgsMzEyMzAsMzEyMzEsMzEyMzMsMzEyMzYsMzEyMzcsMzEyMzksMzEyNDAsMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDcsMzEyNDgsMzEyNDksMzEyNTAsMzEyNTEsMzEyNTMsMzEyNTQsMzEyNTYsMzEyNTcsMzEyNTksMzEyNjAsMTk5NjksMzA0NDcsMjE0ODYsMzgwMjUsMzkwMzAsNDA3MTgsMzgxODksMjM0NTAsMzU3NDYsMjAwMDIsMTk5OTYsMjA5MDgsMzM4OTEsMjUwMjYsMjExNjAsMjY2MzUsMjAzNzUsMjQ2ODMsMjA5MjMsMjc5MzQsMjA4MjgsMjUyMzgsMjYwMDcsMzg0OTcsMzU5MTAsMzY4ODcsMzAxNjgsMzcxMTcsMzA1NjMsMjc2MDIsMjkzMjIsMjk0MjAsMzU4MzUsMjI1ODEsMzA1ODUsMzYxNzIsMjY0NjAsMzgyMDgsMzI5MjIsMjQyMzAsMjgxOTMsMjI5MzAsMzE0NzEsMzA3MDEsMzgyMDMsMjc1NzMsMjYwMjksMzI1MjYsMjI1MzQsMjA4MTcsMzg0MzEsMjM1NDUsMjI2OTcsMjE1NDQsMzY0NjYsMjU5NTgsMzkwMzksMjIyNDQsMzgwNDUsMzA0NjIsMzY5MjksMjU0NzksMjE3MDIsMjI4MTAsMjI4NDIsMjI0MjcsMzY1MzAsMjY0MjEsMzYzNDYsMzMzMzMsMjEwNTcsMjQ4MTYsMjI1NDksMzQ1NTgsMjM3ODQsNDA1MTcsMjA0MjAsMzkwNjksMzU3NjksMjMwNzcsMjQ2OTQsMjEzODAsMjUyMTIsMzY5NDMsMzcxMjIsMzkyOTUsMjQ2ODEsMzI3ODAsMjA3OTksMzI4MTksMjM1NzIsMzkyODUsMjc5NTMsMjAxMDgsMzEyNjEsMzEyNjMsMzEyNjUsMzEyNjYsMzEyNjgsMzEyNjksMzEyNzAsMzEyNzEsMzEyNzIsMzEyNzMsMzEyNzQsMzEyNzUsMzEyNzYsMzEyNzcsMzEyNzgsMzEyNzksMzEyODAsMzEyODEsMzEyODIsMzEyODQsMzEyODUsMzEyODYsMzEyODgsMzEyOTAsMzEyOTQsMzEyOTYsMzEyOTcsMzEyOTgsMzEyOTksMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDUsMzEzMDYsMzEzMDcsMzEzMDgsMzEzMDksMzEzMTAsMzEzMTEsMzEzMTIsMzEzMTQsMzEzMTUsMzEzMTYsMzEzMTcsMzEzMTgsMzEzMjAsMzEzMjEsMzEzMjIsMzEzMjMsMzEzMjQsMzEzMjUsMzEzMjYsMzEzMjcsMzEzMjgsMzEzMjksMzEzMzAsMzEzMzEsMzEzMzIsMzEzMzMsMzEzMzQsMzEzMzUsMzEzMzYsMzEzMzcsMzEzMzgsMzEzMzksMzEzNDAsMzEzNDEsMzEzNDIsMzEzNDMsMzEzNDUsMzEzNDYsMzEzNDcsMzEzNDksMzEzNTUsMzEzNTYsMzEzNTcsMzEzNTgsMzEzNjIsMzEzNjUsMzEzNjcsMzEzNjksMzEzNzAsMzEzNzEsMzEzNzIsMzEzNzQsMzEzNzUsMzEzNzYsMzEzNzksMzEzODAsMzEzODUsMzEzODYsMzEzODcsMzEzOTAsMzEzOTMsMzEzOTQsMzYxNDQsMjE0NTcsMzI2MDIsMzE1NjcsMjAyNDAsMjAwNDcsMzg0MDAsMjc4NjEsMjk2NDgsMzQyODEsMjQwNzAsMzAwNTgsMzI3NjMsMjcxNDYsMzA3MTgsMzgwMzQsMzIzMjEsMjA5NjEsMjg5MDIsMjE0NTMsMzY4MjAsMzM1MzksMzYxMzcsMjkzNTksMzkyNzcsMjc4NjcsMjIzNDYsMzM0NTksMjYwNDEsMzI5MzgsMjUxNTEsMzg0NTAsMjI5NTIsMjAyMjMsMzU3NzUsMzI0NDIsMjU5MTgsMzM3NzgsMzg3NTAsMjE4NTcsMzkxMzQsMzI5MzMsMjEyOTAsMzU4MzcsMjE1MzYsMzI5NTQsMjQyMjMsMjc4MzIsMzYxNTMsMzM0NTIsMzcyMTAsMjE1NDUsMjc2NzUsMjA5OTgsMzI0MzksMjIzNjcsMjg5NTQsMjc3NzQsMzE4ODEsMjI4NTksMjAyMjEsMjQ1NzUsMjQ4NjgsMzE5MTQsMjAwMTYsMjM1NTMsMjY1MzksMzQ1NjIsMjM3OTIsMzgxNTUsMzkxMTgsMzAxMjcsMjg5MjUsMzY4OTgsMjA5MTEsMzI1NDEsMzU3NzMsMjI4NTcsMjA5NjQsMjAzMTUsMjE1NDIsMjI4MjcsMjU5NzUsMzI5MzIsMjM0MTMsMjUyMDYsMjUyODIsMzY3NTIsMjQxMzMsMjc2NzksMzE1MjYsMjAyMzksMjA0NDAsMjYzODEsMzEzOTUsMzEzOTYsMzEzOTksMzE0MDEsMzE0MDIsMzE0MDMsMzE0MDYsMzE0MDcsMzE0MDgsMzE0MDksMzE0MTAsMzE0MTIsMzE0MTMsMzE0MTQsMzE0MTUsMzE0MTYsMzE0MTcsMzE0MTgsMzE0MTksMzE0MjAsMzE0MjEsMzE0MjIsMzE0MjQsMzE0MjUsMzE0MjYsMzE0MjcsMzE0MjgsMzE0MjksMzE0MzAsMzE0MzEsMzE0MzIsMzE0MzMsMzE0MzQsMzE0MzYsMzE0MzcsMzE0MzgsMzE0MzksMzE0NDAsMzE0NDEsMzE0NDIsMzE0NDMsMzE0NDQsMzE0NDUsMzE0NDcsMzE0NDgsMzE0NTAsMzE0NTEsMzE0NTIsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjAsMzE0NjMsMzE0NjQsMzE0NjUsMzE0NjYsMzE0NjcsMzE0NjgsMzE0NzAsMzE0NzIsMzE0NzMsMzE0NzQsMzE0NzUsMzE0NzYsMzE0NzcsMzE0NzgsMzE0NzksMzE0ODAsMzE0ODMsMzE0ODQsMzE0ODYsMzE0ODgsMzE0ODksMzE0OTAsMzE0OTMsMzE0OTUsMzE0OTcsMzE1MDAsMzE1MDEsMzE1MDIsMzE1MDQsMzE1MDYsMzE1MDcsMzE1MTAsMzE1MTEsMzE1MTIsMzE1MTQsMzE1MTYsMzE1MTcsMzE1MTksMzE1MjEsMzE1MjIsMzE1MjMsMzE1MjcsMzE1MjksMzE1MzMsMjgwMTQsMjgwNzQsMzExMTksMzQ5OTMsMjQzNDMsMjk5OTUsMjUyNDIsMzY3NDEsMjA0NjMsMzczNDAsMjYwMjMsMzMwNzEsMzMxMDUsMjQyMjAsMzMxMDQsMzYyMTIsMjExMDMsMzUyMDYsMzYxNzEsMjI3OTcsMjA2MTMsMjAxODQsMzg0MjgsMjkyMzgsMzMxNDUsMzYxMjcsMjM1MDAsMzU3NDcsMzg0NjgsMjI5MTksMzI1MzgsMjE2NDgsMjIxMzQsMjIwMzAsMzU4MTMsMjU5MTMsMjcwMTAsMzgwNDEsMzA0MjIsMjgyOTcsMjQxNzgsMjk5NzYsMjY0MzgsMjY1NzcsMzE0ODcsMzI5MjUsMzYyMTQsMjQ4NjMsMzExNzQsMjU5NTQsMzYxOTUsMjA4NzIsMjEwMTgsMzgwNTAsMzI1NjgsMzI5MjMsMzI0MzQsMjM3MDMsMjgyMDcsMjY0NjQsMzE3MDUsMzAzNDcsMzk2NDAsMzMxNjcsMzI2NjAsMzE5NTcsMjU2MzAsMzgyMjQsMzEyOTUsMjE1NzgsMjE3MzMsMjc0NjgsMjU2MDEsMjUwOTYsNDA1MDksMzMwMTEsMzAxMDUsMjExMDYsMzg3NjEsMzM4ODMsMjY2ODQsMzQ1MzIsMzg0MDEsMzg1NDgsMzgxMjQsMjAwMTAsMjE1MDgsMzI0NzMsMjY2ODEsMzYzMTksMzI3ODksMjYzNTYsMjQyMTgsMzI2OTcsMzE1MzUsMzE1MzYsMzE1MzgsMzE1NDAsMzE1NDEsMzE1NDIsMzE1NDMsMzE1NDUsMzE1NDcsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTQsMzE1NTUsMzE1NTYsMzE1NTgsMzE1NjAsMzE1NjIsMzE1NjUsMzE1NjYsMzE1NzEsMzE1NzMsMzE1NzUsMzE1NzcsMzE1ODAsMzE1ODIsMzE1ODMsMzE1ODUsMzE1ODcsMzE1ODgsMzE1ODksMzE1OTAsMzE1OTEsMzE1OTIsMzE1OTMsMzE1OTQsMzE1OTUsMzE1OTYsMzE1OTcsMzE1OTksMzE2MDAsMzE2MDMsMzE2MDQsMzE2MDYsMzE2MDgsMzE2MTAsMzE2MTIsMzE2MTMsMzE2MTUsMzE2MTcsMzE2MTgsMzE2MTksMzE2MjAsMzE2MjIsMzE2MjMsMzE2MjQsMzE2MjUsMzE2MjYsMzE2MjcsMzE2MjgsMzE2MzAsMzE2MzEsMzE2MzMsMzE2MzQsMzE2MzUsMzE2MzgsMzE2NDAsMzE2NDEsMzE2NDIsMzE2NDMsMzE2NDYsMzE2NDcsMzE2NDgsMzE2NTEsMzE2NTIsMzE2NTMsMzE2NjIsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjcsMzE2NjksMzE2NzAsMzE2NzEsMzE2NzMsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2NzgsMzE2NzksMzE2ODAsMzE2ODIsMzE2ODMsMzE2ODQsMjI0NjYsMzI4MzEsMjY3NzUsMjQwMzcsMjU5MTUsMjExNTEsMjQ2ODUsNDA4NTgsMjAzNzksMzY1MjQsMjA4NDQsMjM0NjcsMjQzMzksMjQwNDEsMjc3NDIsMjUzMjksMzYxMjksMjA4NDksMzgwNTcsMjEyNDYsMjc4MDcsMzM1MDMsMjkzOTksMjI0MzQsMjY1MDAsMzYxNDEsMjI4MTUsMzY3NjQsMzM3MzUsMjE2NTMsMzE2MjksMjAyNzIsMjc4MzcsMjMzOTYsMjI5OTMsNDA3MjMsMjE0NzYsMzQ1MDYsMzk1OTIsMzU4OTUsMzI5MjksMjU5MjUsMzkwMzgsMjIyNjYsMzg1OTksMjEwMzgsMjk5MTYsMjEwNzIsMjM1MjEsMjUzNDYsMzUwNzQsMjAwNTQsMjUyOTYsMjQ2MTgsMjY4NzQsMjA4NTEsMjM0NDgsMjA4OTYsMzUyNjYsMzE2NDksMzkzMDIsMzI1OTIsMjQ4MTUsMjg3NDgsMzYxNDMsMjA4MDksMjQxOTEsMzY4OTEsMjk4MDgsMzUyNjgsMjIzMTcsMzA3ODksMjQ0MDIsNDA4NjMsMzgzOTQsMzY3MTIsMzk3NDAsMzU4MDksMzAzMjgsMjY2OTAsMjY1ODgsMzYzMzAsMzYxNDksMjEwNTMsMzY3NDYsMjgzNzgsMjY4MjksMzgxNDksMzcxMDEsMjIyNjksMjY1MjQsMzUwNjUsMzY4MDcsMjE3MDQsMzE2ODUsMzE2ODgsMzE2ODksMzE2OTAsMzE2OTEsMzE2OTMsMzE2OTQsMzE2OTUsMzE2OTYsMzE2OTgsMzE3MDAsMzE3MDEsMzE3MDIsMzE3MDMsMzE3MDQsMzE3MDcsMzE3MDgsMzE3MTAsMzE3MTEsMzE3MTIsMzE3MTQsMzE3MTUsMzE3MTYsMzE3MTksMzE3MjAsMzE3MjEsMzE3MjMsMzE3MjQsMzE3MjUsMzE3MjcsMzE3MjgsMzE3MzAsMzE3MzEsMzE3MzIsMzE3MzMsMzE3MzQsMzE3MzYsMzE3MzcsMzE3MzgsMzE3MzksMzE3NDEsMzE3NDMsMzE3NDQsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NDksMzE3NTAsMzE3NTIsMzE3NTMsMzE3NTQsMzE3NTcsMzE3NTgsMzE3NjAsMzE3NjEsMzE3NjIsMzE3NjMsMzE3NjQsMzE3NjUsMzE3NjcsMzE3NjgsMzE3NjksMzE3NzAsMzE3NzEsMzE3NzIsMzE3NzMsMzE3NzQsMzE3NzYsMzE3NzcsMzE3NzgsMzE3NzksMzE3ODAsMzE3ODEsMzE3ODQsMzE3ODUsMzE3ODcsMzE3ODgsMzE3ODksMzE3OTAsMzE3OTEsMzE3OTIsMzE3OTMsMzE3OTQsMzE3OTUsMzE3OTYsMzE3OTcsMzE3OTgsMzE3OTksMzE4MDEsMzE4MDIsMzE4MDMsMzE4MDQsMzE4MDUsMzE4MDYsMzE4MTAsMzk2MDgsMjM0MDEsMjgwMjMsMjc2ODYsMjAxMzMsMjM0NzUsMzk1NTksMzcyMTksMjUwMDAsMzcwMzksMzg4ODksMjE1NDcsMjgwODUsMjM1MDYsMjA5ODksMjE4OTgsMzI1OTcsMzI3NTIsMjU3ODgsMjU0MjEsMjYwOTcsMjUwMjIsMjQ3MTcsMjg5MzgsMjc3MzUsMjc3MjEsMjI4MzEsMjY0NzcsMzMzMjIsMjI3NDEsMjIxNTgsMzU5NDYsMjc2MjcsMzcwODUsMjI5MDksMzI3OTEsMjE0OTUsMjgwMDksMjE2MjEsMjE5MTcsMzM2NTUsMzM3NDMsMjY2ODAsMzExNjYsMjE2NDQsMjAzMDksMjE1MTIsMzA0MTgsMzU5NzcsMzg0MDIsMjc4MjcsMjgwODgsMzYyMDMsMzUwODgsNDA1NDgsMzYxNTQsMjIwNzksNDA2NTcsMzAxNjUsMjQ0NTYsMjk0MDgsMjQ2ODAsMjE3NTYsMjAxMzYsMjcxNzgsMzQ5MTMsMjQ2NTgsMzY3MjAsMjE3MDAsMjg4ODgsMzQ0MjUsNDA1MTEsMjc5NDYsMjM0MzksMjQzNDQsMzI0MTgsMjE4OTcsMjAzOTksMjk0OTIsMjE1NjQsMjE0MDIsMjA1MDUsMjE1MTgsMjE2MjgsMjAwNDYsMjQ1NzMsMjk3ODYsMjI3NzQsMzM4OTksMzI5OTMsMzQ2NzYsMjkzOTIsMzE5NDYsMjgyNDYsMzE4MTEsMzE4MTIsMzE4MTMsMzE4MTQsMzE4MTUsMzE4MTYsMzE4MTcsMzE4MTgsMzE4MTksMzE4MjAsMzE4MjIsMzE4MjMsMzE4MjQsMzE4MjUsMzE4MjYsMzE4MjcsMzE4MjgsMzE4MjksMzE4MzAsMzE4MzEsMzE4MzIsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4MzksMzE4NDAsMzE4NDEsMzE4NDIsMzE4NDMsMzE4NDQsMzE4NDUsMzE4NDYsMzE4NDcsMzE4NDgsMzE4NDksMzE4NTAsMzE4NTEsMzE4NTIsMzE4NTMsMzE4NTQsMzE4NTUsMzE4NTYsMzE4NTcsMzE4NTgsMzE4NjEsMzE4NjIsMzE4NjMsMzE4NjQsMzE4NjUsMzE4NjYsMzE4NzAsMzE4NzEsMzE4NzIsMzE4NzMsMzE4NzQsMzE4NzUsMzE4NzYsMzE4NzcsMzE4NzgsMzE4NzksMzE4ODAsMzE4ODIsMzE4ODMsMzE4ODQsMzE4ODUsMzE4ODYsMzE4ODcsMzE4ODgsMzE4OTEsMzE4OTIsMzE4OTQsMzE4OTcsMzE4OTgsMzE4OTksMzE5MDQsMzE5MDUsMzE5MDcsMzE5MTAsMzE5MTEsMzE5MTIsMzE5MTMsMzE5MTUsMzE5MTYsMzE5MTcsMzE5MTksMzE5MjAsMzE5MjQsMzE5MjUsMzE5MjYsMzE5MjcsMzE5MjgsMzE5MzAsMzE5MzEsMjQzNTksMzQzODIsMjE4MDQsMjUyNTIsMjAxMTQsMjc4MTgsMjUxNDMsMzM0NTcsMjE3MTksMjEzMjYsMjk1MDIsMjgzNjksMzAwMTEsMjEwMTAsMjEyNzAsMzU4MDUsMjcwODgsMjQ0NTgsMjQ1NzYsMjgxNDIsMjIzNTEsMjc0MjYsMjk2MTUsMjY3MDcsMzY4MjQsMzI1MzEsMjU0NDIsMjQ3MzksMjE3OTYsMzAxODYsMzU5MzgsMjg5NDksMjgwNjcsMjM0NjIsMjQxODcsMzM2MTgsMjQ5MDgsNDA2NDQsMzA5NzAsMzQ2NDcsMzE3ODMsMzAzNDMsMjA5NzYsMjQ4MjIsMjkwMDQsMjYxNzksMjQxNDAsMjQ2NTMsMzU4NTQsMjg3ODQsMjUzODEsMzY3NDUsMjQ1MDksMjQ2NzQsMzQ1MTYsMjIyMzgsMjc1ODUsMjQ3MjQsMjQ5MzUsMjEzMjEsMjQ4MDAsMjYyMTQsMzYxNTksMzEyMjksMjAyNTAsMjg5MDUsMjc3MTksMzU3NjMsMzU4MjYsMzI0NzIsMzM2MzYsMjYxMjcsMjMxMzAsMzk3NDYsMjc5ODUsMjgxNTEsMzU5MDUsMjc5NjMsMjAyNDksMjg3NzksMzM3MTksMjUxMTAsMjQ3ODUsMzg2NjksMzYxMzUsMzEwOTYsMjA5ODcsMjIzMzQsMjI1MjIsMjY0MjYsMzAwNzIsMzEyOTMsMzEyMTUsMzE2MzcsMzE5MzUsMzE5MzYsMzE5MzgsMzE5MzksMzE5NDAsMzE5NDIsMzE5NDUsMzE5NDcsMzE5NTAsMzE5NTEsMzE5NTIsMzE5NTMsMzE5NTQsMzE5NTUsMzE5NTYsMzE5NjAsMzE5NjIsMzE5NjMsMzE5NjUsMzE5NjYsMzE5NjksMzE5NzAsMzE5NzEsMzE5NzIsMzE5NzMsMzE5NzQsMzE5NzUsMzE5NzcsMzE5NzgsMzE5NzksMzE5ODAsMzE5ODEsMzE5ODIsMzE5ODQsMzE5ODUsMzE5ODYsMzE5ODcsMzE5ODgsMzE5ODksMzE5OTAsMzE5OTEsMzE5OTMsMzE5OTQsMzE5OTYsMzE5OTcsMzE5OTgsMzE5OTksMzIwMDAsMzIwMDEsMzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIwMjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIwMzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEsMzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjksMzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODksMzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMwMzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMzOTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYsMzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEsMzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYsMzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUzMTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUyNjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcsMzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIsMzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgsMzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIwOTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIxMDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIxMDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQsMzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUsMzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIxNTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgxNzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIsMzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQsMjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDksMzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUyOTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEsMzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAsMzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgsMjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIxNjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIxNzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIxODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIsMzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgsMzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIyMjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIyMzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIyMzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAsMzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAsNDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMsMjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAwMzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYwODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAsMjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAsMjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0NzcsMjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUyNzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIyNTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgsMzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMsMzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzksMzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIyOTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIzMDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIzMDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUsMzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEsMzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcsMzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQzMjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEsMzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMsMzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEsMjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcyMzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYzMjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEsMzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIsMzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMsMzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIzNzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIzNzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIzODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgsMzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMsMzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDksMzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYsMjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMsMjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIsMzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQyNjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjkyODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQsMzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQsMjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3MjksMjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEzODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQsMzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAsMzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcsMzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIsMzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAsMzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3MjksMzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgsMzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgsMjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUsMzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAyNzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkwNDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcsMzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQsMzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQsMzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4MzksMzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgsMzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcsMzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYsMzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgsMzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUsMzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQsMzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAsNDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQsMjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMsMzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5NjksMzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5NzgsMzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMwMjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMwMzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMwNDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcsMzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYsMzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQsMzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAwNDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkwMjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgsMzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEsMzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4NjgsMjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzExODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAsMzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcsMzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEsMzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMxMzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMxNDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMsMzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODksMzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgsMzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMyMjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMyMzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEsMjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcsMjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUsMjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIyMTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEsMjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0NjcsMjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMsMzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMyNDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMyNDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMyNTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcsMzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODksMzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTksMzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMzNDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMzNDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMzNTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYsMzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEsMzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUsMjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYyNzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYsMjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDksMzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYsMzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTksMzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAsMzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1MjgsMzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUsMzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQsMzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAxNzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzksMjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1MjksMzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEsMjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUxMTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgsMzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIsMjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2NjgsMzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIsMzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2NzksMzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcsMzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3NjgsMzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUsMjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEsMzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQxMDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMsMzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgsMjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3NzcsMzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcxOTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIsMzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEsMzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMsMzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAsMzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYsMzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcsMzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIsMjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYsMjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0NjksMjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgzNDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQsMjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIsMzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5NzcsMjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMsMzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIsMzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEsMzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQwMTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQwMjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQwMzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUsMjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1NzgsMjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIsMjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEwMjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1NjksMjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAsMzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYsMjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQwNTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIsMzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgsMzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYsMzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQxMTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQxMTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMsMzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTksMzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIzMDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgyODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUzNDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAsMjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMsMjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEsMjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgxMTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEsMjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYsMjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQsMzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQyMDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQyMDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQyMTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUsMzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIsMzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQyNzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQyODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQyODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjksMjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUsMzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYsMzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQwNTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcsMzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2MzksMzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIsMjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQyOTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQzMDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMsMzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjksMzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUsMzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQzNTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQzNTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQzNjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODksMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUsMzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMsMzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcyMTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAxOTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzksMjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgsMzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYsMzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYzNjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4MjUsMjgxNTUsMjI2MzUsMzAwMDAsMjk5ODAsMjQ2ODQsMzMzMDAsMzMwOTQsMjUzNjEsMjY0NjUsMzY4MzQsMzA1MjIsMzYzMzksMzYxNDgsMzgwODEsMjQwODYsMjEzODEsMjE1NDgsMjg4NjcsMzQ0MTMsMzQ0MTUsMzQ0MTYsMzQ0MTgsMzQ0MTksMzQ0MjAsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjQsMzQ0MzUsMzQ0MzYsMzQ0MzcsMzQ0MzgsMzQ0MzksMzQ0NDAsMzQ0NDEsMzQ0NDYsMzQ0NDcsMzQ0NDgsMzQ0NDksMzQ0NTAsMzQ0NTIsMzQ0NTQsMzQ0NTUsMzQ0NTYsMzQ0NTcsMzQ0NTgsMzQ0NTksMzQ0NjIsMzQ0NjMsMzQ0NjQsMzQ0NjUsMzQ0NjYsMzQ0NjksMzQ0NzAsMzQ0NzUsMzQ0NzcsMzQ0NzgsMzQ0ODIsMzQ0ODMsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTEsMzQ0OTIsMzQ0OTMsMzQ0OTQsMzQ0OTUsMzQ0OTcsMzQ0OTgsMzQ0OTksMzQ1MDEsMzQ1MDQsMzQ1MDgsMzQ1MDksMzQ1MTQsMzQ1MTUsMzQ1MTcsMzQ1MTgsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjUsMzQ1MjgsMzQ1MjksMzQ1MzAsMzQ1MzEsMzQ1MzMsMzQ1MzQsMzQ1MzUsMzQ1MzYsMzQ1MzgsMzQ1MzksMzQ1NDAsMzQ1NDMsMzQ1NDksMzQ1NTAsMzQ1NTEsMzQ1NTQsMzQ1NTUsMzQ1NTYsMzQ1NTcsMzQ1NTksMzQ1NjEsMzQ1NjQsMzQ1NjUsMzQ1NjYsMzQ1NzEsMzQ1NzIsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzcsMzQ1ODAsMzQ1ODIsMjc3MTIsMjQzMTEsMjA1NzIsMjAxNDEsMjQyMzcsMjU0MDIsMzMzNTEsMzY4OTAsMjY3MDQsMzcyMzAsMzA2NDMsMjE1MTYsMzgxMDgsMjQ0MjAsMzE0NjEsMjY3NDIsMjU0MTMsMzE1NzAsMzI0NzksMzAxNzEsMjA1OTksMjUyMzcsMjI4MzYsMzY4NzksMjA5ODQsMzExNzEsMzEzNjEsMjIyNzAsMjQ0NjYsMzY4ODQsMjgwMzQsMjM2NDgsMjIzMDMsMjE1MjAsMjA4MjAsMjgyMzcsMjIyNDIsMjU1MTIsMzkwNTksMzMxNTEsMzQ1ODEsMzUxMTQsMzY4NjQsMjE1MzQsMjM2NjMsMzMyMTYsMjUzMDIsMjUxNzYsMzMwNzMsNDA1MDEsMzg0NjQsMzk1MzQsMzk1NDgsMjY5MjUsMjI5NDksMjUyOTksMjE4MjIsMjUzNjYsMjE3MDMsMzQ1MjEsMjc5NjQsMjMwNDMsMjk5MjYsMzQ5NzIsMjc0OTgsMjI4MDYsMzU5MTYsMjQzNjcsMjgyODYsMjk2MDksMzkwMzcsMjAwMjQsMjg5MTksMjM0MzYsMzA4NzEsMjU0MDUsMjYyMDIsMzAzNTgsMjQ3NzksMjM0NTEsMjMxMTMsMTk5NzUsMzMxMDksMjc3NTQsMjk1NzksMjAxMjksMjY1MDUsMzI1OTMsMjQ0NDgsMjYxMDYsMjYzOTUsMjQ1MzYsMjI5MTYsMjMwNDEsMzQ1ODUsMzQ1ODcsMzQ1ODksMzQ1OTEsMzQ1OTIsMzQ1OTYsMzQ1OTgsMzQ1OTksMzQ2MDAsMzQ2MDIsMzQ2MDMsMzQ2MDQsMzQ2MDUsMzQ2MDcsMzQ2MDgsMzQ2MTAsMzQ2MTEsMzQ2MTMsMzQ2MTQsMzQ2MTYsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjQsMzQ2MjUsMzQ2MjYsMzQ2MjcsMzQ2MjgsMzQ2MjksMzQ2MzAsMzQ2MzQsMzQ2MzUsMzQ2MzcsMzQ2MzksMzQ2NDAsMzQ2NDEsMzQ2NDIsMzQ2NDQsMzQ2NDUsMzQ2NDYsMzQ2NDgsMzQ2NTAsMzQ2NTEsMzQ2NTIsMzQ2NTMsMzQ2NTQsMzQ2NTUsMzQ2NTcsMzQ2NTgsMzQ2NjIsMzQ2NjMsMzQ2NjQsMzQ2NjUsMzQ2NjYsMzQ2NjcsMzQ2NjgsMzQ2NjksMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2NzUsMzQ2NzcsMzQ2NzksMzQ2ODAsMzQ2ODEsMzQ2ODIsMzQ2ODcsMzQ2ODgsMzQ2ODksMzQ2OTIsMzQ2OTQsMzQ2OTUsMzQ2OTcsMzQ2OTgsMzQ3MDAsMzQ3MDIsMzQ3MDMsMzQ3MDQsMzQ3MDUsMzQ3MDYsMzQ3MDgsMzQ3MDksMzQ3MTAsMzQ3MTIsMzQ3MTMsMzQ3MTQsMzQ3MTUsMzQ3MTYsMzQ3MTcsMzQ3MTgsMzQ3MjAsMzQ3MjEsMzQ3MjIsMzQ3MjMsMzQ3MjQsMjQwMTMsMjQ0OTQsMjEzNjEsMzg4ODYsMzY4MjksMjY2OTMsMjIyNjAsMjE4MDcsMjQ3OTksMjAwMjYsMjg0OTMsMzI1MDAsMzM0NzksMzM4MDYsMjI5OTYsMjAyNTUsMjAyNjYsMjM2MTQsMzI0MjgsMjY0MTAsMzQwNzQsMjE2MTksMzAwMzEsMzI5NjMsMjE4OTAsMzk3NTksMjAzMDEsMjgyMDUsMzU4NTksMjM1NjEsMjQ5NDQsMjEzNTUsMzAyMzksMjgyMDEsMzQ0NDIsMjU5OTEsMzgzOTUsMzI0NDEsMjE1NjMsMzEyODMsMzIwMTAsMzgzODIsMjE5ODUsMzI3MDUsMjk5MzQsMjUzNzMsMzQ1ODMsMjgwNjUsMzEzODksMjUxMDUsMjYwMTcsMjEzNTEsMjU1NjksMjc3NzksMjQwNDMsMjE1OTYsMzgwNTYsMjAwNDQsMjc3NDUsMzU4MjAsMjM2MjcsMjYwODAsMzM0MzYsMjY3OTEsMjE1NjYsMjE1NTYsMjc1OTUsMjc0OTQsMjAxMTYsMjU0MTAsMjEzMjAsMzMzMTAsMjAyMzcsMjAzOTgsMjIzNjYsMjUwOTgsMzg2NTQsMjYyMTIsMjkyODksMjEyNDcsMjExNTMsMjQ3MzUsMzU4MjMsMjYxMzIsMjkwODEsMjY1MTIsMzUxOTksMzA4MDIsMzA3MTcsMjYyMjQsMjIwNzUsMjE1NjAsMzgxNzcsMjkzMDYsMzQ3MjUsMzQ3MjYsMzQ3MjcsMzQ3MjksMzQ3MzAsMzQ3MzQsMzQ3MzYsMzQ3MzcsMzQ3MzgsMzQ3NDAsMzQ3NDIsMzQ3NDMsMzQ3NDQsMzQ3NDUsMzQ3NDcsMzQ3NDgsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NTQsMzQ3NTUsMzQ3NTYsMzQ3NTcsMzQ3NTksMzQ3NjAsMzQ3NjEsMzQ3NjQsMzQ3NjUsMzQ3NjYsMzQ3NjcsMzQ3NjgsMzQ3NzIsMzQ3NzMsMzQ3NzQsMzQ3NzUsMzQ3NzYsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODEsMzQ3ODIsMzQ3ODMsMzQ3ODUsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTAsMzQ3OTEsMzQ3OTIsMzQ3OTMsMzQ3OTUsMzQ3OTYsMzQ3OTcsMzQ3OTksMzQ4MDAsMzQ4MDEsMzQ4MDIsMzQ4MDMsMzQ4MDQsMzQ4MDUsMzQ4MDYsMzQ4MDcsMzQ4MDgsMzQ4MTAsMzQ4MTEsMzQ4MTIsMzQ4MTMsMzQ4MTUsMzQ4MTYsMzQ4MTcsMzQ4MTgsMzQ4MjAsMzQ4MjEsMzQ4MjIsMzQ4MjMsMzQ4MjQsMzQ4MjUsMzQ4MjcsMzQ4MjgsMzQ4MjksMzQ4MzAsMzQ4MzEsMzQ4MzIsMzQ4MzMsMzQ4MzQsMzQ4MzYsMzQ4MzksMzQ4NDAsMzQ4NDEsMzQ4NDIsMzQ4NDQsMzQ4NDUsMzQ4NDYsMzQ4NDcsMzQ4NDgsMzQ4NTEsMzEyMzIsMjQ2ODcsMjQwNzYsMjQ3MTMsMzMxODEsMjI4MDUsMjQ3OTYsMjkwNjAsMjg5MTEsMjgzMzAsMjc3MjgsMjkzMTIsMjcyNjgsMzQ5ODksMjQxMDksMjAwNjQsMjMyMTksMjE5MTYsMzgxMTUsMjc5MjcsMzE5OTUsMzg1NTMsMjUxMDMsMzI0NTQsMzA2MDYsMzQ0MzAsMjEyODMsMzg2ODYsMzY3NTgsMjYyNDcsMjM3NzcsMjAzODQsMjk0MjEsMTk5NzksMjE0MTQsMjI3OTksMjE1MjMsMjU0NzIsMzgxODQsMjA4MDgsMjAxODUsNDAwOTIsMzI0MjAsMjE2ODgsMzYxMzIsMzQ5MDAsMzMzMzUsMzgzODYsMjgwNDYsMjQzNTgsMjMyNDQsMjYxNzQsMzg1MDUsMjk2MTYsMjk0ODYsMjE0MzksMzMxNDYsMzkzMDEsMzI2NzMsMjM0NjYsMzg1MTksMzg0ODAsMzI0NDcsMzA0NTYsMjE0MTAsMzgyNjIsMzkzMjEsMzE2NjUsMzUxNDAsMjgyNDgsMjAwNjUsMzI3MjQsMzEwNzcsMzU4MTQsMjQ4MTksMjE3MDksMjAxMzksMzkwMzMsMjQwNTUsMjcyMzMsMjA2ODcsMjE1MjEsMzU5MzcsMzM4MzEsMzA4MTMsMzg2NjAsMjEwNjYsMjE3NDIsMjIxNzksMzgxNDQsMjgwNDAsMjM0NzcsMjgxMDIsMjYxOTUsMzQ4NTIsMzQ4NTMsMzQ4NTQsMzQ4NTUsMzQ4NTYsMzQ4NTcsMzQ4NTgsMzQ4NTksMzQ4NjAsMzQ4NjEsMzQ4NjIsMzQ4NjMsMzQ4NjQsMzQ4NjUsMzQ4NjcsMzQ4NjgsMzQ4NjksMzQ4NzAsMzQ4NzEsMzQ4NzIsMzQ4NzQsMzQ4NzUsMzQ4NzcsMzQ4NzgsMzQ4NzksMzQ4ODEsMzQ4ODIsMzQ4ODMsMzQ4ODYsMzQ4ODcsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTUsMzQ4OTYsMzQ4OTcsMzQ4OTgsMzQ4OTksMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDcsMzQ5MDgsMzQ5MDksMzQ5MTAsMzQ5MTEsMzQ5MTIsMzQ5MTgsMzQ5MTksMzQ5MjIsMzQ5MjUsMzQ5MjcsMzQ5MjksMzQ5MzEsMzQ5MzIsMzQ5MzMsMzQ5MzQsMzQ5MzYsMzQ5MzcsMzQ5MzgsMzQ5MzksMzQ5NDAsMzQ5NDQsMzQ5NDcsMzQ5NTAsMzQ5NTEsMzQ5NTMsMzQ5NTQsMzQ5NTYsMzQ5NTgsMzQ5NTksMzQ5NjAsMzQ5NjEsMzQ5NjMsMzQ5NjQsMzQ5NjUsMzQ5NjcsMzQ5NjgsMzQ5NjksMzQ5NzAsMzQ5NzEsMzQ5NzMsMzQ5NzQsMzQ5NzUsMzQ5NzYsMzQ5NzcsMzQ5NzksMzQ5ODEsMzQ5ODIsMzQ5ODMsMzQ5ODQsMzQ5ODUsMzQ5ODYsMjM1NjcsMjMzODksMjY2NTcsMzI5MTgsMjE4ODAsMzE1MDUsMjU5MjgsMjY5NjQsMjAxMjMsMjc0NjMsMzQ2MzgsMzg3OTUsMjEzMjcsMjUzNzUsMjU2NTgsMzcwMzQsMjYwMTIsMzI5NjEsMzU4NTYsMjA4ODksMjY4MDAsMjEzNjgsMzQ4MDksMjUwMzIsMjc4NDQsMjc4OTksMzU4NzQsMjM2MzMsMzQyMTgsMzM0NTUsMzgxNTYsMjc0MjcsMzY3NjMsMjYwMzIsMjQ1NzEsMjQ1MTUsMjA0NDksMzQ4ODUsMjYxNDMsMzMxMjUsMjk0ODEsMjQ4MjYsMjA4NTIsMjEwMDksMjI0MTEsMjQ0MTgsMzcwMjYsMzQ4OTIsMzcyNjYsMjQxODQsMjY0NDcsMjQ2MTUsMjI5OTUsMjA4MDQsMjA5ODIsMzMwMTYsMjEyNTYsMjc3NjksMzg1OTYsMjkwNjYsMjAyNDEsMjA0NjIsMzI2NzAsMjY0MjksMjE5NTcsMzgxNTIsMzExNjgsMzQ5NjYsMzI0ODMsMjI2ODcsMjUxMDAsMzg2NTYsMzQzOTQsMjIwNDAsMzkwMzUsMjQ0NjQsMzU3NjgsMzM5ODgsMzcyMDcsMjE0NjUsMjYwOTMsMjQyMDcsMzAwNDQsMjQ2NzYsMzIxMTAsMjMxNjcsMzI0OTAsMzI0OTMsMzY3MTMsMjE5MjcsMjM0NTksMjQ3NDgsMjYwNTksMjk1NzIsMzQ5ODgsMzQ5OTAsMzQ5OTEsMzQ5OTIsMzQ5OTQsMzQ5OTUsMzQ5OTYsMzQ5OTcsMzQ5OTgsMzUwMDAsMzUwMDEsMzUwMDIsMzUwMDMsMzUwMDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUwMTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgsMzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDksMzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUsMzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUwODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUwODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUwOTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTksMzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcsMzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMsMjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEsMjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQsMjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYsMzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzksMzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUsMzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEsMzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUxNzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUxODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAsMzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgsMzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQsMzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUyMzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIsMjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgsMzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4MzksMzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAxNTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAxMzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODksMzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIsMjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgsMjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUyNDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUyNTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMsMzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAsMzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDksMzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUzMjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUzMzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUzNDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcsMjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAsMjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2MzksMzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgsMzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQsMzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYsNDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMsMzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgsMzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQsMzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAsMzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUsMzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEsMzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUwMjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgxNzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEsMzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIsMzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQsMjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIzMTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYxNjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQyOTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAsMjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYsMjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgsMzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUsMzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAsMzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYsMzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgsMjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgsMjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEsMjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcxNjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAxODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYsMzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEsMzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYsMzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYsMzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEsMzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcsMzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMsMzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2MzgsMzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQsMzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIsMjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDksMzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUsMzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEsMzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQsMzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAsMzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYsMzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEsMzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcsMzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYsMjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYsMzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQsMzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMwMzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDksMzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIsMzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgsMzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5MjcsMzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMsMzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEsMzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgsMzU5OTksMzYwMDAsMzYwMDEsMzYwMDIsMzYwMDMsMzYwMDQsMzYwMDUsMzYwMDYsMzYwMDcsMzYwMDgsMzYwMDksMzYwMTAsMzYwMTEsMzYwMTIsMzYwMTMsMjAxMDksMTk5ODAsMjA4MDAsMTk5ODQsMjQzMTksMjEzMTcsMTk5ODksMjAxMjAsMTk5OTgsMzk3MzAsMjM0MDQsMjIxMjEsMjAwMDgsMzExNjIsMjAwMzEsMjEyNjksMjAwMzksMjI4MjksMjkyNDMsMjEzNTgsMjc2NjQsMjIyMzksMzI5OTYsMzkzMTksMjc2MDMsMzA1OTAsNDA3MjcsMjAwMjIsMjAxMjcsNDA3MjAsMjAwNjAsMjAwNzMsMjAxMTUsMzM0MTYsMjMzODcsMjE4NjgsMjIwMzEsMjAxNjQsMjEzODksMjE0MDUsMjE0MTEsMjE0MTMsMjE0MjIsMzg3NTcsMzYxODksMjEyNzQsMjE0OTMsMjEyODYsMjEyOTQsMjEzMTAsMzYxODgsMjEzNTAsMjEzNDcsMjA5OTQsMjEwMDAsMjEwMDYsMjEwMzcsMjEwNDMsMjEwNTUsMjEwNTYsMjEwNjgsMjEwODYsMjEwODksMjEwODQsMzM5NjcsMjExMTcsMjExMjIsMjExMjEsMjExMzYsMjExMzksMjA4NjYsMzI1OTYsMjAxNTUsMjAxNjMsMjAxNjksMjAxNjIsMjAyMDAsMjAxOTMsMjAyMDMsMjAxOTAsMjAyNTEsMjAyMTEsMjAyNTgsMjAzMjQsMjAyMTMsMjAyNjEsMjAyNjMsMjAyMzMsMjAyNjcsMjAzMTgsMjAzMjcsMjU5MTIsMjAzMTQsMjAzMTcsMzYwMTQsMzYwMTUsMzYwMTYsMzYwMTcsMzYwMTgsMzYwMTksMzYwMjAsMzYwMjEsMzYwMjIsMzYwMjMsMzYwMjQsMzYwMjUsMzYwMjYsMzYwMjcsMzYwMjgsMzYwMjksMzYwMzAsMzYwMzEsMzYwMzIsMzYwMzMsMzYwMzQsMzYwMzUsMzYwMzYsMzYwMzcsMzYwMzgsMzYwMzksMzYwNDAsMzYwNDEsMzYwNDIsMzYwNDMsMzYwNDQsMzYwNDUsMzYwNDYsMzYwNDcsMzYwNDgsMzYwNDksMzYwNTAsMzYwNTEsMzYwNTIsMzYwNTMsMzYwNTQsMzYwNTUsMzYwNTYsMzYwNTcsMzYwNTgsMzYwNTksMzYwNjAsMzYwNjEsMzYwNjIsMzYwNjMsMzYwNjQsMzYwNjUsMzYwNjYsMzYwNjcsMzYwNjgsMzYwNjksMzYwNzAsMzYwNzEsMzYwNzIsMzYwNzMsMzYwNzQsMzYwNzUsMzYwNzYsMzYwNzcsMzYwNzgsMzYwNzksMzYwODAsMzYwODEsMzYwODIsMzYwODMsMzYwODQsMzYwODUsMzYwODYsMzYwODcsMzYwODgsMzYwODksMzYwOTAsMzYwOTEsMzYwOTIsMzYwOTMsMzYwOTQsMzYwOTUsMzYwOTYsMzYwOTcsMzYwOTgsMzYwOTksMzYxMDAsMzYxMDEsMzYxMDIsMzYxMDMsMzYxMDQsMzYxMDUsMzYxMDYsMzYxMDcsMzYxMDgsMzYxMDksMjAzMTksMjAzMTEsMjAyNzQsMjAyODUsMjAzNDIsMjAzNDAsMjAzNjksMjAzNjEsMjAzNTUsMjAzNjcsMjAzNTAsMjAzNDcsMjAzOTQsMjAzNDgsMjAzOTYsMjAzNzIsMjA0NTQsMjA0NTYsMjA0NTgsMjA0MjEsMjA0NDIsMjA0NTEsMjA0NDQsMjA0MzMsMjA0NDcsMjA0NzIsMjA1MjEsMjA1NTYsMjA0NjcsMjA1MjQsMjA0OTUsMjA1MjYsMjA1MjUsMjA0NzgsMjA1MDgsMjA0OTIsMjA1MTcsMjA1MjAsMjA2MDYsMjA1NDcsMjA1NjUsMjA1NTIsMjA1NTgsMjA1ODgsMjA2MDMsMjA2NDUsMjA2NDcsMjA2NDksMjA2NjYsMjA2OTQsMjA3NDIsMjA3MTcsMjA3MTYsMjA3MTAsMjA3MTgsMjA3NDMsMjA3NDcsMjAxODksMjc3MDksMjAzMTIsMjAzMjUsMjA0MzAsNDA4NjQsMjc3MTgsMzE4NjAsMjA4NDYsMjQwNjEsNDA2NDksMzkzMjAsMjA4NjUsMjI4MDQsMjEyNDEsMjEyNjEsMzUzMzUsMjEyNjQsMjA5NzEsMjI4MDksMjA4MjEsMjAxMjgsMjA4MjIsMjAxNDcsMzQ5MjYsMzQ5ODAsMjAxNDksMzMwNDQsMzUwMjYsMzExMDQsMjMzNDgsMzQ4MTksMzI2OTYsMjA5MDcsMjA5MTMsMjA5MjUsMjA5MjQsMzYxMTAsMzYxMTEsMzYxMTIsMzYxMTMsMzYxMTQsMzYxMTUsMzYxMTYsMzYxMTcsMzYxMTgsMzYxMTksMzYxMjAsMzYxMjEsMzYxMjIsMzYxMjMsMzYxMjQsMzYxMjgsMzYxNzcsMzYxNzgsMzYxODMsMzYxOTEsMzYxOTcsMzYyMDAsMzYyMDEsMzYyMDIsMzYyMDQsMzYyMDYsMzYyMDcsMzYyMDksMzYyMTAsMzYyMTYsMzYyMTcsMzYyMTgsMzYyMTksMzYyMjAsMzYyMjEsMzYyMjIsMzYyMjMsMzYyMjQsMzYyMjYsMzYyMjcsMzYyMzAsMzYyMzEsMzYyMzIsMzYyMzMsMzYyMzYsMzYyMzcsMzYyMzgsMzYyMzksMzYyNDAsMzYyNDIsMzYyNDMsMzYyNDUsMzYyNDYsMzYyNDcsMzYyNDgsMzYyNDksMzYyNTAsMzYyNTEsMzYyNTIsMzYyNTMsMzYyNTQsMzYyNTYsMzYyNTcsMzYyNTgsMzYyNjAsMzYyNjEsMzYyNjIsMzYyNjMsMzYyNjQsMzYyNjUsMzYyNjYsMzYyNjcsMzYyNjgsMzYyNjksMzYyNzAsMzYyNzEsMzYyNzIsMzYyNzQsMzYyNzgsMzYyNzksMzYyODEsMzYyODMsMzYyODUsMzYyODgsMzYyODksMzYyOTAsMzYyOTMsMzYyOTUsMzYyOTYsMzYyOTcsMzYyOTgsMzYzMDEsMzYzMDQsMzYzMDYsMzYzMDcsMzYzMDgsMjA5MzUsMjA4ODYsMjA4OTgsMjA5MDEsMzU3NDQsMzU3NTAsMzU3NTEsMzU3NTQsMzU3NjQsMzU3NjUsMzU3NjcsMzU3NzgsMzU3NzksMzU3ODcsMzU3OTEsMzU3OTAsMzU3OTQsMzU3OTUsMzU3OTYsMzU3OTgsMzU4MDAsMzU4MDEsMzU4MDQsMzU4MDcsMzU4MDgsMzU4MTIsMzU4MTYsMzU4MTcsMzU4MjIsMzU4MjQsMzU4MjcsMzU4MzAsMzU4MzMsMzU4MzYsMzU4MzksMzU4NDAsMzU4NDIsMzU4NDQsMzU4NDcsMzU4NTIsMzU4NTUsMzU4NTcsMzU4NTgsMzU4NjAsMzU4NjEsMzU4NjIsMzU4NjUsMzU4NjcsMzU4NjQsMzU4NjksMzU4NzEsMzU4NzIsMzU4NzMsMzU4NzcsMzU4NzksMzU4ODIsMzU4ODMsMzU4ODYsMzU4ODcsMzU4OTAsMzU4OTEsMzU4OTMsMzU4OTQsMjEzNTMsMjEzNzAsMzg0MjksMzg0MzQsMzg0MzMsMzg0NDksMzg0NDIsMzg0NjEsMzg0NjAsMzg0NjYsMzg0NzMsMzg0ODQsMzg0OTUsMzg1MDMsMzg1MDgsMzg1MTQsMzg1MTYsMzg1MzYsMzg1NDEsMzg1NTEsMzg1NzYsMzcwMTUsMzcwMTksMzcwMjEsMzcwMTcsMzcwMzYsMzcwMjUsMzcwNDQsMzcwNDMsMzcwNDYsMzcwNTAsMzYzMDksMzYzMTIsMzYzMTMsMzYzMTYsMzYzMjAsMzYzMjEsMzYzMjIsMzYzMjUsMzYzMjYsMzYzMjcsMzYzMjksMzYzMzMsMzYzMzQsMzYzMzYsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDIsMzYzNDgsMzYzNTAsMzYzNTEsMzYzNTIsMzYzNTMsMzYzNTQsMzYzNTUsMzYzNTYsMzYzNTgsMzYzNTksMzYzNjAsMzYzNjMsMzYzNjUsMzYzNjYsMzYzNjgsMzYzNjksMzYzNzAsMzYzNzEsMzYzNzMsMzYzNzQsMzYzNzUsMzYzNzYsMzYzNzcsMzYzNzgsMzYzNzksMzYzODAsMzYzODQsMzYzODUsMzYzODgsMzYzODksMzYzOTAsMzYzOTEsMzYzOTIsMzYzOTUsMzYzOTcsMzY0MDAsMzY0MDIsMzY0MDMsMzY0MDQsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MTEsMzY0MTIsMzY0MTQsMzY0MTUsMzY0MTksMzY0MjEsMzY0MjIsMzY0MjgsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzIsMzY0MzUsMzY0MzYsMzY0MzcsMzY0MzgsMzY0MzksMzY0NDAsMzY0NDIsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDcsMzY0NDgsMzY0NDksMzY0NTAsMzY0NTEsMzY0NTIsMzY0NTMsMzY0NTUsMzY0NTYsMzY0NTgsMzY0NTksMzY0NjIsMzY0NjUsMzcwNDgsMzcwNDAsMzcwNzEsMzcwNjEsMzcwNTQsMzcwNzIsMzcwNjAsMzcwNjMsMzcwNzUsMzcwOTQsMzcwOTAsMzcwODQsMzcwNzksMzcwODMsMzcwOTksMzcxMDMsMzcxMTgsMzcxMjQsMzcxNTQsMzcxNTAsMzcxNTUsMzcxNjksMzcxNjcsMzcxNzcsMzcxODcsMzcxOTAsMjEwMDUsMjI4NTAsMjExNTQsMjExNjQsMjExNjUsMjExODIsMjE3NTksMjEyMDAsMjEyMDYsMjEyMzIsMjE0NzEsMjkxNjYsMzA2NjksMjQzMDgsMjA5ODEsMjA5ODgsMzk3MjcsMjE0MzAsMjQzMjEsMzAwNDIsMjQwNDcsMjIzNDgsMjI0NDEsMjI0MzMsMjI2NTQsMjI3MTYsMjI3MjUsMjI3MzcsMjIzMTMsMjIzMTYsMjIzMTQsMjIzMjMsMjIzMjksMjIzMTgsMjIzMTksMjIzNjQsMjIzMzEsMjIzMzgsMjIzNzcsMjI0MDUsMjIzNzksMjI0MDYsMjIzOTYsMjIzOTUsMjIzNzYsMjIzODEsMjIzOTAsMjIzODcsMjI0NDUsMjI0MzYsMjI0MTIsMjI0NTAsMjI0NzksMjI0MzksMjI0NTIsMjI0MTksMjI0MzIsMjI0ODUsMjI0ODgsMjI0OTAsMjI0ODksMjI0ODIsMjI0NTYsMjI1MTYsMjI1MTEsMjI1MjAsMjI1MDAsMjI0OTMsMzY0NjcsMzY0NjksMzY0NzEsMzY0NzIsMzY0NzMsMzY0NzQsMzY0NzUsMzY0NzcsMzY0NzgsMzY0ODAsMzY0ODIsMzY0ODMsMzY0ODQsMzY0ODYsMzY0ODgsMzY0ODksMzY0OTAsMzY0OTEsMzY0OTIsMzY0OTMsMzY0OTQsMzY0OTcsMzY0OTgsMzY0OTksMzY1MDEsMzY1MDIsMzY1MDMsMzY1MDQsMzY1MDUsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTEsMzY1MTIsMzY1MTMsMzY1MTQsMzY1MTUsMzY1MTYsMzY1MTcsMzY1MTgsMzY1MTksMzY1MjAsMzY1MjEsMzY1MjIsMzY1MjUsMzY1MjYsMzY1MjgsMzY1MjksMzY1MzEsMzY1MzIsMzY1MzMsMzY1MzQsMzY1MzUsMzY1MzYsMzY1MzcsMzY1MzksMzY1NDAsMzY1NDEsMzY1NDIsMzY1NDMsMzY1NDQsMzY1NDUsMzY1NDYsMzY1NDcsMzY1NDgsMzY1NDksMzY1NTAsMzY1NTEsMzY1NTIsMzY1NTMsMzY1NTQsMzY1NTUsMzY1NTYsMzY1NTcsMzY1NTksMzY1NjAsMzY1NjEsMzY1NjIsMzY1NjMsMzY1NjQsMzY1NjUsMzY1NjYsMzY1NjcsMzY1NjgsMzY1NjksMzY1NzAsMzY1NzEsMzY1NzIsMzY1NzMsMzY1NzQsMzY1NzUsMzY1NzYsMzY1NzcsMzY1NzgsMzY1NzksMzY1ODAsMjI1MzksMjI1NDEsMjI1MjUsMjI1MDksMjI1MjgsMjI1NTgsMjI1NTMsMjI1OTYsMjI1NjAsMjI2MjksMjI2MzYsMjI2NTcsMjI2NjUsMjI2ODIsMjI2NTYsMzkzMzYsNDA3MjksMjUwODcsMzM0MDEsMzM0MDUsMzM0MDcsMzM0MjMsMzM0MTgsMzM0NDgsMzM0MTIsMzM0MjIsMzM0MjUsMzM0MzEsMzM0MzMsMzM0NTEsMzM0NjQsMzM0NzAsMzM0NTYsMzM0ODAsMzM0ODIsMzM1MDcsMzM0MzIsMzM0NjMsMzM0NTQsMzM0ODMsMzM0ODQsMzM0NzMsMzM0NDksMzM0NjAsMzM0NDEsMzM0NTAsMzM0MzksMzM0NzYsMzM0ODYsMzM0NDQsMzM1MDUsMzM1NDUsMzM1MjcsMzM1MDgsMzM1NTEsMzM1NDMsMzM1MDAsMzM1MjQsMzM0OTAsMzM0OTYsMzM1NDgsMzM1MzEsMzM0OTEsMzM1NTMsMzM1NjIsMzM1NDIsMzM1NTYsMzM1NTcsMzM1MDQsMzM0OTMsMzM1NjQsMzM2MTcsMzM2MjcsMzM2MjgsMzM1NDQsMzM2ODIsMzM1OTYsMzM1ODgsMzM1ODUsMzM2OTEsMzM2MzAsMzM1ODMsMzM2MTUsMzM2MDcsMzM2MDMsMzM2MzEsMzM2MDAsMzM1NTksMzM2MzIsMzM1ODEsMzM1OTQsMzM1ODcsMzM2MzgsMzM2MzcsMzY1ODEsMzY1ODIsMzY1ODMsMzY1ODQsMzY1ODUsMzY1ODYsMzY1ODcsMzY1ODgsMzY1ODksMzY1OTAsMzY1OTEsMzY1OTIsMzY1OTMsMzY1OTQsMzY1OTUsMzY1OTYsMzY1OTcsMzY1OTgsMzY1OTksMzY2MDAsMzY2MDEsMzY2MDIsMzY2MDMsMzY2MDQsMzY2MDUsMzY2MDYsMzY2MDcsMzY2MDgsMzY2MDksMzY2MTAsMzY2MTEsMzY2MTIsMzY2MTMsMzY2MTQsMzY2MTUsMzY2MTYsMzY2MTcsMzY2MTgsMzY2MTksMzY2MjAsMzY2MjEsMzY2MjIsMzY2MjMsMzY2MjQsMzY2MjUsMzY2MjYsMzY2MjcsMzY2MjgsMzY2MjksMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzMsMzY2MzQsMzY2MzUsMzY2MzYsMzY2MzcsMzY2MzgsMzY2MzksMzY2NDAsMzY2NDEsMzY2NDIsMzY2NDMsMzY2NDQsMzY2NDUsMzY2NDYsMzY2NDcsMzY2NDgsMzY2NDksMzY2NTAsMzY2NTEsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NTUsMzY2NTYsMzY2NTcsMzY2NTgsMzY2NTksMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjQsMzY2NjUsMzY2NjYsMzY2NjcsMzY2NjgsMzY2NjksMzY2NzAsMzY2NzEsMzY2NzIsMzY2NzMsMzY2NzQsMzY2NzUsMzY2NzYsMzM2NDAsMzM1NjMsMzM2NDEsMzM2NDQsMzM2NDIsMzM2NDUsMzM2NDYsMzM3MTIsMzM2NTYsMzM3MTUsMzM3MTYsMzM2OTYsMzM3MDYsMzM2ODMsMzM2OTIsMzM2NjksMzM2NjAsMzM3MTgsMzM3MDUsMzM2NjEsMzM3MjAsMzM2NTksMzM2ODgsMzM2OTQsMzM3MDQsMzM3MjIsMzM3MjQsMzM3MjksMzM3OTMsMzM3NjUsMzM3NTIsMjI1MzUsMzM4MTYsMzM4MDMsMzM3NTcsMzM3ODksMzM3NTAsMzM4MjAsMzM4NDgsMzM4MDksMzM3OTgsMzM3NDgsMzM3NTksMzM4MDcsMzM3OTUsMzM3ODQsMzM3ODUsMzM3NzAsMzM3MzMsMzM3MjgsMzM4MzAsMzM3NzYsMzM3NjEsMzM4ODQsMzM4NzMsMzM4ODIsMzM4ODEsMzM5MDcsMzM5MjcsMzM5MjgsMzM5MTQsMzM5MjksMzM5MTIsMzM4NTIsMzM4NjIsMzM4OTcsMzM5MTAsMzM5MzIsMzM5MzQsMzM4NDEsMzM5MDEsMzM5ODUsMzM5OTcsMzQwMDAsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQwMTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQwMjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQxMDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUsMzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEsMzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUsMzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIsMzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDksMzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQxMzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQxMTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgsMzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYsMzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMsMjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUzNzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2NjksMjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIsMjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAsMzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYsMzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIsMzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIsMzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcwMDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcwMTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcwMjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQsMjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUsMjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEsMjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgsMjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgsMjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2NjgsMjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcwNjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEsMzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAsMzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDksMzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcxMzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcxMzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIsMzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgsMzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUsMzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIsMjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODksMjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUsMjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIwOTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIxMDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIxNDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzksMjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMsMjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMsMzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcyNDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcyNTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcyNjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYsMzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMsMzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzczMjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzczMzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzczNDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQsMjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQsMjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQsMjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUsMjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYsMjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcsMjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzczNTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMsMzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0MjgsMzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0MzksMzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMzMDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAsMzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMsMzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMsMjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgsMjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDksMzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUsMzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMsMjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYsMjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIsMjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgzODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEsMjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMsMjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAsMjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUsMzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2MjksMzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQsMzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAsMzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgwNjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjgwMDAsMjgwMjgsMjgwMDMsMjgxODYsMjgxMDMsMjgxMDEsMjgxMjYsMjgxNzQsMjgwOTUsMjgxMjgsMjgxNzcsMjgxMzQsMjgxMjUsMjgxMjEsMjgxODIsMjgwNzUsMjgxNzIsMjgwNzgsMjgyMDMsMjgyNzAsMjgyMzgsMjgyNjcsMjgzMzgsMjgyNTUsMjgyOTQsMjgyNDMsMjgyNDQsMjgyMTAsMjgxOTcsMjgyMjgsMjgzODMsMjgzMzcsMjgzMTIsMjgzODQsMjg0NjEsMjgzODYsMjgzMjUsMjgzMjcsMjgzNDksMjgzNDcsMjgzNDMsMjgzNzUsMjgzNDAsMjgzNjcsMjgzMDMsMjgzNTQsMjgzMTksMjg1MTQsMjg0ODYsMjg0ODcsMjg0NTIsMjg0MzcsMjg0MDksMjg0NjMsMjg0NzAsMjg0OTEsMjg1MzIsMjg0NTgsMjg0MjUsMjg0NTcsMjg1NTMsMjg1NTcsMjg1NTYsMjg1MzYsMjg1MzAsMjg1NDAsMjg1MzgsMjg2MjUsMzc2NDIsMzc2NDMsMzc2NDQsMzc2NDUsMzc2NDYsMzc2NDcsMzc2NDgsMzc2NDksMzc2NTAsMzc2NTEsMzc2NTIsMzc2NTMsMzc2NTQsMzc2NTUsMzc2NTYsMzc2NTcsMzc2NTgsMzc2NTksMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjQsMzc2NjUsMzc2NjYsMzc2NjcsMzc2NjgsMzc2NjksMzc2NzAsMzc2NzEsMzc2NzIsMzc2NzMsMzc2NzQsMzc2NzUsMzc2NzYsMzc2NzcsMzc2NzgsMzc2NzksMzc2ODAsMzc2ODEsMzc2ODIsMzc2ODMsMzc2ODQsMzc2ODUsMzc2ODYsMzc2ODcsMzc2ODgsMzc2ODksMzc2OTAsMzc2OTEsMzc2OTIsMzc2OTMsMzc2OTUsMzc2OTYsMzc2OTcsMzc2OTgsMzc2OTksMzc3MDAsMzc3MDEsMzc3MDIsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MDYsMzc3MDcsMzc3MDgsMzc3MDksMzc3MTAsMzc3MTEsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTUsMzc3MTYsMzc3MTcsMzc3MTgsMzc3MTksMzc3MjAsMzc3MjEsMzc3MjIsMzc3MjMsMzc3MjQsMzc3MjUsMzc3MjYsMzc3MjcsMzc3MjgsMzc3MjksMzc3MzAsMzc3MzEsMzc3MzIsMzc3MzMsMzc3MzQsMzc3MzUsMzc3MzYsMzc3MzcsMzc3MzksMjg2MTcsMjg1ODMsMjg2MDEsMjg1OTgsMjg2MTAsMjg2NDEsMjg2NTQsMjg2MzgsMjg2NDAsMjg2NTUsMjg2OTgsMjg3MDcsMjg2OTksMjg3MjksMjg3MjUsMjg3NTEsMjg3NjYsMjM0MjQsMjM0MjgsMjM0NDUsMjM0NDMsMjM0NjEsMjM0ODAsMjk5OTksMzk1ODIsMjU2NTIsMjM1MjQsMjM1MzQsMzUxMjAsMjM1MzYsMzY0MjMsMzU1OTEsMzY3OTAsMzY4MTksMzY4MjEsMzY4MzcsMzY4NDYsMzY4MzYsMzY4NDEsMzY4MzgsMzY4NTEsMzY4NDAsMzY4NjksMzY4NjgsMzY4NzUsMzY5MDIsMzY4ODEsMzY4NzcsMzY4ODYsMzY4OTcsMzY5MTcsMzY5MTgsMzY5MDksMzY5MTEsMzY5MzIsMzY5NDUsMzY5NDYsMzY5NDQsMzY5NjgsMzY5NTIsMzY5NjIsMzY5NTUsMjYyOTcsMzY5ODAsMzY5ODksMzY5OTQsMzcwMDAsMzY5OTUsMzcwMDMsMjQ0MDAsMjQ0MDcsMjQ0MDYsMjQ0MDgsMjM2MTEsMjE2NzUsMjM2MzIsMjM2NDEsMjM0MDksMjM2NTEsMjM2NTQsMzI3MDAsMjQzNjIsMjQzNjEsMjQzNjUsMzMzOTYsMjQzODAsMzk3MzksMjM2NjIsMjI5MTMsMjI5MTUsMjI5MjUsMjI5NTMsMjI5NTQsMjI5NDcsMzc3NDAsMzc3NDEsMzc3NDIsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDYsMzc3NDcsMzc3NDgsMzc3NDksMzc3NTAsMzc3NTEsMzc3NTIsMzc3NTMsMzc3NTQsMzc3NTUsMzc3NTYsMzc3NTcsMzc3NTgsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjMsMzc3NjQsMzc3NjUsMzc3NjYsMzc3NjcsMzc3NjgsMzc3NjksMzc3NzAsMzc3NzEsMzc3NzIsMzc3NzMsMzc3NzQsMzc3NzYsMzc3NzcsMzc3NzgsMzc3NzksMzc3ODAsMzc3ODEsMzc3ODIsMzc3ODMsMzc3ODQsMzc3ODUsMzc3ODYsMzc3ODcsMzc3ODgsMzc3ODksMzc3OTAsMzc3OTEsMzc3OTIsMzc3OTMsMzc3OTQsMzc3OTUsMzc3OTYsMzc3OTcsMzc3OTgsMzc3OTksMzc4MDAsMzc4MDEsMzc4MDIsMzc4MDMsMzc4MDQsMzc4MDUsMzc4MDYsMzc4MDcsMzc4MDgsMzc4MDksMzc4MTAsMzc4MTEsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTUsMzc4MTYsMzc4MTcsMzc4MTgsMzc4MTksMzc4MjAsMzc4MjEsMzc4MjIsMzc4MjMsMzc4MjQsMzc4MjUsMzc4MjYsMzc4MjcsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzIsMzc4MzMsMzc4MzUsMzc4MzYsMzc4MzcsMjI5MzUsMjI5ODYsMjI5NTUsMjI5NDIsMjI5NDgsMjI5OTQsMjI5NjIsMjI5NTksMjI5OTksMjI5NzQsMjMwNDUsMjMwNDYsMjMwMDUsMjMwNDgsMjMwMTEsMjMwMDAsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIsMjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMsMjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQsMjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMyNjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMzNTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAsMzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAsMzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODksMzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUsMzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAsMzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYsMzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAsMzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0MjksMzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcsMzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYsMzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIsMzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQsMzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkwMzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYsMzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIsMzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgsMzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDAsMzgwMDEsMzgwMDIsMzgwMDMsMzgwMDQsMzgwMDUsMzgwMDYsMzgwMDcsMzgwMDgsMzgwMDksMzgwMTAsMzgwMTEsMzgwMTIsMzgwMTMsMzgwMTQsMzgwMTUsMzgwMTYsMzgwMTcsMzgwMTgsMzgwMTksMzgwMjAsMzgwMzMsMzgwMzgsMzgwNDAsMzgwODcsMzgwOTUsMzgwOTksMzgxMDAsMzgxMDYsMzgxMTgsMzgxMzksMzgxNzIsMzgxNzYsMjk3MjMsMjk3MjIsMjk3NjEsMjk3ODgsMjk3ODMsMjk3ODEsMjk3ODUsMjk4MTUsMjk4MDUsMjk4MjIsMjk4NTIsMjk4MzgsMjk4MjQsMjk4MjUsMjk4MzEsMjk4MzUsMjk4NTQsMjk4NjQsMjk4NjUsMjk4NDAsMjk4NjMsMjk5MDYsMjk4ODIsMzg4OTAsMzg4OTEsMzg4OTIsMjY0NDQsMjY0NTEsMjY0NjIsMjY0NDAsMjY0NzMsMjY1MzMsMjY1MDMsMjY0NzQsMjY0ODMsMjY1MjAsMjY1MzUsMjY0ODUsMjY1MzYsMjY1MjYsMjY1NDEsMjY1MDcsMjY0ODcsMjY0OTIsMjY2MDgsMjY2MzMsMjY1ODQsMjY2MzQsMjY2MDEsMjY1NDQsMjY2MzYsMjY1ODUsMjY1NDksMjY1ODYsMjY1NDcsMjY1ODksMjY2MjQsMjY1NjMsMjY1NTIsMjY1OTQsMjY2MzgsMjY1NjEsMjY2MjEsMjY2NzQsMjY2NzUsMjY3MjAsMjY3MjEsMjY3MDIsMjY3MjIsMjY2OTIsMjY3MjQsMjY3NTUsMjY2NTMsMjY3MDksMjY3MjYsMjY2ODksMjY3MjcsMjY2ODgsMjY2ODYsMjY2OTgsMjY2OTcsMjY2NjUsMjY4MDUsMjY3NjcsMjY3NDAsMjY3NDMsMjY3NzEsMjY3MzEsMjY4MTgsMjY5OTAsMjY4NzYsMjY5MTEsMjY5MTIsMjY4NzMsMzgxODMsMzgxOTUsMzgyMDUsMzgyMTEsMzgyMTYsMzgyMTksMzgyMjksMzgyMzQsMzgyNDAsMzgyNTQsMzgyNjAsMzgyNjEsMzgyNjMsMzgyNjQsMzgyNjUsMzgyNjYsMzgyNjcsMzgyNjgsMzgyNjksMzgyNzAsMzgyNzIsMzgyNzMsMzgyNzQsMzgyNzUsMzgyNzYsMzgyNzcsMzgyNzgsMzgyNzksMzgyODAsMzgyODEsMzgyODIsMzgyODMsMzgyODQsMzgyODUsMzgyODYsMzgyODcsMzgyODgsMzgyODksMzgyOTAsMzgyOTEsMzgyOTIsMzgyOTMsMzgyOTQsMzgyOTUsMzgyOTYsMzgyOTcsMzgyOTgsMzgyOTksMzgzMDAsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDQsMzgzMDUsMzgzMDYsMzgzMDcsMzgzMDgsMzgzMDksMzgzMTAsMzgzMTEsMzgzMTIsMzgzMTMsMzgzMTQsMzgzMTUsMzgzMTYsMzgzMTcsMzgzMTgsMzgzMTksMzgzMjAsMzgzMjEsMzgzMjIsMzgzMjMsMzgzMjQsMzgzMjUsMzgzMjYsMzgzMjcsMzgzMjgsMzgzMjksMzgzMzAsMzgzMzEsMzgzMzIsMzgzMzMsMzgzMzQsMzgzMzUsMzgzMzYsMzgzMzcsMzgzMzgsMzgzMzksMzgzNDAsMzgzNDEsMzgzNDIsMzgzNDMsMzgzNDQsMzgzNDUsMzgzNDYsMzgzNDcsMjY5MTYsMjY4NjQsMjY4OTEsMjY4ODEsMjY5NjcsMjY4NTEsMjY4OTYsMjY5OTMsMjY5MzcsMjY5NzYsMjY5NDYsMjY5NzMsMjcwMTIsMjY5ODcsMjcwMDgsMjcwMzIsMjcwMDAsMjY5MzIsMjcwODQsMjcwMTUsMjcwMTYsMjcwODYsMjcwMTcsMjY5ODIsMjY5NzksMjcwMDEsMjcwMzUsMjcwNDcsMjcwNjcsMjcwNTEsMjcwNTMsMjcwOTIsMjcwNTcsMjcwNzMsMjcwODIsMjcxMDMsMjcwMjksMjcxMDQsMjcwMjEsMjcxMzUsMjcxODMsMjcxMTcsMjcxNTksMjcxNjAsMjcyMzcsMjcxMjIsMjcyMDQsMjcxOTgsMjcyOTYsMjcyMTYsMjcyMjcsMjcxODksMjcyNzgsMjcyNTcsMjcxOTcsMjcxNzYsMjcyMjQsMjcyNjAsMjcyODEsMjcyODAsMjczMDUsMjcyODcsMjczMDcsMjk0OTUsMjk1MjIsMjc1MjEsMjc1MjIsMjc1MjcsMjc1MjQsMjc1MzgsMjc1MzksMjc1MzMsMjc1NDYsMjc1NDcsMjc1NTMsMjc1NjIsMzY3MTUsMzY3MTcsMzY3MjEsMzY3MjIsMzY3MjMsMzY3MjUsMzY3MjYsMzY3MjgsMzY3MjcsMzY3MjksMzY3MzAsMzY3MzIsMzY3MzQsMzY3MzcsMzY3MzgsMzY3NDAsMzY3NDMsMzY3NDcsMzgzNDgsMzgzNDksMzgzNTAsMzgzNTEsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNTYsMzgzNTcsMzgzNTgsMzgzNTksMzgzNjAsMzgzNjEsMzgzNjIsMzgzNjMsMzgzNjQsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNjksMzgzNzAsMzgzNzEsMzgzNzIsMzgzNzMsMzgzNzQsMzgzNzUsMzgzODAsMzgzOTksMzg0MDcsMzg0MTksMzg0MjQsMzg0MjcsMzg0MzAsMzg0MzIsMzg0MzUsMzg0MzYsMzg0MzcsMzg0MzgsMzg0MzksMzg0NDAsMzg0NDEsMzg0NDMsMzg0NDQsMzg0NDUsMzg0NDcsMzg0NDgsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjIsMzg0NjUsMzg0NjcsMzg0NzQsMzg0NzgsMzg0NzksMzg0ODEsMzg0ODIsMzg0ODMsMzg0ODYsMzg0ODcsMzg0ODgsMzg0ODksMzg0OTAsMzg0OTIsMzg0OTMsMzg0OTQsMzg0OTYsMzg0OTksMzg1MDEsMzg1MDIsMzg1MDcsMzg1MDksMzg1MTAsMzg1MTEsMzg1MTIsMzg1MTMsMzg1MTUsMzg1MjAsMzg1MjEsMzg1MjIsMzg1MjMsMzg1MjQsMzg1MjUsMzg1MjYsMzg1MjcsMzg1MjgsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzUsMzg1MzcsMzg1MzgsMzY3NDksMzY3NTAsMzY3NTEsMzY3NjAsMzY3NjIsMzY1NTgsMjUwOTksMjUxMTEsMjUxMTUsMjUxMTksMjUxMjIsMjUxMjEsMjUxMjUsMjUxMjQsMjUxMzIsMzMyNTUsMjk5MzUsMjk5NDAsMjk5NTEsMjk5NjcsMjk5NjksMjk5NzEsMjU5MDgsMjYwOTQsMjYwOTUsMjYwOTYsMjYxMjIsMjYxMzcsMjY0ODIsMjYxMTUsMjYxMzMsMjYxMTIsMjg4MDUsMjYzNTksMjYxNDEsMjYxNjQsMjYxNjEsMjYxNjYsMjYxNjUsMzI3NzQsMjYyMDcsMjYxOTYsMjYxNzcsMjYxOTEsMjYxOTgsMjYyMDksMjYxOTksMjYyMzEsMjYyNDQsMjYyNTIsMjYyNzksMjYyNjksMjYzMDIsMjYzMzEsMjYzMzIsMjYzNDIsMjYzNDUsMzYxNDYsMzYxNDcsMzYxNTAsMzYxNTUsMzYxNTcsMzYxNjAsMzYxNjUsMzYxNjYsMzYxNjgsMzYxNjksMzYxNjcsMzYxNzMsMzYxODEsMzYxODUsMzUyNzEsMzUyNzQsMzUyNzUsMzUyNzYsMzUyNzgsMzUyNzksMzUyODAsMzUyODEsMjkyOTQsMjkzNDMsMjkyNzcsMjkyODYsMjkyOTUsMjkzMTAsMjkzMTEsMjkzMTYsMjkzMjMsMjkzMjUsMjkzMjcsMjkzMzAsMjUzNTIsMjUzOTQsMjU1MjAsMzg1NDAsMzg1NDIsMzg1NDUsMzg1NDYsMzg1NDcsMzg1NDksMzg1NTAsMzg1NTQsMzg1NTUsMzg1NTcsMzg1NTgsMzg1NTksMzg1NjAsMzg1NjEsMzg1NjIsMzg1NjMsMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjgsMzg1NjksMzg1NzAsMzg1NzEsMzg1NzIsMzg1NzMsMzg1NzQsMzg1NzUsMzg1NzcsMzg1NzgsMzg1ODAsMzg1ODEsMzg1ODMsMzg1ODQsMzg1ODYsMzg1ODcsMzg1OTEsMzg1OTQsMzg1OTUsMzg2MDAsMzg2MDIsMzg2MDMsMzg2MDgsMzg2MDksMzg2MTEsMzg2MTIsMzg2MTQsMzg2MTUsMzg2MTYsMzg2MTcsMzg2MTgsMzg2MTksMzg2MjAsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MjUsMzg2MjYsMzg2MjcsMzg2MjgsMzg2MjksMzg2MzAsMzg2MzEsMzg2MzUsMzg2MzYsMzg2MzcsMzg2MzgsMzg2NDAsMzg2NDEsMzg2NDIsMzg2NDQsMzg2NDUsMzg2NDgsMzg2NTAsMzg2NTEsMzg2NTIsMzg2NTMsMzg2NTUsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjYsMzg2NjcsMzg2NjgsMzg2NzIsMzg2NzMsMzg2NzQsMzg2NzYsMzg2NzcsMzg2NzksMzg2ODAsMzg2ODEsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODcsMzg2ODgsMjU2NjMsMjU4MTYsMzI3NzIsMjc2MjYsMjc2MzUsMjc2NDUsMjc2MzcsMjc2NDEsMjc2NTMsMjc2NTUsMjc2NTQsMjc2NjEsMjc2NjksMjc2NzIsMjc2NzMsMjc2NzQsMjc2ODEsMjc2ODksMjc2ODQsMjc2OTAsMjc2OTgsMjU5MDksMjU5NDEsMjU5NjMsMjkyNjEsMjkyNjYsMjkyNzAsMjkyMzIsMzQ0MDIsMjEwMTQsMzI5MjcsMzI5MjQsMzI5MTUsMzI5NTYsMjYzNzgsMzI5NTcsMzI5NDUsMzI5MzksMzI5NDEsMzI5NDgsMzI5NTEsMzI5OTksMzMwMDAsMzMwMDEsMzMwMDIsMzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYzODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMwNjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMxNDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcsMzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQsMzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEsMzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAsMzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3NjcsMzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEsMzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAsMjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjYwMDAsNDA3ODUsMjYwMDMsMjYwNDQsMjYwNTQsMjYwNTIsMjYwNTEsMjYwNjAsMjYwNjIsMjYwNjYsMjYwNzAsMjg4MDAsMjg4MjgsMjg4MjIsMjg4MjksMjg4NTksMjg4NjQsMjg4NTUsMjg4NDMsMjg4NDksMjg5MDQsMjg4NzQsMjg5NDQsMjg5NDcsMjg5NTAsMjg5NzUsMjg5NzcsMjkwNDMsMjkwMjAsMjkwMzIsMjg5OTcsMjkwNDIsMjkwMDIsMjkwNDgsMjkwNTAsMjkwODAsMjkxMDcsMjkxMDksMjkwOTYsMjkwODgsMjkxNTIsMjkxNDAsMjkxNTksMjkxNzcsMjkyMTMsMjkyMjQsMjg3ODAsMjg5NTIsMjkwMzAsMjkxMTMsMjUxNTAsMjUxNDksMjUxNTUsMjUxNjAsMjUxNjEsMzEwMzUsMzEwNDAsMzEwNDYsMzEwNDksMzEwNjcsMzEwNjgsMzEwNTksMzEwNjYsMzEwNzQsMzEwNjMsMzEwNzIsMzEwODcsMzEwNzksMzEwOTgsMzExMDksMzExMTQsMzExMzAsMzExNDMsMzExNTUsMjQ1MjksMjQ1MjgsMzg4MTQsMzg4MTUsMzg4MTcsMzg4MTgsMzg4MjAsMzg4MjEsMzg4MjIsMzg4MjMsMzg4MjQsMzg4MjUsMzg4MjYsMzg4MjgsMzg4MzAsMzg4MzIsMzg4MzMsMzg4MzUsMzg4MzcsMzg4MzgsMzg4MzksMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDMsMzg4NDQsMzg4NDUsMzg4NDYsMzg4NDcsMzg4NDgsMzg4NDksMzg4NTAsMzg4NTEsMzg4NTIsMzg4NTMsMzg4NTQsMzg4NTUsMzg4NTYsMzg4NTcsMzg4NTgsMzg4NTksMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjMsMzg4NjQsMzg4NjUsMzg4NjYsMzg4NjcsMzg4NjgsMzg4NjksMzg4NzAsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzQsMzg4NzUsMzg4NzYsMzg4NzcsMzg4NzgsMzg4NzksMzg4ODAsMzg4ODEsMzg4ODIsMzg4ODMsMzg4ODQsMzg4ODUsMzg4ODgsMzg4OTQsMzg4OTUsMzg4OTYsMzg4OTcsMzg4OTgsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDUsMzg5MDYsMzg5MDcsMzg5MDgsMzg5MDksMzg5MTAsMzg5MTEsMzg5MTIsMzg5MTMsMzg5MTQsMzg5MTUsMzg5MTYsMzg5MTcsMzg5MTgsMzg5MTksMzg5MjAsMzg5MjEsMzg5MjIsMzg5MjMsMzg5MjQsMzg5MjUsMzg5MjYsMjQ2MzYsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ2NjUsMjQ2NzUsMjQ3NDcsMjQ4MzgsMjQ4NDUsMjQ5MjUsMjUwMDEsMjQ5ODksMjUwMzUsMjUwNDEsMjUwOTQsMzI4OTYsMzI4OTUsMjc3OTUsMjc4OTQsMjgxNTYsMzA3MTAsMzA3MTIsMzA3MjAsMzA3MjksMzA3NDMsMzA3NDQsMzA3MzcsMjYwMjcsMzA3NjUsMzA3NDgsMzA3NDksMzA3NzcsMzA3NzgsMzA3NzksMzA3NTEsMzA3ODAsMzA3NTcsMzA3NjQsMzA3NTUsMzA3NjEsMzA3OTgsMzA4MjksMzA4MDYsMzA4MDcsMzA3NTgsMzA4MDAsMzA3OTEsMzA3OTYsMzA4MjYsMzA4NzUsMzA4NjcsMzA4NzQsMzA4NTUsMzA4NzYsMzA4ODEsMzA4ODMsMzA4OTgsMzA5MDUsMzA4ODUsMzA5MzIsMzA5MzcsMzA5MjEsMzA5NTYsMzA5NjIsMzA5ODEsMzA5NjQsMzA5OTUsMzEwMTIsMzEwMDYsMzEwMjgsNDA4NTksNDA2OTcsNDA2OTksNDA3MDAsMzA0NDksMzA0NjgsMzA0NzcsMzA0NTcsMzA0NzEsMzA0NzIsMzA0OTAsMzA0OTgsMzA0ODksMzA1MDksMzA1MDIsMzA1MTcsMzA1MjAsMzA1NDQsMzA1NDUsMzA1MzUsMzA1MzEsMzA1NTQsMzA1NjgsMzg5MjcsMzg5MjgsMzg5MjksMzg5MzAsMzg5MzEsMzg5MzIsMzg5MzMsMzg5MzQsMzg5MzUsMzg5MzYsMzg5MzcsMzg5MzgsMzg5MzksMzg5NDAsMzg5NDEsMzg5NDIsMzg5NDMsMzg5NDQsMzg5NDUsMzg5NDYsMzg5NDcsMzg5NDgsMzg5NDksMzg5NTAsMzg5NTEsMzg5NTIsMzg5NTMsMzg5NTQsMzg5NTUsMzg5NTYsMzg5NTcsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjEsMzg5NjIsMzg5NjMsMzg5NjQsMzg5NjUsMzg5NjYsMzg5NjcsMzg5NjgsMzg5NjksMzg5NzAsMzg5NzEsMzg5NzIsMzg5NzMsMzg5NzQsMzg5NzUsMzg5NzYsMzg5NzcsMzg5NzgsMzg5NzksMzg5ODAsMzg5ODEsMzg5ODIsMzg5ODMsMzg5ODQsMzg5ODUsMzg5ODYsMzg5ODcsMzg5ODgsMzg5ODksMzg5OTAsMzg5OTEsMzg5OTIsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTYsMzg5OTcsMzg5OTgsMzg5OTksMzkwMDAsMzkwMDEsMzkwMDIsMzkwMDMsMzkwMDQsMzkwMDUsMzkwMDYsMzkwMDcsMzkwMDgsMzkwMDksMzkwMTAsMzkwMTEsMzkwMTIsMzkwMTMsMzkwMTQsMzkwMTUsMzkwMTYsMzkwMTcsMzkwMTgsMzkwMTksMzkwMjAsMzkwMjEsMzkwMjIsMzA1NjIsMzA1NjUsMzA1OTEsMzA2MDUsMzA1ODksMzA1OTIsMzA2MDQsMzA2MDksMzA2MjMsMzA2MjQsMzA2NDAsMzA2NDUsMzA2NTMsMzAwMTAsMzAwMTYsMzAwMzAsMzAwMjcsMzAwMjQsMzAwNDMsMzAwNjYsMzAwNzMsMzAwODMsMzI2MDAsMzI2MDksMzI2MDcsMzU0MDAsMzI2MTYsMzI2MjgsMzI2MjUsMzI2MzMsMzI2NDEsMzI2MzgsMzA0MTMsMzA0MzcsMzQ4NjYsMzgwMjEsMzgwMjIsMzgwMjMsMzgwMjcsMzgwMjYsMzgwMjgsMzgwMjksMzgwMzEsMzgwMzIsMzgwMzYsMzgwMzksMzgwMzcsMzgwNDIsMzgwNDMsMzgwNDQsMzgwNTEsMzgwNTIsMzgwNTksMzgwNTgsMzgwNjEsMzgwNjAsMzgwNjMsMzgwNjQsMzgwNjYsMzgwNjgsMzgwNzAsMzgwNzEsMzgwNzIsMzgwNzMsMzgwNzQsMzgwNzYsMzgwNzcsMzgwNzksMzgwODQsMzgwODgsMzgwODksMzgwOTAsMzgwOTEsMzgwOTIsMzgwOTMsMzgwOTQsMzgwOTYsMzgwOTcsMzgwOTgsMzgxMDEsMzgxMDIsMzgxMDMsMzgxMDUsMzgxMDQsMzgxMDcsMzgxMTAsMzgxMTEsMzgxMTIsMzgxMTQsMzgxMTYsMzgxMTcsMzgxMTksMzgxMjAsMzgxMjIsMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjYsMzkwMjcsMzkwMjgsMzkwNTEsMzkwNTQsMzkwNTgsMzkwNjEsMzkwNjUsMzkwNzUsMzkwODAsMzkwODEsMzkwODIsMzkwODMsMzkwODQsMzkwODUsMzkwODYsMzkwODcsMzkwODgsMzkwODksMzkwOTAsMzkwOTEsMzkwOTIsMzkwOTMsMzkwOTQsMzkwOTUsMzkwOTYsMzkwOTcsMzkwOTgsMzkwOTksMzkxMDAsMzkxMDEsMzkxMDIsMzkxMDMsMzkxMDQsMzkxMDUsMzkxMDYsMzkxMDcsMzkxMDgsMzkxMDksMzkxMTAsMzkxMTEsMzkxMTIsMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkxMTcsMzkxMTksMzkxMjAsMzkxMjQsMzkxMjYsMzkxMjcsMzkxMzEsMzkxMzIsMzkxMzMsMzkxMzYsMzkxMzcsMzkxMzgsMzkxMzksMzkxNDAsMzkxNDEsMzkxNDIsMzkxNDUsMzkxNDYsMzkxNDcsMzkxNDgsMzkxNDksMzkxNTAsMzkxNTEsMzkxNTIsMzkxNTMsMzkxNTQsMzkxNTUsMzkxNTYsMzkxNTcsMzkxNTgsMzkxNTksMzkxNjAsMzkxNjEsMzkxNjIsMzkxNjMsMzkxNjQsMzkxNjUsMzkxNjYsMzkxNjcsMzkxNjgsMzkxNjksMzkxNzAsMzkxNzEsMzkxNzIsMzkxNzMsMzkxNzQsMzkxNzUsMzgxMjEsMzgxMjMsMzgxMjYsMzgxMjcsMzgxMzEsMzgxMzIsMzgxMzMsMzgxMzUsMzgxMzcsMzgxNDAsMzgxNDEsMzgxNDMsMzgxNDcsMzgxNDYsMzgxNTAsMzgxNTEsMzgxNTMsMzgxNTQsMzgxNTcsMzgxNTgsMzgxNTksMzgxNjIsMzgxNjMsMzgxNjQsMzgxNjUsMzgxNjYsMzgxNjgsMzgxNzEsMzgxNzMsMzgxNzQsMzgxNzUsMzgxNzgsMzgxODYsMzgxODcsMzgxODUsMzgxODgsMzgxOTMsMzgxOTQsMzgxOTYsMzgxOTgsMzgxOTksMzgyMDAsMzgyMDQsMzgyMDYsMzgyMDcsMzgyMTAsMzgxOTcsMzgyMTIsMzgyMTMsMzgyMTQsMzgyMTcsMzgyMjAsMzgyMjIsMzgyMjMsMzgyMjYsMzgyMjcsMzgyMjgsMzgyMzAsMzgyMzEsMzgyMzIsMzgyMzMsMzgyMzUsMzgyMzgsMzgyMzksMzgyMzcsMzgyNDEsMzgyNDIsMzgyNDQsMzgyNDUsMzgyNDYsMzgyNDcsMzgyNDgsMzgyNDksMzgyNTAsMzgyNTEsMzgyNTIsMzgyNTUsMzgyNTcsMzgyNTgsMzgyNTksMzgyMDIsMzA2OTUsMzA3MDAsMzg2MDEsMzExODksMzEyMTMsMzEyMDMsMzEyMTEsMzEyMzgsMjM4NzksMzEyMzUsMzEyMzQsMzEyNjIsMzEyNTIsMzkxNzYsMzkxNzcsMzkxNzgsMzkxNzksMzkxODAsMzkxODIsMzkxODMsMzkxODUsMzkxODYsMzkxODcsMzkxODgsMzkxODksMzkxOTAsMzkxOTEsMzkxOTIsMzkxOTMsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTcsMzkxOTgsMzkxOTksMzkyMDAsMzkyMDEsMzkyMDIsMzkyMDMsMzkyMDQsMzkyMDUsMzkyMDYsMzkyMDcsMzkyMDgsMzkyMDksMzkyMTAsMzkyMTEsMzkyMTIsMzkyMTMsMzkyMTUsMzkyMTYsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjIsMzkyMjMsMzkyMjQsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMjksMzkyMzAsMzkyMzEsMzkyMzIsMzkyMzMsMzkyMzQsMzkyMzUsMzkyMzYsMzkyMzcsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDEsMzkyNDIsMzkyNDMsMzkyNDQsMzkyNDUsMzkyNDYsMzkyNDcsMzkyNDgsMzkyNDksMzkyNTAsMzkyNTEsMzkyNTQsMzkyNTUsMzkyNTYsMzkyNTcsMzkyNTgsMzkyNTksMzkyNjAsMzkyNjEsMzkyNjIsMzkyNjMsMzkyNjQsMzkyNjUsMzkyNjYsMzkyNjgsMzkyNzAsMzkyODMsMzkyODgsMzkyODksMzkyOTEsMzkyOTQsMzkyOTgsMzkyOTksMzkzMDUsMzEyODksMzEyODcsMzEzMTMsNDA2NTUsMzkzMzMsMzEzNDQsMzAzNDQsMzAzNTAsMzAzNTUsMzAzNjEsMzAzNzIsMjk5MTgsMjk5MjAsMjk5OTYsNDA0ODAsNDA0ODIsNDA0ODgsNDA0ODksNDA0OTAsNDA0OTEsNDA0OTIsNDA0OTgsNDA0OTcsNDA1MDIsNDA1MDQsNDA1MDMsNDA1MDUsNDA1MDYsNDA1MTAsNDA1MTMsNDA1MTQsNDA1MTYsNDA1MTgsNDA1MTksNDA1MjAsNDA1MjEsNDA1MjMsNDA1MjQsNDA1MjYsNDA1MjksNDA1MzMsNDA1MzUsNDA1MzgsNDA1MzksNDA1NDAsNDA1NDIsNDA1NDcsNDA1NTAsNDA1NTEsNDA1NTIsNDA1NTMsNDA1NTQsNDA1NTUsNDA1NTYsNDA1NjEsNDA1NTcsNDA1NjMsMzAwOTgsMzAxMDAsMzAxMDIsMzAxMTIsMzAxMDksMzAxMjQsMzAxMTUsMzAxMzEsMzAxMzIsMzAxMzYsMzAxNDgsMzAxMjksMzAxMjgsMzAxNDcsMzAxNDYsMzAxNjYsMzAxNTcsMzAxNzksMzAxODQsMzAxODIsMzAxODAsMzAxODcsMzAxODMsMzAyMTEsMzAxOTMsMzAyMDQsMzAyMDcsMzAyMjQsMzAyMDgsMzAyMTMsMzAyMjAsMzAyMzEsMzAyMTgsMzAyNDUsMzAyMzIsMzAyMjksMzAyMzMsMzkzMDgsMzkzMTAsMzkzMjIsMzkzMjMsMzkzMjQsMzkzMjUsMzkzMjYsMzkzMjcsMzkzMjgsMzkzMjksMzkzMzAsMzkzMzEsMzkzMzIsMzkzMzQsMzkzMzUsMzkzMzcsMzkzMzgsMzkzMzksMzkzNDAsMzkzNDEsMzkzNDIsMzkzNDMsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDcsMzkzNDgsMzkzNDksMzkzNTAsMzkzNTEsMzkzNTIsMzkzNTMsMzkzNTQsMzkzNTUsMzkzNTYsMzkzNTcsMzkzNTgsMzkzNTksMzkzNjAsMzkzNjEsMzkzNjIsMzkzNjMsMzkzNjQsMzkzNjUsMzkzNjYsMzkzNjcsMzkzNjgsMzkzNjksMzkzNzAsMzkzNzEsMzkzNzIsMzkzNzMsMzkzNzQsMzkzNzUsMzkzNzYsMzkzNzcsMzkzNzgsMzkzNzksMzkzODAsMzkzODEsMzkzODIsMzkzODMsMzkzODQsMzkzODUsMzkzODYsMzkzODcsMzkzODgsMzkzODksMzkzOTAsMzkzOTEsMzkzOTIsMzkzOTMsMzkzOTQsMzkzOTUsMzkzOTYsMzkzOTcsMzkzOTgsMzkzOTksMzk0MDAsMzk0MDEsMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDUsMzk0MDYsMzk0MDcsMzk0MDgsMzk0MDksMzk0MTAsMzk0MTEsMzk0MTIsMzk0MTMsMzk0MTQsMzk0MTUsMzk0MTYsMzk0MTcsMzAyMzUsMzAyNjgsMzAyNDIsMzAyNDAsMzAyNzIsMzAyNTMsMzAyNTYsMzAyNzEsMzAyNjEsMzAyNzUsMzAyNzAsMzAyNTksMzAyODUsMzAzMDIsMzAyOTIsMzAzMDAsMzAyOTQsMzAzMTUsMzAzMTksMzI3MTQsMzE0NjIsMzEzNTIsMzEzNTMsMzEzNjAsMzEzNjYsMzEzNjgsMzEzODEsMzEzOTgsMzEzOTIsMzE0MDQsMzE0MDAsMzE0MDUsMzE0MTEsMzQ5MTYsMzQ5MjEsMzQ5MzAsMzQ5NDEsMzQ5NDMsMzQ5NDYsMzQ5NzgsMzUwMTQsMzQ5OTksMzUwMDQsMzUwMTcsMzUwNDIsMzUwMjIsMzUwNDMsMzUwNDUsMzUwNTcsMzUwOTgsMzUwNjgsMzUwNDgsMzUwNzAsMzUwNTYsMzUxMDUsMzUwOTcsMzUwOTEsMzUwOTksMzUwODIsMzUxMjQsMzUxMTUsMzUxMjYsMzUxMzcsMzUxNzQsMzUxOTUsMzAwOTEsMzI5OTcsMzAzODYsMzAzODgsMzA2ODQsMzI3ODYsMzI3ODgsMzI3OTAsMzI3OTYsMzI4MDAsMzI4MDIsMzI4MDUsMzI4MDYsMzI4MDcsMzI4MDksMzI4MDgsMzI4MTcsMzI3NzksMzI4MjEsMzI4MzUsMzI4MzgsMzI4NDUsMzI4NTAsMzI4NzMsMzI4ODEsMzUyMDMsMzkwMzIsMzkwNDAsMzkwNDMsMzk0MTgsMzk0MTksMzk0MjAsMzk0MjEsMzk0MjIsMzk0MjMsMzk0MjQsMzk0MjUsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MjksMzk0MzAsMzk0MzEsMzk0MzIsMzk0MzMsMzk0MzQsMzk0MzUsMzk0MzYsMzk0MzcsMzk0MzgsMzk0MzksMzk0NDAsMzk0NDEsMzk0NDIsMzk0NDMsMzk0NDQsMzk0NDUsMzk0NDYsMzk0NDcsMzk0NDgsMzk0NDksMzk0NTAsMzk0NTEsMzk0NTIsMzk0NTMsMzk0NTQsMzk0NTUsMzk0NTYsMzk0NTcsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjEsMzk0NjIsMzk0NjMsMzk0NjQsMzk0NjUsMzk0NjYsMzk0NjcsMzk0NjgsMzk0NjksMzk0NzAsMzk0NzEsMzk0NzIsMzk0NzMsMzk0NzQsMzk0NzUsMzk0NzYsMzk0NzcsMzk0NzgsMzk0NzksMzk0ODAsMzk0ODEsMzk0ODIsMzk0ODMsMzk0ODQsMzk0ODUsMzk0ODYsMzk0ODcsMzk0ODgsMzk0ODksMzk0OTAsMzk0OTEsMzk0OTIsMzk0OTMsMzk0OTQsMzk0OTUsMzk0OTYsMzk0OTcsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDEsMzk1MDIsMzk1MDMsMzk1MDQsMzk1MDUsMzk1MDYsMzk1MDcsMzk1MDgsMzk1MDksMzk1MTAsMzk1MTEsMzk1MTIsMzk1MTMsMzkwNDksMzkwNTIsMzkwNTMsMzkwNTUsMzkwNjAsMzkwNjYsMzkwNjcsMzkwNzAsMzkwNzEsMzkwNzMsMzkwNzQsMzkwNzcsMzkwNzgsMzQzODEsMzQzODgsMzQ0MTIsMzQ0MTQsMzQ0MzEsMzQ0MjYsMzQ0MjgsMzQ0MjcsMzQ0NzIsMzQ0NDUsMzQ0NDMsMzQ0NzYsMzQ0NjEsMzQ0NzEsMzQ0NjcsMzQ0NzQsMzQ0NTEsMzQ0NzMsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MTAsMzQ0ODAsMzQ0OTAsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ1MTEsMzQ0ODQsMzQ1MzcsMzQ1NDUsMzQ1NDYsMzQ1NDEsMzQ1NDcsMzQ1MTIsMzQ1NzksMzQ1MjYsMzQ1NDgsMzQ1MjcsMzQ1MjAsMzQ1MTMsMzQ1NjMsMzQ1NjcsMzQ1NTIsMzQ1NjgsMzQ1NzAsMzQ1NzMsMzQ1NjksMzQ1OTUsMzQ2MTksMzQ1OTAsMzQ1OTcsMzQ2MDYsMzQ1ODYsMzQ2MjIsMzQ2MzIsMzQ2MTIsMzQ2MDksMzQ2MDEsMzQ2MTUsMzQ2MjMsMzQ2OTAsMzQ1OTQsMzQ2ODUsMzQ2ODYsMzQ2ODMsMzQ2NTYsMzQ2NzIsMzQ2MzYsMzQ2NzAsMzQ2OTksMzQ2NDMsMzQ2NTksMzQ2ODQsMzQ2NjAsMzQ2NDksMzQ2NjEsMzQ3MDcsMzQ3MzUsMzQ3MjgsMzQ3NzAsMzk1MTQsMzk1MTUsMzk1MTYsMzk1MTcsMzk1MTgsMzk1MTksMzk1MjAsMzk1MjEsMzk1MjIsMzk1MjMsMzk1MjQsMzk1MjUsMzk1MjYsMzk1MjcsMzk1MjgsMzk1MjksMzk1MzAsMzk1MzEsMzk1MzgsMzk1NTUsMzk1NjEsMzk1NjUsMzk1NjYsMzk1NzIsMzk1NzMsMzk1NzcsMzk1OTAsMzk1OTMsMzk1OTQsMzk1OTUsMzk1OTYsMzk1OTcsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDMsMzk2MDQsMzk2MDUsMzk2MDksMzk2MTEsMzk2MTMsMzk2MTQsMzk2MTUsMzk2MTksMzk2MjAsMzk2MjIsMzk2MjMsMzk2MjQsMzk2MjUsMzk2MjYsMzk2MjksMzk2MzAsMzk2MzEsMzk2MzIsMzk2MzQsMzk2MzYsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDEsMzk2NDIsMzk2NDMsMzk2NDQsMzk2NDUsMzk2NDYsMzk2NDgsMzk2NTAsMzk2NTEsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTYsMzk2NTcsMzk2NTgsMzk2NjAsMzk2NjIsMzk2NjQsMzk2NjUsMzk2NjYsMzk2NjcsMzk2NjgsMzk2NjksMzk2NzAsMzk2NzEsMzk2NzIsMzk2NzQsMzk2NzYsMzk2NzcsMzk2NzgsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODQsMzk2ODUsMzk2ODYsMzQ3NTgsMzQ2OTYsMzQ2OTMsMzQ3MzMsMzQ3MTEsMzQ2OTEsMzQ3MzEsMzQ3ODksMzQ3MzIsMzQ3NDEsMzQ3MzksMzQ3NjMsMzQ3NzEsMzQ3NDksMzQ3NjksMzQ3NTIsMzQ3NjIsMzQ3NzksMzQ3OTQsMzQ3ODQsMzQ3OTgsMzQ4MzgsMzQ4MzUsMzQ4MTQsMzQ4MjYsMzQ4NDMsMzQ4NDksMzQ4NzMsMzQ4NzYsMzI1NjYsMzI1NzgsMzI1ODAsMzI1ODEsMzMyOTYsMzE0ODIsMzE0ODUsMzE0OTYsMzE0OTEsMzE0OTIsMzE1MDksMzE0OTgsMzE1MzEsMzE1MDMsMzE1NTksMzE1NDQsMzE1MzAsMzE1MTMsMzE1MzQsMzE1MzcsMzE1MjAsMzE1MjUsMzE1MjQsMzE1MzksMzE1NTAsMzE1MTgsMzE1NzYsMzE1NzgsMzE1NTcsMzE2MDUsMzE1NjQsMzE1ODEsMzE1ODQsMzE1OTgsMzE2MTEsMzE1ODYsMzE2MDIsMzE2MDEsMzE2MzIsMzE2NTQsMzE2NTUsMzE2NzIsMzE2NjAsMzE2NDUsMzE2NTYsMzE2MjEsMzE2NTgsMzE2NDQsMzE2NTAsMzE2NTksMzE2NjgsMzE2OTcsMzE2ODEsMzE2OTIsMzE3MDksMzE3MDYsMzE3MTcsMzE3MTgsMzE3MjIsMzE3NTYsMzE3NDIsMzE3NDAsMzE3NTksMzE3NjYsMzE3NTUsMzk2ODcsMzk2ODksMzk2OTAsMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTcsMzk2OTgsMzk3MDAsMzk3MDEsMzk3MDIsMzk3MDMsMzk3MDQsMzk3MDUsMzk3MDYsMzk3MDcsMzk3MDgsMzk3MDksMzk3MTAsMzk3MTIsMzk3MTMsMzk3MTQsMzk3MTYsMzk3MTcsMzk3MTgsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjMsMzk3MjQsMzk3MjUsMzk3MjYsMzk3MjgsMzk3MjksMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzQsMzk3MzUsMzk3MzYsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NDIsMzk3NDMsMzk3NDQsMzk3NTAsMzk3NTQsMzk3NTUsMzk3NTYsMzk3NTgsMzk3NjAsMzk3NjIsMzk3NjMsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NjgsMzk3NjksMzk3NzAsMzk3NzEsMzk3NzIsMzk3NzMsMzk3NzQsMzk3NzUsMzk3NzYsMzk3NzcsMzk3NzgsMzk3NzksMzk3ODAsMzk3ODEsMzk3ODIsMzk3ODMsMzk3ODQsMzk3ODUsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTEsMzk3OTIsMzk3OTMsMzk3OTQsMzk3OTUsMzk3OTYsMzk3OTcsMzk3OTgsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDIsMzk4MDMsMzE3NzUsMzE3ODYsMzE3ODIsMzE4MDAsMzE4MDksMzE4MDgsMzMyNzgsMzMyODEsMzMyODIsMzMyODQsMzMyNjAsMzQ4ODQsMzMzMTMsMzMzMTQsMzMzMTUsMzMzMjUsMzMzMjcsMzMzMjAsMzMzMjMsMzMzMzYsMzMzMzksMzMzMzEsMzMzMzIsMzMzNDIsMzMzNDgsMzMzNTMsMzMzNTUsMzMzNTksMzMzNzAsMzMzNzUsMzMzODQsMzQ5NDIsMzQ5NDksMzQ5NTIsMzUwMzIsMzUwMzksMzUxNjYsMzI2NjksMzI2NzEsMzI2NzksMzI2ODcsMzI2ODgsMzI2OTAsMzE4NjgsMjU5MjksMzE4ODksMzE5MDEsMzE5MDAsMzE5MDIsMzE5MDYsMzE5MjIsMzE5MzIsMzE5MzMsMzE5MzcsMzE5NDMsMzE5NDgsMzE5NDksMzE5NDQsMzE5NDEsMzE5NTksMzE5NzYsMzMzOTAsMjYyODAsMzI3MDMsMzI3MTgsMzI3MjUsMzI3NDEsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTAsMzI3NTUsMzE5OTIsMzIxMTksMzIxNjYsMzIxNzQsMzIzMjcsMzI0MTEsNDA2MzIsNDA2MjgsMzYyMTEsMzYyMjgsMzYyNDQsMzYyNDEsMzYyNzMsMzYxOTksMzYyMDUsMzU5MTEsMzU5MTMsMzcxOTQsMzcyMDAsMzcxOTgsMzcxOTksMzcyMjAsMzk4MDQsMzk4MDUsMzk4MDYsMzk4MDcsMzk4MDgsMzk4MDksMzk4MTAsMzk4MTEsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTYsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjAsMzk4MjEsMzk4MjIsMzk4MjMsMzk4MjQsMzk4MjUsMzk4MjYsMzk4MjcsMzk4MjgsMzk4MjksMzk4MzAsMzk4MzEsMzk4MzIsMzk4MzMsMzk4MzQsMzk4MzUsMzk4MzYsMzk4MzcsMzk4MzgsMzk4MzksMzk4NDAsMzk4NDEsMzk4NDIsMzk4NDMsMzk4NDQsMzk4NDUsMzk4NDYsMzk4NDcsMzk4NDgsMzk4NDksMzk4NTAsMzk4NTEsMzk4NTIsMzk4NTMsMzk4NTQsMzk4NTUsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NTksMzk4NjAsMzk4NjEsMzk4NjIsMzk4NjMsMzk4NjQsMzk4NjUsMzk4NjYsMzk4NjcsMzk4NjgsMzk4NjksMzk4NzAsMzk4NzEsMzk4NzIsMzk4NzMsMzk4NzQsMzk4NzUsMzk4NzYsMzk4NzcsMzk4NzgsMzk4NzksMzk4ODAsMzk4ODEsMzk4ODIsMzk4ODMsMzk4ODQsMzk4ODUsMzk4ODYsMzk4ODcsMzk4ODgsMzk4ODksMzk4OTAsMzk4OTEsMzk4OTIsMzk4OTMsMzk4OTQsMzk4OTUsMzk4OTYsMzk4OTcsMzk4OTgsMzk4OTksMzcyMTgsMzcyMTcsMzcyMzIsMzcyMjUsMzcyMzEsMzcyNDUsMzcyNDYsMzcyMzQsMzcyMzYsMzcyNDEsMzcyNjAsMzcyNTMsMzcyNjQsMzcyNjEsMzcyNjUsMzcyODIsMzcyODMsMzcyOTAsMzcyOTMsMzcyOTQsMzcyOTUsMzczMDEsMzczMDAsMzczMDYsMzU5MjUsNDA1NzQsMzYyODAsMzYzMzEsMzYzNTcsMzY0NDEsMzY0NTcsMzYyNzcsMzYyODcsMzYyODQsMzYyODIsMzYyOTIsMzYzMTAsMzYzMTEsMzYzMTQsMzYzMTgsMzYzMDIsMzYzMDMsMzYzMTUsMzYyOTQsMzYzMzIsMzYzNDMsMzYzNDQsMzYzMjMsMzYzNDUsMzYzNDcsMzYzMjQsMzYzNjEsMzYzNDksMzYzNzIsMzYzODEsMzYzODMsMzYzOTYsMzYzOTgsMzYzODcsMzYzOTksMzY0MTAsMzY0MTYsMzY0MDksMzY0MDUsMzY0MTMsMzY0MDEsMzY0MjUsMzY0MTcsMzY0MTgsMzY0MzMsMzY0MzQsMzY0MjYsMzY0NjQsMzY0NzAsMzY0NzYsMzY0NjMsMzY0NjgsMzY0ODUsMzY0OTUsMzY1MDAsMzY0OTYsMzY1MDgsMzY1MTAsMzU5NjAsMzU5NzAsMzU5NzgsMzU5NzMsMzU5OTIsMzU5ODgsMjYwMTEsMzUyODYsMzUyOTQsMzUyOTAsMzUyOTIsMzk5MDAsMzk5MDEsMzk5MDIsMzk5MDMsMzk5MDQsMzk5MDUsMzk5MDYsMzk5MDcsMzk5MDgsMzk5MDksMzk5MTAsMzk5MTEsMzk5MTIsMzk5MTMsMzk5MTQsMzk5MTUsMzk5MTYsMzk5MTcsMzk5MTgsMzk5MTksMzk5MjAsMzk5MjEsMzk5MjIsMzk5MjMsMzk5MjQsMzk5MjUsMzk5MjYsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzEsMzk5MzIsMzk5MzMsMzk5MzQsMzk5MzUsMzk5MzYsMzk5MzcsMzk5MzgsMzk5MzksMzk5NDAsMzk5NDEsMzk5NDIsMzk5NDMsMzk5NDQsMzk5NDUsMzk5NDYsMzk5NDcsMzk5NDgsMzk5NDksMzk5NTAsMzk5NTEsMzk5NTIsMzk5NTMsMzk5NTQsMzk5NTUsMzk5NTYsMzk5NTcsMzk5NTgsMzk5NTksMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjMsMzk5NjQsMzk5NjUsMzk5NjYsMzk5NjcsMzk5NjgsMzk5NjksMzk5NzAsMzk5NzEsMzk5NzIsMzk5NzMsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5NzksMzk5ODAsMzk5ODEsMzk5ODIsMzk5ODMsMzk5ODQsMzk5ODUsMzk5ODYsMzk5ODcsMzk5ODgsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTIsMzk5OTMsMzk5OTQsMzk5OTUsMzUzMDEsMzUzMDcsMzUzMTEsMzUzOTAsMzU2MjIsMzg3MzksMzg2MzMsMzg2NDMsMzg2MzksMzg2NjIsMzg2NTcsMzg2NjQsMzg2NzEsMzg2NzAsMzg2OTgsMzg3MDEsMzg3MDQsMzg3MTgsNDA4MzIsNDA4MzUsNDA4MzcsNDA4MzgsNDA4MzksNDA4NDAsNDA4NDEsNDA4NDIsNDA4NDQsNDA3MDIsNDA3MTUsNDA3MTcsMzg1ODUsMzg1ODgsMzg1ODksMzg2MDYsMzg2MTAsMzA2NTUsMzg2MjQsMzc1MTgsMzc1NTAsMzc1NzYsMzc2OTQsMzc3MzgsMzc4MzQsMzc3NzUsMzc5NTAsMzc5OTUsNDAwNjMsNDAwNjYsNDAwNjksNDAwNzAsNDAwNzEsNDAwNzIsMzEyNjcsNDAwNzUsNDAwNzgsNDAwODAsNDAwODEsNDAwODIsNDAwODQsNDAwODUsNDAwOTAsNDAwOTEsNDAwOTQsNDAwOTUsNDAwOTYsNDAwOTcsNDAwOTgsNDAwOTksNDAxMDEsNDAxMDIsNDAxMDMsNDAxMDQsNDAxMDUsNDAxMDcsNDAxMDksNDAxMTAsNDAxMTIsNDAxMTMsNDAxMTQsNDAxMTUsNDAxMTYsNDAxMTcsNDAxMTgsNDAxMTksNDAxMjIsNDAxMjMsNDAxMjQsNDAxMjUsNDAxMzIsNDAxMzMsNDAxMzQsNDAxMzUsNDAxMzgsNDAxMzksMzk5OTYsMzk5OTcsMzk5OTgsMzk5OTksNDAwMDAsNDAwMDEsNDAwMDIsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDYsNDAwMDcsNDAwMDgsNDAwMDksNDAwMTAsNDAwMTEsNDAwMTIsNDAwMTMsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTcsNDAwMTgsNDAwMTksNDAwMjAsNDAwMjEsNDAwMjIsNDAwMjMsNDAwMjQsNDAwMjUsNDAwMjYsNDAwMjcsNDAwMjgsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzIsNDAwMzMsNDAwMzQsNDAwMzUsNDAwMzYsNDAwMzcsNDAwMzgsNDAwMzksNDAwNDAsNDAwNDEsNDAwNDIsNDAwNDMsNDAwNDQsNDAwNDUsNDAwNDYsNDAwNDcsNDAwNDgsNDAwNDksNDAwNTAsNDAwNTEsNDAwNTIsNDAwNTMsNDAwNTQsNDAwNTUsNDAwNTYsNDAwNTcsNDAwNTgsNDAwNTksNDAwNjEsNDAwNjIsNDAwNjQsNDAwNjcsNDAwNjgsNDAwNzMsNDAwNzQsNDAwNzYsNDAwNzksNDAwODMsNDAwODYsNDAwODcsNDAwODgsNDAwODksNDAwOTMsNDAxMDYsNDAxMDgsNDAxMTEsNDAxMjEsNDAxMjYsNDAxMjcsNDAxMjgsNDAxMjksNDAxMzAsNDAxMzYsNDAxMzcsNDAxNDUsNDAxNDYsNDAxNTQsNDAxNTUsNDAxNjAsNDAxNjEsNDAxNDAsNDAxNDEsNDAxNDIsNDAxNDMsNDAxNDQsNDAxNDcsNDAxNDgsNDAxNDksNDAxNTEsNDAxNTIsNDAxNTMsNDAxNTYsNDAxNTcsNDAxNTksNDAxNjIsMzg3ODAsMzg3ODksMzg4MDEsMzg4MDIsMzg4MDQsMzg4MzEsMzg4MjcsMzg4MTksMzg4MzQsMzg4MzYsMzk2MDEsMzk2MDAsMzk2MDcsNDA1MzYsMzk2MDYsMzk2MTAsMzk2MTIsMzk2MTcsMzk2MTYsMzk2MjEsMzk2MTgsMzk2MjcsMzk2MjgsMzk2MzMsMzk3NDksMzk3NDcsMzk3NTEsMzk3NTMsMzk3NTIsMzk3NTcsMzk3NjEsMzkxNDQsMzkxODEsMzkyMTQsMzkyNTMsMzkyNTIsMzk2NDcsMzk2NDksMzk2NTQsMzk2NjMsMzk2NTksMzk2NzUsMzk2NjEsMzk2NzMsMzk2ODgsMzk2OTUsMzk2OTksMzk3MTEsMzk3MTUsNDA2MzcsNDA2MzgsMzIzMTUsNDA1NzgsNDA1ODMsNDA1ODQsNDA1ODcsNDA1OTQsMzc4NDYsNDA2MDUsNDA2MDcsNDA2NjcsNDA2NjgsNDA2NjksNDA2NzIsNDA2NzEsNDA2NzQsNDA2ODEsNDA2NzksNDA2NzcsNDA2ODIsNDA2ODcsNDA3MzgsNDA3NDgsNDA3NTEsNDA3NjEsNDA3NTksNDA3NjUsNDA3NjYsNDA3NzIsNDAxNjMsNDAxNjQsNDAxNjUsNDAxNjYsNDAxNjcsNDAxNjgsNDAxNjksNDAxNzAsNDAxNzEsNDAxNzIsNDAxNzMsNDAxNzQsNDAxNzUsNDAxNzYsNDAxNzcsNDAxNzgsNDAxNzksNDAxODAsNDAxODEsNDAxODIsNDAxODMsNDAxODQsNDAxODUsNDAxODYsNDAxODcsNDAxODgsNDAxODksNDAxOTAsNDAxOTEsNDAxOTIsNDAxOTMsNDAxOTQsNDAxOTUsNDAxOTYsNDAxOTcsNDAxOTgsNDAxOTksNDAyMDAsNDAyMDEsNDAyMDIsNDAyMDMsNDAyMDQsNDAyMDUsNDAyMDYsNDAyMDcsNDAyMDgsNDAyMDksNDAyMTAsNDAyMTEsNDAyMTIsNDAyMTMsNDAyMTQsNDAyMTUsNDAyMTYsNDAyMTcsNDAyMTgsNDAyMTksNDAyMjAsNDAyMjEsNDAyMjIsNDAyMjMsNDAyMjQsNDAyMjUsNDAyMjYsNDAyMjcsNDAyMjgsNDAyMjksNDAyMzAsNDAyMzEsNDAyMzIsNDAyMzMsNDAyMzQsNDAyMzUsNDAyMzYsNDAyMzcsNDAyMzgsNDAyMzksNDAyNDAsNDAyNDEsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNDUsNDAyNDYsNDAyNDcsNDAyNDgsNDAyNDksNDAyNTAsNDAyNTEsNDAyNTIsNDAyNTMsNDAyNTQsNDAyNTUsNDAyNTYsNDAyNTcsNDAyNTgsNTc5MDgsNTc5MDksNTc5MTAsNTc5MTEsNTc5MTIsNTc5MTMsNTc5MTQsNTc5MTUsNTc5MTYsNTc5MTcsNTc5MTgsNTc5MTksNTc5MjAsNTc5MjEsNTc5MjIsNTc5MjMsNTc5MjQsNTc5MjUsNTc5MjYsNTc5MjcsNTc5MjgsNTc5MjksNTc5MzAsNTc5MzEsNTc5MzIsNTc5MzMsNTc5MzQsNTc5MzUsNTc5MzYsNTc5MzcsNTc5MzgsNTc5MzksNTc5NDAsNTc5NDEsNTc5NDIsNTc5NDMsNTc5NDQsNTc5NDUsNTc5NDYsNTc5NDcsNTc5NDgsNTc5NDksNTc5NTAsNTc5NTEsNTc5NTIsNTc5NTMsNTc5NTQsNTc5NTUsNTc5NTYsNTc5NTcsNTc5NTgsNTc5NTksNTc5NjAsNTc5NjEsNTc5NjIsNTc5NjMsNTc5NjQsNTc5NjUsNTc5NjYsNTc5NjcsNTc5NjgsNTc5NjksNTc5NzAsNTc5NzEsNTc5NzIsNTc5NzMsNTc5NzQsNTc5NzUsNTc5NzYsNTc5NzcsNTc5NzgsNTc5NzksNTc5ODAsNTc5ODEsNTc5ODIsNTc5ODMsNTc5ODQsNTc5ODUsNTc5ODYsNTc5ODcsNTc5ODgsNTc5ODksNTc5OTAsNTc5OTEsNTc5OTIsNTc5OTMsNTc5OTQsNTc5OTUsNTc5OTYsNTc5OTcsNTc5OTgsNTc5OTksNTgwMDAsNTgwMDEsNDAyNTksNDAyNjAsNDAyNjEsNDAyNjIsNDAyNjMsNDAyNjQsNDAyNjUsNDAyNjYsNDAyNjcsNDAyNjgsNDAyNjksNDAyNzAsNDAyNzEsNDAyNzIsNDAyNzMsNDAyNzQsNDAyNzUsNDAyNzYsNDAyNzcsNDAyNzgsNDAyNzksNDAyODAsNDAyODEsNDAyODIsNDAyODMsNDAyODQsNDAyODUsNDAyODYsNDAyODcsNDAyODgsNDAyODksNDAyOTAsNDAyOTEsNDAyOTIsNDAyOTMsNDAyOTQsNDAyOTUsNDAyOTYsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDAsNDAzMDEsNDAzMDIsNDAzMDMsNDAzMDQsNDAzMDUsNDAzMDYsNDAzMDcsNDAzMDgsNDAzMDksNDAzMTAsNDAzMTEsNDAzMTIsNDAzMTMsNDAzMTQsNDAzMTUsNDAzMTYsNDAzMTcsNDAzMTgsNDAzMTksNDAzMjAsNDAzMjEsNDAzMjIsNDAzMjMsNDAzMjQsNDAzMjUsNDAzMjYsNDAzMjcsNDAzMjgsNDAzMjksNDAzMzAsNDAzMzEsNDAzMzIsNDAzMzMsNDAzMzQsNDAzMzUsNDAzMzYsNDAzMzcsNDAzMzgsNDAzMzksNDAzNDAsNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNDUsNDAzNDYsNDAzNDcsNDAzNDgsNDAzNDksNDAzNTAsNDAzNTEsNDAzNTIsNDAzNTMsNDAzNTQsNTgwMDIsNTgwMDMsNTgwMDQsNTgwMDUsNTgwMDYsNTgwMDcsNTgwMDgsNTgwMDksNTgwMTAsNTgwMTEsNTgwMTIsNTgwMTMsNTgwMTQsNTgwMTUsNTgwMTYsNTgwMTcsNTgwMTgsNTgwMTksNTgwMjAsNTgwMjEsNTgwMjIsNTgwMjMsNTgwMjQsNTgwMjUsNTgwMjYsNTgwMjcsNTgwMjgsNTgwMjksNTgwMzAsNTgwMzEsNTgwMzIsNTgwMzMsNTgwMzQsNTgwMzUsNTgwMzYsNTgwMzcsNTgwMzgsNTgwMzksNTgwNDAsNTgwNDEsNTgwNDIsNTgwNDMsNTgwNDQsNTgwNDUsNTgwNDYsNTgwNDcsNTgwNDgsNTgwNDksNTgwNTAsNTgwNTEsNTgwNTIsNTgwNTMsNTgwNTQsNTgwNTUsNTgwNTYsNTgwNTcsNTgwNTgsNTgwNTksNTgwNjAsNTgwNjEsNTgwNjIsNTgwNjMsNTgwNjQsNTgwNjUsNTgwNjYsNTgwNjcsNTgwNjgsNTgwNjksNTgwNzAsNTgwNzEsNTgwNzIsNTgwNzMsNTgwNzQsNTgwNzUsNTgwNzYsNTgwNzcsNTgwNzgsNTgwNzksNTgwODAsNTgwODEsNTgwODIsNTgwODMsNTgwODQsNTgwODUsNTgwODYsNTgwODcsNTgwODgsNTgwODksNTgwOTAsNTgwOTEsNTgwOTIsNTgwOTMsNTgwOTQsNTgwOTUsNDAzNTUsNDAzNTYsNDAzNTcsNDAzNTgsNDAzNTksNDAzNjAsNDAzNjEsNDAzNjIsNDAzNjMsNDAzNjQsNDAzNjUsNDAzNjYsNDAzNjcsNDAzNjgsNDAzNjksNDAzNzAsNDAzNzEsNDAzNzIsNDAzNzMsNDAzNzQsNDAzNzUsNDAzNzYsNDAzNzcsNDAzNzgsNDAzNzksNDAzODAsNDAzODEsNDAzODIsNDAzODMsNDAzODQsNDAzODUsNDAzODYsNDAzODcsNDAzODgsNDAzODksNDAzOTAsNDAzOTEsNDAzOTIsNDAzOTMsNDAzOTQsNDAzOTUsNDAzOTYsNDAzOTcsNDAzOTgsNDAzOTksNDA0MDAsNDA0MDEsNDA0MDIsNDA0MDMsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MDgsNDA0MDksNDA0MTAsNDA0MTEsNDA0MTIsNDA0MTMsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MTcsNDA0MTgsNDA0MTksNDA0MjAsNDA0MjEsNDA0MjIsNDA0MjMsNDA0MjQsNDA0MjUsNDA0MjYsNDA0MjcsNDA0MjgsNDA0MjksNDA0MzAsNDA0MzEsNDA0MzIsNDA0MzMsNDA0MzQsNDA0MzUsNDA0MzYsNDA0MzcsNDA0MzgsNDA0MzksNDA0NDAsNDA0NDEsNDA0NDIsNDA0NDMsNDA0NDQsNDA0NDUsNDA0NDYsNDA0NDcsNDA0NDgsNDA0NDksNDA0NTAsNTgwOTYsNTgwOTcsNTgwOTgsNTgwOTksNTgxMDAsNTgxMDEsNTgxMDIsNTgxMDMsNTgxMDQsNTgxMDUsNTgxMDYsNTgxMDcsNTgxMDgsNTgxMDksNTgxMTAsNTgxMTEsNTgxMTIsNTgxMTMsNTgxMTQsNTgxMTUsNTgxMTYsNTgxMTcsNTgxMTgsNTgxMTksNTgxMjAsNTgxMjEsNTgxMjIsNTgxMjMsNTgxMjQsNTgxMjUsNTgxMjYsNTgxMjcsNTgxMjgsNTgxMjksNTgxMzAsNTgxMzEsNTgxMzIsNTgxMzMsNTgxMzQsNTgxMzUsNTgxMzYsNTgxMzcsNTgxMzgsNTgxMzksNTgxNDAsNTgxNDEsNTgxNDIsNTgxNDMsNTgxNDQsNTgxNDUsNTgxNDYsNTgxNDcsNTgxNDgsNTgxNDksNTgxNTAsNTgxNTEsNTgxNTIsNTgxNTMsNTgxNTQsNTgxNTUsNTgxNTYsNTgxNTcsNTgxNTgsNTgxNTksNTgxNjAsNTgxNjEsNTgxNjIsNTgxNjMsNTgxNjQsNTgxNjUsNTgxNjYsNTgxNjcsNTgxNjgsNTgxNjksNTgxNzAsNTgxNzEsNTgxNzIsNTgxNzMsNTgxNzQsNTgxNzUsNTgxNzYsNTgxNzcsNTgxNzgsNTgxNzksNTgxODAsNTgxODEsNTgxODIsNTgxODMsNTgxODQsNTgxODUsNTgxODYsNTgxODcsNTgxODgsNTgxODksNDA0NTEsNDA0NTIsNDA0NTMsNDA0NTQsNDA0NTUsNDA0NTYsNDA0NTcsNDA0NTgsNDA0NTksNDA0NjAsNDA0NjEsNDA0NjIsNDA0NjMsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjcsNDA0NjgsNDA0NjksNDA0NzAsNDA0NzEsNDA0NzIsNDA0NzMsNDA0NzQsNDA0NzUsNDA0NzYsNDA0NzcsNDA0NzgsNDA0ODQsNDA0ODcsNDA0OTQsNDA0OTYsNDA1MDAsNDA1MDcsNDA1MDgsNDA1MTIsNDA1MjUsNDA1MjgsNDA1MzAsNDA1MzEsNDA1MzIsNDA1MzQsNDA1MzcsNDA1NDEsNDA1NDMsNDA1NDQsNDA1NDUsNDA1NDYsNDA1NDksNDA1NTgsNDA1NTksNDA1NjIsNDA1NjQsNDA1NjUsNDA1NjYsNDA1NjcsNDA1NjgsNDA1NjksNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzMsNDA1NzYsNDA1NzcsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODIsNDA1ODUsNDA1ODYsNDA1ODgsNDA1ODksNDA1OTAsNDA1OTEsNDA1OTIsNDA1OTMsNDA1OTYsNDA1OTcsNDA1OTgsNDA1OTksNDA2MDAsNDA2MDEsNDA2MDIsNDA2MDMsNDA2MDQsNDA2MDYsNDA2MDgsNDA2MDksNDA2MTAsNDA2MTEsNDA2MTIsNDA2MTMsNDA2MTUsNDA2MTYsNDA2MTcsNDA2MTgsNTgxOTAsNTgxOTEsNTgxOTIsNTgxOTMsNTgxOTQsNTgxOTUsNTgxOTYsNTgxOTcsNTgxOTgsNTgxOTksNTgyMDAsNTgyMDEsNTgyMDIsNTgyMDMsNTgyMDQsNTgyMDUsNTgyMDYsNTgyMDcsNTgyMDgsNTgyMDksNTgyMTAsNTgyMTEsNTgyMTIsNTgyMTMsNTgyMTQsNTgyMTUsNTgyMTYsNTgyMTcsNTgyMTgsNTgyMTksNTgyMjAsNTgyMjEsNTgyMjIsNTgyMjMsNTgyMjQsNTgyMjUsNTgyMjYsNTgyMjcsNTgyMjgsNTgyMjksNTgyMzAsNTgyMzEsNTgyMzIsNTgyMzMsNTgyMzQsNTgyMzUsNTgyMzYsNTgyMzcsNTgyMzgsNTgyMzksNTgyNDAsNTgyNDEsNTgyNDIsNTgyNDMsNTgyNDQsNTgyNDUsNTgyNDYsNTgyNDcsNTgyNDgsNTgyNDksNTgyNTAsNTgyNTEsNTgyNTIsNTgyNTMsNTgyNTQsNTgyNTUsNTgyNTYsNTgyNTcsNTgyNTgsNTgyNTksNTgyNjAsNTgyNjEsNTgyNjIsNTgyNjMsNTgyNjQsNTgyNjUsNTgyNjYsNTgyNjcsNTgyNjgsNTgyNjksNTgyNzAsNTgyNzEsNTgyNzIsNTgyNzMsNTgyNzQsNTgyNzUsNTgyNzYsNTgyNzcsNTgyNzgsNTgyNzksNTgyODAsNTgyODEsNTgyODIsNTgyODMsNDA2MTksNDA2MjAsNDA2MjEsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjUsNDA2MjYsNDA2MjcsNDA2MjksNDA2MzAsNDA2MzEsNDA2MzMsNDA2MzQsNDA2MzYsNDA2MzksNDA2NDAsNDA2NDEsNDA2NDIsNDA2NDMsNDA2NDUsNDA2NDYsNDA2NDcsNDA2NDgsNDA2NTAsNDA2NTEsNDA2NTIsNDA2NTYsNDA2NTgsNDA2NTksNDA2NjEsNDA2NjIsNDA2NjMsNDA2NjUsNDA2NjYsNDA2NzAsNDA2NzMsNDA2NzUsNDA2NzYsNDA2NzgsNDA2ODAsNDA2ODMsNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTEsNDA2OTIsNDA2OTMsNDA2OTQsNDA2OTUsNDA2OTYsNDA2OTgsNDA3MDEsNDA3MDMsNDA3MDQsNDA3MDUsNDA3MDYsNDA3MDcsNDA3MDgsNDA3MDksNDA3MTAsNDA3MTEsNDA3MTIsNDA3MTMsNDA3MTQsNDA3MTYsNDA3MTksNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjUsNDA3MjYsNDA3MjgsNDA3MzAsNDA3MzEsNDA3MzIsNDA3MzMsNDA3MzQsNDA3MzUsNDA3MzcsNDA3MzksNDA3NDAsNDA3NDEsNDA3NDIsNDA3NDMsNDA3NDQsNDA3NDUsNDA3NDYsNDA3NDcsNDA3NDksNDA3NTAsNDA3NTIsNDA3NTMsNTgyODQsNTgyODUsNTgyODYsNTgyODcsNTgyODgsNTgyODksNTgyOTAsNTgyOTEsNTgyOTIsNTgyOTMsNTgyOTQsNTgyOTUsNTgyOTYsNTgyOTcsNTgyOTgsNTgyOTksNTgzMDAsNTgzMDEsNTgzMDIsNTgzMDMsNTgzMDQsNTgzMDUsNTgzMDYsNTgzMDcsNTgzMDgsNTgzMDksNTgzMTAsNTgzMTEsNTgzMTIsNTgzMTMsNTgzMTQsNTgzMTUsNTgzMTYsNTgzMTcsNTgzMTgsNTgzMTksNTgzMjAsNTgzMjEsNTgzMjIsNTgzMjMsNTgzMjQsNTgzMjUsNTgzMjYsNTgzMjcsNTgzMjgsNTgzMjksNTgzMzAsNTgzMzEsNTgzMzIsNTgzMzMsNTgzMzQsNTgzMzUsNTgzMzYsNTgzMzcsNTgzMzgsNTgzMzksNTgzNDAsNTgzNDEsNTgzNDIsNTgzNDMsNTgzNDQsNTgzNDUsNTgzNDYsNTgzNDcsNTgzNDgsNTgzNDksNTgzNTAsNTgzNTEsNTgzNTIsNTgzNTMsNTgzNTQsNTgzNTUsNTgzNTYsNTgzNTcsNTgzNTgsNTgzNTksNTgzNjAsNTgzNjEsNTgzNjIsNTgzNjMsNTgzNjQsNTgzNjUsNTgzNjYsNTgzNjcsNTgzNjgsNTgzNjksNTgzNzAsNTgzNzEsNTgzNzIsNTgzNzMsNTgzNzQsNTgzNzUsNTgzNzYsNTgzNzcsNDA3NTQsNDA3NTUsNDA3NTYsNDA3NTcsNDA3NTgsNDA3NjAsNDA3NjIsNDA3NjQsNDA3NjcsNDA3NjgsNDA3NjksNDA3NzAsNDA3NzEsNDA3NzMsNDA3NzQsNDA3NzUsNDA3NzYsNDA3NzcsNDA3NzgsNDA3NzksNDA3ODAsNDA3ODEsNDA3ODIsNDA3ODMsNDA3ODYsNDA3ODcsNDA3ODgsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTMsNDA3OTQsNDA3OTUsNDA3OTYsNDA3OTcsNDA3OTgsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDIsNDA4MDMsNDA4MDQsNDA4MDUsNDA4MDYsNDA4MDcsNDA4MDgsNDA4MDksNDA4MTAsNDA4MTEsNDA4MTIsNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTgsNDA4MTksNDA4MjAsNDA4MjEsNDA4MjIsNDA4MjMsNDA4MjQsNDA4MjUsNDA4MjYsNDA4MjcsNDA4MjgsNDA4MjksNDA4MzAsNDA4MzMsNDA4MzQsNDA4NDUsNDA4NDYsNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTEsNDA4NTIsNDA4NTMsNDA4NTQsNDA4NTUsNDA4NTYsNDA4NjAsNDA4NjEsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjgsNDA4NjksNjM3ODgsNjM4NjUsNjM4OTMsNjM5NzUsNjM5ODUsNTgzNzgsNTgzNzksNTgzODAsNTgzODEsNTgzODIsNTgzODMsNTgzODQsNTgzODUsNTgzODYsNTgzODcsNTgzODgsNTgzODksNTgzOTAsNTgzOTEsNTgzOTIsNTgzOTMsNTgzOTQsNTgzOTUsNTgzOTYsNTgzOTcsNTgzOTgsNTgzOTksNTg0MDAsNTg0MDEsNTg0MDIsNTg0MDMsNTg0MDQsNTg0MDUsNTg0MDYsNTg0MDcsNTg0MDgsNTg0MDksNTg0MTAsNTg0MTEsNTg0MTIsNTg0MTMsNTg0MTQsNTg0MTUsNTg0MTYsNTg0MTcsNTg0MTgsNTg0MTksNTg0MjAsNTg0MjEsNTg0MjIsNTg0MjMsNTg0MjQsNTg0MjUsNTg0MjYsNTg0MjcsNTg0MjgsNTg0MjksNTg0MzAsNTg0MzEsNTg0MzIsNTg0MzMsNTg0MzQsNTg0MzUsNTg0MzYsNTg0MzcsNTg0MzgsNTg0MzksNTg0NDAsNTg0NDEsNTg0NDIsNTg0NDMsNTg0NDQsNTg0NDUsNTg0NDYsNTg0NDcsNTg0NDgsNTg0NDksNTg0NTAsNTg0NTEsNTg0NTIsNTg0NTMsNTg0NTQsNTg0NTUsNTg0NTYsNTg0NTcsNTg0NTgsNTg0NTksNTg0NjAsNTg0NjEsNTg0NjIsNTg0NjMsNTg0NjQsNTg0NjUsNTg0NjYsNTg0NjcsNTg0NjgsNTg0NjksNTg0NzAsNTg0NzEsNjQwMTIsNjQwMTMsNjQwMTQsNjQwMTUsNjQwMTcsNjQwMTksNjQwMjAsNjQwMjQsNjQwMzEsNjQwMzIsNjQwMzMsNjQwMzUsNjQwMzYsNjQwMzksNjQwNDAsNjQwNDEsMTE5MDUsNTk0MTQsNTk0MTUsNTk0MTYsMTE5MDgsMTM0MjcsMTMzODMsMTE5MTIsMTE5MTUsNTk0MjIsMTM3MjYsMTM4NTAsMTM4MzgsMTE5MTYsMTE5MjcsMTQ3MDIsMTQ2MTYsNTk0MzAsMTQ3OTksMTQ4MTUsMTQ5NjMsMTQ4MDAsNTk0MzUsNTk0MzYsMTUxODIsMTU0NzAsMTU1ODQsMTE5NDMsNTk0NDEsNTk0NDIsMTE5NDYsMTY0NzAsMTY3MzUsMTE5NTAsMTcyMDcsMTE5NTUsMTE5NTgsMTE5NTksNTk0NTEsMTczMjksMTczMjQsMTE5NjMsMTczNzMsMTc2MjIsMTgwMTcsMTc5OTYsNTk0NTksMTgyMTEsMTgyMTcsMTgzMDAsMTgzMTcsMTE5NzgsMTg3NTksMTg4MTAsMTg4MTMsMTg4MTgsMTg4MTksMTg4MjEsMTg4MjIsMTg4NDcsMTg4NDMsMTg4NzEsMTg4NzAsNTk0NzYsNTk0NzcsMTk2MTksMTk2MTUsMTk2MTYsMTk2MTcsMTk1NzUsMTk2MTgsMTk3MzEsMTk3MzIsMTk3MzMsMTk3MzQsMTk3MzUsMTk3MzYsMTk3MzcsMTk4ODYsNTk0OTIsNTg0NzIsNTg0NzMsNTg0NzQsNTg0NzUsNTg0NzYsNTg0NzcsNTg0NzgsNTg0NzksNTg0ODAsNTg0ODEsNTg0ODIsNTg0ODMsNTg0ODQsNTg0ODUsNTg0ODYsNTg0ODcsNTg0ODgsNTg0ODksNTg0OTAsNTg0OTEsNTg0OTIsNTg0OTMsNTg0OTQsNTg0OTUsNTg0OTYsNTg0OTcsNTg0OTgsNTg0OTksNTg1MDAsNTg1MDEsNTg1MDIsNTg1MDMsNTg1MDQsNTg1MDUsNTg1MDYsNTg1MDcsNTg1MDgsNTg1MDksNTg1MTAsNTg1MTEsNTg1MTIsNTg1MTMsNTg1MTQsNTg1MTUsNTg1MTYsNTg1MTcsNTg1MTgsNTg1MTksNTg1MjAsNTg1MjEsNTg1MjIsNTg1MjMsNTg1MjQsNTg1MjUsNTg1MjYsNTg1MjcsNTg1MjgsNTg1MjksNTg1MzAsNTg1MzEsNTg1MzIsNTg1MzMsNTg1MzQsNTg1MzUsNTg1MzYsNTg1MzcsNTg1MzgsNTg1MzksNTg1NDAsNTg1NDEsNTg1NDIsNTg1NDMsNTg1NDQsNTg1NDUsNTg1NDYsNTg1NDcsNTg1NDgsNTg1NDksNTg1NTAsNTg1NTEsNTg1NTIsNTg1NTMsNTg1NTQsNTg1NTUsNTg1NTYsNTg1NTcsNTg1NTgsNTg1NTksNTg1NjAsNTg1NjEsNTg1NjIsNTg1NjMsNTg1NjQsNTg1NjVdLFxuICBcImdiMTgwMzAtcmFuZ2VzXCI6W1swLDEyOF0sWzM2LDE2NV0sWzM4LDE2OV0sWzQ1LDE3OF0sWzUwLDE4NF0sWzgxLDIxNl0sWzg5LDIyNl0sWzk1LDIzNV0sWzk2LDIzOF0sWzEwMCwyNDRdLFsxMDMsMjQ4XSxbMTA0LDI1MV0sWzEwNSwyNTNdLFsxMDksMjU4XSxbMTI2LDI3Nl0sWzEzMywyODRdLFsxNDgsMzAwXSxbMTcyLDMyNV0sWzE3NSwzMjldLFsxNzksMzM0XSxbMjA4LDM2NF0sWzMwNiw0NjNdLFszMDcsNDY1XSxbMzA4LDQ2N10sWzMwOSw0NjldLFszMTAsNDcxXSxbMzExLDQ3M10sWzMxMiw0NzVdLFszMTMsNDc3XSxbMzQxLDUwNl0sWzQyOCw1OTRdLFs0NDMsNjEwXSxbNTQ0LDcxMl0sWzU0NSw3MTZdLFs1NTgsNzMwXSxbNzQxLDkzMF0sWzc0Miw5MzhdLFs3NDksOTYyXSxbNzUwLDk3MF0sWzgwNSwxMDI2XSxbODE5LDExMDRdLFs4MjAsMTEwNl0sWzc5MjIsODIwOV0sWzc5MjQsODIxNV0sWzc5MjUsODIxOF0sWzc5MjcsODIyMl0sWzc5MzQsODIzMV0sWzc5NDMsODI0MV0sWzc5NDQsODI0NF0sWzc5NDUsODI0Nl0sWzc5NTAsODI1Ml0sWzgwNjIsODM2NV0sWzgxNDgsODQ1Ml0sWzgxNDksODQ1NF0sWzgxNTIsODQ1OF0sWzgxNjQsODQ3MV0sWzgxNzQsODQ4Ml0sWzgyMzYsODU1Nl0sWzgyNDAsODU3MF0sWzgyNjIsODU5Nl0sWzgyNjQsODYwMl0sWzgzNzQsODcxM10sWzgzODAsODcyMF0sWzgzODEsODcyMl0sWzgzODQsODcyNl0sWzgzODgsODczMV0sWzgzOTAsODczN10sWzgzOTIsODc0MF0sWzgzOTMsODc0Ml0sWzgzOTQsODc0OF0sWzgzOTYsODc1MV0sWzg0MDEsODc2MF0sWzg0MDYsODc2Nl0sWzg0MTYsODc3N10sWzg0MTksODc4MV0sWzg0MjQsODc4N10sWzg0MzcsODgwMl0sWzg0MzksODgwOF0sWzg0NDUsODgxNl0sWzg0ODIsODg1NF0sWzg0ODUsODg1OF0sWzg0OTYsODg3MF0sWzg1MjEsODg5Nl0sWzg2MDMsODk3OV0sWzg5MzYsOTMyMl0sWzg5NDYsOTM3Ml0sWzkwNDYsOTU0OF0sWzkwNTAsOTU4OF0sWzkwNjMsOTYxNl0sWzkwNjYsOTYyMl0sWzkwNzYsOTYzNF0sWzkwOTIsOTY1Ml0sWzkxMDAsOTY2Ml0sWzkxMDgsOTY3Ml0sWzkxMTEsOTY3Nl0sWzkxMTMsOTY4MF0sWzkxMzEsOTcwMl0sWzkxNjIsOTczNV0sWzkxNjQsOTczOF0sWzkyMTgsOTc5M10sWzkyMTksOTc5NV0sWzExMzI5LDExOTA2XSxbMTEzMzEsMTE5MDldLFsxMTMzNCwxMTkxM10sWzExMzM2LDExOTE3XSxbMTEzNDYsMTE5MjhdLFsxMTM2MSwxMTk0NF0sWzExMzYzLDExOTQ3XSxbMTEzNjYsMTE5NTFdLFsxMTM3MCwxMTk1Nl0sWzExMzcyLDExOTYwXSxbMTEzNzUsMTE5NjRdLFsxMTM4OSwxMTk3OV0sWzExNjgyLDEyMjg0XSxbMTE2ODYsMTIyOTJdLFsxMTY4NywxMjMxMl0sWzExNjkyLDEyMzE5XSxbMTE2OTQsMTIzMzBdLFsxMTcxNCwxMjM1MV0sWzExNzE2LDEyNDM2XSxbMTE3MjMsMTI0NDddLFsxMTcyNSwxMjUzNV0sWzExNzMwLDEyNTQzXSxbMTE3MzYsMTI1ODZdLFsxMTk4MiwxMjg0Ml0sWzExOTg5LDEyODUwXSxbMTIxMDIsMTI5NjRdLFsxMjMzNiwxMzIwMF0sWzEyMzQ4LDEzMjE1XSxbMTIzNTAsMTMyMThdLFsxMjM4NCwxMzI1M10sWzEyMzkzLDEzMjYzXSxbMTIzOTUsMTMyNjddLFsxMjM5NywxMzI3MF0sWzEyNTEwLDEzMzg0XSxbMTI1NTMsMTM0MjhdLFsxMjg1MSwxMzcyN10sWzEyOTYyLDEzODM5XSxbMTI5NzMsMTM4NTFdLFsxMzczOCwxNDYxN10sWzEzODIzLDE0NzAzXSxbMTM5MTksMTQ4MDFdLFsxMzkzMywxNDgxNl0sWzE0MDgwLDE0OTY0XSxbMTQyOTgsMTUxODNdLFsxNDU4NSwxNTQ3MV0sWzE0Njk4LDE1NTg1XSxbMTU1ODMsMTY0NzFdLFsxNTg0NywxNjczNl0sWzE2MzE4LDE3MjA4XSxbMTY0MzQsMTczMjVdLFsxNjQzOCwxNzMzMF0sWzE2NDgxLDE3Mzc0XSxbMTY3MjksMTc2MjNdLFsxNzEwMiwxNzk5N10sWzE3MTIyLDE4MDE4XSxbMTczMTUsMTgyMTJdLFsxNzMyMCwxODIxOF0sWzE3NDAyLDE4MzAxXSxbMTc0MTgsMTgzMThdLFsxNzg1OSwxODc2MF0sWzE3OTA5LDE4ODExXSxbMTc5MTEsMTg4MTRdLFsxNzkxNSwxODgyMF0sWzE3OTE2LDE4ODIzXSxbMTc5MzYsMTg4NDRdLFsxNzkzOSwxODg0OF0sWzE3OTYxLDE4ODcyXSxbMTg2NjQsMTk1NzZdLFsxODcwMywxOTYyMF0sWzE4ODE0LDE5NzM4XSxbMTg5NjIsMTk4ODddLFsxOTA0Myw0MDg3MF0sWzMzNDY5LDU5MjQ0XSxbMzM0NzAsNTkzMzZdLFszMzQ3MSw1OTM2N10sWzMzNDg0LDU5NDEzXSxbMzM0ODUsNTk0MTddLFszMzQ5MCw1OTQyM10sWzMzNDk3LDU5NDMxXSxbMzM1MDEsNTk0MzddLFszMzUwNSw1OTQ0M10sWzMzNTEzLDU5NDUyXSxbMzM1MjAsNTk0NjBdLFszMzUzNiw1OTQ3OF0sWzMzNTUwLDU5NDkzXSxbMzc4NDUsNjM3ODldLFszNzkyMSw2Mzg2Nl0sWzM3OTQ4LDYzODk0XSxbMzgwMjksNjM5NzZdLFszODAzOCw2Mzk4Nl0sWzM4MDY0LDY0MDE2XSxbMzgwNjUsNjQwMThdLFszODA2Niw2NDAyMV0sWzM4MDY5LDY0MDI1XSxbMzgwNzUsNjQwMzRdLFszODA3Niw2NDAzN10sWzM4MDc4LDY0MDQyXSxbMzkxMDgsNjUwNzRdLFszOTEwOSw2NTA5M10sWzM5MTEzLDY1MTA3XSxbMzkxMTQsNjUxMTJdLFszOTExNSw2NTEyN10sWzM5MTE2LDY1MTMyXSxbMzkyNjUsNjUzNzVdLFszOTM5NCw2NTUxMF0sWzE4OTAwMCw2NTUzNl1dLFxuICBcImppczAyMDhcIjpbMTIyODgsMTIyODksMTIyOTAsNjUyOTIsNjUyOTQsMTI1MzksNjUzMDYsNjUzMDcsNjUzMTEsNjUyODEsMTI0NDMsMTI0NDQsMTgwLDY1MzQ0LDE2OCw2NTM0Miw2NTUwNyw2NTM0MywxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw4MjEzLDgyMDgsNjUyOTUsNjUzNDAsNjUzNzQsODc0MSw2NTM3Miw4MjMwLDgyMjksODIxNiw4MjE3LDgyMjAsODIyMSw2NTI4OCw2NTI4OSwxMjMwOCwxMjMwOSw2NTMzOSw2NTM0MSw2NTM3MSw2NTM3MywxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSw2NTI5MSw2NTI5MywxNzcsMjE1LDI0Nyw2NTMwOSw4ODAwLDY1MzA4LDY1MzEwLDg4MDYsODgwNyw4NzM0LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTUwOSw2NTI4NCw2NTUwNCw2NTUwNSw2NTI4NSw2NTI4Myw2NTI4Niw2NTI5MCw2NTMxMiwxNjcsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4MjUxLDEyMzA2LDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODc0Myw4NzQ0LDY1NTA2LDg2NTgsODY2MCw4NzA0LDg3MDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODQ5MSw4MjQwLDk4MzksOTgzNyw5ODM0LDgyMjQsODIyNSwxODIsbnVsbCxudWxsLG51bGwsbnVsbCw5NzExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsbnVsbCxudWxsLG51bGwsbnVsbCwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsOTMyNyw5MzI4LDkzMjksOTMzMCw5MzMxLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCwxMzEyOSwxMzA3NiwxMzA5MCwxMzEzMywxMzA4MCwxMzA5NSwxMzA1OSwxMzExMCwxMzEzNywxMzE0MywxMzA2OSwxMzA5NCwxMzA5MSwxMzA5OSwxMzEzMCwxMzExNSwxMzIxMiwxMzIxMywxMzIxNCwxMzE5OCwxMzE5OSwxMzI1MiwxMzIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTMxNzksMTIzMTcsMTIzMTksODQ3MCwxMzI2MSw4NDgxLDEyOTY0LDEyOTY1LDEyOTY2LDEyOTY3LDEyOTY4LDEyODQ5LDEyODUwLDEyODU3LDEzMTgyLDEzMTgxLDEzMTgwLDg3ODYsODgwMSw4NzQ3LDg3NTAsODcyMSw4NzMwLDg4NjksODczNiw4NzM1LDg4OTUsODc1Nyw4NzQ1LDg3NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDEyNCwyMTc4MiwyMzA0MywzODQ2MywyMTY5NiwyNDg1OSwyNTM4NCwyMzAzMCwzNjg5OCwzMzkwOSwzMzU2NCwzMTMxMiwyNDc0NiwyNTU2OSwyODE5NywyNjA5MywzMzg5NCwzMzQ0NiwzOTkyNSwyNjc3MSwyMjMxMSwyNjAxNywyNTIwMSwyMzQ1MSwyMjk5MiwzNDQyNywzOTE1NiwzMjA5OCwzMjE5MCwzOTgyMiwyNTExMCwzMTkwMywzNDk5OSwyMzQzMywyNDI0NSwyNTM1MywyNjI2MywyNjY5NiwzODM0MywzODc5NywyNjQ0NywyMDE5NywyMDIzNCwyMDMwMSwyMDM4MSwyMDU1MywyMjI1OCwyMjgzOSwyMjk5NiwyMzA0MSwyMzU2MSwyNDc5OSwyNDg0NywyNDk0NCwyNjEzMSwyNjg4NSwyODg1OCwzMDAzMSwzMDA2NCwzMTIyNywzMjE3MywzMjIzOSwzMjk2MywzMzgwNiwzNDkxNSwzNTU4NiwzNjk0OSwzNjk4NiwyMTMwNywyMDExNywyMDEzMywyMjQ5NSwzMjk0NiwzNzA1NywzMDk1OSwxOTk2OCwyMjc2OSwyODMyMiwzNjkyMCwzMTI4MiwzMzU3NiwzMzQxOSwzOTk4MywyMDgwMSwyMTM2MCwyMTY5MywyMTcyOSwyMjI0MCwyMzAzNSwyNDM0MSwzOTE1NCwyODEzOSwzMjk5NiwzNDA5MywzODQ5OCwzODUxMiwzODU2MCwzODkwNywyMTUxNSwyMTQ5MSwyMzQzMSwyODg3OSwzMjcwMSwzNjgwMiwzODYzMiwyMTM1OSw0MDI4NCwzMTQxOCwxOTk4NSwzMDg2NywzMzI3NiwyODE5OCwyMjA0MCwyMTc2NCwyNzQyMSwzNDA3NCwzOTk5NSwyMzAxMywyMTQxNywyODAwNiwyOTkxNiwzODI4NywyMjA4MiwyMDExMywzNjkzOSwzODY0MiwzMzYxNSwzOTE4MCwyMTQ3MywyMTk0MiwyMzM0NCwyNDQzMywyNjE0NCwyNjM1NSwyNjYyOCwyNzcwNCwyNzg5MSwyNzk0NSwyOTc4NywzMDQwOCwzMTMxMCwzODk2NCwzMzUyMSwzNDkwNywzNTQyNCwzNzYxMywyODA4MiwzMDEyMywzMDQxMCwzOTM2NSwyNDc0MiwzNTU4NSwzNjIzNCwzODMyMiwyNzAyMiwyMTQyMSwyMDg3MCwyMjI5MCwyMjU3NiwyMjg1MiwyMzQ3NiwyNDMxMCwyNDYxNiwyNTUxMywyNTU4OCwyNzgzOSwyODQzNiwyODgxNCwyODk0OCwyOTAxNywyOTE0MSwyOTUwMywzMjI1NywzMzM5OCwzMzQ4OSwzNDE5OSwzNjk2MCwzNzQ2Nyw0MDIxOSwyMjYzMywyNjA0NCwyNzczOCwyOTk4OSwyMDk4NSwyMjgzMCwyMjg4NSwyNDQ0OCwyNDU0MCwyNTI3NiwyNjEwNiwyNzE3OCwyNzQzMSwyNzU3MiwyOTU3OSwzMjcwNSwzNTE1OCw0MDIzNiw0MDIwNiw0MDY0NCwyMzcxMywyNzc5OCwzMzY1OSwyMDc0MCwyMzYyNywyNTAxNCwzMzIyMiwyNjc0MiwyOTI4MSwyMDA1NywyMDQ3NCwyMTM2OCwyNDY4MSwyODIwMSwzMTMxMSwzODg5OSwxOTk3OSwyMTI3MCwyMDIwNiwyMDMwOSwyMDI4NSwyMDM4NSwyMDMzOSwyMTE1MiwyMTQ4NywyMjAyNSwyMjc5OSwyMzIzMywyMzQ3OCwyMzUyMSwzMTE4NSwyNjI0NywyNjUyNCwyNjU1MCwyNzQ2OCwyNzgyNywyODc3OSwyOTYzNCwzMTExNywzMTE2NiwzMTI5MiwzMTYyMywzMzQ1NywzMzQ5OSwzMzU0MCwzMzY1NSwzMzc3NSwzMzc0NywzNDY2MiwzNTUwNiwyMjA1NywzNjAwOCwzNjgzOCwzNjk0MiwzODY4NiwzNDQ0MiwyMDQyMCwyMzc4NCwyNTEwNSwyOTI3MywzMDAxMSwzMzI1MywzMzQ2OSwzNDU1OCwzNjAzMiwzODU5NywzOTE4NywzOTM4MSwyMDE3MSwyMDI1MCwzNTI5OSwyMjIzOCwyMjYwMiwyMjczMCwyNDMxNSwyNDU1NSwyNDYxOCwyNDcyNCwyNDY3NCwyNTA0MCwyNTEwNiwyNTI5NiwyNTkxMywzOTc0NSwyNjIxNCwyNjgwMCwyODAyMywyODc4NCwzMDAyOCwzMDM0MiwzMjExNywzMzQ0NSwzNDgwOSwzODI4MywzODU0MiwzNTk5NywyMDk3NywyMTE4MiwyMjgwNiwyMTY4MywyMzQ3NSwyMzgzMCwyNDkzNiwyNzAxMCwyODA3OSwzMDg2MSwzMzk5NSwzNDkwMywzNTQ0MiwzNzc5OSwzOTYwOCwyODAxMiwzOTMzNiwzNDUyMSwyMjQzNSwyNjYyMywzNDUxMCwzNzM5MCwyMTEyMywyMjE1MSwyMTUwOCwyNDI3NSwyNTMxMywyNTc4NSwyNjY4NCwyNjY4MCwyNzU3OSwyOTU1NCwzMDkwNiwzMTMzOSwzNTIyNiwzNTI4MiwzNjIwMywzNjYxMSwzNzEwMSwzODMwNywzODU0OCwzODc2MSwyMzM5OCwyMzczMSwyNzAwNSwzODk4OSwzODk5MCwyNTQ5OSwzMTUyMCwyNzE3OSwyNzI2MywyNjgwNiwzOTk0OSwyODUxMSwyMTEwNiwyMTkxNywyNDY4OCwyNTMyNCwyNzk2MywyODE2NywyODM2OSwzMzg4MywzNTA4OCwzNjY3NiwxOTk4OCwzOTk5MywyMTQ5NCwyNjkwNywyNzE5NCwzODc4OCwyNjY2NiwyMDgyOCwzMTQyNywzMzk3MCwzNzM0MCwzNzc3MiwyMjEwNyw0MDIzMiwyNjY1OCwzMzU0MSwzMzg0MSwzMTkwOSwyMTAwMCwzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAxNCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3NywzMjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4MiwzMzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwzODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEwNywzODU5MywzODkyOSwzODk5NiwzOTAwMCwyMDIyNSwyMDIzOCwyMTM2MSwyMTkxNiwyMjEyMCwyMjUyMiwyMjg1NSwyMzMwNSwyMzQ5MiwyMzY5NiwyNDA3NiwyNDE5MCwyNDUyNCwyNTU4MiwyNjQyNiwyNjA3MSwyNjA4MiwyNjM5OSwyNjgyNywyNjgyMCwyNzIzMSwyNDExMiwyNzU4OSwyNzY3MSwyNzc3MywzMDA3OSwzMTA0OCwyMzM5NSwzMTIzMiwzMjAwMCwyNDUwOSwzNTIxNSwzNTM1MiwzNjAyMCwzNjIxNSwzNjU1NiwzNjYzNywzOTEzOCwzOTQzOCwzOTc0MCwyMDA5NiwyMDYwNSwyMDczNiwyMjkzMSwyMzQ1MiwyNTEzNSwyNTIxNiwyNTgzNiwyNzQ1MCwyOTM0NCwzMDA5NywzMTA0NywzMjY4MSwzNDgxMSwzNTUxNiwzNTY5NiwyNTUxNiwzMzczOCwzODgxNiwyMTUxMywyMTUwNywyMTkzMSwyNjcwOCwyNzIyNCwzNTQ0MCwzMDc1OSwyNjQ4NSw0MDY1MywyMTM2NCwyMzQ1OCwzMzA1MCwzNDM4NCwzNjg3MCwxOTk5MiwyMDAzNywyMDE2NywyMDI0MSwyMTQ1MCwyMTU2MCwyMzQ3MCwyNDMzOSwyNDYxMywyNTkzNywyNjQyOSwyNzcxNCwyNzc2MiwyNzg3NSwyODc5MiwyOTY5OSwzMTM1MCwzMTQwNiwzMTQ5NiwzMjAyNiwzMTk5OCwzMjEwMiwyNjA4NywyOTI3NSwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTMxMiwyNTM2OSwyODE5MiwzNDM5NCwzNTM3NywzNjMxNywzNzYyNCwyODQxNywzMTE0MiwzOTc3MCwyMDEzNiwyMDEzOSwyMDE0MCwyMDM3OSwyMDM4NCwyMDY4OSwyMDgwNywzMTQ3OCwyMDg0OSwyMDk4MiwyMTMzMiwyMTI4MSwyMTM3NSwyMTQ4MywyMTkzMiwyMjY1OSwyMzc3NywyNDM3NSwyNDM5NCwyNDYyMywyNDY1NiwyNDY4NSwyNTM3NSwyNTk0NSwyNzIxMSwyNzg0MSwyOTM3OCwyOTQyMSwzMDcwMywzMzAxNiwzMzAyOSwzMzI4OCwzNDEyNiwzNzExMSwzNzg1NywzODkxMSwzOTI1NSwzOTUxNCwyMDIwOCwyMDk1NywyMzU5NywyNjI0MSwyNjk4OSwyMzYxNiwyNjM1NCwyNjk5NywyOTU3NywyNjcwNCwzMTg3MywyMDY3NywyMTIyMCwyMjM0MywyNDA2MiwzNzY3MCwyNjAyMCwyNzQyNywyNzQ1MywyOTc0OCwzMTEwNSwzMTE2NSwzMTU2MywzMjIwMiwzMzQ2NSwzMzc0MCwzNDk0MywzNTE2NywzNTY0MSwzNjgxNywzNzMyOSwyMTUzNSwzNzUwNCwyMDA2MSwyMDUzNCwyMTQ3NywyMTMwNiwyOTM5OSwyOTU5MCwzMDY5NywzMzUxMCwzNjUyNywzOTM2NiwzOTM2OCwzOTM3OCwyMDg1NSwyNDg1OCwzNDM5OCwyMTkzNiwzMTM1NCwyMDU5OCwyMzUwNywzNjkzNSwzODUzMywyMDAxOCwyNzM1NSwzNzM1MSwyMzYzMywyMzYyNCwyNTQ5NiwzMTM5MSwyNzc5NSwzODc3MiwzNjcwNSwzMTQwMiwyOTA2NiwzODUzNiwzMTg3NCwyNjY0NywzMjM2OCwyNjcwNSwzNzc0MCwyMTIzNCwyMTUzMSwzNDIxOSwzNTM0NywzMjY3NiwzNjU1NywzNzA4OSwyMTM1MCwzNDk1MiwzMTA0MSwyMDQxOCwyMDY3MCwyMTAwOSwyMDgwNCwyMTg0MywyMjMxNywyOTY3NCwyMjQxMSwyMjg2NSwyNDQxOCwyNDQ1MiwyNDY5MywyNDk1MCwyNDkzNSwyNTAwMSwyNTUyMiwyNTY1OCwyNTk2NCwyNjIyMywyNjY5MCwyODE3OSwzMDA1NCwzMTI5MywzMTk5NSwzMjA3NiwzMjE1MywzMjMzMSwzMjYxOSwzMzU1MCwzMzYxMCwzNDUwOSwzNTMzNiwzNTQyNywzNTY4NiwzNjYwNSwzODkzOCw0MDMzNSwzMzQ2NCwzNjgxNCwzOTkxMiwyMTEyNywyNTExOSwyNTczMSwyODYwOCwzODU1MywyNjY4OSwyMDYyNSwyNzQyNCwyNzc3MCwyODUwMCwzMTM0OCwzMjA4MCwzNDg4MCwzNTM2MywyNjM3NiwyMDIxNCwyMDUzNywyMDUxOCwyMDU4MSwyMDg2MCwyMTA0OCwyMTA5MSwyMTkyNywyMjI4NywyMjUzMywyMzI0NCwyNDMxNCwyNTAxMCwyNTA4MCwyNTMzMSwyNTQ1OCwyNjkwOCwyNzE3NywyOTMwOSwyOTM1NiwyOTQ4NiwzMDc0MCwzMDgzMSwzMjEyMSwzMDQ3NiwzMjkzNywzNTIxMSwzNTYwOSwzNjA2NiwzNjU2MiwzNjk2MywzNzc0OSwzODUyMiwzODk5NywzOTQ0Myw0MDU2OCwyMDgwMywyMTQwNywyMTQyNywyNDE4NywyNDM1OCwyODE4NywyODMwNCwyOTU3MiwyOTY5NCwzMjA2NywzMzMzNSwzNTMyOCwzNTU3OCwzODQ4MCwyMDA0NiwyMDQ5MSwyMTQ3NiwyMTYyOCwyMjI2NiwyMjk5MywyMzM5NiwyNDA0OSwyNDIzNSwyNDM1OSwyNTE0NCwyNTkyNSwyNjU0MywyODI0NiwyOTM5MiwzMTk0NiwzNDk5NiwzMjkyOSwzMjk5MywzMzc3NiwzNDM4MiwzNTQ2MywzNjMyOCwzNzQzMSwzODU5OSwzOTAxNSw0MDcyMywyMDExNiwyMDExNCwyMDIzNywyMTMyMCwyMTU3NywyMTU2NiwyMzA4NywyNDQ2MCwyNDQ4MSwyNDczNSwyNjc5MSwyNzI3OCwyOTc4NiwzMDg0OSwzNTQ4NiwzNTQ5MiwzNTcwMywzNzI2NCwyMDA2MiwzOTg4MSwyMDEzMiwyMDM0OCwyMDM5OSwyMDUwNSwyMDUwMiwyMDgwOSwyMDg0NCwyMTE1MSwyMTE3NywyMTI0NiwyMTQwMiwyMTQ3NSwyMTUyMSwyMTUxOCwyMTg5NywyMjM1MywyMjQzNCwyMjkwOSwyMzM4MCwyMzM4OSwyMzQzOSwyNDAzNywyNDAzOSwyNDA1NSwyNDE4NCwyNDE5NSwyNDIxOCwyNDI0NywyNDM0NCwyNDY1OCwyNDkwOCwyNTIzOSwyNTMwNCwyNTUxMSwyNTkxNSwyNjExNCwyNjE3OSwyNjM1NiwyNjQ3NywyNjY1NywyNjc3NSwyNzA4MywyNzc0MywyNzk0NiwyODAwOSwyODIwNywyODMxNywzMDAwMiwzMDM0MywzMDgyOCwzMTI5NSwzMTk2OCwzMjAwNSwzMjAyNCwzMjA5NCwzMjE3NywzMjc4OSwzMjc3MSwzMjk0MywzMjk0NSwzMzEwOCwzMzE2NywzMzMyMiwzMzYxOCwzNDg5MiwzNDkxMywzNTYxMSwzNjAwMiwzNjA5MiwzNzA2NiwzNzIzNywzNzQ4OSwzMDc4MywzNzYyOCwzODMwOCwzODQ3NywzODkxNywzOTMyMSwzOTY0MCw0MDI1MSwyMTA4MywyMTE2MywyMTQ5NSwyMTUxMiwyMjc0MSwyNTMzNSwyODY0MCwzNTk0NiwzNjcwMyw0MDYzMywyMDgxMSwyMTA1MSwyMTU3OCwyMjI2OSwzMTI5NiwzNzIzOSw0MDI4OCw0MDY1OCwyOTUwOCwyODQyNSwzMzEzNiwyOTk2OSwyNDU3MywyNDc5NCwzOTU5MiwyOTQwMywzNjc5NiwyNzQ5MiwzODkxNSwyMDE3MCwyMjI1NiwyMjM3MiwyMjcxOCwyMzEzMCwyNDY4MCwyNTAzMSwyNjEyNywyNjExOCwyNjY4MSwyNjgwMSwyODE1MSwzMDE2NSwzMjA1OCwzMzM5MCwzOTc0NiwyMDEyMywyMDMwNCwyMTQ0OSwyMTc2NiwyMzkxOSwyNDAzOCwyNDA0NiwyNjYxOSwyNzgwMSwyOTgxMSwzMDcyMiwzNTQwOCwzNzc4MiwzNTAzOSwyMjM1MiwyNDIzMSwyNTM4NywyMDY2MSwyMDY1MiwyMDg3NywyNjM2OCwyMTcwNSwyMjYyMiwyMjk3MSwyMzQ3MiwyNDQyNSwyNTE2NSwyNTUwNSwyNjY4NSwyNzUwNywyODE2OCwyODc5NywzNzMxOSwyOTMxMiwzMDc0MSwzMDc1OCwzMTA4NSwyNTk5OCwzMjA0OCwzMzc1NiwzNTAwOSwzNjYxNywzODU1NSwyMTA5MiwyMjMxMiwyNjQ0OCwzMjYxOCwzNjAwMSwyMDkxNiwyMjMzOCwzODQ0MiwyMjU4NiwyNzAxOCwzMjk0OCwyMTY4MiwyMzgyMiwyMjUyNCwzMDg2OSw0MDQ0MiwyMDMxNiwyMTA2NiwyMTY0MywyNTY2MiwyNjE1MiwyNjM4OCwyNjYxMywzMTM2NCwzMTU3NCwzMjAzNCwzNzY3OSwyNjcxNiwzOTg1MywzMTU0NSwyMTI3MywyMDg3NCwyMTA0NywyMzUxOSwyNTMzNCwyNTc3NCwyNTgzMCwyNjQxMywyNzU3OCwzNDIxNywzODYwOSwzMDM1MiwzOTg5NCwyNTQyMCwzNzYzOCwzOTg1MSwzMDM5OSwyNjE5NCwxOTk3NywyMDYzMiwyMTQ0MiwyMzY2NSwyNDgwOCwyNTc0NiwyNTk1NSwyNjcxOSwyOTE1OCwyOTY0MiwyOTk4NywzMTYzOSwzMjM4NiwzNDQ1MywzNTcxNSwzNjA1OSwzNzI0MCwzOTE4NCwyNjAyOCwyNjI4MywyNzUzMSwyMDE4MSwyMDE4MCwyMDI4MiwyMDM1MSwyMTA1MCwyMTQ5NiwyMTQ5MCwyMTk4NywyMjIzNSwyMjc2MywyMjk4NywyMjk4NSwyMzAzOSwyMzM3NiwyMzYyOSwyNDA2NiwyNDEwNywyNDUzNSwyNDYwNSwyNTM1MSwyNTkwMywyMzM4OCwyNjAzMSwyNjA0NSwyNjA4OCwyNjUyNSwyNzQ5MCwyNzUxNSwyNzY2MywyOTUwOSwzMTA0OSwzMTE2OSwzMTk5MiwzMjAyNSwzMjA0MywzMjkzMCwzMzAyNiwzMzI2NywzNTIyMiwzNTQyMiwzNTQzMywzNTQzMCwzNTQ2OCwzNTU2NiwzNjAzOSwzNjA2MCwzODYwNCwzOTE2NCwyNzUwMywyMDEwNywyMDI4NCwyMDM2NSwyMDgxNiwyMzM4MywyMzU0NiwyNDkwNCwyNTM0NSwyNjE3OCwyNzQyNSwyODM2MywyNzgzNSwyOTI0NiwyOTg4NSwzMDE2NCwzMDkxMywzMTAzNCwzMjc4MCwzMjgxOSwzMzI1OCwzMzk0MCwzNjc2NiwyNzcyOCw0MDU3NSwyNDMzNSwzNTY3Miw0MDIzNSwzMTQ4MiwzNjYwMCwyMzQzNywzODYzNSwxOTk3MSwyMTQ4OSwyMjUxOSwyMjgzMywyMzI0MSwyMzQ2MCwyNDcxMywyODI4NywyODQyMiwzMDE0MiwzNjA3NCwyMzQ1NSwzNDA0OCwzMTcxMiwyMDU5NCwyNjYxMiwzMzQzNywyMzY0OSwzNDEyMiwzMjI4NiwzMzI5NCwyMDg4OSwyMzU1NiwyNTQ0OCwzNjE5OCwyNjAxMiwyOTAzOCwzMTAzOCwzMjAyMywzMjc3MywzNTYxMywzNjU1NCwzNjk3NCwzNDUwMywzNzAzNCwyMDUxMSwyMTI0MiwyMzYxMCwyNjQ1MSwyODc5NiwyOTIzNywzNzE5NiwzNzMyMCwzNzY3NSwzMzUwOSwyMzQ5MCwyNDM2OSwyNDgyNSwyMDAyNywyMTQ2MiwyMzQzMiwyNTE2MywyNjQxNywyNzUzMCwyOTQxNywyOTY2NCwzMTI3OCwzMzEzMSwzNjI1OSwzNzIwMiwzOTMxOCwyMDc1NCwyMTQ2MywyMTYxMCwyMzU1MSwyNTQ4MCwyNzE5MywzMjE3MiwzODY1NiwyMjIzNCwyMTQ1NCwyMTYwOCwyMzQ0NywyMzYwMSwyNDAzMCwyMDQ2MiwyNDgzMywyNTM0MiwyNzk1NCwzMTE2OCwzMTE3OSwzMjA2NiwzMjMzMywzMjcyMiwzMzI2MSwzMzMxMSwzMzkzNiwzNDg4NiwzNTE4NiwzNTcyOCwzNjQ2OCwzNjY1NSwzNjkxMywzNzE5NSwzNzIyOCwzODU5OCwzNzI3NiwyMDE2MCwyMDMwMywyMDgwNSwyMTMxMywyNDQ2NywyNTEwMiwyNjU4MCwyNzcxMywyODE3MSwyOTUzOSwzMjI5NCwzNzMyNSwzNzUwNywyMTQ2MCwyMjgwOSwyMzQ4NywyODExMywzMTA2OSwzMjMwMiwzMTg5OSwyMjY1NCwyOTA4NywyMDk4NiwzNDg5OSwzNjg0OCwyMDQyNiwyMzgwMywyNjE0OSwzMDYzNiwzMTQ1OSwzMzMwOCwzOTQyMywyMDkzNCwyNDQ5MCwyNjA5MiwyNjk5MSwyNzUyOSwyODE0NywyODMxMCwyODUxNiwzMDQ2MiwzMjAyMCwyNDAzMywzNjk4MSwzNzI1NSwzODkxOCwyMDk2NiwyMTAyMSwyNTE1MiwyNjI1NywyNjMyOSwyODE4NiwyNDI0NiwzMjIxMCwzMjYyNiwyNjM2MCwzNDIyMywzNDI5NSwzNTU3NiwyMTE2MSwyMTQ2NSwyMjg5OSwyNDIwNywyNDQ2NCwyNDY2MSwzNzYwNCwzODUwMCwyMDY2MywyMDc2NywyMTIxMywyMTI4MCwyMTMxOSwyMTQ4NCwyMTczNiwyMTgzMCwyMTgwOSwyMjAzOSwyMjg4OCwyMjk3NCwyMzEwMCwyMzQ3NywyMzU1OCwyMzU2NywyMzU2OSwyMzU3OCwyNDE5NiwyNDIwMiwyNDI4OCwyNDQzMiwyNTIxNSwyNTIyMCwyNTMwNywyNTQ4NCwyNTQ2MywyNjExOSwyNjEyNCwyNjE1NywyNjIzMCwyNjQ5NCwyNjc4NiwyNzE2NywyNzE4OSwyNzgzNiwyODA0MCwyODE2OSwyODI0OCwyODk4OCwyODk2NiwyOTAzMSwzMDE1MSwzMDQ2NSwzMDgxMywzMDk3NywzMTA3NywzMTIxNiwzMTQ1NiwzMTUwNSwzMTkxMSwzMjA1NywzMjkxOCwzMzc1MCwzMzkzMSwzNDEyMSwzNDkwOSwzNTA1OSwzNTM1OSwzNTM4OCwzNTQxMiwzNTQ0MywzNTkzNywzNjA2MiwzNzI4NCwzNzQ3OCwzNzc1OCwzNzkxMiwzODU1NiwzODgwOCwxOTk3OCwxOTk3NiwxOTk5OCwyMDA1NSwyMDg4NywyMTEwNCwyMjQ3OCwyMjU4MCwyMjczMiwyMzMzMCwyNDEyMCwyNDc3MywyNTg1NCwyNjQ2NSwyNjQ1NCwyNzk3MiwyOTM2NiwzMDA2NywzMTMzMSwzMzk3NiwzNTY5OCwzNzMwNCwzNzY2NCwyMjA2NSwyMjUxNiwzOTE2NiwyNTMyNSwyNjg5MywyNzU0MiwyOTE2NSwzMjM0MCwzMjg4NywzMzM5NCwzNTMwMiwzOTEzNSwzNDY0NSwzNjc4NSwyMzYxMSwyMDI4MCwyMDQ0OSwyMDQwNSwyMTc2NywyMzA3MiwyMzUxNywyMzUyOSwyNDUxNSwyNDkxMCwyNTM5MSwyNjAzMiwyNjE4NywyNjg2MiwyNzAzNSwyODAyNCwyODE0NSwzMDAwMywzMDEzNywzMDQ5NSwzMTA3MCwzMTIwNiwzMjA1MSwzMzI1MSwzMzQ1NSwzNDIxOCwzNTI0MiwzNTM4NiwzNjUyMywzNjc2MywzNjkxNCwzNzM0MSwzODY2MywyMDE1NCwyMDE2MSwyMDk5NSwyMjY0NSwyMjc2NCwyMzU2MywyOTk3OCwyMzYxMywzMzEwMiwzNTMzOCwzNjgwNSwzODQ5OSwzODc2NSwzMTUyNSwzNTUzNSwzODkyMCwzNzIxOCwyMjI1OSwyMTQxNiwzNjg4NywyMTU2MSwyMjQwMiwyNDEwMSwyNTUxMiwyNzcwMCwyODgxMCwzMDU2MSwzMTg4MywzMjczNiwzNDkyOCwzNjkzMCwzNzIwNCwzNzY0OCwzNzY1NiwzODU0MywyOTc5MCwzOTYyMCwyMzgxNSwyMzkxMywyNTk2OCwyNjUzMCwzNjI2NCwzODYxOSwyNTQ1NCwyNjQ0MSwyNjkwNSwzMzczMywzODkzNSwzODU5MiwzNTA3MCwyODU0OCwyNTcyMiwyMzU0NCwxOTk5MCwyODcxNiwzMDA0NSwyNjE1OSwyMDkzMiwyMTA0NiwyMTIxOCwyMjk5NSwyNDQ0OSwyNDYxNSwyNTEwNCwyNTkxOSwyNTk3MiwyNjE0MywyNjIyOCwyNjg2NiwyNjY0NiwyNzQ5MSwyODE2NSwyOTI5OCwyOTk4MywzMDQyNywzMTkzNCwzMjg1NCwyMjc2OCwzNTA2OSwzNTE5OSwzNTQ4OCwzNTQ3NSwzNTUzMSwzNjg5MywzNzI2NiwzODczOCwzODc0NSwyNTk5MywzMTI0NiwzMzAzMCwzODU4NywyNDEwOSwyNDc5NiwyNTExNCwyNjAyMSwyNjEzMiwyNjUxMiwzMDcwNywzMTMwOSwzMTgyMSwzMjMxOCwzMzAzNCwzNjAxMiwzNjE5NiwzNjMyMSwzNjQ0NywzMDg4OSwyMDk5OSwyNTMwNSwyNTUwOSwyNTY2NiwyNTI0MCwzNTM3MywzMTM2MywzMTY4MCwzNTUwMCwzODYzNCwzMjExOCwzMzI5MiwzNDYzMywyMDE4NSwyMDgwOCwyMTMxNSwyMTM0NCwyMzQ1OSwyMzU1NCwyMzU3NCwyNDAyOSwyNTEyNiwyNTE1OSwyNTc3NiwyNjY0MywyNjY3NiwyNzg0OSwyNzk3MywyNzkyNywyNjU3OSwyODUwOCwyOTAwNiwyOTA1MywyNjA1OSwzMTM1OSwzMTY2MSwzMjIxOCwzMjMzMCwzMjY4MCwzMzE0NiwzMzMwNywzMzMzNywzNDIxNCwzNTQzOCwzNjA0NiwzNjM0MSwzNjk4NCwzNjk4MywzNzU0OSwzNzUyMSwzODI3NSwzOTg1NCwyMTA2OSwyMTg5MiwyODQ3MiwyODk4MiwyMDg0MCwzMTEwOSwzMjM0MSwzMzIwMywzMTk1MCwyMjA5MiwyMjYwOSwyMzcyMCwyNTUxNCwyNjM2NiwyNjM2NSwyNjk3MCwyOTQwMSwzMDA5NSwzMDA5NCwzMDk5MCwzMTA2MiwzMTE5OSwzMTg5NSwzMjAzMiwzMjA2OCwzNDMxMSwzNTM4MCwzODQ1OSwzNjk2MSw0MDczNiwyMDcxMSwyMTEwOSwyMTQ1MiwyMTQ3NCwyMDQ4OSwyMTkzMCwyMjc2NiwyMjg2MywyOTI0NSwyMzQzNSwyMzY1MiwyMTI3NywyNDgwMywyNDgxOSwyNTQzNiwyNTQ3NSwyNTQwNywyNTUzMSwyNTgwNSwyNjA4OSwyNjM2MSwyNDAzNSwyNzA4NSwyNzEzMywyODQzNywyOTE1NywyMDEwNSwzMDE4NSwzMDQ1NiwzMTM3OSwzMTk2NywzMjIwNywzMjE1NiwzMjg2NSwzMzYwOSwzMzYyNCwzMzkwMCwzMzk4MCwzNDI5OSwzNTAxMywzNjIwOCwzNjg2NSwzNjk3MywzNzc4MywzODY4NCwzOTQ0MiwyMDY4NywyMjY3OSwyNDk3NCwzMzIzNSwzNDEwMSwzNjEwNCwzNjg5NiwyMDQxOSwyMDU5NiwyMTA2MywyMTM2MywyNDY4NywyNTQxNywyNjQ2MywyODIwNCwzNjI3NSwzNjg5NSwyMDQzOSwyMzY0NiwzNjA0MiwyNjA2MywzMjE1NCwyMTMzMCwzNDk2NiwyMDg1NCwyNTUzOSwyMzM4NCwyMzQwMywyMzU2MiwyNTYxMywyNjQ0OSwzNjk1NiwyMDE4MiwyMjgxMCwyMjgyNiwyNzc2MCwzNTQwOSwyMTgyMiwyMjU0OSwyMjk0OSwyNDgxNiwyNTE3MSwyNjU2MSwzMzMzMywyNjk2NSwzODQ2NCwzOTM2NCwzOTQ2NCwyMDMwNywyMjUzNCwyMzU1MCwzMjc4NCwyMzcyOSwyNDExMSwyNDQ1MywyNDYwOCwyNDkwNywyNTE0MCwyNjM2NywyNzg4OCwyODM4MiwzMjk3NCwzMzE1MSwzMzQ5MiwzNDk1NSwzNjAyNCwzNjg2NCwzNjkxMCwzODUzOCw0MDY2NywzOTg5OSwyMDE5NSwyMTQ4OCwyMjgyMywzMTUzMiwzNzI2MSwzODk4OCw0MDQ0MSwyODM4MSwyODcxMSwyMTMzMSwyMTgyOCwyMzQyOSwyNTE3NiwyNTI0NiwyNTI5OSwyNzgxMCwyODY1NSwyOTczMCwzNTM1MSwzNzk0NCwyODYwOSwzNTU4MiwzMzU5MiwyMDk2NywzNDU1MiwyMTQ4MiwyMTQ4MSwyMDI5NCwzNjk0OCwzNjc4NCwyMjg5MCwzMzA3MywyNDA2MSwzMTQ2NiwzNjc5OSwyNjg0MiwzNTg5NSwyOTQzMiw0MDAwOCwyNzE5NywzNTUwNCwyMDAyNSwyMTMzNiwyMjAyMiwyMjM3NCwyNTI4NSwyNTUwNiwyNjA4NiwyNzQ3MCwyODEyOSwyODI1MSwyODg0NSwzMDcwMSwzMTQ3MSwzMTY1OCwzMjE4NywzMjgyOSwzMjk2NiwzNDUwNywzNTQ3NywzNzcyMywyMjI0MywyMjcyNywyNDM4MiwyNjAyOSwyNjI2MiwyNzI2NCwyNzU3MywzMDAwNywzNTUyNywyMDUxNiwzMDY5MywyMjMyMCwyNDM0NywyNDY3NywyNjIzNCwyNzc0NCwzMDE5NiwzMTI1OCwzMjYyMiwzMzI2OCwzNDU4NCwzNjkzMywzOTM0NywzMTY4OSwzMDA0NCwzMTQ4MSwzMTU2OSwzMzk4OCwzNjg4MCwzMTIwOSwzMTM3OCwzMzU5MCwyMzI2NSwzMDUyOCwyMDAxMywyMDIxMCwyMzQ0OSwyNDU0NCwyNTI3NywyNjE3MiwyNjYwOSwyNzg4MCwzNDQxMSwzNDkzNSwzNTM4NywzNzE5OCwzNzYxOSwzOTM3NiwyNzE1OSwyODcxMCwyOTQ4MiwzMzUxMSwzMzg3OSwzNjAxNSwxOTk2OSwyMDgwNiwyMDkzOSwyMTg5OSwyMzU0MSwyNDA4NiwyNDExNSwyNDE5MywyNDM0MCwyNDM3MywyNDQyNywyNDUwMCwyNTA3NCwyNTM2MSwyNjI3NCwyNjM5NywyODUyNiwyOTI2NiwzMDAxMCwzMDUyMiwzMjg4NCwzMzA4MSwzMzE0NCwzNDY3OCwzNTUxOSwzNTU0OCwzNjIyOSwzNjMzOSwzNzUzMCwzODI2MywzODkxNCw0MDE2NSwyMTE4OSwyNTQzMSwzMDQ1MiwyNjM4OSwyNzc4NCwyOTY0NSwzNjAzNSwzNzgwNiwzODUxNSwyNzk0MSwyMjY4NCwyNjg5NCwyNzA4NCwzNjg2MSwzNzc4NiwzMDE3MSwzNjg5MCwyMjYxOCwyNjYyNiwyNTUyNCwyNzEzMSwyMDI5MSwyODQ2MCwyNjU4NCwzNjc5NSwzNDA4NiwzMjE4MCwzNzcxNiwyNjk0MywyODUyOCwyMjM3OCwyMjc3NSwyMzM0MCwzMjA0NCwyOTIyNiwyMTUxNCwzNzM0Nyw0MDM3MiwyMDE0MSwyMDMwMiwyMDU3MiwyMDU5NywyMTA1OSwzNTk5OCwyMTU3NiwyMjU2NCwyMzQ1MCwyNDA5MywyNDIxMywyNDIzNywyNDMxMSwyNDM1MSwyNDcxNiwyNTI2OSwyNTQwMiwyNTU1MiwyNjc5OSwyNzcxMiwzMDg1NSwzMTExOCwzMTI0MywzMjIyNCwzMzM1MSwzNTMzMCwzNTU1OCwzNjQyMCwzNjg4MywzNzA0OCwzNzE2NSwzNzMzNiw0MDcxOCwyNzg3NywyNTY4OCwyNTgyNiwyNTk3MywyODQwNCwzMDM0MCwzMTUxNSwzNjk2OSwzNzg0MSwyODM0NiwyMTc0NiwyNDUwNSwyNTc2NCwzNjY4NSwzNjg0NSwzNzQ0NCwyMDg1NiwyMjYzNSwyMjgyNSwyMzYzNywyNDIxNSwyODE1NSwzMjM5OSwyOTk4MCwzNjAyOCwzNjU3OCwzOTAwMywyODg1NywyMDI1MywyNzU4MywyODU5MywzMDAwMCwzODY1MSwyMDgxNCwyMTUyMCwyMjU4MSwyMjYxNSwyMjk1NiwyMzY0OCwyNDQ2NiwyNjAwNywyNjQ2MCwyODE5MywzMDMzMSwzMzc1OSwzNjA3NywzNjg4NCwzNzExNywzNzcwOSwzMDc1NywzMDc3OCwyMTE2MiwyNDIzMCwyMjMwMywyMjkwMCwyNDU5NCwyMDQ5OCwyMDgyNiwyMDkwOCwyMDk0MSwyMDk5MiwyMTc3NiwyMjYxMiwyMjYxNiwyMjg3MSwyMzQ0NSwyMzc5OCwyMzk0NywyNDc2NCwyNTIzNywyNTY0NSwyNjQ4MSwyNjY5MSwyNjgxMiwyNjg0NywzMDQyMywyODEyMCwyODI3MSwyODA1OSwyODc4MywyOTEyOCwyNDQwMywzMDE2OCwzMTA5NSwzMTU2MSwzMTU3MiwzMTU3MCwzMTk1OCwzMjExMywyMTA0MCwzMzg5MSwzNDE1MywzNDI3NiwzNTM0MiwzNTU4OCwzNTkxMCwzNjM2NywzNjg2NywzNjg3OSwzNzkxMywzODUxOCwzODk1NywzOTQ3MiwzODM2MCwyMDY4NSwyMTIwNSwyMTUxNiwyMjUzMCwyMzU2NiwyNDk5OSwyNTc1OCwyNzkzNCwzMDY0MywzMTQ2MSwzMzAxMiwzMzc5NiwzNjk0NywzNzUwOSwyMzc3Niw0MDE5OSwyMTMxMSwyNDQ3MSwyNDQ5OSwyODA2MCwyOTMwNSwzMDU2MywzMTE2NywzMTcxNiwyNzYwMiwyOTQyMCwzNTUwMSwyNjYyNywyNzIzMywyMDk4NCwzMTM2MSwyNjkzMiwyMzYyNiw0MDE4MiwzMzUxNSwyMzQ5MywzNzE5MywyODcwMiwyMjEzNiwyMzY2MywyNDc3NSwyNTk1OCwyNzc4OCwzNTkzMCwzNjkyOSwzODkzMSwyMTU4NSwyNjMxMSwzNzM4OSwyMjg1NiwzNzAyNywyMDg2OSwyMDA0NSwyMDk3MCwzNDIwMSwzNTU5OCwyODc2MCwyNTQ2NiwzNzcwNywyNjk3OCwzOTM0OCwzMjI2MCwzMDA3MSwyMTMzNSwyNjk3NiwzNjU3NSwzODYyNywyNzc0MSwyMDEwOCwyMzYxMiwyNDMzNiwzNjg0MSwyMTI1MCwzNjA0OSwzMjkwNSwzNDQyNSwyNDMxOSwyNjA4NSwyMDA4MywyMDgzNywyMjkxNCwyMzYxNSwzODg5NCwyMDIxOSwyMjkyMiwyNDUyNSwzNTQ2OSwyODY0MSwzMTE1MiwzMTA3NCwyMzUyNywzMzkwNSwyOTQ4MywyOTEwNSwyNDE4MCwyNDU2NSwyNTQ2NywyNTc1NCwyOTEyMywzMTg5NiwyMDAzNSwyNDMxNiwyMDA0MywyMjQ5MiwyMjE3OCwyNDc0NSwyODYxMSwzMjAxMywzMzAyMSwzMzA3NSwzMzIxNSwzNjc4NiwzNTIyMywzNDQ2OCwyNDA1MiwyNTIyNiwyNTc3MywzNTIwNywyNjQ4NywyNzg3NCwyNzk2NiwyOTc1MCwzMDc3MiwyMzExMCwzMjYyOSwzMzQ1MywzOTM0MCwyMDQ2NywyNDI1OSwyNTMwOSwyNTQ5MCwyNTk0MywyNjQ3OSwzMDQwMywyOTI2MCwzMjk3MiwzMjk1NCwzNjY0OSwzNzE5NywyMDQ5MywyMjUyMSwyMzE4NiwyNjc1NywyNjk5NSwyOTAyOCwyOTQzNywzNjAyMywyMjc3MCwzNjA2NCwzODUwNiwzNjg4OSwzNDY4NywzMTIwNCwzMDY5NSwzMzgzMywyMDI3MSwyMTA5MywyMTMzOCwyNTI5MywyNjU3NSwyNzg1MCwzMDMzMywzMTYzNiwzMTg5MywzMzMzNCwzNDE4MCwzNjg0MywyNjMzMywyODQ0OCwyOTE5MCwzMjI4MywzMzcwNywzOTM2MSw0MDYxNCwyMDk4OSwzMTY2NSwzMDgzNCwzMTY3MiwzMjkwMywzMTU2MCwyNzM2OCwyNDE2MSwzMjkwOCwzMDAzMywzMDA0OCwyMDg0MywzNzQ3NCwyODMwMCwzMDMzMCwzNzI3MSwzOTY1OCwyMDI0MCwzMjYyNCwyNTI0NCwzMTU2NywzODMwOSw0MDE2OSwyMjEzOCwyMjYxNywzNDUzMiwzODU4OCwyMDI3NiwyMTAyOCwyMTMyMiwyMTQ1MywyMTQ2NywyNDA3MCwyNTY0NCwyNjAwMSwyNjQ5NSwyNzcxMCwyNzcyNiwyOTI1NiwyOTM1OSwyOTY3NywzMDAzNiwzMjMyMSwzMzMyNCwzNDI4MSwzNjAwOSwzMTY4NCwzNzMxOCwyOTAzMywzODkzMCwzOTE1MSwyNTQwNSwyNjIxNywzMDA1OCwzMDQzNiwzMDkyOCwzNDExNSwzNDU0MiwyMTI5MCwyMTMyOSwyMTU0MiwyMjkxNSwyNDE5OSwyNDQ0NCwyNDc1NCwyNTE2MSwyNTIwOSwyNTI1OSwyNjAwMCwyNzYwNCwyNzg1MiwzMDEzMCwzMDM4MiwzMDg2NSwzMTE5MiwzMjIwMywzMjYzMSwzMjkzMywzNDk4NywzNTUxMywzNjAyNywzNjk5MSwzODc1MCwzOTEzMSwyNzE0NywzMTgwMCwyMDYzMywyMzYxNCwyNDQ5NCwyNjUwMywyNzYwOCwyOTc0OSwzMDQ3MywzMjY1NCw0MDc2MywyNjU3MCwzMTI1NSwyMTMwNSwzMDA5MSwzOTY2MSwyNDQyMiwzMzE4MSwzMzc3NywzMjkyMCwyNDM4MCwyNDUxNywzMDA1MCwzMTU1OCwzNjkyNCwyNjcyNywyMzAxOSwyMzE5NSwzMjAxNiwzMDMzNCwzNTYyOCwyMDQ2OSwyNDQyNiwyNzE2MSwyNzcwMywyODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTQxMywzNTk2MSwyNDI4NywyNTU1MSwzMDE0OSwzMTE4NiwzMzQ5NSwzNzY3MiwzNzYxOCwzMzk0OCwzNDU0MSwzOTk4MSwyMTY5NywyNDQyOCwyNTk5NiwyNzk5NiwyODY5MywzNjAwNywzNjA1MSwzODk3MSwyNTkzNSwyOTk0MiwxOTk4MSwyMDE4NCwyMjQ5NiwyMjgyNywyMzE0MiwyMzUwMCwyMDkwNCwyNDA2NywyNDIyMCwyNDU5OCwyNTIwNiwyNTk3NSwyNjAyMywyNjIyMiwyODAxNCwyOTIzOCwzMTUyNiwzMzEwNCwzMzE3OCwzMzQzMywzNTY3NiwzNjAwMCwzNjA3MCwzNjIxMiwzODQyOCwzODQ2OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkxNCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwzOTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywyNDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2NiwzMjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwyNzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwyMTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5NywzMTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwyNDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3NiwyNjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwzNTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywyMDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwyNzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwyNDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkzNywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgxOCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwzMjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwzMzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwzMjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAxMSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgxMiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywyMDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwyNDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4NiwyODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwzODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0MiwyNzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwzNDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwzODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0MiwyNjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwyMDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEwNywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAyMyw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwzNzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3MiwzNTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAzNCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQzMSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwyNzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwzNDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIwMDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIwMDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIwMTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgzLDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMzLDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIwNDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIwNDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIwNDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcwLDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIwNzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIwNzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMxNDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEzLDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIxMDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIxMDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIxMTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIxMzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIyODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIxNDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUwLDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIxLDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIxNjc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIxNjk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIxNzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEyLDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIyMDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIyMDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIyMDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEwLDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIyMzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIyNDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIyNDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYxLDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEwLDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIyNzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIyODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAxLDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIzMjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIzMjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIzMzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAxLDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTkyLDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkxLDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIzNjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIzNjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIzOTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIzOTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIzOTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQyLDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0NjgzLDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIyLDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMyNjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgyLDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEyLDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMzMjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODkyLDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTExLDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQxLDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEwLDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEzLDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUxLDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIyLDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3MDAwLDI2OTg3LDI2OTY0LDI3MDA2LDI2OTkwLDI2OTM3LDI2OTk2LDI2OTQxLDI2OTY5LDI2OTI4LDI2OTc3LDI2OTc0LDI2OTczLDI3MDA5LDI2OTg2LDI3MDU4LDI3MDU0LDI3MDg4LDI3MDcxLDI3MDczLDI3MDkxLDI3MDcwLDI3MDg2LDIzNTI4LDI3MDgyLDI3MTAxLDI3MDY3LDI3MDc1LDI3MDQ3LDI3MTgyLDI3MDI1LDI3MDQwLDI3MDM2LDI3MDI5LDI3MDYwLDI3MTAyLDI3MTEyLDI3MTM4LDI3MTYzLDI3MTM1LDI3NDAyLDI3MTI5LDI3MTIyLDI3MTExLDI3MTQxLDI3MDU3LDI3MTY2LDI3MTE3LDI3MTU2LDI3MTE1LDI3MTQ2LDI3MTU0LDI3MzI5LDI3MTcxLDI3MTU1LDI3MjA0LDI3MTQ4LDI3MjUwLDI3MTkwLDI3MjU2LDI3MjA3LDI3MjM0LDI3MjI1LDI3MjM4LDI3MjA4LDI3MTkyLDI3MTcwLDI3MjgwLDI3Mjc3LDI3Mjk2LDI3MjY4LDI3Mjk4LDI3Mjk5LDI3Mjg3LDM0MzI3LDI3MzIzLDI3MzMxLDI3MzMwLDI3MzIwLDI3MzE1LDI3MzA4LDI3MzU4LDI3MzQ1LDI3MzU5LDI3MzA2LDI3MzU0LDI3MzcwLDI3Mzg3LDI3Mzk3LDM0MzI2LDI3Mzg2LDI3NDEwLDI3NDE0LDM5NzI5LDI3NDIzLDI3NDQ4LDI3NDQ3LDMwNDI4LDI3NDQ5LDM5MTUwLDI3NDYzLDI3NDU5LDI3NDY1LDI3NDcyLDI3NDgxLDI3NDc2LDI3NDgzLDI3NDg3LDI3NDg5LDI3NTEyLDI3NTEzLDI3NTE5LDI3NTIwLDI3NTI0LDI3NTIzLDI3NTMzLDI3NTQ0LDI3NTQxLDI3NTUwLDI3NTU2LDI3NTYyLDI3NTYzLDI3NTY3LDI3NTcwLDI3NTY5LDI3NTcxLDI3NTc1LDI3NTgwLDI3NTkwLDI3NTk1LDI3NjAzLDI3NjE1LDI3NjI4LDI3NjI3LDI3NjM1LDI3NjMxLDQwNjM4LDI3NjU2LDI3NjY3LDI3NjY4LDI3Njc1LDI3Njg0LDI3NjgzLDI3NzQyLDI3NzMzLDI3NzQ2LDI3NzU0LDI3Nzc4LDI3Nzg5LDI3ODAyLDI3Nzc3LDI3ODAzLDI3Nzc0LDI3NzUyLDI3NzYzLDI3Nzk0LDI3NzkyLDI3ODQ0LDI3ODg5LDI3ODU5LDI3ODM3LDI3ODYzLDI3ODQ1LDI3ODY5LDI3ODIyLDI3ODI1LDI3ODM4LDI3ODM0LDI3ODY3LDI3ODg3LDI3ODY1LDI3ODgyLDI3OTM1LDM0ODkzLDI3OTU4LDI3OTQ3LDI3OTY1LDI3OTYwLDI3OTI5LDI3OTU3LDI3OTU1LDI3OTIyLDI3OTE2LDI4MDAzLDI4MDUxLDI4MDA0LDI3OTk0LDI4MDI1LDI3OTkzLDI4MDQ2LDI4MDUzLDI4NjQ0LDI4MDM3LDI4MTUzLDI4MTgxLDI4MTcwLDI4MDg1LDI4MTAzLDI4MTM0LDI4MDg4LDI4MTAyLDI4MTQwLDI4MTI2LDI4MTA4LDI4MTM2LDI4MTE0LDI4MTAxLDI4MTU0LDI4MTIxLDI4MTMyLDI4MTE3LDI4MTM4LDI4MTQyLDI4MjA1LDI4MjcwLDI4MjA2LDI4MTg1LDI4Mjc0LDI4MjU1LDI4MjIyLDI4MTk1LDI4MjY3LDI4MjAzLDI4Mjc4LDI4MjM3LDI4MTkxLDI4MjI3LDI4MjE4LDI4MjM4LDI4MTk2LDI4NDE1LDI4MTg5LDI4MjE2LDI4MjkwLDI4MzMwLDI4MzEyLDI4MzYxLDI4MzQzLDI4MzcxLDI4MzQ5LDI4MzM1LDI4MzU2LDI4MzM4LDI4MzcyLDI4MzczLDI4MzAzLDI4MzI1LDI4MzU0LDI4MzE5LDI4NDgxLDI4NDMzLDI4NzQ4LDI4Mzk2LDI4NDA4LDI4NDE0LDI4NDc5LDI4NDAyLDI4NDY1LDI4Mzk5LDI4NDY2LDI4MzY0LDI4NDc4LDI4NDM1LDI4NDA3LDI4NTUwLDI4NTM4LDI4NTM2LDI4NTQ1LDI4NTQ0LDI4NTI3LDI4NTA3LDI4NjU5LDI4NTI1LDI4NTQ2LDI4NTQwLDI4NTA0LDI4NTU4LDI4NTYxLDI4NjEwLDI4NTE4LDI4NTk1LDI4NTc5LDI4NTc3LDI4NTgwLDI4NjAxLDI4NjE0LDI4NTg2LDI4NjM5LDI4NjI5LDI4NjUyLDI4NjI4LDI4NjMyLDI4NjU3LDI4NjU0LDI4NjM1LDI4NjgxLDI4NjgzLDI4NjY2LDI4Njg5LDI4NjczLDI4Njg3LDI4NjcwLDI4Njk5LDI4Njk4LDI4NTMyLDI4NzAxLDI4Njk2LDI4NzAzLDI4NzIwLDI4NzM0LDI4NzIyLDI4NzUzLDI4NzcxLDI4ODI1LDI4ODE4LDI4ODQ3LDI4OTEzLDI4ODQ0LDI4ODU2LDI4ODUxLDI4ODQ2LDI4ODk1LDI4ODc1LDI4ODkzLDI4ODg5LDI4OTM3LDI4OTI1LDI4OTU2LDI4OTUzLDI5MDI5LDI5MDEzLDI5MDY0LDI5MDMwLDI5MDI2LDI5MDA0LDI5MDE0LDI5MDM2LDI5MDcxLDI5MTc5LDI5MDYwLDI5MDc3LDI5MDk2LDI5MTAwLDI5MTQzLDI5MTEzLDI5MTE4LDI5MTM4LDI5MTI5LDI5MTQwLDI5MTM0LDI5MTUyLDI5MTY0LDI5MTU5LDI5MTczLDI5MTgwLDI5MTc3LDI5MTgzLDI5MTk3LDI5MjAwLDI5MjExLDI5MjI0LDI5MjI5LDI5MjI4LDI5MjMyLDI5MjM0LDI5MjQzLDI5MjQ0LDI5MjQ3LDI5MjQ4LDI5MjU0LDI5MjU5LDI5MjcyLDI5MzAwLDI5MzEwLDI5MzE0LDI5MzEzLDI5MzE5LDI5MzMwLDI5MzM0LDI5MzQ2LDI5MzUxLDI5MzY5LDI5MzYyLDI5Mzc5LDI5MzgyLDI5MzgwLDI5MzkwLDI5Mzk0LDI5NDEwLDI5NDA4LDI5NDA5LDI5NDMzLDI5NDMxLDIwNDk1LDI5NDYzLDI5NDUwLDI5NDY4LDI5NDYyLDI5NDY5LDI5NDkyLDI5NDg3LDI5NDgxLDI5NDc3LDI5NTAyLDI5NTE4LDI5NTE5LDQwNjY0LDI5NTI3LDI5NTQ2LDI5NTQ0LDI5NTUyLDI5NTYwLDI5NTU3LDI5NTYzLDI5NTYyLDI5NjQwLDI5NjE5LDI5NjQ2LDI5NjI3LDI5NjMyLDI5NjY5LDI5Njc4LDI5NjYyLDI5ODU4LDI5NzAxLDI5ODA3LDI5NzMzLDI5Njg4LDI5NzQ2LDI5NzU0LDI5NzgxLDI5NzU5LDI5NzkxLDI5Nzg1LDI5NzYxLDI5Nzg4LDI5ODAxLDI5ODA4LDI5Nzk1LDI5ODAyLDI5ODE0LDI5ODIyLDI5ODM1LDI5ODU0LDI5ODYzLDI5ODk4LDI5OTAzLDI5OTA4LDI5NjgxLDI5OTIwLDI5OTIzLDI5OTI3LDI5OTI5LDI5OTM0LDI5OTM4LDI5OTM2LDI5OTM3LDI5OTQ0LDI5OTQzLDI5OTU2LDI5OTU1LDI5OTU3LDI5OTY0LDI5OTY2LDI5OTY1LDI5OTczLDI5OTcxLDI5OTgyLDI5OTkwLDI5OTk2LDMwMDEyLDMwMDIwLDMwMDI5LDMwMDI2LDMwMDI1LDMwMDQzLDMwMDIyLDMwMDQyLDMwMDU3LDMwMDUyLDMwMDU1LDMwMDU5LDMwMDYxLDMwMDcyLDMwMDcwLDMwMDg2LDMwMDg3LDMwMDY4LDMwMDkwLDMwMDg5LDMwMDgyLDMwMTAwLDMwMTA2LDMwMTA5LDMwMTE3LDMwMTE1LDMwMTQ2LDMwMTMxLDMwMTQ3LDMwMTMzLDMwMTQxLDMwMTM2LDMwMTQwLDMwMTI5LDMwMTU3LDMwMTU0LDMwMTYyLDMwMTY5LDMwMTc5LDMwMTc0LDMwMjA2LDMwMjA3LDMwMjA0LDMwMjA5LDMwMTkyLDMwMjAyLDMwMTk0LDMwMTk1LDMwMjE5LDMwMjIxLDMwMjE3LDMwMjM5LDMwMjQ3LDMwMjQwLDMwMjQxLDMwMjQyLDMwMjQ0LDMwMjYwLDMwMjU2LDMwMjY3LDMwMjc5LDMwMjgwLDMwMjc4LDMwMzAwLDMwMjk2LDMwMzA1LDMwMzA2LDMwMzEyLDMwMzEzLDMwMzE0LDMwMzExLDMwMzE2LDMwMzIwLDMwMzIyLDMwMzI2LDMwMzI4LDMwMzMyLDMwMzM2LDMwMzM5LDMwMzQ0LDMwMzQ3LDMwMzUwLDMwMzU4LDMwMzU1LDMwMzYxLDMwMzYyLDMwMzg0LDMwMzg4LDMwMzkyLDMwMzkzLDMwMzk0LDMwNDAyLDMwNDEzLDMwNDIyLDMwNDE4LDMwNDMwLDMwNDMzLDMwNDM3LDMwNDM5LDMwNDQyLDM0MzUxLDMwNDU5LDMwNDcyLDMwNDcxLDMwNDY4LDMwNTA1LDMwNTAwLDMwNDk0LDMwNTAxLDMwNTAyLDMwNDkxLDMwNTE5LDMwNTIwLDMwNTM1LDMwNTU0LDMwNTY4LDMwNTcxLDMwNTU1LDMwNTY1LDMwNTkxLDMwNTkwLDMwNTg1LDMwNjA2LDMwNjAzLDMwNjA5LDMwNjI0LDMwNjIyLDMwNjQwLDMwNjQ2LDMwNjQ5LDMwNjU1LDMwNjUyLDMwNjUzLDMwNjUxLDMwNjYzLDMwNjY5LDMwNjc5LDMwNjgyLDMwNjg0LDMwNjkxLDMwNzAyLDMwNzE2LDMwNzMyLDMwNzM4LDMxMDE0LDMwNzUyLDMxMDE4LDMwNzg5LDMwODYyLDMwODM2LDMwODU0LDMwODQ0LDMwODc0LDMwODYwLDMwODgzLDMwOTAxLDMwODkwLDMwODk1LDMwOTI5LDMwOTE4LDMwOTIzLDMwOTMyLDMwOTEwLDMwOTA4LDMwOTE3LDMwOTIyLDMwOTU2LDMwOTUxLDMwOTM4LDMwOTczLDMwOTY0LDMwOTgzLDMwOTk0LDMwOTkzLDMxMDAxLDMxMDIwLDMxMDE5LDMxMDQwLDMxMDcyLDMxMDYzLDMxMDcxLDMxMDY2LDMxMDYxLDMxMDU5LDMxMDk4LDMxMTAzLDMxMTE0LDMxMTMzLDMxMTQzLDQwNzc5LDMxMTQ2LDMxMTUwLDMxMTU1LDMxMTYxLDMxMTYyLDMxMTc3LDMxMTg5LDMxMjA3LDMxMjEyLDMxMjAxLDMxMjAzLDMxMjQwLDMxMjQ1LDMxMjU2LDMxMjU3LDMxMjY0LDMxMjYzLDMxMTA0LDMxMjgxLDMxMjkxLDMxMjk0LDMxMjg3LDMxMjk5LDMxMzE5LDMxMzA1LDMxMzI5LDMxMzMwLDMxMzM3LDQwODYxLDMxMzQ0LDMxMzUzLDMxMzU3LDMxMzY4LDMxMzgzLDMxMzgxLDMxMzg0LDMxMzgyLDMxNDAxLDMxNDMyLDMxNDA4LDMxNDE0LDMxNDI5LDMxNDI4LDMxNDIzLDM2OTk1LDMxNDMxLDMxNDM0LDMxNDM3LDMxNDM5LDMxNDQ1LDMxNDQzLDMxNDQ5LDMxNDUwLDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYyLDMxNDY5LDMxNDcyLDMxNDkwLDMxNTAzLDMxNDk4LDMxNDk0LDMxNTM5LDMxNTEyLDMxNTEzLDMxNTE4LDMxNTQxLDMxNTI4LDMxNTQyLDMxNTY4LDMxNjEwLDMxNDkyLDMxNTY1LDMxNDk5LDMxNTY0LDMxNTU3LDMxNjA1LDMxNTg5LDMxNjA0LDMxNTkxLDMxNjAwLDMxNjAxLDMxNTk2LDMxNTk4LDMxNjQ1LDMxNjQwLDMxNjQ3LDMxNjI5LDMxNjQ0LDMxNjQyLDMxNjI3LDMxNjM0LDMxNjMxLDMxNTgxLDMxNjQxLDMxNjkxLDMxNjgxLDMxNjkyLDMxNjk1LDMxNjY4LDMxNjg2LDMxNzA5LDMxNzIxLDMxNzYxLDMxNzY0LDMxNzE4LDMxNzE3LDMxODQwLDMxNzQ0LDMxNzUxLDMxNzYzLDMxNzMxLDMxNzM1LDMxNzY3LDMxNzU3LDMxNzM0LDMxNzc5LDMxNzgzLDMxNzg2LDMxNzc1LDMxNzk5LDMxNzg3LDMxODA1LDMxODIwLDMxODExLDMxODI4LDMxODIzLDMxODA4LDMxODI0LDMxODMyLDMxODM5LDMxODQ0LDMxODMwLDMxODQ1LDMxODUyLDMxODYxLDMxODc1LDMxODg4LDMxOTA4LDMxOTE3LDMxOTA2LDMxOTE1LDMxOTA1LDMxOTEyLDMxOTIzLDMxOTIyLDMxOTIxLDMxOTE4LDMxOTI5LDMxOTMzLDMxOTM2LDMxOTQxLDMxOTM4LDMxOTYwLDMxOTU0LDMxOTY0LDMxOTcwLDM5NzM5LDMxOTgzLDMxOTg2LDMxOTg4LDMxOTkwLDMxOTk0LDMyMDA2LDMyMDAyLDMyMDI4LDMyMDIxLDMyMDEwLDMyMDY5LDMyMDc1LDMyMDQ2LDMyMDUwLDMyMDYzLDMyMDUzLDMyMDcwLDMyMTE1LDMyMDg2LDMyMDc4LDMyMTE0LDMyMTA0LDMyMTEwLDMyMDc5LDMyMDk5LDMyMTQ3LDMyMTM3LDMyMDkxLDMyMTQzLDMyMTI1LDMyMTU1LDMyMTg2LDMyMTc0LDMyMTYzLDMyMTgxLDMyMTk5LDMyMTg5LDMyMTcxLDMyMzE3LDMyMTYyLDMyMTc1LDMyMjIwLDMyMTg0LDMyMTU5LDMyMTc2LDMyMjE2LDMyMjIxLDMyMjI4LDMyMjIyLDMyMjUxLDMyMjQyLDMyMjI1LDMyMjYxLDMyMjY2LDMyMjkxLDMyMjg5LDMyMjc0LDMyMzA1LDMyMjg3LDMyMjY1LDMyMjY3LDMyMjkwLDMyMzI2LDMyMzU4LDMyMzE1LDMyMzA5LDMyMzEzLDMyMzIzLDMyMzExLDMyMzA2LDMyMzE0LDMyMzU5LDMyMzQ5LDMyMzQyLDMyMzUwLDMyMzQ1LDMyMzQ2LDMyMzc3LDMyMzYyLDMyMzYxLDMyMzgwLDMyMzc5LDMyMzg3LDMyMjEzLDMyMzgxLDM2NzgyLDMyMzgzLDMyMzkyLDMyMzkzLDMyMzk2LDMyNDAyLDMyNDAwLDMyNDAzLDMyNDA0LDMyNDA2LDMyMzk4LDMyNDExLDMyNDEyLDMyNTY4LDMyNTcwLDMyNTgxLDMyNTg4LDMyNTg5LDMyNTkwLDMyNTkyLDMyNTkzLDMyNTk3LDMyNTk2LDMyNjAwLDMyNjA3LDMyNjA4LDMyNjE2LDMyNjE3LDMyNjE1LDMyNjMyLDMyNjQyLDMyNjQ2LDMyNjQzLDMyNjQ4LDMyNjQ3LDMyNjUyLDMyNjYwLDMyNjcwLDMyNjY5LDMyNjY2LDMyNjc1LDMyNjg3LDMyNjkwLDMyNjk3LDMyNjg2LDMyNjk0LDMyNjk2LDM1Njk3LDMyNzA5LDMyNzEwLDMyNzE0LDMyNzI1LDMyNzI0LDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzU1LDMyNzYxLDM5MTMyLDMyNzc0LDMyNzcyLDMyNzc5LDMyNzg2LDMyNzkyLDMyNzkzLDMyNzk2LDMyODAxLDMyODA4LDMyODMxLDMyODI3LDMyODQyLDMyODM4LDMyODUwLDMyODU2LDMyODU4LDMyODYzLDMyODY2LDMyODcyLDMyODgzLDMyODgyLDMyODgwLDMyODg2LDMyODg5LDMyODkzLDMyODk1LDMyOTAwLDMyOTAyLDMyOTAxLDMyOTIzLDMyOTE1LDMyOTIyLDMyOTQxLDIwODgwLDMyOTQwLDMyOTg3LDMyOTk3LDMyOTg1LDMyOTg5LDMyOTY0LDMyOTg2LDMyOTgyLDMzMDMzLDMzMDA3LDMzMDA5LDMzMDUxLDMzMDY1LDMzMDU5LDMzMDcxLDMzMDk5LDM4NTM5LDMzMDk0LDMzMDg2LDMzMTA3LDMzMTA1LDMzMDIwLDMzMTM3LDMzMTM0LDMzMTI1LDMzMTI2LDMzMTQwLDMzMTU1LDMzMTYwLDMzMTYyLDMzMTUyLDMzMTU0LDMzMTg0LDMzMTczLDMzMTg4LDMzMTg3LDMzMTE5LDMzMTcxLDMzMTkzLDMzMjAwLDMzMjA1LDMzMjE0LDMzMjA4LDMzMjEzLDMzMjE2LDMzMjE4LDMzMjEwLDMzMjI1LDMzMjI5LDMzMjMzLDMzMjQxLDMzMjQwLDMzMjI0LDMzMjQyLDMzMjQ3LDMzMjQ4LDMzMjU1LDMzMjc0LDMzMjc1LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg1LDMzMjg3LDMzMjkwLDMzMjkzLDMzMjk2LDMzMzAyLDMzMzIxLDMzMzIzLDMzMzM2LDMzMzMxLDMzMzQ0LDMzMzY5LDMzMzY4LDMzMzczLDMzMzcwLDMzMzc1LDMzMzgwLDMzMzc4LDMzMzg0LDMzMzg2LDMzMzg3LDMzMzI2LDMzMzkzLDMzMzk5LDMzNDAwLDMzNDA2LDMzNDIxLDMzNDI2LDMzNDUxLDMzNDM5LDMzNDY3LDMzNDUyLDMzNTA1LDMzNTA3LDMzNTAzLDMzNDkwLDMzNTI0LDMzNTIzLDMzNTMwLDMzNjgzLDMzNTM5LDMzNTMxLDMzNTI5LDMzNTAyLDMzNTQyLDMzNTAwLDMzNTQ1LDMzNDk3LDMzNTg5LDMzNTg4LDMzNTU4LDMzNTg2LDMzNTg1LDMzNjAwLDMzNTkzLDMzNjE2LDMzNjA1LDMzNTgzLDMzNTc5LDMzNTU5LDMzNTYwLDMzNjY5LDMzNjkwLDMzNzA2LDMzNjk1LDMzNjk4LDMzNjg2LDMzNTcxLDMzNjc4LDMzNjcxLDMzNjc0LDMzNjYwLDMzNzE3LDMzNjUxLDMzNjUzLDMzNjk2LDMzNjczLDMzNzA0LDMzNzgwLDMzODExLDMzNzcxLDMzNzQyLDMzNzg5LDMzNzk1LDMzNzUyLDMzODAzLDMzNzI5LDMzNzgzLDMzNzk5LDMzNzYwLDMzNzc4LDMzODA1LDMzODI2LDMzODI0LDMzNzI1LDMzODQ4LDM0MDU0LDMzNzg3LDMzOTAxLDMzODM0LDMzODUyLDM0MTM4LDMzOTI0LDMzOTExLDMzODk5LDMzOTY1LDMzOTAyLDMzOTIyLDMzODk3LDMzODYyLDMzODM2LDMzOTAzLDMzOTEzLDMzODQ1LDMzOTk0LDMzODkwLDMzOTc3LDMzOTgzLDMzOTUxLDM0MDA5LDMzOTk3LDMzOTc5LDM0MDEwLDM0MDAwLDMzOTg1LDMzOTkwLDM0MDA2LDMzOTUzLDM0MDgxLDM0MDQ3LDM0MDM2LDM0MDcxLDM0MDcyLDM0MDkyLDM0MDc5LDM0MDY5LDM0MDY4LDM0MDQ0LDM0MTEyLDM0MTQ3LDM0MTM2LDM0MTIwLDM0MTEzLDM0MzA2LDM0MTIzLDM0MTMzLDM0MTc2LDM0MjEyLDM0MTg0LDM0MTkzLDM0MTg2LDM0MjE2LDM0MTU3LDM0MTk2LDM0MjAzLDM0MjgyLDM0MTgzLDM0MjA0LDM0MTY3LDM0MTc0LDM0MTkyLDM0MjQ5LDM0MjM0LDM0MjU1LDM0MjMzLDM0MjU2LDM0MjYxLDM0MjY5LDM0Mjc3LDM0MjY4LDM0Mjk3LDM0MzE0LDM0MzIzLDM0MzE1LDM0MzAyLDM0Mjk4LDM0MzEwLDM0MzM4LDM0MzMwLDM0MzUyLDM0MzY3LDM0MzgxLDIwMDUzLDM0Mzg4LDM0Mzk5LDM0NDA3LDM0NDE3LDM0NDUxLDM0NDY3LDM0NDczLDM0NDc0LDM0NDQzLDM0NDQ0LDM0NDg2LDM0NDc5LDM0NTAwLDM0NTAyLDM0NDgwLDM0NTA1LDM0ODUxLDM0NDc1LDM0NTE2LDM0NTI2LDM0NTM3LDM0NTQwLDM0NTI3LDM0NTIzLDM0NTQzLDM0NTc4LDM0NTY2LDM0NTY4LDM0NTYwLDM0NTYzLDM0NTU1LDM0NTc3LDM0NTY5LDM0NTczLDM0NTUzLDM0NTcwLDM0NjEyLDM0NjIzLDM0NjE1LDM0NjE5LDM0NTk3LDM0NjAxLDM0NTg2LDM0NjU2LDM0NjU1LDM0NjgwLDM0NjM2LDM0NjM4LDM0Njc2LDM0NjQ3LDM0NjY0LDM0NjcwLDM0NjQ5LDM0NjQzLDM0NjU5LDM0NjY2LDM0ODIxLDM0NzIyLDM0NzE5LDM0NjkwLDM0NzM1LDM0NzYzLDM0NzQ5LDM0NzUyLDM0NzY4LDM4NjE0LDM0NzMxLDM0NzU2LDM0NzM5LDM0NzU5LDM0NzU4LDM0NzQ3LDM0Nzk5LDM0ODAyLDM0Nzg0LDM0ODMxLDM0ODI5LDM0ODE0LDM0ODA2LDM0ODA3LDM0ODMwLDM0NzcwLDM0ODMzLDM0ODM4LDM0ODM3LDM0ODUwLDM0ODQ5LDM0ODY1LDM0ODcwLDM0ODczLDM0ODU1LDM0ODc1LDM0ODg0LDM0ODgyLDM0ODk4LDM0OTA1LDM0OTEwLDM0OTE0LDM0OTIzLDM0OTQ1LDM0OTQyLDM0OTc0LDM0OTMzLDM0OTQxLDM0OTk3LDM0OTMwLDM0OTQ2LDM0OTY3LDM0OTYyLDM0OTkwLDM0OTY5LDM0OTc4LDM0OTU3LDM0OTgwLDM0OTkyLDM1MDA3LDM0OTkzLDM1MDExLDM1MDEyLDM1MDI4LDM1MDMyLDM1MDMzLDM1MDM3LDM1MDY1LDM1MDc0LDM1MDY4LDM1MDYwLDM1MDQ4LDM1MDU4LDM1MDc2LDM1MDg0LDM1MDgyLDM1MDkxLDM1MTM5LDM1MTAyLDM1MTA5LDM1MTE0LDM1MTE1LDM1MTM3LDM1MTQwLDM1MTMxLDM1MTI2LDM1MTI4LDM1MTQ4LDM1MTAxLDM1MTY4LDM1MTY2LDM1MTc0LDM1MTcyLDM1MTgxLDM1MTc4LDM1MTgzLDM1MTg4LDM1MTkxLDM1MTk4LDM1MjAzLDM1MjA4LDM1MjEwLDM1MjE5LDM1MjI0LDM1MjMzLDM1MjQxLDM1MjM4LDM1MjQ0LDM1MjQ3LDM1MjUwLDM1MjU4LDM1MjYxLDM1MjYzLDM1MjY0LDM1MjkwLDM1MjkyLDM1MjkzLDM1MzAzLDM1MzE2LDM1MzIwLDM1MzMxLDM1MzUwLDM1MzQ0LDM1MzQwLDM1MzU1LDM1MzU3LDM1MzY1LDM1MzgyLDM1MzkzLDM1NDE5LDM1NDEwLDM1Mzk4LDM1NDAwLDM1NDUyLDM1NDM3LDM1NDM2LDM1NDI2LDM1NDYxLDM1NDU4LDM1NDYwLDM1NDk2LDM1NDg5LDM1NDczLDM1NDkzLDM1NDk0LDM1NDgyLDM1NDkxLDM1NTI0LDM1NTMzLDM1NTIyLDM1NTQ2LDM1NTYzLDM1NTcxLDM1NTU5LDM1NTU2LDM1NTY5LDM1NjA0LDM1NTUyLDM1NTU0LDM1NTc1LDM1NTUwLDM1NTQ3LDM1NTk2LDM1NTkxLDM1NjEwLDM1NTUzLDM1NjA2LDM1NjAwLDM1NjA3LDM1NjE2LDM1NjM1LDM4ODI3LDM1NjIyLDM1NjI3LDM1NjQ2LDM1NjI0LDM1NjQ5LDM1NjYwLDM1NjYzLDM1NjYyLDM1NjU3LDM1NjcwLDM1Njc1LDM1Njc0LDM1NjkxLDM1Njc5LDM1NjkyLDM1Njk1LDM1NzAwLDM1NzA5LDM1NzEyLDM1NzI0LDM1NzI2LDM1NzMwLDM1NzMxLDM1NzM0LDM1NzM3LDM1NzM4LDM1ODk4LDM1OTA1LDM1OTAzLDM1OTEyLDM1OTE2LDM1OTE4LDM1OTIwLDM1OTI1LDM1OTM4LDM1OTQ4LDM1OTYwLDM1OTYyLDM1OTcwLDM1OTc3LDM1OTczLDM1OTc4LDM1OTgxLDM1OTgyLDM1OTg4LDM1OTY0LDM1OTkyLDI1MTE3LDM2MDEzLDM2MDEwLDM2MDI5LDM2MDE4LDM2MDE5LDM2MDE0LDM2MDIyLDM2MDQwLDM2MDMzLDM2MDY4LDM2MDY3LDM2MDU4LDM2MDkzLDM2MDkwLDM2MDkxLDM2MTAwLDM2MTAxLDM2MTA2LDM2MTAzLDM2MTExLDM2MTA5LDM2MTEyLDQwNzgyLDM2MTE1LDM2MDQ1LDM2MTE2LDM2MTE4LDM2MTk5LDM2MjA1LDM2MjA5LDM2MjExLDM2MjI1LDM2MjQ5LDM2MjkwLDM2Mjg2LDM2MjgyLDM2MzAzLDM2MzE0LDM2MzEwLDM2MzAwLDM2MzE1LDM2Mjk5LDM2MzMwLDM2MzMxLDM2MzE5LDM2MzIzLDM2MzQ4LDM2MzYwLDM2MzYxLDM2MzUxLDM2MzgxLDM2MzgyLDM2MzY4LDM2MzgzLDM2NDE4LDM2NDA1LDM2NDAwLDM2NDA0LDM2NDI2LDM2NDIzLDM2NDI1LDM2NDI4LDM2NDMyLDM2NDI0LDM2NDQxLDM2NDUyLDM2NDQ4LDM2Mzk0LDM2NDUxLDM2NDM3LDM2NDcwLDM2NDY2LDM2NDc2LDM2NDgxLDM2NDg3LDM2NDg1LDM2NDg0LDM2NDkxLDM2NDkwLDM2NDk5LDM2NDk3LDM2NTAwLDM2NTA1LDM2NTIyLDM2NTEzLDM2NTI0LDM2NTI4LDM2NTUwLDM2NTI5LDM2NTQyLDM2NTQ5LDM2NTUyLDM2NTU1LDM2NTcxLDM2NTc5LDM2NjA0LDM2NjAzLDM2NTg3LDM2NjA2LDM2NjE4LDM2NjEzLDM2NjI5LDM2NjI2LDM2NjMzLDM2NjI3LDM2NjM2LDM2NjM5LDM2NjM1LDM2NjIwLDM2NjQ2LDM2NjU5LDM2NjY3LDM2NjY1LDM2Njc3LDM2Njc0LDM2NjcwLDM2Njg0LDM2NjgxLDM2Njc4LDM2Njg2LDM2Njk1LDM2NzAwLDM2NzA2LDM2NzA3LDM2NzA4LDM2NzY0LDM2NzY3LDM2NzcxLDM2NzgxLDM2NzgzLDM2NzkxLDM2ODI2LDM2ODM3LDM2ODM0LDM2ODQyLDM2ODQ3LDM2OTk5LDM2ODUyLDM2ODY5LDM2ODU3LDM2ODU4LDM2ODgxLDM2ODg1LDM2ODk3LDM2ODc3LDM2ODk0LDM2ODg2LDM2ODc1LDM2OTAzLDM2OTE4LDM2OTE3LDM2OTIxLDM2ODU2LDM2OTQzLDM2OTQ0LDM2OTQ1LDM2OTQ2LDM2ODc4LDM2OTM3LDM2OTI2LDM2OTUwLDM2OTUyLDM2OTU4LDM2OTY4LDM2OTc1LDM2OTgyLDM4NTY4LDM2OTc4LDM2OTk0LDM2OTg5LDM2OTkzLDM2OTkyLDM3MDAyLDM3MDAxLDM3MDA3LDM3MDMyLDM3MDM5LDM3MDQxLDM3MDQ1LDM3MDkwLDM3MDkyLDI1MTYwLDM3MDgzLDM3MTIyLDM3MTM4LDM3MTQ1LDM3MTcwLDM3MTY4LDM3MTk0LDM3MjA2LDM3MjA4LDM3MjE5LDM3MjIxLDM3MjI1LDM3MjM1LDM3MjM0LDM3MjU5LDM3MjU3LDM3MjUwLDM3MjgyLDM3MjkxLDM3Mjk1LDM3MjkwLDM3MzAxLDM3MzAwLDM3MzA2LDM3MzEyLDM3MzEzLDM3MzIxLDM3MzIzLDM3MzI4LDM3MzM0LDM3MzQzLDM3MzQ1LDM3MzM5LDM3MzcyLDM3MzY1LDM3MzY2LDM3NDA2LDM3Mzc1LDM3Mzk2LDM3NDIwLDM3Mzk3LDM3MzkzLDM3NDcwLDM3NDYzLDM3NDQ1LDM3NDQ5LDM3NDc2LDM3NDQ4LDM3NTI1LDM3NDM5LDM3NDUxLDM3NDU2LDM3NTMyLDM3NTI2LDM3NTIzLDM3NTMxLDM3NDY2LDM3NTgzLDM3NTYxLDM3NTU5LDM3NjA5LDM3NjQ3LDM3NjI2LDM3NzAwLDM3Njc4LDM3NjU3LDM3NjY2LDM3NjU4LDM3NjY3LDM3NjkwLDM3Njg1LDM3NjkxLDM3NzI0LDM3NzI4LDM3NzU2LDM3NzQyLDM3NzE4LDM3ODA4LDM3ODA0LDM3ODA1LDM3NzgwLDM3ODE3LDM3ODQ2LDM3ODQ3LDM3ODY0LDM3ODYxLDM3ODQ4LDM3ODI3LDM3ODUzLDM3ODQwLDM3ODMyLDM3ODYwLDM3OTE0LDM3OTA4LDM3OTA3LDM3ODkxLDM3ODk1LDM3OTA0LDM3OTQyLDM3OTMxLDM3OTQxLDM3OTIxLDM3OTQ2LDM3OTUzLDM3OTcwLDM3OTU2LDM3OTc5LDM3OTg0LDM3OTg2LDM3OTgyLDM3OTk0LDM3NDE3LDM4MDAwLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4MjkyLDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEyLDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAxLDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEzLDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4NjcwLDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkzLDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAxLDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIwLDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5MzkxLDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQwLDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQwMTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQwMjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQwMjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQwNTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQwNjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQwNjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAwLDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImppczAyMTJcIjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzI4LDcxMSwxODQsNzI5LDczMywxNzUsNzMxLDczMCw2NTM3NCw5MDAsOTAxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjEsMTY2LDE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTg2LDE3MCwxNjksMTc0LDg0ODIsMTY0LDg0NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkwMiw5MDQsOTA1LDkwNiw5MzgsbnVsbCw5MDgsbnVsbCw5MTAsOTM5LG51bGwsOTExLG51bGwsbnVsbCxudWxsLG51bGwsOTQwLDk0MSw5NDIsOTQzLDk3MCw5MTIsOTcyLDk2Miw5NzMsOTcxLDk0NCw5NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM4LDEwMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE4LDExMTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTgsMjcyLG51bGwsMjk0LG51bGwsMzA2LG51bGwsMzIxLDMxOSxudWxsLDMzMCwyMTYsMzM4LG51bGwsMzU4LDIyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjIsMzIwLDMyOSwzMzEsMjQ4LDMzOSwyMjMsMzU5LDI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5MywxOTIsMTk2LDE5NCwyNTgsNDYxLDI1NiwyNjAsMTk3LDE5NSwyNjIsMjY0LDI2OCwxOTksMjY2LDI3MCwyMDEsMjAwLDIwMywyMDIsMjgyLDI3OCwyNzQsMjgwLG51bGwsMjg0LDI4NiwyOTAsMjg4LDI5MiwyMDUsMjA0LDIwNywyMDYsNDYzLDMwNCwyOTgsMzAyLDI5NiwzMDgsMzEwLDMxMywzMTcsMzE1LDMyMywzMjcsMzI1LDIwOSwyMTEsMjEwLDIxNCwyMTIsNDY1LDMzNiwzMzIsMjEzLDM0MCwzNDQsMzQyLDM0NiwzNDgsMzUyLDM1MCwzNTYsMzU0LDIxOCwyMTcsMjIwLDIxOSwzNjQsNDY3LDM2OCwzNjIsMzcwLDM2NiwzNjAsNDcxLDQ3NSw0NzMsNDY5LDM3MiwyMjEsMzc2LDM3NCwzNzcsMzgxLDM3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIyNSwyMjQsMjI4LDIyNiwyNTksNDYyLDI1NywyNjEsMjI5LDIyNywyNjMsMjY1LDI2OSwyMzEsMjY3LDI3MSwyMzMsMjMyLDIzNSwyMzQsMjgzLDI3OSwyNzUsMjgxLDUwMSwyODUsMjg3LG51bGwsMjg5LDI5MywyMzcsMjM2LDIzOSwyMzgsNDY0LG51bGwsMjk5LDMwMywyOTcsMzA5LDMxMSwzMTQsMzE4LDMxNiwzMjQsMzI4LDMyNiwyNDEsMjQzLDI0MiwyNDYsMjQ0LDQ2NiwzMzcsMzMzLDI0NSwzNDEsMzQ1LDM0MywzNDcsMzQ5LDM1MywzNTEsMzU3LDM1NSwyNTAsMjQ5LDI1MiwyNTEsMzY1LDQ2OCwzNjksMzYzLDM3MSwzNjcsMzYxLDQ3Miw0NzYsNDc0LDQ3MCwzNzMsMjUzLDI1NSwzNzUsMzc4LDM4MiwzODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTcwLDE5OTcyLDE5OTczLDE5OTgwLDE5OTg2LDE5OTk5LDIwMDAzLDIwMDA0LDIwMDA4LDIwMDExLDIwMDE0LDIwMDE1LDIwMDE2LDIwMDIxLDIwMDMyLDIwMDMzLDIwMDM2LDIwMDM5LDIwMDQ5LDIwMDU4LDIwMDYwLDIwMDY3LDIwMDcyLDIwMDczLDIwMDg0LDIwMDg1LDIwMDg5LDIwMDk1LDIwMTA5LDIwMTE4LDIwMTE5LDIwMTI1LDIwMTQzLDIwMTUzLDIwMTYzLDIwMTc2LDIwMTg2LDIwMTg3LDIwMTkyLDIwMTkzLDIwMTk0LDIwMjAwLDIwMjA3LDIwMjA5LDIwMjExLDIwMjEzLDIwMjIxLDIwMjIyLDIwMjIzLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQ1LDIwMjQ2LDIwMjQ3LDIwMjQ5LDIwMjcwLDIwMjczLDIwMzIwLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg4LDIwMjkwLDIwMjk2LDIwMjk3LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzEyLDIwMzE5LDIwMzIzLDIwMzMwLDIwMzMyLDIwMzM0LDIwMzM3LDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUwLDIwMzUzLDIwMzU0LDIwMzU2LDIwMzU3LDIwMzYxLDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzcyLDIwMzc1LDIwMzc3LDIwMzc4LDIwMzgyLDIwMzgzLDIwNDAyLDIwNDA3LDIwNDA5LDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDIxLDIwNDIyLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDMxLDIwNDM0LDIwNDQ0LDIwNDQ4LDIwNDUwLDIwNDY0LDIwNDY2LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDg0LDIwNDg3LDIwNDkwLDIwNDkyLDIwNDk0LDIwNDk2LDIwNDk5LDIwNTAzLDIwNTA0LDIwNTA3LDIwNTA4LDIwNTA5LDIwNTEwLDIwNTE0LDIwNTE5LDIwNTI2LDIwNTI4LDIwNTMwLDIwNTMxLDIwNTMzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ5LDIwNTUwLDIwNTU0LDIwNTU2LDIwNTU4LDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY3LDIwNTY5LDIwNTc1LDIwNTc2LDIwNTc4LDIwNTc5LDIwNTgyLDIwNTgzLDIwNTg2LDIwNTg5LDIwNTkyLDIwNTkzLDIwNTM5LDIwNjA5LDIwNjExLDIwNjEyLDIwNjE0LDIwNjE4LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjMwLDIwNjM1LDIwNjM2LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjUwLDIwNjU1LDIwNjU2LDIwNjY1LDIwNjY2LDIwNjY5LDIwNjcyLDIwNjc1LDIwNjc2LDIwNjc5LDIwNjg0LDIwNjg2LDIwNjg4LDIwNjkxLDIwNjkyLDIwNjk2LDIwNzAwLDIwNzAxLDIwNzAzLDIwNzA2LDIwNzA4LDIwNzEwLDIwNzEyLDIwNzEzLDIwNzE5LDIwNzIxLDIwNzI2LDIwNzMwLDIwNzM0LDIwNzM5LDIwNzQyLDIwNzQzLDIwNzQ0LDIwNzQ3LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzIyLDIwNzUyLDIwNzU5LDIwNzYxLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzcxLDIwNzc1LDIwNzc2LDIwNzgwLDIwNzgxLDIwNzgzLDIwNzg1LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkyLDIwNzkzLDIwODAyLDIwODEwLDIwODE1LDIwODE5LDIwODIxLDIwODIzLDIwODI0LDIwODMxLDIwODM2LDIwODM4LDIwODYyLDIwODY3LDIwODY4LDIwODc1LDIwODc4LDIwODg4LDIwODkzLDIwODk3LDIwODk5LDIwOTA5LDIwOTIwLDIwOTIyLDIwOTI0LDIwOTI2LDIwOTI3LDIwOTMwLDIwOTM2LDIwOTQzLDIwOTQ1LDIwOTQ2LDIwOTQ3LDIwOTQ5LDIwOTUyLDIwOTU4LDIwOTYyLDIwOTY1LDIwOTc0LDIwOTc4LDIwOTc5LDIwOTgwLDIwOTgzLDIwOTkzLDIwOTk0LDIwOTk3LDIxMDEwLDIxMDExLDIxMDEzLDIxMDE0LDIxMDE2LDIxMDI2LDIxMDMyLDIxMDQxLDIxMDQyLDIxMDQ1LDIxMDUyLDIxMDYxLDIxMDY1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgyLDIxMDg0LDIxMDg3LDIxMDg4LDIxMDg5LDIxMDk0LDIxMTAyLDIxMTExLDIxMTEyLDIxMTEzLDIxMTIwLDIxMTIyLDIxMTI1LDIxMTMwLDIxMTMyLDIxMTM5LDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY3LDIxMTY4LDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc4LDIxMTc5LDIxMTgxLDIxMTg0LDIxMTg4LDIxMTkwLDIxMTkyLDIxMTk2LDIxMTk5LDIxMjAxLDIxMjA0LDIxMjA2LDIxMjExLDIxMjEyLDIxMjE3LDIxMjIxLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI4LDIxMjMyLDIxMjMzLDIxMjM2LDIxMjM4LDIxMjM5LDIxMjQ4LDIxMjUxLDIxMjU4LDIxMjU5LDIxMjYwLDIxMjY1LDIxMjY3LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk2LDIxMjk4LDIxMzAxLDIxMzA4LDIxMzA5LDIxMzEwLDIxMzE0LDIxMzI0LDIxMzIzLDIxMzM3LDIxMzM5LDIxMzQ1LDIxMzQ3LDIxMzQ5LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY5LDIxMzc0LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzkwLDIxMzk1LDIxMzk2LDIxNDAxLDIxNDA1LDIxNDA5LDIxNDEyLDIxNDE4LDIxNDE5LDIxNDIzLDIxNDI2LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDM0LDIxNDM3LDIxNDQwLDIxNDQ1LDIxNDU1LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY5LDIxNDcwLDIxNDcyLDIxNDc4LDIxNDc5LDIxNDkzLDIxNTA2LDIxNTIzLDIxNTMwLDIxNTM3LDIxNTQzLDIxNTQ0LDIxNTQ2LDIxNTUxLDIxNTUzLDIxNTU2LDIxNTU3LDIxNTcxLDIxNTcyLDIxNTc1LDIxNTgxLDIxNTgzLDIxNTk4LDIxNjAyLDIxNjA0LDIxNjA2LDIxNjA3LDIxNjA5LDIxNjExLDIxNjEzLDIxNjE0LDIxNjIwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjQwLDIxNjQxLDIxNjQ1LDIxNjQ5LDIxNjUzLDIxNjU0LDIxNjYwLDIxNjYzLDIxNjY1LDIxNjcwLDIxNjcxLDIxNjczLDIxNjc0LDIxNjc3LDIxNjc4LDIxNjgxLDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkxLDIxNjk1LDIxNzAyLDIxNzA2LDIxNzA5LDIxNzEwLDIxNzI4LDIxNzM4LDIxNzQwLDIxNzQzLDIxNzUwLDIxNzU2LDIxNzU4LDIxNzU5LDIxNzYwLDIxNzYxLDIxNzY1LDIxNzY4LDIxNzY5LDIxNzcyLDIxNzczLDIxNzc0LDIxNzgxLDIxODAyLDIxODAzLDIxODEwLDIxODEzLDIxODE0LDIxODE5LDIxODIwLDIxODIxLDIxODI1LDIxODMxLDIxODMzLDIxODM0LDIxODM3LDIxODQwLDIxODQxLDIxODQ4LDIxODUwLDIxODUxLDIxODU0LDIxODU2LDIxODU3LDIxODYwLDIxODYyLDIxODg3LDIxODg5LDIxODkwLDIxODk0LDIxODk2LDIxOTAyLDIxOTAzLDIxOTA1LDIxOTA2LDIxOTA3LDIxOTA4LDIxOTExLDIxOTIzLDIxOTI0LDIxOTMzLDIxOTM4LDIxOTUxLDIxOTUzLDIxOTU1LDIxOTU4LDIxOTYxLDIxOTYzLDIxOTY0LDIxOTY2LDIxOTY5LDIxOTcwLDIxOTcxLDIxOTc1LDIxOTc2LDIxOTc5LDIxOTgyLDIxOTg2LDIxOTkzLDIyMDA2LDIyMDE1LDIyMDIxLDIyMDI0LDIyMDI2LDIyMDI5LDIyMDMwLDIyMDMxLDIyMDMyLDIyMDMzLDIyMDM0LDIyMDQxLDIyMDYwLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDczLDIyMDc1LDIyMDc2LDIyMDc3LDIyMDc5LDIyMDgwLDIyMDgxLDIyMDgzLDIyMDg0LDIyMDg2LDIyMDg5LDIyMDkxLDIyMDkzLDIyMDk1LDIyMTAwLDIyMTEwLDIyMTEyLDIyMTEzLDIyMTE0LDIyMTE1LDIyMTE4LDIyMTIxLDIyMTI1LDIyMTI3LDIyMTI5LDIyMTMwLDIyMTMzLDIyMTQ4LDIyMTQ5LDIyMTUyLDIyMTU1LDIyMTU2LDIyMTY1LDIyMTY5LDIyMTcwLDIyMTczLDIyMTc0LDIyMTc1LDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkzLDIyMTk1LDIyMTk5LDIyMjA2LDIyMjEzLDIyMjE3LDIyMjE4LDIyMjE5LDIyMjIzLDIyMjI0LDIyMjIwLDIyMjIxLDIyMjMzLDIyMjM2LDIyMjM3LDIyMjM5LDIyMjQxLDIyMjQ0LDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjU3LDIyMjUxLDIyMjUzLDIyMjYyLDIyMjYzLDIyMjczLDIyMjc0LDIyMjc5LDIyMjgyLDIyMjg0LDIyMjg5LDIyMjkzLDIyMjk4LDIyMjk5LDIyMzAxLDIyMzA0LDIyMzA2LDIyMzA3LDIyMzA4LDIyMzA5LDIyMzEzLDIyMzE0LDIyMzE2LDIyMzE4LDIyMzE5LDIyMzIzLDIyMzI0LDIyMzMzLDIyMzM0LDIyMzM1LDIyMzQxLDIyMzQyLDIyMzQ4LDIyMzQ5LDIyMzU0LDIyMzcwLDIyMzczLDIyMzc1LDIyMzc2LDIyMzc5LDIyMzgxLDIyMzgyLDIyMzgzLDIyMzg0LDIyMzg1LDIyMzg3LDIyMzg4LDIyMzg5LDIyMzkxLDIyMzkzLDIyMzk0LDIyMzk1LDIyMzk2LDIyMzk4LDIyNDAxLDIyNDAzLDIyNDEyLDIyNDIwLDIyNDIzLDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDMzLDIyNDIxLDIyNDM5LDIyNDQwLDIyNDQxLDIyNDQ0LDIyNDU2LDIyNDYxLDIyNDcxLDIyNDcyLDIyNDc2LDIyNDc5LDIyNDg1LDIyNDkzLDIyNDk0LDIyNTAwLDIyNTAyLDIyNTAzLDIyNTA1LDIyNTA5LDIyNTEyLDIyNTE3LDIyNTE4LDIyNTIwLDIyNTI1LDIyNTI2LDIyNTI3LDIyNTMxLDIyNTMyLDIyNTM2LDIyNTM3LDIyNDk3LDIyNTQwLDIyNTQxLDIyNTU1LDIyNTU4LDIyNTU5LDIyNTYwLDIyNTY2LDIyNTY3LDIyNTczLDIyNTc4LDIyNTg1LDIyNTkxLDIyNjAxLDIyNjA0LDIyNjA1LDIyNjA3LDIyNjA4LDIyNjEzLDIyNjIzLDIyNjI1LDIyNjI4LDIyNjMxLDIyNjMyLDIyNjQ4LDIyNjUyLDIyNjU1LDIyNjU2LDIyNjU3LDIyNjYzLDIyNjY0LDIyNjY1LDIyNjY2LDIyNjY4LDIyNjY5LDIyNjcxLDIyNjcyLDIyNjc2LDIyNjc4LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjk0LDIyNjk3LDIyNzA1LDIyNzA2LDIyNzI0LDIyNzE2LDIyNzIyLDIyNzI4LDIyNzMzLDIyNzM0LDIyNzM2LDIyNzM4LDIyNzQwLDIyNzQyLDIyNzQ2LDIyNzQ5LDIyNzUzLDIyNzU0LDIyNzYxLDIyNzcxLDIyNzg5LDIyNzkwLDIyNzk1LDIyNzk2LDIyODAyLDIyODAzLDIyODA0LDM0MzY5LDIyODEzLDIyODE3LDIyODE5LDIyODIwLDIyODI0LDIyODMxLDIyODMyLDIyODM1LDIyODM3LDIyODM4LDIyODQ3LDIyODUxLDIyODU0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODkxLDIyODkzLDIyODk1LDIyODk4LDIyOTAxLDIyOTAyLDIyOTA1LDIyOTA3LDIyOTA4LDIyOTIzLDIyOTI0LDIyOTI2LDIyOTMwLDIyOTMzLDIyOTM1LDIyOTQzLDIyOTQ4LDIyOTUxLDIyOTU3LDIyOTU4LDIyOTU5LDIyOTYwLDIyOTYzLDIyOTY3LDIyOTcwLDIyOTcyLDIyOTc3LDIyOTc5LDIyOTgwLDIyOTg0LDIyOTg2LDIyOTg5LDIyOTk0LDIzMDA1LDIzMDA2LDIzMDA3LDIzMDExLDIzMDEyLDIzMDE1LDIzMDIyLDIzMDIzLDIzMDI1LDIzMDI2LDIzMDI4LDIzMDMxLDIzMDQwLDIzMDQ0LDIzMDUyLDIzMDUzLDIzMDU0LDIzMDU4LDIzMDU5LDIzMDcwLDIzMDc1LDIzMDc2LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDg1LDIzMDg4LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE2LDIzMTIwLDIzMTI1LDIzMTM0LDIzMTM5LDIzMTQxLDIzMTQzLDIzMTQ5LDIzMTU5LDIzMTYyLDIzMTYzLDIzMTY2LDIzMTc5LDIzMTg0LDIzMTg3LDIzMTkwLDIzMTkzLDIzMTk2LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAyLDIzMjA3LDIzMjEyLDIzMjE3LDIzMjE4LDIzMjE5LDIzMjIxLDIzMjI0LDIzMjI2LDIzMjI3LDIzMjMxLDIzMjM2LDIzMjM4LDIzMjQwLDIzMjQ3LDIzMjU4LDIzMjYwLDIzMjY0LDIzMjY5LDIzMjc0LDIzMjc4LDIzMjg1LDIzMjg2LDIzMjkzLDIzMjk2LDIzMjk3LDIzMzA0LDIzMzE5LDIzMzQ4LDIzMzIxLDIzMzIzLDIzMzI1LDIzMzI5LDIzMzMzLDIzMzQxLDIzMzUyLDIzMzYxLDIzMzcxLDIzMzcyLDIzMzc4LDIzMzgyLDIzMzkwLDIzNDAwLDIzNDA2LDIzNDA3LDIzNDIwLDIzNDIxLDIzNDIyLDIzNDIzLDIzNDI1LDIzNDI4LDIzNDMwLDIzNDM0LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQzLDIzNDQ0LDIzNDQ2LDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDg0LDIzNDg4LDIzNDg5LDIzNTAxLDIzNTAzLDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTIwLDIzNTM1LDIzNTM3LDIzNTQwLDIzNTQ5LDIzNTY0LDIzNTc1LDIzNTgyLDIzNTgzLDIzNTg3LDIzNTkwLDIzNTkzLDIzNTk1LDIzNTk2LDIzNTk4LDIzNjAwLDIzNjAyLDIzNjA1LDIzNjA2LDIzNjQxLDIzNjQyLDIzNjQ0LDIzNjUwLDIzNjUxLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjYxLDIzNjY0LDIzNjY4LDIzNjY5LDIzNjc0LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjg3LDIzNjg4LDIzNjkwLDIzNjk1LDIzNjk4LDIzNzA5LDIzNzExLDIzNzEyLDIzNzE0LDIzNzE1LDIzNzE4LDIzNzIyLDIzNzMwLDIzNzMyLDIzNzMzLDIzNzM4LDIzNzUzLDIzNzU1LDIzNzYyLDIzNzczLDIzNzY3LDIzNzkwLDIzNzkzLDIzNzk0LDIzNzk2LDIzODA5LDIzODE0LDIzODIxLDIzODI2LDIzODUxLDIzODQzLDIzODQ0LDIzODQ2LDIzODQ3LDIzODU3LDIzODYwLDIzODY1LDIzODY5LDIzODcxLDIzODc0LDIzODc1LDIzODc4LDIzODgwLDIzODkzLDIzODg5LDIzODk3LDIzODgyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA4LDIzOTE0LDIzOTE3LDIzOTIwLDIzOTI5LDIzOTMwLDIzOTM0LDIzOTM1LDIzOTM3LDIzOTM5LDIzOTQ0LDIzOTQ2LDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTYxLDIzOTYzLDIzOTY3LDIzOTY4LDIzOTc1LDIzOTc5LDIzOTg0LDIzOTg4LDIzOTkyLDIzOTkzLDI0MDAzLDI0MDA3LDI0MDExLDI0MDE2LDI0MDE0LDI0MDI0LDI0MDI1LDI0MDMyLDI0MDM2LDI0MDQxLDI0MDU2LDI0MDU3LDI0MDY0LDI0MDcxLDI0MDc3LDI0MDgyLDI0MDg0LDI0MDg1LDI0MDg4LDI0MDk1LDI0MDk2LDI0MTEwLDI0MTA0LDI0MTE0LDI0MTE3LDI0MTI2LDI0MTM5LDI0MTQ0LDI0MTM3LDI0MTQ1LDI0MTUwLDI0MTUyLDI0MTU1LDI0MTU2LDI0MTU4LDI0MTY4LDI0MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc2LDI0MTkyLDI0MjAzLDI0MjA2LDI0MjI2LDI0MjI4LDI0MjI5LDI0MjMyLDI0MjM0LDI0MjM2LDI0MjQxLDI0MjQzLDI0MjUzLDI0MjU0LDI0MjU1LDI0MjYyLDI0MjY4LDI0MjY3LDI0MjcwLDI0MjczLDI0Mjc0LDI0Mjc2LDI0Mjc3LDI0Mjg0LDI0Mjg2LDI0MjkzLDI0Mjk5LDI0MzIyLDI0MzI2LDI0MzI3LDI0MzI4LDI0MzM0LDI0MzQ1LDI0MzQ4LDI0MzQ5LDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcyLDI0Mzc0LDI0Mzc5LDI0MzgxLDI0MzgzLDI0Mzg0LDI0Mzg4LDI0Mzg5LDI0MzkxLDI0Mzk3LDI0NDAwLDI0NDA0LDI0NDA4LDI0NDExLDI0NDE2LDI0NDE5LDI0NDIwLDI0NDIzLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDQwLDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDU3LDI0NDYxLDI0NDYzLDI0NDcwLDI0NDc2LDI0NDc3LDI0NDgyLDI0NDg3LDI0NDkxLDI0NDg0LDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NTA0LDI0NTE2LDI0NTE5LDI0NTIwLDI0NTIxLDI0NTIzLDI0NTI4LDI0NTI5LDI0NTMwLDI0NTMxLDI0NTMyLDI0NTQyLDI0NTQ1LDI0NTQ2LDI0NTUyLDI0NTUzLDI0NTU0LDI0NTU2LDI0NTU3LDI0NTU4LDI0NTU5LDI0NTYyLDI0NTYzLDI0NTY2LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg2LDI0NTg5LDI0NTk1LDI0NTk2LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA3LDI0NjEyLDI0NjIxLDI0NjI3LDI0NjI5LDI0NjQwLDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUyLDI0NjU3LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY5LDI0NjczLDI0Njc5LDI0Njg5LDI0NzAyLDI0NzAzLDI0NzA2LDI0NzEwLDI0NzEyLDI0NzE0LDI0NzE4LDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI4LDI0NzMzLDI0NzM0LDI0NzM4LDI0NzQwLDI0NzQxLDI0NzQ0LDI0NzUyLDI0NzUzLDI0NzU5LDI0NzYzLDI0NzY2LDI0NzcwLDI0NzcyLDI0Nzc2LDI0Nzc3LDI0Nzc4LDI0Nzc5LDI0NzgyLDI0NzgzLDI0Nzg4LDI0Nzg5LDI0NzkzLDI0Nzk1LDI0Nzk3LDI0Nzk4LDI0ODAyLDI0ODA1LDI0ODE4LDI0ODIxLDI0ODI0LDI0ODI4LDI0ODI5LDI0ODM0LDI0ODM5LDI0ODQyLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUyLDI0ODU0LDI0ODU1LDI0ODU3LDI0ODYwLDI0ODYyLDI0ODY2LDI0ODc0LDI0ODc1LDI0ODgwLDI0ODgxLDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg5LDI0ODk3LDI0OTAxLDI0OTAyLDI0OTA1LDI0OTI2LDI0OTI4LDI0OTQwLDI0OTQ2LDI0OTUyLDI0OTU1LDI0OTU2LDI0OTU5LDI0OTYwLDI0OTYxLDI0OTYzLDI0OTY0LDI0OTcxLDI0OTczLDI0OTc4LDI0OTc5LDI0OTgzLDI0OTg0LDI0OTg4LDI0OTg5LDI0OTkxLDI0OTkyLDI0OTk3LDI1MDAwLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDExLDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgwLDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkzLDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1NzkwLDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUyLDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEzLDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUwLDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYyLDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgxLDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTkyLDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIxLDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgyLDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMwLDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3NzgyLDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAxLDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYxLDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQwLDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkzLDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIwLDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5MzgzLDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAzLDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMyLDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQwLDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgxLDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMyLDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMwMTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMwMjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMwMzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMwMzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMwNDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMwNTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMwNTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcwLDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMwNjc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMwNjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUzLDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzkyLDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMwODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMwODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMwODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcwLDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMxMDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMxMDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMxMDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMyLDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUzLDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMxMjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMxMjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkwLDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMxMzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMxNDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMxNDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMxLDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQwLDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMxNjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMxNjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMxNjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAzLDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIyLDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMxNzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMxNzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMxODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEwLDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMxOTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMxOTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMyMDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgxLDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkzLDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMyMTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMyMTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMyMzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMyMzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMyMzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkxLDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMyNjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMyNjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMyNzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMyODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMyOTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMzMTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMzMTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIxLDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMzMzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMzMzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMzNDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMzNDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMzNTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgyLDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMzNjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMzNjg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMzNzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcwLDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkzLDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMzODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMzOTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMzOTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMxLDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcxLDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIyLDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMzLDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0NjkyLDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzExLDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQzLDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYyLDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIyLDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYzLDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIwLDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDExLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgzLDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQwLDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAxLDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMyLDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAyLDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3LDM3MDAwLDM3MDAzLDM3MDA0LDM3MDA2LDM3MDA4LDM3MDEzLDM3MDE1LDM3MDE2LDM3MDE3LDM3MDE5LDM3MDI0LDM3MDI1LDM3MDI2LDM3MDI5LDM3MDQwLDM3MDQyLDM3MDQzLDM3MDQ0LDM3MDQ2LDM3MDUzLDM3MDY4LDM3MDU0LDM3MDU5LDM3MDYwLDM3MDYxLDM3MDYzLDM3MDY0LDM3MDc3LDM3MDc5LDM3MDgwLDM3MDgxLDM3MDg0LDM3MDg1LDM3MDg3LDM3MDkzLDM3MDc0LDM3MTEwLDM3MDk5LDM3MTAzLDM3MTA0LDM3MTA4LDM3MTE4LDM3MTE5LDM3MTIwLDM3MTI0LDM3MTI1LDM3MTI2LDM3MTI4LDM3MTMzLDM3MTM2LDM3MTQwLDM3MTQyLDM3MTQzLDM3MTQ0LDM3MTQ2LDM3MTQ4LDM3MTUwLDM3MTUyLDM3MTU3LDM3MTU0LDM3MTU1LDM3MTU5LDM3MTYxLDM3MTY2LDM3MTY3LDM3MTY5LDM3MTcyLDM3MTc0LDM3MTc1LDM3MTc3LDM3MTc4LDM3MTgwLDM3MTgxLDM3MTg3LDM3MTkxLDM3MTkyLDM3MTk5LDM3MjAzLDM3MjA3LDM3MjA5LDM3MjEwLDM3MjExLDM3MjE3LDM3MjIwLDM3MjIzLDM3MjI5LDM3MjM2LDM3MjQxLDM3MjQyLDM3MjQzLDM3MjQ5LDM3MjUxLDM3MjUzLDM3MjU0LDM3MjU4LDM3MjYyLDM3MjY1LDM3MjY3LDM3MjY4LDM3MjY5LDM3MjcyLDM3Mjc4LDM3MjgxLDM3Mjg2LDM3Mjg4LDM3MjkyLDM3MjkzLDM3Mjk0LDM3Mjk2LDM3Mjk3LDM3Mjk4LDM3Mjk5LDM3MzAyLDM3MzA3LDM3MzA4LDM3MzA5LDM3MzExLDM3MzE0LDM3MzE1LDM3MzE3LDM3MzMxLDM3MzMyLDM3MzM1LDM3MzM3LDM3MzM4LDM3MzQyLDM3MzQ4LDM3MzQ5LDM3MzUzLDM3MzU0LDM3MzU2LDM3MzU3LDM3MzU4LDM3MzU5LDM3MzYwLDM3MzYxLDM3MzY3LDM3MzY5LDM3MzcxLDM3MzczLDM3Mzc2LDM3Mzc3LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg1LDM3Mzg2LDM3Mzg4LDM3MzkyLDM3Mzk0LDM3Mzk1LDM3Mzk4LDM3NDAwLDM3NDA0LDM3NDA1LDM3NDExLDM3NDEyLDM3NDEzLDM3NDE0LDM3NDE2LDM3NDIyLDM3NDIzLDM3NDI0LDM3NDI3LDM3NDI5LDM3NDMwLDM3NDMyLDM3NDMzLDM3NDM0LDM3NDM2LDM3NDM4LDM3NDQwLDM3NDQyLDM3NDQzLDM3NDQ2LDM3NDQ3LDM3NDUwLDM3NDUzLDM3NDU0LDM3NDU1LDM3NDU3LDM3NDY0LDM3NDY1LDM3NDY4LDM3NDY5LDM3NDcyLDM3NDczLDM3NDc3LDM3NDc5LDM3NDgwLDM3NDgxLDM3NDg2LDM3NDg3LDM3NDg4LDM3NDkzLDM3NDk0LDM3NDk1LDM3NDk2LDM3NDk3LDM3NDk5LDM3NTAwLDM3NTAxLDM3NTAzLDM3NTEyLDM3NTEzLDM3NTE0LDM3NTE3LDM3NTE4LDM3NTIyLDM3NTI3LDM3NTI5LDM3NTM1LDM3NTM2LDM3NTQwLDM3NTQxLDM3NTQzLDM3NTQ0LDM3NTQ3LDM3NTUxLDM3NTU0LDM3NTU4LDM3NTYwLDM3NTYyLDM3NTYzLDM3NTY0LDM3NTY1LDM3NTY3LDM3NTY4LDM3NTY5LDM3NTcwLDM3NTcxLDM3NTczLDM3NTc0LDM3NTc1LDM3NTc2LDM3NTc5LDM3NTgwLDM3NTgxLDM3NTgyLDM3NTg0LDM3NTg3LDM3NTg5LDM3NTkxLDM3NTkyLDM3NTkzLDM3NTk2LDM3NTk3LDM3NTk5LDM3NjAwLDM3NjAxLDM3NjAzLDM3NjA1LDM3NjA3LDM3NjA4LDM3NjEyLDM3NjE0LDM3NjE2LDM3NjI1LDM3NjI3LDM3NjMxLDM3NjMyLDM3NjM0LDM3NjQwLDM3NjQ1LDM3NjQ5LDM3NjUyLDM3NjUzLDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY1LDM3NjY4LDM3NjY5LDM3NjcxLDM3NjczLDM3Njc0LDM3NjgzLDM3Njg0LDM3Njg2LDM3Njg3LDM3NzAzLDM3NzA0LDM3NzA1LDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE3LDM3NzE5LDM3NzIwLDM3NzIyLDM3NzI2LDM3NzMyLDM3NzMzLDM3NzM1LDM3NzM3LDM3NzM4LDM3NzQxLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ3LDM3NzQ4LDM3NzUwLDM3NzU0LDM3NzU3LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzY4LDM3NzcwLDM3NzcxLDM3NzczLDM3Nzc1LDM3Nzc4LDM3NzgxLDM3Nzg0LDM3Nzg3LDM3NzkwLDM3NzkzLDM3Nzk1LDM3Nzk2LDM3Nzk4LDM3ODAwLDM3ODAzLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE4LDM3ODAxLDM3ODI1LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMzLDM3ODM0LDM3ODM1LDM3ODM2LDM3ODM3LDM3ODQzLDM3ODQ5LDM3ODUyLDM3ODU0LDM3ODU1LDM3ODU4LDM3ODYyLDM3ODYzLDM3ODgxLDM3ODc5LDM3ODgwLDM3ODgyLDM3ODgzLDM3ODg1LDM3ODg5LDM3ODkwLDM3ODkyLDM3ODk2LDM3ODk3LDM3OTAxLDM3OTAyLDM3OTAzLDM3OTA5LDM3OTEwLDM3OTExLDM3OTE5LDM3OTM0LDM3OTM1LDM3OTM3LDM3OTM4LDM3OTM5LDM3OTQwLDM3OTQ3LDM3OTUxLDM3OTQ5LDM3OTU1LDM3OTU3LDM3OTYwLDM3OTYyLDM3OTY0LDM3OTczLDM3OTc3LDM3OTgwLDM3OTgzLDM3OTg1LDM3OTg3LDM3OTkyLDM3OTk1LDM3OTk3LDM3OTk4LDM3OTk5LDM4MDAxLDM4MDAyLDM4MDIwLDM4MDE5LDM4MjY0LDM4MjY1LDM4MjcwLDM4Mjc2LDM4MjgwLDM4Mjg0LDM4Mjg1LDM4Mjg2LDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA1LDM4MzEwLDM4MzEzLDM4MzE1LDM4MzE2LDM4MzI0LDM4MzI2LDM4MzMwLDM4MzMzLDM4MzM1LDM4MzQyLDM4MzQ0LDM4MzQ1LDM4MzQ3LDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzYxLDM4MzYyLDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzcyLDM4Mzc0LDM4NDI5LDM4NDMwLDM4NDM0LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDQ0LDM4NDQ5LDM4NDUxLDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYwLDM4NDYxLDM4NDY1LDM4NDgyLDM4NDg0LDM4NDg2LDM4NDg3LDM4NDg4LDM4NDk3LDM4NTEwLDM4NTE2LDM4NTIzLDM4NTI0LDM4NTI2LDM4NTI3LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM3LDM4NTQ1LDM4NTUwLDM4NTU0LDM4NTU3LDM4NTU5LDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY5LDM4NTc0LDM4NTc1LDM4NTc5LDM4NTg2LDM4NjAyLDM4NjEwLDIzOTg2LDM4NjE2LDM4NjE4LDM4NjIxLDM4NjIyLDM4NjIzLDM4NjMzLDM4NjM5LDM4NjQxLDM4NjUwLDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY1LDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg5LDM4NjkwLDM4NjkxLDM4Njk2LDM4NzA1LDM4NzA3LDM4NzIxLDM4NzIzLDM4NzMwLDM4NzM0LDM4NzM1LDM4NzQxLDM4NzQzLDM4NzQ0LDM4NzQ2LDM4NzQ3LDM4NzU1LDM4NzU5LDM4NzYyLDM4NzY2LDM4NzcxLDM4Nzc0LDM4Nzc1LDM4Nzc2LDM4Nzc5LDM4NzgxLDM4NzgzLDM4Nzg0LDM4NzkzLDM4ODA1LDM4ODA2LDM4ODA3LDM4ODA5LDM4ODEwLDM4ODE0LDM4ODE1LDM4ODE4LDM4ODI4LDM4ODMwLDM4ODMzLDM4ODM0LDM4ODM3LDM4ODM4LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQ0LDM4ODQ2LDM4ODQ3LDM4ODQ5LDM4ODUyLDM4ODUzLDM4ODU1LDM4ODU3LDM4ODU4LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODY0LDM4ODY1LDM4ODY4LDM4ODcxLDM4ODcyLDM4ODczLDM4ODc3LDM4ODc4LDM4ODgwLDM4ODc1LDM4ODgxLDM4ODg0LDM4ODk1LDM4ODk3LDM4OTAwLDM4OTAzLDM4OTA0LDM4OTA2LDM4OTE5LDM4OTIyLDM4OTM3LDM4OTI1LDM4OTI2LDM4OTMyLDM4OTM0LDM4OTQwLDM4OTQyLDM4OTQ0LDM4OTQ3LDM4OTUwLDM4OTU1LDM4OTU4LDM4OTU5LDM4OTYwLDM4OTYyLDM4OTYzLDM4OTY1LDM4OTQ5LDM4OTc0LDM4OTgwLDM4OTgzLDM4OTg2LDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk4LDM4OTk5LDM5MDAxLDM5MDAyLDM5MDEwLDM5MDExLDM5MDEzLDM5MDE0LDM5MDE4LDM5MDIwLDM5MDgzLDM5MDg1LDM5MDg2LDM5MDg4LDM5MDkyLDM5MDk1LDM5MDk2LDM5MDk4LDM5MDk5LDM5MTAzLDM5MTA2LDM5MTA5LDM5MTEyLDM5MTE2LDM5MTM3LDM5MTM5LDM5MTQxLDM5MTQyLDM5MTQzLDM5MTQ2LDM5MTU1LDM5MTU4LDM5MTcwLDM5MTc1LDM5MTc2LDM5MTg1LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk5LDM5MjAyLDM5MjA2LDM5MjA3LDM5MjExLDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjMyLDM5MjMzLDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQ1LDM5MjQ2LDM5MjUyLDM5MjU2LDM5MjU3LDM5MjU5LDM5MjYwLDM5MjYyLDM5MjYzLDM5MjY0LDM5MzIzLDM5MzI1LDM5MzI3LDM5MzM0LDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ5LDM5MzUzLDM5MzU0LDM5MzU3LDM5MzU5LDM5MzYzLDM5MzY5LDM5Mzc5LDM5MzgwLDM5Mzg1LDM5Mzg2LDM5Mzg4LDM5MzkwLDM5Mzk5LDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA4LDM5NDEyLDM5NDEzLDM5NDE3LDM5NDIxLDM5NDIyLDM5NDI2LDM5NDI3LDM5NDI4LDM5NDM1LDM5NDM2LDM5NDQwLDM5NDQxLDM5NDQ2LDM5NDU0LDM5NDU2LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYzLDM5NDY5LDM5NDcwLDM5NDc1LDM5NDc3LDM5NDc4LDM5NDgwLDM5NDk1LDM5NDg5LDM5NDkyLDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAyLDM5NTA1LDM5NTA4LDM5NTEwLDM5NTE3LDM5NTk0LDM5NTk2LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjA0LDM5NjA1LDM5NjA2LDM5NjA5LDM5NjExLDM5NjE0LDM5NjE1LDM5NjE3LDM5NjE5LDM5NjIyLDM5NjI0LDM5NjMwLDM5NjMyLDM5NjM0LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQzLDM5NjQ0LDM5NjQ4LDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU3LDM5NjYwLDM5NjY2LDM5NjY3LDM5NjY5LDM5NjczLDM5Njc0LDM5Njc3LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5NjgzLDM5Njg0LDM5Njg1LDM5Njg4LDM5Njg5LDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk4LDM5NzAyLDM5NzA1LDM5NzA3LDM5NzA4LDM5NzEyLDM5NzE4LDM5NzIzLDM5NzI1LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM1LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzUyLDM5NzU1LDM5NzU2LDM5NzY1LDM5NzY2LDM5NzY3LDM5NzcxLDM5Nzc0LDM5Nzc3LDM5Nzc5LDM5NzgxLDM5NzgyLDM5Nzg0LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5Nzk1LDM5Nzk3LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODA3LDM5ODA4LDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIxLDM5ODIzLDM5ODI0LDM5ODI4LDM5ODM0LDM5ODM3LDM5ODM4LDM5ODQ2LDM5ODQ3LDM5ODQ5LDM5ODUyLDM5ODU2LDM5ODU3LDM5ODU4LDM5ODYzLDM5ODY0LDM5ODY3LDM5ODY4LDM5ODcwLDM5ODcxLDM5ODczLDM5ODc5LDM5ODgwLDM5ODg2LDM5ODg4LDM5ODk1LDM5ODk2LDM5OTAxLDM5OTAzLDM5OTA5LDM5OTExLDM5OTE0LDM5OTE1LDM5OTE5LDM5OTIzLDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMzLDM5OTM1LDM5OTM2LDM5OTM4LDM5OTQ3LDM5OTUxLDM5OTUzLDM5OTU4LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTY0LDM5OTY2LDM5OTcwLDM5OTcxLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTg1LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTk3LDQwMDAxLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA5LDQwMDEwLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE5LDQwMDIwLDQwMDIyLDQwMDI0LDQwMDI3LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDM1LDQwMDQxLDQwMDQyLDQwMDI4LDQwMDQzLDQwMDQwLDQwMDQ2LDQwMDQ4LDQwMDUwLDQwMDUzLDQwMDU1LDQwMDU5LDQwMTY2LDQwMTc4LDQwMTgzLDQwMTg1LDQwMjAzLDQwMTk0LDQwMjA5LDQwMjE1LDQwMjE2LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjM5LDQwMjQwLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjUwLDQwMjUyLDQwMjYxLDQwMjUzLDQwMjU4LDQwMjU5LDQwMjYzLDQwMjY2LDQwMjc1LDQwMjc2LDQwMjg3LDQwMjkxLDQwMjkwLDQwMjkzLDQwMjk3LDQwMjk4LDQwMjk5LDQwMzA0LDQwMzEwLDQwMzExLDQwMzE1LDQwMzE2LDQwMzE4LDQwMzIzLDQwMzI0LDQwMzI2LDQwMzMwLDQwMzMzLDQwMzM0LDQwMzM4LDQwMzM5LDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzUzLDQwMzYyLDQwMzY0LDQwMzY2LDQwMzY5LDQwMzczLDQwMzc3LDQwMzgwLDQwMzgzLDQwMzg3LDQwMzkxLDQwMzkzLDQwMzk0LDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDEwLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDIxLDQwNDIzLDQwNDI1LDQwNDI3LDQwNDMwLDQwNDMyLDQwNDM1LDQwNDM2LDQwNDQ2LDQwNDU4LDQwNDUwLDQwNDU1LDQwNDYyLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY5LDQwNDcwLDQwNDczLDQwNDc2LDQwNDc3LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTc2LDQwNTc4LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgzLDQwNTkwLDQwNTkxLDQwNTk4LDQwNjAwLDQwNjAzLDQwNjA2LDQwNjEyLDQwNjE2LDQwNjIwLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI3LDQwNjI4LDQwNjI5LDQwNjQ2LDQwNjQ4LDQwNjUxLDQwNjYxLDQwNjcxLDQwNjc2LDQwNjc5LDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkzLDQwNjk2LDQwNzAzLDQwNzA2LDQwNzA3LDQwNzEzLDQwNzE5LDQwNzIwLDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI2LDQwNzI3LDQwNzI5LDQwNzMwLDQwNzMxLDQwNzM1LDQwNzM4LDQwNzQyLDQwNzQ2LDQwNzQ3LDQwNzUxLDQwNzUzLDQwNzU0LDQwNzU2LDQwNzU5LDQwNzYxLDQwNzYyLDQwNzY0LDQwNzY1LDQwNzY3LDQwNzY5LDQwNzcxLDQwNzcyLDQwNzczLDQwNzc0LDQwNzc1LDQwNzg3LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzk0LDQwNzk3LDQwNzk4LDQwODA4LDQwODA5LDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE5LDQwODIxLDQwODI2LDQwODI5LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUyLDQwODU0LDQwODU1LDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiaWJtODY2XCI6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUwMCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIsMTYwXSxcbiAgXCJpc28tODg1OS0yXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLFxuICBcImlzby04ODU5LTNcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcsMjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwyNDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLFxuICBcImlzby04ODU5LTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEsMzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYwLDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sXG4gIFwiaXNvLTg4NTktNVwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSxcbiAgXCJpc28tODg1OS02XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAwLDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImlzby04ODU5LTdcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJpc28tODg1OS04XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcImlzby04ODU5LTEwXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwyOTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3MywzNjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwzNjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzksMjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSxcbiAgXCJpc28tODg1OS0xM1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgyMjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sXG4gIFwiaXNvLTg4NTktMTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgsMjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLFxuICBcImlzby04ODU5LTE1XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1MiwxNjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgzLDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSxcbiAgXCJpc28tODg1OS0xNlwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIsMzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgsMzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYsMzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjczLDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0NywzNjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSxcbiAgXCJrb2k4LXJcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJrb2k4LXVcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAzMSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJtYWNpbnRvc2hcIjpbMTk2LDE5NywxOTksMjAxLDIwOSwyMTQsMjIwLDIyNSwyMjQsMjI2LDIyOCwyMjcsMjI5LDIzMSwyMzMsMjMyLDIzNCwyMzUsMjM3LDIzNiwyMzgsMjM5LDI0MSwyNDMsMjQyLDI0NCwyNDYsMjQ1LDI1MCwyNDksMjUxLDI1Miw4MjI0LDE3NiwxNjIsMTYzLDE2Nyw4MjI2LDE4MiwyMjMsMTc0LDE2OSw4NDgyLDE4MCwxNjgsODgwMCwxOTgsMjE2LDg3MzQsMTc3LDg4MDQsODgwNSwxNjUsMTgxLDg3MDYsODcyMSw4NzE5LDk2MCw4NzQ3LDE3MCwxODYsOTM3LDIzMCwyNDgsMTkxLDE2MSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTkyLDE5NSwyMTMsMzM4LDMzOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsOTY3NCwyNTUsMzc2LDgyNjAsODM2NCw4MjQ5LDgyNTAsNjQyNTcsNjQyNTgsODIyNSwxODMsODIxOCw4MjIyLDgyNDAsMTk0LDIwMiwxOTMsMjAzLDIwMCwyMDUsMjA2LDIwNywyMDQsMjExLDIxMiw2Mzc0MywyMTAsMjE4LDIxOSwyMTcsMzA1LDcxMCw3MzIsMTc1LDcyOCw3MjksNzMwLDE4NCw3MzMsNzMxLDcxMV0sXG4gIFwid2luZG93cy04NzRcIjpbODM2NCwxMjksMTMwLDEzMSwxMzIsODIzMCwxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMzU4NSwzNTg2LDM1ODcsMzU4OCwzNTg5LDM1OTAsMzU5MSwzNTkyLDM1OTMsMzU5NCwzNTk1LDM1OTYsMzU5NywzNTk4LDM1OTksMzYwMCwzNjAxLDM2MDIsMzYwMywzNjA0LDM2MDUsMzYwNiwzNjA3LDM2MDgsMzYwOSwzNjEwLDM2MTEsMzYxMiwzNjEzLDM2MTQsMzYxNSwzNjE2LDM2MTcsMzYxOCwzNjE5LDM2MjAsMzYyMSwzNjIyLDM2MjMsMzYyNCwzNjI1LDM2MjYsMzYyNywzNjI4LDM2MjksMzYzMCwzNjMxLDM2MzIsMzYzMywzNjM0LDM2MzUsMzYzNiwzNjM3LDM2MzgsMzYzOSwzNjQwLDM2NDEsMzY0MixudWxsLG51bGwsbnVsbCxudWxsLDM2NDcsMzY0OCwzNjQ5LDM2NTAsMzY1MSwzNjUyLDM2NTMsMzY1NCwzNjU1LDM2NTYsMzY1NywzNjU4LDM2NTksMzY2MCwzNjYxLDM2NjIsMzY2MywzNjY0LDM2NjUsMzY2NiwzNjY3LDM2NjgsMzY2OSwzNjcwLDM2NzEsMzY3MiwzNjczLDM2NzQsMzY3NSxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTBcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwzNTIsODI0OSwzNDYsMzU2LDM4MSwzNzcsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMzUzLDgyNTAsMzQ3LDM1NywzODIsMzc4LDE2MCw3MTEsNzI4LDMyMSwxNjQsMjYwLDE2NiwxNjcsMTY4LDE2OSwzNTAsMTcxLDE3MiwxNzMsMTc0LDM3OSwxNzYsMTc3LDczMSwzMjIsMTgwLDE4MSwxODIsMTgzLDE4NCwyNjEsMzUxLDE4NywzMTcsNzMzLDMxOCwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwyMTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMxLDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSxcbiAgXCJ3aW5kb3dzLTEyNTFcIjpbMTAyNiwxMDI3LDgyMTgsMTEwNyw4MjIyLDgyMzAsODIyNCw4MjI1LDgzNjQsODI0MCwxMDMzLDgyNDksMTAzNCwxMDM2LDEwMzUsMTAzOSwxMTA2LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTExMyw4MjUwLDExMTQsMTExNiwxMTE1LDExMTksMTYwLDEwMzgsMTExOCwxMDMyLDE2NCwxMTY4LDE2NiwxNjcsMTAyNSwxNjksMTAyOCwxNzEsMTcyLDE3MywxNzQsMTAzMSwxNzYsMTc3LDEwMzAsMTExMCwxMTY5LDE4MSwxODIsMTgzLDExMDUsODQ3MCwxMTA4LDE4NywxMTEyLDEwMjksMTEwOSwxMTExLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDNdLFxuICBcIndpbmRvd3MtMTI1MlwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMzgxLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDM4MiwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLFxuICBcIndpbmRvd3MtMTI1M1wiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDkwMSw5MDIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LG51bGwsMTcxLDE3MiwxNzMsMTc0LDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCwxODEsMTgyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTRcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI4NiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwzMDQsMzUwLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjg3LDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDMwNSwzNTEsMjU1XSxcbiAgXCJ3aW5kb3dzLTEyNTVcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzYyLDE2NSwxNjYsMTY3LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsMTkxLDE0NTYsMTQ1NywxNDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsbnVsbCwxNDY3LDE0NjgsMTQ2OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcIndpbmRvd3MtMTI1NlwiOls4MzY0LDE2NjIsODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxNjU3LDgyNDksMzM4LDE2NzAsMTY4OCwxNjcyLDE3MTEsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNzA1LDg0ODIsMTY4MSw4MjUwLDMzOSw4MjA0LDgyMDUsMTcyMiwxNjAsMTU0OCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MjYsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTU2MywxODcsMTg4LDE4OSwxOTAsMTU2NywxNzI5LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMjE1LDE1OTEsMTU5MiwxNTkzLDE1OTQsMTYwMCwxNjAxLDE2MDIsMTYwMywyMjQsMTYwNCwyMjYsMTYwNSwxNjA2LDE2MDcsMTYwOCwyMzEsMjMyLDIzMywyMzQsMjM1LDE2MDksMTYxMCwyMzgsMjM5LDE2MTEsMTYxMiwxNjEzLDE2MTQsMjQ0LDE2MTUsMTYxNiwyNDcsMTYxNywyNDksMTYxOCwyNTEsMjUyLDgyMDYsODIwNywxNzQ2XSxcbiAgXCJ3aW5kb3dzLTEyNTdcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTY4LDcxMSwxODQsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE3NSw3MzEsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LG51bGwsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw3MjldLFxuICBcIndpbmRvd3MtMTI1OFwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwyNTgsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMyw3NjgsMjA1LDIwNiwyMDcsMjcyLDIwOSw3NzcsMjExLDIxMiw0MTYsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDQzMSw3NzEsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDc2OSwyMzcsMjM4LDIzOSwyNzMsMjQxLDgwMywyNDMsMjQ0LDQxNywyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsNDMyLDgzNjMsMjU1XSxcbiAgXCJ4LW1hYy1jeXJpbGxpY1wiOlsxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsODIyNCwxNzYsMTE2OCwxNjMsMTY3LDgyMjYsMTgyLDEwMzAsMTc0LDE2OSw4NDgyLDEwMjYsMTEwNiw4ODAwLDEwMjcsMTEwNyw4NzM0LDE3Nyw4ODA0LDg4MDUsMTExMCwxODEsMTE2OSwxMDMyLDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzMywxMTEzLDEwMzQsMTExNCwxMTEyLDEwMjksMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDEwMzUsMTExNSwxMDM2LDExMTYsMTEwOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsODIyMiwxMDM4LDExMTgsMTAzOSwxMTE5LDg0NzAsMTAyNSwxMTA1LDExMDMsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiw4MzY0XVxufTtcbn0odGhpcykpO1xuIiwiLy8gVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi5cbi8vIFNlZSBMSUNFTlNFLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4vLyBJZiB3ZSdyZSBpbiBub2RlIHJlcXVpcmUgZW5jb2RpbmctaW5kZXhlcyBhbmQgYXR0YWNoIGl0IHRvIHRoZSBnbG9iYWwuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgR2xvYmFsIHx0aGlzfCByZXF1aXJlZCBmb3IgcmVzb2x2aW5nIGluZGV4ZXMgaW4gbm9kZS5cbiAqIEBzdXBwcmVzcyB7Z2xvYmFsVGhpc31cbiAqL1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgdGhpc1tcImVuY29kaW5nLWluZGV4ZXNcIl0gPVxuICAgIHJlcXVpcmUoXCIuL2VuY29kaW5nLWluZGV4ZXMuanNcIilbXCJlbmNvZGluZy1pbmRleGVzXCJdO1xufVxuXG4oZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvL1xuICAvLyBVdGlsaXRpZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgVGhlIG51bWJlciB0byB0ZXN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgPj0gbWluIGFuZCBhIDw9IG1heC5cbiAgICovXG4gIGZ1bmN0aW9uIGluUmFuZ2UoYSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gbWluIDw9IGEgJiYgYSA8PSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWVyYXRvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGQgVGhlIGRlbm9taW5hdG9yLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSByZXN1bHQgb2YgdGhlIGludGVnZXIgZGl2aXNpb24gb2YgbiBieSBkLlxuICAgKi9cbiAgZnVuY3Rpb24gZGl2KG4sIGQpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihuIC8gZCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBvXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGZ1bmN0aW9uIFRvRGljdGlvbmFyeShvKSB7XG4gICAgaWYgKG8gPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9O1xuICAgIGlmIChvID09PSBPYmplY3QobykpIHJldHVybiBvO1xuICAgIHRocm93IFR5cGVFcnJvcignQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gZGljdGlvbmFyeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgSW5wdXQgc3RyaW5nIG9mIFVURi0xNiBjb2RlIHVuaXRzLlxuICAgKiBAcmV0dXJuIHshQXJyYXkuPG51bWJlcj59IENvZGUgcG9pbnRzLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9Db2RlUG9pbnRzKHN0cmluZykge1xuICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1vYnRhaW4tdW5pY29kZVxuXG4gICAgLy8gMS4gTGV0IFMgYmUgdGhlIERPTVN0cmluZyB2YWx1ZS5cbiAgICB2YXIgcyA9IFN0cmluZyhzdHJpbmcpO1xuXG4gICAgLy8gMi4gTGV0IG4gYmUgdGhlIGxlbmd0aCBvZiBTLlxuICAgIHZhciBuID0gcy5sZW5ndGg7XG5cbiAgICAvLyAzLiBJbml0aWFsaXplIGkgdG8gMC5cbiAgICB2YXIgaSA9IDA7XG5cbiAgICAvLyA0LiBJbml0aWFsaXplIFUgdG8gYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzLlxuICAgIHZhciB1ID0gW107XG5cbiAgICAvLyA1LiBXaGlsZSBpIDwgbjpcbiAgICB3aGlsZSAoaSA8IG4pIHtcblxuICAgICAgLy8gMS4gTGV0IGMgYmUgdGhlIGNvZGUgdW5pdCBpbiBTIGF0IGluZGV4IGkuXG4gICAgICB2YXIgYyA9IHMuY2hhckNvZGVBdChpKTtcblxuICAgICAgLy8gMi4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBjOlxuXG4gICAgICAvLyBjIDwgMHhEODAwIG9yIGMgPiAweERGRkZcbiAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPiAweERGRkYpIHtcbiAgICAgICAgLy8gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludCBjLlxuICAgICAgICB1LnB1c2goYyk7XG4gICAgICB9XG5cbiAgICAgIC8vIDB4REMwMCDiiaQgYyDiiaQgMHhERkZGXG4gICAgICBlbHNlIGlmICgweERDMDAgPD0gYyAmJiBjIDw9IDB4REZGRikge1xuICAgICAgICAvLyBBcHBlbmQgdG8gVSBhIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgIHUucHVzaCgweEZGRkQpO1xuICAgICAgfVxuXG4gICAgICAvLyAweEQ4MDAg4omkIGMg4omkIDB4REJGRlxuICAgICAgZWxzZSBpZiAoMHhEODAwIDw9IGMgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgLy8gMS4gSWYgaSA9IG7iiJIxLCB0aGVuIGFwcGVuZCB0byBVIGEgVStGRkZEIFJFUExBQ0VNRU5UXG4gICAgICAgIC8vIENIQVJBQ1RFUi5cbiAgICAgICAgaWYgKGkgPT09IG4gLSAxKSB7XG4gICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpIDwgbuKIkjE6XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIDEuIExldCBkIGJlIHRoZSBjb2RlIHVuaXQgaW4gUyBhdCBpbmRleCBpKzEuXG4gICAgICAgICAgdmFyIGQgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG5cbiAgICAgICAgICAvLyAyLiBJZiAweERDMDAg4omkIGQg4omkIDB4REZGRiwgdGhlbjpcbiAgICAgICAgICBpZiAoMHhEQzAwIDw9IGQgJiYgZCA8PSAweERGRkYpIHtcbiAgICAgICAgICAgIC8vIDEuIExldCBhIGJlIGMgJiAweDNGRi5cbiAgICAgICAgICAgIHZhciBhID0gYyAmIDB4M0ZGO1xuXG4gICAgICAgICAgICAvLyAyLiBMZXQgYiBiZSBkICYgMHgzRkYuXG4gICAgICAgICAgICB2YXIgYiA9IGQgJiAweDNGRjtcblxuICAgICAgICAgICAgLy8gMy4gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludFxuICAgICAgICAgICAgLy8gMl4xNisyXjEwKmErYi5cbiAgICAgICAgICAgIHUucHVzaCgweDEwMDAwICsgKGEgPDwgMTApICsgYik7XG5cbiAgICAgICAgICAgIC8vIDQuIFNldCBpIHRvIGkrMS5cbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyAzLiBPdGhlcndpc2UsIGQgPCAweERDMDAgb3IgZCA+IDB4REZGRi4gQXBwZW5kIHRvIFUgYVxuICAgICAgICAgIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgICAgZWxzZSAge1xuICAgICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIFNldCBpIHRvIGkrMS5cbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICAvLyA2LiBSZXR1cm4gVS5cbiAgICByZXR1cm4gdTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gY29kZV9wb2ludHMgQXJyYXkgb2YgY29kZSBwb2ludHMuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gc3RyaW5nIFN0cmluZyBvZiBVVEYtMTYgY29kZSB1bml0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGNvZGVQb2ludHNUb1N0cmluZyhjb2RlX3BvaW50cykge1xuICAgIHZhciBzID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlX3BvaW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGNwID0gY29kZV9wb2ludHNbaV07XG4gICAgICBpZiAoY3AgPD0gMHhGRkZGKSB7XG4gICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcCAtPSAweDEwMDAwO1xuICAgICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGNwID4+IDEwKSArIDB4RDgwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCAmIDB4M0ZGKSArIDB4REMwMCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cblxuICAvL1xuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBFbmNvZGluZyBzcGVjaWZpY2F0aW9uXG4gIC8vIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnL1xuICAvL1xuXG4gIC8vXG4gIC8vIDMuIFRlcm1pbm9sb2d5XG4gIC8vXG5cbiAgLyoqXG4gICAqIEVuZC1vZi1zdHJlYW0gaXMgYSBzcGVjaWFsIHRva2VuIHRoYXQgc2lnbmlmaWVzIG5vIG1vcmUgdG9rZW5zXG4gICAqIGFyZSBpbiB0aGUgc3RyZWFtLlxuICAgKiBAY29uc3RcbiAgICovIHZhciBlbmRfb2Zfc3RyZWFtID0gLTE7XG5cbiAgLyoqXG4gICAqIEEgc3RyZWFtIHJlcHJlc2VudHMgYW4gb3JkZXJlZCBzZXF1ZW5jZSBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0geyEoQXJyYXkuPG51bWJlcj58VWludDhBcnJheSl9IHRva2VucyBBcnJheSBvZiB0b2tlbnMgdGhhdCBwcm92aWRlIHRoZVxuICAgKiBzdHJlYW0uXG4gICAqL1xuICBmdW5jdGlvbiBTdHJlYW0odG9rZW5zKSB7XG4gICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgdGhpcy50b2tlbnMgPSBbXS5zbGljZS5jYWxsKHRva2Vucyk7XG4gIH1cblxuICBTdHJlYW0ucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgZW5kLW9mLXN0cmVhbSBoYXMgYmVlbiBoaXQuXG4gICAgICovXG4gICAgZW5kT2ZTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICF0aGlzLnRva2Vucy5sZW5ndGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYSB0b2tlbiBpcyByZWFkIGZyb20gYSBzdHJlYW0sIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBhbmQgc3Vic2VxdWVudGx5IHJlbW92ZWQsIGFuZFxuICAgICAqIGVuZC1vZi1zdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEdldCB0aGUgbmV4dCB0b2tlbiBmcm9tIHRoZSBzdHJlYW0sIG9yXG4gICAgICogZW5kX29mX3N0cmVhbS5cbiAgICAgKi9cbiAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5zLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGVuZF9vZl9zdHJlYW07XG4gICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNoaWZ0KCk7XG4gICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG9uZSBvciBtb3JlIHRva2VucyBhcmUgcHJlcGVuZGVkIHRvIGEgc3RyZWFtLCB0aG9zZSB0b2tlbnNcbiAgICAgKiBtdXN0IGJlIGluc2VydGVkLCBpbiBnaXZlbiBvcmRlciwgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VuKHMpIHRvIHByZXBlbmQgdG8gdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwcmVwZW5kOiBmdW5jdGlvbih0b2tlbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9rZW4pKSB7XG4gICAgICAgIHZhciB0b2tlbnMgPSAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHRva2VuKTtcbiAgICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbnMucG9wKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gb25lIG9yIG1vcmUgdG9rZW5zIGFyZSBwdXNoZWQgdG8gYSBzdHJlYW0sIHRob3NlIHRva2Vuc1xuICAgICAqIG11c3QgYmUgaW5zZXJ0ZWQsIGluIGdpdmVuIG9yZGVyLCBhZnRlciB0aGUgbGFzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VucyhzKSB0byBwcmVwZW5kIHRvIHRoZSBzdHJlYW0uXG4gICAgICovXG4gICAgcHVzaDogZnVuY3Rpb24odG9rZW4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRva2VuKSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyh0b2tlbik7XG4gICAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKVxuICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2godG9rZW5zLnNoaWZ0KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8vXG4gIC8vIDQuIEVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDQuMSBFbmNvZGVycyBhbmQgZGVjb2RlcnNcblxuICAvKiogQGNvbnN0ICovXG4gIHZhciBmaW5pc2hlZCA9IC0xO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhdGFsIElmIHRydWUsIGRlY29kaW5nIGVycm9ycyByYWlzZSBhbiBleGNlcHRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2NvZGVfcG9pbnQgT3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGZhbGxiYWNrIGNvZGUgcG9pbnQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGNvZGUgcG9pbnQgdG8gaW5zZXJ0IG9uIGEgZGVjb2RpbmcgZXJyb3IuXG4gICAqL1xuICBmdW5jdGlvbiBkZWNvZGVyRXJyb3IoZmF0YWwsIG9wdF9jb2RlX3BvaW50KSB7XG4gICAgaWYgKGZhdGFsKVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdEZWNvZGVyIGVycm9yJyk7XG4gICAgcmV0dXJuIG9wdF9jb2RlX3BvaW50IHx8IDB4RkZGRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgY29kZSBwb2ludCB0aGF0IGNvdWxkIG5vdCBiZSBlbmNvZGVkLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEFsd2F5cyB0aHJvd3MsIG5vIHZhbHVlIGlzIGFjdHVhbGx5IHJldHVybmVkLlxuICAgKi9cbiAgZnVuY3Rpb24gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1RoZSBjb2RlIHBvaW50ICcgKyBjb2RlX3BvaW50ICsgJyBjb3VsZCBub3QgYmUgZW5jb2RlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJmYWNlICovXG4gIGZ1bmN0aW9uIERlY29kZXIoKSB7fVxuICBEZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHt9XG4gIH07XG5cbiAgLyoqIEBpbnRlcmZhY2UgKi9cbiAgZnVuY3Rpb24gRW5jb2RlcigpIHt9XG4gIEVuY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBjb2RlIHBvaW50cyBiZWluZyBlbmNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHt9XG4gIH07XG5cbiAgLy8gNC4yIE5hbWVzIGFuZCBsYWJlbHNcblxuICAvLyBUT0RPOiBEZWZpbmUgQHR5cGVkZWYgZm9yIEVuY29kaW5nOiB7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvaXNzdWVzLzI0N1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgVGhlIGVuY29kaW5nIGxhYmVsLlxuICAgKiBAcmV0dXJuIHs/e25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn19XG4gICAqL1xuICBmdW5jdGlvbiBnZXRFbmNvZGluZyhsYWJlbCkge1xuICAgIC8vIDEuIFJlbW92ZSBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZSBmcm9tIGxhYmVsLlxuICAgIGxhYmVsID0gU3RyaW5nKGxhYmVsKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIDIuIElmIGxhYmVsIGlzIGFuIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIGFueSBvZiB0aGVcbiAgICAvLyBsYWJlbHMgbGlzdGVkIGluIHRoZSB0YWJsZSBiZWxvdywgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgLy8gZW5jb2RpbmcsIGFuZCBmYWlsdXJlIG90aGVyd2lzZS5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxhYmVsX3RvX2VuY29kaW5nLCBsYWJlbCkpIHtcbiAgICAgIHJldHVybiBsYWJlbF90b19lbmNvZGluZ1tsYWJlbF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kaW5ncyB0YWJsZTogaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvZW5jb2RpbmdzLmpzb25cbiAgICogQGNvbnN0XG4gICAqIEB0eXBlIHshQXJyYXkuPHtcbiAgICogICAgICAgICAgaGVhZGluZzogc3RyaW5nLFxuICAgKiAgICAgICAgICBlbmNvZGluZ3M6IEFycmF5Ljx7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fT5cbiAgICogICAgICAgIH0+fVxuICAgKi9cbiAgdmFyIGVuY29kaW5ncyA9IFtcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidW5pY29kZS0xLTEtdXRmLThcIixcbiAgICAgICAgICBcInV0Zi04XCIsXG4gICAgICAgICAgXCJ1dGY4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLThcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiVGhlIEVuY29kaW5nXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiODY2XCIsXG4gICAgICAgICAgXCJjcDg2NlwiLFxuICAgICAgICAgIFwiY3NpYm04NjZcIixcbiAgICAgICAgICBcImlibTg2NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlibTg2NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluMlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0yXCIsXG4gICAgICAgICAgXCJpc284ODU5MlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMjoxOTg3XCIsXG4gICAgICAgICAgXCJsMlwiLFxuICAgICAgICAgIFwibGF0aW4yXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluM1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwOVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0zXCIsXG4gICAgICAgICAgXCJpc284ODU5M1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMzoxOTg4XCIsXG4gICAgICAgICAgXCJsM1wiLFxuICAgICAgICAgIFwibGF0aW4zXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvLWlyLTExMFwiLFxuICAgICAgICAgIFwiaXNvODg1OS00XCIsXG4gICAgICAgICAgXCJpc284ODU5NFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNDoxOTg4XCIsXG4gICAgICAgICAgXCJsNFwiLFxuICAgICAgICAgIFwibGF0aW40XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktNFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluY3lyaWxsaWNcIixcbiAgICAgICAgICBcImN5cmlsbGljXCIsXG4gICAgICAgICAgXCJpc28tODg1OS01XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ0XCIsXG4gICAgICAgICAgXCJpc284ODU5LTVcIixcbiAgICAgICAgICBcImlzbzg4NTk1XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01OjE5ODhcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS01XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImFyYWJpY1wiLFxuICAgICAgICAgIFwiYXNtby03MDhcIixcbiAgICAgICAgICBcImNzaXNvODg1OTZlXCIsXG4gICAgICAgICAgXCJjc2lzbzg4NTk2aVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbmFyYWJpY1wiLFxuICAgICAgICAgIFwiZWNtYS0xMTRcIixcbiAgICAgICAgICBcImlzby04ODU5LTZcIixcbiAgICAgICAgICBcImlzby04ODU5LTYtZVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNi1pXCIsXG4gICAgICAgICAgXCJpc28taXItMTI3XCIsXG4gICAgICAgICAgXCJpc284ODU5LTZcIixcbiAgICAgICAgICBcImlzbzg4NTk2XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02OjE5ODdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS02XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW5ncmVla1wiLFxuICAgICAgICAgIFwiZWNtYS0xMThcIixcbiAgICAgICAgICBcImVsb3RfOTI4XCIsXG4gICAgICAgICAgXCJncmVla1wiLFxuICAgICAgICAgIFwiZ3JlZWs4XCIsXG4gICAgICAgICAgXCJpc28tODg1OS03XCIsXG4gICAgICAgICAgXCJpc28taXItMTI2XCIsXG4gICAgICAgICAgXCJpc284ODU5LTdcIixcbiAgICAgICAgICBcImlzbzg4NTk3XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03OjE5ODdcIixcbiAgICAgICAgICBcInN1bl9ldV9ncmVla1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGVcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW5oZWJyZXdcIixcbiAgICAgICAgICBcImhlYnJld1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOC1lXCIsXG4gICAgICAgICAgXCJpc28taXItMTM4XCIsXG4gICAgICAgICAgXCJpc284ODU5LThcIixcbiAgICAgICAgICBcImlzbzg4NTk4XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04OjE5ODhcIixcbiAgICAgICAgICBcInZpc3VhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LThcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGlcIixcbiAgICAgICAgICBcImlzby04ODU5LTgtaVwiLFxuICAgICAgICAgIFwibG9naWNhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTgtaVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTBcIixcbiAgICAgICAgICBcImlzby1pci0xNTdcIixcbiAgICAgICAgICBcImlzbzg4NTktMTBcIixcbiAgICAgICAgICBcImlzbzg4NTkxMFwiLFxuICAgICAgICAgIFwibDZcIixcbiAgICAgICAgICBcImxhdGluNlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTEwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5MTNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJpc28tODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OTE0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjlcIixcbiAgICAgICAgICBcImlzby04ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5MTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTE1XCIsXG4gICAgICAgICAgXCJsOVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTE1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTE2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Nrb2k4clwiLFxuICAgICAgICAgIFwia29pXCIsXG4gICAgICAgICAgXCJrb2k4XCIsXG4gICAgICAgICAgXCJrb2k4LXJcIixcbiAgICAgICAgICBcImtvaThfclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImtvaTgtclwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJrb2k4LXJ1XCIsXG4gICAgICAgICAgXCJrb2k4LXVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJrb2k4LXVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NtYWNpbnRvc2hcIixcbiAgICAgICAgICBcIm1hY1wiLFxuICAgICAgICAgIFwibWFjaW50b3NoXCIsXG4gICAgICAgICAgXCJ4LW1hYy1yb21hblwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIm1hY2ludG9zaFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJkb3MtODc0XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OTExXCIsXG4gICAgICAgICAgXCJ0aXMtNjIwXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTg3NFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtODc0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1MFwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUwXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTFcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MVwiLFxuICAgICAgICAgIFwieC1jcDEyNTFcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTFcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYW5zaV94My40LTE5NjhcIixcbiAgICAgICAgICBcImFzY2lpXCIsXG4gICAgICAgICAgXCJjcDEyNTJcIixcbiAgICAgICAgICBcImNwODE5XCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluMVwiLFxuICAgICAgICAgIFwiaWJtODE5XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xXCIsXG4gICAgICAgICAgXCJpc28taXItMTAwXCIsXG4gICAgICAgICAgXCJpc284ODU5LTFcIixcbiAgICAgICAgICBcImlzbzg4NTkxXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xOjE5ODdcIixcbiAgICAgICAgICBcImwxXCIsXG4gICAgICAgICAgXCJsYXRpbjFcIixcbiAgICAgICAgICBcInVzLWFzY2lpXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTJcIixcbiAgICAgICAgICBcIngtY3AxMjUyXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUyXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1M1wiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUzXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1M1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1M1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTRcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW41XCIsXG4gICAgICAgICAgXCJpc28tODg1OS05XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ4XCIsXG4gICAgICAgICAgXCJpc284ODU5LTlcIixcbiAgICAgICAgICBcImlzbzg4NTk5XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05OjE5ODlcIixcbiAgICAgICAgICBcImw1XCIsXG4gICAgICAgICAgXCJsYXRpbjVcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NFwiLFxuICAgICAgICAgIFwieC1jcDEyNTRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU1XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTVcIixcbiAgICAgICAgICBcIngtY3AxMjU1XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NlwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU2XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTdcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1N1wiLFxuICAgICAgICAgIFwieC1jcDEyNTdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU4XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNThcIixcbiAgICAgICAgICBcIngtY3AxMjU4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU4XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtbWFjLWN5cmlsbGljXCIsXG4gICAgICAgICAgXCJ4LW1hYy11a3JhaW5pYW5cIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ4LW1hYy1jeXJpbGxpY1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY2hpbmVzZVwiLFxuICAgICAgICAgIFwiY3NnYjIzMTJcIixcbiAgICAgICAgICBcImNzaXNvNThnYjIzMTI4MFwiLFxuICAgICAgICAgIFwiZ2IyMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyLTgwXCIsXG4gICAgICAgICAgXCJnYmtcIixcbiAgICAgICAgICBcImlzby1pci01OFwiLFxuICAgICAgICAgIFwieC1nYmtcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJnYmtcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiZ2IxODAzMFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImdiMTgwMzBcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYmlnNVwiLFxuICAgICAgICAgIFwiYmlnNS1oa3Njc1wiLFxuICAgICAgICAgIFwiY24tYmlnNVwiLFxuICAgICAgICAgIFwiY3NiaWc1XCIsXG4gICAgICAgICAgXCJ4LXgtYmlnNVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImJpZzVcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAodHJhZGl0aW9uYWwpIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzZXVjcGtkZm10amFwYW5lc2VcIixcbiAgICAgICAgICBcImV1Yy1qcFwiLFxuICAgICAgICAgIFwieC1ldWMtanBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMtanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc28yMDIyanBcIixcbiAgICAgICAgICBcImlzby0yMDIyLWpwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTIwMjItanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NzaGlmdGppc1wiLFxuICAgICAgICAgIFwibXM5MzJcIixcbiAgICAgICAgICBcIm1zX2thbmppXCIsXG4gICAgICAgICAgXCJzaGlmdC1qaXNcIixcbiAgICAgICAgICBcInNoaWZ0X2ppc1wiLFxuICAgICAgICAgIFwic2ppc1wiLFxuICAgICAgICAgIFwid2luZG93cy0zMWpcIixcbiAgICAgICAgICBcIngtc2ppc1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInNoaWZ0X2ppc1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2V1Y2tyXCIsXG4gICAgICAgICAgXCJjc2tzYzU2MDExOTg3XCIsXG4gICAgICAgICAgXCJldWMta3JcIixcbiAgICAgICAgICBcImlzby1pci0xNDlcIixcbiAgICAgICAgICBcImtvcmVhblwiLFxuICAgICAgICAgIFwia3NfY181NjAxLTE5ODdcIixcbiAgICAgICAgICBcImtzX2NfNTYwMS0xOTg5XCIsXG4gICAgICAgICAgXCJrc2M1NjAxXCIsXG4gICAgICAgICAgXCJrc2NfNTYwMVwiLFxuICAgICAgICAgIFwid2luZG93cy05NDlcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMta3JcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvMjAyMmtyXCIsXG4gICAgICAgICAgXCJoei1nYi0yMzEyXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1jblwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItY24tZXh0XCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1rclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInJlcGxhY2VtZW50XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcInV0Zi0xNmJlXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLTE2YmVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidXRmLTE2XCIsXG4gICAgICAgICAgXCJ1dGYtMTZsZVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInV0Zi0xNmxlXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtdXNlci1kZWZpbmVkXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwieC11c2VyLWRlZmluZWRcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzXCJcbiAgfVxuICBdO1xuXG4gIC8vIExhYmVsIHRvIGVuY29kaW5nIHJlZ2lzdHJ5LlxuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59Pn0gKi9cbiAgdmFyIGxhYmVsX3RvX2VuY29kaW5nID0ge307XG4gIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgY2F0ZWdvcnkuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgIGVuY29kaW5nLmxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICAgIGxhYmVsX3RvX2VuY29kaW5nW2xhYmVsXSA9IGVuY29kaW5nO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdHJ5IG9mIG9mIGVuY29kZXIvZGVjb2RlciBmYWN0b3JpZXMsIGJ5IGVuY29kaW5nIG5hbWUuXG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIGZ1bmN0aW9uKHtmYXRhbDpib29sZWFufSk6IEVuY29kZXI+fSAqL1xuICB2YXIgZW5jb2RlcnMgPSB7fTtcbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oe2ZhdGFsOmJvb2xlYW59KTogRGVjb2Rlcj59ICovXG4gIHZhciBkZWNvZGVycyA9IHt9O1xuXG4gIC8vXG4gIC8vIDUuIEluZGV4ZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBvaW50ZXIgVGhlIHxwb2ludGVyfCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyghQXJyYXkuPD9udW1iZXI+fHVuZGVmaW5lZCl9IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KSB7XG4gICAgaWYgKCFpbmRleCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGluZGV4W3BvaW50ZXJdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyFBcnJheS48P251bWJlcj59IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBmaXJzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gfGNvZGUgcG9pbnR8IGluXG4gICAqICAgICB8aW5kZXh8LCBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCkge1xuICAgIHZhciBwb2ludGVyID0gaW5kZXguaW5kZXhPZihjb2RlX3BvaW50KTtcbiAgICByZXR1cm4gcG9pbnRlciA9PT0gLTEgPyBudWxsIDogcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBpbmRleC5cbiAgICogQHJldHVybiB7KCFBcnJheS48bnVtYmVyPnwhQXJyYXkuPEFycmF5LjxudW1iZXI+Pil9XG4gICAqICAqL1xuICBmdW5jdGlvbiBpbmRleChuYW1lKSB7XG4gICAgaWYgKCEoJ2VuY29kaW5nLWluZGV4ZXMnIGluIGdsb2JhbCkpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5kZXhlcyBtaXNzaW5nLlwiICtcbiAgICAgICAgICAgICAgICAgIFwiIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz9cIik7XG4gICAgfVxuICAgIHJldHVybiBnbG9iYWxbJ2VuY29kaW5nLWluZGV4ZXMnXVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9pbnRlciBUaGUgfHBvaW50ZXJ8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEdCMTgwMzBSYW5nZXNDb2RlUG9pbnRGb3IocG9pbnRlcikge1xuICAgIC8vIDEuIElmIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDM5NDE5IGFuZCBsZXNzIHRoYW4gMTg5MDAwLCBvclxuICAgIC8vIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDEyMzc1NzUsIHJldHVybiBudWxsLlxuICAgIGlmICgocG9pbnRlciA+IDM5NDE5ICYmIHBvaW50ZXIgPCAxODkwMDApIHx8IChwb2ludGVyID4gMTIzNzU3NSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIExldCBvZmZzZXQgYmUgdGhlIGxhc3QgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIHJhbmdlcyB0aGF0XG4gICAgLy8gaXMgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIHBvaW50ZXIgYW5kIGxldCBjb2RlIHBvaW50IG9mZnNldCBiZVxuICAgIC8vIGl0cyBjb3JyZXNwb25kaW5nIGNvZGUgcG9pbnQuXG4gICAgdmFyIG9mZnNldCA9IDA7XG4gICAgdmFyIGNvZGVfcG9pbnRfb2Zmc2V0ID0gMDtcbiAgICB2YXIgaWR4ID0gaW5kZXgoJ2diMTgwMzAnKTtcbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaWR4Lmxlbmd0aDsgKytpKSB7XG4gICAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICAgIHZhciBlbnRyeSA9IGlkeFtpXTtcbiAgICAgIGlmIChlbnRyeVswXSA8PSBwb2ludGVyKSB7XG4gICAgICAgIG9mZnNldCA9IGVudHJ5WzBdO1xuICAgICAgICBjb2RlX3BvaW50X29mZnNldCA9IGVudHJ5WzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IG9mZnNldCArXG4gICAgLy8gcG9pbnRlciDiiJIgb2Zmc2V0LlxuICAgIHJldHVybiBjb2RlX3BvaW50X29mZnNldCArIHBvaW50ZXIgLSBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBsb2NhdGUgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGZpcnN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byB8Y29kZSBwb2ludHwgaW4gdGhlXG4gICAqICAgICBnYjE4MDMwIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhHQjE4MDMwUmFuZ2VzUG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG4gICAgLy8gMS4gTGV0IG9mZnNldCBiZSB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGluZGV4IGdiMTgwMzAgcmFuZ2VzXG4gICAgLy8gdGhhdCBpcyBlcXVhbCB0byBvciBsZXNzIHRoYW4gY29kZSBwb2ludCBhbmQgbGV0IHBvaW50ZXIgb2Zmc2V0XG4gICAgLy8gYmUgaXRzIGNvcnJlc3BvbmRpbmcgcG9pbnRlci5cbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgcG9pbnRlcl9vZmZzZXQgPSAwO1xuICAgIHZhciBpZHggPSBpbmRleCgnZ2IxODAzMCcpO1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpZHgubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgICAgdmFyIGVudHJ5ID0gaWR4W2ldO1xuICAgICAgaWYgKGVudHJ5WzFdIDw9IGNvZGVfcG9pbnQpIHtcbiAgICAgICAgb2Zmc2V0ID0gZW50cnlbMV07XG4gICAgICAgIHBvaW50ZXJfb2Zmc2V0ID0gZW50cnlbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyLiBSZXR1cm4gYSBwb2ludGVyIHdob3NlIHZhbHVlIGlzIHBvaW50ZXIgb2Zmc2V0ICsgY29kZSBwb2ludFxuICAgIC8vIOKIkiBvZmZzZXQuXG4gICAgcmV0dXJuIHBvaW50ZXJfb2Zmc2V0ICsgY29kZV9wb2ludCAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIHNoaWZ0X2ppcyBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgc2hpZnRfamlzIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhTaGlmdEpJU1BvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBqaXMwMjA4IGV4Y2x1ZGluZyBhbGwgcG9pbnRlcnMgaW4gdGhlXG4gICAgLy8gcmFuZ2UgODI3MiB0byA4ODM1LlxuICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuICAgIGlmIChwb2ludGVyID09PSBudWxsIHx8IGluUmFuZ2UocG9pbnRlciwgODI3MiwgODgzNSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcblxuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBiaWc1LlxuICAgIHZhciBpbmRleF8gPSBpbmRleCgnYmlnNScpO1xuXG4gICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBVKzI1NTAsIFUrMjU1RSwgVSsyNTYxLCBVKzI1NkEsIFUrNTM0MSwgb3JcbiAgICAvLyBVKzUzNDUsIHJldHVybiB0aGUgbGFzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gY29kZSBwb2ludCBpblxuICAgIC8vIGluZGV4LlxuICAgIGlmIChjb2RlX3BvaW50ID09PSAweDI1NTAgfHwgY29kZV9wb2ludCA9PT0gMHgyNTVFIHx8XG4gICAgICAgIGNvZGVfcG9pbnQgPT09IDB4MjU2MSB8fCBjb2RlX3BvaW50ID09PSAweDI1NkEgfHxcbiAgICAgICAgY29kZV9wb2ludCA9PT0gMHg1MzQxIHx8IGNvZGVfcG9pbnQgPT09IDB4NTM0NSkge1xuICAgICAgcmV0dXJuIGluZGV4Lmxhc3RJbmRleE9mKGNvZGVfcG9pbnQpO1xuICAgIH1cblxuICAgIC8vIDMuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4Xyk7XG4gIH1cblxuICAvL1xuICAvLyA3LiBBUElcbiAgLy9cblxuICAvKiogQGNvbnN0ICovIHZhciBERUZBVUxUX0VOQ09ESU5HID0gJ3V0Zi04JztcblxuICAvLyA3LjEgSW50ZXJmYWNlIFRleHREZWNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHREZWNvZGVyKSkge1xuICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFkZWNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RlY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX0JPTXNlZW4gPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUgez9EZWNvZGVyfSAqL1xuICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9mYXRhbCA9IEJvb2xlYW4ob3B0aW9uc1snZmF0YWwnXSk7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX2lnbm9yZUJPTSA9IEJvb2xlYW4ob3B0aW9uc1snaWdub3JlQk9NJ10pO1xuXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdmYXRhbCcsIHt2YWx1ZTogdGhpcy5fZmF0YWx9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnaWdub3JlQk9NJywge3ZhbHVlOiB0aGlzLl9pZ25vcmVCT019KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmNvZGluZyA9IHRoaXMuX2VuY29kaW5nLm5hbWU7XG4gICAgICB0aGlzLmZhdGFsID0gdGhpcy5fZmF0YWw7XG4gICAgICB0aGlzLmlnbm9yZUJPTSA9IHRoaXMuX2lnbm9yZUJPTTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIFRleHREZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlldz19IGlucHV0IFRoZSBidWZmZXIgb2YgYnl0ZXMgdG8gZGVjb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRlY29kZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgYnl0ZXM7XG4gICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmICdidWZmZXInIGluIGlucHV0ICYmXG4gICAgICAgICAgICAgICAgIGlucHV0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQuYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuYnl0ZUxlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB0aGlzLl9kZWNvZGVyID0gZGVjb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiB0aGlzLl9mYXRhbH0pO1xuICAgICAgICB0aGlzLl9CT01zZWVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGlucHV0X3N0cmVhbSA9IG5ldyBTdHJlYW0oYnl0ZXMpO1xuXG4gICAgICB2YXIgY29kZV9wb2ludHMgPSBbXTtcblxuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH0gd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSk7XG4gICAgICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29kZV9wb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIElmIGVuY29kaW5nIGlzIG9uZSBvZiB1dGYtOCwgdXRmLTE2YmUsIGFuZCB1dGYtMTZsZSwgYW5kXG4gICAgICAgIC8vIGlnbm9yZSBCT00gZmxhZyBhbmQgQk9NIHNlZW4gZmxhZyBhcmUgdW5zZXQsIHJ1biB0aGVzZVxuICAgICAgICAvLyBzdWJzdWJzdGVwczpcbiAgICAgICAgaWYgKFsndXRmLTgnLCAndXRmLTE2bGUnLCAndXRmLTE2YmUnXS5pbmRleE9mKHRoaXMuZW5jb2RpbmcpICE9PSAtMSAmJlxuICAgICAgICAgICAgIXRoaXMuX2lnbm9yZUJPTSAmJiAhdGhpcy5fQk9Nc2Vlbikge1xuICAgICAgICAgIC8vIElmIHRva2VuIGlzIFUrRkVGRiwgc2V0IEJPTSBzZWVuIGZsYWcuXG4gICAgICAgICAgaWYgKGNvZGVfcG9pbnRzWzBdID09PSAweEZFRkYpIHtcbiAgICAgICAgICAgIHRoaXMuX0JPTXNlZW4gPSB0cnVlO1xuICAgICAgICAgICAgY29kZV9wb2ludHMuc2hpZnQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0b2tlbiBpcyBub3QgZW5kLW9mLXN0cmVhbSwgc2V0IEJPTSBzZWVuXG4gICAgICAgICAgICAvLyBmbGFnIGFuZCBhcHBlbmQgdG9rZW4gdG8gb3V0cHV0LlxuICAgICAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2RlUG9pbnRzVG9TdHJpbmcoY29kZV9wb2ludHMpO1xuICAgIH1cbiAgfTtcblxuICAvLyA3LjIgSW50ZXJmYWNlIFRleHRFbmNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHRFbmNvZGVyKSlcbiAgICAgIHJldHVybiBuZXcgVGV4dEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpO1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgdmFyIGFsbG93TGVnYWN5RW5jb2RpbmcgPVxuICAgICAgICAgIEJvb2xlYW4ob3B0aW9uc1snTk9OU1RBTkRBUkRfYWxsb3dMZWdhY3lFbmNvZGluZyddKTtcbiAgICB2YXIgaXNMZWdhY3lFbmNvZGluZyA9ICh0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTgnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi0xNmxlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtMTZiZScpO1xuICAgIGlmICh0aGlzLl9lbmNvZGluZyA9PT0gbnVsbCB8fCAoaXNMZWdhY3lFbmNvZGluZyAmJiAhYWxsb3dMZWdhY3lFbmNvZGluZykpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFlbmNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0VuY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHs/RW5jb2Rlcn0gKi9cbiAgICB0aGlzLl9lbmNvZGVyID0gbnVsbDtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge3tmYXRhbDogYm9vbGVhbn19ICovXG4gICAgdGhpcy5fb3B0aW9ucyA9IHtmYXRhbDogQm9vbGVhbihvcHRpb25zWydmYXRhbCddKX07XG5cbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZW5jb2RpbmcgPSB0aGlzLl9lbmNvZGluZy5uYW1lO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBUZXh0RW5jb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmc9fSBvcHRfc3RyaW5nIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge1VpbnQ4QXJyYXl9IEVuY29kZWQgYnl0ZXMsIGFzIGEgVWludDhBcnJheS5cbiAgICAgKi9cbiAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZShvcHRfc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICBvcHRfc3RyaW5nID0gb3B0X3N0cmluZyA/IFN0cmluZyhvcHRfc3RyaW5nKSA6ICcnO1xuICAgICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcblxuICAgICAgLy8gTk9URTogVGhpcyBvcHRpb24gaXMgbm9uc3RhbmRhcmQuIE5vbmUgb2YgdGhlIGVuY29kaW5nc1xuICAgICAgLy8gcGVybWl0dGVkIGZvciBlbmNvZGluZyAoaS5lLiBVVEYtOCwgVVRGLTE2KSBhcmUgc3RhdGVmdWwsXG4gICAgICAvLyBzbyBzdHJlYW1pbmcgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKVxuICAgICAgICB0aGlzLl9lbmNvZGVyID0gZW5jb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0odGhpcy5fb3B0aW9ucyk7XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGJ5dGVzID0gW107XG4gICAgICB2YXIgaW5wdXRfc3RyZWFtID0gbmV3IFN0cmVhbShzdHJpbmdUb0NvZGVQb2ludHMob3B0X3N0cmluZykpO1xuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICghaW5wdXRfc3RyZWFtLmVuZE9mU3RyZWFtKCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBieXRlcy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnl0ZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VuY29kZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICB9XG4gIH07XG5cblxuICAvL1xuICAvLyA4LiBUaGUgZW5jb2RpbmdcbiAgLy9cblxuICAvLyA4LjEgdXRmLThcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gdXRmLTgncyBkZWNvZGVyJ3MgaGFzIGFuIGFzc29jaWF0ZWQgdXRmLTggY29kZSBwb2ludCwgdXRmLThcbiAgICAvLyBieXRlcyBzZWVuLCBhbmQgdXRmLTggYnl0ZXMgbmVlZGVkIChhbGwgaW5pdGlhbGx5IDApLCBhIHV0Zi04XG4gICAgLy8gbG93ZXIgYm91bmRhcnkgKGluaXRpYWxseSAweDgwKSwgYW5kIGEgdXRmLTggdXBwZXIgYm91bmRhcnlcbiAgICAvLyAoaW5pdGlhbGx5IDB4QkYpLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9jb2RlX3BvaW50ID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfYnl0ZXNfc2VlbiA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2J5dGVzX25lZWRlZCA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHV0Zi04IGJ5dGVzIG5lZWRlZCBpcyBub3QgMCxcbiAgICAgIC8vIHNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgdXRmOF9ieXRlc19uZWVkZWQgIT09IDApIHtcbiAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiB1dGYtOCBieXRlcyBuZWVkZWQgaXMgMCwgYmFzZWQgb24gYnl0ZTpcbiAgICAgIGlmICh1dGY4X2J5dGVzX25lZWRlZCA9PT0gMCkge1xuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSkge1xuICAgICAgICAgIC8vIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4QzIgdG8gMHhERlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweEMyLCAweERGKSkge1xuICAgICAgICAgIC8vIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMSBhbmQgdXRmLTggY29kZSBwb2ludCB0byBieXRlXG4gICAgICAgICAgLy8g4oiSIDB4QzAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAxO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEMwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhFMCB0byAweEVGXG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhFMCwgMHhFRikpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RTAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweEEwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEUwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4QTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEVELCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg5Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhFRClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDlGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMiBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RTAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAyO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEUwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhGMCB0byAweEY0XG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhGMCwgMHhGNCkpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RjAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDkwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEYwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4OTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEY0LCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg4Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhGNClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDhGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMyBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RjAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAzO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEYwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFJldHVybiBlcnJvci5cbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZW4gKGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QzIgdG8gMHhGNCkgc2V0IHV0Zi04IGNvZGVcbiAgICAgICAgLy8gcG9pbnQgdG8gdXRmLTggY29kZSBwb2ludCA8PCAoNiDDlyB1dGYtOCBieXRlcyBuZWVkZWQpIGFuZFxuICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfY29kZV9wb2ludCA8PCAoNiAqIHV0ZjhfYnl0ZXNfbmVlZGVkKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgbm90IGluIHRoZSByYW5nZSB1dGYtOCBsb3dlciBib3VuZGFyeSB0byB1dGYtOFxuICAgICAgLy8gdXBwZXIgYm91bmRhcnksIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmICghaW5SYW5nZShiaXRlLCB1dGY4X2xvd2VyX2JvdW5kYXJ5LCB1dGY4X3VwcGVyX2JvdW5kYXJ5KSkge1xuXG4gICAgICAgIC8vIDEuIFNldCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOCBieXRlcyBuZWVkZWQsIGFuZCB1dGYtOFxuICAgICAgICAvLyBieXRlcyBzZWVuIHRvIDAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwLCBhbmQgc2V0XG4gICAgICAgIC8vIHV0Zi04IHVwcGVyIGJvdW5kYXJ5IHRvIDB4QkYuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcbiAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODA7XG4gICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDMuIFJldHVybiBlcnJvci5cbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIFNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwIGFuZCB1dGYtOCB1cHBlciBib3VuZGFyeVxuICAgICAgLy8gdG8gMHhCRi5cbiAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwO1xuICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAgIC8vIDYuIEluY3JlYXNlIHV0Zi04IGJ5dGVzIHNlZW4gYnkgb25lIGFuZCBzZXQgdXRmLTggY29kZSBwb2ludFxuICAgICAgLy8gdG8gdXRmLTggY29kZSBwb2ludCArIChieXRlIOKIkiAweDgwKSA8PCAoNiDDlyAodXRmLTggYnl0ZXNcbiAgICAgIC8vIG5lZWRlZCDiiJIgdXRmLTggYnl0ZXMgc2VlbikpLlxuICAgICAgdXRmOF9ieXRlc19zZWVuICs9IDE7XG4gICAgICB1dGY4X2NvZGVfcG9pbnQgKz0gKGJpdGUgLSAweDgwKSA8PCAoNiAqICh1dGY4X2J5dGVzX25lZWRlZCAtIHV0ZjhfYnl0ZXNfc2VlbikpO1xuXG4gICAgICAvLyA3LiBJZiB1dGYtOCBieXRlcyBzZWVuIGlzIG5vdCBlcXVhbCB0byB1dGYtOCBieXRlcyBuZWVkZWQsXG4gICAgICAvLyBjb250aW51ZS5cbiAgICAgIGlmICh1dGY4X2J5dGVzX3NlZW4gIT09IHV0ZjhfYnl0ZXNfbmVlZGVkKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gOC4gTGV0IGNvZGUgcG9pbnQgYmUgdXRmLTggY29kZSBwb2ludC5cbiAgICAgIHZhciBjb2RlX3BvaW50ID0gdXRmOF9jb2RlX3BvaW50O1xuXG4gICAgICAvLyA5LiBTZXQgdXRmLTggY29kZSBwb2ludCwgdXRmLTggYnl0ZXMgbmVlZGVkLCBhbmQgdXRmLTggYnl0ZXNcbiAgICAgIC8vIHNlZW4gdG8gMC5cbiAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcblxuICAgICAgLy8gMTAuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdmKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIFNldCBjb3VudCBhbmQgb2Zmc2V0IGJhc2VkIG9uIHRoZSByYW5nZSBjb2RlIHBvaW50IGlzIGluOlxuICAgICAgdmFyIGNvdW50LCBvZmZzZXQ7XG4gICAgICAvLyBVKzAwODAgdG8gVSswN0ZGOiAgICAxIGFuZCAweEMwXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwODAsIDB4MDdGRikpIHtcbiAgICAgICAgY291bnQgPSAxO1xuICAgICAgICBvZmZzZXQgPSAweEMwO1xuICAgICAgfVxuICAgICAgLy8gVSswODAwIHRvIFUrRkZGRjogICAgMiBhbmQgMHhFMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDA4MDAsIDB4RkZGRikpIHtcbiAgICAgICAgY291bnQgPSAyO1xuICAgICAgICBvZmZzZXQgPSAweEUwO1xuICAgICAgfVxuICAgICAgLy8gVSsxMDAwMCB0byBVKzEwRkZGRjogMyBhbmQgMHhGMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDEwMDAwLCAweDEwRkZGRikpIHtcbiAgICAgICAgY291bnQgPSAzO1xuICAgICAgICBvZmZzZXQgPSAweEYwO1xuICAgICAgfVxuXG4gICAgICAvLyA0LkxldCBieXRlcyBiZSBhIGJ5dGUgc2VxdWVuY2Ugd2hvc2UgZmlyc3QgYnl0ZSBpcyAoY29kZVxuICAgICAgLy8gcG9pbnQgPj4gKDYgw5cgY291bnQpKSArIG9mZnNldC5cbiAgICAgIHZhciBieXRlcyA9IFsoY29kZV9wb2ludCA+PiAoNiAqIGNvdW50KSkgKyBvZmZzZXRdO1xuXG4gICAgICAvLyA1LiBSdW4gdGhlc2Ugc3Vic3RlcHMgd2hpbGUgY291bnQgaXMgZ3JlYXRlciB0aGFuIDA6XG4gICAgICB3aGlsZSAoY291bnQgPiAwKSB7XG5cbiAgICAgICAgLy8gMS4gU2V0IHRlbXAgdG8gY29kZSBwb2ludCA+PiAoNiDDlyAoY291bnQg4oiSIDEpKS5cbiAgICAgICAgdmFyIHRlbXAgPSBjb2RlX3BvaW50ID4+ICg2ICogKGNvdW50IC0gMSkpO1xuXG4gICAgICAgIC8vIDIuIEFwcGVuZCB0byBieXRlcyAweDgwIHwgKHRlbXAgJiAweDNGKS5cbiAgICAgICAgYnl0ZXMucHVzaCgweDgwIHwgKHRlbXAgJiAweDNGKSk7XG5cbiAgICAgICAgLy8gMy4gRGVjcmVhc2UgY291bnQgYnkgb25lLlxuICAgICAgICBjb3VudCAtPSAxO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gYnl0ZXMgYnl0ZXMsIGluIG9yZGVyLlxuICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtOCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGOEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi04J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEY4RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyA5LiBMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gOS4xIHNpbmdsZS1ieXRlIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IGluZGV4IFRoZSBlbmNvZGluZyBpbmRleC5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaW5nbGVCeXRlRGVjb2RlcihpbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gMy4gTGV0IGNvZGUgcG9pbnQgYmUgdGhlIGluZGV4IGNvZGUgcG9pbnQgZm9yIGJ5dGUg4oiSIDB4ODAgaW5cbiAgICAgIC8vIGluZGV4IHNpbmdsZS1ieXRlLlxuICAgICAgdmFyIGNvZGVfcG9pbnQgPSBpbmRleFtiaXRlIC0gMHg4MF07XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICB9O1xuICB9XG5cbiAgLy8gOS4yIHNpbmdsZS1ieXRlIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPD9udW1iZXI+fSBpbmRleCBUaGUgZW5jb2RpbmcgaW5kZXguXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2luZ2xlQnl0ZUVuY29kZXIoaW5kZXgsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBzaW5nbGUtYnl0ZS5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBwb2ludGVyICsgMHg4MC5cbiAgICAgIHJldHVybiBwb2ludGVyICsgMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICghKCdlbmNvZGluZy1pbmRleGVzJyBpbiBnbG9iYWwpKVxuICAgICAgcmV0dXJuO1xuICAgIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgICBpZiAoY2F0ZWdvcnkuaGVhZGluZyAhPT0gJ0xlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MnKVxuICAgICAgICByZXR1cm47XG4gICAgICBjYXRlZ29yeS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgICB2YXIgbmFtZSA9IGVuY29kaW5nLm5hbWU7XG4gICAgICAgIHZhciBpZHggPSBpbmRleChuYW1lKTtcbiAgICAgICAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICAgICAgICBkZWNvZGVyc1tuYW1lXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZUJ5dGVEZWNvZGVyKGlkeCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgICAgICAgZW5jb2RlcnNbbmFtZV0gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVCeXRlRW5jb2RlcihpZHgsIG9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0oKSk7XG5cbiAgLy9cbiAgLy8gMTAuIExlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHNpbXBsaWZpZWQpIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEwLjEgZ2JrXG5cbiAgLy8gMTAuMS4xIGdiayBkZWNvZGVyXG4gIC8vIGdiaydzIGRlY29kZXIgaXMgZ2IxODAzMCdzIGRlY29kZXIuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2diayddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTAuMS4yIGdiayBlbmNvZGVyXG4gIC8vIGdiaydzIGVuY29kZXIgaXMgZ2IxODAzMCdzIGVuY29kZXIgd2l0aCBpdHMgZ2JrIGZsYWcgc2V0LlxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydnYmsnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIC8vIDEwLjIgZ2IxODAzMFxuXG4gIC8vIDEwLjIuMSBnYjE4MDMwIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBnYjE4MDMwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwXG4gICAgLy8gc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCAoYWxsIGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdiMTgwMzBfZmlyc3QgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF9zZWNvbmQgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgYXJlIDB4MDAsIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGdiMTgwMzBfZmlyc3QgPT09IDB4MDAgJiZcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9PT0gMHgwMCAmJiBnYjE4MDMwX3RoaXJkID09PSAweDAwKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgIH1cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgb3IgZ2IxODAzMCB0aGlyZCBpcyBub3QgMHgwMCwgc2V0IGdiMTgwMzAgZmlyc3QsXG4gICAgICAvLyBnYjE4MDMwIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmXG4gICAgICAgICAgKGdiMTgwMzBfZmlyc3QgIT09IDB4MDAgfHwgZ2IxODAzMF9zZWNvbmQgIT09IDB4MDAgfHwgZ2IxODAzMF90aGlyZCAhPT0gMHgwMCkpIHtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgICAgIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG4gICAgICB2YXIgY29kZV9wb2ludDtcbiAgICAgIC8vIDMuIElmIGdiMTgwMzAgdGhpcmQgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX3RoaXJkICE9PSAweDAwKSB7XG4gICAgICAgIC8vIDEuIExldCBjb2RlIHBvaW50IGJlIG51bGwuXG4gICAgICAgIGNvZGVfcG9pbnQgPSBudWxsO1xuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDMwIHRvIDB4MzksIHNldCBjb2RlIHBvaW50IHRvXG4gICAgICAgIC8vIHRoZSBpbmRleCBnYjE4MDMwIHJhbmdlcyBjb2RlIHBvaW50IGZvciAoKChnYjE4MDMwIGZpcnN0IOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGdiMTgwMzAgc2Vjb25kIOKIkiAweDMwKSDDlyAxMjYgKyBnYjE4MDMwIHRoaXJkIOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGJ5dGUg4oiSIDB4MzAuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MzAsIDB4MzkpKSB7XG4gICAgICAgICAgY29kZV9wb2ludCA9IGluZGV4R0IxODAzMFJhbmdlc0NvZGVQb2ludEZvcihcbiAgICAgICAgICAgICAgKCgoZ2IxODAzMF9maXJzdCAtIDB4ODEpICogMTAgKyAoZ2IxODAzMF9zZWNvbmQgLSAweDMwKSkgKiAxMjYgK1xuICAgICAgICAgICAgICAgKGdiMTgwMzBfdGhpcmQgLSAweDgxKSkgKiAxMCArIGJpdGUgLSAweDMwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIExldCBidWZmZXIgYmUgYSBieXRlIHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgZ2IxODAzMFxuICAgICAgICAvLyBzZWNvbmQsIGdiMTgwMzAgdGhpcmQsIGFuZCBieXRlLCBpbiBvcmRlci5cbiAgICAgICAgdmFyIGJ1ZmZlciA9IFtnYjE4MDMwX3NlY29uZCwgZ2IxODAzMF90aGlyZCwgYml0ZV07XG5cbiAgICAgICAgLy8gNC4gU2V0IGdiMTgwMzAgZmlyc3QsIGdiMTgwMzAgc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCB0b1xuICAgICAgICAvLyAweDAwLlxuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3RoaXJkID0gMHgwMDtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHByZXBlbmQgYnVmZmVyIHRvIHN0cmVhbSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBnYjE4MDMwIHNlY29uZCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfc2Vjb25kICE9PSAweDAwKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZ2IxODAzMCB0aGlyZFxuICAgICAgICAvLyB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgICAgZ2IxODAzMF90aGlyZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGdiMTgwMzAgc2Vjb25kIGZvbGxvd2VkIGJ5IGJ5dGUgdG8gc3RyZWFtLCBzZXRcbiAgICAgICAgLy8gZ2IxODAzMCBmaXJzdCBhbmQgZ2IxODAzMCBzZWNvbmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoW2diMTgwMzBfc2Vjb25kLCBiaXRlXSk7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBnYjE4MDMwIGZpcnN0IGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF9maXJzdCAhPT0gMHgwMCkge1xuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHgzOSwgc2V0IGdiMTgwMzAgc2Vjb25kXG4gICAgICAgIC8vIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgzMCwgMHgzOSkpIHtcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBMZXQgbGVhZCBiZSBnYjE4MDMwIGZpcnN0LCBsZXQgcG9pbnRlciBiZSBudWxsLCBhbmQgc2V0XG4gICAgICAgIC8vIGdiMTgwMzAgZmlyc3QgdG8gMHgwMC5cbiAgICAgICAgdmFyIGxlYWQgPSBnYjE4MDMwX2ZpcnN0O1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuXG4gICAgICAgIC8vIDMuIExldCBvZmZzZXQgYmUgMHg0MCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGIGFuZCAweDQxXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IGJpdGUgPCAweDdGID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4ODAgdG8gMHhGRSxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIDB4ODEpIMOXIDE5MCArIChieXRlIOKIkiBvZmZzZXQpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTkwICsgKGJpdGUgLSBvZmZzZXQpO1xuXG4gICAgICAgIC8vIDUuIExldCBjb2RlIHBvaW50IGJlIG51bGwgaWYgcG9pbnRlciBpcyBudWxsIGFuZCB0aGUgaW5kZXhcbiAgICAgICAgLy8gY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIG90aGVyd2lzZS5cbiAgICAgICAgY29kZV9wb2ludCA9IHBvaW50ZXIgPT09IG51bGwgPyBudWxsIDpcbiAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdnYjE4MDMwJykpO1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA4LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4MCwgcmV0dXJuIGNvZGUgcG9pbnQgVSsyMEFDLlxuICAgICAgaWYgKGJpdGUgPT09IDB4ODApXG4gICAgICAgIHJldHVybiAweDIwQUM7XG5cbiAgICAgIC8vIDguIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGdiMTgwMzAgZmlyc3QgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gOS4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDEwLjIuMiBnYjE4MDMwIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbj19IGdia19mbGFnXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRW5jb2RlcihvcHRpb25zLCBnYmtfZmxhZykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gZ2IxODAzMCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZ2JrIGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKSB7XG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyAzLiBJZiB0aGUgZ2JrIGZsYWcgaXMgc2V0IGFuZCBjb2RlIHBvaW50IGlzIFUrMjBBQywgcmV0dXJuXG4gICAgICAvLyBieXRlIDB4ODAuXG4gICAgICBpZiAoZ2JrX2ZsYWcgJiYgY29kZV9wb2ludCA9PT0gMHgyMEFDKVxuICAgICAgICByZXR1cm4gMHg4MDtcblxuICAgICAgLy8gNC4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGdiMTgwMzAuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnZ2IxODAzMCcpKTtcblxuICAgICAgLy8gNS4gSWYgcG9pbnRlciBpcyBub3QgbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHBvaW50ZXIgIT09IG51bGwpIHtcblxuICAgICAgICAvLyAxLiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTkwKSArIDB4ODE7XG5cbiAgICAgICAgLy8gMi4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxOTAuXG4gICAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxOTA7XG5cbiAgICAgICAgLy8gMy4gTGV0IG9mZnNldCBiZSAweDQwIGlmIHRyYWlsIGlzIGxlc3MgdGhhbiAweDNGIGFuZCAweDQxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IHRyYWlsIDwgMHgzRiA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAgIC8vIDQuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbCArIG9mZnNldC5cbiAgICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGdiayBmbGFnIGlzIHNldCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChnYmtfZmxhZylcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gU2V0IHBvaW50ZXIgdG8gdGhlIGluZGV4IGdiMTgwMzAgcmFuZ2VzIHBvaW50ZXIgZm9yIGNvZGVcbiAgICAgIC8vIHBvaW50LlxuICAgICAgcG9pbnRlciA9IGluZGV4R0IxODAzMFJhbmdlc1BvaW50ZXJGb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDguIExldCBieXRlMSBiZSBwb2ludGVyIC8gMTAgLyAxMjYgLyAxMC5cbiAgICAgIHZhciBieXRlMSA9IGRpdihkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KSwgMTApO1xuXG4gICAgICAvLyA5LiBTZXQgcG9pbnRlciB0byBwb2ludGVyIOKIkiBieXRlMSDDlyAxMCDDlyAxMjYgw5cgMTAuXG4gICAgICBwb2ludGVyID0gcG9pbnRlciAtIGJ5dGUxICogMTAgKiAxMjYgKiAxMDtcblxuICAgICAgLy8gMTAuIExldCBieXRlMiBiZSBwb2ludGVyIC8gMTAgLyAxMjYuXG4gICAgICB2YXIgYnl0ZTIgPSBkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KTtcblxuICAgICAgLy8gMTEuIFNldCBwb2ludGVyIHRvIHBvaW50ZXIg4oiSIGJ5dGUyIMOXIDEwIMOXIDEyNi5cbiAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gYnl0ZTIgKiAxMCAqIDEyNjtcblxuICAgICAgLy8gMTIuIExldCBieXRlMyBiZSBwb2ludGVyIC8gMTAuXG4gICAgICB2YXIgYnl0ZTMgPSBkaXYocG9pbnRlciwgMTApO1xuXG4gICAgICAvLyAxMy4gTGV0IGJ5dGU0IGJlIHBvaW50ZXIg4oiSIGJ5dGUzIMOXIDEwLlxuICAgICAgdmFyIGJ5dGU0ID0gcG9pbnRlciAtIGJ5dGUzICogMTA7XG5cbiAgICAgIC8vIDE0LiBSZXR1cm4gZm91ciBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGJ5dGUxICsgMHg4MSwgYnl0ZTIgK1xuICAgICAgLy8gMHgzMCwgYnl0ZTMgKyAweDgxLCBieXRlNCArIDB4MzAuXG4gICAgICByZXR1cm4gW2J5dGUxICsgMHg4MSxcbiAgICAgICAgICAgICAgYnl0ZTIgKyAweDMwLFxuICAgICAgICAgICAgICBieXRlMyArIDB4ODEsXG4gICAgICAgICAgICAgIGJ5dGU0ICsgMHgzMF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2diMTgwMzAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydnYjE4MDMwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDExLiBMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTEuMSBiaWc1XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBiaWc1J3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBiaWc1IGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGJpZzUgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgYmlnNV9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIDB4MDAsIHJldHVyblxuICAgICAgLy8gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBiaWc1IGxlYWQsIGxldFxuICAgICAgLy8gcG9pbnRlciBiZSBudWxsLCBzZXQgYmlnNSBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoYmlnNV9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gYmlnNV9sZWFkO1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YgYW5kIDB4NjJcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gYml0ZSA8IDB4N0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHhBMSB0byAweEZFLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgMHg4MSkgw5cgMTU3ICsgKGJ5dGUg4oiSIG9mZnNldCkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxNTcgKyAoYml0ZSAtIG9mZnNldCk7XG5cbiAgICAgICAgLy8gMy4gSWYgdGhlcmUgaXMgYSByb3cgaW4gdGhlIHRhYmxlIGJlbG93IHdob3NlIGZpcnN0IGNvbHVtblxuICAgICAgICAvLyBpcyBwb2ludGVyLCByZXR1cm4gdGhlIHR3byBjb2RlIHBvaW50cyBsaXN0ZWQgaW4gaXRzIHNlY29uZFxuICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgLy8gUG9pbnRlciB8IENvZGUgcG9pbnRzXG4gICAgICAgIC8vIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC8vIDExMzMgICAgfCBVKzAwQ0EgVSswMzA0XG4gICAgICAgIC8vIDExMzUgICAgfCBVKzAwQ0EgVSswMzBDXG4gICAgICAgIC8vIDExNjQgICAgfCBVKzAwRUEgVSswMzA0XG4gICAgICAgIC8vIDExNjYgICAgfCBVKzAwRUEgVSswMzBDXG4gICAgICAgIHN3aXRjaCAocG9pbnRlcikge1xuICAgICAgICAgIGNhc2UgMTEzMzogcmV0dXJuIFsweDAwQ0EsIDB4MDMwNF07XG4gICAgICAgICAgY2FzZSAxMTM1OiByZXR1cm4gWzB4MDBDQSwgMHgwMzBDXTtcbiAgICAgICAgICBjYXNlIDExNjQ6IHJldHVybiBbMHgwMEVBLCAweDAzMDRdO1xuICAgICAgICAgIGNhc2UgMTE2NjogcmV0dXJuIFsweDAwRUEsIDB4MDMwQ107XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0LiBMZXQgY29kZSBwb2ludCBiZSBudWxsIGlmIHBvaW50ZXIgaXMgbnVsbCBhbmQgdGhlIGluZGV4XG4gICAgICAgIC8vIGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggYmlnNSBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnYmlnNScpKTtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBiaWc1IGxlYWQgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGJpZzVfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggYmlnNSBwb2ludGVyIGZvciBjb2RlIHBvaW50LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdiaWc1JykpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE1NyArIDB4ODEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxNTcpICsgMHg4MTtcblxuICAgICAgLy8gNi4gSWYgbGVhZCBpcyBsZXNzIHRoYW4gMHhBMSwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChsZWFkIDwgMHhBMSlcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxNTcuXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTU3O1xuXG4gICAgICAvLyA4LiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YgYW5kIDB4NjJcbiAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgIHZhciBvZmZzZXQgPSB0cmFpbCA8IDB4M0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgLy8gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2JpZzUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpZzVFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydiaWc1J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBCaWc1RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDEyLiBMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMi4xIGV1Yy1qcFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDSlBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gZXVjLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBldWMtanAgamlzMDIxMiBmbGFnXG4gICAgLy8gKGluaXRpYWxseSB1bnNldCkgYW5kIGV1Yy1qcCBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2UsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMtanAgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVjanBfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWpwIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2pwX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWpwIGxlYWQgaXMgMHg4RSBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0b1xuICAgICAgLy8gMHhERiwgc2V0IGV1Yy1qcCBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2VcbiAgICAgIC8vIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4QTEuXG4gICAgICBpZiAoZXVjanBfbGVhZCA9PT0gMHg4RSAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4REYpKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4QTE7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGV1Yy1qcCBsZWFkIGlzIDB4OEYgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QTEgdG9cbiAgICAgIC8vIDB4RkUsIHNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZywgc2V0IGV1Yy1qcCBsZWFkIHRvIGJ5dGUsXG4gICAgICAvLyBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgPT09IDB4OEYgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICBldWNqcF9qaXMwMjEyX2ZsYWcgPSB0cnVlO1xuICAgICAgICBldWNqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGV1Yy1qcCBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBldWMtanAgbGVhZCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBldWNqcF9sZWFkO1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IG51bGw7XG5cbiAgICAgICAgLy8gMi4gSWYgbGVhZCBhbmQgYnl0ZSBhcmUgYm90aCBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBzZXRcbiAgICAgICAgLy8gY29kZSBwb2ludCB0byB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgKGxlYWQg4oiSIDB4QTEpIMOXIDk0ICtcbiAgICAgICAgLy8gYnl0ZSDiiJIgMHhBMSBpbiBpbmRleCBqaXMwMjA4IGlmIHRoZSBldWMtanAgamlzMDIxMiBmbGFnIGlzXG4gICAgICAgIC8vIHVuc2V0IGFuZCBpbiBpbmRleCBqaXMwMjEyIG90aGVyd2lzZS5cbiAgICAgICAgaWYgKGluUmFuZ2UobGVhZCwgMHhBMSwgMHhGRSkgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICAgIGNvZGVfcG9pbnQgPSBpbmRleENvZGVQb2ludEZvcihcbiAgICAgICAgICAgIChsZWFkIC0gMHhBMSkgKiA5NCArIChiaXRlIC0gMHhBMSksXG4gICAgICAgICAgICBpbmRleCghZXVjanBfamlzMDIxMl9mbGFnID8gJ2ppczAyMDgnIDogJ2ppczAyMTInKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZy5cbiAgICAgICAgZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2U7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBub3QgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgcHJlcGVuZCBieXRlXG4gICAgICAgIC8vIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKCFpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4RSwgMHg4Riwgb3IgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoYml0ZSA9PT0gMHg4RSB8fCBiaXRlID09PSAweDhGIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA4LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICByZXR1cm4gMHg3RTtcblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGRjYxIHRvIFUrRkY5RiwgcmV0dXJuIHR3b1xuICAgICAgLy8gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSAweDhFIGFuZCBjb2RlIHBvaW50IOKIkiAweEZGNjEgKyAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGRjYxLCAweEZGOUYpKVxuICAgICAgICByZXR1cm4gWzB4OEUsIGNvZGVfcG9pbnQgLSAweEZGNjEgKyAweEExXTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gamlzMDIwOC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHhBMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4QTE7XG5cbiAgICAgIC8vIDEwLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHhBMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4QTE7XG5cbiAgICAgIC8vIDExLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDSlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjIgaXNvLTIwMjItanBcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqIEBlbnVtICovXG4gICAgdmFyIHN0YXRlcyA9IHtcbiAgICAgIEFTQ0lJOiAwLFxuICAgICAgUm9tYW46IDEsXG4gICAgICBLYXRha2FuYTogMixcbiAgICAgIExlYWRCeXRlOiAzLFxuICAgICAgVHJhaWxCeXRlOiA0LFxuICAgICAgRXNjYXBlU3RhcnQ6IDUsXG4gICAgICBFc2NhcGU6IDZcbiAgICB9O1xuICAgIC8vIGlzby0yMDIyLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBpc28tMjAyMi1qcCBkZWNvZGVyXG4gICAgLy8gc3RhdGUgKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlXG4gICAgLy8gKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGxlYWQgKGluaXRpYWxseSAweDAwKSwgYW5kXG4gICAgLy8gaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9sZWFkID0gMHgwMCxcbiAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlOlxuICAgICAgc3dpdGNoIChpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2Ugc3RhdGVzLkFTQ0lJOlxuICAgICAgICAvLyBBU0NJSVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGLCBleGNsdWRpbmcgMHgwRSwgMHgwRiwgYW5kIDB4MUJcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikgJiYgYml0ZSAhPT0gMHgwRVxuICAgICAgICAgICAgJiYgYml0ZSAhPT0gMHgwRiAmJiBiaXRlICE9PSAweDFCKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlJvbWFuOlxuICAgICAgICAvLyBSb21hblxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHg1Q1xuICAgICAgICBpZiAoYml0ZSA9PT0gMHg1Qykge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyBVKzAwQTUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4MDBBNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4N0VcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4N0UpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gVSsyMDNFLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweDIwM0U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDAwIHRvIDB4N0YsIGV4Y2x1ZGluZyAweDBFLCAweDBGLCAweDFCLCAweDVDLCBhbmQgMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSAmJiBiaXRlICE9PSAweDBFICYmIGJpdGUgIT09IDB4MEZcbiAgICAgICAgICAgICYmIGJpdGUgIT09IDB4MUIgJiYgYml0ZSAhPT0gMHg1QyAmJiBiaXRlICE9PSAweDdFKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkthdGFrYW5hOlxuICAgICAgICAvLyBLYXRha2FuYVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDVGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4NUYpKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHgyMS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4MjE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5MZWFkQnl0ZTpcbiAgICAgICAgLy8gTGVhZCBieXRlXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg3RSkpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcCBsZWFkXG4gICAgICAgICAgLy8gdG8gYnl0ZSwgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byB0cmFpbCBieXRlLCBhbmRcbiAgICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSBiaXRlO1xuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLlRyYWlsQnl0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlRyYWlsQnl0ZTpcbiAgICAgICAgLy8gVHJhaWwgYnl0ZVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4N0UpKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IHRoZSBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBwb2ludGVyIGJlIChpc28tMjAyMi1qcCBsZWFkIOKIkiAweDIxKSDDlyA5NCArIGJ5dGUg4oiSIDB4MjEuXG4gICAgICAgICAgdmFyIHBvaW50ZXIgPSAoaXNvMjAyMmpwX2xlYWQgLSAweDIxKSAqIDk0ICsgYml0ZSAtIDB4MjE7XG5cbiAgICAgICAgICAvLyAzLiBMZXQgY29kZSBwb2ludCBiZSB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBqaXMwMjA4LlxuICAgICAgICAgIHZhciBjb2RlX3BvaW50ID0gaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFNldCB0aGUgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUsIHByZXBlbmRcbiAgICAgICAgICAvLyBieXRlIHRvIHN0cmVhbSwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUgYW5kIHJldHVyblxuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGVTdGFydDpcbiAgICAgICAgLy8gRXNjYXBlIHN0YXJ0XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlaXRoZXIgMHgyNCBvciAweDI4LCBzZXQgaXNvLTIwMjItanAgbGVhZCB0b1xuICAgICAgICAvLyBieXRlLCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSwgYW5kIHJldHVyblxuICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MjQgfHwgYml0ZSA9PT0gMHgyOCkge1xuICAgICAgICAgIGlzbzIwMjJqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcFxuICAgICAgICAvLyBkZWNvZGVyIHN0YXRlIHRvIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlLCBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGU6XG4gICAgICAgIC8vIEVzY2FwZVxuXG4gICAgICAgIC8vIDEuIExldCBsZWFkIGJlIGlzby0yMDIyLWpwIGxlYWQgYW5kIHNldCBpc28tMjAyMi1qcCBsZWFkIHRvXG4gICAgICAgIC8vIDB4MDAuXG4gICAgICAgIHZhciBsZWFkID0gaXNvMjAyMmpwX2xlYWQ7XG4gICAgICAgIGlzbzIwMjJqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAyLiBMZXQgc3RhdGUgYmUgbnVsbC5cbiAgICAgICAgdmFyIHN0YXRlID0gbnVsbDtcblxuICAgICAgICAvLyAzLiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0Miwgc2V0IHN0YXRlIHRvIEFTQ0lJLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDQyKVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkFTQ0lJO1xuXG4gICAgICAgIC8vIDQuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDRBLCBzZXQgc3RhdGUgdG8gUm9tYW4uXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NEEpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuUm9tYW47XG5cbiAgICAgICAgLy8gNS4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NDksIHNldCBzdGF0ZSB0byBLYXRha2FuYS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0OSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5LYXRha2FuYTtcblxuICAgICAgICAvLyA2LiBJZiBsZWFkIGlzIDB4MjQgYW5kIGJ5dGUgaXMgZWl0aGVyIDB4NDAgb3IgMHg0Miwgc2V0XG4gICAgICAgIC8vIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjQgJiYgKGJpdGUgPT09IDB4NDAgfHwgYml0ZSA9PT0gMHg0MikpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG5cbiAgICAgICAgLy8gNy4gSWYgc3RhdGUgaXMgbm9uLW51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgYW5kIGlzby0yMDIyLWpwIGRlY29kZXJcbiAgICAgICAgICAvLyBvdXRwdXQgc3RhdGUgdG8gc3RhdGVzLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBvdXRwdXQgZmxhZyBiZSB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcuXG4gICAgICAgICAgdmFyIG91dHB1dF9mbGFnID0gaXNvMjAyMmpwX291dHB1dF9mbGFnO1xuXG4gICAgICAgICAgLy8gMy4gU2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZy5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gNC4gUmV0dXJuIGNvbnRpbnVlLCBpZiBvdXRwdXQgZmxhZyBpcyB1bnNldCwgYW5kIGVycm9yXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICAgIHJldHVybiAhb3V0cHV0X2ZsYWcgPyBudWxsIDogZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDguIFByZXBlbmQgbGVhZCBhbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKFtsZWFkLCBiaXRlXSk7XG5cbiAgICAgICAgLy8gOS4gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLCBzZXQgaXNvLTIwMjItanBcbiAgICAgICAgLy8gZGVjb2RlciBzdGF0ZSB0byBpc28tMjAyMi1qcCBkZWNvZGVyIG91dHB1dCBzdGF0ZSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gaXNvLTIwMjItanAncyBlbmNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAvLyBzdGF0ZSB3aGljaCBpcyBvbmUgb2YgQVNDSUksIFJvbWFuLCBhbmQgamlzMDIwOCAoaW5pdGlhbGx5XG4gICAgLy8gQVNDSUkpLlxuICAgIC8qKiBAZW51bSAqL1xuICAgIHZhciBzdGF0ZXMgPSB7XG4gICAgICBBU0NJSTogMCxcbiAgICAgIFJvbWFuOiAxLFxuICAgICAgamlzMDIwODogMlxuICAgIH07XG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBpc28tMjAyMi1qcCBlbmNvZGVyXG4gICAgICAvLyBzdGF0ZSBpcyBub3QgQVNDSUksIHByZXBlbmQgY29kZSBwb2ludCB0byBzdHJlYW0sIHNldFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBBU0NJSSwgYW5kIHJldHVybiB0aHJlZSBieXRlc1xuICAgICAgLy8gMHgxQiAweDI4IDB4NDIuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLkFTQ0lJKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0gYW5kIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAgIC8vIHN0YXRlIGlzIEFTQ0lJLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJiBpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIEFTQ0lJIGFuZCBjb2RlIHBvaW50IGlzIGluXG4gICAgICAvLyB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlXG4gICAgICAvLyBwb2ludC5cbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gNC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBSb21hbiBhbmQgY29kZSBwb2ludCBpcyBpblxuICAgICAgLy8gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIGV4Y2x1ZGluZyBVKzAwNUMgYW5kIFUrMDA3RSwgb3JcbiAgICAgIC8vIGlzIFUrMDBBNSBvciBVKzIwM0UsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5Sb21hbiAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgY29kZV9wb2ludCAhPT0gMHgwMDVDICYmIGNvZGVfcG9pbnQgIT09IDB4MDA3RSkge1xuXG4gICAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICAgIHJldHVybiAweDdFO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCBhbmRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgbm90IEFTQ0lJLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG9cbiAgICAgIC8vIHN0cmVhbSwgc2V0IGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gQVNDSUksIGFuZCByZXR1cm5cbiAgICAgIC8vIHRocmVlIGJ5dGVzIDB4MUIgMHgyOCAweDQyLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuQVNDSUkpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5BU0NJSTtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI4LCAweDQyXTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBlaXRoZXIgVSswMEE1IG9yIFUrMjAzRSwgYW5kIGlzby0yMDIyLWpwXG4gICAgICAvLyBlbmNvZGVyIHN0YXRlIGlzIG5vdCBSb21hbiwgcHJlcGVuZCBjb2RlIHBvaW50IHRvIHN0cmVhbSwgc2V0XG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIFJvbWFuLCBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzXG4gICAgICAvLyAweDFCIDB4MjggMHg0QS5cbiAgICAgIGlmICgoY29kZV9wb2ludCA9PT0gMHgwMEE1IHx8IGNvZGVfcG9pbnQgPT09IDB4MjAzRSkgJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5Sb21hbikge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLlJvbWFuO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NEFdO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDguIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBqaXMwMjA4LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgIC8vIDkuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyAxMC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBub3QgamlzMDIwOCwgcHJlcGVuZCBjb2RlXG4gICAgICAvLyBwb2ludCB0byBzdHJlYW0sIHNldCBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIGppczAyMDgsXG4gICAgICAvLyBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzIDB4MUIgMHgyNCAweDQyLlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLmppczAyMDgpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5qaXMwMjA4O1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjQsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAxMS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHgyMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4MjE7XG5cbiAgICAgIC8vIDEyLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHgyMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4MjE7XG5cbiAgICAgIC8vIDEzLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snaXNvLTIwMjItanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IElTTzIwMjJKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2lzby0yMDIyLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBJU08yMDIySlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjMgc2hpZnRfamlzXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaGlmdEpJU0RlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gc2hpZnRfamlzJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBzaGlmdF9qaXMgbGVhZCAoaW5pdGlhbGx5XG4gICAgLy8gMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsXG4gICAgICAvLyBzZXQgc2hpZnRfamlzIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgMHgwMCxcbiAgICAgIC8vIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHNoaWZ0amlzX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIHNoaWZ0X2ppcyBsZWFkLFxuICAgICAgLy8gbGV0IHBvaW50ZXIgYmUgbnVsbCwgc2V0IHNoaWZ0X2ppcyBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1blxuICAgICAgLy8gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IHNoaWZ0amlzX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwLCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGLCBhbmQgMHg0MVxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSAoYml0ZSA8IDB4N0YpID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gMi4gTGV0IGxlYWQgb2Zmc2V0IGJlIDB4ODEsIGlmIGxlYWQgaXMgbGVzcyB0aGFuIDB4QTAsIGFuZFxuICAgICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGxlYWRfb2Zmc2V0ID0gKGxlYWQgPCAweEEwKSA/IDB4ODEgOiAweEMxO1xuXG4gICAgICAgIC8vIDMuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweDgwIHRvIDB4RkMsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiBsZWFkIG9mZnNldCkgw5cgMTg4ICsgYnl0ZSDiiJIgb2Zmc2V0LlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkMpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIGxlYWRfb2Zmc2V0KSAqIDE4OCArIGJpdGUgLSBvZmZzZXQ7XG5cbiAgICAgICAgLy8gNC4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggamlzMDIwOCBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgcG9pbnRlciBpcyBpbiB0aGUgcmFuZ2UgODgzNlxuICAgICAgICAvLyB0byAxMDUyOCwgcmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweEUwMDAgK1xuICAgICAgICAvLyBwb2ludGVyIOKIkiA4ODM2LlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBwb2ludGVyICE9PSBudWxsICYmXG4gICAgICAgICAgICBpblJhbmdlKHBvaW50ZXIsIDg4MzYsIDEwNTI4KSlcbiAgICAgICAgICByZXR1cm4gMHhFMDAwICsgcG9pbnRlciAtIDg4MzY7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDguIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg4MCwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4ODApKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweERGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhERikpXG4gICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHhBMTtcblxuICAgICAgLy8gNi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweDlGIG9yIDB4RTAgdG8gMHhGQywgc2V0XG4gICAgICAvLyBzaGlmdF9qaXMgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweDlGKSB8fCBpblJhbmdlKGJpdGUsIDB4RTAsIDB4RkMpKSB7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA4MCwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDgwKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MDBBNSlcbiAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAzRSlcbiAgICAgICAgcmV0dXJuIDB4N0U7XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrRkY2MSB0byBVK0ZGOUYsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQg4oiSIDB4RkY2MSArIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEZGNjEsIDB4RkY5RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50IC0gMHhGRjYxICsgMHhBMTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggc2hpZnRfamlzIHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4U2hpZnRKSVNQb2ludGVyRm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE4OC5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE4OCk7XG5cbiAgICAgIC8vIDEwLiBMZXQgbGVhZCBvZmZzZXQgYmUgMHg4MSwgaWYgbGVhZCBpcyBsZXNzIHRoYW4gMHgxRiwgYW5kXG4gICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgIHZhciBsZWFkX29mZnNldCA9IChsZWFkIDwgMHgxRikgPyAweDgxIDogMHhDMTtcblxuICAgICAgLy8gMTEuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTg4LlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE4ODtcblxuICAgICAgLy8gMTIuIExldCBvZmZzZXQgYmUgMHg0MCwgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YsIGFuZCAweDQxXG4gICAgICAvLyBvdGhlcndpc2UuXG4gICAgICB2YXIgb2Zmc2V0ID0gKHRyYWlsIDwgMHgzRikgPyAweDQwIDogMHg0MTtcblxuICAgICAgLy8gMTMuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkICsgbGVhZCBvZmZzZXQgYW5kXG4gICAgICAvLyB0cmFpbCArIG9mZnNldC5cbiAgICAgIHJldHVybiBbbGVhZCArIGxlYWRfb2Zmc2V0LCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3NoaWZ0X2ppcyddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydzaGlmdF9qaXMnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFNoaWZ0SklTRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyAxMy4gTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEzLjEgZXVjLWtyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkRlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyBldWMta3IncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGV1Yy1rciBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gZXVjLWtyIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVja3JfbGVhZCAhPT0gMCkge1xuICAgICAgICBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2tyX2xlYWQgPT09IDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGV1Yy1rciBsZWFkLCBsZXRcbiAgICAgIC8vIHBvaW50ZXIgYmUgbnVsbCwgc2V0IGV1Yy1rciBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoZXVja3JfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGV1Y2tyX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgZXVja3JfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MSB0byAweEZFLCBzZXQgcG9pbnRlciB0b1xuICAgICAgICAvLyAobGVhZCDiiJIgMHg4MSkgw5cgMTkwICsgKGJ5dGUg4oiSIDB4NDEpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQxLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE5MCArIChiaXRlIC0gMHg0MSk7XG5cbiAgICAgICAgLy8gMi4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggZXVjLWtyIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDogaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2V1Yy1rcicpKTtcblxuICAgICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBldWMta3IgbGVhZCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgZXVja3JfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGV1Yy1rci5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdldWMta3InKSk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE5MCkgKyAweDgxO1xuXG4gICAgICAvLyA2LiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE5MCArIDB4NDEuXG4gICAgICB2YXIgdHJhaWwgPSAocG9pbnRlciAlIDE5MCkgKyAweDQxO1xuXG4gICAgICAvLyA3LiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWtyJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNLUkVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1rciddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDS1JEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTQuIExlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDE0LjEgcmVwbGFjZW1lbnRcblxuICAvLyBOb3QgbmVlZGVkIC0gQVBJIHRocm93cyBSYW5nZUVycm9yXG5cbiAgLy8gMTQuMiB1dGYtMTZcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfdW5pdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2YmVcbiAgICogQHJldHVybiB7IUFycmF5LjxudW1iZXI+fSBieXRlc1xuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3VuaXQsIHV0ZjE2YmUpIHtcbiAgICAvLyAxLiBMZXQgYnl0ZTEgYmUgY29kZSB1bml0ID4+IDguXG4gICAgdmFyIGJ5dGUxID0gY29kZV91bml0ID4+IDg7XG5cbiAgICAvLyAyLiBMZXQgYnl0ZTIgYmUgY29kZSB1bml0ICYgMHgwMEZGLlxuICAgIHZhciBieXRlMiA9IGNvZGVfdW5pdCAmIDB4MDBGRjtcblxuICAgIC8vIDMuIFRoZW4gcmV0dXJuIHRoZSBieXRlcyBpbiBvcmRlcjpcbiAgICAgICAgLy8gdXRmLTE2YmUgZmxhZyBpcyBzZXQ6IGJ5dGUxLCB0aGVuIGJ5dGUyLlxuICAgIGlmICh1dGYxNmJlKVxuICAgICAgcmV0dXJuIFtieXRlMSwgYnl0ZTJdO1xuICAgIC8vIHV0Zi0xNmJlIGZsYWcgaXMgdW5zZXQ6IGJ5dGUyLCB0aGVuIGJ5dGUxLlxuICAgIHJldHVybiBbYnl0ZTIsIGJ5dGUxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZfYmUgVHJ1ZSBpZiBiaWctZW5kaWFuLCBmYWxzZSBpZiBsaXR0bGUtZW5kaWFuLlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjE2RGVjb2Rlcih1dGYxNl9iZSwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgdmFyIC8qKiBAdHlwZSB7P251bWJlcn0gKi8gdXRmMTZfbGVhZF9ieXRlID0gbnVsbCxcbiAgICAgICAgLyoqIEB0eXBlIHs/bnVtYmVyfSAqLyB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGVpdGhlciB1dGYtMTYgbGVhZCBieXRlIG9yXG4gICAgICAvLyB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgaXMgbm90IG51bGwsIHNldCB1dGYtMTYgbGVhZCBieXRlIGFuZFxuICAgICAgLy8gdXRmLTE2IGxlYWQgc3Vycm9nYXRlIHRvIG51bGwsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiAodXRmMTZfbGVhZF9ieXRlICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSkge1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCB1dGYtMTYgbGVhZCBieXRlIGFuZCB1dGYtMTZcbiAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIGFyZSBudWxsLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiB1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwgJiZcbiAgICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHV0Zi0xNiBsZWFkIGJ5dGUgaXMgbnVsbCwgc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgdG8gYnl0ZVxuICAgICAgLy8gYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmICh1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgdXRmMTZfbGVhZF9ieXRlID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIExldCBjb2RlIHVuaXQgYmUgdGhlIHJlc3VsdCBvZjpcbiAgICAgIHZhciBjb2RlX3VuaXQ7XG4gICAgICBpZiAodXRmMTZfYmUpIHtcbiAgICAgICAgLy8gdXRmLTE2YmUgZGVjb2RlciBmbGFnIGlzIHNldFxuICAgICAgICAvLyAgICh1dGYtMTYgbGVhZCBieXRlIDw8IDgpICsgYnl0ZS5cbiAgICAgICAgY29kZV91bml0ID0gKHV0ZjE2X2xlYWRfYnl0ZSA8PCA4KSArIGJpdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgaXMgdW5zZXRcbiAgICAgICAgLy8gICAoYnl0ZSA8PCA4KSArIHV0Zi0xNiBsZWFkIGJ5dGUuXG4gICAgICAgIGNvZGVfdW5pdCA9IChiaXRlIDw8IDgpICsgdXRmMTZfbGVhZF9ieXRlO1xuICAgICAgfVxuICAgICAgLy8gVGhlbiBzZXQgdXRmLTE2IGxlYWQgYnl0ZSB0byBudWxsLlxuICAgICAgdXRmMTZfbGVhZF9ieXRlID0gbnVsbDtcblxuICAgICAgLy8gNS4gSWYgdXRmLTE2IGxlYWQgc3Vycm9nYXRlIGlzIG5vdCBudWxsLCBsZXQgbGVhZCBzdXJyb2dhdGVcbiAgICAgIC8vIGJlIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSwgc2V0IHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSB0byBudWxsLFxuICAgICAgLy8gYW5kIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBsZWFkX3N1cnJvZ2F0ZSA9IHV0ZjE2X2xlYWRfc3Vycm9nYXRlO1xuICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gMS4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm4gYVxuICAgICAgICAvLyBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4MTAwMDAgKyAoKGxlYWQgc3Vycm9nYXRlIOKIklxuICAgICAgICAvLyAweEQ4MDApIDw8IDEwKSArIChjb2RlIHVuaXQg4oiSIDB4REMwMCkuXG4gICAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEQzAwLCAweERGRkYpKSB7XG4gICAgICAgICAgcmV0dXJuIDB4MTAwMDAgKyAobGVhZF9zdXJyb2dhdGUgLSAweEQ4MDApICogMHg0MDAgK1xuICAgICAgICAgICAgICAoY29kZV91bml0IC0gMHhEQzAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgdGhlIHNlcXVlbmNlIHJlc3VsdGluZyBvZiBjb252ZXJ0aW5nIGNvZGUgdW5pdFxuICAgICAgICAvLyB0byBieXRlcyB1c2luZyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgdG8gc3RyZWFtIGFuZCByZXR1cm5cbiAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoY29kZV91bml0LCB1dGYxNl9iZSkpO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0Q4MDAgdG8gVStEQkZGLCBzZXQgdXRmLTE2XG4gICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSB0byBjb2RlIHVuaXQgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEODAwLCAweERCRkYpKSB7XG4gICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gY29kZV91bml0O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm5cbiAgICAgIC8vIGVycm9yLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweERDMDAsIDB4REZGRikpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA4LiBSZXR1cm4gY29kZSBwb2ludCBjb2RlIHVuaXQuXG4gICAgICByZXR1cm4gY29kZV91bml0O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2X2JlIFRydWUgaWYgYmlnLWVuZGlhbiwgZmFsc2UgaWYgbGl0dGxlLWVuZGlhbi5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEYxNkVuY29kZXIodXRmMTZfYmUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrRkZGRiwgcmV0dXJuIHRoZVxuICAgICAgLy8gc2VxdWVuY2UgcmVzdWx0aW5nIG9mIGNvbnZlcnRpbmcgY29kZSBwb2ludCB0byBieXRlcyB1c2luZ1xuICAgICAgLy8gdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweEZGRkYpKVxuICAgICAgICByZXR1cm4gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3BvaW50LCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDMuIExldCBsZWFkIGJlICgoY29kZSBwb2ludCDiiJIgMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciBsZWFkID0gY29udmVydENvZGVVbml0VG9CeXRlcyhcbiAgICAgICAgKChjb2RlX3BvaW50IC0gMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDQuIExldCB0cmFpbCBiZSAoKGNvZGUgcG9pbnQg4oiSIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciB0cmFpbCA9IGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoXG4gICAgICAgICgoY29kZV9wb2ludCAtIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGJ5dGUgc2VxdWVuY2Ugb2YgbGVhZCBmb2xsb3dlZCBieSB0cmFpbC5cbiAgICAgIHJldHVybiBsZWFkLmNvbmNhdCh0cmFpbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDE0LjMgdXRmLTE2YmVcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RW5jb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RGVjb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC40IHV0Zi0xNmxlXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi0xNmxlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkVuY29kZXIoZmFsc2UsIG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtMTZsZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZEZWNvZGVyKGZhbHNlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC41IHgtdXNlci1kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDMuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHhGNzgwICsgYnl0ZSDiiJIgMHg4MC5cbiAgICAgIHJldHVybiAweEY3ODAgKyBiaXRlIC0gMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWRFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGNzgwIHRvIFUrRjdGRiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCDiiJIgMHhGNzgwICsgMHg4MC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4Rjc4MCwgMHhGN0ZGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQgLSAweEY3ODAgKyAweDgwO1xuXG4gICAgICAvLyA0LiBSZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sneC11c2VyLWRlZmluZWQnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFhVc2VyRGVmaW5lZEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3gtdXNlci1kZWZpbmVkJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsWydUZXh0RW5jb2RlciddKVxuICAgIGdsb2JhbFsnVGV4dEVuY29kZXInXSA9IFRleHRFbmNvZGVyO1xuICBpZiAoIWdsb2JhbFsnVGV4dERlY29kZXInXSlcbiAgICBnbG9iYWxbJ1RleHREZWNvZGVyJ10gPSBUZXh0RGVjb2Rlcjtcbn0odGhpcykpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94NSwgX3g2LCBfeDcpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3g1LCBwcm9wZXJ0eSA9IF94NiwgcmVjZWl2ZXIgPSBfeDc7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3g1ID0gcGFyZW50OyBfeDYgPSBwcm9wZXJ0eTsgX3g3ID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi9zZXNzaW9uJyk7XG5cbnZhciBfc2Vzc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXNzaW9uKTtcblxudmFyIF9pbnRlcm5hbFBvb2wgPSByZXF1aXJlKCcuL2ludGVybmFsL3Bvb2wnKTtcblxudmFyIF9pbnRlcm5hbENvbm5lY3RvciA9IHJlcXVpcmUoXCIuL2ludGVybmFsL2Nvbm5lY3RvclwiKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3ZlcnNpb24gPSByZXF1aXJlKCcuLi92ZXJzaW9uJyk7XG5cbi8qKlxuICogQSBkcml2ZXIgbWFpbnRhaW5zIG9uZSBvciBtb3JlIHtAbGluayBTZXNzaW9uIHNlc3Npb25zfSB3aXRoIGEgcmVtb3RlXG4gKiBOZW80aiBpbnN0YW5jZS4gVGhyb3VnaCB0aGUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHlvdSBjYW4gc2VuZCBzdGF0ZW1lbnRzXG4gKiBhbmQgcmV0cmlldmUgcmVzdWx0cyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBEcml2ZXJzIGFyZSByZWFzb25hYmx5IGV4cGVuc2l2ZSB0byBjcmVhdGUgLSB5b3Ugc2hvdWxkIHN0cml2ZSB0byBrZWVwIG9uZVxuICogZHJpdmVyIGluc3RhbmNlIGFyb3VuZCBwZXIgTmVvNGogSW5zdGFuY2UgeW91IGNvbm5lY3QgdG8uXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuXG52YXIgRHJpdmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFlvdSBzaG91bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBkaXJlY3RseSwgaW5zdGVhZCB1c2Uge0BsaW5rIGRyaXZlcn0uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyQWdlbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIERyaXZlcih1cmwpIHtcbiAgICB2YXIgdXNlckFnZW50ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gJ25lbzRqLWphdmFzY3JpcHQvMC4wJyA6IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgdG9rZW4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1syXTtcbiAgICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAzIHx8IGFyZ3VtZW50c1szXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbM107XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRHJpdmVyKTtcblxuICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICB0aGlzLl91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgdGhpcy5fb3BlblNlc3Npb25zID0ge307XG4gICAgdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yID0gMDtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLl9wb29sID0gbmV3IF9pbnRlcm5hbFBvb2wuUG9vbCh0aGlzLl9jcmVhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIHRoaXMuX2Rlc3Ryb3lDb25uZWN0aW9uLmJpbmQodGhpcyksIHRoaXMuX3ZhbGlkYXRlQ29ubmVjdGlvbi5iaW5kKHRoaXMpLCBjb25maWcuY29ubmVjdGlvblBvb2xTaXplKTtcbiAgfVxuXG4gIC8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgY29ubmVjdGlvbiBzdGF0ZSAqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gbmV3IGNvbm5lY3Rvci1hcGkgc2Vzc2lvbiBpbnN0YW5jZSwgYSBsb3cgbGV2ZWwgc2Vzc2lvbiBBUEkuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoRHJpdmVyLCBbe1xuICAgIGtleTogJ19jcmVhdGVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZUNvbm5lY3Rpb24ocmVsZWFzZSkge1xuICAgICAgdmFyIHNlc3Npb25JZCA9IHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvcisrO1xuICAgICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyk7XG4gICAgICB2YXIgY29ubiA9ICgwLCBfaW50ZXJuYWxDb25uZWN0b3IuY29ubmVjdCkodGhpcy5fdXJsLCB0aGlzLl9jb25maWcpO1xuICAgICAgY29ubi5pbml0aWFsaXplKHRoaXMuX3VzZXJBZ2VudCwgdGhpcy5fdG9rZW4sIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgIGNvbm4uX2lkID0gc2Vzc2lvbklkO1xuICAgICAgY29ubi5fcmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlbGVhc2UoY29ubik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXSA9IGNvbm47XG4gICAgICByZXR1cm4gY29ubjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB0aGF0IGEgY29ubmVjdGlvbiBpcyB1c2FibGVcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKiovXG4gIH0sIHtcbiAgICBrZXk6ICdfdmFsaWRhdGVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3ZhbGlkYXRlQ29ubmVjdGlvbihjb25uKSB7XG4gICAgICByZXR1cm4gY29ubi5pc09wZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwb3NlIG9mIGEgbGl2ZSBzZXNzaW9uLCBjbG9zaW5nIGFueSBhc3NvY2lhdGVkIHJlc291cmNlcy5cbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBuZXcgc2Vzc2lvbi5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ19kZXN0cm95Q29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZXN0cm95Q29ubmVjdGlvbihjb25uKSB7XG4gICAgICBkZWxldGUgdGhpcy5fb3BlblNlc3Npb25zW2Nvbm4uX2lkXTtcbiAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBY3F1aXJlIGEgc2Vzc2lvbiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZS4gVGhlIGRyaXZlciBtYWludGFpbnNcbiAgICAgKiBhIHBvb2wgb2Ygc2Vzc2lvbnMsIHNvIGNhbGxpbmcgdGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgY2hlYXAgYmVjYXVzZSB5b3VcbiAgICAgKiB3aWxsIGJlIHB1bGxpbmcgYSBzZXNzaW9uIG91dCBvZiB0aGUgY29tbW9uIHBvb2wuXG4gICAgICpcbiAgICAgKiBUaGlzIGNvbWVzIHdpdGggc29tZSByZXNwb25zaWJpbGl0eSAtIG1ha2Ugc3VyZSB5b3UgYWx3YXlzIGNhbGxcbiAgICAgKiB7QGxpbmsgU2Vzc2lvbiNjbG9zZSgpfSB3aGVuIHlvdSBhcmUgZG9uZSB1c2luZyBhIHNlc3Npb24sIGFuZCBsaWtld2lzZSxcbiAgICAgKiBtYWtlIHN1cmUgeW91IGRvbid0IGNsb3NlIHlvdXIgc2Vzc2lvbiBiZWZvcmUgeW91IGFyZSBkb25lIHVzaW5nIGl0LiBPbmNlXG4gICAgICogaXQgaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wsIHRoZSBzZXNzaW9uIHdpbGwgYmUgcmVzZXQgdG8gYSBjbGVhbiBzdGF0ZSBhbmRcbiAgICAgKiBtYWRlIGF2YWlsYWJsZSBmb3Igb3RoZXJzIHRvIHVzZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc2Vzc2lvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlc3Npb24oKSB7XG4gICAgICB2YXIgY29ubiA9IHRoaXMuX3Bvb2wuYWNxdWlyZSgpO1xuICAgICAgcmV0dXJuIG5ldyBfc2Vzc2lvbjJbJ2RlZmF1bHQnXShjb25uLCBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBvbiBTZXNzaW9uI2Nsb3NlKCksIGFuZCBpcyB3aGVyZSB3ZSByZXR1cm5cbiAgICAgICAgLy8gdGhlIHBvb2xlZCAnY29ubmVjdGlvbicgaW5zdGFuY2UuXG5cbiAgICAgICAgLy8gV2UgZG9uJ3QgcG9vbCBTZXNzaW9uIGluc3RhbmNlcywgdG8gYXZvaWQgdXNlcnMgdXNpbmcgdGhlIFNlc3Npb25cbiAgICAgICAgLy8gYWZ0ZXIgdGhleSd2ZSBjYWxsZWQgY2xvc2UuIFRoZSBgU2Vzc2lvbmAgb2JqZWN0IGlzIGp1c3QgYSB0aGluXG4gICAgICAgIC8vIHdyYXBwZXIgYXJvdW5kIENvbm5lY3Rpb24gYW55d2F5LCBzbyBpdCBtYWtlcyBsaXR0bGUgZGlmZmVyZW5jZS5cblxuICAgICAgICAvLyBRdWV1ZSB1cCBhICdyZXNldCcsIHRvIGVuc3VyZSB0aGUgbmV4dCB1c2VyIGdldHMgYSBjbGVhblxuICAgICAgICAvLyBzZXNzaW9uIHRvIHdvcmsgd2l0aC5cbiAgICAgICAgY29ubi5yZXNldCgpO1xuICAgICAgICBjb25uLnN5bmMoKTtcblxuICAgICAgICAvLyBSZXR1cm4gY29ubmVjdGlvbiB0byB0aGUgcG9vbFxuICAgICAgICBjb25uLl9yZWxlYXNlKCk7XG5cbiAgICAgICAgLy8gQ2FsbCB1c2VyIGNhbGxiYWNrXG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGFsbCBvcGVuIHNlc3Npb25zIGFuZCBvdGhlciBhc3NvY2lhdGVkIHJlc291cmNlcy4gWW91IHNob3VsZFxuICAgICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhpcyB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgZHJpdmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4gdW5kZWZpbmVkXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgZm9yICh2YXIgc2Vzc2lvbklkIGluIHRoaXMuX29wZW5TZXNzaW9ucykge1xuICAgICAgICBpZiAodGhpcy5fb3BlblNlc3Npb25zLmhhc093blByb3BlcnR5KHNlc3Npb25JZCkpIHtcbiAgICAgICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIERyaXZlcjtcbn0pKCk7XG5cbnZhciBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyID0gKGZ1bmN0aW9uIChfU3RyZWFtT2JzZXJ2ZXIpIHtcbiAgX2luaGVyaXRzKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIF9TdHJlYW1PYnNlcnZlcik7XG5cbiAgZnVuY3Rpb24gX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcihkcml2ZXIpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG4gICAgdGhpcy5fZHJpdmVyID0gZHJpdmVyO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiAnb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCB0aGlzKS5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgaWYgKHRoaXMuX2RyaXZlci5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fZHJpdmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KShfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSk7XG5cbnZhciBVU0VSX0FHRU5UID0gXCJuZW80ai1qYXZhc2NyaXB0L1wiICsgX3ZlcnNpb24uVkVSU0lPTjtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgYSBuZXcgTmVvNGogRHJpdmVyLiBUaGlzIGlzIHlvdXIgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhpc1xuICogbGlicmFyeS5cbiAqXG4gKiAjIyBDb25maWd1cmF0aW9uXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIGEgY29uZmlndXJhdGlvbiBhcmd1bWVudC4gQXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25cbiAqIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6XG4gKlxuICogICAgIHtcbiAqICAgICAgIC8vIEVuYWJsZSBUTFMgZW5jcnlwdGlvbi4gVGhpcyBpcyBvbiBieSBkZWZhdWx0IGluIG1vZGVybiBOb2RlSlMgaW5zdGFsbHMsXG4gKiAgICAgICAvLyBidXQgb2ZmIGJ5IGRlZmF1bHQgaW4gdGhlIFdlYiBCdW5kbGUgYW5kIG9sZCAoPD0xLjAuMCkgTm9kZUpTIGluc3RhbGxzXG4gKiAgICAgICAvLyBkdWUgdG8gdGVjaG5pY2FsIGxpbWl0YXRpb25zIG9uIHRob3NlIHBsYXRmb3Jtcy5cbiAqICAgICAgIGVuY3J5cHRlZDogdHJ1ZXxmYWxzZSxcbiAqXG4gKiAgICAgICAvLyBUcnVzdCBzdHJhdGVneSB0byB1c2UgaWYgZW5jcnlwdGlvbiBpcyBlbmFibGVkLiBUaGVyZSBpcyBubyBtb2RlIHRvIGRpc2FibGVcbiAqICAgICAgIC8vIHRydXN0IG90aGVyIHRoYW4gZGlzYWJsaW5nIGVuY3J5cHRpb24gYWx0b2dldGhlci4gVGhlIHJlYXNvbiBmb3JcbiAqICAgICAgIC8vIHRoaXMgaXMgdGhhdCBpZiB5b3UgZG9uJ3Qga25vdyB3aG8geW91IGFyZSB0YWxraW5nIHRvLCBpdCBpcyBlYXN5IGZvciBhblxuICogICAgICAgLy8gYXR0YWNrZXIgdG8gaGlqYWNrIHlvdXIgZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHJlbmRlcmluZyBlbmNyeXB0aW9uIHBvaW50bGVzcy5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgdGhlIGRlZmF1bHQgZm9yIG1vZGVybiBOb2RlSlMgZGVwbG95bWVudHMsIGFuZCB3b3Jrc1xuICogICAgICAgLy8gc2ltaWxhcmx5IHRvIGhvdyBgc3NsYCB3b3JrcyAtIHRoZSBmaXJzdCB0aW1lIHdlIGNvbm5lY3QgdG8gYSBuZXcgaG9zdCxcbiAqICAgICAgIC8vIHdlIHJlbWVtYmVyIHRoZSBjZXJ0aWZpY2F0ZSB0aGV5IHVzZS4gSWYgdGhlIGNlcnRpZmljYXRlIGV2ZXIgY2hhbmdlcywgd2VcbiAqICAgICAgIC8vIGFzc3VtZSBpdCBpcyBhbiBhdHRlbXB0IHRvIGhpamFjayB0aGUgY29ubmVjdGlvbiBhbmQgcmVxdWlyZSBtYW51YWwgaW50ZXJ2ZW50aW9uLlxuICogICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGJ5IGRlZmF1bHQsIGNvbm5lY3Rpb25zIFwianVzdCB3b3JrXCIgd2hpbGUgc3RpbGwgZ2l2aW5nIHlvdVxuICogICAgICAgLy8gZ29vZCBlbmNyeXB0ZWQgcHJvdGVjdGlvbi5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTIGlzIHRoZSBjbGFzc2ljIGFwcHJvYWNoIHRvIHRydXN0IHZlcmlmaWNhdGlvbiAtXG4gKiAgICAgICAvLyB3aGVuZXZlciB3ZSBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHdlIGVuc3VyZSB0aGUgaG9zdCBpcyB1c2luZ1xuICogICAgICAgLy8gYW4gZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSB0aGF0IGlzIGluLCBvciBpcyBzaWduZWQgYnksIGEgY2VydGlmaWNhdGUgbGlzdGVkXG4gKiAgICAgICAvLyBhcyB0cnVzdGVkLiBJbiB0aGUgd2ViIGJ1bmRsZSwgdGhpcyBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlzIG1haW50YWluZWRcbiAqICAgICAgIC8vIGJ5IHRoZSB3ZWIgYnJvd3Nlci4gSW4gTm9kZUpTLCB5b3UgY29uZmlndXJlIHRoZSBsaXN0IHdpdGggdGhlIG5leHQgY29uZmlnIG9wdGlvbi5cbiAqICAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiIHwgXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gKlxuICogICAgICAgLy8gTGlzdCBvZiBvbmUgb3IgbW9yZSBwYXRocyB0byB0cnVzdGVkIGVuY3J5cHRpb24gY2VydGlmaWNhdGVzLiBUaGlzIG9ubHlcbiAqICAgICAgIC8vIHdvcmtzIGluIHRoZSBOb2RlSlMgYnVuZGxlLCBhbmQgb25seSBtYXR0ZXJzIGlmIHlvdSB1c2UgXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIuXG4gKiAgICAgICAvLyBUaGUgY2VydGlmaWNhdGUgZmlsZXMgc2hvdWxkIGJlIGluIHJlZ3VsYXIgWC41MDkgUEVNIGZvcm1hdC5cbiAqICAgICAgIC8vIEZvciBpbnN0YW5jZSwgWycuL3RydXN0ZWQucGVtJ11cbiAqICAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtdLFxuICpcbiAqICAgICAgIC8vIFBhdGggdG8gYSBmaWxlIHdoZXJlIHRoZSBkcml2ZXIgc2F2ZXMgaG9zdHMgaXQgaGFzIHNlZW4gaW4gdGhlIHBhc3QsIHRoaXMgaXNcbiAqICAgICAgIC8vIHZlcnkgc2ltaWxhciB0byB0aGUgc3NsIHRvb2wncyBrbm93bl9ob3N0cyBmaWxlLiBFYWNoIHRpbWUgd2UgY29ubmVjdCB0byBhXG4gKiAgICAgICAvLyBuZXcgaG9zdCwgYSBoYXNoIG9mIHRoZWlyIGNlcnRpZmljYXRlIGlzIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBkb21haW4gbmFtZSBhbmRcbiAqICAgICAgIC8vIHBvcnQsIGFuZCB0aGlzIGlzIHRoZW4gdXNlZCB0byB2ZXJpZnkgdGhlIGhvc3QgY2VydGlmaWNhdGUgZG9lcyBub3QgY2hhbmdlLlxuICogICAgICAgLy8gVGhpcyBzZXR0aW5nIGhhcyBubyBlZmZlY3QgdW5sZXNzIFRSVVNUX09OX0ZJUlNUX1VTRSBpcyBlbmFibGVkLlxuICogICAgICAga25vd25Ib3N0czpcIn4vLm5lbzRqL2tub3duX2hvc3RzXCIsXG4gKiAgICAgfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCBmb3IgdGhlIE5lbzRqIGRhdGFiYXNlLCBmb3IgaW5zdGFuY2UgXCJib2x0Oi8vbG9jYWxob3N0XCJcbiAqIEBwYXJhbSB7TWFwPFN0cmluZyxTdHJpbmc+fSBhdXRoVG9rZW4gQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIFNlZSB7QGxpbmsgYXV0aH0gZm9yIGhlbHBlcnMuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWUgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBhYm92ZSBmb3IgZGV0YWlscy5cbiAqIEByZXR1cm5zIHtEcml2ZXJ9XG4gKi9cbmZ1bmN0aW9uIGRyaXZlcih1cmwsIGF1dGhUb2tlbikge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMl07XG5cbiAgcmV0dXJuIG5ldyBEcml2ZXIodXJsLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG59XG5cbmV4cG9ydHMuRHJpdmVyID0gRHJpdmVyO1xuZXhwb3J0cy5kcml2ZXIgPSBkcml2ZXI7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEEgY29tbW9uIHBsYWNlIGZvciBjb25zdHJ1Y3RpbmcgZXJyb3Igb2JqZWN0cywgdG8ga2VlcCB0aGVtXG4vLyB1bmlmb3JtIGFjcm9zcyB0aGUgZHJpdmVyIHN1cmZhY2UuXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeDMsIF94NCwgX3g1KSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94MywgcHJvcGVydHkgPSBfeDQsIHJlY2VpdmVyID0gX3g1OyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94MyA9IHBhcmVudDsgX3g0ID0gcHJvcGVydHk7IF94NSA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIG5ld0Vycm9yKG1lc3NhZ2UpIHtcbiAgdmFyIGNvZGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBcIk4vQVwiIDogYXJndW1lbnRzWzFdO1xuXG4gIC8vIFRPRE86IElkZWEgaXMgdGhhdCB3ZSBjYW4gY2hlY2sgdGhlIGNvZCBoZXJlIGFuZCB0aHJvdyBzdWItY2xhc3Nlc1xuICAvLyBvZiBOZW80akVycm9yIGFzIGFwcHJvcHJpYXRlXG4gIHJldHVybiBuZXcgTmVvNGpFcnJvcihtZXNzYWdlLCBjb2RlKTtcbn1cblxudmFyIE5lbzRqRXJyb3IgPSAoZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHMoTmVvNGpFcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBOZW80akVycm9yKG1lc3NhZ2UpIHtcbiAgICB2YXIgY29kZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IFwiTi9BXCIgOiBhcmd1bWVudHNbMV07XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmVvNGpFcnJvcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihOZW80akVycm9yLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cblxuICByZXR1cm4gTmVvNGpFcnJvcjtcbn0pKEVycm9yKTtcblxuZXhwb3J0cy5uZXdFcnJvciA9IG5ld0Vycm9yO1xuZXhwb3J0cy5OZW80akVycm9yID0gTmVvNGpFcnJvcjsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBDbGFzcyBmb3IgTm9kZSBUeXBlLlxuICovXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgTm9kZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aXR5IC0gVW5pcXVlIGlkZW50aXR5XG4gICAqIEBwYXJhbSB7QXJyYXl9IGxhYmVscyAtIEFycmF5IGZvciBhbGwgbGFiZWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggbm9kZSBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIE5vZGUoaWRlbnRpdHksIGxhYmVscywgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLmxhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYXNzIGZvciBSZWxhdGlvbnNoaXAgVHlwZS5cbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGUsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuaWRlbnRpdHk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHMgKz0gXCI6XCIgKyB0aGlzLmxhYmVsc1tpXTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCIpXCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZTtcbn0pKCk7XG5cbnZhciBSZWxhdGlvbnNoaXAgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnQgLSBJZGVudGl0eSBvZiBzdGFydCBOb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmQgLSBJZGVudGl0eSBvZiBlbmQgTm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVsYXRpb25zaGlwKGlkZW50aXR5LCBzdGFydCwgZW5kLCB0eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbGF0aW9uc2hpcCk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzcyBmb3IgVW5ib3VuZFJlbGF0aW9uc2hpcCBUeXBlLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlbGF0aW9uc2hpcCwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgcyA9IFwiKFwiICsgdGhpcy5zdGFydCArIFwiKS1bOlwiICsgdGhpcy50eXBlO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcyArPSBcIl0tPihcIiArIHRoaXMuZW5kICsgXCIpXCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVsYXRpb25zaGlwO1xufSkoKTtcblxudmFyIFVuYm91bmRSZWxhdGlvbnNoaXAgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG5cbiAgZnVuY3Rpb24gVW5ib3VuZFJlbGF0aW9uc2hpcChpZGVudGl0eSwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVbmJvdW5kUmVsYXRpb25zaGlwKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQ2xhc3MgZm9yIFBhdGhTZWdtZW50IFR5cGUuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBCaW5kIHJlbGF0aW9uc2hpcFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnQgLSBJbmRlbnRpdHkgb2Ygc3RhcnQgbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSW5kZW50aXR5IG9mIGVuZCBub2RlXG4gICAqIEByZXR1cm4ge1JlbGF0aW9uc2hpcH0gLSBDcmVhdGVkIHJlbGF0aW9uc2hpcFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoVW5ib3VuZFJlbGF0aW9uc2hpcCwgW3tcbiAgICBrZXk6IFwiYmluZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBuZXcgUmVsYXRpb25zaGlwKHRoaXMuaWRlbnRpdHksIHN0YXJ0LCBlbmQsIHRoaXMudHlwZSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgcyA9IFwiLVs6XCIgKyB0aGlzLnR5cGU7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiXS0+XCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVW5ib3VuZFJlbGF0aW9uc2hpcDtcbn0pKCk7XG5cbnZhciBQYXRoU2VnbWVudCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICogQHBhcmFtIHtSZWxhdGlvbnNoaXB9IHJlbCAtIFJlbGF0aW9uc2hpcCBzZWdtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAqL1xuZnVuY3Rpb24gUGF0aFNlZ21lbnQoc3RhcnQsIHJlbCwgZW5kKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoU2VnbWVudCk7XG5cbiAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbDtcbiAgdGhpcy5lbmQgPSBlbmQ7XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGggVHlwZS5cbiAqL1xuO1xuXG52YXIgUGF0aCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtOb2RlfSBzdGFydCAgLSBzdGFydCBub2RlXG4gKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gKiBAcGFyYW0ge0FycmF5fSBzZWdtZW50cyAtIEFycmF5IG9mIFNlZ21lbnRzXG4gKi9cbmZ1bmN0aW9uIFBhdGgoc3RhcnQsIGVuZCwgc2VnbWVudHMpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhdGgpO1xuXG4gIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgdGhpcy5lbmQgPSBlbmQ7XG4gIHRoaXMuc2VnbWVudHMgPSBzZWdtZW50cztcbiAgdGhpcy5sZW5ndGggPSBzZWdtZW50cy5sZW5ndGg7XG59O1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgTm9kZTogTm9kZSxcbiAgUmVsYXRpb25zaGlwOiBSZWxhdGlvbnNoaXAsXG4gIFVuYm91bmRSZWxhdGlvbnNoaXA6IFVuYm91bmRSZWxhdGlvbnNoaXAsXG4gIFBhdGg6IFBhdGgsXG4gIFBhdGhTZWdtZW50OiBQYXRoU2VnbWVudFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4vaW50ZWdlcicpO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4vZHJpdmVyJyk7XG5cbnZhciBfZ3JhcGhUeXBlcyA9IHJlcXVpcmUoJy4vZ3JhcGgtdHlwZXMnKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBkcml2ZXI6IF9kcml2ZXIuZHJpdmVyLFxuICBpbnQ6IF9pbnRlZ2VyLmludCxcbiAgaXNJbnQ6IF9pbnRlZ2VyLmlzSW50LFxuICBOZW80akVycm9yOiBfZXJyb3IuTmVvNGpFcnJvcixcbiAgYXV0aDoge1xuICAgIGJhc2ljOiBmdW5jdGlvbiBiYXNpYyh1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IHVzZXJuYW1lLCBjcmVkZW50aWFsczogcGFzc3dvcmQgfTtcbiAgICB9XG4gIH0sXG4gIHR5cGVzOiB7XG4gICAgTm9kZTogX2dyYXBoVHlwZXMuTm9kZSxcbiAgICBSZWxhdGlvbnNoaXA6IF9ncmFwaFR5cGVzLlJlbGF0aW9uc2hpcCxcbiAgICBVbmJvdW5kUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwLFxuICAgIFBhdGhTZWdtZW50OiBfZ3JhcGhUeXBlcy5QYXRoU2VnbWVudCxcbiAgICBQYXRoOiBfZ3JhcGhUeXBlcy5QYXRoXG4gIH1cbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gNjQtYml0IEludGVnZXIgbGlicmFyeSwgb3JpZ2luYWxseSBmcm9tIExvbmcuanMgYnkgZGNvZGVJT1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vTG9uZy5qc1xuLy8gTGljZW5zZSBBcGFjaGUgMlxuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSA2NCBiaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyLCBnaXZlbiBpdHMgbG93IGFuZCBoaWdoIDMyIGJpdCB2YWx1ZXMgYXMgKnNpZ25lZCogaW50ZWdlcnMuXG4gKiAgU2VlIHRoZSBmcm9tKiBmdW5jdGlvbnMgYmVsb3cgZm9yIG1vcmUgY29udmVuaWVudCB3YXlzIG9mIGNvbnN0cnVjdGluZyBJbnRlZ2Vycy5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAZXhwb3J0cyBJbnRlZ2VyXG4gKiBAY2xhc3MgQSBJbnRlZ2VyIGNsYXNzIGZvciByZXByZXNlbnRpbmcgYSA2NCBiaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyIHZhbHVlLlxuICogQHBhcmFtIHtudW1iZXJ9IGxvdyBUaGUgbG93IChzaWduZWQpIDMyIGJpdHMgb2YgdGhlIGxvbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoIFRoZSBoaWdoIChzaWduZWQpIDMyIGJpdHMgb2YgdGhlIGxvbmdcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5cbnZhciBJbnRlZ2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSW50ZWdlcihsb3csIGhpZ2gpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZWdlcik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5sb3cgPSBsb3cgfCAwO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB0aGlzLmhpZ2ggPSBoaWdoIHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbmRpY2F0b3IgdXNlZCB0byByZWxpYWJseSBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgSW50ZWdlciBvciBub3QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAY29uc3RcbiAgICogQGV4cG9zZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gSW50ZWdlciBpcyB0aGUgdHdvIGdpdmVuIHNpZ25lZCwgMzItYml0IHZhbHVlcy5cbiAgLy8gV2UgdXNlIDMyLWJpdCBwaWVjZXMgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIHNpemUgb2YgaW50ZWdlcnMgb24gd2hpY2hcbiAgLy8gSmF2YXNjcmlwdCBwZXJmb3JtcyBiaXQtb3BlcmF0aW9ucy4gIEZvciBvcGVyYXRpb25zIGxpa2UgYWRkaXRpb24gYW5kXG4gIC8vIG11bHRpcGxpY2F0aW9uLCB3ZSBzcGxpdCBlYWNoIG51bWJlciBpbnRvIDE2IGJpdCBwaWVjZXMsIHdoaWNoIGNhbiBlYXNpbHkgYmVcbiAgLy8gbXVsdGlwbGllZCB3aXRoaW4gSmF2YXNjcmlwdCdzIGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIHdpdGhvdXQgb3ZlcmZsb3dcbiAgLy8gb3IgY2hhbmdlIGluIHNpZ24uXG4gIC8vXG4gIC8vIEluIHRoZSBhbGdvcml0aG1zIGJlbG93LCB3ZSBmcmVxdWVudGx5IHJlZHVjZSB0aGUgbmVnYXRpdmUgY2FzZSB0byB0aGVcbiAgLy8gcG9zaXRpdmUgY2FzZSBieSBuZWdhdGluZyB0aGUgaW5wdXQocykgYW5kIHRoZW4gcG9zdC1wcm9jZXNzaW5nIHRoZSByZXN1bHQuXG4gIC8vIE5vdGUgdGhhdCB3ZSBtdXN0IEFMV0FZUyBjaGVjayBzcGVjaWFsbHkgd2hldGhlciB0aG9zZSB2YWx1ZXMgYXJlIE1JTl9WQUxVRVxuICAvLyAoLTJeNjMpIGJlY2F1c2UgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUUgKHNpbmNlIDJeNjMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzXG4gIC8vIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBvdmVyZmxvd3MgYmFjayBpbnRvIGEgbmVnYXRpdmUpLiAgTm90IGhhbmRsaW5nIHRoaXNcbiAgLy8gY2FzZSB3b3VsZCBvZnRlbiByZXN1bHQgaW4gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvL1xuICAvLyBDb21tb24gY29uc3RhbnQgdmFsdWVzIFpFUk8sIE9ORSwgTkVHX09ORSwgZXRjLiBhcmUgZGVmaW5lZCBiZWxvdyB0aGUgZnJvbSpcbiAgLy8gbWV0aG9kcyBvbiB3aGljaCB0aGV5IGRlcGVuZC5cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYW4gZXhhY3QgamF2YXNjcmlwdCBOdW1iZXIsIGFzc3VtaW5nIGl0IGlzIGEgMzIgYml0IGludGVnZXIuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEludGVnZXIsIFt7XG4gICAga2V5OiAndG9JbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0ludCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0b051bWJlcicsXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHRoZSBuZWFyZXN0IGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdmFsdWUgKGRvdWJsZSwgNTMgYml0IG1hbnRpc3NhKS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9OdW1iZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoICogVFdPX1BXUl8zMl9EQkwgKyAodGhpcy5sb3cgPj4+IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGEgc3RyaW5nIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCByYWRpeC5cbiAgICAgKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFJhZGl4ICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGByYWRpeGAgaXMgb3V0IG9mIHJhbmdlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAndG9TdHJpbmcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZyhyYWRpeCkge1xuICAgICAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgICAgIGlmIChyYWRpeCA8IDIgfHwgMzYgPCByYWRpeCkgdGhyb3cgUmFuZ2VFcnJvcigncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAnMCc7XG4gICAgICB2YXIgcmVtO1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoYW5nZSB0aGUgSW50ZWdlciB2YWx1ZSBiZWZvcmUgaXQgY2FuIGJlIG5lZ2F0ZWQsIHNvIHdlIHJlbW92ZVxuICAgICAgICAgIC8vIHRoZSBib3R0b20tbW9zdCBkaWdpdCBpbiB0aGlzIGJhc2UgYW5kIHRoZW4gcmVjdXJzZSB0byBkbyB0aGUgcmVzdC5cbiAgICAgICAgICB2YXIgcmFkaXhJbnRlZ2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKHJhZGl4KTtcbiAgICAgICAgICB2YXIgZGl2ID0gdGhpcy5kaXYocmFkaXhJbnRlZ2VyKTtcbiAgICAgICAgICByZW0gPSBkaXYubXVsdGlwbHkocmFkaXhJbnRlZ2VyKS5zdWJ0cmFjdCh0aGlzKTtcbiAgICAgICAgICByZXR1cm4gZGl2LnRvU3RyaW5nKHJhZGl4KSArIHJlbS50b0ludCgpLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgICAgfSBlbHNlIHJldHVybiAnLScgKyB0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgIH1cblxuICAgICAgLy8gRG8gc2V2ZXJhbCAoNikgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAgICAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXG4gICAgICB2YXIgcmFkaXhUb1Bvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCA2KSk7XG4gICAgICByZW0gPSB0aGlzO1xuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIHJlbURpdiA9IHJlbS5kaXYocmFkaXhUb1Bvd2VyKSxcbiAgICAgICAgICAgIGludHZhbCA9IHJlbS5zdWJ0cmFjdChyZW1EaXYubXVsdGlwbHkocmFkaXhUb1Bvd2VyKSkudG9JbnQoKSA+Pj4gMCxcbiAgICAgICAgICAgIGRpZ2l0cyA9IGludHZhbC50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIHJlbSA9IHJlbURpdjtcbiAgICAgICAgaWYgKHJlbS5pc1plcm8oKSkgcmV0dXJuIGRpZ2l0cyArIHJlc3VsdDtlbHNlIHtcbiAgICAgICAgICB3aGlsZSAoZGlnaXRzLmxlbmd0aCA8IDYpIGRpZ2l0cyA9ICcwJyArIGRpZ2l0cztcbiAgICAgICAgICByZXN1bHQgPSAnJyArIGRpZ2l0cyArIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBoaWdoIGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRIaWdoQml0cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZ2hCaXRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsb3cgMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBsb3cgYml0c1xuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dldExvd0JpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMb3dCaXRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMubG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dldE51bUJpdHNBYnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1CaXRzQWJzKCkge1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpID8gNjQgOiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKTtcbiAgICAgIHZhciB2YWwgPSB0aGlzLmhpZ2ggIT0gMCA/IHRoaXMuaGlnaCA6IHRoaXMubG93O1xuICAgICAgZm9yICh2YXIgYml0ID0gMzE7IGJpdCA+IDA7IGJpdC0tKSBpZiAoKHZhbCAmIDEgPDwgYml0KSAhPSAwKSBicmVhaztcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggIT0gMCA/IGJpdCArIDMzIDogYml0ICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgemVyby5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc1plcm8nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1plcm8oKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID09PSAwICYmIHRoaXMubG93ID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG5lZ2F0aXZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzTmVnYXRpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc05lZ2F0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA8IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgcG9zaXRpdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNQb3NpdGl2ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID49IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgb2RkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzT2RkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPZGQoKSB7XG4gICAgICByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZXZlbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc0V2ZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0V2ZW4oKSB7XG4gICAgICByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZXF1YWxzJyxcblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGVxdWFscyB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID09PSBvdGhlci5oaWdoICYmIHRoaXMubG93ID09PSBvdGhlci5sb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm90RXF1YWxzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm90RXF1YWxzKG90aGVyKSB7XG4gICAgICAhdGhpcy5lcXVhbHMoIC8qIHZhbGlkYXRlcyAqL290aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsZXNzVGhhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbChvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDw9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ3JlYXRlclRoYW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBncmVhdGVyVGhhbihvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWwob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHRoaXMgSW50ZWdlcidzIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAwIGlmIHRoZXkgYXJlIHRoZSBzYW1lLCAxIGlmIHRoZSB0aGlzIGlzIGdyZWF0ZXIgYW5kIC0xXG4gICAgICogIGlmIHRoZSBnaXZlbiBvbmUgaXMgZ3JlYXRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbXBhcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wYXJlKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICBpZiAodGhpcy5lcXVhbHMob3RoZXIpKSByZXR1cm4gMDtcbiAgICAgIHZhciB0aGlzTmVnID0gdGhpcy5pc05lZ2F0aXZlKCksXG4gICAgICAgICAgb3RoZXJOZWcgPSBvdGhlci5pc05lZ2F0aXZlKCk7XG4gICAgICBpZiAodGhpc05lZyAmJiAhb3RoZXJOZWcpIHJldHVybiAtMTtcbiAgICAgIGlmICghdGhpc05lZyAmJiBvdGhlck5lZykgcmV0dXJuIDE7XG4gICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzaWduIGJpdHMgYXJlIHRoZSBzYW1lXG4gICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChvdGhlcikuaXNOZWdhdGl2ZSgpID8gLTEgOiAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5lZ2F0ZXMgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBOZWdhdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICduZWdhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBuZWdhdGUoKSB7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7XG4gICAgICByZXR1cm4gdGhpcy5ub3QoKS5hZGQoSW50ZWdlci5PTkUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBhZGRlbmQgQWRkZW5kXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTdW1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdhZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWRkZW5kKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGFkZGVuZCkpIGFkZGVuZCA9IEludGVnZXIuZnJvbVZhbHVlKGFkZGVuZCk7XG5cbiAgICAgIC8vIERpdmlkZSBlYWNoIG51bWJlciBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIHN1bSB0aGUgY2h1bmtzLlxuXG4gICAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBhMzIgPSB0aGlzLmhpZ2ggJiAweEZGRkY7XG4gICAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYjQ4ID0gYWRkZW5kLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IGFkZGVuZC5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGIxNiA9IGFkZGVuZC5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGIwMCA9IGFkZGVuZC5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCArIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKyBiMTY7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTMyICsgYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCArIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBzdWJ0cmFoZW5kIFN1YnRyYWhlbmRcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IERpZmZlcmVuY2VcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJ0cmFjdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnRyYWN0KHN1YnRyYWhlbmQpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoc3VidHJhaGVuZCkpIHN1YnRyYWhlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShzdWJ0cmFoZW5kKTtcbiAgICAgIHJldHVybiB0aGlzLmFkZChzdWJ0cmFoZW5kLm5lZ2F0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZWdlci5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG11bHRpcGxpZXIgTXVsdGlwbGllclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUHJvZHVjdFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ211bHRpcGx5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbXVsdGlwbHkobXVsdGlwbGllcikge1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG11bHRpcGxpZXIpKSBtdWx0aXBsaWVyID0gSW50ZWdlci5mcm9tVmFsdWUobXVsdGlwbGllcik7XG4gICAgICBpZiAobXVsdGlwbGllci5pc1plcm8oKSkgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBtdWx0aXBsaWVyLmlzT2RkKCkgPyBJbnRlZ2VyLk1JTl9WQUxVRSA6IEludGVnZXIuWkVSTztcbiAgICAgIGlmIChtdWx0aXBsaWVyLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiB0aGlzLmlzT2RkKCkgPyBJbnRlZ2VyLk1JTl9WQUxVRSA6IEludGVnZXIuWkVSTztcblxuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllci5uZWdhdGUoKSk7ZWxzZSByZXR1cm4gdGhpcy5uZWdhdGUoKS5tdWx0aXBseShtdWx0aXBsaWVyKS5uZWdhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpLm5lZ2F0ZSgpO1xuXG4gICAgICAvLyBJZiBib3RoIGxvbmdzIGFyZSBzbWFsbCwgdXNlIGZsb2F0IG11bHRpcGxpY2F0aW9uXG4gICAgICBpZiAodGhpcy5sZXNzVGhhbihUV09fUFdSXzI0KSAmJiBtdWx0aXBsaWVyLmxlc3NUaGFuKFRXT19QV1JfMjQpKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKHRoaXMudG9OdW1iZXIoKSAqIG11bHRpcGxpZXIudG9OdW1iZXIoKSk7XG5cbiAgICAgIC8vIERpdmlkZSBlYWNoIGxvbmcgaW50byA0IGNodW5rcyBvZiAxNiBiaXRzLCBhbmQgdGhlbiBhZGQgdXAgNHg0IHByb2R1Y3RzLlxuICAgICAgLy8gV2UgY2FuIHNraXAgcHJvZHVjdHMgdGhhdCB3b3VsZCBvdmVyZmxvdy5cblxuICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGI0OCA9IG11bHRpcGxpZXIuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYjMyID0gbXVsdGlwbGllci5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGIxNiA9IG11bHRpcGxpZXIubG93ID4+PiAxNjtcbiAgICAgIHZhciBiMDAgPSBtdWx0aXBsaWVyLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGM0OCA9IDAsXG4gICAgICAgICAgYzMyID0gMCxcbiAgICAgICAgICBjMTYgPSAwLFxuICAgICAgICAgIGMwMCA9IDA7XG4gICAgICBjMDAgKz0gYTAwICogYjAwO1xuICAgICAgYzE2ICs9IGMwMCA+Pj4gMTY7XG4gICAgICBjMDAgJj0gMHhGRkZGO1xuICAgICAgYzE2ICs9IGExNiAqIGIwMDtcbiAgICAgIGMzMiArPSBjMTYgPj4+IDE2O1xuICAgICAgYzE2ICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMDAgKiBiMTY7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTMyICogYjAwO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGExNiAqIGIxNjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMDAgKiBiMzI7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjNDggKz0gYTQ4ICogYjAwICsgYTMyICogYjE2ICsgYTE2ICogYjMyICsgYTAwICogYjQ4O1xuICAgICAgYzQ4ICY9IDB4RkZGRjtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKGMxNiA8PCAxNiB8IGMwMCwgYzQ4IDw8IDE2IHwgYzMyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdkaXYnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBRdW90aWVudFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZGl2KGRpdmlzb3IpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICAgIGlmIChkaXZpc29yLmlzWmVybygpKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnZGl2aXNpb24gYnkgemVybycpO1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICB2YXIgYXBwcm94LCByZW0sIHJlcztcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuT05FKSB8fCBkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk5FR19PTkUpKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7IC8vIHJlY2FsbCB0aGF0IC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFXG4gICAgICAgIGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuT05FO2Vsc2Uge1xuICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB8b3RoZXJ8ID49IDIsIHNvIHx0aGlzL290aGVyfCA8IHxNSU5fVkFMVUV8LlxuICAgICAgICAgICAgdmFyIGhhbGZUaGlzID0gdGhpcy5zaGlmdFJpZ2h0KDEpO1xuICAgICAgICAgICAgYXBwcm94ID0gaGFsZlRoaXMuZGl2KGRpdmlzb3IpLnNoaWZ0TGVmdCgxKTtcbiAgICAgICAgICAgIGlmIChhcHByb3guZXF1YWxzKEludGVnZXIuWkVSTykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IuaXNOZWdhdGl2ZSgpID8gSW50ZWdlci5PTkUgOiBJbnRlZ2VyLk5FR19PTkU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZW0gPSB0aGlzLnN1YnRyYWN0KGRpdmlzb3IubXVsdGlwbHkoYXBwcm94KSk7XG4gICAgICAgICAgICAgIHJlcyA9IGFwcHJveC5hZGQocmVtLmRpdihkaXZpc29yKSk7XG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvci5uZWdhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihkaXZpc29yKS5uZWdhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLmRpdihkaXZpc29yLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gUmVwZWF0IHRoZSBmb2xsb3dpbmcgdW50aWwgdGhlIHJlbWFpbmRlciBpcyBsZXNzIHRoYW4gb3RoZXI6ICBmaW5kIGFcbiAgICAgIC8vIGZsb2F0aW5nLXBvaW50IHRoYXQgYXBwcm94aW1hdGVzIHJlbWFpbmRlciAvIG90aGVyICpmcm9tIGJlbG93KiwgYWRkIHRoaXNcbiAgICAgIC8vIGludG8gdGhlIHJlc3VsdCwgYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHJlbWFpbmRlci4gIEl0IGlzIGNyaXRpY2FsIHRoYXRcbiAgICAgIC8vIHRoZSBhcHByb3hpbWF0ZSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJlYWwgdmFsdWUgc28gdGhhdCB0aGVcbiAgICAgIC8vIHJlbWFpbmRlciBuZXZlciBiZWNvbWVzIG5lZ2F0aXZlLlxuICAgICAgcmVzID0gSW50ZWdlci5aRVJPO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHdoaWxlIChyZW0uZ3JlYXRlclRoYW5PckVxdWFsKGRpdmlzb3IpKSB7XG4gICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSByZXN1bHQgb2YgZGl2aXNpb24uIFRoaXMgbWF5IGJlIGEgbGl0dGxlIGdyZWF0ZXIgb3JcbiAgICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgdmFsdWUuXG4gICAgICAgIGFwcHJveCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IocmVtLnRvTnVtYmVyKCkgLyBkaXZpc29yLnRvTnVtYmVyKCkpKTtcblxuICAgICAgICAvLyBXZSB3aWxsIHR3ZWFrIHRoZSBhcHByb3hpbWF0ZSByZXN1bHQgYnkgY2hhbmdpbmcgaXQgaW4gdGhlIDQ4LXRoIGRpZ2l0IG9yXG4gICAgICAgIC8vIHRoZSBzbWFsbGVzdCBub24tZnJhY3Rpb25hbCBkaWdpdCwgd2hpY2hldmVyIGlzIGxhcmdlci5cbiAgICAgICAgdmFyIGxvZzIgPSBNYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KSAvIE1hdGguTE4yKSxcbiAgICAgICAgICAgIGRlbHRhID0gbG9nMiA8PSA0OCA/IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpLFxuXG4gICAgICAgIC8vIERlY3JlYXNlIHRoZSBhcHByb3hpbWF0aW9uIHVudGlsIGl0IGlzIHNtYWxsZXIgdGhhbiB0aGUgcmVtYWluZGVyLiAgTm90ZVxuICAgICAgICAvLyB0aGF0IGlmIGl0IGlzIHRvbyBsYXJnZSwgdGhlIHByb2R1Y3Qgb3ZlcmZsb3dzIGFuZCBpcyBuZWdhdGl2ZS5cbiAgICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5mcm9tTnVtYmVyKGFwcHJveCksXG4gICAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICAgIHdoaWxlIChhcHByb3hSZW0uaXNOZWdhdGl2ZSgpIHx8IGFwcHJveFJlbS5ncmVhdGVyVGhhbihyZW0pKSB7XG4gICAgICAgICAgYXBwcm94IC09IGRlbHRhO1xuICAgICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpO1xuICAgICAgICAgIGFwcHJveFJlbSA9IGFwcHJveFJlcy5tdWx0aXBseShkaXZpc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGtub3cgdGhlIGFuc3dlciBjYW4ndCBiZSB6ZXJvLi4uIGFuZCBhY3R1YWxseSwgemVybyB3b3VsZCBjYXVzZVxuICAgICAgICAvLyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2Ugd2Ugd291bGQgbWFrZSBubyBwcm9ncmVzcy5cbiAgICAgICAgaWYgKGFwcHJveFJlcy5pc1plcm8oKSkgYXBwcm94UmVzID0gSW50ZWdlci5PTkU7XG5cbiAgICAgICAgcmVzID0gcmVzLmFkZChhcHByb3hSZXMpO1xuICAgICAgICByZW0gPSByZW0uc3VidHJhY3QoYXBwcm94UmVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgbW9kdWxvIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFJlbWFpbmRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ21vZHVsbycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vZHVsbyhkaXZpc29yKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGRpdmlzb3IpKSBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihkaXZpc29yKS5tdWx0aXBseShkaXZpc29yKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBOT1Qgb2YgdGhpcyBJbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3QoKSB7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh+dGhpcy5sb3csIH50aGlzLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgQU5EIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYW5kJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYW5kKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyAmIG90aGVyLmxvdywgdGhpcy5oaWdoICYgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ29yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Iob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IHwgb3RoZXIubG93LCB0aGlzLmhpZ2ggfCBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIFhPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBnaXZlbiBvbmUuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3hvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHhvcihvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgXiBvdGhlci5sb3csIHRoaXMuaGlnaCBeIG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0IGJ5IHRoZSBnaXZlbiBhbW91bnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3NoaWZ0TGVmdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0TGVmdChudW1CaXRzKSB7XG4gICAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKSByZXR1cm4gdGhpcztlbHNlIGlmIChudW1CaXRzIDwgMzIpIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IDw8IG51bUJpdHMsIHRoaXMuaGlnaCA8PCBudW1CaXRzIHwgdGhpcy5sb3cgPj4+IDMyIC0gbnVtQml0cyk7ZWxzZSByZXR1cm4gSW50ZWdlci5mcm9tQml0cygwLCB0aGlzLmxvdyA8PCBudW1CaXRzIC0gMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBhcml0aG1ldGljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzaGlmdFJpZ2h0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnRSaWdodChudW1CaXRzKSB7XG4gICAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKSByZXR1cm4gdGhpcztlbHNlIGlmIChudW1CaXRzIDwgMzIpIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93ID4+PiBudW1CaXRzIHwgdGhpcy5oaWdoIDw8IDMyIC0gbnVtQml0cywgdGhpcy5oaWdoID4+IG51bUJpdHMpO2Vsc2UgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5oaWdoID4+IG51bUJpdHMgLSAzMiwgdGhpcy5oaWdoID49IDAgPyAwIDogLTEpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlZ2VyO1xufSkoKTtcblxuSW50ZWdlci5fX2lzSW50ZWdlcl9fO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZWdlci5wcm90b3R5cGUsIFwiX19pc0ludGVnZXJfX1wiLCB7XG4gIHZhbHVlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgY29uZmlndXJhYmxlOiBmYWxzZVxufSk7XG5cbi8qKlxuICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9iaiBPYmplY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmlzSW50ZWdlciA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIChvYmogJiYgb2JqW1wiX19pc0ludGVnZXJfX1wiXSkgPT09IHRydWU7XG59O1xuXG4vKipcbiAqIEEgY2FjaGUgb2YgdGhlIEludGVnZXIgcmVwcmVzZW50YXRpb25zIG9mIHNtYWxsIGludGVnZXIgdmFsdWVzLlxuICogQHR5cGUgeyFPYmplY3R9XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBJTlRfQ0FDSEUgPSB7fTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIGdpdmVuIDMyIGJpdCBpbnRlZ2VyIHZhbHVlLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIDMyIGJpdCBpbnRlZ2VyIGluIHF1ZXN0aW9uXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tSW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBvYmosIGNhY2hlZE9iajtcbiAgdmFsdWUgPSB2YWx1ZSB8IDA7XG4gIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSB7XG4gICAgY2FjaGVkT2JqID0gSU5UX0NBQ0hFW3ZhbHVlXTtcbiAgICBpZiAoY2FjaGVkT2JqKSByZXR1cm4gY2FjaGVkT2JqO1xuICB9XG4gIG9iaiA9IG5ldyBJbnRlZ2VyKHZhbHVlLCB2YWx1ZSA8IDAgPyAtMSA6IDAsIGZhbHNlKTtcbiAgaWYgKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPCAxMjgpIElOVF9DQUNIRVt2YWx1ZV0gPSBvYmo7XG4gIHJldHVybiBvYmo7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gdmFsdWUsIHByb3ZpZGVkIHRoYXQgaXQgaXMgYSBmaW5pdGUgbnVtYmVyLiBPdGhlcndpc2UsIHplcm8gaXMgcmV0dXJuZWQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgbnVtYmVyIGluIHF1ZXN0aW9uXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tTnVtYmVyID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgaWYgKHZhbHVlIDw9IC1UV09fUFdSXzYzX0RCTCkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICBpZiAodmFsdWUgKyAxID49IFRXT19QV1JfNjNfREJMKSByZXR1cm4gSW50ZWdlci5NQVhfVkFMVUU7XG4gIGlmICh2YWx1ZSA8IDApIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIoLXZhbHVlKS5uZWdhdGUoKTtcbiAgcmV0dXJuIG5ldyBJbnRlZ2VyKHZhbHVlICUgVFdPX1BXUl8zMl9EQkwgfCAwLCB2YWx1ZSAvIFRXT19QV1JfMzJfREJMIHwgMCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgNjQgYml0IGludGVnZXIgdGhhdCBjb21lcyBieSBjb25jYXRlbmF0aW5nIHRoZSBnaXZlbiBsb3cgYW5kIGhpZ2ggYml0cy4gRWFjaCBpc1xuICogIGFzc3VtZWQgdG8gdXNlIDMyIGJpdHMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3dCaXRzIFRoZSBsb3cgMzIgYml0c1xuICogQHBhcmFtIHtudW1iZXJ9IGhpZ2hCaXRzIFRoZSBoaWdoIDMyIGJpdHNcbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21CaXRzID0gZnVuY3Rpb24gKGxvd0JpdHMsIGhpZ2hCaXRzKSB7XG4gIHJldHVybiBuZXcgSW50ZWdlcihsb3dCaXRzLCBoaWdoQml0cyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHdyaXR0ZW4gdXNpbmcgdGhlIHNwZWNpZmllZCByYWRpeC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgSW50ZWdlclxuICogQHBhcmFtIHtudW1iZXI9fSByYWRpeCBUaGUgcmFkaXggaW4gd2hpY2ggdGhlIHRleHQgaXMgd3JpdHRlbiAoMi0zNiksIGRlZmF1bHRzIHRvIDEwXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKHN0ciwgcmFkaXgpIHtcbiAgaWYgKHN0ci5sZW5ndGggPT09IDApIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmcnKTtcbiAgaWYgKHN0ciA9PT0gXCJOYU5cIiB8fCBzdHIgPT09IFwiSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiK0luZmluaXR5XCIgfHwgc3RyID09PSBcIi1JbmZpbml0eVwiKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICByYWRpeCA9IHJhZGl4IHx8IDEwO1xuICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XG5cbiAgdmFyIHA7XG4gIGlmICgocCA9IHN0ci5pbmRleE9mKCctJykpID4gMCkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ251bWJlciBmb3JtYXQgZXJyb3I6IGludGVyaW9yIFwiLVwiIGNoYXJhY3RlcjogJyArIHN0cik7ZWxzZSBpZiAocCA9PT0gMCkgcmV0dXJuIEludGVnZXIuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLCByYWRpeCkubmVnYXRlKCk7XG5cbiAgLy8gRG8gc2V2ZXJhbCAoOCkgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAvLyBtaW5pbWl6ZSB0aGUgY2FsbHMgdG8gdGhlIHZlcnkgZXhwZW5zaXZlIGVtdWxhdGVkIGRpdi5cbiAgdmFyIHJhZGl4VG9Qb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgOCkpO1xuXG4gIHZhciByZXN1bHQgPSBJbnRlZ2VyLlpFUk87XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSArPSA4KSB7XG4gICAgdmFyIHNpemUgPSBNYXRoLm1pbig4LCBzdHIubGVuZ3RoIC0gaSk7XG4gICAgdmFyIHZhbHVlID0gcGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLCBpICsgc2l6ZSksIHJhZGl4KTtcbiAgICBpZiAoc2l6ZSA8IDgpIHtcbiAgICAgIHZhciBwb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgc2l6ZSkpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KHBvd2VyKS5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShyYWRpeFRvUG93ZXIpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmFkZChJbnRlZ2VyLmZyb21OdW1iZXIodmFsdWUpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIEludGVnZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIGlmICh2YWwgLyogaXMgY29tcGF0aWJsZSAqLyBpbnN0YW5jZW9mIEludGVnZXIpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih2YWwpO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcodmFsKTtcbiAgLy8gVGhyb3dzIGZvciBub24tb2JqZWN0cywgY29udmVydHMgbm9uLWluc3RhbmNlb2YgSW50ZWdlcjpcbiAgcmV0dXJuIG5ldyBJbnRlZ2VyKHZhbC5sb3csIHZhbC5oaWdoKTtcbn07XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8xNl9EQkwgPSAxIDw8IDE2O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjRfREJMID0gMSA8PCAyNDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzMyX0RCTCA9IFRXT19QV1JfMTZfREJMICogVFdPX1BXUl8xNl9EQkw7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl82NF9EQkwgPSBUV09fUFdSXzMyX0RCTCAqIFRXT19QV1JfMzJfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjNfREJMID0gVFdPX1BXUl82NF9EQkwgLyAyO1xuXG4vKipcbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8yNCA9IEludGVnZXIuZnJvbUludChUV09fUFdSXzI0X0RCTCk7XG5cbi8qKlxuICogU2lnbmVkIHplcm8uXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuWkVSTyA9IEludGVnZXIuZnJvbUludCgwKTtcblxuLyoqXG4gKiBTaWduZWQgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk9ORSA9IEludGVnZXIuZnJvbUludCgxKTtcblxuLyoqXG4gKiBTaWduZWQgbmVnYXRpdmUgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk5FR19PTkUgPSBJbnRlZ2VyLmZyb21JbnQoLTEpO1xuXG4vKipcbiAqIE1heGltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1BWF9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHhGRkZGRkZGRiB8IDAsIDB4N0ZGRkZGRkYgfCAwLCBmYWxzZSk7XG5cbi8qKlxuICogTWluaW11bSBzaWduZWQgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUlOX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygwLCAweDgwMDAwMDAwIHwgMCwgZmFsc2UpO1xuXG4vKipcbiAqIENhc3QgdmFsdWUgdG8gSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHVzZS5cbiAqIEByZXR1cm4ge0ludGVnZXJ9IC0gQW4gb2JqZWN0IG9mIHR5cGUgSW50ZWdlci5cbiAqL1xudmFyIGludCA9IEludGVnZXIuZnJvbVZhbHVlO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFyaWFibGUgaXMgb2YgSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmFpYmxlIHRvIGNoZWNrLlxuICogQHJldHVybiB7Qm9vbGVhbn0gLSBJcyBpdCBvZiB0aGUgSW50ZWdlciB0eXBlP1xuICovXG52YXIgaXNJbnQgPSBJbnRlZ2VyLmlzSW50ZWdlcjtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBJbnRlZ2VyOiBJbnRlZ2VyLFxuICBpbnQ6IGludCxcbiAgaXNJbnQ6IGlzSW50XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY29tbW9uIEFQSSBmb3IgZGVhbGluZyB3aXRoIGJpbmFyeSBkYXRhIHRoYXRcbiAgKiB3b3JrcyBmb3IgYm90aCBicm93c2VycyAodmlhIEFycmF5QnVmZmVyL0RhdGFWaWV3KSBhbmQgZm9yIE5vZGVKU1xuICAqKHZpYSBCdWZmZXIgQVBJKS5cbiAgKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKFwidmFsdWVcIiBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgX25vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuLyoqXG4gICogQ29tbW9uIGJhc2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBtb3N0IGJ1ZmZlciBtZXRob2RzLlxuICAqIEJ1ZmZlcnMgYXJlIHN0YXRlZnVsIC0gdGhleSB0cmFjayBhIGN1cnJlbnQgXCJwb3NpdGlvblwiLCB0aGlzIGhlbHBzIGdyZWF0bHlcbiAgKiB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbSB0aGVtIGluY3JlbWVudGFsbHkuIFlvdSBjYW4gYWxzbyBpZ25vcmUgdGhlXG4gICogc3RhdGVmdWwgcmVhZC93cml0ZSBtZXRob2RzLlxuICAqIHJlYWRYWFggYW5kIHdyaXRlWFhYLW1ldGhvZHMgbW92ZSB0aGUgaW5uZXIgcG9zaXRpb24gb2YgdGhlIGJ1ZmZlci5cbiAgKiBwdXRYWFggYW5kIGdldFhYWC1tZXRob2RzIGRvIG5vdC5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIEJhc2VCdWZmZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugd2l0aCB0aGUgaW5qZWN0ZWQgc2l6ZS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICAgKi9cblxuICBmdW5jdGlvbiBCYXNlQnVmZmVyKHNpemUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQmFzZUJ1ZmZlcik7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgICB0aGlzLmxlbmd0aCA9IHNpemU7XG4gICAgLy8gQ2FsbGluZyB0aGVzZSBvdXQgLSB0aGlzIGlzIHRoZSByZXF1aXJlZFxuICAgIC8vIG1ldGhvZHMgYSBzdWJjbGFzcyBuZWVkcyB0byBpbXBsZW1lbnRcbiAgICB2YXIgZ2V0VUludDggPSBudWxsO1xuICAgIHZhciBnZXRJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIGdldFNsaWNlID0gbnVsbDtcbiAgICB2YXIgcHV0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIHB1dFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgcHV0SW50OCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQmFzaWMgYnVmZmVyIGltcGxlbWVudGF0aW9uIHRoYXQgc2hvdWxkIHdvcmsgaW4gbW9zdCBhbnkgbW9kZXJuIEpTIGVudi5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQmFzZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50MTYocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDE2KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDMyKHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50MzIocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDY0KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgNTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCA0OCB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDQwIHwgdGhpcy5nZXRVSW50OChwICsgMykgPDwgMzIgfCB0aGlzLmdldFVJbnQ4KHAgKyA0KSA8PCAyNCB8IHRoaXMuZ2V0VUludDgocCArIDUpIDw8IDE2IHwgdGhpcy5nZXRVSW50OChwICsgNikgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHNsaWNlIG9mIHRoaXMgYnVmZmVyLiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBjb3B5IGFueSBkYXRhLFxuICAgICAqIGJ1dCBzaW1wbHkgcHJvdmlkZXMgYSBzbGljZSB2aWV3IG9mIHRoaXMgYnVmZmVyXG4gICAgICogQHBhcmFtIHN0YXJ0XG4gICAgICogQHBhcmFtIGxlbmd0aFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgU2xpY2VCdWZmZXIoc3RhcnQsIGxlbmd0aCwgdGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgocCwgdmFsID4+IDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQxNihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0VUludDgocCwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiAyNCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OChwLCB2YWwgPj4gMjQgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCA+PiAxNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMiwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDY0KHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiA0OCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gNDIgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiAzNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsID4+IDMwICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA0LCB2YWwgPj4gMjQgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDUsIHZhbCA+PiAxNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNiwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDcsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwb3NpdGlvblxuICAgICAqIEBwYXJhbSBvdGhlclxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEJ5dGVzKHBvc2l0aW9uLCBvdGhlcikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IG90aGVyLnJlbWFpbmluZygpOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgdGhpcy5wdXRVSW50OChwb3NpdGlvbiArIGksIG90aGVyLnJlYWRVSW50OCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQ4KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OCh0aGlzLl91cGRhdGVQb3MoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50MTYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50MTYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQxNih0aGlzLl91cGRhdGVQb3MoMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MzIodGhpcy5fdXBkYXRlUG9zKDQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRGbG9hdDY0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmxvYXQ2NCh0aGlzLl91cGRhdGVQb3MoOCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlVUludDgodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50OCh2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVJbnQxNih2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50MTYodGhpcy5fdXBkYXRlUG9zKDIpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVVSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVJbnQ2NCh2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50NjQodGhpcy5fdXBkYXRlUG9zKDgpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVGbG9hdDY0KHZhbCkge1xuICAgICAgdGhpcy5wdXRGbG9hdDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUJ5dGVzKHZhbCkge1xuICAgICAgdGhpcy5wdXRCeXRlcyh0aGlzLl91cGRhdGVQb3ModmFsLnJlbWFpbmluZygpKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkU2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFNsaWNlKGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2xpY2UodGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl91cGRhdGVQb3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwZGF0ZVBvcyhsZW5ndGgpIHtcbiAgICAgIHZhciBwID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHJlbWFuaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIHRoaXMucG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFzIHJlbWFuaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzUmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1JlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZygpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBwb3NpdGlvbiBzdGF0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIgYW5kIGl0J3Mgc3RhdGUuXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiggcG9zaXRpb249XCIgKyB0aGlzLnBvc2l0aW9uICsgXCIgKVxcbiAgXCIgKyB0aGlzLnRvSGV4KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIuXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIC8vIFRPRE8gc29tZXRoaW5nIGxpa2UgU3RyaW5nQnVpbGRlcj9cbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBoZXhCeXRlID0gdGhpcy5nZXRVSW50OChpKS50b1N0cmluZygxNik7XG4gICAgICAgIGlmIChoZXhCeXRlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgaGV4Qnl0ZSA9IFwiMFwiICsgaGV4Qnl0ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gaGV4Qnl0ZSArIFwiIFwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQmFzZUJ1ZmZlcjtcbn0pKCk7XG5cbnZhciBIZWFwQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcikge1xuICBfaW5oZXJpdHMoSGVhcEJ1ZmZlciwgX0Jhc2VCdWZmZXIpO1xuXG4gIGZ1bmN0aW9uIEhlYXBCdWZmZXIoYXJnKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhlYXBCdWZmZXIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyID8gYXJnIDogbmV3IEFycmF5QnVmZmVyKGFyZyk7XG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoSGVhcEJ1ZmZlci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLl92aWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVwcmVzZW50cyBhIHZpZXcgYXMgc2xpY2Ugb2YgYW5vdGhlciBidWZmZXIuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoSGVhcEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fdmlldy5zZXRVaW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl92aWV3LmdldFVpbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0SW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRGbG9hdDY0KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5zbGljZSkge1xuICAgICAgICByZXR1cm4gbmV3IEhlYXBCdWZmZXIodGhpcy5fYnVmZmVyLnNsaWNlKHN0YXJ0LCBzdGFydCArIGxlbmd0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU29tZSBwbGF0Zm9ybXMgKGVnLiBwaGFudG9tanMpIGRvbid0IHN1cHBvcnQgc2xpY2UsIHNvIGZhbGwgYmFjayB0byBhIGNvcHlcbiAgICAgICAgLy8gV2UgZG8gdGhpcyByYXRoZXIgdGhhbiByZXR1cm4gYSBTbGljZUJ1ZmZlciwgYmVjYXVzZSBzbGljZUJ1ZmZlciBjYW5ub3RcbiAgICAgICAgLy8gYmUgcGFzc2VkIHRvIG5hdGl2ZSBuZXR3b3JrIHdyaXRlIG9wcyBldGMgLSB3ZSBuZWVkIEFycmF5QnVmZmVyIGZvciB0aGF0XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IEhlYXBCdWZmZXIobGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvcHkucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChpICsgc3RhcnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29weTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogU3BlY2lmaWMgdG8gSGVhcEJ1ZmZlciwgdGhpcyBnZXRzIGEgRGF0YVZpZXcgZnJvbSB0aGVcbiAgICAgKiBjdXJyZW50IHBvc2l0aW9uIGFuZCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4gXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFZpZXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFZpZXcobGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlciwgdGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEhlYXBCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIFNsaWNlQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjIpIHtcbiAgX2luaGVyaXRzKFNsaWNlQnVmZmVyLCBfQmFzZUJ1ZmZlcjIpO1xuXG4gIGZ1bmN0aW9uIFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIGlubmVyKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNsaWNlQnVmZmVyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFNsaWNlQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBsZW5ndGgpO1xuICAgIHRoaXMuX3N0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5faW5uZXIgPSBpbm5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWZmZXIgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSBidWZmZXJzLCBleHBvc2luZyB0aGVtIGFzIG9uZSBzaW5nbGUgYnVmZmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFNsaWNlQnVmZmVyLCBbe1xuICAgIGtleTogXCJwdXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9pbm5lci5wdXRVSW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldFVJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0SW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0RmxvYXQ2NCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRGbG9hdDY0KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTbGljZUJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgQ29tYmluZWRCdWZmZXIgPSAoZnVuY3Rpb24gKF9CYXNlQnVmZmVyMykge1xuICBfaW5oZXJpdHMoQ29tYmluZWRCdWZmZXIsIF9CYXNlQnVmZmVyMyk7XG5cbiAgZnVuY3Rpb24gQ29tYmluZWRCdWZmZXIoYnVmZmVycykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21iaW5lZEJ1ZmZlcik7XG5cbiAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxlbmd0aCArPSBidWZmZXJzW2ldLmxlbmd0aDtcbiAgICB9XG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ29tYmluZWRCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGxlbmd0aCk7XG4gICAgdGhpcy5fYnVmZmVycyA9IGJ1ZmZlcnM7XG4gIH1cblxuICAvKipcbiAgICogQnVmZmVyIHVzZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50XG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQ29tYmluZWRCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICAvLyBTdXJlbHkgdGhlcmUncyBhIGZhc3RlciB3YXkgdG8gZG8gdGhpcy4uIHNvbWUgc29ydCBvZiBsb29rdXAgdGFibGUgdGhpbmc/XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2J1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLCBza2lwIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHBvc2l0aW9uIC09IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRVSW50OChwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICAvLyBTdXJlbHkgdGhlcmUncyBhIGZhc3RlciB3YXkgdG8gZG8gdGhpcy4uIHNvbWUgc29ydCBvZiBsb29rdXAgdGFibGUgdGhpbmc/XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2J1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLCBza2lwIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHBvc2l0aW9uIC09IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIC8vIEF0IHNvbWUgcG9pbnQsIGEgbW9yZSBlZmZpY2llbnQgaW1wbC4gRm9yIG5vdywgd2UgY29weSB0aGUgOCBieXRlc1xuICAgICAgLy8gd2Ugd2FudCB0byByZWFkIGFuZCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGltcGwgb2YgSUVFRSA3NTQuXG4gICAgICB2YXIgYiA9IGFsbG9jKDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgYi5wdXRVSW50OChpLCB0aGlzLmdldFVJbnQ4KHBvc2l0aW9uICsgaSkpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBiLmdldEZsb2F0NjQoMCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbWJpbmVkQnVmZmVyO1xufSkoQmFzZUJ1ZmZlcik7XG5cbnZhciBOb2RlQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjQpIHtcbiAgX2luaGVyaXRzKE5vZGVCdWZmZXIsIF9CYXNlQnVmZmVyNCk7XG5cbiAgZnVuY3Rpb24gTm9kZUJ1ZmZlcihhcmcpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUJ1ZmZlcik7XG5cbiAgICB2YXIgYnVmZmVyID0gYXJnIGluc3RhbmNlb2YgX25vZGUuQnVmZmVyID8gYXJnIDogbmV3IF9ub2RlLkJ1ZmZlcihhcmcpO1xuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKE5vZGVCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGJ1ZmZlci5sZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8vIFVzZSBIZWFwQnVmZmVyIGJ5IGRlZmF1bHQsIHVubGVzcyBCdWZmZXIgQVBJIGlzIGF2YWlsYWJsZSwgc2VlIGJlbG93XG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGVCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRVSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkRG91YmxlQkUocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVEb3VibGVCRSh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0Qnl0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIHZhbCkge1xuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5vZGVCdWZmZXIpIHtcbiAgICAgICAgdmFyIGJ5dGVzVG9Db3B5ID0gTWF0aC5taW4odmFsLmxlbmd0aCAtIHZhbC5wb3NpdGlvbiwgdGhpcy5sZW5ndGggLSBwb3NpdGlvbik7XG4gICAgICAgIHZhbC5fYnVmZmVyLmNvcHkodGhpcy5fYnVmZmVyLCBwb3NpdGlvbiwgdmFsLnBvc2l0aW9uLCB2YWwucG9zaXRpb24gKyBieXRlc1RvQ29weSk7XG4gICAgICAgIHZhbC5wb3NpdGlvbiArPSBieXRlc1RvQ29weTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiQ29weWluZyBub3QgeWV0IGltcGxlbWVudGVkLlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBOb2RlQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZUJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgX0RlZmF1bHRCdWZmZXIgPSBIZWFwQnVmZmVyO1xudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZSdyZSBub3QgcnVubmluZyBvbiBOb2RlSlMgb3IgZXF1aXZhbGVudFxuICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gIF9EZWZhdWx0QnVmZmVyID0gTm9kZUJ1ZmZlcjtcbn0gY2F0Y2ggKGUpIHt9XG5cbi8qKlxuICogQWxsb2NhdGUgYSBuZXcgYnVmZmVyIHVzaW5nIHdoYXRldmVyIG1lY2hhbmlzbSBpcyBtb3N0IHNlbnNpYmxlIGZvciB0aGVcbiAqIGN1cnJlbnQgcGxhdGZvcm1cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtJbnRlZ2VyfSBzaXplXG4gKiBAcmV0dXJuIG5ldyBidWZmZXJcbiAqL1xuZnVuY3Rpb24gYWxsb2Moc2l6ZSkge1xuICByZXR1cm4gbmV3IF9EZWZhdWx0QnVmZmVyKHNpemUpO1xufVxuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgQmFzZUJ1ZmZlcjogQmFzZUJ1ZmZlcixcbiAgSGVhcEJ1ZmZlcjogSGVhcEJ1ZmZlcixcbiAgU2xpY2VCdWZmZXI6IFNsaWNlQnVmZmVyLFxuICBDb21iaW5lZEJ1ZmZlcjogQ29tYmluZWRCdWZmZXIsXG4gIE5vZGVCdWZmZXI6IE5vZGVCdWZmZXIsXG4gIGFsbG9jOiBhbGxvY1xufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIG9ic2VydmVyID0ge1xuICBpbnN0YW5jZTogbnVsbCxcbiAgdXBkYXRlSW5zdGFuY2U6IGZ1bmN0aW9uIHVwZGF0ZUluc3RhbmNlKGluc3RhbmNlKSB7XG4gICAgb2JzZXJ2ZXIuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgfVxufTtcblxudmFyIER1bW15Q2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIER1bW15Q2hhbm5lbChvcHRzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIER1bW15Q2hhbm5lbCk7XG5cbiAgICB0aGlzLndyaXR0ZW4gPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEdW1teUNoYW5uZWwsIFt7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1Zikge1xuICAgICAgdGhpcy53cml0dGVuLnB1c2goYnVmKTtcbiAgICAgIG9ic2VydmVyLnVwZGF0ZUluc3RhbmNlKHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLndyaXR0ZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0ICs9IHRoaXMud3JpdHRlbltpXS50b0hleCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9CdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9CdWZmZXIoKSB7XG4gICAgICByZXR1cm4gbmV3IF9idWYuQ29tYmluZWRCdWZmZXIodGhpcy53cml0dGVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRHVtbXlDaGFubmVsO1xufSkoKTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIGNoYW5uZWw6IER1bW15Q2hhbm5lbCxcbiAgb2JzZXJ2ZXI6IG9ic2VydmVyXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9uZXQgPSByZXF1aXJlKCduZXQnKTtcblxudmFyIF9uZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbmV0KTtcblxudmFyIF90bHMgPSByZXF1aXJlKCd0bHMnKTtcblxudmFyIF90bHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdGxzKTtcblxudmFyIF9mcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbnZhciBfZnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnMpO1xuXG52YXIgX3BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbnZhciBfcGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXRoKTtcblxudmFyIF9vcyA9IHJlcXVpcmUoJ29zJyk7XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIF9DT05ORUNUSU9OX0lER0VOID0gMDtcblxuZnVuY3Rpb24gdXNlckhvbWUoKSB7XG4gIC8vIEZvciBzb21lIHJlYXNvbiwgQnJvd3NlcmlmeSBjaG9rZXMgb24gc2hpbW1pbmcgYHByb2Nlc3NgLiBUaGlzIGNvZGVcbiAgLy8gd2lsbCBuZXZlciBnZXQgZXhlY3V0ZWQgb24gdGhlIGJyb3dzZXIgYW55d2F5LCB0byBqdXN0IGhhY2sgYXJvdW5kIGl0XG4gIHZhciBnZXRPdXRPZkhlcmVCcm93c2VyaWZ5WW91cmVEcnVuayA9IHJlcXVpcmU7XG4gIHZhciBwcm9jZXNzID0gZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsoJ3Byb2Nlc3MnKTtcblxuICByZXR1cm4gcHJvY2Vzcy5lbnZbcHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ1VTRVJQUk9GSUxFJyA6ICdIT01FJ107XG59XG5cbmZ1bmN0aW9uIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGNiKSB7XG4gIGlmICghX2ZzMlsnZGVmYXVsdCddLmV4aXN0c1N5bmMoa25vd25Ib3N0c1BhdGgpKSB7XG4gICAgY2IobnVsbCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBmb3VuZCA9IGZhbHNlO1xuICByZXF1aXJlKCdyZWFkbGluZScpLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IF9mczJbJ2RlZmF1bHQnXS5jcmVhdGVSZWFkU3RyZWFtKGtub3duSG9zdHNQYXRoKVxuICB9KS5vbignbGluZScsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChzZXJ2ZXJJZCkpIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGNiKGxpbmUuc3BsaXQoXCIgXCIpWzFdKTtcbiAgICB9XG4gIH0pLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdG9yZUZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgZmluZ2VycHJpbnQpIHtcbiAgX2ZzMlsnZGVmYXVsdCddLmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIF9vcy5FT0wsIFwidXRmOFwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgVHJ1c3RTdHJhdGVneSA9IHtcbiAgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUzogZnVuY3Rpb24gVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIGlmICghb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzIHx8IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5sZW5ndGggPT0gMCkge1xuICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTIGFzIHRoZSBtZXRob2QgXCIgKyBcInRvIHZlcmlmeSB0cnVzdCBmb3IgZW5jcnlwdGVkICBjb25uZWN0aW9ucywgYnV0IGhhdmUgbm90IGNvbmZpZ3VyZWQgYW55IFwiICsgXCJ0cnVzdGVkQ2VydGlmaWNhdGVzLiBZb3UgIG11c3Qgc3BlY2lmeSB0aGUgcGF0aCB0byBhdCBsZWFzdCBvbmUgdHJ1c3RlZCBcIiArIFwiWC41MDkgY2VydGlmaWNhdGUgZm9yIHRoaXMgdG8gd29yay4gVHdvIG90aGVyIGFsdGVybmF0aXZlcyBpcyB0byB1c2UgXCIgKyBcIlRSVVNUX09OX0ZJUlNUX1VTRSBvciB0byBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBlbmNyeXB0ZWQ9ZmFsc2UgXCIgKyBcImluIHlvdXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uXCIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGxzT3B0cyA9IHtcbiAgICAgIGNhOiBvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMubWFwKF9mczJbJ2RlZmF1bHQnXS5yZWFkRmlsZVN5bmMpLFxuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSBjaGVjayBmb3IgdGhpcyBpbiB0aGUgY29ubmVjdCBjYWxsYmFjaywgdG8gZ2l2ZVxuICAgICAgLy8gYSBtb3JlIGhlbHBmdWwgZXJyb3IgdG8gdGhlIHVzZXJcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCBhZGRcIiArIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICsgXCIgdXNpbmcgYG5lbzRqLnYxLmRyaXZlciguLiwgeyB0cnVzdGVkQ2VydGlmaWNhdGVzOlsncGF0aC90by9jZXJ0aWZpY2F0ZS5jcnQnXX0pLiBUaGlzIFwiICsgXCIgaXMgYSBzZWN1cml0eSBtZWFzdXJlIHRvIHByb3RlY3QgYWdhaW5zdCBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICsgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPWZhbHNlYCBpbiB0aGUgZHJpdmVyXCIgKyBcIiBvcHRpb25zLlwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuICBUUlVTVF9PTl9GSVJTVF9VU0U6IGZ1bmN0aW9uIFRSVVNUX09OX0ZJUlNUX1VTRShvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIGFnYWluc3Qga25vd25faG9zdHNcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlcnZlckNlcnQgPSBzb2NrZXQuZ2V0UGVlckNlcnRpZmljYXRlKCAvKnJhdz0qL3RydWUpO1xuXG4gICAgICBpZiAoIXNlcnZlckNlcnQucmF3KSB7XG4gICAgICAgIC8vIElmIGByYXdgIGlzIG5vdCBhdmFpbGFibGUsIHdlJ3JlIG9uIGFuIG9sZCB2ZXJzaW9uIG9mIE5vZGVKUywgYW5kXG4gICAgICAgIC8vIHRoZSByYXcgY2VydCBjYW5ub3QgYmUgYWNjZXNzZWQgKG9yLCBhdCBsZWFzdCBJIGNvdWxkbid0IGZpbmQgYSB3YXkgdG8pXG4gICAgICAgIC8vIHRoZXJlZm9yZSwgd2UgY2FuJ3QgZ2VuZXJhdGUgYSBTSEE1MTIgZmluZ2VycHJpbnQsIG1lYW5pbmcgd2UgY2FuJ3RcbiAgICAgICAgLy8gZG8gVE9GVSwgYW5kIHRoZSBzYWZlIGFwcHJvYWNoIGlzIHRvIGZhaWwuXG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIllvdSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mIE5vZGVKUyB0aGF0IGRvZXMgbm90IFwiICsgXCJzdXBwb3J0IHRydXN0LW9uLWZpcnN0IHVzZSBlbmNyeXB0aW9uLiBZb3UgY2FuIGVpdGhlciB1cGdyYWRlIE5vZGVKUyB0byBcIiArIFwiYSBuZXdlciB2ZXJzaW9uLCB1c2UgYHRydXN0OlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNgIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWcgaW5zdGVhZCwgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIHVzaW5nIGBlbmNyeXB0ZWQ6ZmFsc2VgLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlcnZlckZpbmdlcnByaW50ID0gcmVxdWlyZSgnY3J5cHRvJykuY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKHNlcnZlckNlcnQucmF3KS5kaWdlc3QoXCJoZXhcIik7XG4gICAgICB2YXIga25vd25Ib3N0c1BhdGggPSBvcHRzLmtub3duSG9zdHMgfHwgX3BhdGgyWydkZWZhdWx0J10uam9pbih1c2VySG9tZSgpLCBcIi5uZW80alwiLCBcImtub3duX2hvc3RzXCIpO1xuICAgICAgdmFyIHNlcnZlcklkID0gb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG5cbiAgICAgIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZ1bmN0aW9uIChrbm93bkZpbmdlcnByaW50KSB7XG4gICAgICAgIGlmIChrbm93bkZpbmdlcnByaW50ID09PSBzZXJ2ZXJGaW5nZXJwcmludCkge1xuICAgICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGtub3duRmluZ2VycHJpbnQgPT0gbnVsbCkge1xuICAgICAgICAgIHN0b3JlRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJGaW5nZXJwcmludCk7XG4gICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRGF0YWJhc2UgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSBoYXMgY2hhbmdlZCwgYW5kIG5vIGxvbmdlciBcIiArIFwibWF0Y2hlcyB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGZvciBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAuIEFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbiwgdGhpcyBkcml2ZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cnVzdCB0aGUgbmV3IFwiICsgXCJjZXJ0aWZpY2F0ZSwgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBhbGxvdyBhbiBhdHRhY2tlciB0byBwcmV0ZW5kIHRvIGJlIHRoZSBOZW80aiBcIiArIFwiaW5zdGFuY2Ugd2Ugd2FudCB0byBjb25uZWN0IHRvLiBUaGUgY2VydGlmaWNhdGUgcHJvdmlkZWQgYnkgdGhlIHNlcnZlciBsb29rcyBsaWtlOiBcIiArIHNlcnZlckNlcnQgKyBcIi4gSWYgeW91IHRydXN0IHRoYXQgdGhpcyBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCwgc2ltcGx5IHJlbW92ZSB0aGUgbGluZSBcIiArIFwic3RhcnRpbmcgd2l0aCBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAsIGFuZCB0aGUgZHJpdmVyIHdpbGwgXCIgKyBcInVwZGF0ZSB0aGUgZmlsZSB3aXRoIHRoZSBuZXcgY2VydGlmaWNhdGUuIFlvdSBjYW4gY29uZmlndXJlIHdoaWNoIGZpbGUgdGhlIGRyaXZlciBcIiArIFwic2hvdWxkIHVzZSB0byBzdG9yZSB0aGlzIGluZm9ybWF0aW9uIGJ5IHNldHRpbmcgYGtub3duSG9zdHNgIHRvIGFub3RoZXIgcGF0aCBpbiBcIiArIFwieW91ciBkcml2ZXIgY29uZmlndXJhdGlvbiAtIGFuZCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiB0aGVyZSBhcyB3ZWxsIHVzaW5nIFwiICsgXCJgZW5jcnlwdGVkOmZhbHNlYC5cIikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb25uZWN0KG9wdHMsIG9uU3VjY2Vzcykge1xuICB2YXIgb25GYWlsdXJlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9IDogYXJndW1lbnRzWzJdO1xuXG4gIGlmIChvcHRzLmVuY3J5cHRlZCA9PT0gZmFsc2UpIHtcbiAgICB2YXIgY29ubiA9IF9uZXQyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgb25TdWNjZXNzKTtcbiAgICBjb25uLm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIGNvbm47XG4gIH0gZWxzZSBpZiAoVHJ1c3RTdHJhdGVneVtvcHRzLnRydXN0XSkge1xuICAgIHJldHVybiBUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcbiAgfSBlbHNlIHtcbiAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIHRydXN0IHN0cmF0ZWd5OiBcIiArIG9wdHMudHJ1c3QgKyBcIi4gUGxlYXNlIHVzZSBlaXRoZXIgXCIgKyBcInRydXN0OidUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTJyBvciB0cnVzdDonVFJVU1RfT05fRklSU1RfVVNFJyBpbiB5b3VyIGRyaXZlciBcIiArIFwiY29uZmlndXJhdGlvbi4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpmYWxzZWAuIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSB0byB1c2UgZW5jcnlwdGlvbiB3aXRob3V0IHRydXN0IHZlcmlmaWNhdGlvbiwgXCIgKyBcImJlY2F1c2UgdGhpcyBpbmN1cnMgdGhlIG92ZXJoZWFkIG9mIGVuY3J5cHRpb24gd2l0aG91dCBpbXByb3Zpbmcgc2VjdXJpdHkuIElmIFwiICsgXCJ0aGUgZHJpdmVyIGRvZXMgbm90IHZlcmlmeSB0aGF0IHRoZSBwZWVyIGl0IGlzIGNvbm5lY3RlZCB0byBpcyByZWFsbHkgTmVvNGosIGl0IFwiICsgXCJpcyB2ZXJ5IGVhc3kgZm9yIGFuIGF0dGFja2VyIHRvIGJ5cGFzcyB0aGUgZW5jcnlwdGlvbiBieSBwcmV0ZW5kaW5nIHRvIGJlIE5lbzRqLlwiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbiBhIE5vZGUuanMgZW52aXJvbm1lbnQgdGhlICduZXQnIG1vZHVsZSBpcyB1c2VkXG4gKiBhcyB0cmFuc3BvcnQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgTm9kZUNoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIE5vZGVDaGFubmVsKG9wdHMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUNoYW5uZWwpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5pZCA9IF9DT05ORUNUSU9OX0lER0VOKys7XG4gICAgdGhpcy5hdmFpbGFibGUgPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubmVjdChvcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNlbGYuX29wZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLl9jb25uLm9uKCdkYXRhJywgZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgICBzZWxmLm9ubWVzc2FnZShuZXcgX2J1Zi5Ob2RlQnVmZmVyKGJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VsZi5fY29ubi5vbignZXJyb3InLCBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuXG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGVDaGFubmVsLCBbe1xuICAgIGtleTogJ19oYW5kbGVDb25uZWN0aW9uRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKGVycikge1xuICAgICAgdGhpcy5fZXJyb3IgPSBlcnI7XG4gICAgICBpZiAodGhpcy5vbmVycm9yKSB7XG4gICAgICAgIHRoaXMub25lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRoZSBwYXNzZWQgaW4gYnVmZmVyIHRvIGNvbm5lY3Rpb25cbiAgICAgKiBAcGFyYW0ge05vZGVCdWZmZXJ9IGJ1ZmZlciAtIEJ1ZmZlciB0byB3cml0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnd3JpdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5Ob2RlQnVmZmVyKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCBcIltDb25uI1wiK3RoaXMuaWQrXCJdIFNFTkQ6IFwiLCBidWZmZXIudG9TdHJpbmcoKSApO1xuICAgICAgICB0aGlzLl9jb25uLndyaXRlKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gd3JpdGU6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB2YXIgY2IgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuX2Nvbm4pIHtcbiAgICAgICAgdGhpcy5fY29ubi5lbmQoKTtcbiAgICAgICAgdGhpcy5fY29ubi5vbignZW5kJywgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZUNoYW5uZWw7XG59KSgpO1xuXG52YXIgX25vZGVDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBOb2RlQ2hhbm5lbCwgYXZhaWxhYmxlOiB0cnVlIH07XG5cbnRyeSB7XG4gIC8vIE9ubHkgZGVmaW5lIHRoaXMgbW9kdWxlIGlmICduZXQnIGlzIGF2YWlsYWJsZVxuICByZXF1aXJlLnJlc29sdmUoXCJuZXRcIik7XG59IGNhdGNoIChlKSB7XG4gIF9ub2RlQ2hhbm5lbE1vZHVsZSA9IHsgYXZhaWxhYmxlOiBmYWxzZSB9O1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBfbm9kZUNoYW5uZWxNb2R1bGU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9sb2cgPSByZXF1aXJlKFwiLi9sb2dcIik7XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBXZWJTb2NrZXRDaGFubmVsIHRvIGJlIHVzZWQgaW4gd2ViIGJyb3dzZXJzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIFdlYlNvY2tldENoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFdlYlNvY2tldENoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJTb2NrZXRDaGFubmVsKTtcblxuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB2YXIgc2NoZW1lID0gXCJ3c1wiO1xuICAgIGlmIChvcHRzLmVuY3J5cHRlZCkge1xuICAgICAgaWYgKCFvcHRzLnRydXN0IHx8IG9wdHMudHJ1c3QgPT09IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSB7XG4gICAgICAgIHNjaGVtZSA9IFwid3NzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhlIGJyb3dzZXIgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIG9uZSB0cnVzdCBcIiArIFwic3RyYXRlZ3ksICdUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTJy4gXCIgKyBvcHRzLnRydXN0ICsgXCIgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIFwiICsgXCJlaXRoZXIgdXNlIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIGJ5IHNldHRpbmcgXCIgKyBcImBlbmNyeXB0ZWQ6ZmFsc2VgIGluIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXJsID0gc2NoZW1lICsgXCI6Ly9cIiArIG9wdHMuaG9zdCArIFwiOlwiICsgb3B0cy5wb3J0O1xuICAgIHRoaXMuX3dzID0gbmV3IFdlYlNvY2tldCh0aGlzLl91cmwpO1xuICAgIHRoaXMuX3dzLmJpbmFyeVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgLy9BbGwgY29ubmVjdGlvbiBlcnJvcnMgYXJlIG5vdCBzZW50IHRvIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgLy93ZSBtdXN0IGFsc28gY2hlY2sgZm9yIGRpcnR5IGNsb3NlIGNhbGxzXG4gICAgdGhpcy5fd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWUud2FzQ2xlYW4pIHtcbiAgICAgICAgc2VsZi5faGFuZGxlQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl93cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHNlbGYub25tZXNzYWdlKSB7XG4gICAgICAgIHZhciBiID0gbmV3IF9idWYuSGVhcEJ1ZmZlcihldmVudC5kYXRhKTtcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UoYik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuX3dzLm9uZXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3I7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViU29ja2V0Q2hhbm5lbCwgW3tcbiAgICBrZXk6IFwiX2hhbmRsZUNvbm5lY3Rpb25FcnJvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKCkge1xuICAgICAgLy8gb25lcnJvciB0cmlnZ2VycyBvbiB3ZWJzb2NrZXQgY2xvc2UgYXMgd2VsbC4uIGRvbid0IGdldCBtZSBzdGFydGVkLlxuICAgICAgaWYgKHRoaXMuX29wZW4pIHtcbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTc3OTgzMS9ob3ctdG8tY2F0Y2gtd2Vic29ja2V0LWNvbm5lY3Rpb24tdG8td3MteHh4bm4tZmFpbGVkLWNvbm5lY3Rpb24tY2xvc2VkLWJlXG4gICAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoXCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsdXJlLiBEdWUgdG8gc2VjdXJpdHkgXCIgKyBcImNvbnN0cmFpbnRzIGluIHlvdXIgd2ViIGJyb3dzZXIsIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlIGlzIG5vdCBhdmFpbGFibGUgXCIgKyBcInRvIHRoaXMgTmVvNGogRHJpdmVyLiBQbGVhc2UgdXNlIHlvdXIgYnJvd3NlcnMgZGV2ZWxvcG1lbnQgY29uc29sZSB0byBkZXRlcm1pbmUgXCIgKyBcInRoZSByb290IGNhdXNlIG9mIHRoZSBmYWlsdXJlLiBDb21tb24gcmVhc29ucyBpbmNsdWRlIHRoZSBkYXRhYmFzZSBiZWluZyBcIiArIFwidW5hdmFpbGFibGUsIHVzaW5nIHRoZSB3cm9uZyBjb25uZWN0aW9uIFVSTCBvciB0ZW1wb3JhcnkgbmV0d29yayBwcm9ibGVtcy4gXCIgKyBcIklmIHlvdSBoYXZlIGVuYWJsZWQgZW5jcnlwdGlvbiwgZW5zdXJlIHlvdXIgYnJvd3NlciBpcyBjb25maWd1cmVkIHRvIHRydXN0IHRoZSBcIiArIFwiY2VydGlmaWNhdGUgTmVvNGogaXMgY29uZmlndXJlZCB0byB1c2UuIFdlYlNvY2tldCBgcmVhZHlTdGF0ZWAgaXM6IFwiICsgdGhpcy5fd3MucmVhZHlTdGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7SGVhcEJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmZmVyKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcXVldWUsIHB1c2ggdGhpcyBvbiB0aGF0IHF1ZXVlLiBUaGlzIG1lYW5zXG4gICAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYuSGVhcEJ1ZmZlcikge1xuICAgICAgICB0aGlzLl93cy5zZW5kKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gc2VuZCBidWZmZXI6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJjbG9zZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl93cy5jbG9zZSgpO1xuICAgICAgdGhpcy5fd3Mub25jbG9zZSA9IGNiO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJTb2NrZXRDaGFubmVsO1xufSkoKTtcblxudmFyIGF2YWlsYWJsZSA9IHR5cGVvZiBXZWJTb2NrZXQgIT09ICd1bmRlZmluZWQnO1xudmFyIF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBXZWJTb2NrZXRDaGFubmVsLCBhdmFpbGFibGU6IGF2YWlsYWJsZSB9O1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfYnVmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1Zik7XG5cbnZhciBfQ0hVTktfSEVBREVSX1NJWkUgPSAyLFxuICAgIF9NRVNTQUdFX0JPVU5EQVJZID0gMHgwMCxcbiAgICBfREVGQVVMVF9CVUZGRVJfU0laRSA9IDE0MDA7IC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYxMzczNC9tYXhpbXVtLXBhY2tldC1zaXplLWZvci1hLXRjcC1jb25uZWN0aW9uXG5cbi8qKlxuICogTG9va3MgbGlrZSBhIHdyaXRhYmxlIGJ1ZmZlciwgY2h1bmtzIG91dHB1dCB0cmFuc3BhcmVudGx5IGludG8gYSBjaGFubmVsIGJlbG93LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIENodW5rZXIgPSAoZnVuY3Rpb24gKF9idWYkQmFzZUJ1ZmZlcikge1xuICBfaW5oZXJpdHMoQ2h1bmtlciwgX2J1ZiRCYXNlQnVmZmVyKTtcblxuICBmdW5jdGlvbiBDaHVua2VyKGNoYW5uZWwsIGJ1ZmZlclNpemUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2h1bmtlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihDaHVua2VyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcywgMCk7XG4gICAgdGhpcy5fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemUgfHwgX0RFRkFVTFRfQlVGRkVSX1NJWkU7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2J1ZmZlciA9IF9idWYyWydkZWZhdWx0J10uYWxsb2ModGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5fY3VycmVudENodW5rU3RhcnQgPSAwO1xuICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmVzIGNodW5rcyB1bnRpbCBhIGNvbXBsZXRlIG1lc3NhZ2UgaXMgZ2F0aGVyZWQgdXAsIGFuZCB0aGVuIGZvcndhcmRzIHRoYXRcbiAgICogbWVzc2FnZSB0byBhbiAnb25tZXNzYWdlJyBsaXN0ZW5lci5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhDaHVua2VyLCBbe1xuICAgIGtleTogJ3B1dFVJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0RmxvYXQ2NCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDgpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlRmxvYXQ2NCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEJ5dGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIGRhdGEpIHtcbiAgICAgIC8vIFRPRE86IElmIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3VyIGNodW5rIHNpemUgb3Igc28sIHdlJ3JlIHZlcnkgbGlrZWx5IGJldHRlciBvZmYganVzdCBwYXNzaW5nIHRoaXMgYnVmZmVyIG9uXG4gICAgICAvLyByYXRoZXIgdGhhbiBkb2luZyB0aGUgY29weSBoZXJlIFRPRE86ICpob3dldmVyKiBub3RlIHRoYXQgd2UgbmVlZCBzb21lIHdheSB0byBmaW5kIG91dCB3aGVuIHRoZSBkYXRhIGhhcyBiZWVuXG4gICAgICAvLyB3cml0dGVuIChhbmQgdGh1cyB0aGUgYnVmZmVyIGNhbiBiZSByZS11c2VkKSBpZiB3ZSB0YWtlIHRoYXQgYXBwcm9hY2hcbiAgICAgIHdoaWxlIChkYXRhLnJlbWFpbmluZygpID4gMCkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlcmUgaXMgYW4gb3BlbiBjaHVuaywgYW5kIHRoYXQgaXQgaGFzIGF0IGxlYXN0IG9uZSBieXRlIG9mIHNwYWNlIGxlZnRcbiAgICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpID4gZGF0YS5yZW1haW5pbmcoKSkge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEucmVhZFNsaWNlKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdmbHVzaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5wb3NpdGlvbiA+IDApIHtcbiAgICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICAgIC8vIExvY2FsIGNvcHkgYW5kIGNsZWFyIHRoZSBidWZmZXIgZmllbGQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBidWZmZXIgaXMgbm90IHJlLXJlbGVhc2VkIGlmIHRoZSBmbHVzaCBjYWxsIGZhaWxzXG4gICAgICAgIHZhciBvdXQgPSB0aGlzLl9idWZmZXI7XG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fY2gud3JpdGUob3V0LmdldFNsaWNlKDAsIG91dC5wb3NpdGlvbikpO1xuXG4gICAgICAgIC8vIEFsbG9jIGEgbmV3IG91dHB1dCBidWZmZXIuIFdlIGFzc3VtZSB3ZSdyZSB1c2luZyBOb2RlSlMncyBidWZmZXIgcG9vbGluZyB1bmRlciB0aGUgaG9vZCBoZXJlIVxuICAgICAgICB0aGlzLl9idWZmZXIgPSBfYnVmMlsnZGVmYXVsdCddLmFsbG9jKHRoaXMuX2J1ZmZlclNpemUpO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJvbHQgbWVzc2FnZXMgYXJlIGVuY29kZWQgaW4gb25lIG9yIG1vcmUgY2h1bmtzLCBhbmQgdGhlIGJvdW5kYXJ5IGJldHdlZW4gdHdvIG1lc3NhZ2VzXG4gICAgICogaXMgZW5jb2RlZCBhcyBhIDAtbGVuZ3RoIGNodW5rLCBgMDAgMDBgLiBUaGlzIGluc2VydHMgc3VjaCBhIG1lc3NhZ2UgYm91bmRhcnksIGNsb3NpbmdcbiAgICAgKiBhbnkgY3VycmVudGx5IG9wZW4gY2h1bmsgYXMgbmVlZGVkXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtZXNzYWdlQm91bmRhcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZXNzYWdlQm91bmRhcnkoKSB7XG5cbiAgICAgIHRoaXMuX2Nsb3NlQ2h1bmtJZk9wZW4oKTtcblxuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSA8IF9DSFVOS19IRUFERVJfU0laRSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdyaXRlIG1lc3NhZ2UgYm91bmRhcnlcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDE2KF9NRVNTQUdFX0JPVU5EQVJZKTtcbiAgICB9XG5cbiAgICAvKiogRW5zdXJlIGF0IGxlYXN0IHRoZSBnaXZlbiBzaXplIGlzIGF2YWlsYWJsZSBmb3Igd3JpdGluZyAqL1xuICB9LCB7XG4gICAga2V5OiAnX2Vuc3VyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lbnN1cmUoc2l6ZSkge1xuICAgICAgdmFyIHRvV3JpdGVTaXplID0gdGhpcy5fY2h1bmtPcGVuID8gc2l6ZSA6IHNpemUgKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgdG9Xcml0ZVNpemUpIHtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2NodW5rT3Blbikge1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fYnVmZmVyLnBvc2l0aW9uID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uICsgX0NIVU5LX0hFQURFUl9TSVpFO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jbG9zZUNodW5rSWZPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Nsb3NlQ2h1bmtJZk9wZW4oKSB7XG4gICAgICBpZiAodGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHZhciBjaHVua1NpemUgPSB0aGlzLl9idWZmZXIucG9zaXRpb24gLSAodGhpcy5fY3VycmVudENodW5rU3RhcnQgKyBfQ0hVTktfSEVBREVSX1NJWkUpO1xuICAgICAgICB0aGlzLl9idWZmZXIucHV0VUludDE2KHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0LCBjaHVua1NpemUpO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2h1bmtlcjtcbn0pKF9idWYyWydkZWZhdWx0J10uQmFzZUJ1ZmZlcik7XG5cbnZhciBEZWNodW5rZXIgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEZWNodW5rZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERlY2h1bmtlcik7XG5cbiAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgIHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciA9IDA7XG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKERlY2h1bmtlciwgW3tcbiAgICBrZXk6ICdBV0FJVElOR19DSFVOSycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIEFXQUlUSU5HX0NIVU5LKGJ1Zikge1xuICAgICAgaWYgKGJ1Zi5yZW1haW5pbmcoKSA+PSAyKSB7XG4gICAgICAgIC8vIFdob2xlIGhlYWRlciBhdmFpbGFibGUsIHJlYWQgdGhhdFxuICAgICAgICByZXR1cm4gdGhpcy5fb25IZWFkZXIoYnVmLnJlYWRVSW50MTYoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPbmx5IG9uZSBieXRlIGF2YWlsYWJsZSwgcmVhZCB0aGF0IGFuZCB3YWl0IGZvciB0aGUgc2Vjb25kIGJ5dGVcbiAgICAgICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gYnVmLnJlYWRVSW50OCgpIDw8IDg7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0hFQURFUjtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdJTl9IRUFERVInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBJTl9IRUFERVIoYnVmKSB7XG4gICAgICAvLyBGaXJzdCBoZWFkZXIgYnl0ZSByZWFkLCBub3cgd2UgcmVhZCB0aGUgbmV4dCBvbmVcbiAgICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcigodGhpcy5fcGFydGlhbENodW5rSGVhZGVyIHwgYnVmLnJlYWRVSW50OCgpKSAmIDB4RkZGRik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnSU5fQ0hVTksnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBJTl9DSFVOSyhidWYpIHtcbiAgICAgIGlmICh0aGlzLl9jaHVua1NpemUgPD0gYnVmLnJlbWFpbmluZygpKSB7XG4gICAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIGxhcmdlciB0aGFuIGN1cnJlbnQgY2h1bmssIG9yIHNhbWUgc2l6ZTpcbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKHRoaXMuX2NodW5rU2l6ZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIHNtYWxsZXIgdGhhbiB0aGUgY2h1bmsgd2UncmUgcmVhZGluZywgc3BsaXQgdGhlIGN1cnJlbnQgY2h1bmsgaXRzZWxmIHVwXG4gICAgICAgIHRoaXMuX2NodW5rU2l6ZSAtPSBidWYucmVtYWluaW5nKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlLnB1c2goYnVmLnJlYWRTbGljZShidWYucmVtYWluaW5nKCkpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnQ0xPU0VEJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQ0xPU0VEKGJ1Zikge31cbiAgICAvLyBuby1vcFxuXG4gICAgLyoqIENhbGxlZCB3aGVuIGEgY29tcGxldGUgY2h1bmsgaGVhZGVyIGhhcyBiZWVuIHJlY2lldmVkICovXG5cbiAgfSwge1xuICAgIGtleTogJ19vbkhlYWRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vbkhlYWRlcihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIgPT0gMCkge1xuICAgICAgICAvLyBNZXNzYWdlIGJvdW5kYXJ5XG4gICAgICAgIHZhciBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudE1lc3NhZ2UubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5fY3VycmVudE1lc3NhZ2VbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG5ldyBfYnVmMlsnZGVmYXVsdCddLkNvbWJpbmVkQnVmZmVyKHRoaXMuX2N1cnJlbnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgICAgICB0aGlzLm9ubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaHVua1NpemUgPSBoZWFkZXI7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0NIVU5LO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmKSB7XG4gICAgICB3aGlsZSAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fc3RhdGUoYnVmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRGVjaHVua2VyO1xufSkoKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBDaHVua2VyOiBDaHVua2VyLFxuICBEZWNodW5rZXI6IERlY2h1bmtlclxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9jaFdlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2NoLXdlYnNvY2tldFwiKTtcblxudmFyIF9jaFdlYnNvY2tldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaFdlYnNvY2tldCk7XG5cbnZhciBfY2hOb2RlID0gcmVxdWlyZShcIi4vY2gtbm9kZVwiKTtcblxudmFyIF9jaE5vZGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2hOb2RlKTtcblxudmFyIF9jaHVua2luZyA9IHJlcXVpcmUoXCIuL2NodW5raW5nXCIpO1xuXG52YXIgX2NodW5raW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NodW5raW5nKTtcblxudmFyIF9mZWF0dXJlcyA9IHJlcXVpcmUoXCIuL2ZlYXR1cmVzXCIpO1xuXG52YXIgX2ZlYXR1cmVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZlYXR1cmVzKTtcblxudmFyIF9wYWNrc3RyZWFtID0gcmVxdWlyZShcIi4vcGFja3N0cmVhbVwiKTtcblxudmFyIF9wYWNrc3RyZWFtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhY2tzdHJlYW0pO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoXCIuL2J1ZlwiKTtcblxudmFyIF9ncmFwaFR5cGVzID0gcmVxdWlyZSgnLi4vZ3JhcGgtdHlwZXMnKTtcblxudmFyIF9ncmFwaFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dyYXBoVHlwZXMpO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlZ2VyJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBDaGFubmVsID0gdW5kZWZpbmVkO1xuaWYgKF9jaFdlYnNvY2tldDJbXCJkZWZhdWx0XCJdLmF2YWlsYWJsZSkge1xuICBDaGFubmVsID0gX2NoV2Vic29ja2V0MltcImRlZmF1bHRcIl0uY2hhbm5lbDtcbn0gZWxzZSBpZiAoX2NoTm9kZTJbXCJkZWZhdWx0XCJdLmF2YWlsYWJsZSkge1xuICBDaGFubmVsID0gX2NoTm9kZTJbXCJkZWZhdWx0XCJdLmNoYW5uZWw7XG59IGVsc2Uge1xuICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkZhdGFsOiBObyBjb21wYXRpYmxlIHRyYW5zcG9ydCBhdmFpbGFibGUuIE5lZWQgdG8gcnVuIG9uIGEgcGxhdGZvcm0gd2l0aCB0aGUgV2ViU29ja2V0IEFQSS5cIik7XG59XG5cbnZhclxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBlYWNoIG1lc3NhZ2UgdHlwZVxuSU5JVCA9IDB4MDEsXG4gICAgLy8gMDAwMCAwMDAxIC8vIElOSVQgPHVzZXJfYWdlbnQ+XG5BQ0tfRkFJTFVSRSA9IDB4MEUsXG4gICAgLy8gMDAwMCAxMTEwIC8vIEFDS19GQUlMVVJFXG5SRVNFVCA9IDB4MEYsXG4gICAgLy8gMDAwMCAxMTExIC8vIFJFU0VUXG5SVU4gPSAweDEwLFxuICAgIC8vIDAwMDEgMDAwMCAvLyBSVU4gPHN0YXRlbWVudD4gPHBhcmFtZXRlcnM+XG5ESVNDQVJEX0FMTCA9IDB4MkYsXG4gICAgLy8gMDAxMCAxMTExIC8vIERJU0NBUkQgKlxuUFVMTF9BTEwgPSAweDNGLFxuICAgIC8vIDAwMTEgMTExMSAvLyBQVUxMICpcblNVQ0NFU1MgPSAweDcwLFxuICAgIC8vIDAxMTEgMDAwMCAvLyBTVUNDRVNTIDxtZXRhZGF0YT5cblJFQ09SRCA9IDB4NzEsXG4gICAgLy8gMDExMSAwMDAxIC8vIFJFQ09SRCA8dmFsdWU+XG5JR05PUkVEID0gMHg3RSxcbiAgICAvLyAwMTExIDExMTAgLy8gSUdOT1JFRCA8bWV0YWRhdGE+XG5GQUlMVVJFID0gMHg3RixcbiAgICAvLyAwMTExIDExMTEgLy8gRkFJTFVSRSA8bWV0YWRhdGE+XG5cbi8vIFNpZ25hdHVyZSBieXRlcyBmb3IgaGlnaGVyLWxldmVsIGdyYXBoIG9iamVjdHNcbk5PREUgPSAweDRFLFxuICAgIFJFTEFUSU9OU0hJUCA9IDB4NTIsXG4gICAgVU5CT1VORF9SRUxBVElPTlNISVAgPSAweDcyLFxuICAgIFBBVEggPSAweDUwLFxuXG4vL3NlbnQgYmVmb3JlIHZlcnNpb24gbmVnb3RpYXRpb25cbk1BR0lDX1BSRUFNQkxFID0gMHg2MDYwQjAxNztcblxudmFyIFVSTFJFR0VYID0gbmV3IFJlZ0V4cChbXCJbXi9dKy8vXCIsIC8vIHNjaGVtZVxuXCIoKFteOi8/I10qKVwiLCAvLyBob3N0bmFtZVxuXCIoPzo6KFswLTldKykpPylcIiwgLy8gcG9ydCAob3B0aW9uYWwpXG5cIi4qXCJdLmpvaW4oXCJcIikpOyAvLyBldmVyeXRoaW5nIGVsc2VcblxuZnVuY3Rpb24gaG9zdCh1cmwpIHtcbiAgcmV0dXJuIHVybC5tYXRjaChVUkxSRUdFWClbMl07XG59XG5cbmZ1bmN0aW9uIHBvcnQodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goVVJMUkVHRVgpWzNdO1xufVxuXG5mdW5jdGlvbiBOT19PUCgpIHt9XG5cbnZhciBOT19PUF9PQlNFUlZFUiA9IHtcbiAgb25OZXh0OiBOT19PUCxcbiAgb25Db21wbGV0ZWQ6IE5PX09QLFxuICBvbkVycm9yOiBOT19PUFxufTtcblxuLyoqIE1hcHMgZnJvbSBwYWNrc3RyZWFtIHN0cnVjdHVyZXMgdG8gTmVvNGogZG9tYWluIG9iamVjdHMgKi9cbnZhciBfbWFwcGVycyA9IHtcbiAgbm9kZTogZnVuY3Rpb24gbm9kZSh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLk5vZGUodW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIExhYmVsc1xuICAgIHVucGFja2VyLnVucGFjayhidWYpIC8vIFByb3BlcnRpZXNcbiAgICApO1xuICB9LFxuICByZWw6IGZ1bmN0aW9uIHJlbCh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlJlbGF0aW9uc2hpcCh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gU3RhcnQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBFbmQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHVuYm91bmRSZWw6IGZ1bmN0aW9uIHVuYm91bmRSZWwodW5wYWNrZXIsIGJ1Zikge1xuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5VbmJvdW5kUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHBhdGg6IGZ1bmN0aW9uIHBhdGgodW5wYWNrZXIsIGJ1Zikge1xuICAgIHZhciBub2RlcyA9IHVucGFja2VyLnVucGFjayhidWYpLFxuICAgICAgICByZWxzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHNlcXVlbmNlID0gdW5wYWNrZXIudW5wYWNrKGJ1Zik7XG4gICAgdmFyIHByZXZOb2RlID0gbm9kZXNbMF0sXG4gICAgICAgIHNlZ21lbnRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcXVlbmNlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgcmVsSW5kZXggPSBzZXF1ZW5jZVtpXSxcbiAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGVzW3NlcXVlbmNlW2kgKyAxXV0sXG4gICAgICAgICAgcmVsID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHJlbEluZGV4ID4gMCkge1xuICAgICAgICByZWwgPSByZWxzW3JlbEluZGV4IC0gMV07XG4gICAgICAgIGlmIChyZWwgaW5zdGFuY2VvZiBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlVuYm91bmRSZWxhdGlvbnNoaXApIHtcbiAgICAgICAgICAvLyBUbyBhdm9pZCBkdXBsaWNhdGlvbiwgcmVsYXRpb25zaGlwcyBpbiBhIHBhdGggZG8gbm90IGNvbnRhaW5cbiAgICAgICAgICAvLyBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBzdGFydCBhbmQgZW5kIG5vZGVzLCB0aGF0J3MgaW5zdGVhZFxuICAgICAgICAgIC8vIGluZmVycmVkIGZyb20gdGhlIHBhdGggc2VxdWVuY2UuIFRoaXMgaXMgdXMgaW5mZXJyaW5nIChhbmQsXG4gICAgICAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgcmVtZW1iZXJpbmcpIHRoZSBzdGFydC9lbmQgb2YgYSByZWwuXG4gICAgICAgICAgcmVsc1tyZWxJbmRleCAtIDFdID0gcmVsID0gcmVsLmJpbmQocHJldk5vZGUuaWRlbnRpdHksIG5leHROb2RlLmlkZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsID0gcmVsc1stcmVsSW5kZXggLSAxXTtcbiAgICAgICAgaWYgKHJlbCBpbnN0YW5jZW9mIF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFNlZSBhYm92ZVxuICAgICAgICAgIHJlbHNbLXJlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChuZXh0Tm9kZS5pZGVudGl0eSwgcHJldk5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBEb25lIGh5ZHJhdGluZyBvbmUgcGF0aCBzZWdtZW50LlxuICAgICAgc2VnbWVudHMucHVzaChuZXcgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5QYXRoU2VnbWVudChwcmV2Tm9kZSwgcmVsLCBuZXh0Tm9kZSkpO1xuICAgICAgcHJldk5vZGUgPSBuZXh0Tm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlBhdGgobm9kZXNbMF0sIG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdLCBzZWdtZW50cyk7XG4gIH1cbn07XG5cbi8qKlxuICogQSBjb25uZWN0aW9uIG1hbmFnZXMgc2VuZGluZyBhbmQgcmVjaWV2aW5nIG1lc3NhZ2VzIG92ZXIgYSBjaGFubmVsLiBBXG4gKiBjb25uZWN0b3IgaXMgdmVyeSBjbG9zZWx5IHRpZWQgdG8gdGhlIEJvbHQgcHJvdG9jb2wsIGl0IGltcGxlbWVudHMgdGhlXG4gKiBzYW1lIG1lc3NhZ2Ugc3RydWN0dXJlIHdpdGggdmVyeSBsaXR0bGUgZnJpbGxzLiBUaGlzIG1lYW5zIENvbm5lY3RvcnMgYXJlXG4gKiBuYXR1cmFsbHkgdGllZCB0byBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLCBhbmQgd2UgZXhwZWN0XG4gKiBhbm90aGVyIGxheWVyIHdpbGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMuXG4gKlxuICogVGhlIGNvbm5lY3RvciB0cmllcyB0byBiYXRjaCBvdXRib3VuZCBtZXNzYWdlcyBieSByZXF1aXJpbmcgaXRzIHVzZXJzXG4gKiB0byBjYWxsICdzeW5jJyB3aGVuIG1lc3NhZ2VzIG5lZWQgdG8gYmUgc2VudCwgYW5kIGl0IHJvdXRlcyByZXNwb25zZVxuICogbWVzc2FnZXMgYmFjayB0byB0aGUgb3JpZ2luYXRvcnMgb2YgdGhlIHJlcXVlc3RzIHRoYXQgY3JlYXRlZCB0aG9zZVxuICogcmVzcG9uc2UgbWVzc2FnZXMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgQ29ubmVjdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHdpdGggYSAnd3JpdGUnIGZ1bmN0aW9uIGFuZCBhICdvbm1lc3NhZ2UnXG4gICAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgcHJvcGVydHlcbiAgICovXG5cbiAgZnVuY3Rpb24gQ29ubmVjdGlvbihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbm5lY3Rpb24pO1xuXG4gICAgLyoqXG4gICAgICogQW4gb3JkZXJlZCBxdWV1ZSBvZiBvYnNlcnZlcnMsIGVhY2ggZXhjaGFuZ2UgcmVzcG9uc2UgKHplcm8gb3IgbW9yZVxuICAgICAqIFJFQ09SRCBtZXNzYWdlcyBmb2xsb3dlZCBieSBhIFNVQ0NFU1MgbWVzc2FnZSkgd2UgcmVjaWV2ZSB3aWxsIGJlIHJvdXRlZFxuICAgICAqIHRvIHRoZSBuZXh0IHBlbmRpbmcgb2JzZXJ2ZXIuXG4gICAgICovXG4gICAgdGhpcy5fcGVuZGluZ09ic2VydmVycyA9IFtdO1xuICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fZGVjaHVua2VyID0gbmV3IF9jaHVua2luZzJbXCJkZWZhdWx0XCJdLkRlY2h1bmtlcigpO1xuICAgIHRoaXMuX2NodW5rZXIgPSBuZXcgX2NodW5raW5nMltcImRlZmF1bHRcIl0uQ2h1bmtlcihjaGFubmVsKTtcbiAgICB0aGlzLl9wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0yW1wiZGVmYXVsdFwiXS5QYWNrZXIodGhpcy5fY2h1bmtlcik7XG4gICAgdGhpcy5fdW5wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0yW1wiZGVmYXVsdFwiXS5VbnBhY2tlcigpO1xuICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgICAvLyBTZXQgdG8gdHJ1ZSBvbiBmYXRhbCBlcnJvcnMsIHRvIGdldCB0aGlzIG91dCBvZiBzZXNzaW9uIHBvb2wuXG4gICAgdGhpcy5faXNCcm9rZW4gPSBmYWxzZTtcblxuICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24sIGV4cGxhaW4gdG8gdGhlIHVucGFja2VyIGhvdyB0byB1bnBhY2sgbm9kZXMsIHJlbHMsIHBhdGhzO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbTk9ERV0gPSBfbWFwcGVycy5ub2RlO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUkVMQVRJT05TSElQXSA9IF9tYXBwZXJzLnJlbDtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1VOQk9VTkRfUkVMQVRJT05TSElQXSA9IF9tYXBwZXJzLnVuYm91bmRSZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tQQVRIXSA9IF9tYXBwZXJzLnBhdGg7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgLy8gVE9ETzogVXNpbmcgYG9ubWVzc2FnZWAgYW5kIGBvbmVycm9yYCBjYW1lIGZyb20gdGhlIFdlYlNvY2tldCBBUEksXG4gICAgLy8gaXQgcmVhZHMgcG9vcmx5IGFuZCBoYXMgc2V2ZXJhbCBhbm5veWluZyBkcmF3YmFja3MuIFN3YXAgdG8gaGF2aW5nXG4gICAgLy8gQ2hhbm5lbCBleHRlbmQgRXZlbnRFbWl0dGVyIGluc3RlYWQsIHRoZW4gd2UgY2FuIHVzZSBgb24oJ2RhdGEnLC4uKWBcbiAgICB0aGlzLl9jaC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICB2YXIgcHJvcG9zZWQgPSBidWYucmVhZEludDMyKCk7XG4gICAgICBpZiAocHJvcG9zZWQgPT0gMSkge1xuICAgICAgICAvLyBPaywgcHJvdG9jb2wgcnVubmluZy4gU2ltcGx5IGZvcndhcmQgYWxsIG1lc3NhZ2VzIHBhc3RcbiAgICAgICAgLy8gdGhpcyB0byB0aGUgZGVjaHVua2VyXG4gICAgICAgIHNlbGYuX2NoLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgICAgICBzZWxmLl9kZWNodW5rZXIud3JpdGUoYnVmKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zi5yZWFkU2xpY2UoYnVmLnJlbWFpbmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJvcG9zZWQgPT0gMTIxMzQ4NjE2MCkge1xuICAgICAgICAvL3NlcnZlciByZXNwb25kZWQgMTIxMzQ4NjE2MCA9PSAweDQ4NTQ1NDUwID09IFwiSFRUUFwiXG4gICAgICAgIHNlbGYuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgcmVzcG9uZGVkIEhUVFAuIE1ha2Ugc3VyZSB5b3UgYXJlIG5vdCB0cnlpbmcgdG8gY29ubmVjdCB0byB0aGUgaHR0cCBlbmRwb2ludCBcIiArIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgdmVyc2lvbjogXCIgKyBwcm9wb3NlZCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gdG8gY29ubmVjdGlvbiBlcnJvcnMuIEltcG9ydGFudCBub3RlIHRob3VnaDtcbiAgICAvLyBJbiBzb21lIGNhc2VzIHdlIHdpbGwgZ2V0IGEgY2hhbm5lbCB0aGF0IGlzIGFscmVhZHkgYnJva2VuIChmb3IgaW5zdGFuY2UsXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGludmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb25zKS4gSW4gdGhpcyBjYXNlLCBvbmVycm9yXG4gICAgLy8gd2lsbCBoYXZlIFwiYWxyZWFkeSB0cmlnZ2VyZWRcIiBiZWZvcmUgd2UgYWRkIG91dCBsaXN0ZW5lciBoZXJlLiBTbyB0aGUgbGluZVxuICAgIC8vIGJlbG93IGFsc28gY2hlY2tzIHRoYXQgdGhlIGNoYW5uZWwgaXMgbm90IGFscmVhZHkgZmFpbGVkLiBUaGlzIGNvdWxkIGJlIG5pY2VseVxuICAgIC8vIGVuY2Fwc3VsYXRlZCBpbnRvIENoYW5uZWwgaWYgd2UgdXNlZCBgb24oJ2Vycm9yJywgLi4pYCByYXRoZXIgdGhhbiBgb25lcnJvcj0uLmBcbiAgICAvLyBhcyBvdXRsaW5lZCBpbiB0aGUgY29tbWVudCBhYm91dCBgb25tZXNzYWdlYCBmdXJ0aGVyIHVwIGluIHRoaXMgZmlsZS5cbiAgICB0aGlzLl9jaC5vbmVycm9yID0gdGhpcy5faGFuZGxlRmF0YWxFcnJvci5iaW5kKHRoaXMpO1xuICAgIGlmICh0aGlzLl9jaC5fZXJyb3IpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IodGhpcy5fY2guX2Vycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgc2VsZi5faGFuZGxlTWVzc2FnZShzZWxmLl91bnBhY2tlci51bnBhY2soYnVmKSk7XG4gICAgfTtcblxuICAgIHZhciBoYW5kc2hha2UgPSAoMCwgX2J1Zi5hbGxvYykoNSAqIDQpO1xuICAgIC8vbWFnaWMgcHJlYW1ibGVcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMihNQUdJQ19QUkVBTUJMRSk7XG4gICAgLy9wcm9wb3NlZCB2ZXJzaW9uc1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDEpO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS5yZXNldCgpO1xuICAgIHRoaXMuX2NoLndyaXRlKGhhbmRzaGFrZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JldGUgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIHByb3ZpZGVkIHVybC5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSAnbmVvNGonLXByZWZpeGVkIFVSTCB0byBOZW80aiBCb2x0IGVuZHBvaW50XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdcbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gLSBOZXcgY29ubmVjdGlvblxuICAgKi9cblxuICAvKipcbiAgICogXCJGYXRhbFwiIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGRlYWQuIE9ubHkgY2FsbCB0aGlzIGlmIHNvbWV0aGluZ1xuICAgKiBoYXBwZW5zIHRoYXQgY2Fubm90IGJlIHJlY292ZXJlZCBmcm9tLiBUaGlzIHdpbGwgbGVhZCB0byBhbGwgc3Vic2NyaWJlcnNcbiAgICogZmFpbGluZywgYW5kIHRoZSBjb25uZWN0aW9uIGdldHRpbmcgZWplY3RlZCBmcm9tIHRoZSBzZXNzaW9uIHBvb2wuXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgYW4gZXJyb3Igb2JqZWN0LCBmb3J3YXJkZWQgdG8gYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBzdWJzY3JpYmVyc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQ29ubmVjdGlvbiwgW3tcbiAgICBrZXk6IFwiX2hhbmRsZUZhdGFsRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSB7XG4gICAgICB0aGlzLl9pc0Jyb2tlbiA9IHRydWU7XG4gICAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfaGFuZGxlTWVzc2FnZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlTWVzc2FnZShtc2cpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHN3aXRjaCAobXNnLnNpZ25hdHVyZSkge1xuICAgICAgICBjYXNlIFJFQ09SRDpcbiAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25OZXh0KG1zZy5maWVsZHNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFNVQ0NFU1M6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkNvbXBsZXRlZChtc2cuZmllbGRzWzBdKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGQUlMVVJFOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihtc2cpO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JNc2cgPSBtc2c7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICAgIC8vIFRoaW5ncyBhcmUgbm93IGJyb2tlbi4gUGVuZGluZyBvYnNlcnZlcnMgd2lsbCBnZXQgRkFJTFVSRSBtZXNzYWdlcyByb3V0ZWQgdW50aWxcbiAgICAgICAgICAgIC8vIFdlIGFyZSBkb25lIGhhbmRsaW5nIHRoaXMgZmFpbHVyZS5cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gX3RoaXM7XG5cbiAgICAgICAgICAgICAgICAvLyBpc0hhbmRsaW5nRmFpbHVyZSB3YXMgZmFsc2UsIG1lYW5pbmcgdGhpcyBpcyB0aGUgZmlyc3QgZmFpbHVyZSBtZXNzYWdlXG4gICAgICAgICAgICAgICAgLy8gd2Ugc2VlIGZyb20gdGhpcyBmYWlsdXJlLiBXZSBtYXkgc2VlIHNldmVyYWwgb3RoZXJzLCBvbmUgZm9yIGVhY2ggbWVzc2FnZVxuICAgICAgICAgICAgICAgIC8vIHdlIGhhZCBcIm9wdGltaXN0aWNhbGx5XCIgYWxyZWFkeSBzZW50IGFmdGVyIHdoYXRldmVyIGl0IHdhcyB0aGF0IGZhaWxlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYW5kIG5lZWQgdG8gQUNLIHRoZSBmaXJzdCBvbmUsIHdoaWNoIGlzIHdoeSB3ZSBhcmUgdHJhY2tpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGlzIF9pc0hhbmRsaW5nRmFpbHVyZSB0aGluZy5cbiAgICAgICAgICAgICAgICBfdGhpcy5fYWNrRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgICBvbk5leHQ6IE5PX09QLFxuICAgICAgICAgICAgICAgICAgb25FcnJvcjogTk9fT1AsXG4gICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIElHTk9SRUQ6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lcnJvck1zZyAmJiB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcikgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IodGhpcy5fZXJyb3JNc2cpO2Vsc2UgaWYgKHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihtc2cpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgbWVzc2FnZTogXCIgKyBtc2cpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUXVldWUgYW4gSU5JVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdGlhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0aWFsaXplKGNsaWVudE5hbWUsIHRva2VuLCBvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChJTklULCBbY2xpZW50TmFtZSwgdG9rZW5dKTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUlVOLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJydW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCwgcGFyYW1zLCBvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSVU4sIFtzdGF0ZW1lbnQsIHBhcmFtc10pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBQVUxMX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHVsbEFsbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdWxsQWxsKG9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFBVTExfQUxMKTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgRElTQ0FSRF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcImRpc2NhcmRBbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY2FyZEFsbChvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChESVNDQVJEX0FMTCk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChvYnNlcnZlcikge1xuICAgICAgdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHdyYXBwZWRPYnMgPSB7XG4gICAgICAgIG9uTmV4dDogb2JzZXJ2ZXIgPyBvYnNlcnZlci5vbk5leHQgOiBOT19PUCxcbiAgICAgICAgb25FcnJvcjogb2JzZXJ2ZXIgPyBvYnNlcnZlci5vbkVycm9yIDogTk9fT1AsXG4gICAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiBvbkNvbXBsZXRlZCgpIHtcbiAgICAgICAgICBzZWxmLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKHdyYXBwZWRPYnMpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoUkVTRVQpO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBBQ0tfRkFJTFVSRS1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiX2Fja0ZhaWx1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Fja0ZhaWx1cmUob2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoQUNLX0ZBSUxVUkUpO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX3F1ZXVlT2JzZXJ2ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9pc0Jyb2tlbikge1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9ic2VydmVyID0gb2JzZXJ2ZXIgfHwgTk9fT1BfT0JTRVJWRVI7XG4gICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9ic2VydmVyLm9uQ29tcGxldGVkIHx8IE5PX09QO1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9ic2VydmVyLm9uRXJyb3IgfHwgTk9fT1A7XG4gICAgICBvYnNlcnZlci5vbk5leHQgPSBvYnNlcnZlci5vbk5leHQgfHwgTk9fT1A7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmNocm9uaXplIC0gZmx1c2ggYWxsIHF1ZXVlZCBvdXRnb2luZyBtZXNzYWdlcyBhbmQgcm91dGUgdGhlaXIgcmVzcG9uc2VzXG4gICAgICogdG8gdGhlaXIgcmVzcGVjdGl2ZSBoYW5kbGVycy5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJzeW5jXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN5bmMoKSB7XG4gICAgICB0aGlzLl9jaHVua2VyLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiB3b3JraW5nIGNvbmRpdGlvbiAqL1xuICB9LCB7XG4gICAga2V5OiBcImlzT3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc09wZW4oKSB7XG4gICAgICByZXR1cm4gIXRoaXMuX2lzQnJva2VuICYmIHRoaXMuX2NoLl9vcGVuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgY2xvc2Ugb24gdGhlIGNoYW5uZWwuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKGNiKSB7XG4gICAgICB0aGlzLl9jaC5jbG9zZShjYik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbm5lY3Rpb247XG59KSgpO1xuXG5mdW5jdGlvbiBjb25uZWN0KHVybCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cbiAgdmFyIENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgcmV0dXJuIG5ldyBDb25uZWN0aW9uKG5ldyBDaCh7XG4gICAgaG9zdDogaG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBvcnQodXJsKSB8fCA3Njg3LFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgZW5jcnlwdGlvbiBpZiB0cnVzdC1vbi1maXJzdC11c2UgaXMgYXZhaWxhYmxlXG4gICAgZW5jcnlwdGVkOiBjb25maWcuZW5jcnlwdGVkID09IG51bGwgPyAoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpIDogY29uZmlnLmVuY3J5cHRlZCxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIHRydXN0LW9uLWZpcnN0LXVzZSBpZiBpdCBpcyBhdmFpbGFibGVcbiAgICB0cnVzdDogY29uZmlnLnRydXN0IHx8ICgoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpID8gXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiA6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzOiBjb25maWcua25vd25Ib3N0c1xuICB9KSk7XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjb25uZWN0OiBjb25uZWN0LFxuICBDb25uZWN0aW9uOiBDb25uZWN0aW9uXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZTogZnVuY3Rpb24gdHJ1c3Rfb25fZmlyc3RfdXNlKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIGluc2FuZS4gV2UgYXJlIHZlcmlmeWluZyB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIGdldFBlZXJDZXJ0aWZpY2F0ZVxuICAgICAgLy8gdGhhdCBzdXBwb3J0cyByZWFkaW5nIHRoZSB3aG9sZSBjZXJ0aWZpY2F0ZSwgZWcgdGhpcyBjb21taXQ6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzM0NWM0MGI2XG4gICAgICB2YXIgZGVzYyA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgcmV0dXJuIGRlc2MubGVuZ3RoID49IDE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaGFzRmVhdHVyZShuYW1lKSB7XG4gIHJldHVybiBGRUFUVVJFU1tuYW1lXSAmJiBGRUFUVVJFU1tuYW1lXSgpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBoYXNGZWF0dXJlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFwiZGVidWdcIjogZnVuY3Rpb24gZGVidWcodmFsKSB7XG4gICAgY29uc29sZS5sb2codmFsKTtcbiAgfVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfdXRmOCA9IHJlcXVpcmUoXCIuL3V0ZjhcIik7XG5cbnZhciBfdXRmODIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGY4KTtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZShcIi4uL2ludGVnZXJcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBNQVhfQ0hVTktfU0laRSA9IDE2MzgzLFxuICAgIFRJTllfU1RSSU5HID0gMHg4MCxcbiAgICBUSU5ZX0xJU1QgPSAweDkwLFxuICAgIFRJTllfTUFQID0gMHhBMCxcbiAgICBUSU5ZX1NUUlVDVCA9IDB4QjAsXG4gICAgTlVMTCA9IDB4QzAsXG4gICAgRkxPQVRfNjQgPSAweEMxLFxuICAgIEZBTFNFID0gMHhDMixcbiAgICBUUlVFID0gMHhDMyxcbiAgICBJTlRfOCA9IDB4QzgsXG4gICAgSU5UXzE2ID0gMHhDOSxcbiAgICBJTlRfMzIgPSAweENBLFxuICAgIElOVF82NCA9IDB4Q0IsXG4gICAgU1RSSU5HXzggPSAweEQwLFxuICAgIFNUUklOR18xNiA9IDB4RDEsXG4gICAgU1RSSU5HXzMyID0gMHhEMixcbiAgICBMSVNUXzggPSAweEQ0LFxuICAgIExJU1RfMTYgPSAweEQ1LFxuICAgIExJU1RfMzIgPSAweEQ2LFxuICAgIE1BUF84ID0gMHhEOCxcbiAgICBNQVBfMTYgPSAweEQ5LFxuICAgIE1BUF8zMiA9IDB4REEsXG4gICAgU1RSVUNUXzggPSAweERDLFxuICAgIFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIFN0cnVjdHVyZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cnVjdHVyZShzaWduYXR1cmUsIGZpZWxkcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJ1Y3R1cmUpO1xuXG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHBhY2tcbiAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cnVjdHVyZSwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgZmllbGRTdHIgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBmaWVsZFN0ciArPSBcIiwgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJTdHJ1Y3R1cmUoXCIgKyB0aGlzLnNpZ25hdHVyZSArIFwiLCBbXCIgKyB0aGlzLmZpZWxkcyArIFwiXSlcIjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RydWN0dXJlO1xufSkoKTtcblxudmFyIFBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhY2tlcihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhY2tlcik7XG5cbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHVucGFja1xuICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUGFja2VyLCBbe1xuICAgIGtleTogXCJwYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2soeCkge1xuICAgICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChOVUxMKTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRSVUUpO1xuICAgICAgfSBlbHNlIGlmICh4ID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZBTFNFKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJudW1iZXJcIikge1xuICAgICAgICB0aGlzLnBhY2tGbG9hdCh4KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aGlzLnBhY2tTdHJpbmcoeCk7XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBfaW50ZWdlci5JbnRlZ2VyKSB7XG4gICAgICAgIHRoaXMucGFja0ludGVnZXIoeCk7XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICB0aGlzLnBhY2tMaXN0SGVhZGVyKHgubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5wYWNrKHhbaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB4W2ldKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgU3RydWN0dXJlKSB7XG4gICAgICAgIHRoaXMucGFja1N0cnVjdCh4LnNpZ25hdHVyZSwgeC5maWVsZHMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG5cbiAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHhba2V5c1tpXV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBhY2tNYXBIZWFkZXIoY291bnQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoeFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucGFja1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgdGhpcy5wYWNrKHhba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkNhbm5vdCBwYWNrIHRoaXMgdmFsdWU6IFwiICsgeCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tTdHJ1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja1N0cnVjdChzaWduYXR1cmUsIGZpZWxkcykge1xuICAgICAgZmllbGRzID0gZmllbGRzIHx8IFtdO1xuICAgICAgdGhpcy5wYWNrU3RydWN0SGVhZGVyKGZpZWxkcy5sZW5ndGgsIHNpZ25hdHVyZSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnBhY2soZmllbGRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0ludGVnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0ludGVnZXIoeCkge1xuICAgICAgdmFyIGhpZ2ggPSB4LmhpZ2gsXG4gICAgICAgICAgbG93ID0geC5sb3c7XG5cbiAgICAgIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHgxMCkgJiYgeC5sZXNzVGhhbigweDgwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODApICYmIHgubGVzc1RoYW4oLTB4MTApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMCkgJiYgeC5sZXNzVGhhbigweDgwMDApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQxNihsb3cpO1xuICAgICAgfSBlbHNlIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHg4MDAwMDAwMCkgJiYgeC5sZXNzVGhhbigweDgwMDAwMDAwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzY0KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihoaWdoKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihsb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrRmxvYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0Zsb2F0KHgpIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoRkxPQVRfNjQpO1xuICAgICAgdGhpcy5fY2gud3JpdGVGbG9hdDY0KHgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJpbmcoeCkge1xuICAgICAgdmFyIGJ5dGVzID0gX3V0ZjgyW1wiZGVmYXVsdFwiXS5lbmNvZGUoeCk7XG4gICAgICB2YXIgc2l6ZSA9IGJ5dGVzLmxlbmd0aDtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfU1RSSU5HIHwgc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR18xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR18zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAxNjc3NzIxNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyA2NTUzNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrTGlzdEhlYWRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrTGlzdEhlYWRlcihzaXplKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX0xJU1QgfCBzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja01hcEhlYWRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrTWFwSGVhZGVyKHNpemUpIHtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfTUFQIHwgc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF8zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAxNjc3NzIxNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyA2NTUzNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tTdHJ1Y3RIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja1N0cnVjdEhlYWRlcihzaXplLCBzaWduYXR1cmUpIHtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfU1RSVUNUIHwgc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2lnbmF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSVUNUXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSVUNUXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBhY2tlcjtcbn0pKCk7XG5cbnZhciBVbnBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFVucGFja2VyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVbnBhY2tlcik7XG5cbiAgICAvLyBIaWdoZXIgbGV2ZWwgbGF5ZXJzIGNhbiBzcGVjaWZ5IGhvdyB0byBtYXAgc3RydWN0cyB0byBoaWdoZXItbGV2ZWwgb2JqZWN0cy5cbiAgICAvLyBJZiB3ZSByZWNpZXZlIGEgc3RydWN0IHRoYXQgaGFzIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIG1hcHBlcixcbiAgICAvLyB3ZSBzaW1wbHkgcmV0dXJuIGEgU3RydWN0dXJlIG9iamVjdC5cbiAgICB0aGlzLnN0cnVjdE1hcHBlcnMgPSB7fTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhVbnBhY2tlciwgW3tcbiAgICBrZXk6IFwidW5wYWNrTGlzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2tMaXN0KHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHZhbHVlID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB2YWx1ZS5wdXNoKHRoaXMudW5wYWNrKGJ1ZmZlcikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tNYXBcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrTWFwKHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHZhbHVlID0ge307XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy51bnBhY2soYnVmZmVyKTtcbiAgICAgICAgdmFsdWVba2V5XSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja1N0cnVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2tTdHJ1Y3Qoc2l6ZSwgYnVmZmVyKSB7XG4gICAgICB2YXIgc2lnbmF0dXJlID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgICAgdmFyIG1hcHBlciA9IHRoaXMuc3RydWN0TWFwcGVyc1tzaWduYXR1cmVdO1xuICAgICAgaWYgKG1hcHBlcikge1xuICAgICAgICByZXR1cm4gbWFwcGVyKHRoaXMsIGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWUgPSBuZXcgU3RydWN0dXJlKHNpZ25hdHVyZSwgW10pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgIHZhbHVlLmZpZWxkcy5wdXNoKHRoaXMudW5wYWNrKGJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFjayhidWZmZXIpIHtcbiAgICAgIHZhciBtYXJrZXIgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgICBpZiAobWFya2VyID09IE5VTEwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBUUlVFKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gRkFMU0UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gRkxPQVRfNjQpIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkRmxvYXQ2NCgpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMCAmJiBtYXJrZXIgPCAxMjgpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKG1hcmtlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA+PSAyNDAgJiYgbWFya2VyIDwgMjU2KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShtYXJrZXIgLSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzgpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGJ1ZmZlci5yZWFkSW50OCgpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8xNikge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkoYnVmZmVyLnJlYWRJbnQxNigpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8zMikge1xuICAgICAgICB2YXIgYiA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzY0KSB7XG4gICAgICAgIHZhciBoaWdoID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgICB2YXIgbG93ID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgICByZXR1cm4gbmV3IF9pbnRlZ2VyLkludGVnZXIobG93LCBoaWdoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR184KSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMTYpIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMzIpIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MzIoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfMzIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8zMikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9XG4gICAgICB2YXIgbWFya2VySGlnaCA9IG1hcmtlciAmIDB4RjA7XG4gICAgICB2YXIgbWFya2VyTG93ID0gbWFya2VyICYgMHgwRjtcbiAgICAgIGlmIChtYXJrZXJIaWdoID09IDB4ODApIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgbWFya2VyTG93KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweDkwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4QTApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEIwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gcGFja2VkIHZhbHVlIHdpdGggbWFya2VyIFwiICsgbWFya2VyLnRvU3RyaW5nKDE2KSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVucGFja2VyO1xufSkoKTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFBhY2tlcjogUGFja2VyLFxuICBVbnBhY2tlcjogVW5wYWNrZXIsXG4gIFN0cnVjdHVyZTogU3RydWN0dXJlXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIFBvb2wgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQHBhcmFtIGNyZWF0ZSAgYW4gYWxsb2NhdGlvbiBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBuZXcgcmVzb3VyY2UuIEl0J3MgZ2l2ZW5cbiAgICogICAgICAgICAgICAgICAgYSBzaW5nbGUgYXJndW1lbnQsIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHJldHVybiB0aGUgcmVzb3VyY2UgdG9cbiAgICogICAgICAgICAgICAgICAgdGhlIHBvb2wgaWYgaW52b2tlZCwgd2hpY2ggaXMgbWVhbnQgdG8gYmUgY2FsbGVkIG9uIC5kaXNwb3NlXG4gICAqICAgICAgICAgICAgICAgIG9yIC5jbG9zZSBvciB3aGF0ZXZlciBtZWNoYW5pc20gdGhlIHJlc291cmNlIHVzZXMgdG8gZmluYWxpemUuXG4gICAqIEBwYXJhbSBkZXN0cm95IGNhbGxlZCB3aXRoIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGV2aWN0ZWQgZnJvbSB0aGlzIHBvb2xcbiAgICogQHBhcmFtIHZhbGlkYXRlIGNhbGxlZCBhdCB2YXJpb3VzIHRpbWVzIChsaWtlIHdoZW4gYW4gaW5zdGFuY2UgaXMgYWNxdWlyZWQgYW5kXG4gICAqICAgICAgICAgICAgICAgICB3aGVuIGl0IGlzIHJldHVybmVkKS4gSWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgcmVzb3VyY2Ugd2lsbFxuICAgKiAgICAgICAgICAgICAgICAgYmUgZXZpY3RlZFxuICAgKiBAcGFyYW0gbWF4SWRsZSB0aGUgbWF4IG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYWxsb3dlZCBpZGxlIGluIHRoZSBwb29sIGF0XG4gICAqICAgICAgICAgICAgICAgIGFueSB0aW1lLiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgcmVzb3VyY2VzIHdpbGwgYmUgZXZpY3RlZC5cbiAgICovXG5cbiAgZnVuY3Rpb24gUG9vbChjcmVhdGUpIHtcbiAgICB2YXIgZGVzdHJveSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gOiBhcmd1bWVudHNbMV07XG4gICAgdmFyIHZhbGlkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSA6IGFyZ3VtZW50c1syXTtcbiAgICB2YXIgbWF4SWRsZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMyB8fCBhcmd1bWVudHNbM10gPT09IHVuZGVmaW5lZCA/IDUwIDogYXJndW1lbnRzWzNdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvb2wpO1xuXG4gICAgdGhpcy5fY3JlYXRlID0gY3JlYXRlO1xuICAgIHRoaXMuX2Rlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuX3ZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgdGhpcy5fbWF4SWRsZSA9IG1heElkbGU7XG4gICAgdGhpcy5fcG9vbCA9IFtdO1xuICAgIHRoaXMuX3JlbGVhc2UgPSB0aGlzLl9yZWxlYXNlLmJpbmQodGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUG9vbCwgW3tcbiAgICBrZXk6IFwiYWNxdWlyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlKCkge1xuICAgICAgaWYgKHRoaXMuX3Bvb2wubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9vbC5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGUodGhpcy5fcmVsZWFzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9yZWxlYXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlKHJlc291cmNlKSB7XG4gICAgICBpZiAodGhpcy5fcG9vbC5sZW5ndGggPj0gdGhpcy5fbWF4SWRsZSB8fCAhdGhpcy5fdmFsaWRhdGUocmVzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kocmVzb3VyY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcG9vbC5wdXNoKHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUG9vbDtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBQb29sOiBQb29sXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9yZWNvcmQgPSByZXF1aXJlKFwiLi4vcmVjb3JkXCIpO1xuXG4vKipcbiAqIEhhbmRsZXMgYSBSVU4vUFVMTF9BTEwsIG9yIFJVTi9ESVNDQVJEX0FMTCByZXF1ZXN0cywgbWFwcyB0aGUgcmVzcG9uc2VzXG4gKiBpbiBhIHdheSB0aGF0IGEgdXNlci1wcm92aWRlZCBvYnNlcnZlciBjYW4gc2VlIHRoZXNlIGFzIGEgY2xlYW4gU3RyZWFtXG4gKiBvZiByZWNvcmRzLlxuICogVGhpcyBjbGFzcyB3aWxsIHF1ZXVlIHVwIGluY29taW5nIG1lc3NhZ2VzIHVudGlsIGEgdXNlci1wcm92aWRlZCBvYnNlcnZlclxuICogZm9yIHRoZSBpbmNvbWluZyBzdHJlYW0gaXMgcmVnaXN0ZXJlZC4gVGh1cywgd2Uga2VlcCBmaWVsZHMgYXJvdW5kXG4gKiBmb3IgdHJhY2tpbmcgaGVhZC9yZWNvcmRzL3RhaWwuIFRoZXNlIGFyZSBvbmx5IHVzZWQgaWYgdGhlcmUgaXMgbm9cbiAqIG9ic2VydmVyIHJlZ2lzdGVyZWQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cmVhbU9ic2VydmVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJlYW1PYnNlcnZlcik7XG5cbiAgICB0aGlzLl9maWVsZEtleXMgPSBudWxsO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLl9xdWV1ZWRSZWNvcmRzID0gW107XG4gICAgdGhpcy5fdGFpbCA9IG51bGw7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgYmUgY2FsbGVkIG9uIGV2ZXJ5IHJlY29yZCB0aGF0IGNvbWVzIGluIGFuZCB0cmFuc2Zvcm0gYSByYXcgcmVjb3JkXG4gICAqIHRvIGEgT2JqZWN0LiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdHJhbnNmb3JtZWQgcmVjb3JkXG4gICAqIHRvIGl0J3Mgb25OZXh0IG1ldGhvZCwgb3RoZXJ3aXNlLCBwdXNoIHRvIHJlY29yZCBxdWUuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHJhd1JlY29yZCAtIEFuIGFycmF5IHdpdGggdGhlIHJhdyByZWNvcmRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cmVhbU9ic2VydmVyLCBbe1xuICAgIGtleTogXCJvbk5leHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25OZXh0KHJhd1JlY29yZCkge1xuICAgICAgdmFyIHJlY29yZCA9IG5ldyBfcmVjb3JkLlJlY29yZCh0aGlzLl9maWVsZEtleXMsIHJhd1JlY29yZCwgdGhpcy5fZmllbGRMb29rdXApO1xuICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9uTmV4dChyZWNvcmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVldWVkUmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uQ29tcGxldGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZEtleXMgPT09IG51bGwpIHtcbiAgICAgICAgLy8gU3RyZWFtIGhlYWRlciwgYnVpbGQgYSBuYW1lLT5pbmRleCBmaWVsZCBsb29rdXAgdGFibGVcbiAgICAgICAgLy8gdG8gYmUgdXNlZCBieSByZWNvcmRzLiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIGl0XG4gICAgICAgIC8vIGZhc3RlciB0byBsb29rIHVwIGZpZWxkcyBpbiBhIHJlY29yZCBieSBuYW1lLCByYXRoZXIgdGhhbiBieSBpbmRleC5cbiAgICAgICAgLy8gU2luY2UgdGhlIHJlY29yZHMgd2UgZ2V0IGJhY2sgdmlhIEJvbHQgYXJlIGp1c3QgYXJyYXlzIG9mIHZhbHVlcy5cbiAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gW107XG4gICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwID0ge307XG4gICAgICAgIGlmIChtZXRhLmZpZWxkcyAmJiBtZXRhLmZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gbWV0YS5maWVsZHM7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZmllbGRMb29rdXBbbWV0YS5maWVsZHNbaV1dID0gaTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVuZCBvZiBzdHJlYW1cbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25Db21wbGV0ZWQobWV0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fdGFpbCA9IG1ldGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBlcnJvcnMuXG4gICAgICogSWYgdXNlci1wcm92aWRlZCBvYnNlcnZlciBpcyBwcmVzZW50LCBwYXNzIHRoZSBlcnJvclxuICAgICAqIHRvIGl0J3Mgb25FcnJvciBtZXRob2QsIG90aGVyd2lzZSBzZXQgaW5zdGFuY2UgdmFyaWFibGUgX2Vycm9yLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlcnJvciAtIEFuIGVycm9yIG9iamVjdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIm9uRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKHRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZSB0byBldmVudHMgd2l0aCBwcm92aWRlZCBvYnNlcnZlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JzZXJ2ZXIgLSBPYnNlcnZlciBvYmplY3RcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlY29yZDogT2JqZWN0KX0gb2JzZXJ2ZXIub25OZXh0IC0gSGFuZGxlIHJlY29yZHMsIG9uZSBieSBvbmUuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihtZXRhZGF0YTogT2JqZWN0KX0gb2JzZXJ2ZXIub25Db21wbGV0ZSAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IE9iamVjdCl9IG9ic2VydmVyLm9uRXJyb3IgLSBIYW5kbGUgZXJyb3JzLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInN1YnNjcmliZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9lcnJvcikge1xuICAgICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3F1ZXVlZFJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9xdWV1ZWRSZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25OZXh0KF9xdWV1ZWRSZWNvcmRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3RhaWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQodGhpcy5fdGFpbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYnNlcnZlciA9IG9ic2VydmVyO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdHJlYW1PYnNlcnZlcjtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU3RyZWFtT2JzZXJ2ZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3Jvc3MtcGxhdGZvcm0gVVRGLTggZW5jb2RlciBhbmQgZGVjb2RlciB0aGF0IHdvcmtzXG4vLyB3aXRoIHRoZSBCdWZmZXIgQVBJIGRlZmluZWQgaW4gYnVmLmpzXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfYnVmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1Zik7XG5cbnZhciBfc3RyaW5nX2RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgcGxhdGZvcm1PYmogPSB7fTtcblxudHJ5IHtcbiAgKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlzICdidWZmZXInIGlzIG5vdCBhdmFpbGFibGVcbiAgICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gICAgdmFyIGRlY29kZXIgPSBuZXcgX3N0cmluZ19kZWNvZGVyLlN0cmluZ0RlY29kZXIoJ3V0ZjgnKTtcbiAgICB2YXIgbm9kZSA9IHJlcXVpcmUoXCJidWZmZXJcIik7XG5cbiAgICBwbGF0Zm9ybU9iaiA9IHtcbiAgICAgIFwiZW5jb2RlXCI6IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBfYnVmMlsnZGVmYXVsdCddLk5vZGVCdWZmZXIobmV3IG5vZGUuQnVmZmVyKHN0ciwgXCJVVEYtOFwiKSk7XG4gICAgICB9LFxuICAgICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmMlsnZGVmYXVsdCddLk5vZGVCdWZmZXIpIHtcbiAgICAgICAgICB2YXIgc3RhcnQgPSBidWZmZXIucG9zaXRpb24sXG4gICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoO1xuICAgICAgICAgIGJ1ZmZlci5wb3NpdGlvbiA9IE1hdGgubWluKGVuZCwgYnVmZmVyLmxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5fYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5Db21iaW5lZEJ1ZmZlcikge1xuICAgICAgICAgIHZhciBvdXQgPSBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihidWZmZXIsIGxlbmd0aCwgZnVuY3Rpb24gKHBhcnRCdWZmZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLndyaXRlKHBhcnRCdWZmZXIuX2J1ZmZlcik7XG4gICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZXIuZW5kKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkRvbid0IGtub3cgaG93IHRvIGRlY29kZSBzdHJpbmdzIGZyb20gYFwiICsgYnVmZmVyICsgXCJgLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0pKCk7XG59IGNhdGNoIChlKSB7XG4gIHZhciB0ZXh0RW5jb2Rpbmc7XG5cbiAgKGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIE5vdCBvbiBOb2RlSlMsIGFkZCBzaGltIGZvciBXZWJBUEkgVGV4dEVuY29kZXIvVGV4dERlY29kZXJcbiAgICB0ZXh0RW5jb2RpbmcgPSByZXF1aXJlKCcuLi8uLi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2luZGV4Jyk7XG5cbiAgICB2YXIgZW5jb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dEVuY29kZXIoXCJ1dGYtOFwiKTtcbiAgICB2YXIgZGVjb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcblxuICAgIHBsYXRmb3JtT2JqID0ge1xuICAgICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICAgICAgICByZXR1cm4gbmV3IF9idWYyWydkZWZhdWx0J10uSGVhcEJ1ZmZlcihlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlcik7XG4gICAgICB9LFxuICAgICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmMlsnZGVmYXVsdCddLkhlYXBCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnJlYWRWaWV3KE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmxlbmd0aCAtIGJ1ZmZlci5wb3NpdGlvbikpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWNvZGluZyBjb21iaW5lZCBidWZmZXIgaXMgY29tcGxpY2F0ZWQuIEZvciBzaW1wbGljaXR5LCBmb3Igbm93LFxuICAgICAgICAgIC8vIHdlIHNpbXBseSBjb3B5IHRoZSBjb21iaW5lZCBidWZmZXIgaW50byBhIHJlZ3VsYXIgYnVmZmVyIGFuZCBkZWNvZGUgdGhhdC5cbiAgICAgICAgICB2YXIgdG1wQnVmID0gX2J1ZjJbJ2RlZmF1bHQnXS5hbGxvYyhsZW5ndGgpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRtcEJ1Zi53cml0ZVVJbnQ4KGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRtcEJ1Zi5yZXNldCgpO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0bXBCdWYucmVhZFZpZXcobGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9KSgpO1xufVxuXG52YXIgc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIgPSBmdW5jdGlvbiBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihjb21iaW5lZEJ1ZmZlcnMsIGxlbmd0aCwgZGVjb2RlRm4sIGVuZEZuKSB7XG4gIHZhciByZW1haW5pbmdCeXRlc1RvUmVhZCA9IGxlbmd0aDtcbiAgdmFyIHBvc2l0aW9uID0gY29tYmluZWRCdWZmZXJzLnBvc2l0aW9uO1xuICBjb21iaW5lZEJ1ZmZlcnMuX3VwZGF0ZVBvcyhNYXRoLm1pbihsZW5ndGgsIGNvbWJpbmVkQnVmZmVycy5sZW5ndGggLSBwb3NpdGlvbikpO1xuICAvLyBSZWR1Y2UgQ29tYmluZWRCdWZmZXJzIHRvIGEgZGVjb2RlZCBzdHJpbmdcbiAgdmFyIG91dCA9IGNvbWJpbmVkQnVmZmVycy5fYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24gKGxhc3QsIHBhcnRCdWZmZXIpIHtcbiAgICBpZiAocmVtYWluaW5nQnl0ZXNUb1JlYWQgPD0gMCkge1xuICAgICAgcmV0dXJuIGxhc3Q7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+PSBwYXJ0QnVmZmVyLmxlbmd0aCkge1xuICAgICAgcG9zaXRpb24gLT0gcGFydEJ1ZmZlci5sZW5ndGg7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhwb3NpdGlvbiAtIHBhcnRCdWZmZXIucG9zaXRpb24pO1xuICAgICAgdmFyIGJ5dGVzVG9SZWFkID0gTWF0aC5taW4ocGFydEJ1ZmZlci5sZW5ndGggLSBwb3NpdGlvbiwgcmVtYWluaW5nQnl0ZXNUb1JlYWQpO1xuICAgICAgdmFyIGxhc3RTbGljZSA9IHBhcnRCdWZmZXIucmVhZFNsaWNlKGJ5dGVzVG9SZWFkKTtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhieXRlc1RvUmVhZCk7XG4gICAgICByZW1haW5pbmdCeXRlc1RvUmVhZCA9IE1hdGgubWF4KHJlbWFpbmluZ0J5dGVzVG9SZWFkIC0gbGFzdFNsaWNlLmxlbmd0aCwgMCk7XG4gICAgICBwb3NpdGlvbiA9IDA7XG4gICAgICByZXR1cm4gbGFzdCArIGRlY29kZUZuKGxhc3RTbGljZSk7XG4gICAgfVxuICB9LCAnJyk7XG4gIHJldHVybiBvdXQgKyBlbmRGbigpO1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gcGxhdGZvcm1PYmo7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpIHtcbiAgdmFyIGxvb2t1cCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGlkeCkge1xuICAgIGxvb2t1cFtuYW1lXSA9IGlkeDtcbiAgfSk7XG4gIHJldHVybiBsb29rdXA7XG59XG5cbi8qKlxuICogUmVjb3JkcyBtYWtlIHVwIHRoZSBjb250ZW50cyBvZiB0aGUge0BsaW5rIFJlc3VsdH0sIGFuZCBpcyBob3cgeW91IGFjY2Vzc1xuICogdGhlIG91dHB1dCBvZiBhIHN0YXRlbWVudC4gQSBzaW1wbGUgc3RhdGVtZW50IG1pZ2h0IHlpZWxkIGEgcmVzdWx0IHN0cmVhbVxuICogd2l0aCBhIHNpbmdsZSByZWNvcmQsIGZvciBpbnN0YW5jZTpcbiAqXG4gKiAgICAgTUFUQ0ggKHU6VXNlcikgUkVUVVJOIHUubmFtZSwgdS5hZ2VcbiAqXG4gKiBUaGlzIHJldHVybnMgYSBzdHJlYW0gb2YgcmVjb3JkcyB3aXRoIHR3byBmaWVsZHMsIG5hbWVkIGB1Lm5hbWVgIGFuZCBgdS5hZ2VgLFxuICogZWFjaCByZWNvcmQgcmVwcmVzZW50cyBvbmUgdXNlciBmb3VuZCBieSB0aGUgc3RhdGVtZW50IGFib3ZlLiBZb3UgY2FuIGFjY2Vzc1xuICogdGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGVpdGhlciBieSBuYW1lOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KFwibi5uYW1lXCIpXG4gKlxuICogT3IgYnkgaXQncyBwb3NpdGlvbjpcbiAqXG4gKiAgICAgcmVjb3JkLmdldCgwKVxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cblxudmFyIFJlY29yZCA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVjb3JkIG9iamVjdC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5cyBBbiBhcnJheSBvZiBmaWVsZCBrZXlzLCBpbiB0aGUgb3JkZXIgdGhlIGZpZWxkcyBhcHBlYXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY29yZFxuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkIHZhbHVlc1xuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRMb29rdXAgQW4gb2JqZWN0IG9mIGZpZWxkTmFtZSAtPiB2YWx1ZSBpbmRleCwgdXNlZCB0byBtYXBcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgbmFtZXMgdG8gdmFsdWVzLiBJZiB0aGlzIGlzIG51bGwsIG9uZSB3aWxsIGJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC5cbiAgICovXG5cbiAgZnVuY3Rpb24gUmVjb3JkKGtleXMsIGZpZWxkcykge1xuICAgIHZhciBmaWVsZExvb2t1cCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBhcmd1bWVudHNbMl07XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVjb3JkKTtcblxuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5fZmllbGRMb29rdXAgPSBmaWVsZExvb2t1cCB8fCBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gZm9yIGVhY2ggZmllbGQgaW4gdGhpcyByZWNvcmQuIFRoZSBmdW5jdGlvblxuICAgKiB3aWxsIGdldCB0aHJlZSBhcmd1bWVudHMgLSB0aGUgdmFsdWUsIHRoZSBrZXkgYW5kIHRoaXMgcmVjb3JkLCBpbiB0aGF0XG4gICAqIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdmlzaXRvclxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUmVjb3JkLCBbe1xuICAgIGtleTogXCJmb3JFYWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvckVhY2godmlzaXRvcikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmlzaXRvcih0aGlzLl9maWVsZHNbaV0sIHRoaXMua2V5c1tpXSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgdmFsdWUgZnJvbSB0aGlzIHJlY29yZCwgZWl0aGVyIGJ5IGluZGV4IG9yIGJ5IGZpZWxkIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0ga2V5IEZpZWxkIGtleSwgb3IgdGhlIGluZGV4IG9mIHRoZSBmaWVsZC5cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgdmFyIGluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCEodHlwZW9mIGtleSA9PT0gXCJudW1iZXJcIikpIHtcbiAgICAgICAgaW5kZXggPSB0aGlzLl9maWVsZExvb2t1cFtrZXldO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGgga2V5ICdcIiArIGtleSArIFwiJywgYXZhaWxhYmxlIGtleSBhcmU6IFtcIiArIHRoaXMua2V5cyArIFwiXS5cIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4ID0ga2V5O1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPiB0aGlzLl9maWVsZHMubGVuZ3RoIC0gMSB8fCBpbmRleCA8IDApIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBpbmRleCAnXCIgKyBpbmRleCArIFwiJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgKyBcImFuZCBtYWtlIHN1cmUgeW91ciBzdGF0ZW1lbnQgcmV0dXJucyByZWNvcmRzIGluIHRoZSBzaGFwZSB5b3UgbWVhbnQgaXQgdG8uXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzW2luZGV4XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVjb3JkO1xufSkoKTtcblxuZXhwb3J0cy5SZWNvcmQgPSBSZWNvcmQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuL2ludGVnZXInKTtcblxuLyoqXG4gICogQSBSZXN1bHRTdW1tYXJ5IGluc3RhbmNlIGNvbnRhaW5zIHN0cnVjdHVyZWQgbWV0YWRhdGEgZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxudmFyIFJlc3VsdFN1bW1hcnkgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSBUaGUgc3RhdGVtZW50IHRoaXMgc3VtbWFyeSBpcyBmb3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXRhZGF0YSAtIFN0YXRlbWVudCBtZXRhZGF0YVxuICAgKi9cblxuICBmdW5jdGlvbiBSZXN1bHRTdW1tYXJ5KHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGEpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVzdWx0U3VtbWFyeSk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHsgdGV4dDogc3RhdGVtZW50LCBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIH07XG4gICAgdGhpcy5zdGF0ZW1lbnRUeXBlID0gbWV0YWRhdGEudHlwZTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MgPSBuZXcgU3RhdGVtZW50U3RhdGlzdGljcyhtZXRhZGF0YS5zdGF0cyB8fCB7fSk7XG4gICAgdGhpcy5wbGFuID0gbWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFBsYW4obWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZSA9IG1ldGFkYXRhLnByb2ZpbGUgPyBuZXcgUHJvZmlsZWRQbGFuKG1ldGFkYXRhLnByb2ZpbGUpIDogZmFsc2U7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5fYnVpbGROb3RpZmljYXRpb25zKG1ldGFkYXRhLm5vdGlmaWNhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBFWFBMQUlOLlxuICAgICogQGFjY2VzcyBwdWJsaWNcbiAgICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZXN1bHRTdW1tYXJ5LCBbe1xuICAgIGtleTogJ19idWlsZE5vdGlmaWNhdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYnVpbGROb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9ucykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RpZmljYXRpb24obik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcGxhblxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdoYXNQbGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUGxhbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYW4gaW5zdGFuY2VvZiBQbGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgc3VtbWFyeSBoYXMgYSBwcm9maWxlXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2hhc1Byb2ZpbGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNQcm9maWxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZSBpbnN0YW5jZW9mIFByb2ZpbGVkUGxhbjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVzdWx0U3VtbWFyeTtcbn0pKCk7XG5cbnZhciBQbGFuID1cbi8qKlxuICogQ3JlYXRlIGEgUGxhbiBpbnN0YW5jZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gcGxhbiAtIE9iamVjdCB3aXRoIHBsYW4gZGF0YVxuICovXG5mdW5jdGlvbiBQbGFuKHBsYW4pIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcGxhbi5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwbGFuLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHBsYW4uYXJncztcbiAgdGhpcy5jaGlsZHJlbiA9IHBsYW4uY2hpbGRyZW4gPyBwbGFuLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gbmV3IFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBQUk9GSUxFLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG47XG5cbnZhciBQcm9maWxlZFBsYW4gPVxuLyoqXG4gKiBDcmVhdGUgYSBQcm9maWxlZFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHByb2ZpbGUgLSBPYmplY3Qgd2l0aCBwcm9maWxlIGRhdGFcbiAqL1xuZnVuY3Rpb24gUHJvZmlsZWRQbGFuKHByb2ZpbGUpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb2ZpbGVkUGxhbik7XG5cbiAgdGhpcy5vcGVyYXRvclR5cGUgPSBwcm9maWxlLm9wZXJhdG9yVHlwZTtcbiAgdGhpcy5pZGVudGlmaWVycyA9IHByb2ZpbGUuaWRlbnRpZmllcnM7XG4gIHRoaXMuYXJndW1lbnRzID0gcHJvZmlsZS5hcmdzO1xuICB0aGlzLmRiSGl0cyA9IHByb2ZpbGUuYXJncy5EYkhpdHMudG9JbnQoKTtcbiAgdGhpcy5yb3dzID0gcHJvZmlsZS5hcmdzLlJvd3MudG9JbnQoKTtcbiAgdGhpcy5jaGlsZHJlbiA9IHByb2ZpbGUuY2hpbGRyZW4gPyBwcm9maWxlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVkUGxhbihjaGlsZCk7XG4gIH0pIDogW107XG59XG5cbi8qKlxuICAqIEdldCBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBmb3IgYSB7UmVzdWx0fS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuO1xuXG52YXIgU3RhdGVtZW50U3RhdGlzdGljcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBTdHJ1Y3R1cml6ZSB0aGUgc3RhdGlzdGljc1xuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRpc3RpY3MgLSBSZXN1bHQgc3RhdGlzdGljc1xuICAgKi9cblxuICBmdW5jdGlvbiBTdGF0ZW1lbnRTdGF0aXN0aWNzKHN0YXRpc3RpY3MpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YXRlbWVudFN0YXRpc3RpY3MpO1xuXG4gICAgdGhpcy5fc3RhdHMgPSB7XG4gICAgICBub2Rlc0NyZWF0ZWQ6IDAsXG4gICAgICBub2Rlc0RlbGV0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzQ3JlYXRlZDogMCxcbiAgICAgIHJlbGF0aW9uc2hpcHNEZWxldGVkOiAwLFxuICAgICAgcHJvcGVydGllc1NldDogMCxcbiAgICAgIGxhYmVsc0FkZGVkOiAwLFxuICAgICAgbGFiZWxzUmVtb3ZlZDogMCxcbiAgICAgIGluZGV4ZXNBZGRlZDogMCxcbiAgICAgIGluZGV4ZXNSZW1vdmVkOiAwLFxuICAgICAgY29uc3RyYWludHNBZGRlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzUmVtb3ZlZDogMFxuICAgIH07XG4gICAgT2JqZWN0LmtleXMoc3RhdGlzdGljcykuZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgIC8vVG8gY2FtZWxDYXNlXG4gICAgICBfdGhpcy5fc3RhdHNbaW5kZXgucmVwbGFjZSgvKFxcLVxcdykvZywgZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIG1bMV0udG9VcHBlckNhc2UoKTtcbiAgICAgIH0pXSA9ICgwLCBfaW50ZWdlci5pc0ludCkoc3RhdGlzdGljc1tpbmRleF0pID8gc3RhdGlzdGljc1tpbmRleF0udG9JbnQoKSA6IHN0YXRpc3RpY3NbaW5kZXhdO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAgKiBDbGFzcyBmb3IgQ3lwaGVyIG5vdGlmaWNhdGlvbnNcbiAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgKi9cblxuICAvKipcbiAgICogRGlkIHRoZSBkYXRhYmFzZSBnZXQgdXBkYXRlZD9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0YXRlbWVudFN0YXRpc3RpY3MsIFt7XG4gICAga2V5OiAnY29udGFpbnNVcGRhdGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNVcGRhdGVzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9zdGF0cykucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBsYXN0ICsgX3RoaXMyLl9zdGF0c1tjdXJyZW50XTtcbiAgICAgIH0sIDApID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGNyZWF0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0NyZWF0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ25vZGVzRGVsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vZGVzRGVsZXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5ub2Rlc0RlbGV0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiByZWxhdGlvbnNoaXBzIGNyZWF0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxhdGlvbnNoaXBzQ3JlYXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHNDcmVhdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3JlbGF0aW9uc2hpcHNEZWxldGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVsYXRpb25zaGlwc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMucmVsYXRpb25zaGlwc0RlbGV0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBwcm9wZXJ0aWVzIHNldC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3Byb3BlcnRpZXNTZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcm9wZXJ0aWVzU2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnByb3BlcnRpZXNTZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBsYWJlbHMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhYmVsc0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGFiZWxzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyBhZGRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2luZGV4ZXNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluZGV4ZXNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzQWRkZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBpbmRleGVzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluZGV4ZXNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmluZGV4ZXNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyBhZGRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbnN0cmFpbnRzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdHJhaW50c0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzQWRkZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBjb250cmFpbnRzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb25zdHJhaW50c1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdHJhaW50c1JlbW92ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuY29uc3RyYWludHNSZW1vdmVkO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdGF0ZW1lbnRTdGF0aXN0aWNzO1xufSkoKTtcblxudmFyIE5vdGlmaWNhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBOb3RpZmljYXRpb24gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBub3RpZmljYXRpb24gLSBPYmplY3Qgd2l0aCBub3RpZmljYXRpb24gZGF0YVxuICAgKi9cblxuICBmdW5jdGlvbiBOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5vdGlmaWNhdGlvbik7XG5cbiAgICB0aGlzLmNvZGUgPSBub3RpZmljYXRpb24uY29kZTtcbiAgICB0aGlzLnRpdGxlID0gbm90aWZpY2F0aW9uLnRpdGxlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBub3RpZmljYXRpb24uZGVzY3JpcHRpb247XG4gICAgdGhpcy5zZXZlcml0eSA9IG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgICB0aGlzLnBvc2l0aW9uID0gTm90aWZpY2F0aW9uLl9jb25zdHJ1Y3RQb3NpdGlvbihub3RpZmljYXRpb24ucG9zaXRpb24pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE5vdGlmaWNhdGlvbiwgbnVsbCwgW3tcbiAgICBrZXk6ICdfY29uc3RydWN0UG9zaXRpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY29uc3RydWN0UG9zaXRpb24ocG9zKSB7XG4gICAgICBpZiAoIXBvcykge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQudG9JbnQoKSxcbiAgICAgICAgbGluZTogcG9zLmxpbmUudG9JbnQoKSxcbiAgICAgICAgY29sdW1uOiBwb3MuY29sdW1uLnRvSW50KClcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vdGlmaWNhdGlvbjtcbn0pKCk7XG5cbnZhciBzdGF0ZW1lbnRUeXBlID0ge1xuICBSRUFEX09OTFk6ICdyJyxcbiAgUkVBRF9XUklURTogJ3J3JyxcbiAgV1JJVEVfT05MWTogJ3cnLFxuICBTQ0hFTUFfV1JJVEU6ICdzJ1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBSZXN1bHRTdW1tYXJ5OiBSZXN1bHRTdW1tYXJ5LFxuICBzdGF0ZW1lbnRUeXBlOiBzdGF0ZW1lbnRUeXBlXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX3Jlc3VsdFN1bW1hcnkgPSByZXF1aXJlKCcuL3Jlc3VsdC1zdW1tYXJ5Jyk7XG5cbi8vIEVuc3VyZSBQcm9taXNlIGlzIGF2YWlsYWJsZVxuXG52YXIgX2V4dGVybmFsRXM2UHJvbWlzZSA9IHJlcXVpcmUoJy4uL2V4dGVybmFsL2VzNi1wcm9taXNlJyk7XG5cbigwLCBfZXh0ZXJuYWxFczZQcm9taXNlLnBvbHlmaWxsKSgpO1xuXG4vKipcbiAgKiBBIHN0cmVhbSBvZiB7QGxpbmsgUmVjb3JkfSByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHN0YXRlbWVudC5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG52YXIgUmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEluamVjdCB0aGUgb2JzZXJ2ZXIgdG8gYmUgdXNlZC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBzdHJlYW1PYnNlcnZlclxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVzdWx0KHN0cmVhbU9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVzdWx0KTtcblxuICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyID0gc3RyZWFtT2JzZXJ2ZXI7XG4gICAgdGhpcy5fcCA9IG51bGw7XG4gICAgdGhpcy5fc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzIHx8IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbmQgcmV0dXJuIG5ldyBQcm9taXNlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IG5ldyBQcm9taXNlLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlc3VsdCwgW3tcbiAgICBrZXk6ICdfY3JlYXRlUHJvbWlzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVQcm9taXNlKCkge1xuICAgICAgaWYgKHRoaXMuX3ApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5fcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICAgICAgdmFyIG9ic2VydmVyID0ge1xuICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gb25OZXh0KHJlY29yZCkge1xuICAgICAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoc3VtbWFyeSkge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlY29yZHM6IHJlY29yZHMsIHN1bW1hcnk6IHN1bW1hcnkgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiBmdW5jdGlvbiBvbkVycm9yKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FpdHMgZm9yIGFsbCByZXN1bHRzIGFuZCBjYWxscyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpdGggdGhlIHJlc3VsdHMuXG4gICAgICogQ2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIHtAbGluayAjc3Vic2NyaWJlfSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVzdWx0OiB7cmVjb3JkczpBcnJheTxSZWNvcmQ+fSl9IG9uRnVsZmlsbGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gZmluaXNoZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvblJlamVjdGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gZXJyb3JzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd0aGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3AudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2F0Y2ggZXJyb3JzIHdoZW4gdXNpbmcgcHJvbWlzZXMuXG4gICAgICogQ2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgc3Vic2NyaWJlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2F0Y2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2F0Y2gob25SZWplY3RlZCkge1xuICAgICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3BbJ2NhdGNoJ10ob25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyZWFtIHJlY29yZHMgdG8gb2JzZXJ2ZXIgYXMgdGhleSBjb21lIGluLCB0aGlzIGlzIGEgbW9yZSBlZmZpY2llbnQgbWV0aG9kXG4gICAgICogb2YgaGFuZGxpbmcgdGhlIHJlc3VsdHMsIGFuZCBhbGxvd3MgeW91IHRvIGhhbmRsZSBhcmJpdHJhcmlseSBsYXJnZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IFJlY29yZCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGVkIC0gSGFuZGxlIHN0cmVhbSB0YWlsLCB0aGUgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJzY3JpYmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBvbkNvbXBsZXRlZE9yaWdpbmFsID0gb2JzZXJ2ZXIub25Db21wbGV0ZWQ7XG4gICAgICB2YXIgb25Db21wbGV0ZWRXcmFwcGVyID0gZnVuY3Rpb24gb25Db21wbGV0ZWRXcmFwcGVyKG1ldGFkYXRhKSB7XG4gICAgICAgIHZhciBzdW0gPSBuZXcgX3Jlc3VsdFN1bW1hcnkuUmVzdWx0U3VtbWFyeShfdGhpcy5fc3RhdGVtZW50LCBfdGhpcy5fcGFyYW1ldGVycywgbWV0YWRhdGEpO1xuICAgICAgICBvbkNvbXBsZXRlZE9yaWdpbmFsLmNhbGwob2JzZXJ2ZXIsIHN1bSk7XG4gICAgICB9O1xuICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvbkNvbXBsZXRlZFdyYXBwZXI7XG4gICAgICBvYnNlcnZlci5vbkVycm9yID0gb2JzZXJ2ZXIub25FcnJvciB8fCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBwcm9jZXNzaW5nIHJlc3VsdDogXCIgKyBlcnIpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc3VsdDtcbn0pKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFJlc3VsdDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxudmFyIF90cmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vdHJhbnNhY3Rpb24nKTtcblxudmFyIF90cmFuc2FjdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90cmFuc2FjdGlvbik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuLyoqXG4gICogQSBTZXNzaW9uIGluc3RhbmNlIGlzIHVzZWQgZm9yIGhhbmRsaW5nIHRoZSBjb25uZWN0aW9uIGFuZFxuICAqIHNlbmRpbmcgc3RhdGVtZW50cyB0aHJvdWdoIHRoZSBjb25uZWN0aW9uLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cbnZhciBTZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm4gLSBBIGNvbm5lY3Rpb24gdG8gdXNlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gb25DbG9zZSAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBjb25uZWN0aW9uIGNsb3NlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFNlc3Npb24oY29ubiwgb25DbG9zZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZXNzaW9uKTtcblxuICAgIHRoaXMuX2Nvbm4gPSBjb25uO1xuICAgIHRoaXMuX29uQ2xvc2UgPSBvbkNsb3NlO1xuICAgIHRoaXMuX2hhc1R4ID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbWVudCBhbmQgcGFyYW1ldGVycyBhcyBzZXBhcmF0ZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoU2Vzc2lvbiwgW3tcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50KSB7XG4gICAgICB2YXIgcGFyYW1ldGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdO1xuXG4gICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICAgIH1cbiAgICAgIHZhciBzdHJlYW1PYnNlcnZlciA9IG5ldyBfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSgpO1xuICAgICAgaWYgKCF0aGlzLl9oYXNUeCkge1xuICAgICAgICB0aGlzLl9jb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgdGhpcy5fY29ubi5wdWxsQWxsKHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgdGhpcy5fY29ubi5zeW5jKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW1PYnNlcnZlci5vbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU3RhdGVtZW50cyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IG9uIGEgXCIgKyBcInNlc3Npb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSBcIiArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWdpbiBhIG5ldyB0cmFuc2FjdGlvbiBpbiB0aGlzIHNlc3Npb24uIEEgc2Vzc2lvbiBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0cmFuc2FjdGlvbiBydW5uaW5nIGF0IGEgdGltZSwgaWYgeW91XG4gICAgICogd2FudCB0byBydW4gbXVsdGlwbGUgY29uY3VycmVudCB0cmFuc2FjdGlvbnMsIHlvdSBzaG91bGQgdXNlIG11bHRpcGxlIGNvbmN1cnJlbnQgc2Vzc2lvbnMuXG4gICAgICpcbiAgICAgKiBXaGlsZSBhIHRyYW5zYWN0aW9uIGlzIG9wZW4gdGhlIHNlc3Npb24gY2Fubm90IGJlIHVzZWQgdG8gcnVuIHN0YXRlbWVudHMgb3V0c2lkZSB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IC0gTmV3IFRyYW5zYWN0aW9uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdiZWdpblRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW5UcmFuc2FjdGlvbigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLl9oYXNUeCkge1xuICAgICAgICB0aHJvdyBuZXcgX2Vycm9yLm5ld0Vycm9yKFwiWW91IGNhbm5vdCBiZWdpbiBhIHRyYW5zYWN0aW9uIG9uIGEgc2Vzc2lvbiB3aXRoIGFuIFwiICsgXCJvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSB0cmFuc2FjdGlvbiBvciB1c2UgYSBcIiArIFwiZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9oYXNUeCA9IHRydWU7XG4gICAgICByZXR1cm4gbmV3IF90cmFuc2FjdGlvbjJbJ2RlZmF1bHQnXSh0aGlzLl9jb25uLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLl9oYXNUeCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgdGhpcyBzZXNzaW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2IgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkXG4gICAgICogQHJldHVyblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICBpZiAodGhpcy5fb25DbG9zZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX29uQ2xvc2UoY2IpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX29uQ2xvc2UgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTZXNzaW9uO1xufSkoKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gU2Vzc2lvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHJhbnNhY3Rpb24gaW4gdGhlIE5lbzRqIGRhdGFiYXNlLlxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cblxudmFyIFRyYW5zYWN0aW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm4gLSBBIGNvbm5lY3Rpb24gdG8gdXNlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gb25DbG9zZSAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvciByb2xsZWQgYmFjay5cbiAgICovXG5cbiAgZnVuY3Rpb24gVHJhbnNhY3Rpb24oY29ubiwgb25DbG9zZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUcmFuc2FjdGlvbik7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubjtcbiAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyk7XG4gICAgdGhpcy5fY29ubi5ydW4oXCJCRUdJTlwiLCB7fSwgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgIHRoaXMuX2Nvbm4uZGlzY2FyZEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkFDVElWRTtcbiAgICB0aGlzLl9vbkNsb3NlID0gb25DbG9zZTtcbiAgfVxuXG4gIC8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbSBlbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFRyYW5zYWN0aW9uLCBbe1xuICAgIGtleTogJ3J1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RhdGVtZW50ID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgICBwYXJhbWV0ZXJzID0gc3RhdGVtZW50LnBhcmFtZXRlcnMgfHwge307XG4gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC50ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlLnJ1bih0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyksIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWl0cyB0aGUgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEFmdGVyIGNvbW1pdHRpbmcgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY29tbWl0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tbWl0KCkge1xuICAgICAgdmFyIGNvbW1pdHRlZCA9IHRoaXMuX3N0YXRlLmNvbW1pdCh0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSb2xsYmFja3MgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogQWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGUgdHJhbnNhY3Rpb24gY2FuIG5vIGxvbmdlciBiZSB1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyb2xsYmFjaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJvbGxiYWNrKCkge1xuICAgICAgdmFyIGNvbW1pdHRlZCA9IHRoaXMuX3N0YXRlLnJvbGxiYWNrKHRoaXMuX2Nvbm4sIG5ldyBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKSk7XG4gICAgICB0aGlzLl9zdGF0ZSA9IGNvbW1pdHRlZC5zdGF0ZTtcbiAgICAgIC8vY2xlYW4gdXBcbiAgICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICAgIHJldHVybiBjb21taXR0ZWQucmVzdWx0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19vbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uRXJyb3IoKSB7XG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuRkFJTEVEO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2FjdGlvbjtcbn0pKCk7XG5cbnZhciBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciA9IChmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gIF9pbmhlcml0cyhfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0eCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgIHRoaXMuX3R4ID0gdHg7XG4gICAgLy90aGlzIGlzIHRvIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIG9uRXJyb3IgY2F1c2VkIGJ5IElHTk9SRURcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIG9mIHRoZSB0cmFuc2FjdGlvbiovXG5cbiAgX2NyZWF0ZUNsYXNzKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLCBbe1xuICAgIGtleTogJ29uRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVycm9yKGVycm9yKSB7XG4gICAgICBpZiAoIXRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgICB0aGlzLl90eC5fb25FcnJvcigpO1xuICAgICAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnb25FcnJvcicsIHRoaXMpLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcjtcbn0pKF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMlsnZGVmYXVsdCddKTtcblxudmFyIF9zdGF0ZXMgPSB7XG4gIC8vVGhlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgd2l0aCBubyBleHBsaWNpdCBzdWNjZXNzIG9yIGZhaWx1cmUgbWFya2VkXG4gIEFDVElWRToge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5EaXNjYXJkQWxsKFwiQ09NTUlUXCIsIGNvbm4sIG9ic2VydmVyKSxcbiAgICAgICAgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogX3J1bkRpc2NhcmRBbGwoXCJST0xMQkFDS1wiLCBjb25uLCBvYnNlcnZlciksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBjb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMgfHwge30sIG9ic2VydmVyKTtcbiAgICAgIGNvbm4ucHVsbEFsbChvYnNlcnZlcik7XG4gICAgICBjb25uLnN5bmMoKTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9BbiBlcnJvciBoYXMgb2NjdXJyZWQsIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZCBhbmQgbm8gbW9yZSBtZXNzYWdlcyB3aWxsXG4gIC8vIGJlIHNlbnQgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gIEZBSUxFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFjay4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5GQUlMRUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSBwcmV2aW91cyBzdGF0ZW1lbnRzIGluIHRoZSBcIiArIFwidHJhbnNhY3Rpb24gaGFzIGZhaWxlZCBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIHN1Y2Nlc3NmdWxseSBjb21taXR0ZWRcbiAgU1VDQ0VFREVEOiB7XG4gICAgY29tbWl0OiBmdW5jdGlvbiBjb21taXQoY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3Ioe1xuICAgICAgICBlcnJvcjogXCJDYW5ub3QgY29tbWl0IHN0YXRlbWVudHMgaW4gdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBjb21taXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2FsbGVkIG9uIHRoZSB0cmFuc2FjdGlvbiBhbmQgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY2xvc2VkLiBQbGVhc2Ugc3RhcnQgYSBuZXdcIiArIFwiIHRyYW5zYWN0aW9uIHRvIHJ1biBhbm90aGVyIHN0YXRlbWVudC5cIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIkNPTU1JVFwiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRCB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJvbGxiYWNrIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNsb3NlZC5cIiB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiUk9MTEJBQ0tcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJ1bjogZnVuY3Rpb24gcnVuKGNvbm4sIG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3QgcnVuIHN0YXRlbWVudCwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9LFxuXG4gIC8vVGhpcyB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFja1xuICBST0xMRURfQkFDSzoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDSyB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJvbGxiYWNrIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJ1bjogZnVuY3Rpb24gcnVuKGNvbm4sIG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3QgcnVuIHN0YXRlbWVudCwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX3J1bkRpc2NhcmRBbGwobXNnLCBjb25uLCBvYnNlcnZlcikge1xuICBjb25uLnJ1bihtc2csIHt9LCBvYnNlcnZlcik7XG4gIGNvbm4uZGlzY2FyZEFsbChvYnNlcnZlcik7XG4gIGNvbm4uc3luYygpO1xuICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIG1zZywge30pO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUcmFuc2FjdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBETyBOT1QgQ0hBTkdFIFRIRSBWRVJTSU9OIEJFTE9XIEhFUkVcbi8vIFRoaXMgaXMgc2V0IGJ5IHRoZSBidWlsZCBzeXN0ZW0gYXQgcmVsZWFzZSB0aW1lLCB1c2luZ1xuLy8gICBndWxwIHNldCAtLXZlcnNpb24gPHJlbGVhc2V2ZXJzaW9uPlxuLy9cbi8vIFRoaXMgaXMgc2V0IHVwIHRoaXMgd2F5IHRvIGtlZXAgdGhlIHZlcnNpb24gaW4gdGhlIGNvZGUgaW5cbi8vIHN5bmMgd2l0aCB0aGUgbnBtIHBhY2thZ2UgdmVyc2lvbiwgYW5kIHRvIGFsbG93IHRoZSBidWlsZFxuLy8gc3lzdGVtIHRvIGNvbnRyb2wgdmVyc2lvbiBuYW1lcyBhdCBwYWNrYWdpbmcgdGltZS5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7IFZFUlNJT046IFwiMC4wLjAtZGV2XCIgfTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwidmFyIGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi4vYXNuMScpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFwaSA9IGV4cG9ydHM7XG5cbmFwaS5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUobmFtZSwgYm9keSkge1xuICByZXR1cm4gbmV3IEVudGl0eShuYW1lLCBib2R5KTtcbn07XG5cbmZ1bmN0aW9uIEVudGl0eShuYW1lLCBib2R5KSB7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuYm9keSA9IGJvZHk7XG5cbiAgdGhpcy5kZWNvZGVycyA9IHt9O1xuICB0aGlzLmVuY29kZXJzID0ge307XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKGJhc2UpIHtcbiAgdmFyIG5hbWVkO1xuICB0cnkge1xuICAgIG5hbWVkID0gcmVxdWlyZSgndm0nKS5ydW5JblRoaXNDb250ZXh0KFxuICAgICAgJyhmdW5jdGlvbiAnICsgdGhpcy5uYW1lICsgJyhlbnRpdHkpIHtcXG4nICtcbiAgICAgICcgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xcbicgK1xuICAgICAgJ30pJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBuYW1lZCA9IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xuICAgIH07XG4gIH1cbiAgaW5oZXJpdHMobmFtZWQsIGJhc2UpO1xuICBuYW1lZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIGluaXRuYW1lZChlbnRpdHkpIHtcbiAgICBiYXNlLmNhbGwodGhpcywgZW50aXR5KTtcbiAgfTtcblxuICByZXR1cm4gbmV3IG5hbWVkKHRoaXMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RGVjb2RlciA9IGZ1bmN0aW9uIF9nZXREZWNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZGVjb2RlclxuICBpZiAoIXRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmRlY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5SZXBvcnRlcjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgcmV0dXJuIHsgb2Zmc2V0OiB0aGlzLm9mZnNldCwgcmVwb3J0ZXI6IFJlcG9ydGVyLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcykgfTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKHNhdmUpIHtcbiAgLy8gUmV0dXJuIHNraXBwZWQgZGF0YVxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbiBza2lwKGJ5dGVzLCBmYWlsKSB7XG4gIGlmICghKHRoaXMub2Zmc2V0ICsgYnl0ZXMgPD0gdGhpcy5sZW5ndGgpKVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xuXG4gIHZhciByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJhdyA9IGZ1bmN0aW9uIHJhdyhzYXZlKSB7XG4gIHJldHVybiB0aGlzLmJhc2Uuc2xpY2Uoc2F2ZSA/IHNhdmUub2Zmc2V0IDogdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCEoaXRlbSBpbnN0YW5jZW9mIEVuY29kZXJCdWZmZXIpKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IG5ldyBCdWZmZXIodGhpcy5sZW5ndGgpO1xuICBpZiAoIW9mZnNldClcbiAgICBvZmZzZXQgPSAwO1xuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gb3V0O1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGl0ZW0uam9pbihvdXQsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gaXRlbS5sZW5ndGg7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgIG91dFtvZmZzZXRdID0gdGhpcy52YWx1ZTtcbiAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICBvdXQud3JpdGUodGhpcy52YWx1ZSwgb2Zmc2V0KTtcbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy52YWx1ZSkpXG4gICAgICB0aGlzLnZhbHVlLmNvcHkob3V0LCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSB0aGlzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuIiwidmFyIGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCJ2YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5FbmNvZGVyQnVmZmVyO1xudmFyIERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRGVjb2RlckJ1ZmZlcjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG52YXIgdGFncyA9IFtcbiAgJ3NlcScsICdzZXFvZicsICdzZXQnLCAnc2V0b2YnLCAnb2JqaWQnLCAnYm9vbCcsXG4gICdnZW50aW1lJywgJ3V0Y3RpbWUnLCAnbnVsbF8nLCAnZW51bScsICdpbnQnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxudmFyIG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG52YXIgb3ZlcnJpZGVkID0gW1xuICAnX3BlZWtUYWcnLCAnX2RlY29kZVRhZycsICdfdXNlJyxcbiAgJ19kZWNvZGVTdHInLCAnX2RlY29kZU9iamlkJywgJ19kZWNvZGVUaW1lJyxcbiAgJ19kZWNvZGVOdWxsJywgJ19kZWNvZGVJbnQnLCAnX2RlY29kZUJvb2wnLCAnX2RlY29kZUxpc3QnLFxuXG4gICdfZW5jb2RlQ29tcG9zaXRlJywgJ19lbmNvZGVTdHInLCAnX2VuY29kZU9iamlkJywgJ19lbmNvZGVUaW1lJyxcbiAgJ19lbmNvZGVOdWxsJywgJ19lbmNvZGVJbnQnLCAnX2VuY29kZUJvb2wnXG5dO1xuXG5mdW5jdGlvbiBOb2RlKGVuYywgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5lbmMgPSBlbmM7XG5cbiAgc3RhdGUucGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gIHN0YXRlLmNoaWxkcmVuID0gbnVsbDtcblxuICAvLyBTdGF0ZVxuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5hcmdzID0gbnVsbDtcbiAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBudWxsO1xuICBzdGF0ZS5jaG9pY2UgPSBudWxsO1xuICBzdGF0ZS5vcHRpb25hbCA9IGZhbHNlO1xuICBzdGF0ZS5hbnkgPSBmYWxzZTtcbiAgc3RhdGUub2JqID0gZmFsc2U7XG4gIHN0YXRlLnVzZSA9IG51bGw7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBudWxsO1xuICBzdGF0ZS5rZXkgPSBudWxsO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gbnVsbDtcbiAgc3RhdGUuZXhwbGljaXQgPSBudWxsO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmNvbnRhaW5zID0gbnVsbDtcblxuICAvLyBTaG91bGQgY3JlYXRlIG5ldyBpbnN0YW5jZSBvbiBlYWNoIG1ldGhvZFxuICBpZiAoIXN0YXRlLnBhcmVudCkge1xuICAgIHN0YXRlLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5fd3JhcCgpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IE5vZGU7XG5cbnZhciBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCdcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGNzdGF0ZSA9IHt9O1xuICBzdGF0ZVByb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGNzdGF0ZVtwcm9wXSA9IHN0YXRlW3Byb3BdO1xuICB9KTtcbiAgdmFyIHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICB2YXIgY2xvbmUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goY2xvbmUpO1xuICAgICAgcmV0dXJuIGNsb25lW21ldGhvZF0uYXBwbHkoY2xvbmUsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSwgdGhpcyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoYm9keSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIHZhciBjaGlsZHJlbiA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9LCB0aGlzKTtcbiAgYXJncyA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiAhKGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpO1xuICB9LCB0aGlzKTtcblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmNoaWxkcmVuID09PSBudWxsKTtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJlbnQgdG8gbWFpbnRhaW4gYmFja3dhcmQgbGlua1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID0gdGhpcztcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuYXJncyA9PT0gbnVsbCk7XG4gICAgc3RhdGUuYXJncyA9IGFyZ3M7XG4gICAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbihhcmcpIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0JyB8fCBhcmcuY29uc3RydWN0b3IgIT09IE9iamVjdClcbiAgICAgICAgcmV0dXJuIGFyZztcblxuICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWV0aG9kICsgJyBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAnICsgc3RhdGUuZW5jKTtcbiAgfTtcbn0pO1xuXG4vL1xuLy8gUHVibGljIG1ldGhvZHNcbi8vXG5cbnRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHtcbiAgTm9kZS5wcm90b3R5cGVbdGFnXSA9IGZ1bmN0aW9uIF90YWdNZXRob2QoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZSA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vcHRpb25hbCA9IGZ1bmN0aW9uIG9wdGlvbmFsKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZGVmID0gZnVuY3Rpb24gZGVmKHZhbCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gdmFsO1xuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5leHBsaWNpdCA9IGZ1bmN0aW9uIGV4cGxpY2l0KG51bSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuZXhwbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5pbXBsaWNpdCA9IGZ1bmN0aW9uIGltcGxpY2l0KG51bSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuaW1wbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vYmogPSBmdW5jdGlvbiBvYmooKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gIHN0YXRlLm9iaiA9IHRydWU7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKVxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5rZXkgPSBmdW5jdGlvbiBrZXkobmV3S2V5KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUua2V5ID09PSBudWxsKTtcbiAgc3RhdGUua2V5ID0gbmV3S2V5O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gYW55KCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUuYW55ID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmNob2ljZSA9IGZ1bmN0aW9uIGNob2ljZShvYmopIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5jaG9pY2UgPT09IG51bGwpO1xuICBzdGF0ZS5jaG9pY2UgPSBvYmo7XG4gIHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9KSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGl0ZW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS5jb250YWlucyA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gRGVjb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gaW5wdXQud3JhcFJlc3VsdChzdGF0ZS5jaGlsZHJlblswXS5fZGVjb2RlKGlucHV0KSk7XG5cbiAgdmFyIHJlc3VsdCA9IHN0YXRlWydkZWZhdWx0J107XG4gIHZhciBwcmVzZW50ID0gdHJ1ZTtcblxuICB2YXIgcHJldktleTtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgICAgIHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQpO1xuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJlc2VudCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlc2VudCA9IHRoaXMuX3BlZWtUYWcoaW5wdXQsIHRhZywgc3RhdGUuYW55KTtcblxuICAgICAgaWYgKGlucHV0LmlzRXJyb3IocHJlc2VudCkpXG4gICAgICAgIHJldHVybiBwcmVzZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggb2JqZWN0IG9uIHN0YWNrXG4gIHZhciBwcmV2T2JqO1xuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcHJldk9iaiA9IGlucHV0LmVudGVyT2JqZWN0KCk7XG5cbiAgaWYgKHByZXNlbnQpIHtcbiAgICAvLyBVbndyYXAgZXhwbGljaXQgdmFsdWVzXG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB2YXIgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IHByb3BlciBtZXRob2QgZm9yIHRhZ1xuICAgIGlmIChzdGF0ZS5hbnkpXG4gICAgICByZXN1bHQgPSByZXN1bHQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0KTtcbiAgICBlbHNlXG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQpO1xuXG4gICAgaWYgKGlucHV0LmlzRXJyb3IocmVzdWx0KSlcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAvLyBEZWNvZGUgY2hpbGRyZW5cbiAgICBpZiAoIXN0YXRlLmFueSAmJiBzdGF0ZS5jaG9pY2UgPT09IG51bGwgJiYgc3RhdGUuY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gZGVjb2RlQ2hpbGRyZW4oY2hpbGQpIHtcbiAgICAgICAgLy8gTk9URTogV2UgYXJlIGlnbm9yaW5nIGVycm9ycyBoZXJlLCB0byBsZXQgcGFyc2VyIGNvbnRpbnVlIHdpdGggb3RoZXJcbiAgICAgICAgLy8gcGFydHMgb2YgZW5jb2RlZCBkYXRhXG4gICAgICAgIGNoaWxkLl9kZWNvZGUoaW5wdXQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRGVjb2RlIGNvbnRhaW5lZC9lbmNvZGVkIGJ5IHNjaGVtYSwgb25seSBpbiBiaXQgb3Igb2N0ZXQgc3RyaW5nc1xuICAgIGlmIChzdGF0ZS5jb250YWlucyAmJiAoc3RhdGUudGFnID09PSAnb2N0c3RyJyB8fCBzdGF0ZS50YWcgPT09ICdiaXRzdHInKSkge1xuICAgICAgdmFyIGRhdGEgPSBuZXcgRGVjb2RlckJ1ZmZlcihyZXN1bHQpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9wIG9iamVjdFxuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcmVzdWx0ID0gaW5wdXQubGVhdmVPYmplY3QocHJldk9iaik7XG5cbiAgLy8gU2V0IGtleVxuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsICYmIChyZXN1bHQgIT09IG51bGwgfHwgcHJlc2VudCA9PT0gdHJ1ZSkpXG4gICAgaW5wdXQubGVhdmVLZXkocHJldktleSwgc3RhdGUua2V5LCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdKTtcbiAgZWxzZSBpZiAoc3RhdGUudXNlICE9PSBudWxsKVxuICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoaW5wdXQpO1xuICBlbHNlXG4gICAgcmV0dXJuIGlucHV0LmVycm9yKCd1bmtub3duIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9tbWl0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdCA9IGZ1bmN0aW9uIGVudGVyT2JqZWN0KCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBwcmV2ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSB7fTtcbiAgcmV0dXJuIHByZXY7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVPYmplY3QgPSBmdW5jdGlvbiBsZWF2ZU9iamVjdChwcmV2KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIG5vdyA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0gcHJldjtcbiAgcmV0dXJuIG5vdztcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICB2YXIgZXJyO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBpbmhlcml0ZWQgPSBtc2cgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xuICBpZiAoaW5oZXJpdGVkKSB7XG4gICAgZXJyID0gbXNnO1xuICB9IGVsc2Uge1xuICAgIGVyciA9IG5ldyBSZXBvcnRlckVycm9yKHN0YXRlLnBhdGgubWFwKGZ1bmN0aW9uKGVsZW0pIHtcbiAgICAgIHJldHVybiAnWycgKyBKU09OLnN0cmluZ2lmeShlbGVtKSArICddJztcbiAgICB9KS5qb2luKCcnKSwgbXNnLm1lc3NhZ2UgfHwgbXNnLCBtc2cuc3RhY2spO1xuICB9XG5cbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgdGhyb3cgZXJyO1xuXG4gIGlmICghaW5oZXJpdGVkKVxuICAgIHN0YXRlLmVycm9ycy5wdXNoKGVycik7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS53cmFwUmVzdWx0ID0gZnVuY3Rpb24gd3JhcFJlc3VsdChyZXN1bHQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICByZXR1cm4ge1xuICAgIHJlc3VsdDogdGhpcy5pc0Vycm9yKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0LFxuICAgIGVycm9yczogc3RhdGUuZXJyb3JzXG4gIH07XG59O1xuXG5mdW5jdGlvbiBSZXBvcnRlckVycm9yKHBhdGgsIG1zZykge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnJldGhyb3cobXNnKTtcbn07XG5pbmhlcml0cyhSZXBvcnRlckVycm9yLCBFcnJvcik7XG5cblJlcG9ydGVyRXJyb3IucHJvdG90eXBlLnJldGhyb3cgPSBmdW5jdGlvbiByZXRocm93KG1zZykge1xuICB0aGlzLm1lc3NhZ2UgPSBtc2cgKyAnIGF0OiAnICsgKHRoaXMucGF0aCB8fCAnKHNoYWxsb3cpJyk7XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXBvcnRlckVycm9yKTtcblxuICBpZiAoIXRoaXMuc3RhY2spIHtcbiAgICB0cnkge1xuICAgICAgLy8gSUUgb25seSBhZGRzIHN0YWNrIHdoZW4gdGhyb3duXG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnN0YWNrID0gZS5zdGFjaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuIiwidmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLnRhZ0NsYXNzID0ge1xuICAwOiAndW5pdmVyc2FsJyxcbiAgMTogJ2FwcGxpY2F0aW9uJyxcbiAgMjogJ2NvbnRleHQnLFxuICAzOiAncHJpdmF0ZSdcbn07XG5leHBvcnRzLnRhZ0NsYXNzQnlOYW1lID0gY29uc3RhbnRzLl9yZXZlcnNlKGV4cG9ydHMudGFnQ2xhc3MpO1xuXG5leHBvcnRzLnRhZyA9IHtcbiAgMHgwMDogJ2VuZCcsXG4gIDB4MDE6ICdib29sJyxcbiAgMHgwMjogJ2ludCcsXG4gIDB4MDM6ICdiaXRzdHInLFxuICAweDA0OiAnb2N0c3RyJyxcbiAgMHgwNTogJ251bGxfJyxcbiAgMHgwNjogJ29iamlkJyxcbiAgMHgwNzogJ29iakRlc2MnLFxuICAweDA4OiAnZXh0ZXJuYWwnLFxuICAweDA5OiAncmVhbCcsXG4gIDB4MGE6ICdlbnVtJyxcbiAgMHgwYjogJ2VtYmVkJyxcbiAgMHgwYzogJ3V0ZjhzdHInLFxuICAweDBkOiAncmVsYXRpdmVPaWQnLFxuICAweDEwOiAnc2VxJyxcbiAgMHgxMTogJ3NldCcsXG4gIDB4MTI6ICdudW1zdHInLFxuICAweDEzOiAncHJpbnRzdHInLFxuICAweDE0OiAndDYxc3RyJyxcbiAgMHgxNTogJ3ZpZGVvc3RyJyxcbiAgMHgxNjogJ2lhNXN0cicsXG4gIDB4MTc6ICd1dGN0aW1lJyxcbiAgMHgxODogJ2dlbnRpbWUnLFxuICAweDE5OiAnZ3JhcGhzdHInLFxuICAweDFhOiAnaXNvNjQ2c3RyJyxcbiAgMHgxYjogJ2dlbnN0cicsXG4gIDB4MWM6ICd1bmlzdHInLFxuICAweDFkOiAnY2hhcnN0cicsXG4gIDB4MWU6ICdibXBzdHInXG59O1xuZXhwb3J0cy50YWdCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWcpO1xuIiwidmFyIGNvbnN0YW50cyA9IGV4cG9ydHM7XG5cbi8vIEhlbHBlclxuY29uc3RhbnRzLl9yZXZlcnNlID0gZnVuY3Rpb24gcmV2ZXJzZShtYXApIHtcbiAgdmFyIHJlcyA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAvLyBDb252ZXJ0IGtleSB0byBpbnRlZ2VyIGlmIGl0IGlzIHN0cmluZ2lmaWVkXG4gICAgaWYgKChrZXkgfCAwKSA9PSBrZXkpXG4gICAgICBrZXkgPSBrZXkgfCAwO1xuXG4gICAgdmFyIHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmNvbnN0YW50cy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFzbjEgPSByZXF1aXJlKCcuLi8uLi9hc24xJyk7XG52YXIgYmFzZSA9IGFzbjEuYmFzZTtcbnZhciBiaWdudW0gPSBhc24xLmJpZ251bTtcblxuLy8gSW1wb3J0IERFUiBjb25zdGFudHNcbnZhciBkZXIgPSBhc24xLmNvbnN0YW50cy5kZXI7XG5cbmZ1bmN0aW9uIERFUkRlY29kZXIoZW50aXR5KSB7XG4gIHRoaXMuZW5jID0gJ2Rlcic7XG4gIHRoaXMubmFtZSA9IGVudGl0eS5uYW1lO1xuICB0aGlzLmVudGl0eSA9IGVudGl0eTtcblxuICAvLyBDb25zdHJ1Y3QgYmFzZSB0cmVlXG4gIHRoaXMudHJlZSA9IG5ldyBERVJOb2RlKCk7XG4gIHRoaXMudHJlZS5faW5pdChlbnRpdHkuYm9keSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBERVJEZWNvZGVyO1xuXG5ERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgYmFzZS5EZWNvZGVyQnVmZmVyKSlcbiAgICBkYXRhID0gbmV3IGJhc2UuRGVjb2RlckJ1ZmZlcihkYXRhLCBvcHRpb25zKTtcblxuICByZXR1cm4gdGhpcy50cmVlLl9kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgYmFzZS5Ob2RlLmNhbGwodGhpcywgJ2RlcicsIHBhcmVudCk7XG59XG5pbmhlcml0cyhERVJOb2RlLCBiYXNlLk5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fcGVla1RhZyA9IGZ1bmN0aW9uIHBlZWtUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICBpZiAoYnVmZmVyLmlzRW1wdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgdmFyIGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCAnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcblxuICByZXR1cm4gZGVjb2RlZFRhZy50YWcgPT09IHRhZyB8fCBkZWNvZGVkVGFnLnRhZ1N0ciA9PT0gdGFnIHx8XG4gICAgKGRlY29kZWRUYWcudGFnU3RyICsgJ29mJykgPT09IHRhZyB8fCBhbnk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGFnID0gZnVuY3Rpb24gZGVjb2RlVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgdmFyIGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICB2YXIgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkVGFnLnByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGdldCBsZW5ndGggb2YgXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gRmFpbHVyZVxuICBpZiAoYnVmZmVyLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIGlmICghYW55ICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZyAhPT0gdGFnICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZ1N0ciAhPT0gdGFnICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicgIT09IHRhZykge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICB9XG5cbiAgaWYgKGRlY29kZWRUYWcucHJpbWl0aXZlIHx8IGxlbiAhPT0gbnVsbClcbiAgICByZXR1cm4gYnVmZmVyLnNraXAobGVuLCAnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEluZGVmaW5pdGUgbGVuZ3RoLi4uIGZpbmQgRU5EIHRhZ1xuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKFxuICAgICAgYnVmZmVyLFxuICAgICAgJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6IFwiJyArIHRoaXMudGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG5cbiAgbGVuID0gYnVmZmVyLm9mZnNldCAtIHN0YXRlLm9mZnNldDtcbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuICByZXR1cm4gYnVmZmVyLnNraXAobGVuLCAnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJyArIHRhZyArICdcIicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBVbnRpbEVuZCA9IGZ1bmN0aW9uIHNraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB2YXIgdGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHRhZykpXG4gICAgICByZXR1cm4gdGFnO1xuICAgIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLCB0YWcucHJpbWl0aXZlLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IobGVuKSlcbiAgICAgIHJldHVybiBsZW47XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0YWcucHJpbWl0aXZlIHx8IGxlbiAhPT0gbnVsbClcbiAgICAgIHJlcyA9IGJ1ZmZlci5za2lwKGxlbilcbiAgICBlbHNlXG4gICAgICByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKTtcblxuICAgIC8vIEZhaWx1cmVcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICAgIHJldHVybiByZXM7XG5cbiAgICBpZiAodGFnLnRhZ1N0ciA9PT0gJ2VuZCcpXG4gICAgICBicmVhaztcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUxpc3QgPSBmdW5jdGlvbiBkZWNvZGVMaXN0KGJ1ZmZlciwgdGFnLCBkZWNvZGVyKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgdmFyIHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHZhciB1bnVzZWQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHVudXNlZCkpXG4gICAgICByZXR1cm4gdW51c2VkO1xuICAgIHJldHVybiB7IHVudXNlZDogdW51c2VkLCBkYXRhOiBidWZmZXIucmF3KCkgfTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgdmFyIHN0ciA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICB2YXIgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdwcmludHN0cicpIHtcbiAgICB2YXIgcHJpbnRzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHByaW50c3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gcHJpbnRzdHI7XG4gIH0gZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSkge1xuICAgIHJldHVybiBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU9iamlkID0gZnVuY3Rpb24gZGVjb2RlT2JqaWQoYnVmZmVyLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIHZhciByZXN1bHQ7XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICB2YXIgaWRlbnQgPSAwO1xuICB3aGlsZSAoIWJ1ZmZlci5pc0VtcHR5KCkpIHtcbiAgICB2YXIgc3ViaWRlbnQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWRlbnQgPDw9IDc7XG4gICAgaWRlbnQgfD0gc3ViaWRlbnQgJiAweDdmO1xuICAgIGlmICgoc3ViaWRlbnQgJiAweDgwKSA9PT0gMCkge1xuICAgICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG4gICAgICBpZGVudCA9IDA7XG4gICAgfVxuICB9XG4gIGlmIChzdWJpZGVudCAmIDB4ODApXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG5cbiAgdmFyIGZpcnN0ID0gKGlkZW50aWZpZXJzWzBdIC8gNDApIHwgMDtcbiAgdmFyIHNlY29uZCA9IGlkZW50aWZpZXJzWzBdICUgNDA7XG5cbiAgaWYgKHJlbGF0aXZlKVxuICAgIHJlc3VsdCA9IGlkZW50aWZpZXJzO1xuICBlbHNlXG4gICAgcmVzdWx0ID0gW2ZpcnN0LCBzZWNvbmRdLmNvbmNhdChpZGVudGlmaWVycy5zbGljZSgxKSk7XG5cbiAgaWYgKHZhbHVlcykge1xuICAgIHZhciB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJyAnKV07XG4gICAgaWYgKHRtcCA9PT0gdW5kZWZpbmVkKVxuICAgICAgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcuJyldO1xuICAgIGlmICh0bXAgIT09IHVuZGVmaW5lZClcbiAgICAgIHJlc3VsdCA9IHRtcDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGltZSA9IGZ1bmN0aW9uIGRlY29kZVRpbWUoYnVmZmVyLCB0YWcpIHtcbiAgdmFyIHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICB2YXIgeWVhciA9IHN0ci5zbGljZSgwLCA0KSB8IDA7XG4gICAgdmFyIG1vbiA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgdmFyIGRheSA9IHN0ci5zbGljZSg2LCA4KSB8IDA7XG4gICAgdmFyIGhvdXIgPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIHZhciBzZWMgPSBzdHIuc2xpY2UoMTIsIDE0KSB8IDA7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICB2YXIgeWVhciA9IHN0ci5zbGljZSgwLCAyKSB8IDA7XG4gICAgdmFyIG1vbiA9IHN0ci5zbGljZSgyLCA0KSB8IDA7XG4gICAgdmFyIGRheSA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgdmFyIGhvdXIgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBtaW4gPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIGlmICh5ZWFyIDwgNzApXG4gICAgICB5ZWFyID0gMjAwMCArIHllYXI7XG4gICAgZWxzZVxuICAgICAgeWVhciA9IDE5MDAgKyB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiBEYXRlLlVUQyh5ZWFyLCBtb24gLSAxLCBkYXksIGhvdXIsIG1pbiwgc2VjLCAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVOdWxsID0gZnVuY3Rpb24gZGVjb2RlTnVsbChidWZmZXIpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlQm9vbCA9IGZ1bmN0aW9uIGRlY29kZUJvb2woYnVmZmVyKSB7XG4gIHZhciByZXMgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVzICE9PSAwO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChidWZmZXIsIHZhbHVlcykge1xuICAvLyBCaWdpbnQsIHJldHVybiBhcyBpdCBpcyAoYXNzdW1lIGJpZyBlbmRpYW4pXG4gIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gIHZhciByZXMgPSBuZXcgYmlnbnVtKHJhdyk7XG5cbiAgaWYgKHZhbHVlcylcbiAgICByZXMgPSB2YWx1ZXNbcmVzLnRvU3RyaW5nKDEwKV0gfHwgcmVzO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXREZWNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGRlckRlY29kZVRhZyhidWYsIGZhaWwpIHtcbiAgdmFyIHRhZyA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcih0YWcpKVxuICAgIHJldHVybiB0YWc7XG5cbiAgdmFyIGNscyA9IGRlci50YWdDbGFzc1t0YWcgPj4gNl07XG4gIHZhciBwcmltaXRpdmUgPSAodGFnICYgMHgyMCkgPT09IDA7XG5cbiAgLy8gTXVsdGktb2N0ZXQgdGFnIC0gbG9hZFxuICBpZiAoKHRhZyAmIDB4MWYpID09PSAweDFmKSB7XG4gICAgdmFyIG9jdCA9IHRhZztcbiAgICB0YWcgPSAwO1xuICAgIHdoaWxlICgob2N0ICYgMHg4MCkgPT09IDB4ODApIHtcbiAgICAgIG9jdCA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgICBpZiAoYnVmLmlzRXJyb3Iob2N0KSlcbiAgICAgICAgcmV0dXJuIG9jdDtcblxuICAgICAgdGFnIDw8PSA3O1xuICAgICAgdGFnIHw9IG9jdCAmIDB4N2Y7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhZyAmPSAweDFmO1xuICB9XG4gIHZhciB0YWdTdHIgPSBkZXIudGFnW3RhZ107XG5cbiAgcmV0dXJuIHtcbiAgICBjbHM6IGNscyxcbiAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSxcbiAgICB0YWc6IHRhZyxcbiAgICB0YWdTdHI6IHRhZ1N0clxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXJEZWNvZGVMZW4oYnVmLCBwcmltaXRpdmUsIGZhaWwpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgLy8gSW5kZWZpbml0ZSBmb3JtXG4gIGlmICghcHJpbWl0aXZlICYmIGxlbiA9PT0gMHg4MClcbiAgICByZXR1cm4gbnVsbDtcblxuICAvLyBEZWZpbml0ZSBmb3JtXG4gIGlmICgobGVuICYgMHg4MCkgPT09IDApIHtcbiAgICAvLyBTaG9ydCBmb3JtXG4gICAgcmV0dXJuIGxlbjtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICB2YXIgbnVtID0gbGVuICYgMHg3ZjtcbiAgaWYgKG51bSA+PSA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIHZhciBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCJ2YXIgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTURlY29kZXIsIERFUkRlY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1EZWNvZGVyO1xuXG5QRU1EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICB2YXIgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgdmFyIHJlID0gL14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO1xuICB2YXIgc3RhcnQgPSAtMTtcbiAgdmFyIGVuZCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgdmFyIGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSwgJycpO1xuXG4gIHZhciBpbnB1dCA9IG5ldyBCdWZmZXIoYmFzZTY0LCAnYmFzZTY0Jyk7XG4gIHJldHVybiBERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLCBpbnB1dCwgb3B0aW9ucyk7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZSA9IGZ1bmN0aW9uIGVuY29kZUNvbXBvc2l0ZSh0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50KSB7XG4gIHZhciBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDIpO1xuICAgIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gICAgaGVhZGVyWzFdID0gY29udGVudC5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgLy8gQ291bnQgb2N0ZXRzIHJlcXVpcmVkIHRvIHN0b3JlIGxlbmd0aFxuICB2YXIgbGVuT2N0ZXRzID0gMTtcbiAgZm9yICh2YXIgaSA9IGNvbnRlbnQubGVuZ3RoOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIGxlbk9jdGV0cysrO1xuXG4gIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKHZhciBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoICogMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQgPSBmdW5jdGlvbiBlbmNvZGVPYmppZChpZCwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ3N0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShpZCkpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAnKTtcbiAgICBpZCA9IHZhbHVlc1tpZF0uc3BsaXQoL1tcXHNcXC5dKy9nKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIGlkID0gaWQuc2xpY2UoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdDogJyArIEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gIH1cblxuICBpZiAoIXJlbGF0aXZlKSB7XG4gICAgaWYgKGlkWzFdID49IDQwKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1NlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQicpO1xuICAgIGlkLnNwbGljZSgwLCAyLCBpZFswXSAqIDQwICsgaWRbMV0pO1xuICB9XG5cbiAgLy8gQ291bnQgbnVtYmVyIG9mIG9jdGV0c1xuICB2YXIgc2l6ZSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaWRlbnQgPSBpZFtpXTtcbiAgICBmb3IgKHNpemUrKzsgaWRlbnQgPj0gMHg4MDsgaWRlbnQgPj49IDcpXG4gICAgICBzaXplKys7XG4gIH1cblxuICB2YXIgb2JqaWQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgb2Zmc2V0ID0gb2JqaWQubGVuZ3RoIC0gMTtcbiAgZm9yICh2YXIgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgb2JqaWRbb2Zmc2V0LS1dID0gaWRlbnQgJiAweDdmO1xuICAgIHdoaWxlICgoaWRlbnQgPj49IDcpID4gMClcbiAgICAgIG9iamlkW29mZnNldC0tXSA9IDB4ODAgfCAoaWRlbnQgJiAweDdmKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9iamlkKTtcbn07XG5cbmZ1bmN0aW9uIHR3byhudW0pIHtcbiAgaWYgKG51bSA8IDEwKVxuICAgIHJldHVybiAnMCcgKyBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gbnVtO1xufVxuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlVGltZSA9IGZ1bmN0aW9uIGVuY29kZVRpbWUodGltZSwgdGFnKSB7XG4gIHZhciBzdHI7XG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XG5cbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRGdWxsWWVhcigpICUgMTAwKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHN0ciwgJ29jdHN0cicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU51bGwgPSBmdW5jdGlvbiBlbmNvZGVOdWxsKCkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcignJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSwgdmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1N0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShudW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignVmFsdWVzIG1hcCBkb2VzblxcJ3QgY29udGFpbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShudW0pKTtcbiAgICB9XG4gICAgbnVtID0gdmFsdWVzW251bV07XG4gIH1cblxuICAvLyBCaWdudW0sIGFzc3VtZSBiaWcgZW5kaWFuXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiAhQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgbnVtQXJyYXkgPSBudW0udG9BcnJheSgpO1xuICAgIGlmICghbnVtLnNpZ24gJiYgbnVtQXJyYXlbMF0gJiAweDgwKSB7XG4gICAgICBudW1BcnJheS51bnNoaWZ0KDApO1xuICAgIH1cbiAgICBudW0gPSBuZXcgQnVmZmVyKG51bUFycmF5KTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIHZhciBzaXplID0gbnVtLmxlbmd0aDtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIHNpemUrKztcblxuICAgIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICAgIG51bS5jb3B5KG91dCk7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBvdXRbMF0gPSAwXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIob3V0KTtcbiAgfVxuXG4gIGlmIChudW0gPCAweDgwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG51bSk7XG5cbiAgaWYgKG51bSA8IDB4MTAwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLCBudW1dKTtcblxuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSBudW07IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgc2l6ZSsrO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gIGZvciAodmFyIGkgPSBvdXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBvdXRbaV0gPSBudW0gJiAweGZmO1xuICAgIG51bSA+Pj0gODtcbiAgfVxuICBpZihvdXRbMF0gJiAweDgwKSB7XG4gICAgb3V0LnVuc2hpZnQoMCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihuZXcgQnVmZmVyKG91dCkpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUJvb2wgPSBmdW5jdGlvbiBlbmNvZGVCb29sKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHZhbHVlID8gMHhmZiA6IDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RW5jb2RlcignZGVyJykudHJlZTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwRGVmYXVsdCA9IGZ1bmN0aW9uIHNraXBEZWZhdWx0KGRhdGFCdWZmZXIsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgaTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBkYXRhID0gZGF0YUJ1ZmZlci5qb2luKCk7XG4gIGlmIChzdGF0ZS5kZWZhdWx0QnVmZmVyID09PSB1bmRlZmluZWQpXG4gICAgc3RhdGUuZGVmYXVsdEJ1ZmZlciA9IHRoaXMuX2VuY29kZVZhbHVlKHN0YXRlWydkZWZhdWx0J10sIHJlcG9ydGVyLCBwYXJlbnQpLmpvaW4oKTtcblxuICBpZiAoZGF0YS5sZW5ndGggIT09IHN0YXRlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRhdGFbaV0gIT09IHN0YXRlLmRlZmF1bHRCdWZmZXJbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHJlcG9ydGVyKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJylcbiAgICB0YWcgPSAnc2VxJztcbiAgZWxzZSBpZiAodGFnID09PSAnc2V0b2YnKVxuICAgIHRhZyA9ICdzZXQnO1xuXG4gIGlmIChkZXIudGFnQnlOYW1lLmhhc093blByb3BlcnR5KHRhZykpXG4gICAgcmVzID0gZGVyLnRhZ0J5TmFtZVt0YWddO1xuICBlbHNlIGlmICh0eXBlb2YgdGFnID09PSAnbnVtYmVyJyAmJiAodGFnIHwgMCkgPT09IHRhZylcbiAgICByZXMgPSB0YWc7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vua25vd24gdGFnOiAnICsgdGFnKTtcblxuICBpZiAocmVzID49IDB4MWYpXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnKTtcblxuICBpZiAoIXByaW1pdGl2ZSlcbiAgICByZXMgfD0gMHgyMDtcblxuICByZXMgfD0gKGRlci50YWdDbGFzc0J5TmFtZVtjbHMgfHwgJ3VuaXZlcnNhbCddIDw8IDYpO1xuXG4gIHJldHVybiByZXM7XG59XG4iLCJ2YXIgZW5jb2RlcnMgPSBleHBvcnRzO1xuXG5lbmNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZW5jb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBERVJFbmNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRW5jb2RlcihlbnRpdHkpIHtcbiAgREVSRW5jb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59O1xuaW5oZXJpdHMoUEVNRW5jb2RlciwgREVSRW5jb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTUVuY29kZXI7XG5cblBFTUVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBidWYgPSBERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLCBkYXRhKTtcblxuICB2YXIgcCA9IGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG4gIHZhciBvdXQgPSBbICctLS0tLUJFR0lOICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpICs9IDY0KVxuICAgIG91dC5wdXNoKHAuc2xpY2UoaSwgaSArIDY0KSk7XG4gIG91dC5wdXNoKCctLS0tLUVORCAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScpO1xuICByZXR1cm4gb3V0LmpvaW4oJ1xcbicpO1xufTtcbiIsInZhciBsb29rdXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG5cbjsoZnVuY3Rpb24gKGV4cG9ydHMpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG4gIHZhciBBcnIgPSAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKVxuICAgID8gVWludDhBcnJheVxuICAgIDogQXJyYXlcblxuXHR2YXIgUExVUyAgID0gJysnLmNoYXJDb2RlQXQoMClcblx0dmFyIFNMQVNIICA9ICcvJy5jaGFyQ29kZUF0KDApXG5cdHZhciBOVU1CRVIgPSAnMCcuY2hhckNvZGVBdCgwKVxuXHR2YXIgTE9XRVIgID0gJ2EnLmNoYXJDb2RlQXQoMClcblx0dmFyIFVQUEVSICA9ICdBJy5jaGFyQ29kZUF0KDApXG5cdHZhciBQTFVTX1VSTF9TQUZFID0gJy0nLmNoYXJDb2RlQXQoMClcblx0dmFyIFNMQVNIX1VSTF9TQUZFID0gJ18nLmNoYXJDb2RlQXQoMClcblxuXHRmdW5jdGlvbiBkZWNvZGUgKGVsdCkge1xuXHRcdHZhciBjb2RlID0gZWx0LmNoYXJDb2RlQXQoMClcblx0XHRpZiAoY29kZSA9PT0gUExVUyB8fFxuXHRcdCAgICBjb2RlID09PSBQTFVTX1VSTF9TQUZFKVxuXHRcdFx0cmV0dXJuIDYyIC8vICcrJ1xuXHRcdGlmIChjb2RlID09PSBTTEFTSCB8fFxuXHRcdCAgICBjb2RlID09PSBTTEFTSF9VUkxfU0FGRSlcblx0XHRcdHJldHVybiA2MyAvLyAnLydcblx0XHRpZiAoY29kZSA8IE5VTUJFUilcblx0XHRcdHJldHVybiAtMSAvL25vIG1hdGNoXG5cdFx0aWYgKGNvZGUgPCBOVU1CRVIgKyAxMClcblx0XHRcdHJldHVybiBjb2RlIC0gTlVNQkVSICsgMjYgKyAyNlxuXHRcdGlmIChjb2RlIDwgVVBQRVIgKyAyNilcblx0XHRcdHJldHVybiBjb2RlIC0gVVBQRVJcblx0XHRpZiAoY29kZSA8IExPV0VSICsgMjYpXG5cdFx0XHRyZXR1cm4gY29kZSAtIExPV0VSICsgMjZcblx0fVxuXG5cdGZ1bmN0aW9uIGI2NFRvQnl0ZUFycmF5IChiNjQpIHtcblx0XHR2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuXG5cdFx0aWYgKGI2NC5sZW5ndGggJSA0ID4gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Jylcblx0XHR9XG5cblx0XHQvLyB0aGUgbnVtYmVyIG9mIGVxdWFsIHNpZ25zIChwbGFjZSBob2xkZXJzKVxuXHRcdC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcblx0XHQvLyByZXByZXNlbnQgb25lIGJ5dGVcblx0XHQvLyBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgdGhlbiB0aGUgdGhyZWUgY2hhcmFjdGVycyBiZWZvcmUgaXQgcmVwcmVzZW50IDIgYnl0ZXNcblx0XHQvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG5cdFx0dmFyIGxlbiA9IGI2NC5sZW5ndGhcblx0XHRwbGFjZUhvbGRlcnMgPSAnPScgPT09IGI2NC5jaGFyQXQobGVuIC0gMikgPyAyIDogJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDEpID8gMSA6IDBcblxuXHRcdC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuXHRcdGFyciA9IG5ldyBBcnIoYjY0Lmxlbmd0aCAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG5cdFx0Ly8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuXHRcdGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gYjY0Lmxlbmd0aCAtIDQgOiBiNjQubGVuZ3RoXG5cblx0XHR2YXIgTCA9IDBcblxuXHRcdGZ1bmN0aW9uIHB1c2ggKHYpIHtcblx0XHRcdGFycltMKytdID0gdlxuXHRcdH1cblxuXHRcdGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTgpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgMTIpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPDwgNikgfCBkZWNvZGUoYjY0LmNoYXJBdChpICsgMykpXG5cdFx0XHRwdXNoKCh0bXAgJiAweEZGMDAwMCkgPj4gMTYpXG5cdFx0XHRwdXNoKCh0bXAgJiAweEZGMDApID4+IDgpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fVxuXG5cdFx0aWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuXHRcdFx0dG1wID0gKGRlY29kZShiNjQuY2hhckF0KGkpKSA8PCAyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpID4+IDQpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTApIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgNCkgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDIpKSA+PiAyKVxuXHRcdFx0cHVzaCgodG1wID4+IDgpICYgMHhGRilcblx0XHRcdHB1c2godG1wICYgMHhGRilcblx0XHR9XG5cblx0XHRyZXR1cm4gYXJyXG5cdH1cblxuXHRmdW5jdGlvbiB1aW50OFRvQmFzZTY0ICh1aW50OCkge1xuXHRcdHZhciBpLFxuXHRcdFx0ZXh0cmFCeXRlcyA9IHVpbnQ4Lmxlbmd0aCAlIDMsIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG5cdFx0XHRvdXRwdXQgPSBcIlwiLFxuXHRcdFx0dGVtcCwgbGVuZ3RoXG5cblx0XHRmdW5jdGlvbiBlbmNvZGUgKG51bSkge1xuXHRcdFx0cmV0dXJuIGxvb2t1cC5jaGFyQXQobnVtKVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG5cdFx0XHRyZXR1cm4gZW5jb2RlKG51bSA+PiAxOCAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiAxMiAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiA2ICYgMHgzRikgKyBlbmNvZGUobnVtICYgMHgzRilcblx0XHR9XG5cblx0XHQvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG5cdFx0Zm9yIChpID0gMCwgbGVuZ3RoID0gdWludDgubGVuZ3RoIC0gZXh0cmFCeXRlczsgaSA8IGxlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHR0ZW1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuXHRcdFx0b3V0cHV0ICs9IHRyaXBsZXRUb0Jhc2U2NCh0ZW1wKVxuXHRcdH1cblxuXHRcdC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcblx0XHRzd2l0Y2ggKGV4dHJhQnl0ZXMpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0dGVtcCA9IHVpbnQ4W3VpbnQ4Lmxlbmd0aCAtIDFdXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAyKVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKCh0ZW1wIDw8IDQpICYgMHgzRilcblx0XHRcdFx0b3V0cHV0ICs9ICc9PSdcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0dGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSlcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSh0ZW1wID4+IDEwKVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKCh0ZW1wID4+IDQpICYgMHgzRilcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCAyKSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSAnPSdcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0cHV0XG5cdH1cblxuXHRleHBvcnRzLnRvQnl0ZUFycmF5ID0gYjY0VG9CeXRlQXJyYXlcblx0ZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gdWludDhUb0Jhc2U2NFxufSh0eXBlb2YgZXhwb3J0cyA9PT0gJ3VuZGVmaW5lZCcgPyAodGhpcy5iYXNlNjRqcyA9IHt9KSA6IGV4cG9ydHMpKVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBCdWZmZXIgPSByZXF1aXJlKCdidWYnICsgJ2ZlcicpLkJ1ZmZlcjtcbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQk4nICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4IChzdHIsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciA8PD0gNDtcblxuICAgICAgLy8gJ2EnIC0gJ2YnXG4gICAgICBpZiAoYyA+PSA0OSAmJiBjIDw9IDU0KSB7XG4gICAgICAgIHIgfD0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQScgLSAnRidcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNyAmJiBjIDw9IDIyKSB7XG4gICAgICAgIHIgfD0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgfD0gYyAmIDB4ZjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0KSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgLy8gU2NhbiAyNC1iaXQgY2h1bmtzIGFuZCBhZGQgdGhlbSB0byB0aGUgbnVtYmVyXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDYsIGogPSAwOyBpID49IHN0YXJ0OyBpIC09IDYpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIGksIGkgKyA2KTtcbiAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgIC8vIE5PVEU6IGAweDNmZmZmZmAgaXMgaW50ZW50aW9uYWwgaGVyZSwgMjZiaXRzIG1heCBzaGlmdCArIDI0Yml0IGhleCBsaW1iXG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgICBvZmYgKz0gMjQ7XG4gICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgaisrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSArIDYgIT09IHN0YXJ0KSB7XG4gICAgICB3ID0gcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tqICsgMV0gfD0gdyA+Pj4gKDI2IC0gb2ZmKSAmIDB4M2ZmZmZmO1xuICAgIH1cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICBpZiAod2luZG93LmNyeXB0byAmJiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIE1vZGVybiBicm93c2Vyc1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cubXNDcnlwdG8gJiYgd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIElFXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyXG4gIHRyeSB7XG4gICAgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeScgKyAncHRvJyk7XG5cbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMobik7XG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gIH1cbn1cbiIsbnVsbCwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG52YXIgcm9vdFBhcmVudCA9IHt9XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gU2FmYXJpIDUtNyBsYWNrcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgYE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3JgIHByb3BlcnR5XG4gKiAgICAgb24gb2JqZWN0cy5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIGZ1bmN0aW9uIEJhciAoKSB7fVxuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5mb28gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9XG4gICAgYXJyLmNvbnN0cnVjdG9yID0gQmFyXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgYXJyLmNvbnN0cnVjdG9yID09PSBCYXIgJiYgLy8gY29uc3RydWN0b3IgY2FuIGJlIHNldFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG4vKipcbiAqIENsYXNzOiBCdWZmZXJcbiAqID09PT09PT09PT09PT1cbiAqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGFyZSBhdWdtZW50ZWRcbiAqIHdpdGggZnVuY3Rpb24gcHJvcGVydGllcyBmb3IgYWxsIHRoZSBub2RlIGBCdWZmZXJgIEFQSSBmdW5jdGlvbnMuIFdlIHVzZVxuICogYFVpbnQ4QXJyYXlgIHNvIHRoYXQgc3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXQgcmV0dXJuc1xuICogYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogQnkgYXVnbWVudGluZyB0aGUgaW5zdGFuY2VzLCB3ZSBjYW4gYXZvaWQgbW9kaWZ5aW5nIHRoZSBgVWludDhBcnJheWBcbiAqIHByb3RvdHlwZS5cbiAqL1xuZnVuY3Rpb24gQnVmZmVyIChhcmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAvLyBBdm9pZCBnb2luZyB0aHJvdWdoIGFuIEFyZ3VtZW50c0FkYXB0b3JUcmFtcG9saW5lIGluIHRoZSBjb21tb24gY2FzZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHJldHVybiBuZXcgQnVmZmVyKGFyZywgYXJndW1lbnRzWzFdKVxuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZylcbiAgfVxuXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDBcbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmcm9tTnVtYmVyKHRoaXMsIGFyZylcbiAgfVxuXG4gIC8vIFNsaWdodGx5IGxlc3MgY29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoaXMsIGFyZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiAndXRmOCcpXG4gIH1cblxuICAvLyBVbnVzdWFsLlxuICByZXR1cm4gZnJvbU9iamVjdCh0aGlzLCBhcmcpXG59XG5cbmZ1bmN0aW9uIGZyb21OdW1iZXIgKHRoYXQsIGxlbmd0aCkge1xuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGxlbmd0aCkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgLy8gQXNzdW1wdGlvbjogYnl0ZUxlbmd0aCgpIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgPCBrTWF4TGVuZ3RoLlxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcblxuICB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHJldHVybiBmcm9tQnVmZmVyKHRoYXQsIG9iamVjdClcblxuICBpZiAoaXNBcnJheShvYmplY3QpKSByZXR1cm4gZnJvbUFycmF5KHRoYXQsIG9iamVjdClcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtdXN0IHN0YXJ0IHdpdGggbnVtYmVyLCBidWZmZXIsIGFycmF5IG9yIHN0cmluZycpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChvYmplY3QuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBmcm9tVHlwZWRBcnJheSh0aGF0LCBvYmplY3QpXG4gICAgfVxuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCBvYmplY3QpXG4gICAgfVxuICB9XG5cbiAgaWYgKG9iamVjdC5sZW5ndGgpIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iamVjdClcblxuICByZXR1cm4gZnJvbUpzb25PYmplY3QodGhhdCwgb2JqZWN0KVxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyICh0aGF0LCBidWZmZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYnVmZmVyLmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIGJ1ZmZlci5jb3B5KHRoYXQsIDAsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5ICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLy8gRHVwbGljYXRlIG9mIGZyb21BcnJheSgpIHRvIGtlZXAgZnJvbUFycmF5KCkgbW9ub21vcnBoaWMuXG5mdW5jdGlvbiBmcm9tVHlwZWRBcnJheSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgLy8gVHJ1bmNhdGluZyB0aGUgZWxlbWVudHMgaXMgcHJvYmFibHkgbm90IHdoYXQgcGVvcGxlIGV4cGVjdCBmcm9tIHR5cGVkXG4gIC8vIGFycmF5cyB3aXRoIEJZVEVTX1BFUl9FTEVNRU5UID4gMSBidXQgaXQncyBjb21wYXRpYmxlIHdpdGggdGhlIGJlaGF2aW9yXG4gIC8vIG9mIHRoZSBvbGQgQnVmZmVyIGNvbnN0cnVjdG9yLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICBhcnJheS5ieXRlTGVuZ3RoXG4gICAgdGhhdCA9IEJ1ZmZlci5fYXVnbWVudChuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tVHlwZWRBcnJheSh0aGF0LCBuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8vIERlc2VyaWFsaXplIHsgdHlwZTogJ0J1ZmZlcicsIGRhdGE6IFsxLDIsMywuLi5dIH0gaW50byBhIEJ1ZmZlciBvYmplY3QuXG4vLyBSZXR1cm5zIGEgemVyby1sZW5ndGggYnVmZmVyIGZvciBpbnB1dHMgdGhhdCBkb24ndCBjb25mb3JtIHRvIHRoZSBzcGVjLlxuZnVuY3Rpb24gZnJvbUpzb25PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICB2YXIgYXJyYXlcbiAgdmFyIGxlbmd0aCA9IDBcblxuICBpZiAob2JqZWN0LnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqZWN0LmRhdGEpKSB7XG4gICAgYXJyYXkgPSBvYmplY3QuZGF0YVxuICAgIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgfVxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxufSBlbHNlIHtcbiAgLy8gcHJlLXNldCBmb3IgdmFsdWVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBmdXR1cmVcbiAgQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSB1bmRlZmluZWRcbiAgQnVmZmVyLnByb3RvdHlwZS5wYXJlbnQgPSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gYWxsb2NhdGUgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGxlbmd0aCkpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhhdC5faXNCdWZmZXIgPSB0cnVlXG4gIH1cblxuICB2YXIgZnJvbVBvb2wgPSBsZW5ndGggIT09IDAgJiYgbGVuZ3RoIDw9IEJ1ZmZlci5wb29sU2l6ZSA+Pj4gMVxuICBpZiAoZnJvbVBvb2wpIHRoYXQucGFyZW50ID0gcm9vdFBhcmVudFxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAoc3ViamVjdCwgZW5jb2RpbmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNsb3dCdWZmZXIpKSByZXR1cm4gbmV3IFNsb3dCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG4gIGRlbGV0ZSBidWYucGFyZW50XG4gIHJldHVybiBidWZcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIHZhciBpID0gMFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgYnJlYWtcblxuICAgICsraVxuICB9XG5cbiAgaWYgKGkgIT09IGxlbikge1xuICAgIHggPSBhW2ldXG4gICAgeSA9IGJbaV1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAncmF3JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMuJylcblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgaXRlbS5jb3B5KGJ1ZiwgcG9zKVxuICAgIHBvcyArPSBpdGVtLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHN0cmluZyA9ICcnICsgc3RyaW5nXG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAvLyBEZXByZWNhdGVkXG4gICAgICBjYXNlICdyYXcnOlxuICAgICAgY2FzZSAncmF3cyc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgc3RhcnQgPSBzdGFydCB8IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBJbmZpbml0eSA/IHRoaXMubGVuZ3RoIDogZW5kIHwgMFxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG4gIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGJpbmFyeVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gMFxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYilcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0KSB7XG4gIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgYnl0ZU9mZnNldCA+Pj0gMFxuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG4gIGlmIChieXRlT2Zmc2V0ID49IHRoaXMubGVuZ3RoKSByZXR1cm4gLTFcblxuICAvLyBOZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoICsgYnl0ZU9mZnNldCwgMClcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xIC8vIHNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nIGFsd2F5cyBmYWlsc1xuICAgIHJldHVybiBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcywgdmFsLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIFsgdmFsIF0sIGJ5dGVPZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0KSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAodmFyIGkgPSAwOyBieXRlT2Zmc2V0ICsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltieXRlT2Zmc2V0ICsgaV0gPT09IHZhbFtmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleF0pIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWwubGVuZ3RoKSByZXR1cm4gYnl0ZU9mZnNldCArIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbi8vIGBnZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5nZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLnJlYWRVSW50OChvZmZzZXQpXG59XG5cbi8vIGBzZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gc2V0ICh2LCBvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5zZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLndyaXRlVUludDgodiwgb2Zmc2V0KVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJpbmFyeVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3dhcCA9IGVuY29kaW5nXG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSBsZW5ndGggfCAwXG4gICAgbGVuZ3RoID0gc3dhcFxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBiaW5hcnlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGJpbmFyeVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSBCdWZmZXIuX2F1Z21lbnQodGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSlcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyBpKyspIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdCdWYubGVuZ3RoKSBuZXdCdWYucGFyZW50ID0gdGhpcy5wYXJlbnQgfHwgdGhpc1xuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZSBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyBpKyspIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgaSsrKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IHZhbHVlIDwgMCA/IDEgOiAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gdmFsdWUgPCAwID8gMSA6IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWUgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5fc2V0KHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIGZpbGwodmFsdWUsIHN0YXJ0PTAsIGVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCkgZW5kID0gdGhpcy5sZW5ndGhcblxuICBpZiAoZW5kIDwgc3RhcnQpIHRocm93IG5ldyBSYW5nZUVycm9yKCdlbmQgPCBzdGFydCcpXG5cbiAgLy8gRmlsbCAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpc1tpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IHV0ZjhUb0J5dGVzKHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXNbaV0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBgQXJyYXlCdWZmZXJgIHdpdGggdGhlICpjb3BpZWQqIG1lbW9yeSBvZiB0aGUgYnVmZmVyIGluc3RhbmNlLlxuICogQWRkZWQgaW4gTm9kZSAwLjEyLiBPbmx5IGF2YWlsYWJsZSBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgQXJyYXlCdWZmZXIuXG4gKi9cbkJ1ZmZlci5wcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIgKCkge1xuICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgICByZXR1cm4gKG5ldyBCdWZmZXIodGhpcykpLmJ1ZmZlclxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgpXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYnVmLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGJ1ZltpXSA9IHRoaXNbaV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBidWYuYnVmZmVyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1ZmZlci50b0FycmF5QnVmZmVyIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyJylcbiAgfVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBCUCA9IEJ1ZmZlci5wcm90b3R5cGVcblxuLyoqXG4gKiBBdWdtZW50IGEgVWludDhBcnJheSAqaW5zdGFuY2UqIChub3QgdGhlIFVpbnQ4QXJyYXkgY2xhc3MhKSB3aXRoIEJ1ZmZlciBtZXRob2RzXG4gKi9cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIF9hdWdtZW50IChhcnIpIHtcbiAgYXJyLmNvbnN0cnVjdG9yID0gQnVmZmVyXG4gIGFyci5faXNCdWZmZXIgPSB0cnVlXG5cbiAgLy8gc2F2ZSByZWZlcmVuY2UgdG8gb3JpZ2luYWwgVWludDhBcnJheSBzZXQgbWV0aG9kIGJlZm9yZSBvdmVyd3JpdGluZ1xuICBhcnIuX3NldCA9IGFyci5zZXRcblxuICAvLyBkZXByZWNhdGVkXG4gIGFyci5nZXQgPSBCUC5nZXRcbiAgYXJyLnNldCA9IEJQLnNldFxuXG4gIGFyci53cml0ZSA9IEJQLndyaXRlXG4gIGFyci50b1N0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0xvY2FsZVN0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0pTT04gPSBCUC50b0pTT05cbiAgYXJyLmVxdWFscyA9IEJQLmVxdWFsc1xuICBhcnIuY29tcGFyZSA9IEJQLmNvbXBhcmVcbiAgYXJyLmluZGV4T2YgPSBCUC5pbmRleE9mXG4gIGFyci5jb3B5ID0gQlAuY29weVxuICBhcnIuc2xpY2UgPSBCUC5zbGljZVxuICBhcnIucmVhZFVJbnRMRSA9IEJQLnJlYWRVSW50TEVcbiAgYXJyLnJlYWRVSW50QkUgPSBCUC5yZWFkVUludEJFXG4gIGFyci5yZWFkVUludDggPSBCUC5yZWFkVUludDhcbiAgYXJyLnJlYWRVSW50MTZMRSA9IEJQLnJlYWRVSW50MTZMRVxuICBhcnIucmVhZFVJbnQxNkJFID0gQlAucmVhZFVJbnQxNkJFXG4gIGFyci5yZWFkVUludDMyTEUgPSBCUC5yZWFkVUludDMyTEVcbiAgYXJyLnJlYWRVSW50MzJCRSA9IEJQLnJlYWRVSW50MzJCRVxuICBhcnIucmVhZEludExFID0gQlAucmVhZEludExFXG4gIGFyci5yZWFkSW50QkUgPSBCUC5yZWFkSW50QkVcbiAgYXJyLnJlYWRJbnQ4ID0gQlAucmVhZEludDhcbiAgYXJyLnJlYWRJbnQxNkxFID0gQlAucmVhZEludDE2TEVcbiAgYXJyLnJlYWRJbnQxNkJFID0gQlAucmVhZEludDE2QkVcbiAgYXJyLnJlYWRJbnQzMkxFID0gQlAucmVhZEludDMyTEVcbiAgYXJyLnJlYWRJbnQzMkJFID0gQlAucmVhZEludDMyQkVcbiAgYXJyLnJlYWRGbG9hdExFID0gQlAucmVhZEZsb2F0TEVcbiAgYXJyLnJlYWRGbG9hdEJFID0gQlAucmVhZEZsb2F0QkVcbiAgYXJyLnJlYWREb3VibGVMRSA9IEJQLnJlYWREb3VibGVMRVxuICBhcnIucmVhZERvdWJsZUJFID0gQlAucmVhZERvdWJsZUJFXG4gIGFyci53cml0ZVVJbnQ4ID0gQlAud3JpdGVVSW50OFxuICBhcnIud3JpdGVVSW50TEUgPSBCUC53cml0ZVVJbnRMRVxuICBhcnIud3JpdGVVSW50QkUgPSBCUC53cml0ZVVJbnRCRVxuICBhcnIud3JpdGVVSW50MTZMRSA9IEJQLndyaXRlVUludDE2TEVcbiAgYXJyLndyaXRlVUludDE2QkUgPSBCUC53cml0ZVVJbnQxNkJFXG4gIGFyci53cml0ZVVJbnQzMkxFID0gQlAud3JpdGVVSW50MzJMRVxuICBhcnIud3JpdGVVSW50MzJCRSA9IEJQLndyaXRlVUludDMyQkVcbiAgYXJyLndyaXRlSW50TEUgPSBCUC53cml0ZUludExFXG4gIGFyci53cml0ZUludEJFID0gQlAud3JpdGVJbnRCRVxuICBhcnIud3JpdGVJbnQ4ID0gQlAud3JpdGVJbnQ4XG4gIGFyci53cml0ZUludDE2TEUgPSBCUC53cml0ZUludDE2TEVcbiAgYXJyLndyaXRlSW50MTZCRSA9IEJQLndyaXRlSW50MTZCRVxuICBhcnIud3JpdGVJbnQzMkxFID0gQlAud3JpdGVJbnQzMkxFXG4gIGFyci53cml0ZUludDMyQkUgPSBCUC53cml0ZUludDMyQkVcbiAgYXJyLndyaXRlRmxvYXRMRSA9IEJQLndyaXRlRmxvYXRMRVxuICBhcnIud3JpdGVGbG9hdEJFID0gQlAud3JpdGVGbG9hdEJFXG4gIGFyci53cml0ZURvdWJsZUxFID0gQlAud3JpdGVEb3VibGVMRVxuICBhcnIud3JpdGVEb3VibGVCRSA9IEJQLndyaXRlRG91YmxlQkVcbiAgYXJyLmZpbGwgPSBCUC5maWxsXG4gIGFyci5pbnNwZWN0ID0gQlAuaW5zcGVjdFxuICBhcnIudG9BcnJheUJ1ZmZlciA9IEJQLnRvQXJyYXlCdWZmZXJcblxuICByZXR1cm4gYXJyXG59XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuIiwidmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuaW5oZXJpdHMoQ2lwaGVyQmFzZSwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIHRoaXMuX2RlY29kZXIgPSBudWxsXG4gIHRoaXMuX2VuY29kaW5nID0gbnVsbFxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGlucHV0RW5jKVxuICB9XG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZyA9IGZ1bmN0aW9uICgpIHt9XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIGRvbmUoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9maW5hbCgpIHx8IG5ldyBCdWZmZXIoJycpXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW5hbCkge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cbiAgaWYgKHRoaXMuX2VuY29kaW5nICE9PSBlbmMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhblxcJ3Qgc3dpdGNoIGVuY29kaW5ncycpXG4gIH1cbiAgdmFyIG91dCA9IHRoaXMuX2RlY29kZXIud3JpdGUodmFsdWUpXG4gIGlmIChmaW5hbCkge1xuICAgIG91dCArPSB0aGlzLl9kZWNvZGVyLmVuZCgpXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuIiwidmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESChjdXJ2ZSkge1xuXHRyZXR1cm4gbmV3IEVDREgoY3VydmUpO1xufTtcblxudmFyIGFsaWFzZXMgPSB7XG5cdHNlY3AyNTZrMToge1xuXHRcdG5hbWU6ICdzZWNwMjU2azEnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AyMjRyMToge1xuXHRcdG5hbWU6ICdwMjI0Jyxcblx0XHRieXRlTGVuZ3RoOiAyOFxuXHR9LFxuXHRwcmltZTI1NnYxOiB7XG5cdFx0bmFtZTogJ3AyNTYnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHByaW1lMTkydjE6IHtcblx0XHRuYW1lOiAncDE5MicsXG5cdFx0Ynl0ZUxlbmd0aDogMjRcblx0fSxcblx0ZWQyNTUxOToge1xuXHRcdG5hbWU6ICdlZDI1NTE5Jyxcblx0XHRieXRlTGVuZ3RoOiAzMlxuXHR9LFxuXHRzZWNwMzg0cjE6IHtcblx0XHRuYW1lOiAncDM4NCcsXG5cdFx0Ynl0ZUxlbmd0aDogNDhcblx0fSxcblx0c2VjcDUyMXIxOiB7XG5cdFx0bmFtZTogJ3A1MjEnLFxuXHRcdGJ5dGVMZW5ndGg6IDY2XG5cdH1cbn07XG5cbmFsaWFzZXMucDIyNCA9IGFsaWFzZXMuc2VjcDIyNHIxO1xuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djE7XG5hbGlhc2VzLnAxOTIgPSBhbGlhc2VzLnNlY3AxOTJyMSA9IGFsaWFzZXMucHJpbWUxOTJ2MTtcbmFsaWFzZXMucDM4NCA9IGFsaWFzZXMuc2VjcDM4NHIxO1xuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjE7XG5cbmZ1bmN0aW9uIEVDREgoY3VydmUpIHtcblx0dGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXTtcblx0aWYgKCF0aGlzLmN1cnZlVHlwZSApIHtcblx0XHR0aGlzLmN1cnZlVHlwZSA9IHtcblx0XHRcdG5hbWU6IGN1cnZlXG5cdFx0fTtcblx0fVxuXHR0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpO1xuXHR0aGlzLmtleXMgPSB2b2lkIDA7XG59XG5cbkVDREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uIChlbmMsIGZvcm1hdCkge1xuXHR0aGlzLmtleXMgPSB0aGlzLmN1cnZlLmdlbktleVBhaXIoKTtcblx0cmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KGVuYywgZm9ybWF0KTtcbn07XG5cbkVDREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIsIGluZW5jLCBlbmMpIHtcblx0aW5lbmMgPSBpbmVuYyB8fCAndXRmOCc7XG5cdGlmICghQnVmZmVyLmlzQnVmZmVyKG90aGVyKSkge1xuXHRcdG90aGVyID0gbmV3IEJ1ZmZlcihvdGhlciwgaW5lbmMpO1xuXHR9XG5cdHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKCk7XG5cdHZhciBvdXQgPSBvdGhlclB1Yi5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpO1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUob3V0LCBlbmMsIHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHZhciBrZXkgPSB0aGlzLmtleXMuZ2V0UHVibGljKGZvcm1hdCA9PT0gJ2NvbXByZXNzZWQnLCB0cnVlKTtcblx0aWYgKGZvcm1hdCA9PT0gJ2h5YnJpZCcpIHtcblx0XHRpZiAoa2V5W2tleS5sZW5ndGggLSAxXSAlIDIpIHtcblx0XHRcdGtleVswXSA9IDc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtleSBbMF0gPSA2O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUoa2V5LCBlbmMpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChlbmMpIHtcblx0cmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuXHRcdHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuXHR9XG5cdHRoaXMua2V5cy5faW1wb3J0UHVibGljKHB1Yik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuRUNESC5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChwcml2LCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcblx0XHRwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuXHR9XG5cdHZhciBfcHJpdiA9IG5ldyBCTihwcml2KTtcblx0X3ByaXYgPSBfcHJpdi50b1N0cmluZygxNik7XG5cdHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShfcHJpdik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYywgbGVuKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShibikpIHtcblx0XHRibiA9IGJuLnRvQXJyYXkoKTtcblx0fVxuXHR2YXIgYnVmID0gbmV3IEJ1ZmZlcihibik7XG5cdGlmIChsZW4gJiYgYnVmLmxlbmd0aCA8IGxlbikge1xuXHRcdHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIobGVuIC0gYnVmLmxlbmd0aCk7XG5cdFx0emVyb3MuZmlsbCgwKTtcblx0XHRidWYgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgYnVmXSk7XG5cdH1cblx0aWYgKCFlbmMpIHtcblx0XHRyZXR1cm4gYnVmO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcblx0fVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIG1kNSA9IHJlcXVpcmUoJy4vbWQ1JylcbnZhciBybWQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG5cbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxuXG5mdW5jdGlvbiBIYXNoTm9Db25zdHJ1Y3RvcihoYXNoKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gaGFzaFxuICB0aGlzLmJ1ZmZlcnMgPSBbXVxufVxuXG5pbmhlcml0cyhIYXNoTm9Db25zdHJ1Y3RvciwgQmFzZSlcblxuSGFzaE5vQ29uc3RydWN0b3IucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmJ1ZmZlcnMucHVzaChkYXRhKVxufVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmJ1ZmZlcnMpXG4gIHZhciByID0gdGhpcy5faGFzaChidWYpXG4gIHRoaXMuYnVmZmVycyA9IG51bGxcblxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBIYXNoKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICgnbWQ1JyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKG1kNSlcbiAgaWYgKCdybWQxNjAnID09PSBhbGcgfHwgJ3JpcGVtZDE2MCcgPT09IGFsZykgcmV0dXJuIG5ldyBIYXNoTm9Db25zdHJ1Y3RvcihybWQxNjApXG5cbiAgcmV0dXJuIG5ldyBIYXNoKHNoYShhbGcpKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludFNpemUgPSA0O1xudmFyIHplcm9CdWZmZXIgPSBuZXcgQnVmZmVyKGludFNpemUpOyB6ZXJvQnVmZmVyLmZpbGwoMCk7XG52YXIgY2hyc3ogPSA4O1xuXG5mdW5jdGlvbiB0b0FycmF5KGJ1ZiwgYmlnRW5kaWFuKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAlIGludFNpemUpICE9PSAwKSB7XG4gICAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggKyAoaW50U2l6ZSAtIChidWYubGVuZ3RoICUgaW50U2l6ZSkpO1xuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW2J1ZiwgemVyb0J1ZmZlcl0sIGxlbik7XG4gIH1cblxuICB2YXIgYXJyID0gW107XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi5yZWFkSW50MzJCRSA6IGJ1Zi5yZWFkSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpICs9IGludFNpemUpIHtcbiAgICBhcnIucHVzaChmbi5jYWxsKGJ1ZiwgaSkpO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyKGFyciwgc2l6ZSwgYmlnRW5kaWFuKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgZm4gPSBiaWdFbmRpYW4gPyBidWYud3JpdGVJbnQzMkJFIDogYnVmLndyaXRlSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBmbi5jYWxsKGJ1ZiwgYXJyW2ldLCBpICogNCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gaGFzaChidWYsIGZuLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IG5ldyBCdWZmZXIoYnVmKTtcbiAgdmFyIGFyciA9IGZuKHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pLCBidWYubGVuZ3RoICogY2hyc3opO1xuICByZXR1cm4gdG9CdWZmZXIoYXJyLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKTtcbn1cbmV4cG9ydHMuaGFzaCA9IGhhc2g7IiwiJ3VzZSBzdHJpY3QnO1xuLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1IE1lc3NhZ2VcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXG4gKiBWZXJzaW9uIDIuMSBDb3B5cmlnaHQgKEMpIFBhdWwgSm9obnN0b24gMTk5OSAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBtb3JlIGluZm8uXG4gKi9cblxudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxuLypcbiAqIENhbGN1bGF0ZSB0aGUgTUQ1IG9mIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMsIGFuZCBhIGJpdCBsZW5ndGhcbiAqL1xuZnVuY3Rpb24gY29yZV9tZDUoeCwgbGVuKVxue1xuICAvKiBhcHBlbmQgcGFkZGluZyAqL1xuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8ICgobGVuKSAlIDMyKTtcbiAgeFsoKChsZW4gKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gbGVuO1xuXG4gIHZhciBhID0gIDE3MzI1ODQxOTM7XG4gIHZhciBiID0gLTI3MTczMzg3OTtcbiAgdmFyIGMgPSAtMTczMjU4NDE5NDtcbiAgdmFyIGQgPSAgMjcxNzMzODc4O1xuXG4gIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSArPSAxNilcbiAge1xuICAgIHZhciBvbGRhID0gYTtcbiAgICB2YXIgb2xkYiA9IGI7XG4gICAgdmFyIG9sZGMgPSBjO1xuICAgIHZhciBvbGRkID0gZDtcblxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyAwXSwgNyAsIC02ODA4NzY5MzYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyAxXSwgMTIsIC0zODk1NjQ1ODYpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTcsICA2MDYxMDU4MTkpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDcgLCAtMTc2NDE4ODk3KTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsgNV0sIDEyLCAgMTIwMDA4MDQyNik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDZdLCAxNywgLTE0NzMyMzEzNDEpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyA3XSwgMjIsIC00NTcwNTk4Myk7XG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDhdLCA3ICwgIDE3NzAwMzU0MTYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA5XSwgMTIsIC0xOTU4NDE0NDE3KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE3LCAtNDIwNjMpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKzExXSwgMjIsIC0xOTkwNDA0MTYyKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDcgLCAgMTgwNDYwMzY4Mik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krMTNdLCAxMiwgLTQwMzQxMTAxKTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE3LCAtMTUwMjAwMjI5MCk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTVdLCAyMiwgIDEyMzY1MzUzMjkpO1xuXG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDFdLCA1ICwgLTE2NTc5NjUxMCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDZdLCA5ICwgLTEwNjk1MDE2MzIpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKzExXSwgMTQsICA2NDM3MTc3MTMpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyAwXSwgMjAsIC0zNzM4OTczMDIpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKyA1XSwgNSAsIC03MDE1NTg2OTEpO1xuICAgIGQgPSBtZDVfZ2coZCwgYSwgYiwgYywgeFtpKzEwXSwgOSAsICAzODAxNjA4Myk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTVdLCAxNCwgLTY2MDQ3ODMzNSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDRdLCAyMCwgLTQwNTUzNzg0OCk7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDldLCA1ICwgIDU2ODQ0NjQzOCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTRdLCA5ICwgLTEwMTk4MDM2OTApO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyAzXSwgMTQsIC0xODczNjM5NjEpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyA4XSwgMjAsICAxMTYzNTMxNTAxKTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsxM10sIDUgLCAtMTQ0NDY4MTQ2Nyk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDJdLCA5ICwgLTUxNDAzNzg0KTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE0LCAgMTczNTMyODQ3Myk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krMTJdLCAyMCwgLTE5MjY2MDc3MzQpO1xuXG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDVdLCA0ICwgLTM3ODU1OCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDhdLCAxMSwgLTIwMjI1NzQ0NjMpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKzExXSwgMTYsICAxODM5MDMwNTYyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxNF0sIDIzLCAtMzUzMDk1NTYpO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKyAxXSwgNCAsIC0xNTMwOTkyMDYwKTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgNF0sIDExLCAgMTI3Mjg5MzM1Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDddLCAxNiwgLTE1NTQ5NzYzMik7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krMTBdLCAyMywgLTEwOTQ3MzA2NDApO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKzEzXSwgNCAsICA2ODEyNzkxNzQpO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyAwXSwgMTEsIC0zNTg1MzcyMjIpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKyAzXSwgMTYsIC03MjI1MjE5NzkpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKyA2XSwgMjMsICA3NjAyOTE4OSk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDldLCA0ICwgLTY0MDM2NDQ4Nyk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krMTJdLCAxMSwgLTQyMTgxNTgzNSk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTVdLCAxNiwgIDUzMDc0MjUyMCk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDJdLCAyMywgLTk5NTMzODY1MSk7XG5cbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgMF0sIDYgLCAtMTk4NjMwODQ0KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsgN10sIDEwLCAgMTEyNjg5MTQxNSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krMTRdLCAxNSwgLTE0MTYzNTQ5MDUpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA1XSwgMjEsIC01NzQzNDA1NSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krMTJdLCA2ICwgIDE3MDA0ODU1NzEpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyAzXSwgMTAsIC0xODk0OTg2NjA2KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE1LCAtMTA1MTUyMyk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDFdLCAyMSwgLTIwNTQ5MjI3OTkpO1xuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyA4XSwgNiAsICAxODczMzEzMzU5KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxNV0sIDEwLCAtMzA2MTE3NDQpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyA2XSwgMTUsIC0xNTYwMTk4MzgwKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsxM10sIDIxLCAgMTMwOTE1MTY0OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDRdLCA2ICwgLTE0NTUyMzA3MCk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krMTFdLCAxMCwgLTExMjAyMTAzNzkpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTUsICA3MTg3ODcyNTkpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA5XSwgMjEsIC0zNDM0ODU1NTEpO1xuXG4gICAgYSA9IHNhZmVfYWRkKGEsIG9sZGEpO1xuICAgIGIgPSBzYWZlX2FkZChiLCBvbGRiKTtcbiAgICBjID0gc2FmZV9hZGQoYywgb2xkYyk7XG4gICAgZCA9IHNhZmVfYWRkKGQsIG9sZGQpO1xuICB9XG4gIHJldHVybiBBcnJheShhLCBiLCBjLCBkKTtcblxufVxuXG4vKlxuICogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgZm91ciBiYXNpYyBvcGVyYXRpb25zIHRoZSBhbGdvcml0aG0gdXNlcy5cbiAqL1xuZnVuY3Rpb24gbWQ1X2NtbihxLCBhLCBiLCB4LCBzLCB0KVxue1xuICByZXR1cm4gc2FmZV9hZGQoYml0X3JvbChzYWZlX2FkZChzYWZlX2FkZChhLCBxKSwgc2FmZV9hZGQoeCwgdCkpLCBzKSxiKTtcbn1cbmZ1bmN0aW9uIG1kNV9mZihhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfZ2coYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuZnVuY3Rpb24gbWQ1X2hoKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaWkoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuXG4vKlxuICogQWRkIGludGVnZXJzLCB3cmFwcGluZyBhdCAyXjMyLiBUaGlzIHVzZXMgMTYtYml0IG9wZXJhdGlvbnMgaW50ZXJuYWxseVxuICogdG8gd29yayBhcm91bmQgYnVncyBpbiBzb21lIEpTIGludGVycHJldGVycy5cbiAqL1xuZnVuY3Rpb24gc2FmZV9hZGQoeCwgeSlcbntcbiAgdmFyIGxzdyA9ICh4ICYgMHhGRkZGKSArICh5ICYgMHhGRkZGKTtcbiAgdmFyIG1zdyA9ICh4ID4+IDE2KSArICh5ID4+IDE2KSArIChsc3cgPj4gMTYpO1xuICByZXR1cm4gKG1zdyA8PCAxNikgfCAobHN3ICYgMHhGRkZGKTtcbn1cblxuLypcbiAqIEJpdHdpc2Ugcm90YXRlIGEgMzItYml0IG51bWJlciB0byB0aGUgbGVmdC5cbiAqL1xuZnVuY3Rpb24gYml0X3JvbChudW0sIGNudClcbntcbiAgcmV0dXJuIChudW0gPDwgY250KSB8IChudW0gPj4+ICgzMiAtIGNudCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1kNShidWYpIHtcbiAgcmV0dXJuIGhlbHBlcnMuaGFzaChidWYsIGNvcmVfbWQ1LCAxNik7XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvYnJvd3NlcicpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG5cbnZhciBaRVJPUyA9IG5ldyBCdWZmZXIoMTI4KVxuWkVST1MuZmlsbCgwKVxuXG5mdW5jdGlvbiBIbWFjKGFsZywga2V5KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IG5ldyBCdWZmZXIoa2V5KVxuICB9XG5cbiAgdmFyIGJsb2Nrc2l6ZSA9IChhbGcgPT09ICdzaGE1MTInIHx8IGFsZyA9PT0gJ3NoYTM4NCcpID8gMTI4IDogNjRcblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGtleSkuZGlnZXN0KClcblxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IG5ldyBCdWZmZXIoYmxvY2tzaXplKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChhbGcpLnVwZGF0ZShpcGFkKVxufVxuXG5pbmhlcml0cyhIbWFjLCBUcmFuc2Zvcm0pXG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSwgZW5jKVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkhtYWMucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAobmV4dCkge1xuICB0aGlzLnB1c2godGhpcy5kaWdlc3QoKSlcblxuICBuZXh0KClcbn1cblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcblxuICByZXR1cm4gY3JlYXRlSGFzaCh0aGlzLl9hbGcpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KGVuYylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIbWFjKGFsZywga2V5KSB7XG4gIHJldHVybiBuZXcgSG1hYyhhbGcsIGtleSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnJhbmRvbUJ5dGVzID0gZXhwb3J0cy5ybmcgPSBleHBvcnRzLnBzZXVkb1JhbmRvbUJ5dGVzID0gZXhwb3J0cy5wcm5nID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuZXhwb3J0cy5jcmVhdGVIYXNoID0gZXhwb3J0cy5IYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxuZXhwb3J0cy5jcmVhdGVIbWFjID0gZXhwb3J0cy5IbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxuXG52YXIgaGFzaGVzID0gWydzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsICdtZDUnLCAncm1kMTYwJ10uY29uY2F0KE9iamVjdC5rZXlzKHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbi9hbGdvcycpKSlcbmV4cG9ydHMuZ2V0SGFzaGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGFzaGVzXG59XG5cbnZhciBwID0gcmVxdWlyZSgncGJrZGYyJylcbmV4cG9ydHMucGJrZGYyID0gcC5wYmtkZjJcbmV4cG9ydHMucGJrZGYyU3luYyA9IHAucGJrZGYyU3luY1xuXG52YXIgYWVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1jaXBoZXInKVxuO1tcbiAgJ0NpcGhlcicsXG4gICdjcmVhdGVDaXBoZXInLFxuICAnQ2lwaGVyaXYnLFxuICAnY3JlYXRlQ2lwaGVyaXYnLFxuICAnRGVjaXBoZXInLFxuICAnY3JlYXRlRGVjaXBoZXInLFxuICAnRGVjaXBoZXJpdicsXG4gICdjcmVhdGVEZWNpcGhlcml2JyxcbiAgJ2dldENpcGhlcnMnLFxuICAnbGlzdENpcGhlcnMnXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBhZXNba2V5XVxufSlcblxudmFyIGRoID0gcmVxdWlyZSgnZGlmZmllLWhlbGxtYW4nKVxuO1tcbiAgJ0RpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAnLFxuICAnZ2V0RGlmZmllSGVsbG1hbicsXG4gICdjcmVhdGVEaWZmaWVIZWxsbWFuJyxcbiAgJ0RpZmZpZUhlbGxtYW4nXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBkaFtrZXldXG59KVxuXG52YXIgc2lnbiA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbicpXG47W1xuICAnY3JlYXRlU2lnbicsXG4gICdTaWduJyxcbiAgJ2NyZWF0ZVZlcmlmeScsXG4gICdWZXJpZnknXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBzaWduW2tleV1cbn0pXG5cbmV4cG9ydHMuY3JlYXRlRUNESCA9IHJlcXVpcmUoJ2NyZWF0ZS1lY2RoJylcblxudmFyIHB1YmxpY0VuY3J5cHQgPSByZXF1aXJlKCdwdWJsaWMtZW5jcnlwdCcpXG5cbjtbXG4gICdwdWJsaWNFbmNyeXB0JyxcbiAgJ3ByaXZhdGVFbmNyeXB0JyxcbiAgJ3B1YmxpY0RlY3J5cHQnLFxuICAncHJpdmF0ZURlY3J5cHQnXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBwdWJsaWNFbmNyeXB0W2tleV1cbn0pXG5cbi8vIHRoZSBsZWFzdCBJIGNhbiBkbyBpcyBtYWtlIGVycm9yIG1lc3NhZ2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgbm9kZS5qcy9jcnlwdG8gYXBpLlxuO1tcbiAgJ2NyZWF0ZUNyZWRlbnRpYWxzJ1xuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIGV4cG9ydHNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICdzb3JyeSwgJyArIG5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuICAgICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbiAgICAgICdodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnknXG4gICAgXS5qb2luKCdcXG4nKSlcbiAgfVxufSlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy51dGlscyA9IHJlcXVpcmUoJy4vZGVzL3V0aWxzJyk7XG5leHBvcnRzLkNpcGhlciA9IHJlcXVpcmUoJy4vZGVzL2NpcGhlcicpO1xuZXhwb3J0cy5ERVMgPSByZXF1aXJlKCcuL2Rlcy9kZXMnKTtcbmV4cG9ydHMuQ0JDID0gcmVxdWlyZSgnLi9kZXMvY2JjJyk7XG5leHBvcnRzLkVERSA9IHJlcXVpcmUoJy4vZGVzL2VkZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHByb3RvID0ge307XG5cbmZ1bmN0aW9uIENCQ1N0YXRlKGl2KSB7XG4gIGFzc2VydC5lcXVhbChpdi5sZW5ndGgsIDgsICdJbnZhbGlkIElWIGxlbmd0aCcpO1xuXG4gIHRoaXMuaXYgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdi5sZW5ndGg7IGkrKylcbiAgICB0aGlzLml2W2ldID0gaXZbaV07XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlKEJhc2UpIHtcbiAgZnVuY3Rpb24gQ0JDKG9wdGlvbnMpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy5fY2JjSW5pdCgpO1xuICB9XG4gIGluaGVyaXRzKENCQywgQmFzZSk7XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm90byk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIENCQy5wcm90b3R5cGVba2V5XSA9IHByb3RvW2tleV07XG4gIH1cblxuICBDQkMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IENCQyhvcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4gQ0JDO1xufVxuXG5leHBvcnRzLmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGU7XG5cbnByb3RvLl9jYmNJbml0ID0gZnVuY3Rpb24gX2NiY0luaXQoKSB7XG4gIHZhciBzdGF0ZSA9IG5ldyBDQkNTdGF0ZSh0aGlzLm9wdGlvbnMuaXYpO1xuICB0aGlzLl9jYmNTdGF0ZSA9IHN0YXRlO1xufTtcblxucHJvdG8uX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fY2JjU3RhdGU7XG4gIHZhciBzdXBlclByb3RvID0gdGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlO1xuXG4gIHZhciBpdiA9IHN0YXRlLml2O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSBePSBpbnBbaW5PZmYgKyBpXTtcblxuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGl2LCAwLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IG91dFtvdXRPZmYgKyBpXTtcbiAgfSBlbHNlIHtcbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBvdXRbb3V0T2ZmICsgaV0gXj0gaXZbaV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IGlucFtpbk9mZiArIGldO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBDaXBoZXIob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIHRoaXMudHlwZSA9IHRoaXMub3B0aW9ucy50eXBlO1xuICB0aGlzLmJsb2NrU2l6ZSA9IDg7XG4gIHRoaXMuX2luaXQoKTtcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyO1xuXG5DaXBoZXIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gX2luaXQoKSB7XG4gIC8vIE1pZ2h0IGJlIG92ZXJyaWRlZFxufTtcblxuQ2lwaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoZGF0YSkge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdkZWNyeXB0JylcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRGVjcnlwdChkYXRhKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVFbmNyeXB0KGRhdGEpO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fYnVmZmVyID0gZnVuY3Rpb24gX2J1ZmZlcihkYXRhLCBvZmYpIHtcbiAgLy8gQXBwZW5kIGRhdGEgdG8gYnVmZmVyXG4gIHZhciBtaW4gPSBNYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLmJ1ZmZlck9mZiwgZGF0YS5sZW5ndGggLSBvZmYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbjsgaSsrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmICsgaV0gPSBkYXRhW29mZiArIGldO1xuICB0aGlzLmJ1ZmZlck9mZiArPSBtaW47XG5cbiAgLy8gU2hpZnQgbmV4dFxuICByZXR1cm4gbWluO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmx1c2hCdWZmZXIgPSBmdW5jdGlvbiBfZmx1c2hCdWZmZXIob3V0LCBvZmYpIHtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIG9mZik7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbiAgcmV0dXJuIHRoaXMuYmxvY2tTaXplO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVFbmNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSB8IDA7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgaWYgKHRoaXMuYnVmZmVyT2ZmICE9PSAwKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICAgIGlmICh0aGlzLmJ1ZmZlck9mZiA9PT0gdGhpcy5idWZmZXIubGVuZ3RoKVxuICAgICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIFdyaXRlIGJsb2Nrc1xuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGggLSAoKGRhdGEubGVuZ3RoIC0gaW5wdXRPZmYpICUgdGhpcy5ibG9ja1NpemUpO1xuICBmb3IgKDsgaW5wdXRPZmYgPCBtYXg7IGlucHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKGRhdGEsIGlucHV0T2ZmLCBvdXQsIG91dHB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplO1xuICB9XG5cbiAgLy8gUXVldWUgcmVzdFxuICBmb3IgKDsgaW5wdXRPZmYgPCBkYXRhLmxlbmd0aDsgaW5wdXRPZmYrKywgdGhpcy5idWZmZXJPZmYrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl0gPSBkYXRhW2lucHV0T2ZmXTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVEZWNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gTWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSAtIDE7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogb3B0aW1pemUgaXQsIHRoaXMgaXMgZmFyIGZyb20gb3B0aW1hbFxuICBmb3IgKDsgY291bnQgPiAwOyBjb3VudC0tKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gQnVmZmVyIHJlc3Qgb2YgdGhlIGlucHV0XG4gIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiBmaW5hbChidWZmZXIpIHtcbiAgdmFyIGZpcnN0O1xuICBpZiAoYnVmZmVyKVxuICAgIGZpcnN0ID0gdGhpcy51cGRhdGUoYnVmZmVyKTtcblxuICB2YXIgbGFzdDtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbEVuY3J5cHQoKTtcbiAgZWxzZVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbERlY3J5cHQoKTtcblxuICBpZiAoZmlyc3QpXG4gICAgcmV0dXJuIGZpcnN0LmNvbmNhdChsYXN0KTtcbiAgZWxzZVxuICAgIHJldHVybiBsYXN0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICBpZiAob2ZmID09PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB3aGlsZSAob2ZmIDwgYnVmZmVyLmxlbmd0aClcbiAgICBidWZmZXJbb2ZmKytdID0gMDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdCA9IGZ1bmN0aW9uIF9maW5hbEVuY3J5cHQoKSB7XG4gIGlmICghdGhpcy5fcGFkKHRoaXMuYnVmZmVyLCB0aGlzLmJ1ZmZlck9mZikpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgMCk7XG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdCA9IGZ1bmN0aW9uIF9maW5hbERlY3J5cHQoKSB7XG4gIGFzc2VydC5lcXVhbCh0aGlzLmJ1ZmZlck9mZiwgdGhpcy5ibG9ja1NpemUsICdOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCcpO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fZmx1c2hCdWZmZXIob3V0LCAwKTtcblxuICByZXR1cm4gdGhpcy5fdW5wYWQob3V0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgdXRpbHMgPSBkZXMudXRpbHM7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcblxuZnVuY3Rpb24gREVTU3RhdGUoKSB7XG4gIHRoaXMudG1wID0gbmV3IEFycmF5KDIpO1xuICB0aGlzLmtleXMgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBERVMob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgREVTU3RhdGUoKTtcbiAgdGhpcy5fZGVzU3RhdGUgPSBzdGF0ZTtcblxuICB0aGlzLmRlcml2ZUtleXMoc3RhdGUsIG9wdGlvbnMua2V5KTtcbn1cbmluaGVyaXRzKERFUywgQ2lwaGVyKTtcbm1vZHVsZS5leHBvcnRzID0gREVTO1xuXG5ERVMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBERVMob3B0aW9ucyk7XG59O1xuXG52YXIgc2hpZnRUYWJsZSA9IFtcbiAgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMixcbiAgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMVxuXTtcblxuREVTLnByb3RvdHlwZS5kZXJpdmVLZXlzID0gZnVuY3Rpb24gZGVyaXZlS2V5cyhzdGF0ZSwga2V5KSB7XG4gIHN0YXRlLmtleXMgPSBuZXcgQXJyYXkoMTYgKiAyKTtcblxuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgdGhpcy5ibG9ja1NpemUsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIga0wgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCAwKTtcbiAgdmFyIGtSID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgNCk7XG5cbiAgdXRpbHMucGMxKGtMLCBrUiwgc3RhdGUudG1wLCAwKTtcbiAga0wgPSBzdGF0ZS50bXBbMF07XG4gIGtSID0gc3RhdGUudG1wWzFdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgc2hpZnQgPSBzaGlmdFRhYmxlW2kgPj4+IDFdO1xuICAgIGtMID0gdXRpbHMucjI4c2hsKGtMLCBzaGlmdCk7XG4gICAga1IgPSB1dGlscy5yMjhzaGwoa1IsIHNoaWZ0KTtcbiAgICB1dGlscy5wYzIoa0wsIGtSLCBzdGF0ZS5rZXlzLCBpKTtcbiAgfVxufTtcblxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9kZXNTdGF0ZTtcblxuICB2YXIgbCA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmKTtcbiAgdmFyIHIgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZiArIDQpO1xuXG4gIC8vIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMuaXAobCwgciwgc3RhdGUudG1wLCAwKTtcbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgdGhpcy5fZW5jcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcbiAgZWxzZVxuICAgIHRoaXMuX2RlY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgbCwgb3V0T2ZmKTtcbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIHIsIG91dE9mZiArIDQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICB2YXIgdmFsdWUgPSBidWZmZXIubGVuZ3RoIC0gb2ZmO1xuICBmb3IgKHZhciBpID0gb2ZmOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGJ1ZmZlcltpXSA9IHZhbHVlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuREVTLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHZhciBwYWQgPSBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICBmb3IgKHZhciBpID0gYnVmZmVyLmxlbmd0aCAtIHBhZDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBhc3NlcnQuZXF1YWwoYnVmZmVyW2ldLCBwYWQpO1xuXG4gIHJldHVybiBidWZmZXIuc2xpY2UoMCwgYnVmZmVyLmxlbmd0aCAtIHBhZCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9lbmNyeXB0ID0gZnVuY3Rpb24gX2VuY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IGxTdGFydDtcbiAgdmFyIHIgPSByU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQociwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IHI7XG4gICAgciA9IChsIF4gZikgPj4+IDA7XG4gICAgbCA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKHIsIGwsIG91dCwgb2ZmKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2RlY3J5cHQgPSBmdW5jdGlvbiBfZGVjcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gclN0YXJ0O1xuICB2YXIgciA9IGxTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSBzdGF0ZS5rZXlzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKGwsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSBsO1xuICAgIGwgPSAociBeIGYpID4+PiAwO1xuICAgIHIgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChsLCByLCBvdXQsIG9mZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGRlcyA9IHJlcXVpcmUoJy4uL2RlcycpO1xudmFyIENpcGhlciA9IGRlcy5DaXBoZXI7XG52YXIgREVTID0gZGVzLkRFUztcblxuZnVuY3Rpb24gRURFU3RhdGUodHlwZSwga2V5KSB7XG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCAyNCwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrMSA9IGtleS5zbGljZSgwLCA4KTtcbiAgdmFyIGsyID0ga2V5LnNsaWNlKDgsIDE2KTtcbiAgdmFyIGszID0ga2V5LnNsaWNlKDE2LCAyNCk7XG5cbiAgaWYgKHR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazEgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMyB9KVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMyB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsxIH0pXG4gICAgXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBFREUob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgRURFU3RhdGUodGhpcy50eXBlLCB0aGlzLm9wdGlvbnMua2V5KTtcbiAgdGhpcy5fZWRlU3RhdGUgPSBzdGF0ZTtcbn1cbmluaGVyaXRzKEVERSwgQ2lwaGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFREU7XG5cbkVERS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEVERShvcHRpb25zKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZWRlU3RhdGU7XG5cbiAgc3RhdGUuY2lwaGVyc1swXS5fdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1sxXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMl0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xufTtcblxuRURFLnByb3RvdHlwZS5fcGFkID0gREVTLnByb3RvdHlwZS5fcGFkO1xuRURFLnByb3RvdHlwZS5fdW5wYWQgPSBERVMucHJvdG90eXBlLl91bnBhZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUoYnl0ZXMsIG9mZikge1xuICB2YXIgcmVzID0gIChieXRlc1swICsgb2ZmXSA8PCAyNCkgfFxuICAgICAgICAgICAgIChieXRlc1sxICsgb2ZmXSA8PCAxNikgfFxuICAgICAgICAgICAgIChieXRlc1syICsgb2ZmXSA8PCA4KSB8XG4gICAgICAgICAgICAgYnl0ZXNbMyArIG9mZl07XG4gIHJldHVybiByZXMgPj4+IDA7XG59O1xuXG5leHBvcnRzLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFKGJ5dGVzLCB2YWx1ZSwgb2ZmKSB7XG4gIGJ5dGVzWzAgKyBvZmZdID0gdmFsdWUgPj4+IDI0O1xuICBieXRlc1sxICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gMTYpICYgMHhmZjtcbiAgYnl0ZXNbMiArIG9mZl0gPSAodmFsdWUgPj4+IDgpICYgMHhmZjtcbiAgYnl0ZXNbMyArIG9mZl0gPSB2YWx1ZSAmIDB4ZmY7XG59O1xuXG5leHBvcnRzLmlwID0gZnVuY3Rpb24gaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnJpcCA9IGZ1bmN0aW9uIHJpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGkgPSA0OyBpIDwgODsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBjMSA9IGZ1bmN0aW9uIHBjMShpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgLy8gNywgMTUsIDIzLCAzMSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNiwgMTQsIDIyLCAzMCwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNSwgMTMsIDIxLCAyOSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNCwgMTIsIDIwLCAyOFxuICBmb3IgKHZhciBpID0gNzsgaSA+PSA1OyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICAvLyAxLCA5LCAxNywgMjUsIDMzLCA0MSwgNDksIDU3XG4gIC8vIDIsIDEwLCAxOCwgMjYsIDM0LCA0MiwgNTAsIDU4XG4gIC8vIDMsIDExLCAxOSwgMjcsIDM1LCA0MywgNTEsIDU5XG4gIC8vIDM2LCA0NCwgNTIsIDYwXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnIyOHNobCA9IGZ1bmN0aW9uIHIyOHNobChudW0sIHNoaWZ0KSB7XG4gIHJldHVybiAoKG51bSA8PCBzaGlmdCkgJiAweGZmZmZmZmYpIHwgKG51bSA+Pj4gKDI4IC0gc2hpZnQpKTtcbn07XG5cbnZhciBwYzJ0YWJsZSA9IFtcbiAgLy8gaW5MID0+IG91dExcbiAgMTQsIDExLCAxNywgNCwgMjcsIDIzLCAyNSwgMCxcbiAgMTMsIDIyLCA3LCAxOCwgNSwgOSwgMTYsIDI0LFxuICAyLCAyMCwgMTIsIDIxLCAxLCA4LCAxNSwgMjYsXG5cbiAgLy8gaW5SID0+IG91dFJcbiAgMTUsIDQsIDI1LCAxOSwgOSwgMSwgMjYsIDE2LFxuICA1LCAxMSwgMjMsIDgsIDEyLCA3LCAxNywgMCxcbiAgMjIsIDMsIDEwLCAxNCwgNiwgMjAsIDI3LCAyNFxuXTtcblxuZXhwb3J0cy5wYzIgPSBmdW5jdGlvbiBwYzIoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIHZhciBsZW4gPSBwYzJ0YWJsZS5sZW5ndGggPj4+IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluTCA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG4gIGZvciAodmFyIGkgPSBsZW47IGkgPCBwYzJ0YWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5SID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5leHBhbmQgPSBmdW5jdGlvbiBleHBhbmQociwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgb3V0TCA9ICgociAmIDEpIDw8IDUpIHwgKHIgPj4+IDI3KTtcbiAgZm9yICh2YXIgaSA9IDIzOyBpID49IDE1OyBpIC09IDQpIHtcbiAgICBvdXRMIDw8PSA2O1xuICAgIG91dEwgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgfVxuICBmb3IgKHZhciBpID0gMTE7IGkgPj0gMzsgaSAtPSA0KSB7XG4gICAgb3V0UiB8PSAociA+Pj4gaSkgJiAweDNmO1xuICAgIG91dFIgPDw9IDY7XG4gIH1cbiAgb3V0UiB8PSAoKHIgJiAweDFmKSA8PCAxKSB8IChyID4+PiAzMSk7XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbnZhciBzVGFibGUgPSBbXG4gIDE0LCAwLCA0LCAxNSwgMTMsIDcsIDEsIDQsIDIsIDE0LCAxNSwgMiwgMTEsIDEzLCA4LCAxLFxuICAzLCAxMCwgMTAsIDYsIDYsIDEyLCAxMiwgMTEsIDUsIDksIDksIDUsIDAsIDMsIDcsIDgsXG4gIDQsIDE1LCAxLCAxMiwgMTQsIDgsIDgsIDIsIDEzLCA0LCA2LCA5LCAyLCAxLCAxMSwgNyxcbiAgMTUsIDUsIDEyLCAxMSwgOSwgMywgNywgMTQsIDMsIDEwLCAxMCwgMCwgNSwgNiwgMCwgMTMsXG5cbiAgMTUsIDMsIDEsIDEzLCA4LCA0LCAxNCwgNywgNiwgMTUsIDExLCAyLCAzLCA4LCA0LCAxNCxcbiAgOSwgMTIsIDcsIDAsIDIsIDEsIDEzLCAxMCwgMTIsIDYsIDAsIDksIDUsIDExLCAxMCwgNSxcbiAgMCwgMTMsIDE0LCA4LCA3LCAxMCwgMTEsIDEsIDEwLCAzLCA0LCAxNSwgMTMsIDQsIDEsIDIsXG4gIDUsIDExLCA4LCA2LCAxMiwgNywgNiwgMTIsIDksIDAsIDMsIDUsIDIsIDE0LCAxNSwgOSxcblxuICAxMCwgMTMsIDAsIDcsIDksIDAsIDE0LCA5LCA2LCAzLCAzLCA0LCAxNSwgNiwgNSwgMTAsXG4gIDEsIDIsIDEzLCA4LCAxMiwgNSwgNywgMTQsIDExLCAxMiwgNCwgMTEsIDIsIDE1LCA4LCAxLFxuICAxMywgMSwgNiwgMTAsIDQsIDEzLCA5LCAwLCA4LCA2LCAxNSwgOSwgMywgOCwgMCwgNyxcbiAgMTEsIDQsIDEsIDE1LCAyLCAxNCwgMTIsIDMsIDUsIDExLCAxMCwgNSwgMTQsIDIsIDcsIDEyLFxuXG4gIDcsIDEzLCAxMywgOCwgMTQsIDExLCAzLCA1LCAwLCA2LCA2LCAxNSwgOSwgMCwgMTAsIDMsXG4gIDEsIDQsIDIsIDcsIDgsIDIsIDUsIDEyLCAxMSwgMSwgMTIsIDEwLCA0LCAxNCwgMTUsIDksXG4gIDEwLCAzLCA2LCAxNSwgOSwgMCwgMCwgNiwgMTIsIDEwLCAxMSwgMSwgNywgMTMsIDEzLCA4LFxuICAxNSwgOSwgMSwgNCwgMywgNSwgMTQsIDExLCA1LCAxMiwgMiwgNywgOCwgMiwgNCwgMTQsXG5cbiAgMiwgMTQsIDEyLCAxMSwgNCwgMiwgMSwgMTIsIDcsIDQsIDEwLCA3LCAxMSwgMTMsIDYsIDEsXG4gIDgsIDUsIDUsIDAsIDMsIDE1LCAxNSwgMTAsIDEzLCAzLCAwLCA5LCAxNCwgOCwgOSwgNixcbiAgNCwgMTEsIDIsIDgsIDEsIDEyLCAxMSwgNywgMTAsIDEsIDEzLCAxNCwgNywgMiwgOCwgMTMsXG4gIDE1LCA2LCA5LCAxNSwgMTIsIDAsIDUsIDksIDYsIDEwLCAzLCA0LCAwLCA1LCAxNCwgMyxcblxuICAxMiwgMTAsIDEsIDE1LCAxMCwgNCwgMTUsIDIsIDksIDcsIDIsIDEyLCA2LCA5LCA4LCA1LFxuICAwLCA2LCAxMywgMSwgMywgMTMsIDQsIDE0LCAxNCwgMCwgNywgMTEsIDUsIDMsIDExLCA4LFxuICA5LCA0LCAxNCwgMywgMTUsIDIsIDUsIDEyLCAyLCA5LCA4LCA1LCAxMiwgMTUsIDMsIDEwLFxuICA3LCAxMSwgMCwgMTQsIDQsIDEsIDEwLCA3LCAxLCA2LCAxMywgMCwgMTEsIDgsIDYsIDEzLFxuXG4gIDQsIDEzLCAxMSwgMCwgMiwgMTEsIDE0LCA3LCAxNSwgNCwgMCwgOSwgOCwgMSwgMTMsIDEwLFxuICAzLCAxNCwgMTIsIDMsIDksIDUsIDcsIDEyLCA1LCAyLCAxMCwgMTUsIDYsIDgsIDEsIDYsXG4gIDEsIDYsIDQsIDExLCAxMSwgMTMsIDEzLCA4LCAxMiwgMSwgMywgNCwgNywgMTAsIDE0LCA3LFxuICAxMCwgOSwgMTUsIDUsIDYsIDAsIDgsIDE1LCAwLCAxNCwgNSwgMiwgOSwgMywgMiwgMTIsXG5cbiAgMTMsIDEsIDIsIDE1LCA4LCAxMywgNCwgOCwgNiwgMTAsIDE1LCAzLCAxMSwgNywgMSwgNCxcbiAgMTAsIDEyLCA5LCA1LCAzLCA2LCAxNCwgMTEsIDUsIDAsIDAsIDE0LCAxMiwgOSwgNywgMixcbiAgNywgMiwgMTEsIDEsIDQsIDE0LCAxLCA3LCA5LCA0LCAxMiwgMTAsIDE0LCA4LCAyLCAxMyxcbiAgMCwgMTUsIDYsIDEyLCAxMCwgOSwgMTMsIDAsIDE1LCAzLCAzLCA1LCA1LCA2LCA4LCAxMVxuXTtcblxuZXhwb3J0cy5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShpbkwsIGluUikge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpbkwgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVtpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluUiA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlWzQgKiAweDQwICsgaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbnZhciBwZXJtdXRlVGFibGUgPSBbXG4gIDE2LCAyNSwgMTIsIDExLCAzLCAyMCwgNCwgMTUsIDMxLCAxNywgOSwgNiwgMjcsIDE0LCAxLCAyMixcbiAgMzAsIDI0LCA4LCAxOCwgMCwgNSwgMjksIDIzLCAxMywgMTksIDIsIDI2LCAxMCwgMjEsIDI4LCA3XG5dO1xuXG5leHBvcnRzLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlKG51bSkge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJtdXRlVGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXQgPDw9IDE7XG4gICAgb3V0IHw9IChudW0gPj4+IHBlcm11dGVUYWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGFkU3BsaXQgPSBmdW5jdGlvbiBwYWRTcGxpdChudW0sIHNpemUsIGdyb3VwKSB7XG4gIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMik7XG4gIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICBzdHIgPSAnMCcgKyBzdHI7XG5cbiAgdmFyIG91dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gZ3JvdXApXG4gICAgb3V0LnB1c2goc3RyLnNsaWNlKGksIGkgKyBncm91cCkpO1xuICByZXR1cm4gb3V0LmpvaW4oJyAnKTtcbn07XG4iLCJ2YXIgZ2VuZXJhdGVQcmltZSA9IHJlcXVpcmUoJy4vbGliL2dlbmVyYXRlUHJpbWUnKVxudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vbGliL3ByaW1lcy5qc29uJylcblxudmFyIERIID0gcmVxdWlyZSgnLi9saWIvZGgnKVxuXG5mdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuIChtb2QpIHtcbiAgdmFyIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5wcmltZSwgJ2hleCcpXG4gIHZhciBnZW4gPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLmdlbiwgJ2hleCcpXG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuKVxufVxuXG52YXIgRU5DT0RJTkdTID0ge1xuICAnYmluYXJ5JzogdHJ1ZSwgJ2hleCc6IHRydWUsICdiYXNlNjQnOiB0cnVlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpZmZpZUhlbGxtYW4gKHByaW1lLCBlbmMsIGdlbmVyYXRvciwgZ2VuYykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGVuYykgfHwgRU5DT0RJTkdTW2VuY10gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjcmVhdGVEaWZmaWVIZWxsbWFuKHByaW1lLCAnYmluYXJ5JywgZW5jLCBnZW5lcmF0b3IpXG4gIH1cblxuICBlbmMgPSBlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuYyA9IGdlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yIHx8IG5ldyBCdWZmZXIoWzJdKVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbmVyYXRvcikpIHtcbiAgICBnZW5lcmF0b3IgPSBuZXcgQnVmZmVyKGdlbmVyYXRvciwgZ2VuYylcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJpbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBESChnZW5lcmF0ZVByaW1lKHByaW1lLCBnZW5lcmF0b3IpLCBnZW5lcmF0b3IsIHRydWUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcmltZSkpIHtcbiAgICBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWUsIGVuYylcbiAgfVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbmVyYXRvciwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGNyZWF0ZURpZmZpZUhlbGxtYW5cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2dlbmVyYXRlUHJpbWUnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IERIO1xuXG5mdW5jdGlvbiBzZXRQdWJsaWNLZXkocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuICB9XG4gIHRoaXMuX3B1YiA9IG5ldyBCTihwdWIpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShwcml2LCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuICB9XG4gIHRoaXMuX3ByaXYgPSBuZXcgQk4ocHJpdik7XG4gIHJldHVybiB0aGlzO1xufVxuXG52YXIgcHJpbWVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gY2hlY2tQcmltZShwcmltZSwgZ2VuZXJhdG9yKSB7XG4gIHZhciBnZW4gPSBnZW5lcmF0b3IudG9TdHJpbmcoJ2hleCcpO1xuICB2YXIgaGV4ID0gW2dlbiwgcHJpbWUudG9TdHJpbmcoMTYpXS5qb2luKCdfJyk7XG4gIGlmIChoZXggaW4gcHJpbWVDYWNoZSkge1xuICAgIHJldHVybiBwcmltZUNhY2hlW2hleF07XG4gIH1cbiAgdmFyIGVycm9yID0gMDtcblxuICBpZiAocHJpbWUuaXNFdmVuKCkgfHxcbiAgICAhcHJpbWVzLnNpbXBsZVNpZXZlIHx8XG4gICAgIXByaW1lcy5mZXJtYXRUZXN0KHByaW1lKSB8fFxuICAgICFtaWxsZXJSYWJpbi50ZXN0KHByaW1lKSkge1xuICAgIC8vbm90IGEgcHJpbWUgc28gKzFcbiAgICBlcnJvciArPSAxO1xuXG4gICAgaWYgKGdlbiA9PT0gJzAyJyB8fCBnZW4gPT09ICcwNScpIHtcbiAgICAgIC8vIHdlJ2QgYmUgYWJsZSB0byBjaGVjayB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBpdCB3b3VsZCBmYWlsIHNvICs4XG4gICAgICBlcnJvciArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3dlIHdvdWxkbid0IGJlIGFibGUgdG8gdGVzdCB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBzbyArNFxuICAgICAgZXJyb3IgKz0gNDtcbiAgICB9XG4gICAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGlmICghbWlsbGVyUmFiaW4udGVzdChwcmltZS5zaHJuKDEpKSkge1xuICAgIC8vbm90IGEgc2FmZSBwcmltZVxuICAgIGVycm9yICs9IDI7XG4gIH1cbiAgdmFyIHJlbTtcbiAgc3dpdGNoIChnZW4pIHtcbiAgICBjYXNlICcwMic6XG4gICAgICBpZiAocHJpbWUubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIC8vIHVuc3VpZGFibGUgZ2VuZXJhdG9yXG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcwNSc6XG4gICAgICByZW0gPSBwcmltZS5tb2QoVEVOKTtcbiAgICAgIGlmIChyZW0uY21wKFRIUkVFKSAmJiByZW0uY21wKFNFVkVOKSkge1xuICAgICAgICAvLyBwcmltZSBtb2QgMTAgbmVlZHMgdG8gZXF1YWwgMyBvciA3XG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXJyb3IgKz0gNDtcbiAgfVxuICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBESChwcmltZSwgZ2VuZXJhdG9yLCBtYWxsZWFibGUpIHtcbiAgdGhpcy5zZXRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgdGhpcy5fX3ByaW1lID0gbmV3IEJOKHByaW1lKTtcbiAgdGhpcy5fcHJpbWUgPSBCTi5tb250KHRoaXMuX19wcmltZSk7XG4gIHRoaXMuX3ByaW1lTGVuID0gcHJpbWUubGVuZ3RoO1xuICB0aGlzLl9wdWIgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaXYgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaW1lQ29kZSA9IHVuZGVmaW5lZDtcbiAgaWYgKG1hbGxlYWJsZSkge1xuICAgIHRoaXMuc2V0UHVibGljS2V5ID0gc2V0UHVibGljS2V5O1xuICAgIHRoaXMuc2V0UHJpdmF0ZUtleSA9IHNldFByaXZhdGVLZXk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fcHJpbWVDb2RlID0gODtcbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSwgJ3ZlcmlmeUVycm9yJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ByaW1lQ29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuX3ByaW1lQ29kZSA9IGNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLCB0aGlzLl9fZ2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1lQ29kZTtcbiAgfVxufSk7XG5ESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3ByaXYpIHtcbiAgICB0aGlzLl9wcml2ID0gbmV3IEJOKHJhbmRvbUJ5dGVzKHRoaXMuX3ByaW1lTGVuKSk7XG4gIH1cbiAgdGhpcy5fcHViID0gdGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoKTtcbn07XG5cbkRILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0ID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIG90aGVyID0gbmV3IEJOKG90aGVyKTtcbiAgb3RoZXIgPSBvdGhlci50b1JlZCh0aGlzLl9wcmltZSk7XG4gIHZhciBzZWNyZXQgPSBvdGhlci5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzZWNyZXQudG9BcnJheSgpKTtcbiAgdmFyIHByaW1lID0gdGhpcy5nZXRQcmltZSgpO1xuICBpZiAob3V0Lmxlbmd0aCA8IHByaW1lLmxlbmd0aCkge1xuICAgIHZhciBmcm9udCA9IG5ldyBCdWZmZXIocHJpbWUubGVuZ3RoIC0gb3V0Lmxlbmd0aCk7XG4gICAgZnJvbnQuZmlsbCgwKTtcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtmcm9udCwgb3V0XSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wcml2LCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaW1lID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX2dlbiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5zZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZ2VuLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuKSkge1xuICAgIGdlbiA9IG5ldyBCdWZmZXIoZ2VuLCBlbmMpO1xuICB9XG4gIHRoaXMuX19nZW4gPSBnZW47XG4gIHRoaXMuX2dlbiA9IG5ldyBCTihnZW4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGJuLCBlbmMpIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoYm4udG9BcnJheSgpKTtcbiAgaWYgKCFlbmMpIHtcbiAgICByZXR1cm4gYnVmO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcbiAgfVxufVxuIiwidmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZmluZFByaW1lO1xuZmluZFByaW1lLnNpbXBsZVNpZXZlID0gc2ltcGxlU2lldmU7XG5maW5kUHJpbWUuZmVybWF0VGVzdCA9IGZlcm1hdFRlc3Q7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBPTkUgPSBuZXcgQk4oMSk7XG52YXIgVFdPID0gbmV3IEJOKDIpO1xudmFyIEZJVkUgPSBuZXcgQk4oNSk7XG52YXIgU0lYVEVFTiA9IG5ldyBCTigxNik7XG52YXIgRUlHSFQgPSBuZXcgQk4oOCk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIEZPVVIgPSBuZXcgQk4oNCk7XG52YXIgVFdFTFZFID0gbmV3IEJOKDEyKTtcbnZhciBwcmltZXMgPSBudWxsO1xuXG5mdW5jdGlvbiBfZ2V0UHJpbWVzKCkge1xuICBpZiAocHJpbWVzICE9PSBudWxsKVxuICAgIHJldHVybiBwcmltZXM7XG5cbiAgdmFyIGxpbWl0ID0gMHgxMDAwMDA7XG4gIHZhciByZXMgPSBbXTtcbiAgcmVzWzBdID0gMjtcbiAgZm9yICh2YXIgaSA9IDEsIGsgPSAzOyBrIDwgbGltaXQ7IGsgKz0gMikge1xuICAgIHZhciBzcXJ0ID0gTWF0aC5jZWlsKE1hdGguc3FydChrKSk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICYmIHJlc1tqXSA8PSBzcXJ0OyBqKyspXG4gICAgICBpZiAoayAlIHJlc1tqXSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG5cbiAgICBpZiAoaSAhPT0gaiAmJiByZXNbal0gPD0gc3FydClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcmVzW2krK10gPSBrO1xuICB9XG4gIHByaW1lcyA9IHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gc2ltcGxlU2lldmUocCkge1xuICB2YXIgcHJpbWVzID0gX2dldFByaW1lcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpbWVzLmxlbmd0aDsgaSsrKVxuICAgIGlmIChwLm1vZG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgaWYgKHAuY21wbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZmVybWF0VGVzdChwKSB7XG4gIHZhciByZWQgPSBCTi5tb250KHApO1xuICByZXR1cm4gVFdPLnRvUmVkKHJlZCkucmVkUG93KHAuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmltZShiaXRzLCBnZW4pIHtcbiAgaWYgKGJpdHMgPCAxNikge1xuICAgIC8vIHRoaXMgaXMgd2hhdCBvcGVuc3NsIGRvZXNcbiAgICBpZiAoZ2VuID09PSAyIHx8IGdlbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHg3Yl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDI3XSk7XG4gICAgfVxuICB9XG4gIGdlbiA9IG5ldyBCTihnZW4pO1xuXG4gIHZhciBudW0sIG4yO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbnVtID0gbmV3IEJOKHJhbmRvbUJ5dGVzKE1hdGguY2VpbChiaXRzIC8gOCkpKTtcbiAgICB3aGlsZSAobnVtLmJpdExlbmd0aCgpID4gYml0cykge1xuICAgICAgbnVtLmlzaHJuKDEpO1xuICAgIH1cbiAgICBpZiAobnVtLmlzRXZlbigpKSB7XG4gICAgICBudW0uaWFkZChPTkUpO1xuICAgIH1cbiAgICBpZiAoIW51bS50ZXN0bigxKSkge1xuICAgICAgbnVtLmlhZGQoVFdPKTtcbiAgICB9XG4gICAgaWYgKCFnZW4uY21wKFRXTykpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWdlbi5jbXAoRklWRSkpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRFTikuY21wKFRIUkVFKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbjIgPSBudW0uc2hybigxKTtcbiAgICBpZiAoc2ltcGxlU2lldmUobjIpICYmIHNpbXBsZVNpZXZlKG51bSkgJiZcbiAgICAgIGZlcm1hdFRlc3QobjIpICYmIGZlcm1hdFRlc3QobnVtKSAmJlxuICAgICAgbWlsbGVyUmFiaW4udGVzdChuMikgJiYgbWlsbGVyUmFiaW4udGVzdChudW0pKSB7XG4gICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgfVxuXG59XG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gICAgXCJtb2RwMVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAyXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHA1XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE0XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2OGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTZcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE3XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE4XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH1cbn0iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IGV4cG9ydHM7XG5cbmVsbGlwdGljLnZlcnNpb24gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuZWxsaXB0aWMudXRpbHMgPSByZXF1aXJlKCcuL2VsbGlwdGljL3V0aWxzJyk7XG5lbGxpcHRpYy5yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuZWxsaXB0aWMuaG1hY0RSQkcgPSByZXF1aXJlKCcuL2VsbGlwdGljL2htYWMtZHJiZycpO1xuZWxsaXB0aWMuY3VydmUgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlJyk7XG5lbGxpcHRpYy5jdXJ2ZXMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlcycpO1xuXG4vLyBQcm90b2NvbHNcbmVsbGlwdGljLmVjID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lYycpO1xuZWxsaXB0aWMuZWRkc2EgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VkZHNhJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgZ2V0TkFGID0gdXRpbHMuZ2V0TkFGO1xudmFyIGdldEpTRiA9IHV0aWxzLmdldEpTRjtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEJhc2VDdXJ2ZSh0eXBlLCBjb25mKSB7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucCA9IG5ldyBCTihjb25mLnAsIDE2KTtcblxuICAvLyBVc2UgTW9udGdvbWVyeSwgd2hlbiB0aGVyZSBpcyBubyBmYXN0IHJlZHVjdGlvbiBmb3IgdGhlIHByaW1lXG4gIHRoaXMucmVkID0gY29uZi5wcmltZSA/IEJOLnJlZChjb25mLnByaW1lKSA6IEJOLm1vbnQodGhpcy5wKTtcblxuICAvLyBVc2VmdWwgZm9yIG1hbnkgY3VydmVzXG4gIHRoaXMuemVybyA9IG5ldyBCTigwKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMub25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIEN1cnZlIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsXG4gIHRoaXMubiA9IGNvbmYubiAmJiBuZXcgQk4oY29uZi5uLCAxNik7XG4gIHRoaXMuZyA9IGNvbmYuZyAmJiB0aGlzLnBvaW50RnJvbUpTT04oY29uZi5nLCBjb25mLmdSZWQpO1xuXG4gIC8vIFRlbXBvcmFyeSBhcnJheXNcbiAgdGhpcy5fd25hZlQxID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDIgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMyA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQ0ID0gbmV3IEFycmF5KDQpO1xuXG4gIC8vIEdlbmVyYWxpemVkIEdyZWcgTWF4d2VsbCdzIHRyaWNrXG4gIHZhciBhZGp1c3RDb3VudCA9IHRoaXMubiAmJiB0aGlzLnAuZGl2KHRoaXMubik7XG4gIGlmICghYWRqdXN0Q291bnQgfHwgYWRqdXN0Q291bnQuY21wbigxMDApID4gMCkge1xuICAgIHRoaXMucmVkTiA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbWF4d2VsbFRyaWNrID0gdHJ1ZTtcbiAgICB0aGlzLnJlZE4gPSB0aGlzLm4udG9SZWQodGhpcy5yZWQpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VDdXJ2ZTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fZml4ZWROYWZNdWwgPSBmdW5jdGlvbiBfZml4ZWROYWZNdWwocCwgaykge1xuICBhc3NlcnQocC5wcmVjb21wdXRlZCk7XG4gIHZhciBkb3VibGVzID0gcC5fZ2V0RG91YmxlcygpO1xuXG4gIHZhciBuYWYgPSBnZXROQUYoaywgMSk7XG4gIHZhciBJID0gKDEgPDwgKGRvdWJsZXMuc3RlcCArIDEpKSAtIChkb3VibGVzLnN0ZXAgJSAyID09PSAwID8gMiA6IDEpO1xuICBJIC89IDM7XG5cbiAgLy8gVHJhbnNsYXRlIGludG8gbW9yZSB3aW5kb3dlZCBmb3JtXG4gIHZhciByZXByID0gW107XG4gIGZvciAodmFyIGogPSAwOyBqIDwgbmFmLmxlbmd0aDsgaiArPSBkb3VibGVzLnN0ZXApIHtcbiAgICB2YXIgbmFmVyA9IDA7XG4gICAgZm9yICh2YXIgayA9IGogKyBkb3VibGVzLnN0ZXAgLSAxOyBrID49IGo7IGstLSlcbiAgICAgIG5hZlcgPSAobmFmVyA8PCAxKSArIG5hZltrXTtcbiAgICByZXByLnB1c2gobmFmVyk7XG4gIH1cblxuICB2YXIgYSA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgYiA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gSTsgaSA+IDA7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwci5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG5hZlcgPSByZXByW2pdO1xuICAgICAgaWYgKG5hZlcgPT09IGkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdKTtcbiAgICAgIGVsc2UgaWYgKG5hZlcgPT09IC1pKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXS5uZWcoKSk7XG4gICAgfVxuICAgIGEgPSBhLmFkZChiKTtcbiAgfVxuICByZXR1cm4gYS50b1AoKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWwgPSBmdW5jdGlvbiBfd25hZk11bChwLCBrKSB7XG4gIHZhciB3ID0gNDtcblxuICAvLyBQcmVjb21wdXRlIHdpbmRvd1xuICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKHcpO1xuICB3ID0gbmFmUG9pbnRzLnduZDtcbiAgdmFyIHduZCA9IG5hZlBvaW50cy5wb2ludHM7XG5cbiAgLy8gR2V0IE5BRiBmb3JtXG4gIHZhciBuYWYgPSBnZXROQUYoaywgdyk7XG5cbiAgLy8gQWRkIGB0aGlzYCooTisxKSBmb3IgZXZlcnkgdy1OQUYgaW5kZXhcbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gbmFmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gQ291bnQgemVyb2VzXG4gICAgZm9yICh2YXIgayA9IDA7IGkgPj0gMCAmJiBuYWZbaV0gPT09IDA7IGktLSlcbiAgICAgIGsrKztcbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuXG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG4gICAgdmFyIHogPSBuYWZbaV07XG4gICAgYXNzZXJ0KHogIT09IDApO1xuICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKSB7XG4gICAgICAvLyBKICstIFBcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEogKy0gSlxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcC50eXBlID09PSAnYWZmaW5lJyA/IGFjYy50b1AoKSA6IGFjYztcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQgPSBmdW5jdGlvbiBfd25hZk11bEFkZChkZWZXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphY29iaWFuUmVzdWx0KSB7XG4gIHZhciB3bmRXaWR0aCA9IHRoaXMuX3duYWZUMTtcbiAgdmFyIHduZCA9IHRoaXMuX3duYWZUMjtcbiAgdmFyIG5hZiA9IHRoaXMuX3duYWZUMztcblxuICAvLyBGaWxsIGFsbCBhcnJheXNcbiAgdmFyIG1heCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKGRlZlcpO1xuICAgIHduZFdpZHRoW2ldID0gbmFmUG9pbnRzLnduZDtcbiAgICB3bmRbaV0gPSBuYWZQb2ludHMucG9pbnRzO1xuICB9XG5cbiAgLy8gQ29tYiBzbWFsbCB3aW5kb3cgTkFGc1xuICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAxOyBpIC09IDIpIHtcbiAgICB2YXIgYSA9IGkgLSAxO1xuICAgIHZhciBiID0gaTtcbiAgICBpZiAod25kV2lkdGhbYV0gIT09IDEgfHwgd25kV2lkdGhbYl0gIT09IDEpIHtcbiAgICAgIG5hZlthXSA9IGdldE5BRihjb2VmZnNbYV0sIHduZFdpZHRoW2FdKTtcbiAgICAgIG5hZltiXSA9IGdldE5BRihjb2VmZnNbYl0sIHduZFdpZHRoW2JdKTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZlthXS5sZW5ndGgsIG1heCk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYl0ubGVuZ3RoLCBtYXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGNvbWIgPSBbXG4gICAgICBwb2ludHNbYV0sIC8qIDEgKi9cbiAgICAgIG51bGwsIC8qIDMgKi9cbiAgICAgIG51bGwsIC8qIDUgKi9cbiAgICAgIHBvaW50c1tiXSAvKiA3ICovXG4gICAgXTtcblxuICAgIC8vIFRyeSB0byBhdm9pZCBQcm9qZWN0aXZlIHBvaW50cywgaWYgcG9zc2libGVcbiAgICBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55KSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBbXG4gICAgICAtMywgLyogLTEgLTEgKi9cbiAgICAgIC0xLCAvKiAtMSAwICovXG4gICAgICAtNSwgLyogLTEgMSAqL1xuICAgICAgLTcsIC8qIDAgLTEgKi9cbiAgICAgIDAsIC8qIDAgMCAqL1xuICAgICAgNywgLyogMCAxICovXG4gICAgICA1LCAvKiAxIC0xICovXG4gICAgICAxLCAvKiAxIDAgKi9cbiAgICAgIDMgIC8qIDEgMSAqL1xuICAgIF07XG5cbiAgICB2YXIganNmID0gZ2V0SlNGKGNvZWZmc1thXSwgY29lZmZzW2JdKTtcbiAgICBtYXggPSBNYXRoLm1heChqc2ZbMF0ubGVuZ3RoLCBtYXgpO1xuICAgIG5hZlthXSA9IG5ldyBBcnJheShtYXgpO1xuICAgIG5hZltiXSA9IG5ldyBBcnJheShtYXgpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWF4OyBqKyspIHtcbiAgICAgIHZhciBqYSA9IGpzZlswXVtqXSB8IDA7XG4gICAgICB2YXIgamIgPSBqc2ZbMV1bal0gfCAwO1xuXG4gICAgICBuYWZbYV1bal0gPSBpbmRleFsoamEgKyAxKSAqIDMgKyAoamIgKyAxKV07XG4gICAgICBuYWZbYl1bal0gPSAwO1xuICAgICAgd25kW2FdID0gY29tYjtcbiAgICB9XG4gIH1cblxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciB0bXAgPSB0aGlzLl93bmFmVDQ7XG4gIGZvciAodmFyIGkgPSBtYXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGsgPSAwO1xuXG4gICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgdmFyIHplcm8gPSB0cnVlO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgICB0bXBbal0gPSBuYWZbal1baV0gfCAwO1xuICAgICAgICBpZiAodG1wW2pdICE9PSAwKVxuICAgICAgICAgIHplcm8gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghemVybylcbiAgICAgICAgYnJlYWs7XG4gICAgICBrKys7XG4gICAgICBpLS07XG4gICAgfVxuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICB2YXIgeiA9IHRtcFtqXTtcbiAgICAgIHZhciBwO1xuICAgICAgaWYgKHogPT09IDApXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZWxzZSBpZiAoeiA+IDApXG4gICAgICAgIHAgPSB3bmRbal1bKHogLSAxKSA+PiAxXTtcbiAgICAgIGVsc2UgaWYgKHogPCAwKVxuICAgICAgICBwID0gd25kW2pdWygteiAtIDEpID4+IDFdLm5lZygpO1xuXG4gICAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHApO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHApO1xuICAgIH1cbiAgfVxuICAvLyBaZXJvaWZ5IHJlZmVyZW5jZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKylcbiAgICB3bmRbaV0gPSBudWxsO1xuXG4gIGlmIChqYWNvYmlhblJlc3VsdClcbiAgICByZXR1cm4gYWNjO1xuICBlbHNlXG4gICAgcmV0dXJuIGFjYy50b1AoKTtcbn07XG5cbmZ1bmN0aW9uIEJhc2VQb2ludChjdXJ2ZSwgdHlwZSkge1xuICB0aGlzLmN1cnZlID0gY3VydmU7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBudWxsO1xufVxuQmFzZUN1cnZlLkJhc2VQb2ludCA9IEJhc2VQb2ludDtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKC8qb3RoZXIqLykge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIGJ5dGVzID0gdXRpbHMudG9BcnJheShieXRlcywgZW5jKTtcblxuICB2YXIgbGVuID0gdGhpcy5wLmJ5dGVMZW5ndGgoKTtcblxuICAvLyB1bmNvbXByZXNzZWQsIGh5YnJpZC1vZGQsIGh5YnJpZC1ldmVuXG4gIGlmICgoYnl0ZXNbMF0gPT09IDB4MDQgfHwgYnl0ZXNbMF0gPT09IDB4MDYgfHwgYnl0ZXNbMF0gPT09IDB4MDcpICYmXG4gICAgICBieXRlcy5sZW5ndGggLSAxID09PSAyICogbGVuKSB7XG4gICAgaWYgKGJ5dGVzWzBdID09PSAweDA2KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMCk7XG4gICAgZWxzZSBpZiAoYnl0ZXNbMF0gPT09IDB4MDcpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAxKTtcblxuICAgIHZhciByZXMgPSAgdGhpcy5wb2ludChieXRlcy5zbGljZSgxLCAxICsgbGVuKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuc2xpY2UoMSArIGxlbiwgMSArIDIgKiBsZW4pKTtcblxuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoKGJ5dGVzWzBdID09PSAweDAyIHx8IGJ5dGVzWzBdID09PSAweDAzKSAmJlxuICAgICAgICAgICAgICBieXRlcy5sZW5ndGggLSAxID09PSBsZW4pIHtcbiAgICByZXR1cm4gdGhpcy5wb2ludEZyb21YKGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLCBieXRlc1swXSA9PT0gMHgwMyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBvaW50IGZvcm1hdCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkID0gZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZChlbmMpIHtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlKGVuYywgdHJ1ZSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKGNvbXBhY3QpIHtcbiAgdmFyIGxlbiA9IHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7XG4gIHZhciB4ID0gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCBsZW4pO1xuXG4gIGlmIChjb21wYWN0KVxuICAgIHJldHVybiBbIHRoaXMuZ2V0WSgpLmlzRXZlbigpID8gMHgwMiA6IDB4MDMgXS5jb25jYXQoeCk7XG5cbiAgcmV0dXJuIFsgMHgwNCBdLmNvbmNhdCh4LCB0aGlzLmdldFkoKS50b0FycmF5KCdiZScsIGxlbikpIDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGVuYywgY29tcGFjdCkge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuX2VuY29kZShjb21wYWN0KSwgZW5jKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUucHJlY29tcHV0ZSA9IGZ1bmN0aW9uIHByZWNvbXB1dGUocG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHByZWNvbXB1dGVkID0ge1xuICAgIGRvdWJsZXM6IG51bGwsXG4gICAgbmFmOiBudWxsLFxuICAgIGJldGE6IG51bGxcbiAgfTtcbiAgcHJlY29tcHV0ZWQubmFmID0gdGhpcy5fZ2V0TkFGUG9pbnRzKDgpO1xuICBwcmVjb21wdXRlZC5kb3VibGVzID0gdGhpcy5fZ2V0RG91Ymxlcyg0LCBwb3dlcik7XG4gIHByZWNvbXB1dGVkLmJldGEgPSB0aGlzLl9nZXRCZXRhKCk7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBwcmVjb21wdXRlZDtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2hhc0RvdWJsZXMgPSBmdW5jdGlvbiBfaGFzRG91YmxlcyhrKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRvdWJsZXMgPSB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG4gIGlmICghZG91YmxlcylcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGRvdWJsZXMucG9pbnRzLmxlbmd0aCA+PSBNYXRoLmNlaWwoKGsuYml0TGVuZ3RoKCkgKyAxKSAvIGRvdWJsZXMuc3RlcCk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzID0gZnVuY3Rpb24gX2dldERvdWJsZXMoc3RlcCwgcG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG5cbiAgdmFyIGRvdWJsZXMgPSBbIHRoaXMgXTtcbiAgdmFyIGFjYyA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93ZXI7IGkgKz0gc3RlcCkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3RlcDsgaisrKVxuICAgICAgYWNjID0gYWNjLmRibCgpO1xuICAgIGRvdWJsZXMucHVzaChhY2MpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RlcDogc3RlcCxcbiAgICBwb2ludHM6IGRvdWJsZXNcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cyA9IGZ1bmN0aW9uIF9nZXROQUZQb2ludHMod25kKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQubmFmKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtcblxuICB2YXIgcmVzID0gWyB0aGlzIF07XG4gIHZhciBtYXggPSAoMSA8PCB3bmQpIC0gMTtcbiAgdmFyIGRibCA9IG1heCA9PT0gMSA/IG51bGwgOiB0aGlzLmRibCgpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IG1heDsgaSsrKVxuICAgIHJlc1tpXSA9IHJlc1tpIC0gMV0uYWRkKGRibCk7XG4gIHJldHVybiB7XG4gICAgd25kOiB3bmQsXG4gICAgcG9pbnRzOiByZXNcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldEJldGEgPSBmdW5jdGlvbiBfZ2V0QmV0YSgpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmRibHAgPSBmdW5jdGlvbiBkYmxwKGspIHtcbiAgdmFyIHIgPSB0aGlzO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGs7IGkrKylcbiAgICByID0gci5kYmwoKTtcbiAgcmV0dXJuIHI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBFZHdhcmRzQ3VydmUoY29uZikge1xuICAvLyBOT1RFOiBJbXBvcnRhbnQgYXMgd2UgYXJlIGNyZWF0aW5nIHBvaW50IGluIEJhc2UuY2FsbCgpXG4gIHRoaXMudHdpc3RlZCA9IChjb25mLmEgfCAwKSAhPT0gMTtcbiAgdGhpcy5tT25lQSA9IHRoaXMudHdpc3RlZCAmJiAoY29uZi5hIHwgMCkgPT09IC0xO1xuICB0aGlzLmV4dGVuZGVkID0gdGhpcy5tT25lQTtcblxuICBCYXNlLmNhbGwodGhpcywgJ2Vkd2FyZHMnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudW1vZCh0aGlzLnJlZC5tKTtcbiAgdGhpcy5hID0gdGhpcy5hLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jID0gbmV3IEJOKGNvbmYuYywgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jMiA9IHRoaXMuYy5yZWRTcXIoKTtcbiAgdGhpcy5kID0gbmV3IEJOKGNvbmYuZCwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5kZCA9IHRoaXMuZC5yZWRBZGQodGhpcy5kKTtcblxuICBhc3NlcnQoIXRoaXMudHdpc3RlZCB8fCB0aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDApO1xuICB0aGlzLm9uZUMgPSAoY29uZi5jIHwgMCkgPT09IDE7XG59XG5pbmhlcml0cyhFZHdhcmRzQ3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBFZHdhcmRzQ3VydmU7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEEgPSBmdW5jdGlvbiBfbXVsQShudW0pIHtcbiAgaWYgKHRoaXMubU9uZUEpXG4gICAgcmV0dXJuIG51bS5yZWROZWcoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmEucmVkTXVsKG51bSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxDID0gZnVuY3Rpb24gX211bEMobnVtKSB7XG4gIGlmICh0aGlzLm9uZUMpXG4gICAgcmV0dXJuIG51bTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmMucmVkTXVsKG51bSk7XG59O1xuXG4vLyBKdXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggU2hvcnQgY3VydmVcbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSwgeiwgdCk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwoeDIpKTtcbiAgdmFyIGxocyA9IHRoaXMub25lLnJlZFN1Yih0aGlzLmMyLnJlZE11bCh0aGlzLmQpLnJlZE11bCh4MikpO1xuXG4gIHZhciB5MiA9IHJocy5yZWRNdWwobGhzLnJlZEludm0oKSk7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVkgPSBmdW5jdGlvbiBwb2ludEZyb21ZKHksIG9kZCkge1xuICB5ID0gbmV3IEJOKHksIDE2KTtcbiAgaWYgKCF5LnJlZClcbiAgICB5ID0geS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8geF4yID0gKHleMiAtIDEpIC8gKGQgeV4yICsgMSlcbiAgdmFyIHkyID0geS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHkyLnJlZFN1Yih0aGlzLm9uZSk7XG4gIHZhciByaHMgPSB5Mi5yZWRNdWwodGhpcy5kKS5yZWRBZGQodGhpcy5vbmUpO1xuICB2YXIgeDIgPSBsaHMucmVkTXVsKHJocy5yZWRJbnZtKCkpO1xuXG4gIGlmICh4Mi5jbXAodGhpcy56ZXJvKSA9PT0gMCkge1xuICAgIGlmIChvZGQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sIHkpO1xuICB9XG5cbiAgdmFyIHggPSB4Mi5yZWRTcXJ0KCk7XG4gIGlmICh4LnJlZFNxcigpLnJlZFN1Yih4MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgaWYgKHguaXNPZGQoKSAhPT0gb2RkKVxuICAgIHggPSB4LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8gQ3VydmU6IEEgKiBYXjIgKyBZXjIgPSBDXjIgKiAoMSArIEQgKiBYXjIgKiBZXjIpXG4gIHBvaW50Lm5vcm1hbGl6ZSgpO1xuXG4gIHZhciB4MiA9IHBvaW50LngucmVkU3FyKCk7XG4gIHZhciB5MiA9IHBvaW50LnkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB4Mi5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeTIpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoeDIpLnJlZE11bCh5MikpKTtcblxuICByZXR1cm4gbGhzLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIHosIHQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnpPbmUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSB6ID8gbmV3IEJOKHosIDE2KSA6IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHQgJiYgbmV3IEJOKHQsIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAodGhpcy50ICYmICF0aGlzLnQucmVkKVxuICAgICAgdGhpcy50ID0gdGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xuXG4gICAgLy8gVXNlIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQgJiYgIXRoaXMudCkge1xuICAgICAgdGhpcy50ID0gdGhpcy54LnJlZE11bCh0aGlzLnkpO1xuICAgICAgaWYgKCF0aGlzLnpPbmUpXG4gICAgICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gICAgfVxuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgeiwgdCk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0sIG9ialsyXSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnguY21wbigwKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy55LmNtcCh0aGlzLnopID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHREYmwgPSBmdW5jdGlvbiBfZXh0RGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1od2NkXG4gIC8vIDRNICsgNFNcblxuICAvLyBBID0gWDFeMlxuICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gQiA9IFkxXjJcbiAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIEMgPSAyICogWjFeMlxuICB2YXIgYyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgYyA9IGMucmVkSUFkZChjKTtcbiAgLy8gRCA9IGEgKiBBXG4gIHZhciBkID0gdGhpcy5jdXJ2ZS5fbXVsQShhKTtcbiAgLy8gRSA9IChYMSArIFkxKV4yIC0gQSAtIEJcbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGIpO1xuICAvLyBHID0gRCArIEJcbiAgdmFyIGcgPSBkLnJlZEFkZChiKTtcbiAgLy8gRiA9IEcgLSBDXG4gIHZhciBmID0gZy5yZWRTdWIoYyk7XG4gIC8vIEggPSBEIC0gQlxuICB2YXIgaCA9IGQucmVkU3ViKGIpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pEYmwgPSBmdW5jdGlvbiBfcHJvakRibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtYmJqbHBcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwNy1ibFxuICAvLyBhbmQgb3RoZXJzXG4gIC8vIEdlbmVyYWxseSAzTSArIDRTIG9yIDJNICsgNFNcblxuICAvLyBCID0gKFgxICsgWTEpXjJcbiAgdmFyIGIgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7XG4gIC8vIEMgPSBYMV4yXG4gIHZhciBjID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBEID0gWTFeMlxuICB2YXIgZCA9IHRoaXMueS5yZWRTcXIoKTtcblxuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gRSA9IGEgKiBDXG4gICAgdmFyIGUgPSB0aGlzLmN1cnZlLl9tdWxBKGMpO1xuICAgIC8vIEYgPSBFICsgRFxuICAgIHZhciBmID0gZS5yZWRBZGQoZCk7XG4gICAgaWYgKHRoaXMuek9uZSkge1xuICAgICAgLy8gWDMgPSAoQiAtIEMgLSBEKSAqIChGIC0gMilcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkU3ViKGQpLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEZeMiAtIDIgKiBGXG4gICAgICBueiA9IGYucmVkU3FyKCkucmVkU3ViKGYpLnJlZFN1YihmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSCA9IFoxXjJcbiAgICAgIHZhciBoID0gdGhpcy56LnJlZFNxcigpO1xuICAgICAgLy8gSiA9IEYgLSAyICogSFxuICAgICAgdmFyIGogPSBmLnJlZFN1YihoKS5yZWRJU3ViKGgpO1xuICAgICAgLy8gWDMgPSAoQi1DLUQpKkpcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkSVN1YihkKS5yZWRNdWwoaik7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRiAqIEpcbiAgICAgIG56ID0gZi5yZWRNdWwoaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEUgPSBDICsgRFxuICAgIHZhciBlID0gYy5yZWRBZGQoZCk7XG4gICAgLy8gSCA9IChjICogWjEpXjJcbiAgICB2YXIgaCA9IHRoaXMuY3VydmUuX211bEModGhpcy5jLnJlZE11bCh0aGlzLnopKS5yZWRTcXIoKTtcbiAgICAvLyBKID0gRSAtIDIgKiBIXG4gICAgdmFyIGogPSBlLnJlZFN1YihoKS5yZWRTdWIoaCk7XG4gICAgLy8gWDMgPSBjICogKEIgLSBFKSAqIEpcbiAgICBueCA9IHRoaXMuY3VydmUuX211bEMoYi5yZWRJU3ViKGUpKS5yZWRNdWwoaik7XG4gICAgLy8gWTMgPSBjICogRSAqIChDIC0gRClcbiAgICBueSA9IHRoaXMuY3VydmUuX211bEMoZSkucmVkTXVsKGMucmVkSVN1YihkKSk7XG4gICAgLy8gWjMgPSBFICogSlxuICAgIG56ID0gZS5yZWRNdWwoaik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRG91YmxlIGluIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHREYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qRGJsKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dEFkZCA9IGZ1bmN0aW9uIF9leHRBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1od2NkLTNcbiAgLy8gOE1cblxuICAvLyBBID0gKFkxIC0gWDEpICogKFkyIC0gWDIpXG4gIHZhciBhID0gdGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChwLnkucmVkU3ViKHAueCkpO1xuICAvLyBCID0gKFkxICsgWDEpICogKFkyICsgWDIpXG4gIHZhciBiID0gdGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChwLnkucmVkQWRkKHAueCkpO1xuICAvLyBDID0gVDEgKiBrICogVDJcbiAgdmFyIGMgPSB0aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChwLnQpO1xuICAvLyBEID0gWjEgKiAyICogWjJcbiAgdmFyIGQgPSB0aGlzLnoucmVkTXVsKHAuei5yZWRBZGQocC56KSk7XG4gIC8vIEUgPSBCIC0gQVxuICB2YXIgZSA9IGIucmVkU3ViKGEpO1xuICAvLyBGID0gRCAtIENcbiAgdmFyIGYgPSBkLnJlZFN1YihjKTtcbiAgLy8gRyA9IEQgKyBDXG4gIHZhciBnID0gZC5yZWRBZGQoYyk7XG4gIC8vIEggPSBCICsgQVxuICB2YXIgaCA9IGIucmVkQWRkKGEpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pBZGQgPSBmdW5jdGlvbiBfcHJvakFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWJiamxwXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDctYmxcbiAgLy8gMTBNICsgMVNcblxuICAvLyBBID0gWjEgKiBaMlxuICB2YXIgYSA9IHRoaXMuei5yZWRNdWwocC56KTtcbiAgLy8gQiA9IEFeMlxuICB2YXIgYiA9IGEucmVkU3FyKCk7XG4gIC8vIEMgPSBYMSAqIFgyXG4gIHZhciBjID0gdGhpcy54LnJlZE11bChwLngpO1xuICAvLyBEID0gWTEgKiBZMlxuICB2YXIgZCA9IHRoaXMueS5yZWRNdWwocC55KTtcbiAgLy8gRSA9IGQgKiBDICogRFxuICB2YXIgZSA9IHRoaXMuY3VydmUuZC5yZWRNdWwoYykucmVkTXVsKGQpO1xuICAvLyBGID0gQiAtIEVcbiAgdmFyIGYgPSBiLnJlZFN1YihlKTtcbiAgLy8gRyA9IEIgKyBFXG4gIHZhciBnID0gYi5yZWRBZGQoZSk7XG4gIC8vIFgzID0gQSAqIEYgKiAoKFgxICsgWTEpICogKFgyICsgWTIpIC0gQyAtIEQpXG4gIHZhciB0bXAgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKHAueC5yZWRBZGQocC55KSkucmVkSVN1YihjKS5yZWRJU3ViKGQpO1xuICB2YXIgbnggPSBhLnJlZE11bChmKS5yZWRNdWwodG1wKTtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBhICogQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGMpKSk7XG4gICAgLy8gWjMgPSBGICogR1xuICAgIG56ID0gZi5yZWRNdWwoZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1YihjKSk7XG4gICAgLy8gWjMgPSBjICogRiAqIEdcbiAgICBueiA9IHRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGcpO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHRBZGQocCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakFkZChwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCBmYWxzZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIGlmICh0aGlzLnpPbmUpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHZhciB6aSA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwoemkpO1xuICB0aGlzLnkgPSB0aGlzLnkucmVkTXVsKHppKTtcbiAgaWYgKHRoaXMudClcbiAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHppKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHRoaXMuek9uZSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ICYmIHRoaXMudC5yZWROZWcoKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzID09PSBvdGhlciB8fFxuICAgICAgICAgdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMuZ2V0WSgpLmNtcChvdGhlci5nZXRZKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gQ29tcGF0aWJpbGl0eSB3aXRoIEJhc2VDdXJ2ZVxuUG9pbnQucHJvdG90eXBlLnRvUCA9IFBvaW50LnByb3RvdHlwZS5ub3JtYWxpemU7XG5Qb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBQb2ludC5wcm90b3R5cGUuYWRkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSBleHBvcnRzO1xuXG5jdXJ2ZS5iYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5jdXJ2ZS5zaG9ydCA9IHJlcXVpcmUoJy4vc2hvcnQnKTtcbmN1cnZlLm1vbnQgPSByZXF1aXJlKCcuL21vbnQnKTtcbmN1cnZlLmVkd2FyZHMgPSByZXF1aXJlKCcuL2Vkd2FyZHMnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG5cbmZ1bmN0aW9uIE1vbnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnbW9udCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuaTQgPSBuZXcgQk4oNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmEyNCA9IHRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKTtcbn1cbmluaGVyaXRzKE1vbnRDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRDdXJ2ZTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIHZhciB4ID0gcG9pbnQubm9ybWFsaXplKCkueDtcbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHgyLnJlZE11bCh4KS5yZWRBZGQoeDIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZCh4KTtcbiAgdmFyIHkgPSByaHMucmVkU3FydCgpO1xuXG4gIHJldHVybiB5LnJlZFNxcigpLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUuemVybztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICByZXR1cm4gdGhpcy5wb2ludCh1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpLCAxKTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB6KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeik7XG59O1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZSgpIHtcbiAgLy8gTm8tb3Bcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZSgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0gfHwgY3VydmUub25lKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZG91YmxpbmctZGJsLTE5ODctbS0zXG4gIC8vIDJNICsgMlMgKyA0QVxuXG4gIC8vIEEgPSBYMSArIFoxXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBBQSA9IEFeMlxuICB2YXIgYWEgPSBhLnJlZFNxcigpO1xuICAvLyBCID0gWDEgLSBaMVxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQkIgPSBCXjJcbiAgdmFyIGJiID0gYi5yZWRTcXIoKTtcbiAgLy8gQyA9IEFBIC0gQkJcbiAgdmFyIGMgPSBhYS5yZWRTdWIoYmIpO1xuICAvLyBYMyA9IEFBICogQkJcbiAgdmFyIG54ID0gYWEucmVkTXVsKGJiKTtcbiAgLy8gWjMgPSBDICogKEJCICsgQTI0ICogQylcbiAgdmFyIG56ID0gYy5yZWRNdWwoYmIucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChjKSkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kaWZmQWRkID0gZnVuY3Rpb24gZGlmZkFkZChwLCBkaWZmKSB7XG4gIC8vIGh0dHA6Ly9oeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tbW9udGdvbS14ei5odG1sI2RpZmZhZGQtZGFkZC0xOTg3LW0tM1xuICAvLyA0TSArIDJTICsgNkFcblxuICAvLyBBID0gWDIgKyBaMlxuICB2YXIgYSA9IHRoaXMueC5yZWRBZGQodGhpcy56KTtcbiAgLy8gQiA9IFgyIC0gWjJcbiAgdmFyIGIgPSB0aGlzLngucmVkU3ViKHRoaXMueik7XG4gIC8vIEMgPSBYMyArIFozXG4gIHZhciBjID0gcC54LnJlZEFkZChwLnopO1xuICAvLyBEID0gWDMgLSBaM1xuICB2YXIgZCA9IHAueC5yZWRTdWIocC56KTtcbiAgLy8gREEgPSBEICogQVxuICB2YXIgZGEgPSBkLnJlZE11bChhKTtcbiAgLy8gQ0IgPSBDICogQlxuICB2YXIgY2IgPSBjLnJlZE11bChiKTtcbiAgLy8gWDUgPSBaMSAqIChEQSArIENCKV4yXG4gIHZhciBueCA9IGRpZmYuei5yZWRNdWwoZGEucmVkQWRkKGNiKS5yZWRTcXIoKSk7XG4gIC8vIFo1ID0gWDEgKiAoREEgLSBDQileMlxuICB2YXIgbnogPSBkaWZmLngucmVkTXVsKGRhLnJlZElTdWIoY2IpLnJlZFNxcigpKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICB2YXIgdCA9IGsuY2xvbmUoKTtcbiAgdmFyIGEgPSB0aGlzOyAvLyAoTiAvIDIpICogUSArIFFcbiAgdmFyIGIgPSB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpOyAvLyAoTiAvIDIpICogUVxuICB2YXIgYyA9IHRoaXM7IC8vIFFcblxuICBmb3IgKHZhciBiaXRzID0gW107IHQuY21wbigwKSAhPT0gMDsgdC5pdXNocm4oMSkpXG4gICAgYml0cy5wdXNoKHQuYW5kbG4oMSkpO1xuXG4gIGZvciAodmFyIGkgPSBiaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGJpdHNbaV0gPT09IDApIHtcbiAgICAgIC8vIE4gKiBRICsgUSA9ICgoTiAvIDIpICogUSArIFEpKSArIChOIC8gMikgKiBRXG4gICAgICBhID0gYS5kaWZmQWRkKGIsIGMpO1xuICAgICAgLy8gTiAqIFEgPSAyICogKChOIC8gMikgKiBRICsgUSkpXG4gICAgICBiID0gYi5kYmwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTiAqIFEgPSAoKE4gLyAyKSAqIFEgKyBRKSArICgoTiAvIDIpICogUSlcbiAgICAgIGIgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSArIFEgPSAyICogKChOIC8gMikgKiBRICsgUSlcbiAgICAgIGEgPSBhLmRibCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYjtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuanVtbEFkZCA9IGZ1bmN0aW9uIGp1bWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gY3VydmUuYmFzZTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnc2hvcnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnRpbnYgPSB0aGlzLnR3by5yZWRJbnZtKCk7XG5cbiAgdGhpcy56ZXJvQSA9IHRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSA9PT0gMDtcbiAgdGhpcy50aHJlZUEgPSB0aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpID09PSAwO1xuXG4gIC8vIElmIHRoZSBjdXJ2ZSBpcyBlbmRvbW9ycGhpYywgcHJlY2FsY3VsYXRlIGJldGEgYW5kIGxhbWJkYVxuICB0aGlzLmVuZG8gPSB0aGlzLl9nZXRFbmRvbW9ycGhpc20oY29uZik7XG4gIHRoaXMuX2VuZG9XbmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX2VuZG9XbmFmVDIgPSBuZXcgQXJyYXkoNCk7XG59XG5pbmhlcml0cyhTaG9ydEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gU2hvcnRDdXJ2ZTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbSA9IGZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZikge1xuICAvLyBObyBlZmZpY2llbnQgZW5kb21vcnBoaXNtXG4gIGlmICghdGhpcy56ZXJvQSB8fCAhdGhpcy5nIHx8ICF0aGlzLm4gfHwgdGhpcy5wLm1vZG4oMykgIT09IDEpXG4gICAgcmV0dXJuO1xuXG4gIC8vIENvbXB1dGUgYmV0YSBhbmQgbGFtYmRhLCB0aGF0IGxhbWJkYSAqIFAgPSAoYmV0YSAqIFB4OyBQeSlcbiAgdmFyIGJldGE7XG4gIHZhciBsYW1iZGE7XG4gIGlmIChjb25mLmJldGEpIHtcbiAgICBiZXRhID0gbmV3IEJOKGNvbmYuYmV0YSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmV0YXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtcbiAgICAvLyBDaG9vc2UgdGhlIHNtYWxsZXN0IGJldGFcbiAgICBiZXRhID0gYmV0YXNbMF0uY21wKGJldGFzWzFdKSA8IDAgPyBiZXRhc1swXSA6IGJldGFzWzFdO1xuICAgIGJldGEgPSBiZXRhLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxuICBpZiAoY29uZi5sYW1iZGEpIHtcbiAgICBsYW1iZGEgPSBuZXcgQk4oY29uZi5sYW1iZGEsIDE2KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDaG9vc2UgdGhlIGxhbWJkYSB0aGF0IGlzIG1hdGNoaW5nIHNlbGVjdGVkIGJldGFcbiAgICB2YXIgbGFtYmRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO1xuICAgIGlmICh0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMV07XG4gICAgICBhc3NlcnQodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBiYXNpcyB2ZWN0b3JzLCB1c2VkIGZvciBiYWxhbmNlZCBsZW5ndGgtdHdvIHJlcHJlc2VudGF0aW9uXG4gIHZhciBiYXNpcztcbiAgaWYgKGNvbmYuYmFzaXMpIHtcbiAgICBiYXNpcyA9IGNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYTogbmV3IEJOKHZlYy5hLCAxNiksXG4gICAgICAgIGI6IG5ldyBCTih2ZWMuYiwgMTYpXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzXG4gIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzID0gZnVuY3Rpb24gX2dldEVuZG9Sb290cyhudW0pIHtcbiAgLy8gRmluZCByb290cyBvZiBmb3IgeF4yICsgeCArIDEgaW4gRlxuICAvLyBSb290ID0gKC0xICstIFNxcnQoLTMpKSAvIDJcbiAgLy9cbiAgdmFyIHJlZCA9IG51bSA9PT0gdGhpcy5wID8gdGhpcy5yZWQgOiBCTi5tb250KG51bSk7XG4gIHZhciB0aW52ID0gbmV3IEJOKDIpLnRvUmVkKHJlZCkucmVkSW52bSgpO1xuICB2YXIgbnRpbnYgPSB0aW52LnJlZE5lZygpO1xuXG4gIHZhciBzID0gbmV3IEJOKDMpLnRvUmVkKHJlZCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bCh0aW52KTtcblxuICB2YXIgbDEgPSBudGludi5yZWRBZGQocykuZnJvbVJlZCgpO1xuICB2YXIgbDIgPSBudGludi5yZWRTdWIocykuZnJvbVJlZCgpO1xuICByZXR1cm4gWyBsMSwgbDIgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXMgPSBmdW5jdGlvbiBfZ2V0RW5kb0Jhc2lzKGxhbWJkYSkge1xuICAvLyBhcHJ4U3FydCA+PSBzcXJ0KHRoaXMubilcbiAgdmFyIGFwcnhTcXJ0ID0gdGhpcy5uLnVzaHJuKE1hdGguZmxvb3IodGhpcy5uLmJpdExlbmd0aCgpIC8gMikpO1xuXG4gIC8vIDMuNzRcbiAgLy8gUnVuIEVHQ0QsIHVudGlsIHIoTCArIDEpIDwgYXByeFNxcnRcbiAgdmFyIHUgPSBsYW1iZGE7XG4gIHZhciB2ID0gdGhpcy5uLmNsb25lKCk7XG4gIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgdmFyIHkxID0gbmV3IEJOKDApO1xuICB2YXIgeDIgPSBuZXcgQk4oMCk7XG4gIHZhciB5MiA9IG5ldyBCTigxKTtcblxuICAvLyBOT1RFOiBhbGwgdmVjdG9ycyBhcmUgcm9vdHMgb2Y6IGEgKyBiICogbGFtYmRhID0gMCAobW9kIG4pXG4gIHZhciBhMDtcbiAgdmFyIGIwO1xuICAvLyBGaXJzdCB2ZWN0b3JcbiAgdmFyIGExO1xuICB2YXIgYjE7XG4gIC8vIFNlY29uZCB2ZWN0b3JcbiAgdmFyIGEyO1xuICB2YXIgYjI7XG5cbiAgdmFyIHByZXZSO1xuICB2YXIgaSA9IDA7XG4gIHZhciByO1xuICB2YXIgeDtcbiAgd2hpbGUgKHUuY21wbigwKSAhPT0gMCkge1xuICAgIHZhciBxID0gdi5kaXYodSk7XG4gICAgciA9IHYuc3ViKHEubXVsKHUpKTtcbiAgICB4ID0geDIuc3ViKHEubXVsKHgxKSk7XG4gICAgdmFyIHkgPSB5Mi5zdWIocS5tdWwoeTEpKTtcblxuICAgIGlmICghYTEgJiYgci5jbXAoYXByeFNxcnQpIDwgMCkge1xuICAgICAgYTAgPSBwcmV2Ui5uZWcoKTtcbiAgICAgIGIwID0geDE7XG4gICAgICBhMSA9IHIubmVnKCk7XG4gICAgICBiMSA9IHg7XG4gICAgfSBlbHNlIGlmIChhMSAmJiArK2kgPT09IDIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBwcmV2UiA9IHI7XG5cbiAgICB2ID0gdTtcbiAgICB1ID0gcjtcbiAgICB4MiA9IHgxO1xuICAgIHgxID0geDtcbiAgICB5MiA9IHkxO1xuICAgIHkxID0geTtcbiAgfVxuICBhMiA9IHIubmVnKCk7XG4gIGIyID0geDtcblxuICB2YXIgbGVuMSA9IGExLnNxcigpLmFkZChiMS5zcXIoKSk7XG4gIHZhciBsZW4yID0gYTIuc3FyKCkuYWRkKGIyLnNxcigpKTtcbiAgaWYgKGxlbjIuY21wKGxlbjEpID49IDApIHtcbiAgICBhMiA9IGEwO1xuICAgIGIyID0gYjA7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgc2lnbnNcbiAgaWYgKGExLm5lZ2F0aXZlKSB7XG4gICAgYTEgPSBhMS5uZWcoKTtcbiAgICBiMSA9IGIxLm5lZygpO1xuICB9XG4gIGlmIChhMi5uZWdhdGl2ZSkge1xuICAgIGEyID0gYTIubmVnKCk7XG4gICAgYjIgPSBiMi5uZWcoKTtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgeyBhOiBhMSwgYjogYjEgfSxcbiAgICB7IGE6IGEyLCBiOiBiMiB9XG4gIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0ID0gZnVuY3Rpb24gX2VuZG9TcGxpdChrKSB7XG4gIHZhciBiYXNpcyA9IHRoaXMuZW5kby5iYXNpcztcbiAgdmFyIHYxID0gYmFzaXNbMF07XG4gIHZhciB2MiA9IGJhc2lzWzFdO1xuXG4gIHZhciBjMSA9IHYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG4gIHZhciBjMiA9IHYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG5cbiAgdmFyIHAxID0gYzEubXVsKHYxLmEpO1xuICB2YXIgcDIgPSBjMi5tdWwodjIuYSk7XG4gIHZhciBxMSA9IGMxLm11bCh2MS5iKTtcbiAgdmFyIHEyID0gYzIubXVsKHYyLmIpO1xuXG4gIC8vIENhbGN1bGF0ZSBhbnN3ZXJcbiAgdmFyIGsxID0gay5zdWIocDEpLnN1YihwMik7XG4gIHZhciBrMiA9IHExLmFkZChxMikubmVnKCk7XG4gIHJldHVybiB7IGsxOiBrMSwgazI6IGsyIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB5MiA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICAvLyBYWFggSXMgdGhlcmUgYW55IHdheSB0byB0ZWxsIGlmIHRoZSBudW1iZXIgaXMgb2RkIHdpdGhvdXQgY29udmVydGluZyBpdFxuICAvLyB0byBub24tcmVkIGZvcm0/XG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pbmYpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHggPSBwb2ludC54O1xuICB2YXIgeSA9IHBvaW50Lnk7XG5cbiAgdmFyIGF4ID0gdGhpcy5hLnJlZE11bCh4KTtcbiAgdmFyIHJocyA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoYXgpLnJlZElBZGQodGhpcy5iKTtcbiAgcmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQgPVxuICAgIGZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICB2YXIgbmNvZWZmcyA9IHRoaXMuX2VuZG9XbmFmVDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgdmFyIHAgPSBwb2ludHNbaV07XG4gICAgdmFyIGJldGEgPSBwLl9nZXRCZXRhKCk7XG5cbiAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsxLmluZWcoKTtcbiAgICAgIHAgPSBwLm5lZyh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHNwbGl0LmsyLm5lZ2F0aXZlKSB7XG4gICAgICBzcGxpdC5rMi5pbmVnKCk7XG4gICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgfVxuXG4gICAgbnBvaW50c1tpICogMl0gPSBwO1xuICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgbmNvZWZmc1tpICogMl0gPSBzcGxpdC5rMTtcbiAgICBuY29lZmZzW2kgKiAyICsgMV0gPSBzcGxpdC5rMjtcbiAgfVxuICB2YXIgcmVzID0gdGhpcy5fd25hZk11bEFkZCgxLCBucG9pbnRzLCBuY29lZmZzLCBpICogMiwgamFjb2JpYW5SZXN1bHQpO1xuXG4gIC8vIENsZWFuLXVwIHJlZmVyZW5jZXMgdG8gcG9pbnRzIGFuZCBjb2VmZmljaWVudHNcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgbnBvaW50c1tqXSA9IG51bGw7XG4gICAgbmNvZWZmc1tqXSA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCBpc1JlZCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnYWZmaW5lJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSBudWxsO1xuICAgIHRoaXMueSA9IG51bGw7XG4gICAgdGhpcy5pbmYgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICAvLyBGb3JjZSByZWRnb21lcnkgcmVwcmVzZW50YXRpb24gd2hlbiBsb2FkaW5nIGZyb20gSlNPTlxuICAgIGlmIChpc1JlZCkge1xuICAgICAgdGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICAgIHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgfVxuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLmluZiA9IGZhbHNlO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIGlzUmVkKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgaXNSZWQpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqLCByZWQpIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaiwgcmVkKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICBpZiAoIXRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm47XG5cbiAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gIGlmIChwcmUgJiYgcHJlLmJldGEpXG4gICAgcmV0dXJuIHByZS5iZXRhO1xuXG4gIHZhciBiZXRhID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSwgdGhpcy55KTtcbiAgaWYgKHByZSkge1xuICAgIHZhciBjdXJ2ZSA9IHRoaXMuY3VydmU7XG4gICAgdmFyIGVuZG9NdWwgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gY3VydmUucG9pbnQocC54LnJlZE11bChjdXJ2ZS5lbmRvLmJldGEpLCBwLnkpO1xuICAgIH07XG4gICAgcHJlLmJldGEgPSBiZXRhO1xuICAgIGJldGEucHJlY29tcHV0ZWQgPSB7XG4gICAgICBiZXRhOiBudWxsLFxuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAoZW5kb011bClcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJldGE7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnkgXTtcblxuICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSwgdGhpcy5wcmVjb21wdXRlZCAmJiB7XG4gICAgZG91YmxlczogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSlcbiAgICB9XG4gIH0gXTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaiwgcmVkKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJylcbiAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gIHZhciByZXMgPSBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgaWYgKCFvYmpbMl0pXG4gICAgcmV0dXJuIHJlcztcblxuICBmdW5jdGlvbiBvYmoycG9pbnQob2JqKSB7XG4gICAgcmV0dXJuIGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICB9XG5cbiAgdmFyIHByZSA9IG9ialsyXTtcbiAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgIGJldGE6IG51bGwsXG4gICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgcmV0dXJuIHRoaXMuaW5mO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBQICsgUCA9IDJQXG4gIGlmICh0aGlzLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIC8vIFAgKyAoLVApID0gT1xuICBpZiAodGhpcy5uZWcoKS5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICAvLyBQICsgUSA9IE9cbiAgaWYgKHRoaXMueC5jbXAocC54KSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYyA9IHRoaXMueS5yZWRTdWIocC55KTtcbiAgaWYgKGMuY21wbigwKSAhPT0gMClcbiAgICBjID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihwLngpLnJlZEludm0oKSk7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIocC54KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAyUCA9IE9cbiAgdmFyIHlzMSA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgaWYgKHlzMS5jbXBuKDApID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIHZhciB4MiA9IHRoaXMueC5yZWRTcXIoKTtcbiAgdmFyIGR5aW52ID0geXMxLnJlZEludm0oKTtcbiAgdmFyIGMgPSB4Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTtcblxuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGsgPSBuZXcgQk4oaywgMTYpO1xuXG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbIHRoaXMgXSwgWyBrIF0pO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgdHJ1ZSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIHJldHVybiB0aGlzID09PSBwIHx8XG4gICAgICAgICB0aGlzLmluZiA9PT0gcC5pbmYgJiZcbiAgICAgICAgICAgICAodGhpcy5pbmYgfHwgdGhpcy54LmNtcChwLngpID09PSAwICYmIHRoaXMueS5jbXAocC55KSA9PT0gMCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKF9wcmVjb21wdXRlKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSk7XG4gIGlmIChfcHJlY29tcHV0ZSAmJiB0aGlzLnByZWNvbXB1dGVkKSB7XG4gICAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gICAgdmFyIG5lZ2F0ZSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBwLm5lZygpO1xuICAgIH07XG4gICAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KID0gZnVuY3Rpb24gdG9KKCkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueSwgdGhpcy5jdXJ2ZS5vbmUpO1xuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gSlBvaW50KGN1cnZlLCB4LCB5LCB6KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdqYWNvYmlhbicpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSBuZXcgQk4oMCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gIH1cbiAgaWYgKCF0aGlzLngucmVkKVxuICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy55LnJlZClcbiAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMuei5yZWQpXG4gICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcblxuICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xufVxuaW5oZXJpdHMoSlBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6KSB7XG4gIHJldHVybiBuZXcgSlBvaW50KHRoaXMsIHgsIHksIHopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50b1AgPSBmdW5jdGlvbiB0b1AoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgemludiA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHZhciB6aW52MiA9IHppbnYucmVkU3FyKCk7XG4gIHZhciBheCA9IHRoaXMueC5yZWRNdWwoemludjIpO1xuICB2YXIgYXkgPSB0aGlzLnkucmVkTXVsKHppbnYyKS5yZWRNdWwoemludik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYXgsIGF5KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCksIHRoaXMueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAxMk0gKyA0UyArIDdBXG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54LnJlZE11bChwejIpO1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55LnJlZE11bChwejIucmVkTXVsKHAueikpO1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyLnJlZE11bCh0aGlzLnopKTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChwLnopLnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gZnVuY3Rpb24gbWl4ZWRBZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwLnRvSigpO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gOE0gKyAzUyArIDdBXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54O1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55O1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyKS5yZWRNdWwodGhpcy56KTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibHAgPSBmdW5jdGlvbiBkYmxwKHBvdykge1xuICBpZiAocG93ID09PSAwKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICghcG93KVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BIHx8IHRoaXMuY3VydmUudGhyZWVBKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspXG4gICAgICByID0gci5kYmwoKTtcbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIC8vIDFNICsgMlMgKyAxQSArIE4gKiAoNFMgKyA1TSArIDhBKVxuICAvLyBOID0gMSA9PiA2TSArIDZTICsgOUFcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG4gIHZhciB0aW52ID0gdGhpcy5jdXJ2ZS50aW52O1xuXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICAvLyBSZXVzZSByZXN1bHRzXG4gIHZhciBqeWQgPSBqeS5yZWRBZGQoankpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBKUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgSlBvaW50IHg6ICcgKyB0aGlzLngudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnouY21wbigwKSA9PT0gMDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZXMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uL2VsbGlwdGljJyk7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGN1cnZlO1xuICAgIH1cbiAgfSk7XG59XG5cbmRlZmluZUN1cnZlKCdwMTkyJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AxOTInLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTInLFxuICAgICcwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjI0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AyMjQnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUnLFxuICBiOiAnYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2QnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEnLFxuICAgICdiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDM4NCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMnLFxuICBiOiAnYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgJyArXG4gICAgICc1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZicsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSAnICtcbiAgICAgJ2Y0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczJyxcbiAgaGFzaDogaGFzaC5zaGEzODQsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2FhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4ICcgK1xuICAgICc1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNycsXG4gICAgJzM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICcgK1xuICAgICcwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZidcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwNTIxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgJyArXG4gICAgICc5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAnICtcbiAgICAgJzNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwJyxcbiAgbjogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggJyArXG4gICAgICdmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOScsXG4gIGhhc2g6IGhhc2guc2hhNTEyLFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAnICtcbiAgICAnMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgJyArXG4gICAgJ2EyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2JyxcbiAgICAnMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgJyArXG4gICAgJzU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxICcgK1xuICAgICczZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMCcsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnZWQyNTUxOScsIHtcbiAgdHlwZTogJ2Vkd2FyZHMnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJy0xJyxcbiAgYzogJzEnLFxuICAvLyAtMTIxNjY1ICogKDEyMTY2Nl4oLTEpKSAobW9kIFApXG4gIGQ6ICc1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYScsXG5cbiAgICAvLyA0LzVcbiAgICAnNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCdcbiAgXVxufSk7XG5cbnZhciBwcmU7XG50cnkge1xuICBwcmUgPSByZXF1aXJlKCcuL3ByZWNvbXB1dGVkL3NlY3AyNTZrMScpO1xufSBjYXRjaCAoZSkge1xuICBwcmUgPSB1bmRlZmluZWQ7XG59XG5cbmRlZmluZUN1cnZlKCdzZWNwMjU2azEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAnazI1NicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicsXG4gIGE6ICcwJyxcbiAgYjogJzcnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEnLFxuICBoOiAnMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuXG4gIC8vIFByZWNvbXB1dGVkIGVuZG9tb3JwaGlzbVxuICBiZXRhOiAnN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZScsXG4gIGxhbWJkYTogJzUzNjNhZDRjYzA1YzMwZTBhNTI2MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzInLFxuICBiYXNpczogW1xuICAgIHtcbiAgICAgIGE6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgICBiOiAnLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzJ1xuICAgIH0sXG4gICAge1xuICAgICAgYTogJzExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCcsXG4gICAgICBiOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnXG4gICAgfVxuICBdLFxuXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnLFxuICAgICc0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4JyxcbiAgICBwcmVcbiAgXVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUMob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUMpKVxuICAgIHJldHVybiBuZXcgRUMob3B0aW9ucyk7XG5cbiAgLy8gU2hvcnRjdXQgYGVsbGlwdGljLmVjKGN1cnZlLW5hbWUpYFxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgYXNzZXJ0KGVsbGlwdGljLmN1cnZlcy5oYXNPd25Qcm9wZXJ0eShvcHRpb25zKSwgJ1Vua25vd24gY3VydmUgJyArIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucyA9IGVsbGlwdGljLmN1cnZlc1tvcHRpb25zXTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZvciBgZWxsaXB0aWMuZWMoZWxsaXB0aWMuY3VydmVzLmN1cnZlTmFtZSlgXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgZWxsaXB0aWMuY3VydmVzLlByZXNldEN1cnZlKVxuICAgIG9wdGlvbnMgPSB7IGN1cnZlOiBvcHRpb25zIH07XG5cbiAgdGhpcy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUuY3VydmU7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5uaCA9IHRoaXMubi51c2hybigxKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuXG4gIC8vIFBvaW50IG9uIGN1cnZlXG4gIHRoaXMuZyA9IG9wdGlvbnMuY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUob3B0aW9ucy5jdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgLy8gSGFzaCBmb3IgZnVuY3Rpb24gZm9yIERSQkdcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoIHx8IG9wdGlvbnMuY3VydmUuaGFzaDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRUM7XG5cbkVDLnByb3RvdHlwZS5rZXlQYWlyID0gZnVuY3Rpb24ga2V5UGFpcihvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih0aGlzLCBvcHRpb25zKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHJpdmF0ZSh0aGlzLCBwcml2LCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViLCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmdlbktleVBhaXIgPSBmdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgZWxsaXB0aWMuaG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgZW50cm9weTogb3B0aW9ucy5lbnRyb3B5IHx8IGVsbGlwdGljLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksXG4gICAgbm9uY2U6IHRoaXMubi50b0FycmF5KClcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZG8ge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH0gd2hpbGUgKHRydWUpO1xufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIHRydW5jYXRlVG9OKG1zZywgdHJ1bmNPbmx5KSB7XG4gIHZhciBkZWx0YSA9IG1zZy5ieXRlTGVuZ3RoKCkgKiA4IC0gdGhpcy5uLmJpdExlbmd0aCgpO1xuICBpZiAoZGVsdGEgPiAwKVxuICAgIG1zZyA9IG1zZy51c2hybihkZWx0YSk7XG4gIGlmICghdHJ1bmNPbmx5ICYmIG1zZy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBtc2cuc3ViKHRoaXMubik7XG4gIGVsc2VcbiAgICByZXR1cm4gbXNnO1xufTtcblxuRUMucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywga2V5LCBlbmMsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBlbmMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAga2V5ID0gdGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksIGVuYyk7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG5cbiAgLy8gWmVyby1leHRlbmQga2V5IHRvIHByb3ZpZGUgZW5vdWdoIGVudHJvcHlcbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIGJrZXkgPSBrZXkuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIG5vbmNlIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZSBzaXplIGFzIE5cbiAgdmFyIG5vbmNlID0gbXNnLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBlbGxpcHRpYy5obWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIGVudHJvcHk6IGJrZXksXG4gICAgbm9uY2U6IG5vbmNlLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmNcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IHRydWU7IGl0ZXIrKykge1xuICAgIHZhciBrID0gb3B0aW9ucy5rID9cbiAgICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgICAgbmV3IEJOKGRyYmcuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO1xuICAgIGsgPSB0aGlzLl90cnVuY2F0ZVRvTihrLCB0cnVlKTtcbiAgICBpZiAoay5jbXBuKDEpIDw9IDAgfHwgay5jbXAobnMxKSA+PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3AgPSB0aGlzLmcubXVsKGspO1xuICAgIGlmIChrcC5pc0luZmluaXR5KCkpXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcFggPSBrcC5nZXRYKCk7XG4gICAgdmFyIHIgPSBrcFgudW1vZCh0aGlzLm4pO1xuICAgIGlmIChyLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBzID0gay5pbnZtKHRoaXMubikubXVsKHIubXVsKGtleS5nZXRQcml2YXRlKCkpLmlhZGQobXNnKSk7XG4gICAgcyA9IHMudW1vZCh0aGlzLm4pO1xuICAgIGlmIChzLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciByZWNvdmVyeVBhcmFtID0gKGtwLmdldFkoKS5pc09kZCgpID8gMSA6IDApIHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrcFguY21wKHIpICE9PSAwID8gMiA6IDApO1xuXG4gICAgLy8gVXNlIGNvbXBsZW1lbnQgb2YgYHNgLCBpZiBpdCBpcyA+IGBuIC8gMmBcbiAgICBpZiAob3B0aW9ucy5jYW5vbmljYWwgJiYgcy5jbXAodGhpcy5uaCkgPiAwKSB7XG4gICAgICBzID0gdGhpcy5uLnN1YihzKTtcbiAgICAgIHJlY292ZXJ5UGFyYW0gXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNpZ25hdHVyZSh7IHI6IHIsIHM6IHMsIHJlY292ZXJ5UGFyYW06IHJlY292ZXJ5UGFyYW0gfSk7XG4gIH1cbn07XG5cbkVDLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUsIGtleSwgZW5jKSB7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG4gIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhrZXksIGVuYyk7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCAnaGV4Jyk7XG5cbiAgLy8gUGVyZm9ybSBwcmltaXRpdmUgdmFsdWVzIHZhbGlkYXRpb25cbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcbiAgaWYgKHIuY21wbigxKSA8IDAgfHwgci5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHMuY21wbigxKSA8IDAgfHwgcy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBWYWxpZGF0ZSBzaWduYXR1cmVcbiAgdmFyIHNpbnYgPSBzLmludm0odGhpcy5uKTtcbiAgdmFyIHUxID0gc2ludi5tdWwobXNnKS51bW9kKHRoaXMubik7XG4gIHZhciB1MiA9IHNpbnYubXVsKHIpLnVtb2QodGhpcy5uKTtcblxuICBpZiAoIXRoaXMuY3VydmUuX21heHdlbGxUcmljaykge1xuICAgIHZhciBwID0gdGhpcy5nLm11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gICAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIHAuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAocikgPT09IDA7XG4gIH1cblxuICAvLyBOT1RFOiBHcmVnIE1heHdlbGwncyB0cmljaywgaW5zcGlyZWQgYnk6XG4gIC8vIGh0dHBzOi8vZ2l0LmlvL3ZhZDNLXG5cbiAgdmFyIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgZU5lZyA9IG4uc3ViKGUpO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICByZXR1cm4gdGhpcy5nLm11bEFkZChlTmVnLCByLCBzKS5tdWwockludik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG5mdW5jdGlvbiBLZXlQYWlyKGVjLCBvcHRpb25zKSB7XG4gIHRoaXMuZWMgPSBlYztcbiAgdGhpcy5wcml2ID0gbnVsbDtcbiAgdGhpcy5wdWIgPSBudWxsO1xuXG4gIC8vIEtleVBhaXIoZWMsIHsgcHJpdjogLi4uLCBwdWI6IC4uLiB9KVxuICBpZiAob3B0aW9ucy5wcml2KVxuICAgIHRoaXMuX2ltcG9ydFByaXZhdGUob3B0aW9ucy5wcml2LCBvcHRpb25zLnByaXZFbmMpO1xuICBpZiAob3B0aW9ucy5wdWIpXG4gICAgdGhpcy5faW1wb3J0UHVibGljKG9wdGlvbnMucHViLCBvcHRpb25zLnB1YkVuYyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWMsIHB1YiwgZW5jKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHViOiBwdWIsXG4gICAgcHViRW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICB9XG4gIHAucGxhY2UgPSBvZmY7XG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIHJtUGFkZGluZyhidWYpIHtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aCAtIDE7XG4gIHdoaWxlICghYnVmW2ldICYmICEoYnVmW2kgKyAxXSAmIDB4ODApICYmIGkgPCBsZW4pIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGkgPT09IDApIHtcbiAgICByZXR1cm4gYnVmO1xuICB9XG4gIHJldHVybiBidWYuc2xpY2UoaSk7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUuX2ltcG9ydERFUiA9IGZ1bmN0aW9uIF9pbXBvcnRERVIoZGF0YSwgZW5jKSB7XG4gIGRhdGEgPSB1dGlscy50b0FycmF5KGRhdGEsIGVuYyk7XG4gIHZhciBwID0gbmV3IFBvc2l0aW9uKCk7XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MzApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKChsZW4gKyBwLnBsYWNlKSAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcmxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgdmFyIHIgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHJsZW4gKyBwLnBsYWNlKTtcbiAgcC5wbGFjZSArPSBybGVuO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwICYmIChyWzFdICYgMHg4MCkpIHtcbiAgICByID0gci5zbGljZSgxKTtcbiAgfVxuICBpZiAoc1swXSA9PT0gMCAmJiAoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cblxuICB0aGlzLnIgPSBuZXcgQk4ocik7XG4gIHRoaXMucyA9IG5ldyBCTihzKTtcbiAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdExlbmd0aChhcnIsIGxlbikge1xuICBpZiAobGVuIDwgMHg4MCkge1xuICAgIGFyci5wdXNoKGxlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBvY3RldHMgPSAxICsgKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMiA+Pj4gMyk7XG4gIGFyci5wdXNoKG9jdGV0cyB8IDB4ODApO1xuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9ERVIgPSBmdW5jdGlvbiB0b0RFUihlbmMpIHtcbiAgdmFyIHIgPSB0aGlzLnIudG9BcnJheSgpO1xuICB2YXIgcyA9IHRoaXMucy50b0FycmF5KCk7XG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApXG4gICAgciA9IFsgMCBdLmNvbmNhdChyKTtcbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoc1swXSAmIDB4ODApXG4gICAgcyA9IFsgMCBdLmNvbmNhdChzKTtcblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIHdoaWxlICghc1swXSAmJiAhKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIHZhciBhcnIgPSBbIDB4MDIgXTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgci5sZW5ndGgpO1xuICBhcnIgPSBhcnIuY29uY2F0KHIpO1xuICBhcnIucHVzaCgweDAyKTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgcy5sZW5ndGgpO1xuICB2YXIgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICB2YXIgcmVzID0gWyAweDMwIF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIHJlcyA9IHJlcy5jb25jYXQoYmFja0hhbGYpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIHZhciBjdXJ2ZSA9IGVsbGlwdGljLmN1cnZlc1tjdXJ2ZV0uY3VydmU7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy5nID0gY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUoY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIHRoaXMucG9pbnRDbGFzcyA9IGN1cnZlLnBvaW50KCkuY29uc3RydWN0b3I7XG4gIHRoaXMuZW5jb2RpbmdMZW5ndGggPSBNYXRoLmNlaWwoY3VydmUubi5iaXRMZW5ndGgoKSAvIDgpO1xuICB0aGlzLmhhc2ggPSBoYXNoLnNoYTUxMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFRERTQTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xLZXlQYWlyfSBzZWNyZXQgLSBzZWNyZXQgYnl0ZXMgb3IgYSBrZXlwYWlyXG4qIEByZXR1cm5zIHtTaWduYXR1cmV9IC0gc2lnbmF0dXJlXG4qL1xuRUREU0EucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UsIHNlY3JldCkge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVNlY3JldChzZWNyZXQpO1xuICB2YXIgciA9IHRoaXMuaGFzaEludChrZXkubWVzc2FnZVByZWZpeCgpLCBtZXNzYWdlKTtcbiAgdmFyIFIgPSB0aGlzLmcubXVsKHIpO1xuICB2YXIgUmVuY29kZWQgPSB0aGlzLmVuY29kZVBvaW50KFIpO1xuICB2YXIgc18gPSB0aGlzLmhhc2hJbnQoUmVuY29kZWQsIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKVxuICAgICAgICAgICAgICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBjYWNoZWRQcm9wZXJ0eSA9IHV0aWxzLmNhY2hlZFByb3BlcnR5O1xuXG4vKipcbiogQHBhcmFtIHtFRERTQX0gZWRkc2EgLSBpbnN0YW5jZVxuKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gcHVibGljL3ByaXZhdGUga2V5IHBhcmFtZXRlcnNcbipcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5zZWNyZXRdIC0gc2VjcmV0IHNlZWQgYnl0ZXNcbiogQHBhcmFtIHtQb2ludH0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCAoYWthIGBBYCBpbiBlZGRzYSB0ZXJtcylcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCBlbmNvZGVkIGFzIGJ5dGVzXG4qXG4qL1xuZnVuY3Rpb24gS2V5UGFpcihlZGRzYSwgcGFyYW1zKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcbiAgdGhpcy5fc2VjcmV0ID0gcGFyc2VCeXRlcyhwYXJhbXMuc2VjcmV0KTtcbiAgaWYgKGVkZHNhLmlzUG9pbnQocGFyYW1zLnB1YikpXG4gICAgdGhpcy5fcHViID0gcGFyYW1zLnB1YjtcbiAgZWxzZVxuICAgIHRoaXMuX3B1YkJ5dGVzID0gcGFyc2VCeXRlcyhwYXJhbXMucHViKTtcbn1cblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlZGRzYSwgcHViKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBwdWI6IHB1YiB9KTtcbn07XG5cbktleVBhaXIuZnJvbVNlY3JldCA9IGZ1bmN0aW9uIGZyb21TZWNyZXQoZWRkc2EsIHNlY3JldCkge1xuICBpZiAoc2VjcmV0IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gc2VjcmV0O1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgc2VjcmV0OiBzZWNyZXQgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zZWNyZXQgPSBmdW5jdGlvbiBzZWNyZXQoKSB7XG4gIHJldHVybiB0aGlzLl9zZWNyZXQ7XG59O1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViQnl0ZXMnLCBmdW5jdGlvbiBwdWJCeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YicsIGZ1bmN0aW9uIHB1YigpIHtcbiAgaWYgKHRoaXMuX3B1YkJ5dGVzKVxuICAgIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2Qnl0ZXMnLCBmdW5jdGlvbiBwcml2Qnl0ZXMoKSB7XG4gIHZhciBlZGRzYSA9IHRoaXMuZWRkc2E7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIHZhciBsYXN0SXggPSBlZGRzYS5lbmNvZGluZ0xlbmd0aCAtIDE7XG5cbiAgdmFyIGEgPSBoYXNoLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbiAgYVswXSAmPSAyNDg7XG4gIGFbbGFzdEl4XSAmPSAxMjc7XG4gIGFbbGFzdEl4XSB8PSA2NDtcblxuICByZXR1cm4gYTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdicsIGZ1bmN0aW9uIHByaXYoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnaGFzaCcsIGZ1bmN0aW9uIGhhc2goKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ21lc3NhZ2VQcmVmaXgnLCBmdW5jdGlvbiBtZXNzYWdlUHJlZml4KCkge1xuICByZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG59KTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSkge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBjYW4gb25seSB2ZXJpZnknKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2Euc2lnbihtZXNzYWdlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KG1lc3NhZ2UsIHNpZywgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRTZWNyZXQgPSBmdW5jdGlvbiBnZXRTZWNyZXQoZW5jKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGlzIHB1YmxpYyBvbmx5Jyk7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5zZWNyZXQoKSwgZW5jKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhlbmMpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksIGVuYyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aClcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLnJlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0J1ZmZlcihlbnRyb3B5LCBlbnRyb3B5RW5jKTtcbiAgYWRkID0gdXRpbHMudG9CdWZmZXIoYWRkLCBhZGRFbmMpO1xuXG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG5cbiAgdGhpcy5fdXBkYXRlKGVudHJvcHkuY29uY2F0KGFkZCB8fCBbXSkpO1xuICB0aGlzLnJlc2VlZCA9IDE7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4sIGVuYywgYWRkLCBhZGRFbmMpIHtcbiAgaWYgKHRoaXMucmVzZWVkID4gdGhpcy5yZXNlZWRJbnRlcnZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc2VlZCBpcyByZXF1aXJlZCcpO1xuXG4gIC8vIE9wdGlvbmFsIGVuY29kaW5nXG4gIGlmICh0eXBlb2YgZW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuXG4gIC8vIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICBpZiAoYWRkKSB7XG4gICAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyk7XG4gICAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIH1cblxuICB2YXIgdGVtcCA9IFtdO1xuICB3aGlsZSAodGVtcC5sZW5ndGggPCBsZW4pIHtcbiAgICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gICAgdGVtcCA9IHRlbXAuY29uY2F0KHRoaXMuVik7XG4gIH1cblxuICB2YXIgcmVzID0gdGVtcC5zbGljZSgwLCBsZW4pO1xuICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgdGhpcy5yZXNlZWQrKztcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRvdWJsZXM6IHtcbiAgICBzdGVwOiA0LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZkZWMwYScsXG4gICAgICAgICdmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgnLFxuICAgICAgICAnMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5JyxcbiAgICAgICAgJ2QzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MCcsXG4gICAgICAgICc0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGI0YjVmMTY1ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYycsXG4gICAgICAgICc0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEnLFxuICAgICAgICAnOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhJyxcbiAgICAgICAgJzVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCcsXG4gICAgICAgICdjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQnLFxuICAgICAgICAnOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkJyxcbiAgICAgICAgJ2U1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2N2E5MWQ5MTA0OWNkY2IzNjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMScsXG4gICAgICAgICc5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3NTQ1Y2NjMWEzN2I3YzAnLFxuICAgICAgICAnNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3JyxcbiAgICAgICAgJzEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MicsXG4gICAgICAgICcyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNycsXG4gICAgICAgICc3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmQnLFxuICAgICAgICAnNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzJyxcbiAgICAgICAgJzdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgyYTBhJyxcbiAgICAgICAgJzUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOCcsXG4gICAgICAgICdiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQnLFxuICAgICAgICAnNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1JyxcbiAgICAgICAgJzdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjEzYzdhNzE1Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NCcsXG4gICAgICAgICc0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MnLFxuICAgICAgICAnMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2JyxcbiAgICAgICAgJzZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOScsXG4gICAgICAgICdjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEnLFxuICAgICAgICAnODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiJyxcbiAgICAgICAgJ2ZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjhkYTk0MDMyYTk1NzUxOGViMGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwMycsXG4gICAgICAgICcyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYxYTExNzc4ZTNjMGRmNWQnLFxuICAgICAgICAnZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwJyxcbiAgICAgICAgJzczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNCcsXG4gICAgICAgICdlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYScsXG4gICAgICAgICc2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEnLFxuICAgICAgICAnMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllJyxcbiAgICAgICAgJ2VmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNiM2U0MScsXG4gICAgICAgICcyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYnLFxuICAgICAgICAnNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZTgnLFxuICAgICAgICAnZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkJyxcbiAgICAgICAgJzY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGRmOWMxNDkxOWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NicsXG4gICAgICAgICczNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkJyxcbiAgICAgICAgJ2RkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNScsXG4gICAgICAgICc5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYnLFxuICAgICAgICAnNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxJyxcbiAgICAgICAgJzM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjJyxcbiAgICAgICAgJ2MyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MScsXG4gICAgICAgICcxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQwNDgyNDUyNjA4N2UnLFxuICAgICAgICAnNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxJyxcbiAgICAgICAgJ2M2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMycsXG4gICAgICAgICdiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGYnLFxuICAgICAgICAnNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5JyxcbiAgICAgICAgJ2FlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZScsXG4gICAgICAgICdiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVlZjknLFxuICAgICAgICAnNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyJyxcbiAgICAgICAgJzgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMycsXG4gICAgICAgICc3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2MnLFxuICAgICAgICAnY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NTkzOTY5ODE5NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhJyxcbiAgICAgICAgJzJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MScsXG4gICAgICAgICdlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzMnLFxuICAgICAgICAnZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4JyxcbiAgICAgICAgJzM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YicsXG4gICAgICAgICc2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjYnLFxuICAgICAgICAnZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMjhhOTdiZjgyOThiYzBkMjNkOGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEnLFxuICAgICAgICAnNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRiYTExMWZhY2NhZTAnLFxuICAgICAgICAnNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3JyxcbiAgICAgICAgJzdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZScsXG4gICAgICAgICdlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyJ1xuICAgICAgXVxuICAgIF1cbiAgfSxcbiAgbmFmOiB7XG4gICAgd25kOiA3LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOScsXG4gICAgICAgICczODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5ZmQ3NTg0YjhlNjcyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQnLFxuICAgICAgICAnZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1Y2JkZjA2NDZlNWRiNGVhYTM5OGYzNjVmMmVhN2EwZTNkNDE5YjdlMDMzMGUzOWNlOTJiZGRlZGNhYzRmOWJjJyxcbiAgICAgICAgJzZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZScsXG4gICAgICAgICdjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2InLFxuICAgICAgICAnZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjg3NzNjMmQ5NzUyODhiYzdkMWQyMDVjMzc0ODY1MWIwNzVmYmM2NjEwZTU4Y2RkZWVkZGY4ZjE5NDA1YWE4JyxcbiAgICAgICAgJ2FiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlJyxcbiAgICAgICAgJzU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZiNTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCcsXG4gICAgICAgICc0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJiNGVhMGE3OTdhNDQzZDI5M2VmNWNmZjQ0NGY0OTc5ZjA2YWNmZWJkN2U4NmQyNzc0NzU2NTYxMzgzODViNmMnLFxuICAgICAgICAnODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1JyxcbiAgICAgICAgJzMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZicsXG4gICAgICAgICcyZGUxMDY4Mjk1ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI0ODI3OWIwOWI0ZDY4ZGFiMjFhOWIwNjZlZGRhODMyNjNjM2Q4NGUwOTU3MmUyNjljYTBjZDdmNTQ1MzcxNCcsXG4gICAgICAgICc3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjknLFxuICAgICAgICAnYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiJyxcbiAgICAgICAgJzIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmEyNDViZjZkYzY5ODUwNGM4OWEyMGNmZGVkNjA4NTMxNTJiNjk1MzM2YzI4MDYzYjYxYzY1Y2JkMjY5ZTZiNCcsXG4gICAgICAgICdlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTUnLFxuICAgICAgICAnYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5JyxcbiAgICAgICAgJzI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MmQxNGRhYjQxNTBiZjQ5NzQwMmZkYzQ1YTIxNWUxMGRjYjAxYzM1NDk1OWIxMGNmZTMxYzdlOWQ4N2ZmMzNkJyxcbiAgICAgICAgJzgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2NDI0ODNiMjVlYWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZicsXG4gICAgICAgICcxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmInLFxuICAgICAgICAnZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1MjhlY2Q5YjY5NmI1NGM5MDdhOWVkMDQ1NDQ3YTc5YmI0MDhlYzM5YjY4ZGY1MDRiYjUxZjQ1OWJjM2ZmYzknLFxuICAgICAgICAnZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjMnLFxuICAgICAgICAnNzU4ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0JyxcbiAgICAgICAgJzk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjJkYWM5OTFjYzRjZTRiOWVhNDQ4ODdlNWM3YzBiY2U1OGM4MDA3NGFiOWQ0ZGJhZWIyODUzMWI3NzM5ZjUzMCcsXG4gICAgICAgICdlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWInLFxuICAgICAgICAnNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3JyxcbiAgICAgICAgJ2NlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2FmNzU0MjcyZGM4NDU2M2IwMzUyYjdhMTQzMTFhZjU1ZDI0NTMxNWFjZTI3YzY1MzY5ZTE1ZjcxNTFkNDFkMScsXG4gICAgICAgICdjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAnLFxuICAgICAgICAnNDExOWI4ODc1M2MxNWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1JyxcbiAgICAgICAgJzkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0OGJhZDllNzZmMzAyYzViOWM2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NTRlMzIzOWYzMjU1NzBjZGJiZjRhODdkZWVlOGE2NmI3ZjJiMzM0NzlkNDY4ZmJjMWE1MDc0M2JmNTZjYzE4JyxcbiAgICAgICAgJzY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4JyxcbiAgICAgICAgJzU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYicsXG4gICAgICAgICczYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmOWQ3MGE2Yjk4NzZjZTU0NGM5ODU2MWY0YmU0ZjcyNTQ0MmU2ZDJiNzM3ZDljOTFhODMyMTcyNGNlMDk2M2YnLFxuICAgICAgICAnNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzJyxcbiAgICAgICAgJ2VmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYScsXG4gICAgICAgICdlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2FmZDQxOTQzZTdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2FmM2M0MjNhOTVkOWY1YjMwNTQ3NTRlZmExNTBhYzM5Y2QyOTU1MmZlMzYwMjU3MzYyZGZkZWNlZjQwNTNiNDUnLFxuICAgICAgICAnZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhJyxcbiAgICAgICAgJzc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZScsXG4gICAgICAgICdjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxM2FkYTk1MTAzYzQ1MzczMDVlNjkxZTc0ZTlhNGE4ZGQ2NDdlNzExYTk1ZTczY2I2MmRjNjAxOGNmZDg3YjgnLFxuICAgICAgICAnZTEzODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjJyxcbiAgICAgICAgJzMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOScsXG4gICAgICAgICdlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5NjI0MTQ0NTBjNzZjMTY4OWM3YjQ4ZjgyMDJlYzM3ZmIyMjRjZjVhYzBiZmExNTcwMzI4YThhM2Q3Yzc3YWInLFxuICAgICAgICAnMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhJyxcbiAgICAgICAgJ2VmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZicsXG4gICAgICAgICc4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2MjRkODQ3ODA3MzI4NjBjZTFjNzhmY2JmZWZlMDhiMmIyOTgyM2RiOTEzZjY0OTM5NzViYTBmZjQ4NDc2MTAnLFxuICAgICAgICAnNjg2NTFjZjliNmRhOTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0JyxcbiAgICAgICAgJ2Y1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFlNDU3OGM1NDY3M2JjMWRjNWVhMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YycsXG4gICAgICAgICdkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ExZDBmY2YyZWM5ZGU2NzViNjEyMTM2ZTVjZTcwZDI3MWMyMTQxN2M5ZDJiOGFhYWFjMTM4NTk5ZDA3MTc5NDAnLFxuICAgICAgICAnZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwJyxcbiAgICAgICAgJ2E4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzJyxcbiAgICAgICAgJzY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzRjMWZkMDRkMzAxYmU4OWIzMWMwNDQyZDNlNmFjMjQ4ODM5MjhiNDVhOTM0MDc4MTg2N2Q0MjMyZWMyZGJkZicsXG4gICAgICAgICc5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2MycsXG4gICAgICAgICc0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYyYTQwMDc2NmQxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgnLFxuICAgICAgICAnZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmQzMWMyMjJmOGY2ZjBlZjg2ZjdjOThkM2EzMzM1ZWFkNWJjZDMyYWJkZDk0Mjg5ZmU0ZDMwOTFhYTgyNGJmJyxcbiAgICAgICAgJzVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNScsXG4gICAgICAgICc4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYnLFxuICAgICAgICAnOGRjMjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNmVjOTNlNDQ3ZWM4M2YwNDY3YjE4MzAyZWU2MjBmN2U2NWRlMzMxODc0YzlkYzcyYmZkODYxNmJhOWRhNmI1JyxcbiAgICAgICAgJzVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OScsXG4gICAgICAgICdmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2RjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MScsXG4gICAgICAgICdmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5NGY0YmUyMTlhMWE3NzAxNmRjZDgzODQzMWFlYTAwMDFjZGM4YWU3YTZmYzY4ODcyNjU3OGQ5NzAyODU3YTUnLFxuICAgICAgICAnNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1JyxcbiAgICAgICAgJzIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NycsXG4gICAgICAgICc0ZjE0MzUxZDAwODdlZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQxZDYwNjNhNTg2ZmE0NzVhNzI0NjA0ZGEwM2JjNWI5MmEyZTBkMmUwYTM2YWNmZTRjNzNhNTUxNDc0Mjg4MScsXG4gICAgICAgICc3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5Y2U3YTM2ZGUwMWE4ZDYxNTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNScsXG4gICAgICAgICczOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYnLFxuICAgICAgICAnZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzY1ODFlYTdiZmJiYjI5MGMxOTFhMmY1MDdhNDFjZjU2NDM4NDIxNzBlOTE0ZmFlYWIyN2MyYzU3OWY3MjYnLFxuICAgICAgICAnZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlJyxcbiAgICAgICAgJzZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCcsXG4gICAgICAgICc2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODViN2MxZGNiM2NlYzFiN2VlN2YzMGRlZDc5ZGQyMGEwZWQxZjRjYzE4Y2JjZmNmYTQxMDM2MWZkOGYwOGYzMScsXG4gICAgICAgICczZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVlOTk5NTExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEnLFxuICAgICAgICAnYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTInLFxuICAgICAgICAnYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZThjZWFmYjliM2U5YTEzNmRjN2ZmNjdlODQwMjk1YjQ5OWRmYjNiMjEzM2U0YmExMTNmMmU0YzBlMTIxZTUnLFxuICAgICAgICAnY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiJyxcbiAgICAgICAgJzZmYjhkNTU5MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCcsXG4gICAgICAgICczMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2FmOGFkZGJmMmI2NjFjOGE2YzYzMjg2NTVlYjk2NjUxMjUyMDA3ZDhjNWVhMzFiZTRhZDE5NmRlOGNlMjEzMWYnLFxuICAgICAgICAnNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OScsXG4gICAgICAgICcyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYnLFxuICAgICAgICAnYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMTM5NmQ1NWZkYTU0YzQ5ZjE5YWE5NzMxOGQ4ZGE2MWZhODU4NGU0N2IwODQ5NDUwNzdjZjAzMjU1YjUyOTg0JyxcbiAgICAgICAgJzk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YScsXG4gICAgICAgICdiMjI4NDI3OTk5NWEzNGUyZjlkNGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAnLFxuICAgICAgICAnYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQwYjc0ZTNhYzFmMWIxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNTMzZTRmN2VhODU1NWFhY2Q5Nzc3YWM1Y2FkMjliOTdkZDRkZWZjY2M1M2VlN2VhMjA0MTE5YjI4ODliMTk3JyxcbiAgICAgICAgJzZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzJyxcbiAgICAgICAgJ2MzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZicsXG4gICAgICAgICcyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzQ3ZDZkOWEwMmM0ODkyN2ViZmI4NmMxMzU5YjFjYWYxMzBhM2MwMjY3ZDExY2U2MzQ0YjM5Zjk5ZDQzY2MzOCcsXG4gICAgICAgICc2MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEnLFxuICAgICAgICAnNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExJyxcbiAgICAgICAgJzVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEyZDQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU0MmM4ZWM4MmM5OTc5OGNjZjNhNjEwYmU4NzBlNzgzMzhjN2Y3MTMzNDhiZDM0YzgyMDNlZjQwMzdmMzUwMicsXG4gICAgICAgICc3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEnLFxuICAgICAgICAnYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2JyxcbiAgICAgICAgJzhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjRmOWVhZWEwOWI2OTE3NjE5ZjZlYTZhNGViNTQ2NGVmZGRiNThmZDQ1YjFlYmVmY2RjMWEwMWQwOGI0Nzk4NicsXG4gICAgICAgICczOWU1Yzk5MjViNWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUnLFxuICAgICAgICAnNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0JyxcbiAgICAgICAgJzI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGZlZWVmMTg4MTEwMWYyY2IxMTY0NGYzYTJhZmRmYzIwNDVlMTk5MTkxNTI5MjNmMzY3YTE3NjdjMTFjY2VkYScsXG4gICAgICAgICdlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTknLFxuICAgICAgICAnY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmJyxcbiAgICAgICAgJ2Y1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWI5ODY2MGY0YzRkZmFhMDZhMmJlNDUzZDUwMjBiYzk5YTBjMmU2MGFiZTM4ODQ1N2RkNDNmZWZiMWVkNjIwYycsXG4gICAgICAgICc2Y2I5YTg4NzZkOWNiODUyMDYwOWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDInLFxuICAgICAgICAnZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3MGQ1NTY0NmI4YWRmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhJyxcbiAgICAgICAgJzFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjI2OGY1ZWY5YWQ1MWU0ZDc4ZGUzYTc1MGMyZGM4OWIxZTYyNmQ0MzUwNTg2Nzk5OTkzMmU1ZGIzM2FmM2Q4MCcsXG4gICAgICAgICc1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQnLFxuICAgICAgICAnNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExJyxcbiAgICAgICAgJ2NkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTJkYjBiNTM4NGRmYmYwNWJmYTlkNDcyZDdhZTI2ZGZlNGI4NTFjZWNhOTFiMWViYTU0MjYzMTgwZGEzMmI2MycsXG4gICAgICAgICdjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MicsXG4gICAgICAgICc2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2FmYTdkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMnLFxuICAgICAgICAnY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MDk4ZmYxZTFkOWYxNGZiNDZhMjEwZmFkYTZjOTAzZmVmMGZiN2I0YTFkZDFkOWFjNjBhMDM2MTgwMGI3YTAwJyxcbiAgICAgICAgJzk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4JyxcbiAgICAgICAgJ2VlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNycsXG4gICAgICAgICdkM2FhMmVkNzFjOWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0Mzg0NDc1NjZkNGQ3YmVkYWRjMjk5NDk2YWIzNTc0MjYwMDlhMzVmMjM1Y2IxNDFiZTBkOTljZDEwYWUzYTgnLFxuICAgICAgICAnYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlJyxcbiAgICAgICAgJzY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCcsXG4gICAgICAgICdjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjc0ZjI2MDBhMzAwN2EwMDU2OGMxYTdjZTA1ZDA4MTZjMWZiODRiZjEzNzA3OThmMWM2OTUzMmZhZWIxYTg2YicsXG4gICAgICAgICcyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGYnLFxuICAgICAgICAnZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2JyxcbiAgICAgICAgJzQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2InXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmUyMDYyMDAzYzUxY2MzMDA0NjgyOTA0MzMwZTRkZWU3ZjNkY2QxMGIwMWU1ODBiZjE5NzFiMDRkNGNhZDI5NycsXG4gICAgICAgICc2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1OGVkNzJkY2NiOWJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEnLFxuICAgICAgICAnN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjJyxcbiAgICAgICAgJ2FiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDVlOWUxZGE2NDlkOTdkODllNDg2ODExN2E0NjVhM2E0ZjhhMThkZTU3YTE0MGQzNmIzZjJhZjM0MWEyMWI1MicsXG4gICAgICAgICc0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmInLFxuICAgICAgICAnYmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1JyxcbiAgICAgICAgJ2JmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk4NWZkZmQxMjdjMDU2N2M2ZjUzZWMxYmI2M2VjMzE1OGU1OTdjNDBiZmU3NDdjODNjZGRmYzkxMDY0MTkxNycsXG4gICAgICAgICc2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJlZDAzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTknLFxuICAgICAgICAnY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzJyxcbiAgICAgICAgJzU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWUyMTU4ZjBkN2MwZDVmMjZjMzc5MWVmZWZhNzk1OTc2NTRlN2EyYjI0NjRmNTJiMWVlNmMxMzQ3NzY5ZWY1NycsXG4gICAgICAgICc3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NicsXG4gICAgICAgICdlZDhjYzlkMDRiMjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgnLFxuICAgICAgICAnOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MDlhMjBjNjdkNjQ5MDBmZmI2OThjNGM4MjVmNmQ1ZjIzMTBmYjA0NTFjODY5MzQ1YjczMTlmNjQ1NjA1NzIxJyxcbiAgICAgICAgJzllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCcsXG4gICAgICAgICc0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5J1xuICAgICAgXVxuICAgIF1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbnV0aWxzLmFzc2VydCA9IGZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59O1xuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgIT09ICdzdHJpbmcnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYgKCFlbmMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICBtc2cgPSBtc2cucmVwbGFjZSgvW15hLXowLTldKy9pZywgJycpO1xuICAgIGlmIChtc2cubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gMilcbiAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXggPSB0b0hleDtcblxudXRpbHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGFyciwgZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0b0hleChhcnIpO1xuICBlbHNlXG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8vIFJlcHJlc2VudCBudW0gaW4gYSB3LU5BRiBmb3JtXG5mdW5jdGlvbiBnZXROQUYobnVtLCB3KSB7XG4gIHZhciBuYWYgPSBbXTtcbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuICB3aGlsZSAoay5jbXBuKDEpID49IDApIHtcbiAgICB2YXIgejtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICB2YXIgbW9kID0gay5hbmRsbih3cyAtIDEpO1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG4gICAgbmFmLnB1c2goeik7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24sIHNoaWZ0IGJ5IHdvcmQgaWYgcG9zc2libGVcbiAgICB2YXIgc2hpZnQgPSAoay5jbXBuKDApICE9PSAwICYmIGsuYW5kbG4od3MgLSAxKSA9PT0gMCkgPyAodyArIDEpIDogMTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNoaWZ0OyBpKyspXG4gICAgICBuYWYucHVzaCgwKTtcbiAgICBrLml1c2hybihzaGlmdCk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXVxuICBdO1xuXG4gIGsxID0gazEuY2xvbmUoKTtcbiAgazIgPSBrMi5jbG9uZSgpO1xuICB2YXIgZDEgPSAwO1xuICB2YXIgZDIgPSAwO1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG5cbiAgICAvLyBGaXJzdCBwaGFzZVxuICAgIHZhciBtMTQgPSAoazEuYW5kbG4oMykgKyBkMSkgJiAzO1xuICAgIHZhciBtMjQgPSAoazIuYW5kbG4oMykgKyBkMikgJiAzO1xuICAgIGlmIChtMTQgPT09IDMpXG4gICAgICBtMTQgPSAtMTtcbiAgICBpZiAobTI0ID09PSAzKVxuICAgICAgbTI0ID0gLTE7XG4gICAgdmFyIHUxO1xuICAgIGlmICgobTE0ICYgMSkgPT09IDApIHtcbiAgICAgIHUxID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9hcmdzXCI6IFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgICAgICBcInNjb3BlXCI6IG51bGwsXG4gICAgICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgICAgIFwidHlwZVwiOiBcInJhbmdlXCJcbiAgICAgIH0sXG4gICAgICBcIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ25cIlxuICAgIF1cbiAgXSxcbiAgXCJfZnJvbVwiOiBcImVsbGlwdGljQD49Ni4wLjAgPDcuMC4wXCIsXG4gIFwiX2lkXCI6IFwiZWxsaXB0aWNANi4zLjFcIixcbiAgXCJfaW5DYWNoZVwiOiB0cnVlLFxuICBcIl9pbnN0YWxsYWJsZVwiOiB0cnVlLFxuICBcIl9sb2NhdGlvblwiOiBcIi9lbGxpcHRpY1wiLFxuICBcIl9ub2RlVmVyc2lvblwiOiBcIjYuMC4wXCIsXG4gIFwiX25wbU9wZXJhdGlvbmFsSW50ZXJuYWxcIjoge1xuICAgIFwiaG9zdFwiOiBcInBhY2thZ2VzLTE2LWVhc3QuaW50ZXJuYWwubnBtanMuY29tXCIsXG4gICAgXCJ0bXBcIjogXCJ0bXAvZWxsaXB0aWMtNi4zLjEudGd6XzE0NjU5MjE0MTM0MDJfMC41MjAyOTY3MzgyNTAxODExXCJcbiAgfSxcbiAgXCJfbnBtVXNlclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gIH0sXG4gIFwiX25wbVZlcnNpb25cIjogXCIzLjguNlwiLFxuICBcIl9waGFudG9tQ2hpbGRyZW5cIjoge30sXG4gIFwiX3JlcXVlc3RlZFwiOiB7XG4gICAgXCJuYW1lXCI6IFwiZWxsaXB0aWNcIixcbiAgICBcInJhd1wiOiBcImVsbGlwdGljQF42LjAuMFwiLFxuICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgIFwic2NvcGVcIjogbnVsbCxcbiAgICBcInNwZWNcIjogXCI+PTYuMC4wIDw3LjAuMFwiLFxuICAgIFwidHlwZVwiOiBcInJhbmdlXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvYnJvd3NlcmlmeS1zaWduXCIsXG4gICAgXCIvY3JlYXRlLWVjZGhcIlxuICBdLFxuICBcIl9yZXNvbHZlZFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi4zLjEudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgXCJfc2hyaW5rd3JhcFwiOiBudWxsLFxuICBcIl9zcGVjXCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiLFxuICBcImF1dGhvclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiRmVkb3IgSW5kdXRueVwiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJibi5qc1wiOiBcIl40LjQuMFwiLFxuICAgIFwiYnJvcmFuZFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiaGFzaC5qc1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLWNvbm5lY3RcIjogXCJeMS4wLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29weVwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcImdydW50LW1vY2hhLWlzdGFuYnVsXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJncnVudC1zYXVjZWxhYnNcIjogXCJeOC42LjJcIixcbiAgICBcImlzdGFuYnVsXCI6IFwiXjAuNC4yXCIsXG4gICAgXCJqc2NzXCI6IFwiXjIuOS4wXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi42LjBcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJkaXJlY3Rvcmllc1wiOiB7fSxcbiAgXCJkaXN0XCI6IHtcbiAgICBcInNoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgICBcInRhcmJhbGxcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwibGliXCJcbiAgXSxcbiAgXCJnaXRIZWFkXCI6IFwiYzUzZjVjZjNkODMyYzAwNzNlYjRhNGVkNDIzYTQ2NGNiY2U2OGYzZVwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWNcIixcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJFQ1wiLFxuICAgIFwiRWxsaXB0aWNcIixcbiAgICBcImN1cnZlXCIsXG4gICAgXCJDcnlwdG9ncmFwaHlcIlxuICBdLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJtYWluXCI6IFwibGliL2VsbGlwdGljLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHt9LFxuICBcInJlYWRtZVwiOiBcIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCFcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJqc2NzXCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwianNoaW50XCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwibGludFwiOiBcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXRcIixcbiAgICBcInVuaXRcIjogXCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwidmVyc2lvblwiOiBcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjYuMy4xXCJcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxuRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24obikge1xuICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IFR5cGVFcnJvcignbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgZXIsIGhhbmRsZXIsIGxlbiwgYXJncywgaSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cy5lcnJvciB8fFxuICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHtcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCBcImVycm9yXCIgZXZlbnQuJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNVbmRlZmluZWQoaGFuZGxlcikpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBmYXN0IGNhc2VzXG4gICAgICBjYXNlIDE6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICB2YXIgbTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IDA7XG4gIGVsc2UgaWYgKGlzRnVuY3Rpb24oZW1pdHRlci5fZXZlbnRzW3R5cGVdKSlcbiAgICByZXQgPSAxO1xuICBlbHNlXG4gICAgcmV0ID0gZW1pdHRlci5fZXZlbnRzW3R5cGVdLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlMZW4sIGl2TGVuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZCwgJ2JpbmFyeScpXG4gIH1cbiAgaWYgKHNhbHQgJiYgIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkge1xuICAgIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuICB9XG4gIGtleUxlbiA9IGtleUxlbiAvIDhcbiAgaXZMZW4gPSBpdkxlbiB8fCAwXG4gIHZhciBraSA9IDBcbiAgdmFyIGlpID0gMFxuICB2YXIga2V5ID0gbmV3IEJ1ZmZlcihrZXlMZW4pXG4gIHZhciBpdiA9IG5ldyBCdWZmZXIoaXZMZW4pXG4gIHZhciBhZGRtZCA9IDBcbiAgdmFyIG1kX2J1ZlxuICB2YXIgaVxuICB2YXIgYnVmcyA9IFtdXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGFkZG1kKysgPiAwKSB7XG4gICAgICBidWZzLnB1c2gobWRfYnVmKVxuICAgIH1cbiAgICBidWZzLnB1c2gocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIHtcbiAgICAgIGJ1ZnMucHVzaChzYWx0KVxuICAgIH1cbiAgICBtZF9idWYgPSBtZDUoQnVmZmVyLmNvbmNhdChidWZzKSlcbiAgICBidWZzID0gW11cbiAgICBpID0gMFxuICAgIGlmIChrZXlMZW4gPiAwKSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoa2V5TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAga2V5W2tpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGtleUxlbi0tXG4gICAgICAgIGkrK1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXZMZW4gPiAwICYmIGkgIT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChpdkxlbiA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGl2W2lpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGl2TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlMZW4gPT09IDAgJiYgaXZMZW4gPT09IDApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBtZF9idWYubGVuZ3RoOyBpKyspIHtcbiAgICBtZF9idWZbaV0gPSAwXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXZcbiAgfVxufVxuIiwidmFyIGhhc2ggPSBleHBvcnRzO1xuXG5oYXNoLnV0aWxzID0gcmVxdWlyZSgnLi9oYXNoL3V0aWxzJyk7XG5oYXNoLmNvbW1vbiA9IHJlcXVpcmUoJy4vaGFzaC9jb21tb24nKTtcbmhhc2guc2hhID0gcmVxdWlyZSgnLi9oYXNoL3NoYScpO1xuaGFzaC5yaXBlbWQgPSByZXF1aXJlKCcuL2hhc2gvcmlwZW1kJyk7XG5oYXNoLmhtYWMgPSByZXF1aXJlKCcuL2hhc2gvaG1hYycpO1xuXG4vLyBQcm94eSBoYXNoIGZ1bmN0aW9ucyB0byB0aGUgbWFpbiBvYmplY3Rcbmhhc2guc2hhMSA9IGhhc2guc2hhLnNoYTE7XG5oYXNoLnNoYTI1NiA9IGhhc2guc2hhLnNoYTI1Njtcbmhhc2guc2hhMjI0ID0gaGFzaC5zaGEuc2hhMjI0O1xuaGFzaC5zaGEzODQgPSBoYXNoLnNoYS5zaGEzODQ7XG5oYXNoLnNoYTUxMiA9IGhhc2guc2hhLnNoYTUxMjtcbmhhc2gucmlwZW1kMTYwID0gaGFzaC5yaXBlbWQucmlwZW1kMTYwO1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwidmFyIGhtYWMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfMyA9IHV0aWxzLnN1bTMyXzM7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xudmFyIEJsb2NrSGFzaCA9IGhhc2guY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTI1NigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTI1NikpXG4gICAgcmV0dXJuIG5ldyBTSEEyNTYoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTkgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTI1NiA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjI0LCBTSEEyNTYpO1xuZXhwb3J0cy5zaGEyMjQgPSBTSEEyMjQ7XG5cblNIQTIyNC5ibG9ja1NpemUgPSA1MTI7XG5TSEEyMjQub3V0U2l6ZSA9IDIyNDtcblNIQTIyNC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyMjQucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTIyNC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgLy8gSnVzdCB0cnVuY2F0ZSBvdXRwdXRcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgICAgICAgICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgICAgICAgICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAgICAgICAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgICAgICAgICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAgICAgICAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgICAgICAgICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGE1MTIgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gICAgV1tpICsgMV0gPSBzdW02NF80X2xvKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzRfaGksIGM0X2xvKTtcblxuICAgIHZhciBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIHZhciBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIHZhciBjMV9oaSA9IG1hajY0X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuICAgIHZhciBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4LFxuICAgICAgICAgICAgIDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcsXG4gICAgICAgICAgICAgMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyxcbiAgICAgICAgICAgICAweDE1MmZlY2Q4LCAweGY3MGU1OTM5LFxuICAgICAgICAgICAgIDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEsXG4gICAgICAgICAgICAgMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSxcbiAgICAgICAgICAgICAweGRiMGMyZTBkLCAweDY0Zjk4ZmE3LFxuICAgICAgICAgICAgIDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTM4NCwgU0hBNTEyKTtcbmV4cG9ydHMuc2hhMzg0ID0gU0hBMzg0O1xuXG5TSEEzODQuYmxvY2tTaXplID0gMTAyNDtcblNIQTM4NC5vdXRTaXplID0gMzg0O1xuU0hBMzg0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTM4NC5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTEpKVxuICAgIHJldHVybiBuZXcgU0hBMSgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgICAgICAgICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGExID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzID0gfn4oaSAvIDIwKTtcbiAgICB2YXIgdCA9IHN1bTMyXzUocm90bDMyKGEsIDUpLCBmdF8xKHMsIGIsIGMsIGQpLCBlLCBXW2ldLCBzaGExX0tbc10pO1xuICAgIGUgPSBkO1xuICAgIGQgPSBjO1xuICAgIGMgPSByb3RsMzIoYiwgMzApO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0O1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbn07XG5cblNIQTEucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cblxuZnVuY3Rpb24gY2g2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCJ2YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJykge1xuICAgIGlmICghZW5jKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB2YXIgaGkgPSBjID4+IDg7XG4gICAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgICBpZiAoaGkpXG4gICAgICAgICAgcmVzLnB1c2goaGksIGxvKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG51dGlscy5odG9ubCA9IGh0b25sO1xuXG5mdW5jdGlvbiB0b0hleDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdyA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnbGl0dGxlJylcbiAgICAgIHcgPSBodG9ubCh3KTtcbiAgICByZXMgKz0gemVybzgody50b1N0cmluZygxNikpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvOCA9IHplcm84O1xuXG5mdW5jdGlvbiBqb2luMzIobXNnLCBzdGFydCwgZW5kLCBlbmRpYW4pIHtcbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICBhc3NlcnQobGVuICUgNCA9PT0gMCk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuIC8gNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gc3RhcnQ7IGkgPCByZXMubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKVxuICAgICAgdyA9IChtc2dba10gPDwgMjQpIHwgKG1zZ1trICsgMV0gPDwgMTYpIHwgKG1zZ1trICsgMl0gPDwgOCkgfCBtc2dbayArIDNdO1xuICAgIGVsc2VcbiAgICAgIHcgPSAobXNnW2sgKyAzXSA8PCAyNCkgfCAobXNnW2sgKyAyXSA8PCAxNikgfCAobXNnW2sgKyAxXSA8PCA4KSB8IG1zZ1trXTtcbiAgICByZXNbaV0gPSB3ID4+PiAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdHIzMiA9IHJvdHIzMjtcblxuZnVuY3Rpb24gcm90bDMyKHcsIGIpIHtcbiAgcmV0dXJuICh3IDw8IGIpIHwgKHcgPj4+ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG51dGlscy5zdW0zMl8zID0gc3VtMzJfMztcblxuZnVuY3Rpb24gc3VtMzJfNChhLCBiLCBjLCBkKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCkgPj4+IDA7XG59XG51dGlscy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kLCBtc2cpIHtcbiAgaWYgKCFjb25kKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cbnV0aWxzLmFzc2VydCA9IGFzc2VydDtcblxudXRpbHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2xvID0gc3VtNjRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF81X2hpID0gc3VtNjRfNV9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbCArIGVsO1xuXG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2xvID0gcm90cjY0X2xvO1xuXG5mdW5jdGlvbiBzaHI2NF9oaShhaCwgYWwsIG51bSkge1xuICByZXR1cm4gYWggPj4+IG51bTtcbn07XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIlxudmFyIGluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGluZGV4T2YpIHJldHVybiBhcnIuaW5kZXhPZihvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTsiLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qKlxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBCdWZmZXJcbiAqXG4gKiBBdXRob3I6ICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIExpY2Vuc2U6ICBNSVRcbiAqXG4gKiBgbnBtIGluc3RhbGwgaXMtYnVmZmVyYFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gISEob2JqICE9IG51bGwgJiZcbiAgICAob2JqLl9pc0J1ZmZlciB8fCAvLyBGb3IgU2FmYXJpIDUtNyAobWlzc2luZyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yKVxuICAgICAgKG9iai5jb25zdHJ1Y3RvciAmJlxuICAgICAgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iaikpXG4gICAgKSlcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciBidWYgPSB0aGlzLnJhbmQuZ2VuZXJhdGUoTWF0aC5jZWlsKGxlbiAvIDgpKTtcblxuICAvLyBTZXQgbG93IGJpdHNcbiAgYnVmWzBdIHw9IDM7XG5cbiAgLy8gTWFzayBoaWdoIGJpdHNcbiAgdmFyIG1hc2sgPSBsZW4gJiAweDc7XG4gIGlmIChtYXNrICE9PSAwKVxuICAgIGJ1ZltidWYubGVuZ3RoIC0gMV0gPj49IDcgLSBtYXNrO1xuXG4gIHJldHVybiBuZXcgYm4oYnVmKTtcbn1cblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcblxuICAgIHZhciBnID0gbi5nY2QoYSk7XG4gICAgaWYgKGcuY21wbigxKSAhPT0gMClcbiAgICAgIHJldHVybiBnO1xuXG4gICAgdmFyIHggPSBhLnRvUmVkKHJlZCkucmVkUG93KGQpO1xuICAgIGlmICh4LmNtcChyb25lKSA9PT0gMCB8fCB4LmNtcChybjEpID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHM7IGkrKykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG5cbiAgICAgIGlmICh4LmNtcChyb25lKSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgICAgaWYgKHguY21wKHJuMSkgPT09IDApXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcbiAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCJleHBvcnRzLmVuZGlhbm5lc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnTEUnIH07XG5cbmV4cG9ydHMuaG9zdG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lXG4gICAgfVxuICAgIGVsc2UgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0cy5sb2FkYXZnID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy51cHRpbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwIH07XG5cbmV4cG9ydHMuZnJlZW1lbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTnVtYmVyLk1BWF9WQUxVRTtcbn07XG5cbmV4cG9ydHMudG90YWxtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLmNwdXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBbXSB9O1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnQnJvd3NlcicgfTtcblxuZXhwb3J0cy5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmFwcFZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubmV0d29ya0ludGVyZmFjZXNcbj0gZXhwb3J0cy5nZXROZXR3b3JrSW50ZXJmYWNlc1xuPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7fSB9O1xuXG5leHBvcnRzLmFyY2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnamF2YXNjcmlwdCcgfTtcblxuZXhwb3J0cy5wbGF0Zm9ybSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdicm93c2VyJyB9O1xuXG5leHBvcnRzLnRtcGRpciA9IGV4cG9ydHMudG1wRGlyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAnL3RtcCc7XG59O1xuXG5leHBvcnRzLkVPTCA9ICdcXG4nO1xuIiwibW9kdWxlLmV4cG9ydHM9e1wiMi4xNi44NDAuMS4xMDEuMy40LjEuMVwiOiBcImFlcy0xMjgtZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjJcIjogXCJhZXMtMTI4LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zXCI6IFwiYWVzLTEyOC1vZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNFwiOiBcImFlcy0xMjgtY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxXCI6IFwiYWVzLTE5Mi1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjJcIjogXCJhZXMtMTkyLWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yM1wiOiBcImFlcy0xOTItb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0XCI6IFwiYWVzLTE5Mi1jZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDFcIjogXCJhZXMtMjU2LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MlwiOiBcImFlcy0yNTYtY2JjXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzXCI6IFwiYWVzLTI1Ni1vZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDRcIjogXCJhZXMtMjU2LWNmYlwiXG59IiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9hc24xLmpzXG4vLyBGZWRvciwgeW91IGFyZSBhbWF6aW5nLlxuXG52YXIgYXNuMSA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG52YXIgUlNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdSU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MScpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnY29lZmZpY2llbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQcml2YXRlS2V5ID0gUlNBUHJpdmF0ZUtleVxuXG52YXIgUlNBUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVB1YmxpY0tleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQdWJsaWNLZXkgPSBSU0FQdWJsaWNLZXlcblxudmFyIFB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlB1YmxpY0tleSA9IFB1YmxpY0tleVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbjEuZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnbm9uZScpLm51bGxfKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ2cnKS5pbnQoKVxuICAgICkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuZXhwb3J0cy5Qcml2YXRlS2V5ID0gUHJpdmF0ZUtleUluZm9cbnZhciBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICB0aGlzLmtleSgnZGVjcnlwdCcpLnNlcSgpLm9iaihcbiAgICAgICAgdGhpcy5rZXkoJ2tkZScpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdrZGVwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICAgICAgICB0aGlzLmtleSgnc2FsdCcpLm9jdHN0cigpLFxuICAgICAgICAgICAgdGhpcy5rZXkoJ2l0ZXJzJykuaW50KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRoaXMua2V5KCdjaXBoZXInKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2FsZ28nKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdpdicpLm9jdHN0cigpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5cbmV4cG9ydHMuRW5jcnlwdGVkUHJpdmF0ZUtleSA9IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXG5cbnZhciBEU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0RTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgIHRoaXMua2V5KCdnJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1Yl9rZXknKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdl9rZXknKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5EU0FQcml2YXRlS2V5ID0gRFNBUHJpdmF0ZUtleVxuXG5leHBvcnRzLkRTQXBhcmFtID0gYXNuMS5kZWZpbmUoJ0RTQXBhcmFtJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmludCgpXG59KVxudmFyIEVDUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdFQ1ByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVLZXknKS5vY3RzdHIoKSxcbiAgICB0aGlzLmtleSgncGFyYW1ldGVycycpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKEVDUGFyYW1ldGVycyksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0tleScpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuRUNQcml2YXRlS2V5ID0gRUNQcml2YXRlS2V5XG52YXIgRUNQYXJhbWV0ZXJzID0gYXNuMS5kZWZpbmUoJ0VDUGFyYW1ldGVycycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIG5hbWVkQ3VydmU6IHRoaXMub2JqaWQoKVxuICB9KVxufSlcblxuZXhwb3J0cy5zaWduYXR1cmUgPSBhc24xLmRlZmluZSgnc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgncicpLmludCgpLFxuICAgIHRoaXMua2V5KCdzJykuaW50KClcbiAgKVxufSlcbiIsIi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXBhdGlsL3BlbXN0cmlwXG52YXIgZmluZFByb2MgPSAvUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFxccj9cXG5ERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspXFxyP1xcblxccj9cXG4oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxccj9cXG4vbVxudmFyIHN0YXJ0UmVnZXggPSAvXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4vbVxudmFyIGZ1bGxSZWdleCA9IC9eLS0tLS1CRUdJTiAoLiopIEtFWS0tLS0tXFxyP1xcbihbMC05QS16XFxuXFxyXFwrXFwvXFw9XSspXFxyP1xcbi0tLS0tRU5EIFxcMSBLRVktLS0tLSQvbVxudmFyIGV2cCA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2tleSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleSA9IG9rZXkudG9TdHJpbmcoKVxuICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZmluZFByb2MpXG4gIHZhciBkZWNyeXB0ZWRcbiAgaWYgKCFtYXRjaCkge1xuICAgIHZhciBtYXRjaDIgPSBrZXkubWF0Y2goZnVsbFJlZ2V4KVxuICAgIGRlY3J5cHRlZCA9IG5ldyBCdWZmZXIobWF0Y2gyWzJdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3VpdGUgPSAnYWVzJyArIG1hdGNoWzFdXG4gICAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBuZXcgQnVmZmVyKG1hdGNoWzNdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgICB2YXIgY2lwaGVyS2V5ID0gZXZwKHBhc3N3b3JkLCBpdi5zbGljZSgwLCA4KSwgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSkua2V5XG4gICAgdmFyIG91dCA9IFtdXG4gICAgdmFyIGNpcGhlciA9IGNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwgY2lwaGVyS2V5LCBpdilcbiAgICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICAgIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQob3V0KVxuICB9XG4gIHZhciB0YWcgPSBrZXkubWF0Y2goc3RhcnRSZWdleClbMV0gKyAnIEtFWSdcbiAgcmV0dXJuIHtcbiAgICB0YWc6IHRhZyxcbiAgICBkYXRhOiBkZWNyeXB0ZWRcbiAgfVxufVxuIiwidmFyIGFzbjEgPSByZXF1aXJlKCcuL2FzbjEnKVxudmFyIGFlc2lkID0gcmVxdWlyZSgnLi9hZXNpZC5qc29uJylcbnZhciBmaXhQcm9jID0gcmVxdWlyZSgnLi9maXhQcm9jJylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxudmFyIGNvbXBhdCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gbmV3IEJ1ZmZlcihidWZmZXIpXG4gIH1cblxuICB2YXIgc3RyaXBwZWQgPSBmaXhQcm9jKGJ1ZmZlciwgcGFzc3dvcmQpXG5cbiAgdmFyIHR5cGUgPSBzdHJpcHBlZC50YWdcbiAgdmFyIGRhdGEgPSBzdHJpcHBlZC5kYXRhXG4gIHZhciBzdWJ0eXBlLCBuZGF0YVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5QdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIG5kYXRhLnN1YmplY3RQcml2YXRlS2V5ID0gbmRhdGEuc3ViamVjdFB1YmxpY0tleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZWMnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVuY3J5cHRlZFByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgZGF0YSA9IGRlY3J5cHQoZGF0YSwgcGFzc3dvcmQpXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFJJVkFURSBLRVknOlxuICAgICAgbmRhdGEgPSBhc24xLlByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJ2ZTogbmRhdGEuYWxnb3JpdGhtLmN1cnZlLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJykucHJpdmF0ZUtleVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgcGFyYW1zOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ1JTQSBQVUJMSUMgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnUlNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ0RTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgcGFyYW1zOiBhc24xLkRTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgIGNhc2UgJ0VDIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJ2ZTogZGF0YS5wYXJhbWV0ZXJzLnZhbHVlLFxuICAgICAgICBwcml2YXRlS2V5OiBkYXRhLnByaXZhdGVLZXlcbiAgICAgIH1cbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gIH1cbn1cbnBhcnNlS2V5cy5zaWduYXR1cmUgPSBhc24xLnNpZ25hdHVyZVxuZnVuY3Rpb24gZGVjcnlwdCAoZGF0YSwgcGFzc3dvcmQpIHtcbiAgdmFyIHNhbHQgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdFxuICB2YXIgaXRlcnMgPSBwYXJzZUludChkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwgMTApXG4gIHZhciBhbGdvID0gYWVzaWRbZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCcuJyldXG4gIHZhciBpdiA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2XG4gIHZhciBjaXBoZXJUZXh0ID0gZGF0YS5zdWJqZWN0UHJpdmF0ZUtleVxuICB2YXIga2V5bGVuID0gcGFyc2VJbnQoYWxnby5zcGxpdCgnLScpWzFdLCAxMCkgLyA4XG4gIHZhciBrZXkgPSBjb21wYXQucGJrZGYyU3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcnMsIGtleWxlbilcbiAgdmFyIGNpcGhlciA9IGNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdihhbGdvLCBrZXksIGl2KVxuICB2YXIgb3V0ID0gW11cbiAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgb3V0LnB1c2goY2lwaGVyLmZpbmFsKCkpXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIFNwbGl0IGEgZmlsZW5hbWUgaW50byBbcm9vdCwgZGlyLCBiYXNlbmFtZSwgZXh0XSwgdW5peCB2ZXJzaW9uXG4vLyAncm9vdCcgaXMganVzdCBhIHNsYXNoLCBvciBub3RoaW5nLlxudmFyIHNwbGl0UGF0aFJlID1cbiAgICAvXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLztcbnZhciBzcGxpdFBhdGggPSBmdW5jdGlvbihmaWxlbmFtZSkge1xuICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG59O1xuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlc29sdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59O1xuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59O1xuXG5leHBvcnRzLnNlcCA9ICcvJztcbmV4cG9ydHMuZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCksXG4gICAgICByb290ID0gcmVzdWx0WzBdLFxuICAgICAgZGlyID0gcmVzdWx0WzFdO1xuXG4gIGlmICghcm9vdCAmJiAhZGlyKSB7XG4gICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyXG4gICAgcmV0dXJuICcuJztcbiAgfVxuXG4gIGlmIChkaXIpIHtcbiAgICAvLyBJdCBoYXMgYSBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBzbGFzaFxuICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3QgKyBkaXI7XG59O1xuXG5cbmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbihwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBzcGxpdFBhdGgocGF0aClbMl07XG4gIC8vIFRPRE86IG1ha2UgdGhpcyBjb21wYXJpc29uIGNhc2UtaW5zZW5zaXRpdmUgb24gd2luZG93cz9cbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn07XG5cblxuZXhwb3J0cy5leHRuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gc3BsaXRQYXRoKHBhdGgpWzNdO1xufTtcblxuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYidcbiAgICA/IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfVxuICAgIDogZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwidmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgTUFYX0FMTE9DID0gTWF0aC5wb3coMiwgMzApIC0gMSAvLyBkZWZhdWx0IGluIGlvanNcblxuZXhwb3J0cy5wYmtkZjIgPSBwYmtkZjJcbmZ1bmN0aW9uIHBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjInKVxuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQsIHJlc3VsdClcbiAgfSlcbn1cblxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcGJrZGYyU3luY1xuZnVuY3Rpb24gcGJrZGYyU3luYyAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KSB7XG4gIGlmICh0eXBlb2YgaXRlcmF0aW9ucyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJdGVyYXRpb25zIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoaXRlcmF0aW9ucyA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgaXRlcmF0aW9ucycpXG4gIH1cblxuICBpZiAodHlwZW9mIGtleWxlbiAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLZXkgbGVuZ3RoIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoa2V5bGVuIDwgMCB8fCBrZXlsZW4gPiBNQVhfQUxMT0MpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IG5ldyBCdWZmZXIocGFzc3dvcmQsICdiaW5hcnknKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkgc2FsdCA9IG5ldyBCdWZmZXIoc2FsdCwgJ2JpbmFyeScpXG5cbiAgdmFyIGhMZW5cbiAgdmFyIGwgPSAxXG4gIHZhciBESyA9IG5ldyBCdWZmZXIoa2V5bGVuKVxuICB2YXIgYmxvY2sxID0gbmV3IEJ1ZmZlcihzYWx0Lmxlbmd0aCArIDQpXG4gIHNhbHQuY29weShibG9jazEsIDAsIDAsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciByXG4gIHZhciBUXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG4gICAgdmFyIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShibG9jazEpLmRpZ2VzdCgpXG5cbiAgICBpZiAoIWhMZW4pIHtcbiAgICAgIGhMZW4gPSBVLmxlbmd0aFxuICAgICAgVCA9IG5ldyBCdWZmZXIoaExlbilcbiAgICAgIGwgPSBNYXRoLmNlaWwoa2V5bGVuIC8gaExlbilcbiAgICAgIHIgPSBrZXlsZW4gLSAobCAtIDEpICogaExlblxuICAgIH1cblxuICAgIFUuY29weShULCAwLCAwLCBoTGVuKVxuXG4gICAgZm9yICh2YXIgaiA9IDE7IGogPCBpdGVyYXRpb25zOyBqKyspIHtcbiAgICAgIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShVKS5kaWdlc3QoKVxuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykge1xuICAgICAgICBUW2tdIF49IFVba11cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVzdFBvcyA9IChpIC0gMSkgKiBoTGVuXG4gICAgdmFyIGxlbiA9IChpID09PSBsID8gciA6IGhMZW4pXG4gICAgVC5jb3B5KERLLCBkZXN0UG9zLCAwLCBsZW4pXG4gIH1cblxuICByZXR1cm4gREtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBuZXh0VGljaztcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5uZXh0VGljaztcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNhY2hlZFNldFRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaXMgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBpcyBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxufSAoKSlcbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IGNhY2hlZFNldFRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGNhY2hlZENsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQoZHJhaW5RdWV1ZSwgMCk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCJleHBvcnRzLnB1YmxpY0VuY3J5cHQgPSByZXF1aXJlKCcuL3B1YmxpY0VuY3J5cHQnKTtcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSByZXF1aXJlKCcuL3ByaXZhdGVEZWNyeXB0Jyk7XG5cbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBwcml2YXRlRW5jcnlwdChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wdWJsaWNFbmNyeXB0KGtleSwgYnVmLCB0cnVlKTtcbn07XG5cbmV4cG9ydHMucHVibGljRGVjcnlwdCA9IGZ1bmN0aW9uIHB1YmxpY0RlY3J5cHQoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHJpdmF0ZURlY3J5cHQoa2V5LCBidWYsIHRydWUpO1xufTsiLCJ2YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZWVkLCBsZW4pIHtcbiAgdmFyIHQgPSBuZXcgQnVmZmVyKCcnKTtcbiAgdmFyICBpID0gMCwgYztcbiAgd2hpbGUgKHQubGVuZ3RoIDwgbGVuKSB7XG4gICAgYyA9IGkyb3BzKGkrKyk7XG4gICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUoc2VlZCkudXBkYXRlKGMpLmRpZ2VzdCgpXSk7XG4gIH1cbiAgcmV0dXJuIHQuc2xpY2UoMCwgbGVuKTtcbn07XG5cbmZ1bmN0aW9uIGkyb3BzKGMpIHtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIoNCk7XG4gIG91dC53cml0ZVVJbnQzMkJFKGMsMCk7XG4gIHJldHVybiBvdXQ7XG59IiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKTtcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpO1xudmFyIHhvciA9IHJlcXVpcmUoJy4veG9yJyk7XG52YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJyk7XG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcml2YXRlRGVjcnlwdChwcml2YXRlX2tleSwgZW5jLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nO1xuICBpZiAocHJpdmF0ZV9rZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwcml2YXRlX2tleS5wYWRkaW5nO1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkaW5nID0gNDtcbiAgfVxuICBcbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwcml2YXRlX2tleSk7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICBpZiAoZW5jLmxlbmd0aCA+IGsgfHwgbmV3IGJuKGVuYykuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIG1zZztcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBtc2cgPSB3aXRoUHVibGljKG5ldyBibihlbmMpLCBrZXkpO1xuICB9IGVsc2Uge1xuICAgIG1zZyA9IGNydChlbmMsIGtleSk7XG4gIH1cbiAgdmFyIHpCdWZmZXIgPSBuZXcgQnVmZmVyKGsgLSBtc2cubGVuZ3RoKTtcbiAgekJ1ZmZlci5maWxsKDApO1xuICBtc2cgPSBCdWZmZXIuY29uY2F0KFt6QnVmZmVyLCBtc2ddLCBrKTtcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICByZXR1cm4gb2FlcChrZXksIG1zZyk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHJldHVybiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHJldHVybiBtc2c7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gb2FlcChrZXksIG1zZyl7XG4gIHZhciBuID0ga2V5Lm1vZHVsdXM7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBpSGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUobmV3IEJ1ZmZlcignJykpLmRpZ2VzdCgpO1xuICB2YXIgaExlbiA9IGlIYXNoLmxlbmd0aDtcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW47XG4gIGlmIChtc2dbMF0gIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgbWFza2VkU2VlZCA9IG1zZy5zbGljZSgxLCBoTGVuICsgMSk7XG4gIHZhciBtYXNrZWREYiA9ICBtc2cuc2xpY2UoaExlbiArIDEpO1xuICB2YXIgc2VlZCA9IHhvcihtYXNrZWRTZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKTtcbiAgdmFyIGRiID0geG9yKG1hc2tlZERiLCBtZ2Yoc2VlZCwgayAtIGhMZW4gLSAxKSk7XG4gIGlmIChjb21wYXJlKGlIYXNoLCBkYi5zbGljZSgwLCBoTGVuKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgaSA9IGhMZW47XG4gIHdoaWxlIChkYltpXSA9PT0gMCkge1xuICAgIGkrKztcbiAgfVxuICBpZiAoZGJbaSsrXSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHJldHVybiBkYi5zbGljZShpKTtcbn1cblxuZnVuY3Rpb24gcGtjczEoa2V5LCBtc2csIHJldmVyc2Upe1xuICB2YXIgcDEgPSBtc2cuc2xpY2UoMCwgMik7XG4gIHZhciBpID0gMjtcbiAgdmFyIHN0YXR1cyA9IDA7XG4gIHdoaWxlIChtc2dbaSsrXSAhPT0gMCkge1xuICAgIGlmIChpID49IG1zZy5sZW5ndGgpIHtcbiAgICAgIHN0YXR1cysrO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZhciBwcyA9IG1zZy5zbGljZSgyLCBpIC0gMSk7XG4gIHZhciBwMiA9IG1zZy5zbGljZShpIC0gMSwgaSk7XG5cbiAgaWYgKChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAyJyAmJiAhcmV2ZXJzZSkgfHwgKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDEnICYmIHJldmVyc2UpKXtcbiAgICBzdGF0dXMrKztcbiAgfVxuICBpZiAocHMubGVuZ3RoIDwgOCkge1xuICAgIHN0YXR1cysrO1xuICB9XG4gIGlmIChzdGF0dXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICByZXR1cm4gIG1zZy5zbGljZShpKTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYil7XG4gIGEgPSBuZXcgQnVmZmVyKGEpO1xuICBiID0gbmV3IEJ1ZmZlcihiKTtcbiAgdmFyIGRpZiA9IDA7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIGRpZisrO1xuICAgIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gIH1cbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGRpZiArPSAoYVtpXSBeIGJbaV0pO1xuICB9XG4gIHJldHVybiBkaWY7XG59IiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG52YXIgbWdmID0gcmVxdWlyZSgnLi9tZ2YnKTtcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpO1xudmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB3aXRoUHVibGljID0gcmVxdWlyZSgnLi93aXRoUHVibGljJyk7XG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKTtcblxudmFyIGNvbnN0YW50cyA9IHtcbiAgUlNBX1BLQ1MxX09BRVBfUEFERElORzogNCxcbiAgUlNBX1BLQ1MxX1BBRERJTjogMSxcbiAgUlNBX05PX1BBRERJTkc6IDNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHVibGljRW5jcnlwdChwdWJsaWNfa2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmc7XG4gIGlmIChwdWJsaWNfa2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHVibGljX2tleS5wYWRkaW5nO1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkaW5nID0gNDtcbiAgfVxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHB1YmxpY19rZXkpO1xuICB2YXIgcGFkZGVkTXNnO1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHBhZGRlZE1zZyA9IG9hZXAoa2V5LCBtc2cpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICBwYWRkZWRNc2cgPSBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHBhZGRlZE1zZyA9IG5ldyBibihtc2cpO1xuICAgIGlmIChwYWRkZWRNc2cuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKTtcbiAgfVxuICBpZiAocmV2ZXJzZSkge1xuICAgIHJldHVybiBjcnQocGFkZGVkTXNnLCBrZXkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gb2FlcChrZXksIG1zZyl7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBpSGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUobmV3IEJ1ZmZlcignJykpLmRpZ2VzdCgpO1xuICB2YXIgaExlbiA9IGlIYXNoLmxlbmd0aDtcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW47XG4gIGlmIChtTGVuID4gayAtIGhMZW4yIC0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpO1xuICB9XG4gIHZhciBwcyA9IG5ldyBCdWZmZXIoayAtIG1MZW4gLSBoTGVuMiAtIDIpO1xuICBwcy5maWxsKDApO1xuICB2YXIgZGJsZW4gPSBrIC0gaExlbiAtIDE7XG4gIHZhciBzZWVkID0gcmFuZG9tQnl0ZXMoaExlbik7XG4gIHZhciBtYXNrZWREYiA9IHhvcihCdWZmZXIuY29uY2F0KFtpSGFzaCwgcHMsIG5ldyBCdWZmZXIoWzFdKSwgbXNnXSwgZGJsZW4pLCBtZ2Yoc2VlZCwgZGJsZW4pKTtcbiAgdmFyIG1hc2tlZFNlZWQgPSB4b3Ioc2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSk7XG4gIHJldHVybiBuZXcgYm4oQnVmZmVyLmNvbmNhdChbbmV3IEJ1ZmZlcihbMF0pLCBtYXNrZWRTZWVkLCBtYXNrZWREYl0sIGspKTtcbn1cbmZ1bmN0aW9uIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKXtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgaWYgKG1MZW4gPiBrIC0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKTtcbiAgfVxuICB2YXIgcHM7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcHMgPSBuZXcgQnVmZmVyKGsgLSBtTGVuIC0gMyk7XG4gICAgcHMuZmlsbCgweGZmKTtcbiAgfSBlbHNlIHtcbiAgICBwcyA9IG5vblplcm8oayAtIG1MZW4gLSAzKTtcbiAgfVxuICByZXR1cm4gbmV3IGJuKEJ1ZmZlci5jb25jYXQoW25ldyBCdWZmZXIoWzAsIHJldmVyc2U/MToyXSksIHBzLCBuZXcgQnVmZmVyKFswXSksIG1zZ10sIGspKTtcbn1cbmZ1bmN0aW9uIG5vblplcm8obGVuLCBjcnlwdG8pIHtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4qMik7XG4gIHZhciBjdXIgPSAwO1xuICB2YXIgbnVtO1xuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIGlmIChjdXIgPT09IGNhY2hlLmxlbmd0aCkge1xuICAgICAgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4qMik7XG4gICAgICBjdXIgPSAwO1xuICAgIH1cbiAgICBudW0gPSBjYWNoZVtjdXIrK107XG4gICAgaWYgKG51bSkge1xuICAgICAgb3V0W2krK10gPSBudW07XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59IiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbmZ1bmN0aW9uIHdpdGhQdWJsaWMocGFkZGVkTXNnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIocGFkZGVkTXNnXG4gICAgLnRvUmVkKGJuLm1vbnQoa2V5Lm1vZHVsdXMpKVxuICAgIC5yZWRQb3cobmV3IGJuKGtleS5wdWJsaWNFeHBvbmVudCkpXG4gICAgLmZyb21SZWQoKVxuICAgIC50b0FycmF5KCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhQdWJsaWM7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IoYSwgYikge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBhW2ldIF49IGJbaV07XG4gIH1cbiAgcmV0dXJuIGFcbn07IiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG5cbmlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJhbmRvbUJ5dGVzXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IG9sZEJyb3dzZXJcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnl0ZXMgKHNpemUsIGNiKSB7XG4gIC8vIHBoYW50b21qcyBuZWVkcyB0byB0aHJvd1xuICBpZiAoc2l6ZSA+IDY1NTM2KSB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuICAvLyBpbiBjYXNlIGJyb3dzZXJpZnkgIGlzbid0IHVzaW5nIHRoZSBVaW50OEFycmF5IHZlcnNpb25cbiAgdmFyIHJhd0J5dGVzID0gbmV3IGdsb2JhbC5VaW50OEFycmF5KHNpemUpXG5cbiAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrIGluIG9sZGVyIGJyb3dzZXJzLlxuICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmF3Qnl0ZXMpXG4gIH1cbiAgLy8gcGhhbnRvbWpzIGRvZXNuJ3QgbGlrZSBhIGJ1ZmZlciBiZWluZyBwYXNzZWQgaGVyZVxuICB2YXIgYnl0ZXMgPSBuZXcgQnVmZmVyKHJhd0J5dGVzLmJ1ZmZlcilcblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9kdXBsZXguanNcIilcbiIsIi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBhbCBpbmhlcml0YW5jZSwgdGhpcyBjbGFzc1xuLy8gcHJvdG90eXBhbGx5IGluaGVyaXRzIGZyb20gUmVhZGFibGUsIGFuZCB0aGVuIHBhcmFzaXRpY2FsbHkgZnJvbVxuLy8gV3JpdGFibGUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3JlYWRhYmxlJyk7XG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxudXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTtcblxudmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5mb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbn1cblxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuXG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuXG4gIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xufVxuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcHJvY2Vzc05leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59IiwiLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5Jyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuUmVhZGFibGUuUmVhZGFibGVTdGF0ZSA9IFJlYWRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgU3RyZWFtID0gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTtcbiAgfSBjYXRjaCAoXykge30gZmluYWxseSB7XG4gICAgaWYgKCFTdHJlYW0pIFN0cmVhbSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiAgfVxufSkoKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFN0cmluZ0RlY29kZXI7XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFN0cmVhbSk7XG5cbnZhciBoYXNQcmVwZW5kTGlzdGVuZXIgPSB0eXBlb2YgRUUucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJztcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICBpZiAoaGFzUHJlcGVuZExpc3RlbmVyKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgYnJ1dGFsbHkgdWdseSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyXG4gIC8vIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnkgdXNlcmxhbmQgb25lcy4gIE5FVkVSIERPIFRISVMuIFRoaXMgaXMgaGVyZVxuICAvLyBvbmx5IGJlY2F1c2UgdGhpcyBjb2RlIG5lZWRzIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9uc1xuICAvLyBvZiBOb2RlLmpzIHRoYXQgZG8gbm90IGluY2x1ZGUgdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWxcbiAgLy8gaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkgZW1pdHRlci5vbihldmVudCwgZm4pO2Vsc2UgaWYgKGlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0udW5zaGlmdChmbik7ZWxzZSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdID0gW2ZuLCBlbWl0dGVyLl9ldmVudHNbZXZlbnRdXTtcbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH4gfnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICB0aGlzLmJ1ZmZlciA9IFtdO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHdoZW4gcGlwaW5nLCB3ZSBvbmx5IGNhcmUgYWJvdXQgJ3JlYWRhYmxlJyBldmVudHMgdGhhdCBoYXBwZW5cbiAgLy8gYWZ0ZXIgcmVhZCgpaW5nIGFsbCB0aGUgYnl0ZXMgYW5kIG5vdCBnZXR0aW5nIGFueSBwdXNoYmFjay5cbiAgdGhpcy5yYW5PdXQgPSBmYWxzZTtcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICBjaHVuayA9IGJ1ZmZlclNoaW0uZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBmYWxzZSk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCAnJywgdHJ1ZSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTtcblxuZnVuY3Rpb24gcmVhZGFibGVBZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQpIHtcbiAgdmFyIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgIGlmIChzdGF0ZS5lbmRlZCAmJiAhYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZEVtaXR0ZWQgJiYgYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIF9lID0gbmV3IEVycm9yKCdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpO1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgX2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2tpcEFkZDtcbiAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFhZGRUb0Zyb250ICYmICFlbmNvZGluZykge1xuICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICBza2lwQWRkID0gIXN0YXRlLm9iamVjdE1vZGUgJiYgY2h1bmsubGVuZ3RoID09PSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFkZFRvRnJvbnQpIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcblxuICAgICAgLy8gRG9uJ3QgYWRkIHRvIHRoZSBidWZmZXIgaWYgd2UndmUgZGVjb2RlZCB0byBhbiBlbXB0eSBzdHJpbmcgY2h1bmsgYW5kXG4gICAgICAvLyB3ZSdyZSBub3QgaW4gb2JqZWN0IG1vZGVcbiAgICAgIGlmICghc2tpcEFkZCkge1xuICAgICAgICAvLyBpZiB3ZSB3YW50IHRoZSBkYXRhIG5vdywganVzdCBlbWl0IGl0LlxuICAgICAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICAgICAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgICAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcblxuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIG4gPT09IDAgPyAwIDogMTtcblxuICBpZiAobiA9PT0gbnVsbCB8fCBpc05hTihuKSkge1xuICAgIC8vIG9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmJ1ZmZlci5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXJbMF0ubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChuIDw9IDApIHJldHVybiAwO1xuXG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSB0YXJnZXQgYnVmZmVyIGxldmVsLFxuICAvLyB0aGVuIHJhaXNlIHRoZSB3YXRlciBtYXJrLiAgQnVtcCB1cCB0byB0aGUgbmV4dCBoaWdoZXN0XG4gIC8vIHBvd2VyIG9mIDIsIHRvIHByZXZlbnQgaW5jcmVhc2luZyBpdCBleGNlc3NpdmVseSBpbiB0aW55XG4gIC8vIGFtb3VudHMuXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuXG4gIC8vIGRvbid0IGhhdmUgdGhhdCBtdWNoLiAgcmV0dXJuIG51bGwsIHVubGVzcyB3ZSd2ZSBlbmRlZC5cbiAgaWYgKG4gPiBzdGF0ZS5sZW5ndGgpIHtcbiAgICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG47XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuID4gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfVxuXG4gIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gIH1cblxuICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gIGlmIChkb1JlYWQgJiYgIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9XG5cbiAgc3RhdGUubGVuZ3RoIC09IG47XG5cbiAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlciA9IG51bGw7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICByZXR1cm4gZXI7XG59XG5cbmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuXG4gIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbn1cblxuLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBpZiAoc3RhdGUuc3luYykgcHJvY2Vzc05leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgZGVidWcoJ2VtaXQgcmVhZGFibGUnKTtcbiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gIGZsb3coc3RyZWFtKTtcbn1cblxuLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nTW9yZSkge1xuICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5lbmRlZCAmJiBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKVxuICAgICAgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2U7XG59XG5cbi8vIGFic3RyYWN0IG1ldGhvZC4gIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguXG4vLyBmb3IgdmlydHVhbCAobm9uLXN0cmluZywgbm9uLWJ1ZmZlcikgc3RyZWFtcywgXCJsZW5ndGhcIiBpcyBzb21ld2hhdFxuLy8gYXJiaXRyYXJ5LCBhbmQgcGVyaGFwcyBub3QgdmVyeSBtZWFuaW5nZnVsLlxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogY2xlYW51cDtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHByb2Nlc3NOZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUpIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgY2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGRlYnVnKCdvbmVuZCcpO1xuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuICAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyXG4gIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAvLyBoYW5kbGVyIGluIGZsb3coKSwgYnV0IGFkZGluZyBhbmQgcmVtb3ZpbmcgcmVwZWF0ZWRseSBpc1xuICAvLyB0b28gc2xvdy5cbiAgdmFyIG9uZHJhaW4gPSBwaXBlT25EcmFpbihzcmMpO1xuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpO1xuICAgIC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQpIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBkZXN0c1tfaV0uZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgfXJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGkgPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGkgPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaSwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG5cbiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICAvLyBJZiBsaXN0ZW5pbmcgdG8gZGF0YSwgYW5kIGl0IGhhcyBub3QgZXhwbGljaXRseSBiZWVuIHBhdXNlZCxcbiAgLy8gdGhlbiBjYWxsIHJlc3VtZSB0byBzdGFydCB0aGUgZmxvdyBvZiBkYXRhIG9uIHRoZSBuZXh0IHRpY2suXG4gIGlmIChldiA9PT0gJ2RhdGEnICYmIGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICB0aGlzLnJlc3VtZSgpO1xuICB9XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnICYmICF0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIGlmICghc3RhdGUucmVhZGluZykge1xuICAgICAgICBwcm9jZXNzTmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdHJlYW0uZW1pdCgncmVzdW1lJyk7XG4gIGZsb3coc3RyZWFtKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpO1xuICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZsb3coc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2Zsb3cnLCBzdGF0ZS5mbG93aW5nKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcpIHtcbiAgICBkbyB7XG4gICAgICB2YXIgY2h1bmsgPSBzdHJlYW0ucmVhZCgpO1xuICAgIH0gd2hpbGUgKG51bGwgIT09IGNodW5rICYmIHN0YXRlLmZsb3dpbmcpO1xuICB9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBzZWxmLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIHNlbGYucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IHNlbGYucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgdmFyIGV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcbiAgZm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChldikge1xuICAgIHN0cmVhbS5vbihldiwgc2VsZi5lbWl0LmJpbmQoc2VsZiwgZXYpKTtcbiAgfSk7XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgc2VsZi5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbmZ1bmN0aW9uIGZyb21MaXN0KG4sIHN0YXRlKSB7XG4gIHZhciBsaXN0ID0gc3RhdGUuYnVmZmVyO1xuICB2YXIgbGVuZ3RoID0gc3RhdGUubGVuZ3RoO1xuICB2YXIgc3RyaW5nTW9kZSA9ICEhc3RhdGUuZGVjb2RlcjtcbiAgdmFyIG9iamVjdE1vZGUgPSAhIXN0YXRlLm9iamVjdE1vZGU7XG4gIHZhciByZXQ7XG5cbiAgLy8gbm90aGluZyBpbiB0aGUgbGlzdCwgZGVmaW5pdGVseSBlbXB0eS5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICBpZiAobGVuZ3RoID09PSAwKSByZXQgPSBudWxsO2Vsc2UgaWYgKG9iamVjdE1vZGUpIHJldCA9IGxpc3Quc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IGxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgYXJyYXkuXG4gICAgaWYgKHN0cmluZ01vZGUpIHJldCA9IGxpc3Quam9pbignJyk7ZWxzZSBpZiAobGlzdC5sZW5ndGggPT09IDEpIHJldCA9IGxpc3RbMF07ZWxzZSByZXQgPSBCdWZmZXIuY29uY2F0KGxpc3QsIGxlbmd0aCk7XG4gICAgbGlzdC5sZW5ndGggPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQganVzdCBzb21lIG9mIGl0LlxuICAgIGlmIChuIDwgbGlzdFswXS5sZW5ndGgpIHtcbiAgICAgIC8vIGp1c3QgdGFrZSBhIHBhcnQgb2YgdGhlIGZpcnN0IGxpc3QgaXRlbS5cbiAgICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgdmFyIGJ1ZiA9IGxpc3RbMF07XG4gICAgICByZXQgPSBidWYuc2xpY2UoMCwgbik7XG4gICAgICBsaXN0WzBdID0gYnVmLnNsaWNlKG4pO1xuICAgIH0gZWxzZSBpZiAobiA9PT0gbGlzdFswXS5sZW5ndGgpIHtcbiAgICAgIC8vIGZpcnN0IGxpc3QgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbXBsZXggY2FzZS5cbiAgICAgIC8vIHdlIGhhdmUgZW5vdWdoIHRvIGNvdmVyIGl0LCBidXQgaXQgc3BhbnMgcGFzdCB0aGUgZmlyc3QgYnVmZmVyLlxuICAgICAgaWYgKHN0cmluZ01vZGUpIHJldCA9ICcnO2Vsc2UgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuKTtcblxuICAgICAgdmFyIGMgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGwgJiYgYyA8IG47IGkrKykge1xuICAgICAgICB2YXIgX2J1ZiA9IGxpc3RbMF07XG4gICAgICAgIHZhciBjcHkgPSBNYXRoLm1pbihuIC0gYywgX2J1Zi5sZW5ndGgpO1xuXG4gICAgICAgIGlmIChzdHJpbmdNb2RlKSByZXQgKz0gX2J1Zi5zbGljZSgwLCBjcHkpO2Vsc2UgX2J1Zi5jb3B5KHJldCwgYywgMCwgY3B5KTtcblxuICAgICAgICBpZiAoY3B5IDwgX2J1Zi5sZW5ndGgpIGxpc3RbMF0gPSBfYnVmLnNsaWNlKGNweSk7ZWxzZSBsaXN0LnNoaWZ0KCk7XG5cbiAgICAgICAgYyArPSBjcHk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcHJvY2Vzc05leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh4c1tpXSA9PT0geCkgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufSIsIi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RhdGUoc3RyZWFtKSB7XG4gIHRoaXMuYWZ0ZXJUcmFuc2Zvcm0gPSBmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICByZXR1cm4gYWZ0ZXJUcmFuc2Zvcm0oc3RyZWFtLCBlciwgZGF0YSk7XG4gIH07XG5cbiAgdGhpcy5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHRoaXMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG4gIHRoaXMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRoaXMud3JpdGVlbmNvZGluZyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG5cbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoIWNiKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdubyB3cml0ZWNiIGluIFRyYW5zZm9ybSBjbGFzcycpKTtcblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSBzdHJlYW0ucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHN0cmVhbS5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG5cbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUgPSBuZXcgVHJhbnNmb3JtU3RhdGUodGhpcyk7XG5cbiAgLy8gd2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB2YXIgc3RyZWFtID0gdGhpcztcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgdGhpcy5vbmNlKCdwcmVmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyKSB7XG4gICAgICBkb25lKHN0cmVhbSwgZXIpO1xuICAgIH0pO2Vsc2UgZG9uZShzdHJlYW0pO1xuICB9KTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07XG5cbi8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiB0cy53cml0ZWNiICYmICF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlO1xuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG4gIHZhciB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAod3MubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCcpO1xuXG4gIGlmICh0cy50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcHJvY2Vzc05leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW07XG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIFN0cmVhbSA9IHJlcXVpcmUoJ3N0JyArICdyZWFtJyk7XG4gIH0gY2F0Y2ggKF8pIHt9IGZpbmFsbHkge1xuICAgIGlmICghU3RyZWFtKSBTdHJlYW0gPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG4gIH1cbn0pKCk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtXG4gIC8vIGNvbnRhaW5zIGJ1ZmZlcnMgb3Igb2JqZWN0cy5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIHdyaXRlKCkgc3RhcnRzIHJldHVybmluZyBmYWxzZVxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIHRoYXQgd2UgYWx3YXlzIHJldHVybiBmYWxzZSBpZlxuICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bSB8fCBod20gPT09IDAgPyBod20gOiBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gfiB+dGhpcy5oaWdoV2F0ZXJNYXJrO1xuXG4gIHRoaXMubmVlZERyYWluID0gZmFsc2U7XG4gIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7XG4gIC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cbiAgdmFyIG5vRGVjb2RlID0gb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG4gIHRoaXMubGVuZ3RoID0gMDtcblxuICAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcblxuICAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG4gIHRoaXMuY29ya2VkID0gMDtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuICB0aGlzLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG4gIHRoaXMub253cml0ZSA9IGZ1bmN0aW9uIChlcikge1xuICAgIG9ud3JpdGUoc3RyZWFtLCBlcik7XG4gIH07XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG5cbiAgLy8gdGhlIGFtb3VudCB0aGF0IGlzIGJlaW5nIHdyaXR0ZW4gd2hlbiBfd3JpdGUgaXMgY2FsbGVkLlxuICB0aGlzLndyaXRlbGVuID0gMDtcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuXG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiB3cml0YWJsZVN0YXRlR2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0aG91Z2ggdGhleSdyZSBub3RcbiAgLy8gaW5zdGFuY2VvZiBXcml0YWJsZSwgdGhleSdyZSBpbnN0YW5jZW9mIFJlYWRhYmxlLlxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgV3JpdGFibGUpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlJykpO1xufTtcblxuZnVuY3Rpb24gd3JpdGVBZnRlckVuZChzdHJlYW0sIGNiKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIElmIHdlIGdldCBzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBidWZmZXIsIHN0cmluZywgbnVsbCwgb3IgdW5kZWZpbmVkLFxuLy8gYW5kIHdlJ3JlIG5vdCBpbiBvYmplY3RNb2RlLCB0aGVuIHRoYXQncyBhbiBlcnJvci5cbi8vIE90aGVyd2lzZSBzdHJlYW0gY2h1bmtzIGFyZSBhbGwgY29uc2lkZXJlZCB0byBiZSBvZiBsZW5ndGg9MSwgYW5kIHRoZVxuLy8gd2F0ZXJtYXJrcyBkZXRlcm1pbmUgaG93IG1hbnkgb2JqZWN0cyB0byBrZWVwIGluIHRoZSBidWZmZXIsIHJhdGhlciB0aGFuXG4vLyBob3cgbWFueSBieXRlcyBvciBjaGFyYWN0ZXJzLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG4gIC8vIEFsd2F5cyB0aHJvdyBlcnJvciBpZiBhIG51bGwgaXMgd3JpdHRlblxuICAvLyBpZiB3ZSBhcmUgbm90IGluIG9iamVjdCBtb2RlIHRoZW4gdGhyb3dcbiAgLy8gaWYgaXQgaXMgbm90IGEgYnVmZmVyLCBzdHJpbmcsIG9yIHVuZGVmaW5lZC5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmICh2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKTtcbiAgfVxufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykge1xuICAvLyBub2RlOjpQYXJzZUVuY29kaW5nKCkgcmVxdWlyZXMgbG93ZXIgY2FzZS5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIGVuY29kaW5nID0gZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKSB7XG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgY2h1bmsgPSBidWZmZXJTaGltLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbi8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG5ldyBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuICBpZiAoc3luYykgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7ZWxzZSBjYihlcik7XG5cbiAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgYnVmZmVyW2NvdW50XSA9IGVudHJ5O1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xufTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkKSB7XG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBuZWVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG4gIGlmIChuZWVkKSB7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZWVkO1xufVxuXG5mdW5jdGlvbiBlbmRXcml0YWJsZShzdHJlYW0sIHN0YXRlLCBjYikge1xuICBzdGF0ZS5lbmRpbmcgPSB0cnVlO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwcm9jZXNzTmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG4vLyBJdCBzZWVtcyBhIGxpbmtlZCBsaXN0IGJ1dCBpdCBpcyBub3Rcbi8vIHRoZXJlIHdpbGwgYmUgb25seSAyIG9mIHRoZXNlIGZvciBlYWNoIHN0cmVhbVxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuXG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKGVycikge1xuICAgIHZhciBlbnRyeSA9IF90aGlzLmVudHJ5O1xuICAgIF90aGlzLmVudHJ5ID0gbnVsbDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgICBjYihlcnIpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgIH1cbiAgICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IF90aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBfdGhpcztcbiAgICB9XG4gIH07XG59IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qc1wiKVxuIiwidmFyIFN0cmVhbSA9IChmdW5jdGlvbiAoKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTsgLy8gaGFjayB0byBmaXggYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3VlIHdoZW4gdXNlZCB3aXRoIGJyb3dzZXJpZnlcbiAgfSBjYXRjaChfKXt9XG59KCkpO1xuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBTdHJlYW0gfHwgZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5cbmlmICghcHJvY2Vzcy5icm93c2VyICYmIHByb2Nlc3MuZW52LlJFQURBQkxFX1NUUkVBTSA9PT0gJ2Rpc2FibGUnICYmIFN0cmVhbSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzXCIpXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzXCIpXG4iLCIvKlxuQ3J5cHRvSlMgdjMuMS4yXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbi8qKiBAcHJlc2VydmVcbihjKSAyMDEyIGJ5IEPDqWRyaWMgTWVzbmlsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLy8gY29uc3RhbnRzIHRhYmxlXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSwgMHg4RjFCQkNEQywgMHhBOTUzRkQ0RV1cbnZhciBociA9IFsweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBieXRlc1RvV29yZHMgKGJ5dGVzKSB7XG4gIHZhciB3b3JkcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrLCBiICs9IDgpIHtcbiAgICB3b3Jkc1tiID4+PiA1XSB8PSBieXRlc1tpXSA8PCAoMjQgLSBiICUgMzIpXG4gIH1cbiAgcmV0dXJuIHdvcmRzXG59XG5cbmZ1bmN0aW9uIHdvcmRzVG9CeXRlcyAod29yZHMpIHtcbiAgdmFyIGJ5dGVzID0gW11cbiAgZm9yICh2YXIgYiA9IDA7IGIgPCB3b3Jkcy5sZW5ndGggKiAzMjsgYiArPSA4KSB7XG4gICAgYnl0ZXMucHVzaCgod29yZHNbYiA+Pj4gNV0gPj4+ICgyNCAtIGIgJSAzMikpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0Jsb2NrIChILCBNLCBvZmZzZXQpIHtcbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaVxuICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV1cblxuICAgIC8vIFN3YXBcbiAgICBNW29mZnNldF9pXSA9IChcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gICAgKVxuICB9XG5cbiAgLy8gV29ya2luZyB2YXJpYWJsZXNcbiAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbFxuICB2YXIgYXIsIGJyLCBjciwgZHIsIGVyXG5cbiAgYXIgPSBhbCA9IEhbMF1cbiAgYnIgPSBibCA9IEhbMV1cbiAgY3IgPSBjbCA9IEhbMl1cbiAgZHIgPSBkbCA9IEhbM11cbiAgZXIgPSBlbCA9IEhbNF1cblxuICAvLyBjb21wdXRhdGlvblxuICB2YXIgdFxuICBmb3IgKGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHQgPSAoYWwgKyBNW29mZnNldCArIHpsW2ldXSkgfCAwXG4gICAgaWYgKGkgPCAxNikge1xuICAgICAgdCArPSBmMShibCwgY2wsIGRsKSArIGhsWzBdXG4gICAgfSBlbHNlIGlmIChpIDwgMzIpIHtcbiAgICAgIHQgKz0gZjIoYmwsIGNsLCBkbCkgKyBobFsxXVxuICAgIH0gZWxzZSBpZiAoaSA8IDQ4KSB7XG4gICAgICB0ICs9IGYzKGJsLCBjbCwgZGwpICsgaGxbMl1cbiAgICB9IGVsc2UgaWYgKGkgPCA2NCkge1xuICAgICAgdCArPSBmNChibCwgY2wsIGRsKSArIGhsWzNdXG4gICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuICAgICAgdCArPSBmNShibCwgY2wsIGRsKSArIGhsWzRdXG4gICAgfVxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNsW2ldKVxuICAgIHQgPSAodCArIGVsKSB8IDBcbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdFxuXG4gICAgdCA9IChhciArIE1bb2Zmc2V0ICsgenJbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGY1KGJyLCBjciwgZHIpICsgaHJbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmNChiciwgY3IsIGRyKSArIGhyWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYnIsIGNyLCBkcikgKyBoclsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGYyKGJyLCBjciwgZHIpICsgaHJbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGYxKGJyLCBjciwgZHIpICsgaHJbNF1cbiAgICB9XG5cbiAgICB0ID0gdCB8IDBcbiAgICB0ID0gcm90bCh0LCBzcltpXSlcbiAgICB0ID0gKHQgKyBlcikgfCAwXG4gICAgYXIgPSBlclxuICAgIGVyID0gZHJcbiAgICBkciA9IHJvdGwoY3IsIDEwKVxuICAgIGNyID0gYnJcbiAgICBiciA9IHRcbiAgfVxuXG4gIC8vIGludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG4gIHQgPSAoSFsxXSArIGNsICsgZHIpIHwgMFxuICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKSB8IDBcbiAgSFsyXSA9IChIWzNdICsgZWwgKyBhcikgfCAwXG4gIEhbM10gPSAoSFs0XSArIGFsICsgYnIpIHwgMFxuICBIWzRdID0gKEhbMF0gKyBibCArIGNyKSB8IDBcbiAgSFswXSA9IHRcbn1cblxuZnVuY3Rpb24gZjEgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoeSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGYyICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh5KSkgfCAoKH54KSAmICh6KSkpXG59XG5cbmZ1bmN0aW9uIGYzICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGY0ICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh6KSkgfCAoKHkpICYgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gZjUgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoKHkpIHwgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIHJpcGVtZDE2MCAobWVzc2FnZSkge1xuICB2YXIgSCA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2LCAweEMzRDJFMUYwXVxuXG4gIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gbmV3IEJ1ZmZlcihtZXNzYWdlLCAndXRmOCcpXG4gIH1cblxuICB2YXIgbSA9IGJ5dGVzVG9Xb3JkcyhtZXNzYWdlKVxuXG4gIHZhciBuQml0c0xlZnQgPSBtZXNzYWdlLmxlbmd0aCAqIDhcbiAgdmFyIG5CaXRzVG90YWwgPSBtZXNzYWdlLmxlbmd0aCAqIDhcblxuICAvLyBBZGQgcGFkZGluZ1xuICBtW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMilcbiAgbVsoKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuICAgICgoKG5CaXRzVG90YWwgPDwgOCkgfCAobkJpdHNUb3RhbCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAoKChuQml0c1RvdGFsIDw8IDI0KSB8IChuQml0c1RvdGFsID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICApXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSArPSAxNikge1xuICAgIHByb2Nlc3NCbG9jayhILCBtLCBpKVxuICB9XG5cbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIC8vIHNob3J0Y3V0XG4gICAgdmFyIEhfaSA9IEhbaV1cblxuICAgIC8vIFN3YXBcbiAgICBIW2ldID0gKCgoSF9pIDw8IDgpIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICB9XG5cbiAgdmFyIGRpZ2VzdGJ5dGVzID0gd29yZHNUb0J5dGVzKEgpXG4gIHJldHVybiBuZXcgQnVmZmVyKGRpZ2VzdGJ5dGVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJpcGVtZDE2MFxuIiwiLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBuZXcgQnVmZmVyKGJsb2NrU2l6ZSlcbiAgdGhpcy5fZmluYWxTaXplID0gZmluYWxTaXplXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9sZW4gPSAwXG4gIHRoaXMuX3MgPSAwXG59XG5cbkhhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgbCA9IHRoaXMuX2xlbiArPSBkYXRhLmxlbmd0aFxuICB2YXIgcyA9IHRoaXMuX3MgfHwgMFxuICB2YXIgZiA9IDBcbiAgdmFyIGJ1ZmZlciA9IHRoaXMuX2Jsb2NrXG5cbiAgd2hpbGUgKHMgPCBsKSB7XG4gICAgdmFyIHQgPSBNYXRoLm1pbihkYXRhLmxlbmd0aCwgZiArIHRoaXMuX2Jsb2NrU2l6ZSAtIChzICUgdGhpcy5fYmxvY2tTaXplKSlcbiAgICB2YXIgY2ggPSAodCAtIGYpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoOyBpKyspIHtcbiAgICAgIGJ1ZmZlclsocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgKyBpXSA9IGRhdGFbaSArIGZdXG4gICAgfVxuXG4gICAgcyArPSBjaFxuICAgIGYgKz0gY2hcblxuICAgIGlmICgocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShidWZmZXIpXG4gICAgfVxuICB9XG4gIHRoaXMuX3MgPSBzXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICAvLyBTdXBwb3NlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgTSwgaW4gYml0cywgaXMgbFxuICB2YXIgbCA9IHRoaXMuX2xlbiAqIDhcblxuICAvLyBBcHBlbmQgdGhlIGJpdCAxIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2VcbiAgdGhpcy5fYmxvY2tbdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXSA9IDB4ODBcblxuICAvLyBhbmQgdGhlbiBrIHplcm8gYml0cywgd2hlcmUgayBpcyB0aGUgc21hbGxlc3Qgbm9uLW5lZ2F0aXZlIHNvbHV0aW9uIHRvIHRoZSBlcXVhdGlvbiAobCArIDEgKyBrKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemUgKyAxKVxuXG4gIGlmIChsICUgKHRoaXMuX2Jsb2NrU2l6ZSAqIDgpID49IHRoaXMuX2ZpbmFsU2l6ZSAqIDgpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgLy8gdG8gdGhpcyBhcHBlbmQgdGhlIGJsb2NrIHdoaWNoIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgbCB3cml0dGVuIGluIGJpbmFyeVxuICAvLyBUT0RPOiBoYW5kbGUgY2FzZSB3aGVyZSBsIGlzID4gTWF0aC5wb3coMiwgMjkpXG4gIHRoaXMuX2Jsb2NrLndyaXRlSW50MzJCRShsLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIHZhciBoYXNoID0gdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSB8fCB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0xLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVmVyc2lvbiAyLjFhIENvcHlyaWdodCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDAyLlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlXG4gKiBTZWUgaHR0cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgZGV0YWlscy5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDY0KVxuXG5mdW5jdGlvbiBTaGEyMjQgKCkge1xuICB0aGlzLmluaXQoKVxuXG4gIHRoaXMuX3cgPSBXIC8vIG5ldyBBcnJheSg2NClcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEyMjQsIFNoYTI1NilcblxuU2hhMjI0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHhjMTA1OWVkOFxuICB0aGlzLl9iID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nID0gMHg2NGY5OGZhN1xuICB0aGlzLl9oID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTIyNC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigzMilcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5faCwgMjgpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyNTZcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXVxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTUxMiAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGE1MTIsIEhhc2gpXG5cblNoYTUxMi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweDZhMDllNjY3XG4gIHRoaXMuX2JoID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jaCA9IDB4M2M2ZWYzNzJcbiAgdGhpcy5fZGggPSAweGE1NGZmNTNhXG4gIHRoaXMuX2VoID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9maCA9IDB4OWIwNTY4OGNcbiAgdGhpcy5fZ2ggPSAweDFmODNkOWFiXG4gIHRoaXMuX2hoID0gMHg1YmUwY2QxOVxuXG4gIHRoaXMuX2FsID0gMHhmM2JjYzkwOFxuICB0aGlzLl9ibCA9IDB4ODRjYWE3M2JcbiAgdGhpcy5fY2wgPSAweGZlOTRmODJiXG4gIHRoaXMuX2RsID0gMHg1ZjFkMzZmMVxuICB0aGlzLl9lbCA9IDB4YWRlNjgyZDFcbiAgdGhpcy5fZmwgPSAweDJiM2U2YzFmXG4gIHRoaXMuX2dsID0gMHhmYjQxYmQ2YlxuICB0aGlzLl9obCA9IDB4MTM3ZTIxNzlcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBDaCAoeCwgeSwgeikge1xuICByZXR1cm4geiBeICh4ICYgKHkgXiB6KSlcbn1cblxuZnVuY3Rpb24gbWFqICh4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKVxufVxuXG5mdW5jdGlvbiBzaWdtYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMjggfCB4bCA8PCA0KSBeICh4bCA+Pj4gMiB8IHggPDwgMzApIF4gKHhsID4+PiA3IHwgeCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE0IHwgeGwgPDwgMTgpIF4gKHggPj4+IDE4IHwgeGwgPDwgMTQpIF4gKHhsID4+PiA5IHwgeCA8PCAyMylcbn1cblxuZnVuY3Rpb24gR2FtbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3KVxufVxuXG5mdW5jdGlvbiBHYW1tYTBsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3IHwgeGwgPDwgMjUpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMWwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2IHwgeGwgPDwgMjYpXG59XG5cbmZ1bmN0aW9uIGdldENhcnJ5IChhLCBiKSB7XG4gIHJldHVybiAoYSA+Pj4gMCkgPCAoYiA+Pj4gMCkgPyAxIDogMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYWggPSB0aGlzLl9haCB8IDBcbiAgdmFyIGJoID0gdGhpcy5fYmggfCAwXG4gIHZhciBjaCA9IHRoaXMuX2NoIHwgMFxuICB2YXIgZGggPSB0aGlzLl9kaCB8IDBcbiAgdmFyIGVoID0gdGhpcy5fZWggfCAwXG4gIHZhciBmaCA9IHRoaXMuX2ZoIHwgMFxuICB2YXIgZ2ggPSB0aGlzLl9naCB8IDBcbiAgdmFyIGhoID0gdGhpcy5faGggfCAwXG5cbiAgdmFyIGFsID0gdGhpcy5fYWwgfCAwXG4gIHZhciBibCA9IHRoaXMuX2JsIHwgMFxuICB2YXIgY2wgPSB0aGlzLl9jbCB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZGwgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2VsIHwgMFxuICB2YXIgZmwgPSB0aGlzLl9mbCB8IDBcbiAgdmFyIGdsID0gdGhpcy5fZ2wgfCAwXG4gIHZhciBobCA9IHRoaXMuX2hsIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkgKz0gMikge1xuICAgIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICAgIFdbaSArIDFdID0gTS5yZWFkSW50MzJCRShpICogNCArIDQpXG4gIH1cbiAgZm9yICg7IGkgPCAxNjA7IGkgKz0gMikge1xuICAgIHZhciB4aCA9IFdbaSAtIDE1ICogMl1cbiAgICB2YXIgeGwgPSBXW2kgLSAxNSAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTAgPSBHYW1tYTAoeGgsIHhsKVxuICAgIHZhciBnYW1tYTBsID0gR2FtbWEwbCh4bCwgeGgpXG5cbiAgICB4aCA9IFdbaSAtIDIgKiAyXVxuICAgIHhsID0gV1tpIC0gMiAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTEgPSBHYW1tYTEoeGgsIHhsKVxuICAgIHZhciBnYW1tYTFsID0gR2FtbWExbCh4bCwgeGgpXG5cbiAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cbiAgICB2YXIgV2k3aCA9IFdbaSAtIDcgKiAyXVxuICAgIHZhciBXaTdsID0gV1tpIC0gNyAqIDIgKyAxXVxuXG4gICAgdmFyIFdpMTZoID0gV1tpIC0gMTYgKiAyXVxuICAgIHZhciBXaTE2bCA9IFdbaSAtIDE2ICogMiArIDFdXG5cbiAgICB2YXIgV2lsID0gKGdhbW1hMGwgKyBXaTdsKSB8IDBcbiAgICB2YXIgV2loID0gKGdhbW1hMCArIFdpN2ggKyBnZXRDYXJyeShXaWwsIGdhbW1hMGwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgZ2FtbWExbCkgfCAwXG4gICAgV2loID0gKFdpaCArIGdhbW1hMSArIGdldENhcnJ5KFdpbCwgZ2FtbWExbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBXaTE2bCkgfCAwXG4gICAgV2loID0gKFdpaCArIFdpMTZoICsgZ2V0Q2FycnkoV2lsLCBXaTE2bCkpIHwgMFxuXG4gICAgV1tpXSA9IFdpaFxuICAgIFdbaSArIDFdID0gV2lsXG4gIH1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgV2loID0gV1tqXVxuICAgIFdpbCA9IFdbaiArIDFdXG5cbiAgICB2YXIgbWFqaCA9IG1haihhaCwgYmgsIGNoKVxuICAgIHZhciBtYWpsID0gbWFqKGFsLCBibCwgY2wpXG5cbiAgICB2YXIgc2lnbWEwaCA9IHNpZ21hMChhaCwgYWwpXG4gICAgdmFyIHNpZ21hMGwgPSBzaWdtYTAoYWwsIGFoKVxuICAgIHZhciBzaWdtYTFoID0gc2lnbWExKGVoLCBlbClcbiAgICB2YXIgc2lnbWExbCA9IHNpZ21hMShlbCwgZWgpXG5cbiAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbal0gKyBXW2pdXG4gICAgdmFyIEtpaCA9IEtbal1cbiAgICB2YXIgS2lsID0gS1tqICsgMV1cblxuICAgIHZhciBjaGggPSBDaChlaCwgZmgsIGdoKVxuICAgIHZhciBjaGwgPSBDaChlbCwgZmwsIGdsKVxuXG4gICAgdmFyIHQxbCA9IChobCArIHNpZ21hMWwpIHwgMFxuICAgIHZhciB0MWggPSAoaGggKyBzaWdtYTFoICsgZ2V0Q2FycnkodDFsLCBobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBjaGwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBjaGggKyBnZXRDYXJyeSh0MWwsIGNobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBLaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBLaWggKyBnZXRDYXJyeSh0MWwsIEtpbCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBXaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBXaWggKyBnZXRDYXJyeSh0MWwsIFdpbCkpIHwgMFxuXG4gICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcbiAgICB2YXIgdDJsID0gKHNpZ21hMGwgKyBtYWpsKSB8IDBcbiAgICB2YXIgdDJoID0gKHNpZ21hMGggKyBtYWpoICsgZ2V0Q2FycnkodDJsLCBzaWdtYTBsKSkgfCAwXG5cbiAgICBoaCA9IGdoXG4gICAgaGwgPSBnbFxuICAgIGdoID0gZmhcbiAgICBnbCA9IGZsXG4gICAgZmggPSBlaFxuICAgIGZsID0gZWxcbiAgICBlbCA9IChkbCArIHQxbCkgfCAwXG4gICAgZWggPSAoZGggKyB0MWggKyBnZXRDYXJyeShlbCwgZGwpKSB8IDBcbiAgICBkaCA9IGNoXG4gICAgZGwgPSBjbFxuICAgIGNoID0gYmhcbiAgICBjbCA9IGJsXG4gICAgYmggPSBhaFxuICAgIGJsID0gYWxcbiAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMFxuICAgIGFoID0gKHQxaCArIHQyaCArIGdldENhcnJ5KGFsLCB0MWwpKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2FsID0gKHRoaXMuX2FsICsgYWwpIHwgMFxuICB0aGlzLl9ibCA9ICh0aGlzLl9ibCArIGJsKSB8IDBcbiAgdGhpcy5fY2wgPSAodGhpcy5fY2wgKyBjbCkgfCAwXG4gIHRoaXMuX2RsID0gKHRoaXMuX2RsICsgZGwpIHwgMFxuICB0aGlzLl9lbCA9ICh0aGlzLl9lbCArIGVsKSB8IDBcbiAgdGhpcy5fZmwgPSAodGhpcy5fZmwgKyBmbCkgfCAwXG4gIHRoaXMuX2dsID0gKHRoaXMuX2dsICsgZ2wpIHwgMFxuICB0aGlzLl9obCA9ICh0aGlzLl9obCArIGhsKSB8IDBcblxuICB0aGlzLl9haCA9ICh0aGlzLl9haCArIGFoICsgZ2V0Q2FycnkodGhpcy5fYWwsIGFsKSkgfCAwXG4gIHRoaXMuX2JoID0gKHRoaXMuX2JoICsgYmggKyBnZXRDYXJyeSh0aGlzLl9ibCwgYmwpKSB8IDBcbiAgdGhpcy5fY2ggPSAodGhpcy5fY2ggKyBjaCArIGdldENhcnJ5KHRoaXMuX2NsLCBjbCkpIHwgMFxuICB0aGlzLl9kaCA9ICh0aGlzLl9kaCArIGRoICsgZ2V0Q2FycnkodGhpcy5fZGwsIGRsKSkgfCAwXG4gIHRoaXMuX2VoID0gKHRoaXMuX2VoICsgZWggKyBnZXRDYXJyeSh0aGlzLl9lbCwgZWwpKSB8IDBcbiAgdGhpcy5fZmggPSAodGhpcy5fZmggKyBmaCArIGdldENhcnJ5KHRoaXMuX2ZsLCBmbCkpIHwgMFxuICB0aGlzLl9naCA9ICh0aGlzLl9naCArIGdoICsgZ2V0Q2FycnkodGhpcy5fZ2wsIGdsKSkgfCAwXG4gIHRoaXMuX2hoID0gKHRoaXMuX2hoICsgaGggKyBnZXRDYXJyeSh0aGlzLl9obCwgaGwpKSB8IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzJyk7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuNC54XG5TdHJlYW0uU3RyZWFtID0gU3RyZWFtO1xuXG5cblxuLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudFxuLy8gcGFydCBvZiB0aGlzIGNsYXNzKSBpcyBvdmVycmlkZGVuIGluIHRoZSBSZWFkYWJsZSBjbGFzcy5cblxuZnVuY3Rpb24gU3RyZWFtKCkge1xuICBFRS5jYWxsKHRoaXMpO1xufVxuXG5TdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIHZhciBzb3VyY2UgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGlmIChkZXN0LndyaXRhYmxlKSB7XG4gICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkge1xuICAgICAgICBzb3VyY2UucGF1c2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpO1xuXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICAvLyBJZiB0aGUgJ2VuZCcgb3B0aW9uIGlzIG5vdCBzdXBwbGllZCwgZGVzdC5lbmQoKSB3aWxsIGJlIGNhbGxlZCB3aGVuXG4gIC8vIHNvdXJjZSBnZXRzIHRoZSAnZW5kJyBvciAnY2xvc2UnIGV2ZW50cy4gIE9ubHkgZGVzdC5lbmQoKSBvbmNlLlxuICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHtcbiAgICBzb3VyY2Uub24oJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2Uub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH1cblxuICB2YXIgZGlkT25FbmQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgc3RyZWFtIGVycm9yIGluIHBpcGUuXG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIHJlbW92ZSBhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG4gIH1cblxuICBzb3VyY2Uub24oJ2VuZCcsIGNsZWFudXApO1xuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpO1xuXG4gIC8vIEFsbG93IGZvciB1bml4LWxpa2UgdXNhZ2U6IEEucGlwZShCKS5waXBlKEMpXG4gIHJldHVybiBkZXN0O1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgaXNCdWZmZXJFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nXG4gIHx8IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICBjYXNlICdoZXgnOiBjYXNlICd1dGY4JzogY2FzZSAndXRmLTgnOiBjYXNlICdhc2NpaSc6IGNhc2UgJ2JpbmFyeSc6IGNhc2UgJ2Jhc2U2NCc6IGNhc2UgJ3VjczInOiBjYXNlICd1Y3MtMic6IGNhc2UgJ3V0ZjE2bGUnOiBjYXNlICd1dGYtMTZsZSc6IGNhc2UgJ3Jhdyc6IHJldHVybiB0cnVlO1xuICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgIH1cbiAgICAgfVxuXG5cbmZ1bmN0aW9uIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIGlmIChlbmNvZGluZyAmJiAhaXNCdWZmZXJFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIH1cbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLiBDRVNVLTggaXMgaGFuZGxlZCBhcyBwYXJ0IG9mIHRoZSBVVEYtOCBlbmNvZGluZy5cbi8vXG4vLyBAVE9ETyBIYW5kbGluZyBhbGwgZW5jb2RpbmdzIGluc2lkZSBhIHNpbmdsZSBvYmplY3QgbWFrZXMgaXQgdmVyeSBkaWZmaWN1bHRcbi8vIHRvIHJlYXNvbiBhYm91dCB0aGlzIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBzcGxpdCB1cCBpbiB0aGUgZnV0dXJlLlxuLy8gQFRPRE8gVGhlcmUgc2hvdWxkIGJlIGEgdXRmOC1zdHJpY3QgZW5jb2RpbmcgdGhhdCByZWplY3RzIGludmFsaWQgVVRGLTggY29kZVxuLy8gcG9pbnRzIGFzIHVzZWQgYnkgQ0VTVS04LlxudmFyIFN0cmluZ0RlY29kZXIgPSBleHBvcnRzLlN0cmluZ0RlY29kZXIgPSBmdW5jdGlvbihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9dLywgJycpO1xuICBhc3NlcnRFbmNvZGluZyhlbmNvZGluZyk7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgLy8gQ0VTVS04IHJlcHJlc2VudHMgZWFjaCBvZiBTdXJyb2dhdGUgUGFpciBieSAzLWJ5dGVzXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICAvLyBVVEYtMTYgcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDItYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDI7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAvLyBCYXNlLTY0IHN0b3JlcyAzIGJ5dGVzIGluIDQgY2hhcnMsIGFuZCBwYWRzIHRoZSByZW1haW5kZXIuXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBwYXNzVGhyb3VnaFdyaXRlO1xuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRW5vdWdoIHNwYWNlIHRvIHN0b3JlIGFsbCBieXRlcyBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIFVURi04IG5lZWRzIDRcbiAgLy8gYnl0ZXMsIGJ1dCBDRVNVLTggbWF5IHJlcXVpcmUgdXAgdG8gNiAoMyBieXRlcyBwZXIgc3Vycm9nYXRlKS5cbiAgdGhpcy5jaGFyQnVmZmVyID0gbmV3IEJ1ZmZlcig2KTtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJSZWNlaXZlZCA9IDA7XG4gIC8vIE51bWJlciBvZiBieXRlcyBleHBlY3RlZCBmb3IgdGhlIGN1cnJlbnQgaW5jb21wbGV0ZSBtdWx0aS1ieXRlIGNoYXJhY3Rlci5cbiAgdGhpcy5jaGFyTGVuZ3RoID0gMDtcbn07XG5cblxuLy8gd3JpdGUgZGVjb2RlcyB0aGUgZ2l2ZW4gYnVmZmVyIGFuZCByZXR1cm5zIGl0IGFzIEpTIHN0cmluZyB0aGF0IGlzXG4vLyBndWFyYW50ZWVkIHRvIG5vdCBjb250YWluIGFueSBwYXJ0aWFsIG11bHRpLWJ5dGUgY2hhcmFjdGVycy4gQW55IHBhcnRpYWxcbi8vIGNoYXJhY3RlciBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgaXMgYnVmZmVyZWQgdXAsIGFuZCB3aWxsIGJlXG4vLyByZXR1cm5lZCB3aGVuIGNhbGxpbmcgd3JpdGUgYWdhaW4gd2l0aCB0aGUgcmVtYWluaW5nIGJ5dGVzLlxuLy9cbi8vIE5vdGU6IENvbnZlcnRpbmcgYSBCdWZmZXIgY29udGFpbmluZyBhbiBvcnBoYW4gc3Vycm9nYXRlIHRvIGEgU3RyaW5nXG4vLyBjdXJyZW50bHkgd29ya3MsIGJ1dCBjb252ZXJ0aW5nIGEgU3RyaW5nIHRvIGEgQnVmZmVyICh2aWEgYG5ldyBCdWZmZXJgLCBvclxuLy8gQnVmZmVyI3dyaXRlKSB3aWxsIHJlcGxhY2UgaW5jb21wbGV0ZSBzdXJyb2dhdGVzIHdpdGggdGhlIHVuaWNvZGVcbi8vIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gU2VlIGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTIxMTczMDA5LyAuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgY2hhclN0ciA9ICcnO1xuICAvLyBpZiBvdXIgbGFzdCB3cml0ZSBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgbXVsdGlieXRlIGNoYXJhY3RlclxuICB3aGlsZSAodGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IHJlbWFpbmluZyBieXRlcyB0aGlzIGJ1ZmZlciBoYXMgdG8gb2ZmZXIgZm9yIHRoaXMgY2hhclxuICAgIHZhciBhdmFpbGFibGUgPSAoYnVmZmVyLmxlbmd0aCA+PSB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCkgP1xuICAgICAgICB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCA6XG4gICAgICAgIGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAvLyBhZGQgdGhlIG5ldyBieXRlcyB0byB0aGUgY2hhciBidWZmZXJcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIHRoaXMuY2hhclJlY2VpdmVkLCAwLCBhdmFpbGFibGUpO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IGF2YWlsYWJsZTtcblxuICAgIGlmICh0aGlzLmNoYXJSZWNlaXZlZCA8IHRoaXMuY2hhckxlbmd0aCkge1xuICAgICAgLy8gc3RpbGwgbm90IGVub3VnaCBjaGFycyBpbiB0aGlzIGJ1ZmZlcj8gd2FpdCBmb3IgbW9yZSAuLi5cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYnl0ZXMgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50IGNoYXJhY3RlciBmcm9tIHRoZSBidWZmZXJcbiAgICBidWZmZXIgPSBidWZmZXIuc2xpY2UoYXZhaWxhYmxlLCBidWZmZXIubGVuZ3RoKTtcblxuICAgIC8vIGdldCB0aGUgY2hhcmFjdGVyIHRoYXQgd2FzIHNwbGl0XG4gICAgY2hhclN0ciA9IHRoaXMuY2hhckJ1ZmZlci5zbGljZSgwLCB0aGlzLmNoYXJMZW5ndGgpLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xuXG4gICAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICAgIHZhciBjaGFyQ29kZSA9IGNoYXJTdHIuY2hhckNvZGVBdChjaGFyU3RyLmxlbmd0aCAtIDEpO1xuICAgIGlmIChjaGFyQ29kZSA+PSAweEQ4MDAgJiYgY2hhckNvZGUgPD0gMHhEQkZGKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggKz0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgICAgY2hhclN0ciA9ICcnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHRoaXMuY2hhclJlY2VpdmVkID0gdGhpcy5jaGFyTGVuZ3RoID0gMDtcblxuICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtb3JlIGJ5dGVzIGluIHRoaXMgYnVmZmVyLCBqdXN0IGVtaXQgb3VyIGNoYXJcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNoYXJTdHI7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIGFuZCBzZXQgY2hhckxlbmd0aCAvIGNoYXJSZWNlaXZlZFxuICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcik7XG5cbiAgdmFyIGVuZCA9IGJ1ZmZlci5sZW5ndGg7XG4gIGlmICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBidWZmZXIgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIGJ5dGVzIHdlIGdvdFxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkLCBlbmQpO1xuICAgIGVuZCAtPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgfVxuXG4gIGNoYXJTdHIgKz0gYnVmZmVyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIGVuZCk7XG5cbiAgdmFyIGVuZCA9IGNoYXJTdHIubGVuZ3RoIC0gMTtcbiAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGVuZCk7XG4gIC8vIENFU1UtODogbGVhZCBzdXJyb2dhdGUgKEQ4MDAtREJGRikgaXMgYWxzbyB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXJcbiAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuc3Vycm9nYXRlU2l6ZTtcbiAgICB0aGlzLmNoYXJMZW5ndGggKz0gc2l6ZTtcbiAgICB0aGlzLmNoYXJSZWNlaXZlZCArPSBzaXplO1xuICAgIHRoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgc2l6ZSwgMCwgc2l6ZSk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCAwLCBzaXplKTtcbiAgICByZXR1cm4gY2hhclN0ci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgfVxuXG4gIC8vIG9yIGp1c3QgZW1pdCB0aGUgY2hhclN0clxuICByZXR1cm4gY2hhclN0cjtcbn07XG5cbi8vIGRldGVjdEluY29tcGxldGVDaGFyIGRldGVybWluZXMgaWYgdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXIgYXRcbi8vIHRoZSBlbmQgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gSWYgc28sIGl0IHNldHMgdGhpcy5jaGFyTGVuZ3RoIHRvIHRoZSBieXRlXG4vLyBsZW5ndGggdGhhdCBjaGFyYWN0ZXIsIGFuZCBzZXRzIHRoaXMuY2hhclJlY2VpdmVkIHRvIHRoZSBudW1iZXIgb2YgYnl0ZXNcbi8vIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjaGFyYWN0ZXIuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgd2UgaGF2ZSB0byBjaGVjayBhdCB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyXG4gIHZhciBpID0gKGJ1ZmZlci5sZW5ndGggPj0gMykgPyAzIDogYnVmZmVyLmxlbmd0aDtcblxuICAvLyBGaWd1cmUgb3V0IGlmIG9uZSBvZiB0aGUgbGFzdCBpIGJ5dGVzIG9mIG91ciBidWZmZXIgYW5ub3VuY2VzIGFuXG4gIC8vIGluY29tcGxldGUgY2hhci5cbiAgZm9yICg7IGkgPiAwOyBpLS0pIHtcbiAgICB2YXIgYyA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gaV07XG5cbiAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOCNEZXNjcmlwdGlvblxuXG4gICAgLy8gMTEwWFhYWFhcbiAgICBpZiAoaSA9PSAxICYmIGMgPj4gNSA9PSAweDA2KSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMFhYWFhcbiAgICBpZiAoaSA8PSAyICYmIGMgPj4gNCA9PSAweDBFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAzO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMTBYWFhcbiAgICBpZiAoaSA8PSAzICYmIGMgPj4gMyA9PSAweDFFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSA0O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gaTtcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gJyc7XG4gIGlmIChidWZmZXIgJiYgYnVmZmVyLmxlbmd0aClcbiAgICByZXMgPSB0aGlzLndyaXRlKGJ1ZmZlcik7XG5cbiAgaWYgKHRoaXMuY2hhclJlY2VpdmVkKSB7XG4gICAgdmFyIGNyID0gdGhpcy5jaGFyUmVjZWl2ZWQ7XG4gICAgdmFyIGJ1ZiA9IHRoaXMuY2hhckJ1ZmZlcjtcbiAgICB2YXIgZW5jID0gdGhpcy5lbmNvZGluZztcbiAgICByZXMgKz0gYnVmLnNsaWNlKDAsIGNyKS50b1N0cmluZyhlbmMpO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIHBhc3NUaHJvdWdoV3JpdGUoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDI7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMiA6IDA7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcikge1xuICB0aGlzLmNoYXJSZWNlaXZlZCA9IGJ1ZmZlci5sZW5ndGggJSAzO1xuICB0aGlzLmNoYXJMZW5ndGggPSB0aGlzLmNoYXJSZWNlaXZlZCA/IDMgOiAwO1xufVxuIiwiXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlO1xuXG4vKipcbiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKiBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudGhyb3dEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50cmFjZURlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIGZ1bmN0aW9uIHRvIGRlcHJlY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBuZXcgXCJkZXByZWNhdGVkXCIgdmVyc2lvbiBvZiBgZm5gXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZSAoZm4sIG1zZykge1xuICBpZiAoY29uZmlnKCdub0RlcHJlY2F0aW9uJykpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnKCd0cmFjZURlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBgbG9jYWxTdG9yYWdlYCBmb3IgYm9vbGVhbiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29uZmlnIChuYW1lKSB7XG4gIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzXG4gIHRyeSB7XG4gICAgaWYgKCFnbG9iYWwubG9jYWxTdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07XG4gIGlmIChudWxsID09IHZhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuIiwidmFyIGluZGV4T2YgPSByZXF1aXJlKCdpbmRleG9mJyk7XG5cbnZhciBPYmplY3Rfa2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICBpZiAoT2JqZWN0LmtleXMpIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgcmVzLnB1c2goa2V5KVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn07XG5cbnZhciBmb3JFYWNoID0gZnVuY3Rpb24gKHhzLCBmbikge1xuICAgIGlmICh4cy5mb3JFYWNoKSByZXR1cm4geHMuZm9yRWFjaChmbilcbiAgICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm4oeHNbaV0sIGksIHhzKTtcbiAgICB9XG59O1xuXG52YXIgZGVmaW5lUHJvcCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdfJywge30pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbmFtZSwge1xuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG59KCkpO1xuXG52YXIgZ2xvYmFscyA9IFsnQXJyYXknLCAnQm9vbGVhbicsICdEYXRlJywgJ0Vycm9yJywgJ0V2YWxFcnJvcicsICdGdW5jdGlvbicsXG4nSW5maW5pdHknLCAnSlNPTicsICdNYXRoJywgJ05hTicsICdOdW1iZXInLCAnT2JqZWN0JywgJ1JhbmdlRXJyb3InLFxuJ1JlZmVyZW5jZUVycm9yJywgJ1JlZ0V4cCcsICdTdHJpbmcnLCAnU3ludGF4RXJyb3InLCAnVHlwZUVycm9yJywgJ1VSSUVycm9yJyxcbidkZWNvZGVVUkknLCAnZGVjb2RlVVJJQ29tcG9uZW50JywgJ2VuY29kZVVSSScsICdlbmNvZGVVUklDb21wb25lbnQnLCAnZXNjYXBlJyxcbidldmFsJywgJ2lzRmluaXRlJywgJ2lzTmFOJywgJ3BhcnNlRmxvYXQnLCAncGFyc2VJbnQnLCAndW5kZWZpbmVkJywgJ3VuZXNjYXBlJ107XG5cbmZ1bmN0aW9uIENvbnRleHQoKSB7fVxuQ29udGV4dC5wcm90b3R5cGUgPSB7fTtcblxudmFyIFNjcmlwdCA9IGV4cG9ydHMuU2NyaXB0ID0gZnVuY3Rpb24gTm9kZVNjcmlwdCAoY29kZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTY3JpcHQpKSByZXR1cm4gbmV3IFNjcmlwdChjb2RlKTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5JbkNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGlmICghKGNvbnRleHQgaW5zdGFuY2VvZiBDb250ZXh0KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwibmVlZHMgYSAnY29udGV4dCcgYXJndW1lbnQuXCIpO1xuICAgIH1cbiAgICBcbiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWYgKCFpZnJhbWUuc3R5bGUpIGlmcmFtZS5zdHlsZSA9IHt9O1xuICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIFxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgICBcbiAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7XG4gICAgdmFyIHdFdmFsID0gd2luLmV2YWwsIHdFeGVjU2NyaXB0ID0gd2luLmV4ZWNTY3JpcHQ7XG5cbiAgICBpZiAoIXdFdmFsICYmIHdFeGVjU2NyaXB0KSB7XG4gICAgICAgIC8vIHdpbi5ldmFsKCkgbWFnaWNhbGx5IGFwcGVhcnMgd2hlbiB0aGlzIGlzIGNhbGxlZCBpbiBJRTpcbiAgICAgICAgd0V4ZWNTY3JpcHQuY2FsbCh3aW4sICdudWxsJyk7XG4gICAgICAgIHdFdmFsID0gd2luLmV2YWw7XG4gICAgfVxuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY29udGV4dCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgfSk7XG4gICAgZm9yRWFjaChnbG9iYWxzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChjb250ZXh0W2tleV0pIHtcbiAgICAgICAgICAgIHdpbltrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdmFyIHdpbktleXMgPSBPYmplY3Rfa2V5cyh3aW4pO1xuXG4gICAgdmFyIHJlcyA9IHdFdmFsLmNhbGwod2luLCB0aGlzLmNvZGUpO1xuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMod2luKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAvLyBBdm9pZCBjb3B5aW5nIGNpcmN1bGFyIG9iamVjdHMgbGlrZSBgdG9wYCBhbmQgYHdpbmRvd2AgYnkgb25seVxuICAgICAgICAvLyB1cGRhdGluZyBleGlzdGluZyBjb250ZXh0IHByb3BlcnRpZXMgb3IgbmV3IHByb3BlcnRpZXMgaW4gdGhlIGB3aW5gXG4gICAgICAgIC8vIHRoYXQgd2FzIG9ubHkgaW50cm9kdWNlZCBhZnRlciB0aGUgZXZhbC5cbiAgICAgICAgaWYgKGtleSBpbiBjb250ZXh0IHx8IGluZGV4T2Yod2luS2V5cywga2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRba2V5XSA9IHdpbltrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGNvbnRleHQpKSB7XG4gICAgICAgICAgICBkZWZpbmVQcm9wKGNvbnRleHQsIGtleSwgd2luW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHJldHVybiByZXM7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluVGhpc0NvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGV2YWwodGhpcy5jb2RlKTsgLy8gbWF5YmUuLi5cbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5OZXdDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgY3R4ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQoY29udGV4dCk7XG4gICAgdmFyIHJlcyA9IHRoaXMucnVuSW5Db250ZXh0KGN0eCk7XG5cbiAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGN0eCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgY29udGV4dFtrZXldID0gY3R4W2tleV07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzO1xufTtcblxuZm9yRWFjaChPYmplY3Rfa2V5cyhTY3JpcHQucHJvdG90eXBlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBleHBvcnRzW25hbWVdID0gU2NyaXB0W25hbWVdID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgdmFyIHMgPSBTY3JpcHQoY29kZSk7XG4gICAgICAgIHJldHVybiBzW25hbWVdLmFwcGx5KHMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgfTtcbn0pO1xuXG5leHBvcnRzLmNyZWF0ZVNjcmlwdCA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuU2NyaXB0KGNvZGUpO1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb250ZXh0ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjb3B5ID0gbmV3IENvbnRleHQoKTtcbiAgICBpZih0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgY29weVtrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYztcbnZhciBDb21iaW5lZEJ1ZmZlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5Db21iaW5lZEJ1ZmZlcjtcbnZhciB1dGY4ID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3V0ZjgnKTtcbnZhciBVbnBhY2tlciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcGFja3N0cmVhbS5qc1wiKS5VbnBhY2tlcjtcblxuZGVzY3JpYmUoJ2J1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGhlbHBmdWwgdG9TdHJpbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG4gICAgYi53cml0ZUludDgoMSk7XG4gICAgYi53cml0ZUludDgoOCk7XG4gICAgYi53cml0ZUludDgoMTUpO1xuICAgIGIud3JpdGVJbnQ4KDEyNyk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHN0ciA9IGIudG9TdHJpbmcoKTtcbiAgICB2YXIgaGV4ID0gYi50b0hleCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggc3RyICkudG9Db250YWluKFwiKCBwb3NpdGlvbj00IClcXG4gIDAxIDA4IDBmIDdmXCIpO1xuICAgIGV4cGVjdChoZXgpLnRvQmUoXCIwMSAwOCAwZiA3ZiBcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgOC1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRVSW50OCggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDgoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTU7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRVSW50MTYoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldFVJbnQxNigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMzItYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQzMiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDMyKDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSA4LWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRJbnQ4KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQ4KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAxNi1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDE2KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQxNigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMzItYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzA7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRJbnQzMiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0SW50MzIoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGVuY29kZSBsaXN0IGNvcnJlY3RseScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg1KTtcbiAgICBiLndyaXRlVUludDgoMHg5MCB8IDB4Mik7XG4gICAgYiA9IHdyaXRlU3RyaW5nKGIsICdhJyk7XG4gICAgYiA9IHdyaXRlU3RyaW5nKGIsICdiJyk7XG4gICAgLy8gV2hlblxuICAgIHZhciBoZXggPSBiLnRvSGV4KCk7XG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChoZXgpLnRvQmUoXCI5MiA4MSA2MSA4MSA2MiBcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGxpc3QgY29ycmVjdGx5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDUpO1xuICAgIGIud3JpdGVVSW50OCgweDkyKTtcbiAgICBiLndyaXRlVUludDgoMHg4MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4NjEpO1xuICAgIGIud3JpdGVVSW50OCgweDgxKTtcbiAgICBiLndyaXRlVUludDgoMHg2Mik7XG4gICAgYi5yZXNldCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkYXRhID0gbmV3IFVucGFja2VyKCkudW5wYWNrKCBiICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRhdGFbMF0pLnRvQmUoJ2EnKTtcbiAgICBleHBlY3QoZGF0YVsxXSkudG9CZSgnYicpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ29tYmluZWRCdWZmZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCByZWFkIGludDgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiMSA9IGFsbG9jKDEpO1xuICAgIHZhciBiMiA9IGFsbG9jKDEpO1xuICAgIGIxLnB1dEludDgoMCwgMSk7XG4gICAgYjIucHV0SW50OCgwLCAyKTtcblxuICAgIHZhciBiID0gbmV3IENvbWJpbmVkQnVmZmVyKFtiMSxiMl0pO1xuICAgIFxuICAgIC8vIFdoZW5cbiAgICB2YXIgZmlyc3QgPSBiLnJlYWRJbnQ4KCk7XG4gICAgdmFyIHNlY29uZCA9IGIucmVhZEludDgoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZmlyc3QpLnRvQmUoMSk7XG4gICAgZXhwZWN0KHNlY29uZCkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGRpdmlkZWQgZmxvYXQ2NCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGlubmVyID0gYWxsb2MoOCk7XG4gICAgaW5uZXIucHV0RmxvYXQ2NCgwLCAwLjEpO1xuXG4gICAgdmFyIGIgPSBuZXcgQ29tYmluZWRCdWZmZXIoW2lubmVyLnJlYWRTbGljZSg0KSxpbm5lci5yZWFkU2xpY2UoNCldKTtcbiAgICBcbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlYWQgPSBiLnJlYWRGbG9hdDY0KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KHJlYWQpLnRvQmUoMC4xKTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gd3JpdGVTdHJpbmcoYiwgc3RyKSB7XG4gIHZhciBieXRlcyA9IHV0ZjguZW5jb2RlKHN0cik7XG4gIHZhciBzaXplID0gYnl0ZXMubGVuZ3RoO1xuICBiLndyaXRlVUludDgoMHg4MCB8IHNpemUpO1xuICBiLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICByZXR1cm4gYjtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgQ2h1bmtlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaHVua2luZycpLkNodW5rZXI7XG52YXIgRGVjaHVua2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NodW5raW5nJykuRGVjaHVua2VyO1xudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jO1xudmFyIENvbWJpbmVkQnVmZmVyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLkNvbWJpbmVkQnVmZmVyO1xudmFyIER1bW15Q2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcycpLmNoYW5uZWw7XG5cbmRlc2NyaWJlKCdDaHVua2VyJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgY2h1bmsgc2ltcGxlIGRhdGEnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MzIoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDMyKDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGNoLnRvSGV4KCkgKS50b0JlKFwiMDAgMDggMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDIgXCIpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBjaHVuayBibG9icyBsYXJnZXIgdGhhbiB0aGUgb3V0cHV0IGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gsIDQpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVCeXRlcyhieXRlcyggMSwyLDMsNCw1LDYgKSk7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwMiAwMSAwMiAwMCAwMiAwMyAwNCAwMCAwMiAwNSAwNiBcIik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGluY2x1ZGUgbWVzc2FnZSBib3VuZGFyaWVzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUludDMyKDEpO1xuICAgIGNodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgY2h1bmtlci53cml0ZUludDMyKDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGNoLnRvSGV4KCkgKS50b0JlKFwiMDAgMDQgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDQgMDAgMDAgMDAgMDIgXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnRGVjaHVua2VyJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgdW5jaHVuayBhIHNpbXBsZSBtZXNzYWdlJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbWVzc2FnZXMgPSBbXTtcbiAgICB2YXIgZGVjaHVua2VyID0gbmV3IERlY2h1bmtlcigpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoZGVjaHVua2VyKTtcbiAgICBkZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYnVmZmVyKSB7IG1lc3NhZ2VzLnB1c2goYnVmZmVyKTsgfTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MTYoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMyk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBtZXNzYWdlcy5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBtZXNzYWdlc1swXS50b0hleCgpICkudG9CZSggXCIwMCAwMSAwMCAwMiAwMCAwMyBcIiApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBtZXNzYWdlIHNwbGl0IGF0IGFueSBwb2ludCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gQW5kIGdpdmVuIHRoZSBmb2xsb3dpbmcgbWVzc2FnZVxuICAgIGNodW5rZXIud3JpdGVJbnQ4KDEpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigyKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMyk7XG4gICAgY2h1bmtlci53cml0ZVVJbnQ4KDQpO1xuICAgIGNodW5rZXIud3JpdGVVSW50MzIoNSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICB2YXIgY2h1bmtlZCA9IGNoLnRvQnVmZmVyKCk7XG5cbiAgICAvLyBXaGVuIEkgdHJ5IHNwbGl0dGluZyB0aGlzIGNodW5rZWQgZGF0YSBhdCBldmVyeSBwb3NzaWJsZSBwb3NpdGlvblxuICAgIC8vIGludG8gdHdvIHNlcGFyYXRlIGJ1ZmZlcnMsIGFuZCBzZW5kIHRob3NlIHRvIHRoZSBkZWNodW5rZXJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNodW5rZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzbGljZTEgPSBjaHVua2VkLmdldFNsaWNlKCAwLCBpICk7XG4gICAgICB2YXIgc2xpY2UyID0gY2h1bmtlZC5nZXRTbGljZSggaSwgY2h1bmtlZC5sZW5ndGggLSBpICk7XG5cbiAgICAgIC8vIERlY2h1bmsgdGhlIHNsaWNlc1xuICAgICAgdmFyIG1lc3NhZ2VzID0gW107XG4gICAgICB2YXIgZGVjaHVua2VyID0gbmV3IERlY2h1bmtlcigpO1xuICAgICAgZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGJ1ZmZlcikgeyBtZXNzYWdlcy5wdXNoKGJ1ZmZlcik7IH07XG4gICAgICBkZWNodW5rZXIud3JpdGUoIHNsaWNlMSApO1xuICAgICAgZGVjaHVua2VyLndyaXRlKCBzbGljZTIgKTtcblxuICAgICAgLy8gVGhlbiwgdGhlIG91dHB1dCBzaG91bGQgYmUgY29ycmVjdFxuICAgICAgZXhwZWN0KCBtZXNzYWdlcy5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgICBleHBlY3QoIG1lc3NhZ2VzWzBdLnRvSGV4KCkgKS50b0JlKCBcIjAxIDAwIDAyIDAwIDAwIDAwIDAzIDA0IDAwIDAwIDAwIDA1IFwiICk7XG4gICAgfTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gYnl0ZXMoKSB7XG4gIHZhciBiID0gYWxsb2MoIGFyZ3VtZW50cy5sZW5ndGggKTtcbiAgZm9yKCB2YXIgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHtcbiAgICBiLndyaXRlVUludDgoIGFyZ3VtZW50c1tpXSApO1xuICB9XG4gIGIucG9zaXRpb24gPSAwO1xuICByZXR1cm4gYjtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBEdW1teUNoYW5uZWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtZHVtbXkuanMnKTtcbnZhciBjb25uZWN0ID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanNcIikuY29ubmVjdDtcblxuZGVzY3JpYmUoJ2Nvbm5lY3RvcicsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgcmVhZC93cml0ZSBiYXNpYyBtZXNzYWdlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3RcIilcblxuICAgIC8vIFdoZW5cbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sICB7XG4gICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24oIG1zZyApIHtcbiAgICAgICAgZXhwZWN0KCBtc2cgKS5ub3QudG9CZU51bGwoKTtcbiAgICAgICAgY29ubi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG4gIGl0KCdzaG91bGQgcmV0cmlldmUgc3RyZWFtJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiKVxuXG4gICAgLy8gV2hlblxuICAgIHZhciByZWNvcmRzID0gW107XG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9ICk7XG4gICAgY29ubi5ydW4oIFwiUkVUVVJOIDEuMFwiLCB7fSApO1xuICAgIGNvbm4ucHVsbEFsbCgge1xuICAgICAgb25OZXh0OiBmdW5jdGlvbiggcmVjb3JkICkge1xuICAgICAgICByZWNvcmRzLnB1c2goIHJlY29yZCApO1xuICAgICAgfSxcbiAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiggdGFpbCApIHtcbiAgICAgICAgZXhwZWN0KCByZWNvcmRzWzBdWzBdICkudG9CZSggMSApO1xuICAgICAgICBjb25uLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB1c2UgRHVtbXlDaGFubmVsIHRvIHJlYWQgd2hhdCBnZXRzIHdyaXR0ZW4nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgb2JzZXJ2ZXIgPSBEdW1teUNoYW5uZWwub2JzZXJ2ZXI7XG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiLCB7Y2hhbm5lbDpEdW1teUNoYW5uZWwuY2hhbm5lbH0pO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByZWNvcmRzID0gW107XG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9ICk7XG4gICAgY29ubi5ydW4oIFwiUkVUVVJOIDFcIiwge30gKTtcbiAgICBjb25uLnN5bmMoKTtcbiAgICBleHBlY3QoIG9ic2VydmVyLmluc3RhbmNlLnRvSGV4KCkgKS50b0JlKCAnNjAgNjAgYjAgMTcgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNDEgYjIgMDEgOGUgNmQgNzkgNjQgNzIgNjkgNzYgNjUgNzIgMmYgMzAgMmUgMzAgMmUgMzAgYTMgODYgNzMgNjMgNjggNjUgNmQgNjUgODUgNjIgNjEgNzMgNjkgNjMgODkgNzAgNzIgNjkgNmUgNjMgNjkgNzAgNjEgNmMgODUgNmUgNjUgNmYgMzQgNmEgOGIgNjMgNzIgNjUgNjQgNjUgNmUgNzQgNjkgNjEgNmMgNzMgODUgNmUgNjUgNmYgMzQgNmEgMDAgMDAgMDAgMGMgYjIgMTAgODggNTIgNDUgNTQgNTUgNTIgNGUgMjAgMzEgYTAgMDAgMDAgJyApO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm92aWRlIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb25uZWN0aW5nIHRvIGh0dHAtcG9ydCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3Q6NzQ3NFwiLCB7ZW5jcnlwdGVkOmZhbHNlfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9LCAge1xuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uKCBtc2cgKSB7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIC8vb25seSBub2RlIGdldHMgdGhlIHByZXR0eSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGlmKCByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcycpLmF2YWlsYWJsZSApIHtcbiAgICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoXCJTZXJ2ZXIgcmVzcG9uZGVkIEhUVFAuIE1ha2Ugc3VyZSB5b3UgYXJlIG5vdCB0cnlpbmcgdG8gY29ubmVjdCB0byB0aGUgaHR0cCBlbmRwb2ludCBcIiArXG4gICAgICAgICAgICBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG5cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2MsXG4gICAgcGFja3N0cmVhbSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcGFja3N0cmVhbS5qc1wiKSxcbiAgICBpbnRlZ2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlZ2VyLmpzXCIpLFxuICAgIFBhY2tlciA9IHBhY2tzdHJlYW0uUGFja2VyLFxuICAgIFVucGFja2VyID0gcGFja3N0cmVhbS5VbnBhY2tlcixcbiAgICBTdHJ1Y3R1cmUgPSBwYWNrc3RyZWFtLlN0cnVjdHVyZSxcbiAgICBJbnRlZ2VyID0gaW50ZWdlci5JbnRlZ2VyO1xuXG5kZXNjcmliZSgncGFja3N0cmVhbScsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHBhY2sgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiwgaTtcbiAgICAvLyB0ZXN0IHNtYWxsIG51bWJlcnNcbiAgICBmb3IobiA9IC05OTk7IG4gPD0gOTk5OyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIobik7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICAgIC8vIHBvc2l0aXZlIG51bWJlcnNcbiAgICBmb3IobiA9IDE2OyBuIDw9IDE2IDsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KDIsIG4pKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgLy8gbmVnYXRpdmUgbnVtYmVyc1xuICAgIGZvcihuID0gMDsgbiA8PSA2MyA7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcigtTWF0aC5wb3coMiwgbikpO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJpbmdzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIlwiICkgKS50b0JlKCBcIlwiICk7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcImFiY2RlZmcxMjM1NjdcIiApICkudG9CZSggXCJhYmNkZWZnMTIzNTY3XCIgKTtcbiAgICB2YXIgc3RyID0gQXJyYXkoNjU1MzYgKyAxKS5qb2luKCdhJyk7IC8vIDIgXiAxNiArIDFcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soc3RyLCBzdHIubGVuZ3RoICsgOCkpLnRvQmUoc3RyKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJ1Y3R1cmVzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBuZXcgU3RydWN0dXJlKDEsIFtcIkhlbGxvLCB3b3JsZCEhIVwiXSApICkuZmllbGRzWzBdICkgIFxuICAgICAudG9CZSggXCJIZWxsbywgd29ybGQhISFcIiApO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIGxpc3RzJywgZnVuY3Rpb24oKSB7XG4gICB2YXIgbGlzdCA9IFsnYScsICdiJ107XG4gICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCApO1xuICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMF0gKS50b0JlKCBsaXN0WzBdICk7XG4gICBleHBlY3QoIHJvdW5kdHJpcHBlZFsxXSApLnRvQmUoIGxpc3RbMV0gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYWNrIGxvbmcgbGlzdHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGlzdExlbmd0aCA9IDI1NjtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpc3QucHVzaChudWxsKVxuICAgIH1cbiAgICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCwgMTQwMCApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzBdICkudG9CZSggbGlzdFswXSApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzFdICkudG9CZSggbGlzdFsxXSApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBwYWNrQW5kVW5wYWNrKCB2YWwsIGJ1ZmZlclNpemUgKSB7XG4gIGJ1ZmZlclNpemUgPSBidWZmZXJTaXplIHx8IDEyODtcbiAgdmFyIGJ1ZmZlciA9IGFsbG9jKGJ1ZmZlclNpemUpO1xuICBuZXcgUGFja2VyKCBidWZmZXIgKS5wYWNrKCB2YWwgKTtcbiAgYnVmZmVyLnJlc2V0KCk7XG4gIHJldHVybiBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGJ1ZmZlciApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBQb29sID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3Bvb2wnKS5Qb29sO1xuXG5kZXNjcmliZSgnUG9vbCcsIGZ1bmN0aW9uKCkge1xuICBpdCgnYWxsb2NhdGVzIGlmIHBvb2wgaXMgZW1wdHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG5cbiAgaXQoJ3Bvb2xzIGlmIHJlc291cmNlcyBhcmUgcmV0dXJuZWQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ2ZyZWVzIGlmIHBvb2wgcmVhY2hlcyBtYXggc2l6ZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IHRyYWNrcyBkZXN0cm95ZWQgcmVzb3VyY2VzXG4gICAgdmFyIGNvdW50ZXIgPSAwLFxuICAgICAgICBkZXN0cm95ZWQgPSBbXTtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKFxuICAgICAgZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiB0cnVlOyB9LFxuICAgICAgMiAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG4gICAgcjIuY2xvc2UoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlc3Ryb3llZC5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMF0uaWQgKS50b0JlKCByMi5pZCApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgdmFsaWRhdGUgcmV0dXJucyBmYWxzZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgMTAwMCAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZXN0cm95ZWQubGVuZ3RoICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggZGVzdHJveWVkWzBdLmlkICkudG9CZSggcjAuaWQgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFsxXS5pZCApLnRvQmUoIHIxLmlkICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIFJlc291cmNlKCBpZCwgcmVsZWFzZSApIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLmlkID0gaWQ7XG4gIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsgcmVsZWFzZShzZWxmKTsgfTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJyk7XG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIGhhc0ZlYXR1cmUgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL2ZlYXR1cmVzXCIpO1xuXG5kZXNjcmliZSgndHJ1c3Qtc2lnbmVkLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgdW5rbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKU1xuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1widGVzdC9yZXNvdXJjZXMvcmFuZG9tLmNlcnRpZmljYXRlXCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoIGVyci5tZXNzYWdlICkudG9Db250YWluKCBcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFwiICk7XG4gICAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQga25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtcImJ1aWxkL25lbzRqL2NlcnRpZmljYXRlcy9uZW80ai5jZXJ0XCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZG9uZSApO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5cbmRlc2NyaWJlKCd0cnVzdC1vbi1maXJzdC11c2UnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IHByZXZpb3VzbHkgdW4tc2VlbiBob3N0cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgIC8vIFRoZW4gd2UgZ2V0IHRvIGhlcmUuXG4gICAgICAvLyBBbmQgdGhlbiB0aGUga25vd25faG9zdHMgZmlsZSBzaG91bGQgaGF2ZSBjb3JyZWN0IGNvbnRlbnRzXG4gICAgICBleHBlY3QoIGZzLnJlYWRGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJ3V0ZjgnKSApLnRvQ29udGFpbiggXCJsb2NhbGhvc3Q6NzY4N1wiICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBpZiBkYXRhYmFzZSBjZXJ0IGRvZXMgbm90IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb21fa25vd25faG9zdHNcIjtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0NvbnRhaW4oXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBcIiArXG4gICAgICAgIFwiYW5kIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIGxvY2FsaG9zdDo3Njg3XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgdXRmOCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC91dGY4Jyk7XG52YXIgYnVmZmVycyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKTtcblxuZGVzY3JpYmUoJ3V0ZjgnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGEgbmljZSBjbGVhbiBidWZmZXIgcG9zaXRpb24gYWZ0ZXIgc2VyaWFsaXppbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGJ1ZmZlci5wb3NpdGlvbiApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHBvc2l0aW9uIG9mIHNpbmdsZSBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCAtIDEpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlY29kZWQgKS50b0JlKCBcImVsbG8sIHdvcmxkIVwiICk7XG4gICAgZXhwZWN0KGJ1ZmZlci5wb3NpdGlvbikudG9FcXVhbCgxMylcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIHN1YnN0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoXCJoZWxsbywgd29ybGQhXCIpO1xuICAgIGJ1ZmZlci5yZWFkSW50OCgpO1xuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoYnVmZmVyLCAzKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoNClcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIHV0ZjgnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiw6XDpMO2MTIzXCIgKSApLnRvQmUoIFwiw6XDpMO2MTIzXCIgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBhIGNvbXBsZXRlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYXPDpWZxd2VyXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUobXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgdXRmOCBmcm9tIHBhcnQgb2YgYSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcVwiO1xuICAgIHZhciBleHBlY3RNc2cgPSBtc2cuc3Vic3RyaW5nKDAsIG1zZy5sZW5ndGgtMSk7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgdW5yZWxhdGVkRGF0YSA9IGJ1ZmZlcnMuYWxsb2MoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCB1bnJlbGF0ZWREYXRhXSApO1xuXG4gICAgLy8gV2hlbiBcbiAgICAvLyBXZSByZWFkIGFsbCBidXQgdGhlIHVucmVsYXRlZERhdGEgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBidWZiXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgY29tYmluZWQubGVuZ3RoIC0gMSAtIHVucmVsYXRlZERhdGEubGVuZ3RoICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoZXhwZWN0TXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBwb3NpdGlvbiBpbiB0aGUgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDIpO1xuXG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoXCJjZGVmZ2hcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDgpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCBidWZmZXIgYWNyb3NzIGJ1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFiY2RlZmdoaWprbFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCA0KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGVjb2RlZCkudG9CZShcImZnaGlcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDkpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCB3aXRoaW4gYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgMik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ1wiKTtcbiAgICBleHBlY3QoY29tYmluZWQucG9zaXRpb24pLnRvQmUoNylcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggc3RyICkge1xuICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoIHN0ciApO1xuICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdkcml2ZXInLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXNzaW9ucycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHNlc3Npb24gKS5ub3QudG9CZU51bGwoKTtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgY29ubmVjdGlvbiBlcnJvcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdGVcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAvL3RoZSBlcnJvciBtZXNzYWdlIGlzIGRpZmZlcmVudCB3aGV0aGVyIGluIGJyb3dzZXIgb3Igbm9kZVxuICAgICAgZXhwZWN0KGVyci5tZXNzYWdlKS5ub3QudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlY29yZCA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVjb3JkXCIpLlJlY29yZDtcbnZhciBOZW80akVycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9lcnJvclwiKS5OZW80akVycm9yO1xuXG5cbmRlc2NyaWJlKCdSZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KFwibmFtZVwiKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBrZXknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBmdW5jdGlvbigpIHsgcmVjb3JkLmdldChcImFnZVwiKSB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKFxuICAgICAgXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ2FnZScsIGF2YWlsYWJsZSBrZXkgYXJlOiBbbmFtZV0uXCIpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QocmVjb3JkLmdldCgwKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyByZWNvcmQuZ2V0KDEpIH0pLnRvVGhyb3cobmV3IE5lbzRqRXJyb3IoXG4gICAgICBcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICcxJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgK1xuICAgICAgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBsZW5ndGgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW10sIFtdKS5sZW5ndGggKS50b0JlKDApO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdKS5sZW5ndGggKS50b0JlKDEpO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiXSwgW1wiQm9iXCIsIDQ1XSkubGVuZ3RoICkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBmb3JFYWNoIHRocm91Z2ggdGhlIHJlY29yZCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIl0sIFtcIkJvYlwiLCA0NV0gKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAvLyBXaGVuXG4gICAgcmVjb3JkLmZvckVhY2goIGZ1bmN0aW9uKCB2YWx1ZSwga2V5LCByZWNvcmQgKSB7XG4gICAgICByZXN1bHQucHVzaCggW3ZhbHVlLCBrZXksIHJlY29yZF0gKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtbXCJCb2JcIiwgXCJuYW1lXCIsIHJlY29yZF0sIFs0NSwgXCJhZ2VcIiwgcmVjb3JkXV0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdyZXN1bHQgc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlciwgc2Vzc2lvbjtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2hhaW5pbmcgYHRoZW5gLCByZXR1cm5pbmcgYSBuZXcgdGhpbmcgaW4gZWFjaCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCBcIlJFVFVSTiAxXCIpXG4gICAgICAudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBcImZpcnN0XCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcImZpcnN0XCIgKTtcbiAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcInNlY29uZFwiICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2F0Y2hpbmcgZXhjZXB0aW9uIHRocm93biBpbiBgdGhlbmAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1biggXCJSRVRVUk4gMVwiKVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBd2F5IHdpdGggeW91IVwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoIFwiQXdheSB3aXRoIHlvdSFcIiApO1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG52YXIgU3RhdGVtZW50VHlwZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVzdWx0LXN1bW1hcnlcIikuc3RhdGVtZW50VHlwZTtcbnZhciBTZXNzaW9uID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9zZXNzaW9uXCIpO1xuXG5kZXNjcmliZSgnc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGJlIGlkZW1wb3RlbnQgJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKG51bGwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIrKztcbiAgICB9KTtcbiAgICBfc2Vzc2lvbi5jbG9zZSgpO1xuICAgIGV4cGVjdChjb3VudGVyKS50b0JlKDEpO1xuICAgIF9zZXNzaW9uLmNsb3NlKCk7XG4gICAgZXhwZWN0KGNvdW50ZXIpLnRvQmUoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGJhc2ljIHJ1bi9zdWJzY3JpYmUgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICB2YXIgcmVjb3JkcyA9IFtdO1xuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGtlZXAgY29udGV4dCBpbiBzdWJzY3JpYmUgbWV0aG9kcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZnVuY3Rpb24gbXlPYnNlcnZlcigpIHtcbiAgICAgIHRoaXMubG9jYWwgPSAnaGVsbG8nO1xuICAgICAgdmFyIHByaXZhdGVMb2NhbCA9ICdoZWxsbyc7XG4gICAgICB0aGlzLm9uTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZShuZXcgbXlPYnNlcnZlcigpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjYWxsIG9ic2VydmVycyBvbkVycm9yIG9uIGVycm9yICcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuc3Vic2NyaWJlKHtcbiAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSB7dGV4dDogXCJSRVRVUk4gMSA9IHtwYXJhbX0gQVMgYVwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBydW4vdGhlbi90aGVuL3RoZW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpXG4gICAgICAudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgKS50aGVuKFxuICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUoMSk7XG4gICAgICB9XG4gICAgKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBiYXNpYyBydW4vY2F0Y2ggJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuY2F0Y2goXG4gICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICApXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHN1bW1hcml6ZSBtZXRob2QgZm9yIGJhc2ljIG1ldGFkYXRhICcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgc3RhdGVtZW50ID0gXCJDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG5cIjtcbiAgICB2YXIgcGFyYW1zID0ge3Byb3A6IFwic3RyaW5nXCJ9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnQudGV4dCkudG9CZShzdGF0ZW1lbnQpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0JlKHBhcmFtcyk7XG4gICAgICAgIGV4cGVjdChzdW0udXBkYXRlU3RhdGlzdGljcy5jb250YWluc1VwZGF0ZXMoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS51cGRhdGVTdGF0aXN0aWNzLm5vZGVzQ3JlYXRlZCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudFR5cGUpLnRvQmUoU3RhdGVtZW50VHlwZS5SRUFEX1dSSVRFKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGVtcHR5IHBhcmFtZXRlciBtYXAgb24gY2FsbCB3aXRoIG5vIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiQ1JFQVRFIChuOkxhYmVsIHtwcm9wOidzdHJpbmcnfSkgUkVUVVJOIG5cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudClcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0VxdWFsKHt9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHBsYW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gQ1JFQVRFIChuOkxhYmVsIHtwcm9wOntwcm9wfX0pIFJFVFVSTiBuXCI7XG4gICAgdmFyIHBhcmFtcyA9IHtwcm9wOiBcInN0cmluZ1wifTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnBsYW4uaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnQ3JlYXRlTm9kZScpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcHJvZmlsZSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUFJPRklMRSBNQVRDSCAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gblwiO1xuICAgIHZhciBwYXJhbXMgPSB7cHJvcDogXCJzdHJpbmdcIn07XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uXG4gICAgICAucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUGxhbigpKS50b0JlKHRydWUpOyAvL1doZW4gdGhlcmUncyBhIHByb2ZpbGUsIHRoZXJlJ3MgYSBwbGFuXG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUub3BlcmF0b3JUeXBlKS50b0JlKCdQcm9kdWNlUmVzdWx0cycpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuYXJndW1lbnRzLnJ1bnRpbWUpLnRvQmUoJ0lOVEVSUFJFVEVEJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5pZGVudGlmaWVyc1swXSkudG9CZSgnbicpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuY2hpbGRyZW5bMF0ub3BlcmF0b3JUeXBlKS50b0JlKCdGaWx0ZXInKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLnJvd3MpLnRvQmUoMCk7XG4gICAgICAgIC8vZXhwZWN0KHN1bS5wcm9maWxlLmRiSGl0cykudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgY3lwaGVyIG5vdGlmaWNhdGlvbnMgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gTUFUQ0ggKG4pLCAobSkgUkVUVVJOIG4sIG1cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLmNvZGUpLnRvQmUoXCJOZW8uQ2xpZW50Tm90aWZpY2F0aW9uLlN0YXRlbWVudC5DYXJ0ZXNpYW5Qcm9kdWN0V2FybmluZ1wiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnRpdGxlKS50b0JlKFwiVGhpcyBxdWVyeSBidWlsZHMgYSBjYXJ0ZXNpYW4gcHJvZHVjdCBiZXR3ZWVuIGRpc2Nvbm5lY3RlZCBwYXR0ZXJucy5cIik7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9uc1swXS5wb3NpdGlvbi5jb2x1bW4pLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHVzaW5nIHRoZSBzZXNzaW9uIHdoZW4gaGF2aW5nIGFuIG9wZW4gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy9UaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoXCJTdGF0ZW1lbnRzIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgb24gYSBcIlxuICAgICAgICAgICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCJcbiAgICAgICAgICArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBvcGVuaW5nIG11bHRpcGxlIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3Qoc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGxvdHMgb2YgZGF0YScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgc2Vzc2lvbi5ydW4oXCJVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgeCBDUkVBVEUgKDpBVFRSQUNUSU9OIHtwcm9wOiAncHJvcCd9KVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBSRVRVUk4gblwiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlID0gcmVjb3JkLmdldCgnbicpO1xuICAgICAgICAgICAgICAgIGV4cGVjdChub2RlLmxhYmVsc1swXSkudG9FcXVhbChcIkFUVFJBQ1RJT05cIik7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUucHJvcGVydGllcy5wcm9wKS50b0VxdWFsKFwicHJvcFwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcblxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIGxvbmcgcnVubmluZyBxdWVyeSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vZ2l2ZW4gYSBsb25nIHJ1bm5pbmcgcXVlcnlcbiAgICBzZXNzaW9uLnJ1bihcInVud2luZCByYW5nZSgxLDEwMDAwMDApIGFzIHggY3JlYXRlIChuIHtwcm9wOnh9KSBkZWxldGUgblwiKTtcblxuICAgIC8vd2FpdCBzb21lIHRpbWUgdGhhbiBjbG9zZSB0aGUgc2Vzc2lvbiBhbmQgcnVuXG4gICAgLy9hIG5ldyBxdWVyeVxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgdmFyIGFub3RoZXJTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBhbm90aGVyU2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIGFzIGFcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaWdub3JlKSB7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9LCAxNTAwKTtcbiAgfSk7XG5cbn0pO1xuXG5cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgndHJhbnNhY3Rpb24nLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAobikgREVUQUNIIERFTEVURSBuXCIpLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpIHtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb21taXQgc2ltcGxlIGNhc2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuICAgIHR4LmNvbW1pdCgpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpXG4gICAgICAgICAgICAgIC50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMSk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgaW50ZXJhY3RpdmUgc2Vzc2lvbicsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlJFVFVSTiAnZm9vJyBBUyByZXNcIikudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICB0eC5ydW4oXCJDUkVBVEUgKHtuYW1lOiB7cGFyYW19fSlcIiwge3BhcmFtOiByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3JlcycpfSk7XG4gICAgICB0eC5jb21taXQoKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAoYSB7bmFtZTonZm9vJ30pIFJFVFVSTiBjb3VudChhKVwiKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudChhKScpLnRvSW50KCkpLnRvQmUoMSk7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBzdWJzY3JpYmUnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBjYXRjaCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5maWVsZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmVzIG9uIGNvbW1pdCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKTtcblxuICAgIHR4LmNvbW1pdCgpXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGV4cGVjdChlcnJvci5maWVsZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSBmYWlsZWQgcXVlcnknLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgd2hlbiBjb21taXR0aW5nIHdoZW4gYW5vdGhlciBzdGF0ZW1lbnQgZmFpbHMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB0eC5jb21taXQoKVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSByb2xsYmFja3MnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKTtcbiAgICB0eC5yb2xsYmFjaygpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpXG4gICAgICAgICAgICAgIC50b0JlKDApO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSByb2xsZWQgYmFjayBxdWVyeScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJvbGxiYWNrKClcblxuICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgb24gYSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJvbGxiYWNrKCk7XG5cbiAgICB0eC5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgd2hlbiBhIHByZXZpb3VzIHN0YXRlbWVudCBmYWlsZWQnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LnJ1bihcIlJFVFVSTiA0MlwiKVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucm9sbGJhY2soKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIHJvbGwgYmFjayBhIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKTtcblxuICAgIHR4LnJvbGxiYWNrKClcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcblxuZGVzY3JpYmUoJ2Zsb2F0aW5nIHBvaW50IHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMS4wICcsIHRlc3RWYWwoIDEgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMC4wICcsIHRlc3RWYWwoIDAuMCApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDMuNDAyODIzNWUrMzggKSApOyAvLyBNYXggMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4ICkgKTsgLy8gTWF4IDY0LWJpdFxuICBpdCgnc2hvdWxkIHN1cHBvcnQgcHJldHR5IHNtYWxsIGZsb2F0ICcsIHRlc3RWYWwoIDEuNGUtNDUgKSApOyAvLyBNaW4gMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggNC45ZS0zMjQgKSApOyAvLyBNaW4gNjQtYml0XG59KTtcblxuZGVzY3JpYmUoJ2ludGVnZXIgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIDEgJywgdGVzdFZhbCggbmVvNGouaW50KDEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMCAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMCkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAtMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoLTEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgbGFyZ2VyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDdmZmZmZmZmZmZmZmZmZmZcIikgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBzbWFsbGVyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIikgKSApO1xufSk7XG5cbmRlc2NyaWJlKCdib29sZWFuIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgdHJ1ZSAnLCAgdGVzdFZhbCggdHJ1ZSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmYWxzZSAnLCB0ZXN0VmFsKCBmYWxzZSApICk7XG59KTtcblxuZGVzY3JpYmUoJ3N0cmluZyB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IHN0cmluZyAnLCAgIHRlc3RWYWwoIFwiXCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc2ltcGxlIHN0cmluZyAnLCAgdGVzdFZhbCggXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGF3ZXNvbWUgc3RyaW5nICcsIHRlc3RWYWwoIFwiQWxsIG1ha3Qgw6V0IFRlbmdpbCwgdsOlciBiZWZyaWFyZS5cIiApICk7XG59KTtcblxuZGVzY3JpYmUoJ2xpc3QgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBlbXB0eSBsaXN0cyAnLCAgIHRlc3RWYWwoIFtdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBsaXN0cyAnLCAgIHRlc3RWYWwoIFsgdW5kZWZpbmVkLCA0IF0sIFsgbnVsbCwgNCBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZsb2F0IGxpc3RzICcsICAgdGVzdFZhbCggWyAxLDIsMyBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGJvb2xlYW4gbGlzdHMgJywgdGVzdFZhbCggWyB0cnVlLCBmYWxzZSBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHN0cmluZyBsaXN0cyAnLCAgdGVzdFZhbCggWyBcIlwiLCBcImhlbGxvIVwiIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbGlzdCBsaXN0cyAnLCAgICB0ZXN0VmFsKCBbIFtdLCBbMSwyLDNdIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbWFwIGxpc3RzICcsICAgICB0ZXN0VmFsKCBbIHt9LCB7YToxMn0gXSApICk7XG59KTtcblxuZGVzY3JpYmUoJ21hcCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IG1hcHMgJywgdGVzdFZhbCgge30gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYmFzaWMgbWFwcyAnLCB0ZXN0VmFsKCB7YToxLCBiOnt9LCBjOltdLCBkOntlOjF9fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzcGFyc2UgbWFwcyAnLCB0ZXN0VmFsKCB7Zm9vOiB1bmRlZmluZWQsIGJhcjogbnVsbH0sIHtiYXI6IG51bGx9ICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbm9kZSB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJldHVybmluZyBub2RlcyAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIChuOlVzZXIge25hbWU6J0xpc2EnfSkgUkVUVVJOIG4sIGlkKG4pXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBub2RlID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCduJyk7XG5cbiAgICAgICAgZXhwZWN0KCBub2RlLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIG5vZGUubGFiZWxzICkudG9FcXVhbCggW1wiVXNlclwiXSApO1xuICAgICAgICAvLyBleHBlY3QoIG5vZGUuaWRlbnRpdHkgKS50b0VxdWFsKCByc1swXVsnaWQobiknXSApOyAvLyBUT0RPXG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG5cbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncmVsYXRpb25zaGlwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHJlbGF0aW9uc2hpcHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFICgpLVtyOlVzZXIge25hbWU6J0xpc2EnfV0tPigpIFJFVFVSTiByLCBpZChyKVwiKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcmVsID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdyJyk7XG5cbiAgICAgICAgZXhwZWN0KCByZWwucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggcmVsLnR5cGUgKS50b0VxdWFsKCBcIlVzZXJcIiApO1xuICAgICAgICAvLyBleHBlY3QoIHJlbC5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChyKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdwYXRoIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHBhdGhzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLnJ1bihcIkNSRUFURSBwPSg6VXNlciB7IG5hbWU6J0xpc2EnIH0pPC1bcjpLTk9XUyB7c2luY2U6MTIzNC4wfV0tKCkgUkVUVVJOIHBcIilcbiAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC5yZWNvcmRzWzBdLmdldCgncCcpO1xuXG4gICAgICAgIGV4cGVjdCggcGF0aC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCBwYXRoLmVuZC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyB9ICk7XG5cbiAgICAgICAgLy8gQWNjZXNzaW5nIHBhdGggc2VnbWVudHNcbiAgICAgICAgZXhwZWN0KCBwYXRoLmxlbmd0aCApLnRvRXF1YWwoIDEgKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHNlZ21lbnQgPSBwYXRoLnNlZ21lbnRzW2ldO1xuICAgICAgICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHBhdGggc2VnbWVudCBnb2VzIGZyb20gbGlzYSB0byB0aGUgYmxhbmsgbm9kZVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQuZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcbiAgICAgICAgICAvLyBXaGljaCBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgcmVsYXRpb25zaGlwIGl0c2VsZiFcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQucmVsYXRpb25zaGlwLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IHNpbmNlOiAxMjM0IH0gKTtcbiAgICAgICAgfVxuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUubG9nKGVycik7IH0pO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB0ZXN0VmFsKCB2YWwsIGV4cGVjdGVkICkge1xuICByZXR1cm4gZnVuY3Rpb24oIGRvbmUgKSB7XG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIHt2YWx9IGFzIHZcIiwge3ZhbDogdmFsfSlcbiAgICAgIC50aGVuKCBmdW5jdGlvbiggcmVzdWx0ICkge1xuICAgICAgICBleHBlY3QoIHJlc3VsdC5yZWNvcmRzWzBdLmdldCgndicpICkudG9FcXVhbCggZXhwZWN0ZWQgfHwgdmFsICk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH1cbn1cbiJdfQ== +},{"../../lib/v1":8}]},{},[165,166,167,168,169,170,171,172,173,174,175,176,177]) +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvZXM2LXByb21pc2UuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvZHJpdmVyLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvZXJyb3IuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9ncmFwaC10eXBlcy5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2luZGV4LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZWdlci5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2J1Zi5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLWR1bW15LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NodW5raW5nLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvY29ubmVjdG9yLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9sb2cuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvcG9vbC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlci5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3V0ZjguanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZWNvcmQuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZXN1bHQtc3VtbWFyeS5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Jlc3VsdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Nlc3Npb24uanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS90cmFuc2FjdGlvbi5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3ZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2FwaS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvYnVmZmVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2Uvbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvcmVwb3J0ZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9wZW0uanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL3BlbS5qcyIsIm5vZGVfbW9kdWxlcy9iYXNlNjQtanMvbGliL2I2NC5qcyIsIm5vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanMiLCJub2RlX21vZHVsZXMvYnJvcmFuZC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyLXJlc29sdmUvZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NiYy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiMS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmI4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2N0ci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9lY2IuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvb2ZiLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL3N0cmVhbUNpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWNpcGhlci9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL21vZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktcnNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9hbGdvcy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9zaWduLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi92ZXJpZnkuanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXNoaW1zL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci14b3IvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jaXBoZXItYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvbWQ1LmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZWRlLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2RoLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9nZW5lcmF0ZVByaW1lLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9wcmltZXMuanNvbiIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvaG1hYy1kcmJnLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9wcmVjb21wdXRlZC9zZWNwMjU2azEuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL3BhY2thZ2UuanNvbiIsIm5vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwibm9kZV9tb2R1bGVzL2V2cF9ieXRlc3Rva2V5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2guanMiLCJub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9jb21tb24uanMiLCJub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9obWFjLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvcmlwZW1kLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvaWVlZTc1NC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmRleG9mL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbGxlci1yYWJpbi9saWIvbXIuanMiLCJub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWFzc2VydC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9vcy1icm93c2VyaWZ5L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hZXNpZC5qc29uIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2ZpeFByb2MuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yaXBlbWQxNjAvbGliL3JpcGVtZDE2MC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyNTYuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhNTEyLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3ZtLWJyb3dzZXJpZnkvaW5kZXguanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvYnVmLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY2h1bmtpbmcudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9jb25uZWN0b3IudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9wYWNrc3RyZWFtLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvcG9vbC50ZXN0LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3Rscy50ZXN0LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3V0ZjgudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9kcml2ZXIudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9yZWNvcmQudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9yZXN1bHQudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9zZXNzaW9uLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvdjEvdHJhbnNhY3Rpb24udGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS90eXBlcy50ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNTVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcGdHQSxZQUFZLENBQUM7O0FBRWIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQzNDLE9BQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyxDQUFDOztBQUVILElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQUUsTUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEFBQUMsU0FBUyxFQUFFLE9BQU8sTUFBTSxFQUFFO0FBQUUsUUFBSSxNQUFNLEdBQUcsR0FBRztRQUFFLFFBQVEsR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUcsQ0FBQyxBQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQUFBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEFBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUFFLGVBQU8sU0FBUyxDQUFDO09BQUUsTUFBTTtBQUFFLFdBQUcsR0FBRyxNQUFNLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVycEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZO0FBQUUsV0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQUUsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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TyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcDBCcEMsWUFBWSxDQUFDOztBQUViLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQzs7QUFFSCxJQUFJLElBQUksR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUFFLE1BQUksTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLFNBQVMsRUFBRSxPQUFPLE1BQU0sRUFBRTtBQUFFLFFBQUksTUFBTSxHQUFHLEVBQUU7UUFBRSxRQUFRLEdBQUcsR0FBRztRQUFFLFFBQVEsR0FBRyxHQUFHLENBQUMsQUFBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEFBQUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxBQUFDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUFFLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FBQztPQUFFLE1BQU07QUFBRSxVQUFFLEdBQUcsTUFBTSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEFBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsQUFBQyxTQUFTLFNBQVMsQ0FBQztPQUFFO0tBQUUsTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7QUFBRSxhQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7S0FBRSxNQUFNO0FBQUUsVUFBSSxNQUFN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QVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN2QyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ2xDOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUMvQixVQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0IsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdEMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUU7QUFDeEMsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3JELFlBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztPQUNoRDtLQUNGOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsV0FBVztBQUNoQixTQUFLLEVBQUUsU0FBUyxTQUFTLEdBQUc7QUFDMUIsYUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQzs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLEdBQUc7QUFDekIsYUFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qzs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFlBQVk7QUFDakIsU0FBSyxFQUFFLFNBQVMsVUFBVSxHQUFHO0FBQzNCLGFBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0M7Ozs7O0dBS0YsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsR0FBRztBQUMzQixhQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNDOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsV0FBVztBQUNoQixTQUFLLEVBQUUsU0FBUyxTQUFTLEdBQUc7QUFDMUIsYUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMxQzs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxHQUFHO0FBQzFCLGFBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDMUM7Ozs7O0dBS0YsRUFBRTtBQUNELE9BQUcsRUFBRSxXQUFXO0FBQ2hCLFNBQUssRUFBRSxTQUFTLFNBQVMsR0FBRztBQUMxQixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFDOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsYUFBYTtBQUNsQixTQUFLLEVBQUUsU0FBUyxXQUFXLEdBQUc7QUFDNUIsYUFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM1Qzs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDOUIsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3hDOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUM3QixVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdkM7Ozs7OztHQU1GLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQzlCLFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN4Qzs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUU7QUFDOUIsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3hDOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLGFBQWE7QUFDbEIsU0FBSyxFQUFFLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMvQixVQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDekM7Ozs7OztHQU1GLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQzlCLFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN4Qzs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxjQUFjO0FBQ25CLFNBQUssRUFBRSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDaEMsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzFDOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFlBQVk7QUFDakIsU0FBSyxFQUFFLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUM5QixVQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdEQ7Ozs7Ozs7R0FPRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRTtBQUNoQyxhQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN2RDtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFO0FBQ2pDLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdEIsVUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7QUFDeEIsYUFBTyxDQUFDLENBQUM7S0FDVjs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxHQUFHO0FBQzFCLGFBQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0tBQ3BDOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsY0FBYztBQUNuQixTQUFLLEVBQUUsU0FBUyxZQUFZLEdBQUc7QUFDN0IsYUFBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzdCOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsT0FBTztBQUNaLFNBQUssRUFBRSxTQUFTLEtBQUssR0FBRztBQUN0QixVQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztLQUNuQjs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxHQUFHO0FBQ3pCLGFBQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztLQUN4Rjs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxPQUFPO0FBQ1osU0FBSyxFQUFFLFNBQVMsS0FBSyxHQUFHOztBQUV0QixVQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDYixXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxZQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QyxZQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3ZCLGlCQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztTQUN6QjtBQUNELFdBQUcsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO09BQ3RCO0FBQ0QsYUFBTyxHQUFHLENBQUM7S0FDWjtHQUNGLENBQUMsQ0FBQyxDQUFDOztBQUVKLFNBQU8sVUFBVSxDQUFDO0NBQ25CLENBQUEsRUFBRyxDQUFDOztBQUVMLElBQUksVUFBVSxHQUFHLENBQUMsVUFBVSxXQUFXLEVBQUU7QUFDdkMsV0FBUyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFbkMsV0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFO0FBQ3ZCLG1CQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDOztBQUVsQyxRQUFJLE1BQU0sR0FBRyxHQUFHLFlBQVksV0FBVyxHQUFHLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRSxRQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JHLFFBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ3RCLFFBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0dBQ3pDOzs7Ozs7O0FBT0QsY0FBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hCLE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDdEMsVUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRTtBQUNqQyxhQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3RDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxTQUFTO0FBQ2QsU0FBSyxFQUFFLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDckMsVUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ25DO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxTQUFTO0FBQ2QsU0FBSyxFQUFFLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUNoQyxhQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUU7QUFDbkMsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN4QztHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtBQUN4QyxVQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdEM7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUN0QyxVQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ3RCLGVBQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO09BQ2xFLE1BQU07Ozs7QUFJTCxZQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9CLGNBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDNUM7QUFDRCxlQUFPLElBQUksQ0FBQztPQUNiO0tBQ0Y7Ozs7OztHQU1GLEVBQUU7QUFDRCxPQUFHLEVBQUUsVUFBVTtBQUNmLFNBQUssRUFBRSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDL0IsYUFBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDcEU7R0FDRixDQUFDLENBQUMsQ0FBQzs7QUFFSixTQUFPLFVBQVUsQ0FBQztDQUNuQixDQUFBLENBQUUsVUFBVSxDQUFDLENBQUM7O0FBRWYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxVQUFVLFlBQVksRUFBRTtBQUN6QyxXQUFTLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUVyQyxXQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUN6QyxtQkFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFbkMsUUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNGLFFBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3BCLFFBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0dBQ3JCOzs7Ozs7O0FBT0QsY0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3pCLE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDdEMsVUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDbkQ7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsUUFBUSxFQUFFO0FBQ2pDLGFBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztLQUNyRDtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsU0FBUztBQUNkLFNBQUssRUFBRSxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ3JDLFVBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2xEO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ3hDLFVBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3JEO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxTQUFTO0FBQ2QsU0FBSyxFQUFFLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUNoQyxhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDcEQ7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFlBQVk7QUFDakIsU0FBSyxFQUFFLFNBQVMsVUFBVSxDQUFDLFFBQVEsRUFBRTtBQUNuQyxhQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7S0FDdkQ7R0FDRixDQUFDLENBQUMsQ0FBQzs7QUFFSixTQUFPLFdBQVcsQ0FBQztDQUNwQixDQUFBLENBQUUsVUFBVSxDQUFDLENBQUM7O0FBRWYsSUFBSSxjQUFjLEdBQUcsQ0FBQyxVQUFVLFlBQVksRUFBRTtBQUM1QyxXQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUV4QyxXQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUU7QUFDL0IsbUJBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7O0FBRXRDLFFBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLFlBQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQzdCO0FBQ0QsUUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlGLFFBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0dBQ3pCOzs7Ozs7O0FBT0QsY0FBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQzVCLE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRTs7QUFFakMsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzdDLFlBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTlCLFlBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7QUFDN0Isa0JBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQzNCLE1BQU07QUFDTCxpQkFBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xDO09BQ0Y7S0FDRjtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsU0FBUztBQUNkLFNBQUssRUFBRSxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUU7O0FBRWhDLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QyxZQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUU5QixZQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzdCLGtCQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUMzQixNQUFNO0FBQ0wsaUJBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNqQztPQUNGO0tBQ0Y7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFlBQVk7QUFDakIsU0FBSyxFQUFFLFNBQVMsVUFBVSxDQUFDLFFBQVEsRUFBRTs7O0FBR25DLFVBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLFNBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDNUMsQ0FBQztBQUNGLGFBQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QjtHQUNGLENBQUMsQ0FBQyxDQUFDOztBQUVKLFNBQU8sY0FBYyxDQUFDO0NBQ3ZCLENBQUEsQ0FBRSxVQUFVLENBQUMsQ0FBQzs7QUFFZixJQUFJLFVBQVUsR0FBRyxDQUFDLFVBQVUsWUFBWSxFQUFFO0FBQ3hDLFdBQVMsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7O0FBRXBDLFdBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixtQkFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQzs7QUFFbEMsUUFBSSxNQUFNLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RSxRQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pHLFFBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0dBQ3ZCOzs7O0FBSUQsY0FBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hCLE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRTtBQUNqQyxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3pDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxTQUFTO0FBQ2QsU0FBSyxFQUFFLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRTtBQUNoQyxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3hDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxZQUFZO0FBQ2pCLFNBQUssRUFBRSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUU7QUFDbkMsYUFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsVUFBVTtBQUNmLFNBQUssRUFBRSxTQUFTLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ3RDLFVBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN4QztHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsU0FBUztBQUNkLFNBQUssRUFBRSxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ3JDLFVBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN2QztHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtBQUN4QyxVQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDM0M7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtBQUN0QyxVQUFJLEdBQUcsWUFBWSxVQUFVLEVBQUU7QUFDN0IsWUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztBQUM5RSxXQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDbkYsV0FBRyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUM7T0FDN0IsTUFBTTtBQUNMLGNBQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLDhCQUE4QixDQUFDLENBQUM7T0FDNUQ7S0FDRjtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsVUFBVTtBQUNmLFNBQUssRUFBRSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ3RDLGFBQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0tBQ2xFO0dBQ0YsQ0FBQyxDQUFDLENBQUM7O0FBRUosU0FBTyxVQUFVLENBQUM7Q0FDbkIsQ0FBQSxDQUFFLFVBQVUsQ0FBQyxDQUFDOztBQUVmLElBQUksY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUNoQyxJQUFJOztBQUVGLFNBQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUIsZ0JBQWMsR0FBRyxVQUFVLENBQUM7Q0FDN0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFOzs7Ozs7Ozs7QUFTZCxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUU7QUFDbkIsU0FBTyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUc7QUFDbkIsWUFBVSxFQUFFLFVBQVU7QUFDdEIsWUFBVSxFQUFFLFVBQVU7QUFDdEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsZ0JBQWMsRUFBRSxjQUFjO0FBQzlCLFlBQVUsRUFBRSxVQUFVO0FBQ3RCLE9BQUssRUFBRSxLQUFLO0NBQ2IsQ0FBQztBQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbnNCcEMsWUFBWSxDQUFDOztBQUViLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQzs7QUFFSCxJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFBRSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUFFLFVBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQUFBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxBQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FBRTtHQUFFLEFBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQUUsUUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxBQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxBQUFDLE9BQU8sV0FBVyxDQUFDO0dBQUUsQ0FBQztDQUFFLENBQUEsRUFBRyxDQUFDOztBQUV0akIsU0FBUyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUFFLE1BQUksRUFBRSxRQUFRLFlBQVksV0FBVyxDQUFBLEFBQUMsRUFBRTtBQUFFLFVBQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQztHQUFFO0NBQUU7O0FBRXpKLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFNUIsSUFBSSxRQUFRLEdBQUc7QUFDYixVQUFRLEVBQUUsSUFBSTtBQUNkLGdCQUFjLEVBQUUsU0FBUyxjQUFjLENBQUMsUUFBUSxFQUFFO0FBQ2hELFlBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0dBQzlCO0NBQ0YsQ0FBQzs7QUFFRixJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFDOUIsV0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQzFCLG1CQUFlLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUVwQyxRQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztHQUNuQjs7QUFFRCxjQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDMUIsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ3pCLFVBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLGNBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDL0I7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLEdBQUc7QUFDdEIsVUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2IsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLFdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO09BQ2hDO0FBQ0QsYUFBTyxHQUFHLENBQUM7S0FDWjtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsVUFBVTtBQUNmLFNBQUssRUFBRSxTQUFTLFFBQVEsR0FBRztBQUN6QixhQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUM7R0FDRixDQUFDLENBQUMsQ0FBQzs7QUFFSixTQUFPLFlBQVksQ0FBQztDQUNyQixDQUFBLEVBQUcsQ0FBQzs7QUFFTCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUc7QUFDbkIsU0FBTyxFQUFFLFlBQVk7QUFDckIsVUFBUSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkRwQyxZQUFZLENBQUM7O0FBRWIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQzNDLE9BQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyxDQUFDOztBQUVILElBQUksWUFBWSxHQUFHLENBQUMsWUFBWTtBQUFFLFdBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUFFLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQUUsVUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEFBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxBQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEFBQUMsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEFBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUFFO0dBQUUsQUFBQyxPQUFPLFVBQVUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7QUFBRSxRQUFJLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEFBQUMsSUFBSSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEFBQUMsT0FBTyxXQUFXLENBQUM7R0FBRSxDQUFDO0NBQUUsQ0FBQSxFQUFHLENBQUM7O0FBRXRqQixTQUFTLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtBQUFFLFNBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQUU7O0FBRWpHLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFBRSxNQUFJLEVBQUUsUUFBUSxZQUFZLFdBQVcsQ0FBQSxBQUFDLEVBQUU7QUFBRSxVQUFNLElBQUksU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7R0FBRTtDQUFFOztBQUV6SixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTFCLElBQUksS0FBSyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDOztBQUV6QyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTFCLElBQUksS0FBSyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDOztBQUV6QyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXhCLElBQUksSUFBSSxHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUV2QyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRTVCLElBQUksTUFBTSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUUzQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXhCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFNUIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUVuQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFFMUIsU0FBUyxRQUFRLEdBQUc7OztBQUdsQixNQUFJLGdDQUFnQyxHQUFHLE9BQU8sQ0FBQztBQUMvQyxNQUFJLE9BQU8sR0FBRyxnQ0FBZ0MsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFMUQsU0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQztDQUMxRTs7QUFFRCxTQUFTLFVBQVUsQ0FBQyxZQUFZLEVBQUU7QUFDaEMsTUFBSTtBQUNGLFFBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7R0FDekMsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNWLFFBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7O0FBRXZCLGdCQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDOztBQUVwRCxnQkFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3pCLGFBQU87S0FDUjtBQUNELFFBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDdkIsYUFBTztLQUNSO0FBQ0QsVUFBTSxDQUFDLENBQUM7R0FDVDtDQUNGOztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFO0FBQ3JELE1BQUk7QUFDRixRQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0dBQzVDLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDVixXQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUNqQjtBQUNELE1BQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNsQixTQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDO0FBQ2xDLFNBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO0dBQ3hELENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFO0FBQzVCLFFBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUN2QyxXQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2IsUUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QjtHQUNGLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVk7QUFDekIsUUFBSSxDQUFDLEtBQUssRUFBRTtBQUNWLFFBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNWO0dBQ0YsQ0FBQyxDQUFDO0NBQ0o7O0FBRUQsSUFBSSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFDdkMsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7O0FBRW5FLE1BQUksQ0FBQyxDQUFDLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxFQUFFOztBQUU3QyxXQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUNqQjs7OztBQUlELCtCQUE2QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7O0FBRzVDLE1BQUk7QUFDRixRQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0dBQzVDLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDVixjQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0dBQ3ZEOztBQUVELE1BQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLFFBQVEsR0FBRyxHQUFHLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFVBQVUsR0FBRyxFQUFFO0FBQ3hHLFdBQU8sNkJBQTZCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0MsUUFBSSxHQUFHLEVBQUU7QUFDUCxhQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2xCO0FBQ0QsV0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDaEIsQ0FBQyxDQUFDO0NBQ0o7O0FBRUQsSUFBSSxhQUFhLEdBQUc7QUFDbEIsMkJBQXlCLEVBQUUsU0FBUyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUN4RixRQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3JFLGVBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFBLENBQUUsd0RBQXdELEdBQUcsMEVBQTBFLEdBQUcsMEVBQTBFLEdBQUcsdUVBQXVFLEdBQUcseUVBQXlFLEdBQUcsK0JBQStCLENBQUMsQ0FBQyxDQUFDO0FBQzVhLGFBQU87S0FDUjs7QUFFRCxRQUFJLE9BQU8sR0FBRztBQUNaLFFBQUUsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7OztBQUc5RCx3QkFBa0IsRUFBRSxLQUFLO0tBQzFCLENBQUM7O0FBRUYsUUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDL0UsVUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7QUFDdEIsaUJBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFBLENBQUUseUZBQXlGLEdBQUcseUdBQXlHLEdBQUcsd0ZBQXdGLEdBQUcsOEZBQThGLEdBQUcsNEdBQTRHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztPQUNqaUIsTUFBTTtBQUNMLGlCQUFTLEVBQUUsQ0FBQztPQUNiO0tBQ0YsQ0FBQyxDQUFDO0FBQ0gsVUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUIsV0FBTyxNQUFNLENBQUM7R0FDZjtBQUNELG9CQUFrQixFQUFFLFNBQVMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7QUFDMUUsUUFBSSxPQUFPLEdBQUc7O0FBRVosd0JBQWtCLEVBQUUsS0FBSztLQUMxQixDQUFDOztBQUVGLFFBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZO0FBQy9FLFVBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsVUFBVSxJQUFJLENBQUMsQ0FBQzs7QUFFMUQsVUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Ozs7O0FBS25CLGlCQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLGtEQUFrRCxHQUFHLDBFQUEwRSxHQUFHLHdFQUF3RSxHQUFHLGdFQUFnRSxDQUFDLENBQUMsQ0FBQztBQUMvUyxlQUFPO09BQ1I7O0FBRUQsVUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BHLFVBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDcEcsVUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzs7QUFFM0MscUJBQWUsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsZ0JBQWdCLEVBQUU7QUFDcEUsWUFBSSxnQkFBZ0IsS0FBSyxpQkFBaUIsRUFBRTtBQUMxQyxtQkFBUyxFQUFFLENBQUM7U0FDYixNQUFNLElBQUksZ0JBQWdCLElBQUksSUFBSSxFQUFFO0FBQ25DLDBCQUFnQixDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxHQUFHLEVBQUU7QUFDM0UsZ0JBQUksR0FBRyxFQUFFO0FBQ1AscUJBQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCO0FBQ0QsbUJBQU8sU0FBUyxFQUFFLENBQUM7V0FDcEIsQ0FBQyxDQUFDO1NBQ0osTUFBTTtBQUNMLG1CQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLDZEQUE2RCxHQUFHLHFDQUFxQyxHQUFHLFFBQVEsR0FBRyxPQUFPLEdBQUcsY0FBYyxHQUFHLGdGQUFnRixHQUFHLG1GQUFtRixHQUFHLHFGQUFxRixHQUFHLFVBQVUsR0FBRyx3RUFBd0UsR0FBRyxnQkFBZ0IsR0FBRyxRQUFRLEdBQUcsT0FBTyxHQUFHLGNBQWMsR0FBRyx5QkFBeUIsR0FBRyxvRkFBb0YsR0FBRyxrRkFBa0YsR0FBRyxpRkFBaUYsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7U0FDbjNCO09BQ0YsQ0FBQyxDQUFDO0tBQ0osQ0FBQyxDQUFDO0FBQ0gsVUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUIsV0FBTyxNQUFNLENBQUM7R0FDZjtDQUNGLENBQUM7O0FBRUYsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtBQUNoQyxNQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFlBQVk7QUFDaEYsV0FBTyxJQUFJLENBQUM7R0FDYixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFakIsTUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtBQUM1QixRQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyRSxRQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1QixXQUFPLElBQUksQ0FBQztHQUNiLE1BQU0sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3BDLFdBQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzlELE1BQU07QUFDTCxhQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsc0JBQXNCLEdBQUcsaUZBQWlGLEdBQUcsc0VBQXNFLEdBQUcseUZBQXlGLEdBQUcsZ0ZBQWdGLEdBQUcsa0ZBQWtGLEdBQUcsa0ZBQWtGLENBQUMsQ0FBQyxDQUFDO0dBQ3psQjtDQUNGOzs7Ozs7OztBQVFELElBQUksV0FBVyxHQUFHLENBQUMsWUFBWTs7Ozs7Ozs7O0FBUzdCLFdBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUN6QixtQkFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFbkMsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDOztBQUVoQixRQUFJLENBQUMsRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDOUIsUUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDdEIsUUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDbkIsUUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDbEIsUUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbkIsUUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXJFLFFBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZO0FBQ3JDLFVBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2YsZUFBTztPQUNSOztBQUVELFVBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLE1BQU0sRUFBRTtBQUN0QyxZQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsY0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM3QztPQUNGLENBQUMsQ0FBQzs7QUFFSCxVQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7OztBQUdwRCxVQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzVCLFVBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLFlBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDeEI7S0FDRixFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0dBQ2pDOztBQUVELGNBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN6QixPQUFHLEVBQUUsd0JBQXdCO0FBQzdCLFNBQUssRUFBRSxTQUFTLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtBQUMxQyxVQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUNsQixVQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsWUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUNuQjtLQUNGOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFOzs7QUFHNUIsVUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUMxQixZQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUM1QixNQUFNLElBQUksTUFBTSxZQUFZLElBQUksQ0FBQyxVQUFVLEVBQUU7O0FBRTVDLFlBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztPQUNsQyxNQUFNO0FBQ0wsY0FBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFBLENBQUUsMkJBQTJCLEdBQUcsTUFBTSxDQUFDLENBQUM7T0FDbEU7S0FDRjs7Ozs7O0dBTUYsRUFBRTtBQUNELE9BQUcsRUFBRSxPQUFPO0FBQ1osU0FBSyxFQUFFLFNBQVMsS0FBSyxHQUFHO0FBQ3RCLFVBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEdBQUcsWUFBWTtBQUN6RSxlQUFPLElBQUksQ0FBQztPQUNiLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixVQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixVQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDZCxZQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztPQUMxQixNQUFNO0FBQ0wsVUFBRSxFQUFFLENBQUM7T0FDTjtLQUNGO0dBQ0YsQ0FBQyxDQUFDLENBQUM7O0FBRUosU0FBTyxXQUFXLENBQUM7Q0FDcEIsQ0FBQSxFQUFHLENBQUM7O0FBRUwsSUFBSSxrQkFBa0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDOztBQUVuRSxJQUFJOztBQUVGLFNBQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDeEIsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNWLG9CQUFrQixHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0NBQzNDOztBQUVELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztBQUN4QyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pUcEMsWUFBWSxDQUFDOztBQUViLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQzs7QUFFSCxJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFBRSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUFFLFVBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQUFBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxBQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FBRTtHQUFFLEFBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQUUsUUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxBQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxBQUFDLE9BQU8sV0FBVyxDQUFDO0dBQUUsQ0FBQztDQUFFLENBQUEsRUFBRyxDQUFDOztBQUV0akIsU0FBUyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUFFLE1BQUksRUFBRSxRQUFRLFlBQVksV0FBVyxDQUFBLEFBQUMsRUFBRTtBQUFFLFVBQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQztHQUFFO0NBQUU7O0FBRXpKLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFNUIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU1QixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7Ozs7Ozs7QUFPbkMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLFlBQVk7Ozs7Ozs7OztBQVNsQyxXQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRTtBQUM5QixtQkFBZSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDOztBQUV4QyxRQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQixRQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNuQixRQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFckUsUUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLFFBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNsQixVQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLDJCQUEyQixFQUFFO0FBQzdELGNBQU0sR0FBRyxLQUFLLENBQUM7T0FDaEIsTUFBTTtBQUNMLFlBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQSxDQUFFLDZEQUE2RCxHQUFHLHlDQUF5QyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsNEJBQTRCLEdBQUcsd0VBQXdFLEdBQUcsZ0RBQWdELENBQUMsQ0FBQztBQUN4VCxlQUFPO09BQ1I7S0FDRjtBQUNELFFBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3pELFFBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLFFBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQzs7QUFFcEMsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDOzs7QUFHaEIsUUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7QUFDOUIsVUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDZixZQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztPQUMvQjtLQUNGLENBQUM7QUFDRixRQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxZQUFZOztBQUU1QixVQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzVCLFVBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLFlBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7T0FDeEI7S0FDRixDQUFDO0FBQ0YsUUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsVUFBVSxLQUFLLEVBQUU7QUFDcEMsVUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ2xCLFlBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsWUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUNuQjtLQUNGLENBQUM7O0FBRUYsUUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0dBQ2hEOztBQUVELGNBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzlCLE9BQUcsRUFBRSx3QkFBd0I7QUFDN0IsU0FBSyxFQUFFLFNBQVMsc0JBQXNCLEdBQUc7O0FBRXZDLFVBQUksSUFBSSxDQUFDLEtBQUssRUFBRTs7QUFFZCxZQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSxnREFBZ0QsR0FBRywrRUFBK0UsR0FBRyxrRkFBa0YsR0FBRywyRUFBMkUsR0FBRyw2RUFBNkUsR0FBRyxpRkFBaUYsR0FBRyxxRUFBcUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVrQixZQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsY0FBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7T0FDRjtLQUNGOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLENBQUMsTUFBTSxFQUFFOzs7QUFHNUIsVUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUMxQixZQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztPQUM1QixNQUFNLElBQUksTUFBTSxZQUFZLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDNUMsWUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO09BQy9CLE1BQU07QUFDTCxjQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSxpQ0FBaUMsR0FBRyxNQUFNLENBQUMsQ0FBQztPQUN4RTtLQUNGOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLEdBQUc7QUFDdEIsVUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxZQUFZO0FBQ3pFLGVBQU8sSUFBSSxDQUFDO09BQ2IsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFVBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFVBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakIsVUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ3ZCO0dBQ0YsQ0FBQyxDQUFDLENBQUM7O0FBRUosU0FBTyxnQkFBZ0IsQ0FBQztDQUN6QixDQUFBLEVBQUcsQ0FBQzs7QUFFTCxJQUFJLFNBQVMsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUM7QUFDakQsSUFBSSx1QkFBdUIsR0FBRyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7O0FBRWxGLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztBQUM3QyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BJcEMsWUFBWSxDQUFDOztBQUViLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQzs7QUFFSCxJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFBRSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUFFLFVBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQUFBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxBQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FBRTtHQUFFLEFBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQUUsUUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxBQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxBQUFDLE9BQU8sV0FBVyxDQUFDO0dBQUUsQ0FBQztDQUFFLENBQUEsRUFBRyxDQUFDOztBQUV0akIsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRSxNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxTQUFTLEVBQUUsT0FBTyxNQUFNLEVBQUU7QUFBRSxRQUFJLE1BQU0sR0FBRyxFQUFFO1FBQUUsUUFBUSxHQUFHLEdBQUc7UUFBRSxRQUFRLEdBQUcsR0FBRyxDQUFDLEFBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxBQUFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQUFBQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxVQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxNQUFNO0FBQUUsVUFBRSxHQUFHLE1BQU0sQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEFBQUMsU0FBUyxTQUFTLENBQUM7T0FBRTtLQUFFLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQUUsTUFBTTtBQUFFLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FBQztPQUFFLEFBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQUU7R0FBRTtDQUFFLENBQUM7O0FBRWxwQixTQUFTLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtBQUFFLFNBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0NBQUU7O0FBRWpHLFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUU7QUFBRSxNQUFJLEVBQUUsUUFBUSxZQUFZLFdBQVcsQ0FBQSxBQUFDLEVBQUU7QUFBRSxVQUFNLElBQUksU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7R0FBRTtDQUFFOztBQUV6SixTQUFTLFNBQVMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFO0FBQUUsTUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtBQUFFLFVBQU0sSUFBSSxTQUFTLENBQUMsMERBQTBELEdBQUcsT0FBTyxVQUFVLENBQUMsQ0FBQztHQUFFLEFBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxBQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7Q0FBRTs7QUFFOWUsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU1QixJQUFJLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFekMsSUFBSSxrQkFBa0IsR0FBRyxDQUFDO0lBQ3RCLGlCQUFpQixHQUFHLElBQUk7SUFDeEIsb0JBQW9CLEdBQUcsSUFBSSxDQUFDOzs7Ozs7O0FBT2hDLElBQUksT0FBTyxHQUFHLENBQUMsVUFBVSxlQUFlLEVBQUU7QUFDeEMsV0FBUyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQzs7QUFFcEMsV0FBUyxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRTtBQUNwQyxtQkFBZSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFL0IsUUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLFFBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxJQUFJLG9CQUFvQixDQUFDO0FBQ3RELFFBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFFBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDeEQsUUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUM1QixRQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztHQUN6Qjs7Ozs7Ozs7QUFRRCxjQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDckIsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtBQUN0QyxVQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLFVBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzlCO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxTQUFTO0FBQ2QsU0FBSyxFQUFFLFNBQVMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDckMsVUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQixVQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM3QjtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsWUFBWTtBQUNqQixTQUFLLEVBQUUsU0FBUyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtBQUN4QyxVQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLFVBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2hDO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxVQUFVO0FBQ2YsU0FBSyxFQUFFLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUU7Ozs7QUFJdkMsYUFBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFOztBQUUzQixZQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLFlBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7QUFDL0MsY0FBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0IsTUFBTTtBQUNMLGNBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkU7T0FDRjtBQUNELGFBQU8sSUFBSSxDQUFDO0tBQ2I7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLE9BQU87QUFDWixTQUFLLEVBQUUsU0FBUyxLQUFLLEdBQUc7QUFDdEIsVUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUU7QUFDN0IsWUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7OztBQUd6QixZQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLFlBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDOztBQUVwQixZQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7O0FBRzlDLFlBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDeEQsWUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7T0FDekI7QUFDRCxhQUFPLElBQUksQ0FBQztLQUNiOzs7Ozs7O0dBT0YsRUFBRTtBQUNELE9BQUcsRUFBRSxpQkFBaUI7QUFDdEIsU0FBSyxFQUFFLFNBQVMsZUFBZSxHQUFHOztBQUVoQyxVQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzs7QUFFekIsVUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLGtCQUFrQixFQUFFO0FBQ2pELFlBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztPQUNkOzs7QUFHRCxVQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQzVDOzs7R0FHRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFNBQVM7QUFDZCxTQUFLLEVBQUUsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQzVCLFVBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxrQkFBa0IsQ0FBQztBQUNyRSxVQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsV0FBVyxFQUFFO0FBQzFDLFlBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztPQUNkOztBQUVELFVBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ3BCLFlBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztBQUNoRCxZQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztBQUNuRSxZQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztPQUN4QjtLQUNGO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxtQkFBbUI7QUFDeEIsU0FBSyxFQUFFLFNBQVMsaUJBQWlCLEdBQUc7QUFDbEMsVUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ25CLFlBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQSxBQUFDLENBQUM7QUFDdkYsWUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNELFlBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO09BQ3pCO0tBQ0Y7R0FDRixDQUFDLENBQUMsQ0FBQzs7QUFFSixTQUFPLE9BQU8sQ0FBQztDQUNoQixDQUFBLENBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDOztBQUVoQyxJQUFJLFNBQVMsR0FBRyxDQUFDLFlBQVk7QUFDM0IsV0FBUyxTQUFTLEdBQUc7QUFDbkIsbUJBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7O0FBRWpDLFFBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQzFCLFFBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDN0IsUUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0dBQ25DOztBQUVELGNBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2QixPQUFHLEVBQUUsZ0JBQWdCO0FBQ3JCLFNBQUssRUFBRSxTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsVUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFOztBQUV4QixlQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7T0FDekMsTUFBTTs7QUFFTCxZQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNoRCxlQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7T0FDdkI7S0FDRjtHQUNGLEVBQUU7QUFDRCxPQUFHLEVBQUUsV0FBVztBQUNoQixTQUFLLEVBQUUsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFOztBQUU3QixhQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFBLEdBQUksTUFBTSxDQUFDLENBQUM7S0FDOUU7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsR0FBRyxFQUFFO0FBQzVCLFVBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7O0FBRXRDLFlBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDMUQsZUFBTyxJQUFJLENBQUMsY0FBYyxDQUFDO09BQzVCLE1BQU07O0FBRUwsWUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbkMsWUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFELGVBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztPQUN0QjtLQUNGO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxRQUFRO0FBQ2IsU0FBSyxFQUFFLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFOzs7OztHQUsvQixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRTtBQUNoQyxVQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUU7O0FBRWYsWUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQ3hCLFlBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3BDLGlCQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQyxNQUFNO0FBQ0wsaUJBQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3JFO0FBQ0QsWUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDMUIsWUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QixlQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7T0FDNUIsTUFBTTtBQUNMLFlBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLGVBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztPQUN0QjtLQUNGO0dBQ0YsRUFBRTtBQUNELE9BQUcsRUFBRSxPQUFPO0FBQ1osU0FBSyxFQUFFLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUN6QixhQUFPLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRTtBQUN6QixZQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDaEM7S0FDRjtHQUNGLENBQUMsQ0FBQyxDQUFDOztBQUVKLFNBQU8sU0FBUyxDQUFDO0NBQ2xCLENBQUEsRUFBRyxDQUFDOztBQUVMLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRztBQUNuQixTQUFPLEVBQUUsT0FBTztBQUNoQixXQUFTLEVBQUUsU0FBUztDQUNyQixDQUFDO0FBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxT3BDLFlBQVksQ0FBQzs7QUFFYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDM0MsT0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7O0FBRUgsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZO0FBQUUsV0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQUUsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFBRSxVQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQUFBQyxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLEFBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQUU7R0FBRSxBQUFDLE9BQU8sVUFBVSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtBQUFFLFFBQUksVUFBVSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQUFBQyxJQUFJLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsQUFBQyxPQUFPLFdBQVcsQ0FBQztHQUFFLENBQUM7Q0FBRSxDQUFBLEVBQUcsQ0FBQzs7QUFFdGpCLFNBQVMsc0JBQXNCLENBQUMsR0FBRyxFQUFFO0FBQUUsU0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUM7Q0FBRTs7QUFFakcsU0FBUyxlQUFlLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUFFLE1BQUksRUFBRSxRQUFRLFlBQVksV0FBVyxDQUFBLEFBQUMsRUFBRTtBQUFFLFVBQU0sSUFBSSxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQztHQUFFO0NBQUU7O0FBRXpKLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDOztBQUU3QyxJQUFJLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzs7QUFFekQsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztBQUVuQyxJQUFJLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFL0MsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUV0QyxJQUFJLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFbkQsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUV0QyxJQUFJLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFbkQsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDOztBQUUxQyxJQUFJLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7QUFFdkQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU1QixJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs7QUFFNUMsSUFBSSxZQUFZLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7O0FBRXZELElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQzs7QUFFckMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDOztBQUVuQyxJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDeEIsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ3RDLFNBQU8sR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDO0NBQzVDLE1BQU0sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ3hDLFNBQU8sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDO0NBQ3ZDLE1BQU07QUFDTCxRQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUEsQ0FBRSw2RkFBNkYsQ0FBQyxDQUFDO0NBQzNIOztBQUVEOztBQUVBLElBQUksR0FBRyxJQUFJOzs7QUFFWCxXQUFXLEdBQUcsSUFBSTs7O0FBRWxCLEtBQUssR0FBRyxJQUFJOzs7QUFFWixHQUFHLEdBQUcsSUFBSTs7O0FBRVYsV0FBVyxHQUFHLElBQUk7OztBQUVsQixRQUFRLEdBQUcsSUFBSTs7O0FBRWYsT0FBTyxHQUFHLElBQUk7OztBQUVkLE1BQU0sR0FBRyxJQUFJOzs7QUFFYixPQUFPLEdBQUcsSUFBSTs7O0FBRWQsT0FBTyxHQUFHLElBQUk7Ozs7O0FBSWQsSUFBSSxHQUFHLElBQUk7SUFDUCxZQUFZLEdBQUcsSUFBSTtJQUNuQixvQkFBb0IsR0FBRyxJQUFJO0lBQzNCLElBQUksR0FBRyxJQUFJOzs7QUFHZixjQUFjLEdBQUcsVUFBVSxDQUFDOztBQUU1QixJQUFJLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLFNBQVM7QUFDcEMsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFaEIsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ2pCLFNBQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMvQjs7QUFFRCxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDakIsU0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQy9COztBQUVELFNBQVMsS0FBSyxHQUFHLEVBQUU7O0FBRW5CLElBQUksY0FBYyxHQUFHO0FBQ25CLFFBQU0sRUFBRSxLQUFLO0FBQ2IsYUFBVyxFQUFFLEtBQUs7QUFDbEIsU0FBTyxFQUFFLEtBQUs7Q0FDZixDQUFDOzs7QUFHRixJQUFJLFFBQVEsR0FBRztBQUNiLE1BQUksRUFBRSxTQUFTLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQ2pDLFdBQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQzVELFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ25CLENBQUM7R0FDSDtBQUNELEtBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQy9CLFdBQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BFLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ25CLENBQUM7R0FDSDtBQUNELFlBQVUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQzdDLFdBQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDM0UsWUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDcEIsWUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7S0FDbkIsQ0FBQztHQUNIO0FBQ0QsTUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDakMsUUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzNCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkIsUUFBUSxHQUFHLEVBQUUsQ0FBQzs7QUFFbEIsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMzQyxVQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1VBQ3RCLFFBQVEsR0FBRyxLQUFLLENB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QUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ3pCLE1BQU0sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0QsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsWUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDekIsTUFBTSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDOUQsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDMUIsTUFBTSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDdEUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDMUIsTUFBTTtBQUNMLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQzFCO0tBQ0Y7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRTtBQUMzQixVQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxR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QUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztPQUM5RCxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUMzQixlQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3BELE1BQU0sSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzVCLGVBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDckQsTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFDNUIsZUFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNyRCxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtBQUMxQixlQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ25ELE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO0FBQzNCLGVBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDcEQsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDM0IsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNwRCxNQUFNLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUM3QixlQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3RELE1BQU0sSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQzlCLGVBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxF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QUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQztBQUNILE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7O0FDaENwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNybkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuMkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pEQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzVnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNoUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2WEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzV3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM3U0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcGpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDalFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3JHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNyRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzdGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN0SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMvSEE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3g2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM3Z0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9EQTtBQUNBOzs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDaEJBO0FBQ0E7O0FDREE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzdOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZIQSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkQsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsY0FBYyxDQUFDO0FBQ3pFLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQ2pELElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzs7QUFFdkUsUUFBUSxDQUFDLFNBQVMsRUFBRSxZQUFXO0FBQzdCLElBQUUsQ0FBQyw4QkFBOEIsRUFBRSxZQUFXOztBQUU1QyxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsS0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNmLEtBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hCLEtBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7OztBQUdqQixRQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkIsUUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDOzs7QUFHcEIsVUFBTSxDQUFFLEdBQUcsQ0FBRSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pELFVBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7R0FDbEMsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFXOztBQUU3RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUIsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsUUFBUSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR25CLFlBQU0sQ0FBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ25DO0dBQ0YsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyxnREFBZ0QsRUFBRSxZQUFXOztBQUU5RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsU0FBUyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR3BCLFlBQU0sQ0FBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ3BDO0dBQ0YsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyxnREFBZ0QsRUFBRSxZQUFXOztBQUU5RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsU0FBUyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR3BCLFlBQU0sQ0FBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ3BDO0dBQ0Ys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QyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7S0FBRSxDQUFDLENBQUM7R0FDakQsQ0FBQTtDQUNGIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qIVxuICogQG92ZXJ2aWV3IGVzNi1wcm9taXNlIC0gYSB0aW55IGltcGxlbWVudGF0aW9uIG9mIFByb21pc2VzL0ErLlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTQgWWVodWRhIEthdHosIFRvbSBEYWxlLCBTdGVmYW4gUGVubmVyIGFuZCBjb250cmlidXRvcnMgKENvbnZlcnNpb24gdG8gRVM2IEFQSSBieSBKYWtlIEFyY2hpYmFsZClcbiAqIEBsaWNlbnNlICAgTGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2VcbiAqICAgICAgICAgICAgU2VlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qYWtlYXJjaGliYWxkL2VzNi1wcm9taXNlL21hc3Rlci9MSUNFTlNFXG4gKiBAdmVyc2lvbiAgIDMuMC4yXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4oZnVuY3Rpb24gKCkge1xuICBcInVzZSBzdHJpY3RcIjtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRvYmplY3RPckZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNNYXliZVRoZW5hYmxlKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGw7XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KSB7XG4gICAgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheSA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0FycmF5ID0gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPSAwO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJHRvU3RyaW5nID0gKHt9KS50b1N0cmluZztcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQ7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkY3VzdG9tU2NoZWR1bGVyRm47XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwID0gZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgYXJnKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2xpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW5dID0gY2FsbGJhY2s7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2xpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gKyAxXSA9IGFyZztcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuICs9IDI7XG4gICAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPT09IDIpIHtcbiAgICAgIC8vIElmIGxlbiBpcyAyLCB0aGF0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byBzY2hlZHVsZSBhbiBhc3luYyBmbHVzaC5cbiAgICAgIC8vIElmIGFkZGl0aW9uYWwgY2FsbGJhY2tzIGFyZSBxdWV1ZWQgYmVmb3JlIHRoZSBxdWV1ZSBpcyBmbHVzaGVkLCB0aGV5XG4gICAgICAvLyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIGZsdXNoIHRoYXQgd2UgYXJlIHNjaGVkdWxpbmcuXG4gICAgICBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbihsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHNjaGVkdWxlRmx1c2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldFNjaGVkdWxlcihzY2hlZHVsZUZuKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuID0gc2NoZWR1bGVGbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRBc2FwKGFzYXBGbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwID0gYXNhcEZuO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB1bmRlZmluZWQ7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3Nlckdsb2JhbCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93IHx8IHt9O1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3Nlckdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGlzTm9kZSA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiAoe30pLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJztcblxuICAvLyB0ZXN0IGZvciB3ZWIgd29ya2VyIGJ1dCBub3QgaW4gSUUxMFxuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGlzV29ya2VyID0gdHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIE1lc3NhZ2VDaGFubmVsICE9PSAndW5kZWZpbmVkJztcblxuICAvLyBub2RlXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VOZXh0VGljaygpIHtcbiAgICAvLyBub2RlIHZlcnNpb24gMC4xMC54IGRpc3BsYXlzIGEgZGVwcmVjYXRpb24gd2FybmluZyB3aGVuIG5leHRUaWNrIGlzIHVzZWQgcmVjdXJzaXZlbHlcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2N1am9qcy93aGVuL2lzc3Vlcy80MTAgZm9yIGRldGFpbHNcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICAvLyB2ZXJ0eFxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlVmVydHhUaW1lcigpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHZlcnR4TmV4dChsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTXV0YXRpb25PYnNlcnZlcigpIHtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDA7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlcihsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IGl0ZXJhdGlvbnMgPSArK2l0ZXJhdGlvbnMgJSAyO1xuICAgIH07XG4gIH1cblxuICAvLyB3ZWIgd29ya2VyXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VNZXNzYWdlQ2hhbm5lbCgpIHtcbiAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlU2V0VGltZW91dCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2V0VGltZW91dChsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gsIDEpO1xuICAgIH07XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlID0gbmV3IEFycmF5KDEwMDApO1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2goKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuOyBpICs9IDIpIHtcbiAgICAgIHZhciBjYWxsYmFjayA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtpXTtcbiAgICAgIHZhciBhcmcgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaSArIDFdO1xuXG4gICAgICBjYWxsYmFjayhhcmcpO1xuXG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaV0gPSB1bmRlZmluZWQ7XG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaSArIDFdID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJGF0dGVtcHRWZXJ0eCgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIHIgPSByZXF1aXJlO1xuICAgICAgdmFyIHZlcnR4ID0gcigndmVydHgnKTtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQgPSB2ZXJ0eC5ydW5Pbkxvb3AgfHwgdmVydHgucnVuT25Db250ZXh0O1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VWZXJ0eFRpbWVyKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VTZXRUaW1lb3V0KCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoO1xuICAvLyBEZWNpZGUgd2hhdCBhc3luYyBtZXRob2QgdG8gdXNlIHRvIHRyaWdnZXJpbmcgcHJvY2Vzc2luZyBvZiBxdWV1ZWQgY2FsbGJhY2tzOlxuICBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGlzTm9kZSkge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU5leHRUaWNrKCk7XG4gIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHNjaGVkdWxlRmx1c2ggPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTXV0YXRpb25PYnNlcnZlcigpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc1dvcmtlcikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU1lc3NhZ2VDaGFubmVsKCk7XG4gIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJXaW5kb3cgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGF0dGVtcHRWZXJ0eCgpO1xuICB9IGVsc2Uge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVNldFRpbWVvdXQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3AoKSB7fVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HID0gdm9pZCAwO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEID0gMTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEID0gMjtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IgPSBuZXcgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRXJyb3JPYmplY3QoKTtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzZWxmRnVsZmlsbG1lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoXCJZb3UgY2Fubm90IHJlc29sdmUgYSBwcm9taXNlIHdpdGggaXRzZWxmXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkY2Fubm90UmV0dXJuT3duKCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKCdBIHByb21pc2VzIGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuJyk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRnZXRUaGVuKHByb21pc2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHByb21pc2UudGhlbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRHRVRfVEhFTl9FUlJPUjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlUaGVuKHRoZW4sIHZhbHVlLCBmdWxmaWxsbWVudEhhbmRsZXIsIHJlamVjdGlvbkhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgdGhlbi5jYWxsKHZhbHVlLCBmdWxmaWxsbWVudEhhbmRsZXIsIHJlamVjdGlvbkhhbmRsZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZUZvcmVpZ25UaGVuYWJsZShwcm9taXNlLCB0aGVuYWJsZSwgdGhlbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICB2YXIgc2VhbGVkID0gZmFsc2U7XG4gICAgICB2YXIgZXJyb3IgPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlUaGVuKHRoZW4sIHRoZW5hYmxlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHNlYWxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWFsZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhlbmFibGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgaWYgKHNlYWxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWFsZWQgPSB0cnVlO1xuXG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgICAgfSwgJ1NldHRsZTogJyArIChwcm9taXNlLl9sYWJlbCB8fCAnIHVua25vd24gcHJvbWlzZScpKTtcblxuICAgICAgaWYgKCFzZWFsZWQgJiYgZXJyb3IpIHtcbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LCBwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZU93blRoZW5hYmxlKHByb21pc2UsIHRoZW5hYmxlKSB7XG4gICAgaWYgKHRoZW5hYmxlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIHRoZW5hYmxlLl9yZXN1bHQpO1xuICAgIH0gZWxzZSBpZiAodGhlbmFibGUuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHRoZW5hYmxlLl9yZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUodGhlbmFibGUsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZU1heWJlVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSkge1xuICAgIGlmIChtYXliZVRoZW5hYmxlLmNvbnN0cnVjdG9yID09PSBwcm9taXNlLmNvbnN0cnVjdG9yKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVPd25UaGVuYWJsZShwcm9taXNlLCBtYXliZVRoZW5hYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRoZW4gPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRnZXRUaGVuKG1heWJlVGhlbmFibGUpO1xuXG4gICAgICBpZiAodGhlbiA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SLmVycm9yKTtcbiAgICAgIH0gZWxzZSBpZiAodGhlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSk7XG4gICAgICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNGdW5jdGlvbih0aGVuKSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVGb3JlaWduVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSwgdGhlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIG1heWJlVGhlbmFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpIHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzZWxmRnVsZmlsbG1lbnQoKSk7XG4gICAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJG9iamVjdE9yRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVNYXliZVRoZW5hYmxlKHByb21pc2UsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaFJlamVjdGlvbihwcm9taXNlKSB7XG4gICAgaWYgKHByb21pc2UuX29uZXJyb3IpIHtcbiAgICAgIHByb21pc2UuX29uZXJyb3IocHJvbWlzZS5fcmVzdWx0KTtcbiAgICB9XG5cbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoKHByb21pc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSkge1xuICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX3Jlc3VsdCA9IHZhbHVlO1xuICAgIHByb21pc2UuX3N0YXRlID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEO1xuXG4gICAgaWYgKHByb21pc2UuX3N1YnNjcmliZXJzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaCwgcHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbikge1xuICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcm9taXNlLl9zdGF0ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEO1xuICAgIHByb21pc2UuX3Jlc3VsdCA9IHJlYXNvbjtcblxuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2hSZWplY3Rpb24sIHByb21pc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHBhcmVudCwgY2hpbGQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKSB7XG4gICAgdmFyIHN1YnNjcmliZXJzID0gcGFyZW50Ll9zdWJzY3JpYmVycztcbiAgICB2YXIgbGVuZ3RoID0gc3Vic2NyaWJlcnMubGVuZ3RoO1xuXG4gICAgcGFyZW50Ll9vbmVycm9yID0gbnVsbDtcblxuICAgIHN1YnNjcmliZXJzW2xlbmd0aF0gPSBjaGlsZDtcbiAgICBzdWJzY3JpYmVyc1tsZW5ndGggKyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRURdID0gb25GdWxmaWxsbWVudDtcbiAgICBzdWJzY3JpYmVyc1tsZW5ndGggKyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRF0gPSBvblJlamVjdGlvbjtcblxuICAgIGlmIChsZW5ndGggPT09IDAgJiYgcGFyZW50Ll9zdGF0ZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaCwgcGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoKHByb21pc2UpIHtcbiAgICB2YXIgc3Vic2NyaWJlcnMgPSBwcm9taXNlLl9zdWJzY3JpYmVycztcbiAgICB2YXIgc2V0dGxlZCA9IHByb21pc2UuX3N0YXRlO1xuXG4gICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjaGlsZCxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGRldGFpbCA9IHByb21pc2UuX3Jlc3VsdDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2NyaWJlcnMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgIGNoaWxkID0gc3Vic2NyaWJlcnNbaV07XG4gICAgICBjYWxsYmFjayA9IHN1YnNjcmliZXJzW2kgKyBzZXR0bGVkXTtcblxuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHNldHRsZWQsIGNoaWxkLCBjYWxsYmFjaywgZGV0YWlsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKGRldGFpbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvbWlzZS5fc3Vic2NyaWJlcnMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEVycm9yT2JqZWN0KCkge1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUiA9IG5ldyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRFcnJvck9iamVjdCgpO1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHRyeUNhdGNoKGNhbGxiYWNrLCBkZXRhaWwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGRldGFpbCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SLmVycm9yID0gZTtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRUUllfQ0FUQ0hfRVJST1I7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaW52b2tlQ2FsbGJhY2soc2V0dGxlZCwgcHJvbWlzZSwgY2FsbGJhY2ssIGRldGFpbCkge1xuICAgIHZhciBoYXNDYWxsYmFjayA9IGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNGdW5jdGlvbihjYWxsYmFjayksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgc3VjY2VlZGVkLFxuICAgICAgICBmYWlsZWQ7XG5cbiAgICBpZiAoaGFzQ2FsbGJhY2spIHtcbiAgICAgIHZhbHVlID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5Q2F0Y2goY2FsbGJhY2ssIGRldGFpbCk7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SKSB7XG4gICAgICAgIGZhaWxlZCA9IHRydWU7XG4gICAgICAgIGVycm9yID0gdmFsdWUuZXJyb3I7XG4gICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9taXNlID09PSB2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkY2Fubm90UmV0dXJuT3duKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZGV0YWlsO1xuICAgICAgc3VjY2VlZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9IGVsc2UgaWYgKGhhc0NhbGxiYWNrICYmIHN1Y2NlZWRlZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoZmFpbGVkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9IGVsc2UgaWYgKHNldHRsZWQgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2V0dGxlZCA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGluaXRpYWxpemVQcm9taXNlKHByb21pc2UsIHJlc29sdmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc29sdmVyKGZ1bmN0aW9uIHJlc29sdmVQcm9taXNlKHZhbHVlKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSwgZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShyZWFzb24pIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IoQ29uc3RydWN0b3IsIGlucHV0KSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgZW51bWVyYXRvci5faW5zdGFuY2VDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAgIGVudW1lcmF0b3IucHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcblxuICAgIGlmIChlbnVtZXJhdG9yLl92YWxpZGF0ZUlucHV0KGlucHV0KSkge1xuICAgICAgZW51bWVyYXRvci5faW5wdXQgPSBpbnB1dDtcbiAgICAgIGVudW1lcmF0b3IubGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgICAgZW51bWVyYXRvci5fcmVtYWluaW5nID0gaW5wdXQubGVuZ3RoO1xuXG4gICAgICBlbnVtZXJhdG9yLl9pbml0KCk7XG5cbiAgICAgIGlmIChlbnVtZXJhdG9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudW1lcmF0b3IubGVuZ3RoID0gZW51bWVyYXRvci5sZW5ndGggfHwgMDtcbiAgICAgICAgZW51bWVyYXRvci5fZW51bWVyYXRlKCk7XG4gICAgICAgIGlmIChlbnVtZXJhdG9yLl9yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QoZW51bWVyYXRvci5wcm9taXNlLCBlbnVtZXJhdG9yLl92YWxpZGF0aW9uRXJyb3IoKSk7XG4gICAgfVxuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheShpbnB1dCk7XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0aW9uRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcignQXJyYXkgTWV0aG9kcyBtdXN0IGJlIHByb3ZpZGVkIGFuIEFycmF5Jyk7XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX3Jlc3VsdCA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3I7XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9lbnVtZXJhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgdmFyIGxlbmd0aCA9IGVudW1lcmF0b3IubGVuZ3RoO1xuICAgIHZhciBwcm9taXNlID0gZW51bWVyYXRvci5wcm9taXNlO1xuICAgIHZhciBpbnB1dCA9IGVudW1lcmF0b3IuX2lucHV0O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HICYmIGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgZW51bWVyYXRvci5fZWFjaEVudHJ5KGlucHV0W2ldLCBpKTtcbiAgICB9XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9lYWNoRW50cnkgPSBmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG4gICAgdmFyIGMgPSBlbnVtZXJhdG9yLl9pbnN0YW5jZUNvbnN0cnVjdG9yO1xuXG4gICAgaWYgKGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNNYXliZVRoZW5hYmxlKGVudHJ5KSkge1xuICAgICAgaWYgKGVudHJ5LmNvbnN0cnVjdG9yID09PSBjICYmIGVudHJ5Ll9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgICBlbnRyeS5fb25lcnJvciA9IG51bGw7XG4gICAgICAgIGVudW1lcmF0b3IuX3NldHRsZWRBdChlbnRyeS5fc3RhdGUsIGksIGVudHJ5Ll9yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW51bWVyYXRvci5fd2lsbFNldHRsZUF0KGMucmVzb2x2ZShlbnRyeSksIGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbnVtZXJhdG9yLl9yZW1haW5pbmctLTtcbiAgICAgIGVudW1lcmF0b3IuX3Jlc3VsdFtpXSA9IGVudHJ5O1xuICAgIH1cbiAgfTtcblxuICBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkRW51bWVyYXRvci5wcm90b3R5cGUuX3NldHRsZWRBdCA9IGZ1bmN0aW9uIChzdGF0ZSwgaSwgdmFsdWUpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG4gICAgdmFyIHByb21pc2UgPSBlbnVtZXJhdG9yLnByb21pc2U7XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIGVudW1lcmF0b3IuX3JlbWFpbmluZy0tO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnVtZXJhdG9yLl9yZXN1bHRbaV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW51bWVyYXRvci5fcmVtYWluaW5nID09PSAwKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgfVxuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fd2lsbFNldHRsZUF0ID0gZnVuY3Rpb24gKHByb21pc2UsIGkpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG5cbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUocHJvbWlzZSwgdW5kZWZpbmVkLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGVudW1lcmF0b3IuX3NldHRsZWRBdChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQsIGksIHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQsIGksIHJlYXNvbik7XG4gICAgfSk7XG4gIH07XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkYWxsKGVudHJpZXMpIHtcbiAgICByZXR1cm4gbmV3IGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRkZWZhdWx0KHRoaXMsIGVudHJpZXMpLnByb21pc2U7XG4gIH1cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkYWxsO1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRyYWNlKGVudHJpZXMpIHtcbiAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcblxuICAgIGlmICghbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0FycmF5KGVudHJpZXMpKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLicpKTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG9uRnVsZmlsbG1lbnQodmFsdWUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uUmVqZWN0aW9uKHJlYXNvbikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HICYmIGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKENvbnN0cnVjdG9yLnJlc29sdmUoZW50cmllc1tpXSksIHVuZGVmaW5lZCwgb25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkcmFjZTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkcmVzb2x2ZShvYmplY3QpIHtcbiAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cbiAgICBpZiAob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gQ29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCBvYmplY3QpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZXNvbHZlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkcmVzb2x2ZTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRyZWplY3QocmVhc29uKSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gbmV3IENvbnN0cnVjdG9yKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3ApO1xuICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZWplY3QkJGRlZmF1bHQgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZWplY3QkJHJlamVjdDtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGNvdW50ZXIgPSAwO1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc1Jlc29sdmVyKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYSByZXNvbHZlciBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIHByb21pc2UgY29uc3RydWN0b3InKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc05ldygpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uXCIpO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2U7XG4gIC8qKlxuICAgIFByb21pc2Ugb2JqZWN0cyByZXByZXNlbnQgdGhlIGV2ZW50dWFsIHJlc3VsdCBvZiBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uLiBUaGVcbiAgICBwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyBgdGhlbmAgbWV0aG9kLCB3aGljaFxuICAgIHJlZ2lzdGVycyBjYWxsYmFja3MgdG8gcmVjZWl2ZSBlaXRoZXIgYSBwcm9taXNlJ3MgZXZlbnR1YWwgdmFsdWUgb3IgdGhlIHJlYXNvblxuICAgIHdoeSB0aGUgcHJvbWlzZSBjYW5ub3QgYmUgZnVsZmlsbGVkLlxuICAgICBUZXJtaW5vbG9neVxuICAgIC0tLS0tLS0tLS0tXG4gICAgIC0gYHByb21pc2VgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB3aXRoIGEgYHRoZW5gIG1ldGhvZCB3aG9zZSBiZWhhdmlvciBjb25mb3JtcyB0byB0aGlzIHNwZWNpZmljYXRpb24uXG4gICAgLSBgdGhlbmFibGVgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYSBgdGhlbmAgbWV0aG9kLlxuICAgIC0gYHZhbHVlYCBpcyBhbnkgbGVnYWwgSmF2YVNjcmlwdCB2YWx1ZSAoaW5jbHVkaW5nIHVuZGVmaW5lZCwgYSB0aGVuYWJsZSwgb3IgYSBwcm9taXNlKS5cbiAgICAtIGBleGNlcHRpb25gIGlzIGEgdmFsdWUgdGhhdCBpcyB0aHJvd24gdXNpbmcgdGhlIHRocm93IHN0YXRlbWVudC5cbiAgICAtIGByZWFzb25gIGlzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2h5IGEgcHJvbWlzZSB3YXMgcmVqZWN0ZWQuXG4gICAgLSBgc2V0dGxlZGAgdGhlIGZpbmFsIHJlc3Rpbmcgc3RhdGUgb2YgYSBwcm9taXNlLCBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuXG4gICAgIEEgcHJvbWlzZSBjYW4gYmUgaW4gb25lIG9mIHRocmVlIHN0YXRlczogcGVuZGluZywgZnVsZmlsbGVkLCBvciByZWplY3RlZC5cbiAgICAgUHJvbWlzZXMgdGhhdCBhcmUgZnVsZmlsbGVkIGhhdmUgYSBmdWxmaWxsbWVudCB2YWx1ZSBhbmQgYXJlIGluIHRoZSBmdWxmaWxsZWRcbiAgICBzdGF0ZS4gIFByb21pc2VzIHRoYXQgYXJlIHJlamVjdGVkIGhhdmUgYSByZWplY3Rpb24gcmVhc29uIGFuZCBhcmUgaW4gdGhlXG4gICAgcmVqZWN0ZWQgc3RhdGUuICBBIGZ1bGZpbGxtZW50IHZhbHVlIGlzIG5ldmVyIGEgdGhlbmFibGUuXG4gICAgIFByb21pc2VzIGNhbiBhbHNvIGJlIHNhaWQgdG8gKnJlc29sdmUqIGEgdmFsdWUuICBJZiB0aGlzIHZhbHVlIGlzIGFsc28gYVxuICAgIHByb21pc2UsIHRoZW4gdGhlIG9yaWdpbmFsIHByb21pc2UncyBzZXR0bGVkIHN0YXRlIHdpbGwgbWF0Y2ggdGhlIHZhbHVlJ3NcbiAgICBzZXR0bGVkIHN0YXRlLiAgU28gYSBwcm9taXNlIHRoYXQgKnJlc29sdmVzKiBhIHByb21pc2UgdGhhdCByZWplY3RzIHdpbGxcbiAgICBpdHNlbGYgcmVqZWN0LCBhbmQgYSBwcm9taXNlIHRoYXQgKnJlc29sdmVzKiBhIHByb21pc2UgdGhhdCBmdWxmaWxscyB3aWxsXG4gICAgaXRzZWxmIGZ1bGZpbGwuXG4gICAgICBCYXNpYyBVc2FnZTpcbiAgICAtLS0tLS0tLS0tLS1cbiAgICAgYGBganNcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgLy8gb24gc3VjY2Vzc1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgLy8gb24gZmFpbHVyZVxuICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgfSk7XG4gICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgLy8gb24gZnVsZmlsbG1lbnRcbiAgICB9LCBmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgIC8vIG9uIHJlamVjdGlvblxuICAgIH0pO1xuICAgIGBgYFxuICAgICBBZHZhbmNlZCBVc2FnZTpcbiAgICAtLS0tLS0tLS0tLS0tLS1cbiAgICAgUHJvbWlzZXMgc2hpbmUgd2hlbiBhYnN0cmFjdGluZyBhd2F5IGFzeW5jaHJvbm91cyBpbnRlcmFjdGlvbnMgc3VjaCBhc1xuICAgIGBYTUxIdHRwUmVxdWVzdGBzLlxuICAgICBgYGBqc1xuICAgIGZ1bmN0aW9uIGdldEpTT04odXJsKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KXtcbiAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2pzb24nO1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PT0gdGhpcy5ET05FKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignZ2V0SlNPTjogYCcgKyB1cmwgKyAnYCBmYWlsZWQgd2l0aCBzdGF0dXM6IFsnICsgdGhpcy5zdGF0dXMgKyAnXScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgIGdldEpTT04oJy9wb3N0cy5qc29uJykudGhlbihmdW5jdGlvbihqc29uKSB7XG4gICAgICAvLyBvbiBmdWxmaWxsbWVudFxuICAgIH0sIGZ1bmN0aW9uKHJlYXNvbikge1xuICAgICAgLy8gb24gcmVqZWN0aW9uXG4gICAgfSk7XG4gICAgYGBgXG4gICAgIFVubGlrZSBjYWxsYmFja3MsIHByb21pc2VzIGFyZSBncmVhdCBjb21wb3NhYmxlIHByaW1pdGl2ZXMuXG4gICAgIGBgYGpzXG4gICAgUHJvbWlzZS5hbGwoW1xuICAgICAgZ2V0SlNPTignL3Bvc3RzJyksXG4gICAgICBnZXRKU09OKCcvY29tbWVudHMnKVxuICAgIF0pLnRoZW4oZnVuY3Rpb24odmFsdWVzKXtcbiAgICAgIHZhbHVlc1swXSAvLyA9PiBwb3N0c0pTT05cbiAgICAgIHZhbHVlc1sxXSAvLyA9PiBjb21tZW50c0pTT05cbiAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH0pO1xuICAgIGBgYFxuICAgICBAY2xhc3MgUHJvbWlzZVxuICAgIEBwYXJhbSB7ZnVuY3Rpb259IHJlc29sdmVyXG4gICAgVXNlZnVsIGZvciB0b29saW5nLlxuICAgIEBjb25zdHJ1Y3RvclxuICAqL1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZShyZXNvbHZlcikge1xuICAgIHRoaXMuX2lkID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGNvdW50ZXIrKztcbiAgICB0aGlzLl9zdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9yZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcblxuICAgIGlmIChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wICE9PSByZXNvbHZlcikge1xuICAgICAgaWYgKCFsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24ocmVzb2x2ZXIpKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc1Jlc29sdmVyKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZSkpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJG5lZWRzTmV3KCk7XG4gICAgICB9XG5cbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGluaXRpYWxpemVQcm9taXNlKHRoaXMsIHJlc29sdmVyKTtcbiAgICB9XG4gIH1cblxuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5hbGwgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGRlZmF1bHQ7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLnJhY2UgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5yZXNvbHZlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucmVqZWN0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5fc2V0U2NoZWR1bGVyID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldFNjaGVkdWxlcjtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX3NldEFzYXAgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2V0QXNhcDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX2FzYXAgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcDtcblxuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLFxuXG4gICAgLyoqXG4gICAgICBUaGUgcHJpbWFyeSB3YXkgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhIHByb21pc2UgaXMgdGhyb3VnaCBpdHMgYHRoZW5gIG1ldGhvZCxcbiAgICAgIHdoaWNoIHJlZ2lzdGVycyBjYWxsYmFja3MgdG8gcmVjZWl2ZSBlaXRoZXIgYSBwcm9taXNlJ3MgZXZlbnR1YWwgdmFsdWUgb3IgdGhlXG4gICAgICByZWFzb24gd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbih1c2VyKXtcbiAgICAgICAgLy8gdXNlciBpcyBhdmFpbGFibGVcbiAgICAgIH0sIGZ1bmN0aW9uKHJlYXNvbil7XG4gICAgICAgIC8vIHVzZXIgaXMgdW5hdmFpbGFibGUsIGFuZCB5b3UgYXJlIGdpdmVuIHRoZSByZWFzb24gd2h5XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIENoYWluaW5nXG4gICAgICAtLS0tLS0tLVxuICAgICAgIFRoZSByZXR1cm4gdmFsdWUgb2YgYHRoZW5gIGlzIGl0c2VsZiBhIHByb21pc2UuICBUaGlzIHNlY29uZCwgJ2Rvd25zdHJlYW0nXG4gICAgICBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmlyc3QgcHJvbWlzZSdzIGZ1bGZpbGxtZW50XG4gICAgICBvciByZWplY3Rpb24gaGFuZGxlciwgb3IgcmVqZWN0ZWQgaWYgdGhlIGhhbmRsZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgICAgICBgYGBqc1xuICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHJldHVybiB1c2VyLm5hbWU7XG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIHJldHVybiAnZGVmYXVsdCBuYW1lJztcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHVzZXJOYW1lKSB7XG4gICAgICAgIC8vIElmIGBmaW5kVXNlcmAgZnVsZmlsbGVkLCBgdXNlck5hbWVgIHdpbGwgYmUgdGhlIHVzZXIncyBuYW1lLCBvdGhlcndpc2UgaXRcbiAgICAgICAgLy8gd2lsbCBiZSBgJ2RlZmF1bHQgbmFtZSdgXG4gICAgICB9KTtcbiAgICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3VuZCB1c2VyLCBidXQgc3RpbGwgdW5oYXBweScpO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BmaW5kVXNlcmAgcmVqZWN0ZWQgYW5kIHdlJ3JlIHVuaGFwcHknKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIC8vIG5ldmVyIHJlYWNoZWRcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgLy8gaWYgYGZpbmRVc2VyYCBmdWxmaWxsZWQsIGByZWFzb25gIHdpbGwgYmUgJ0ZvdW5kIHVzZXIsIGJ1dCBzdGlsbCB1bmhhcHB5Jy5cbiAgICAgICAgLy8gSWYgYGZpbmRVc2VyYCByZWplY3RlZCwgYHJlYXNvbmAgd2lsbCBiZSAnYGZpbmRVc2VyYCByZWplY3RlZCBhbmQgd2UncmUgdW5oYXBweScuXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgSWYgdGhlIGRvd25zdHJlYW0gcHJvbWlzZSBkb2VzIG5vdCBzcGVjaWZ5IGEgcmVqZWN0aW9uIGhhbmRsZXIsIHJlamVjdGlvbiByZWFzb25zIHdpbGwgYmUgcHJvcGFnYXRlZCBmdXJ0aGVyIGRvd25zdHJlYW0uXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgUGVkYWdvZ2ljYWxFeGNlcHRpb24oJ1Vwc3RyZWFtIGVycm9yJyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIFRoZSBgUGVkZ2Fnb2NpYWxFeGNlcHRpb25gIGlzIHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgZG93biB0byBoZXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEFzc2ltaWxhdGlvblxuICAgICAgLS0tLS0tLS0tLS0tXG4gICAgICAgU29tZXRpbWVzIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byBwcm9wYWdhdGUgdG8gYSBkb3duc3RyZWFtIHByb21pc2UgY2FuIG9ubHkgYmVcbiAgICAgIHJldHJpZXZlZCBhc3luY2hyb25vdXNseS4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgcmV0dXJuaW5nIGEgcHJvbWlzZSBpbiB0aGVcbiAgICAgIGZ1bGZpbGxtZW50IG9yIHJlamVjdGlvbiBoYW5kbGVyLiBUaGUgZG93bnN0cmVhbSBwcm9taXNlIHdpbGwgdGhlbiBiZSBwZW5kaW5nXG4gICAgICB1bnRpbCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBzZXR0bGVkLiBUaGlzIGlzIGNhbGxlZCAqYXNzaW1pbGF0aW9uKi5cbiAgICAgICBgYGBqc1xuICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHJldHVybiBmaW5kQ29tbWVudHNCeUF1dGhvcih1c2VyKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbW1lbnRzKSB7XG4gICAgICAgIC8vIFRoZSB1c2VyJ3MgY29tbWVudHMgYXJlIG5vdyBhdmFpbGFibGVcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgSWYgdGhlIGFzc2ltbGlhdGVkIHByb21pc2UgcmVqZWN0cywgdGhlbiB0aGUgZG93bnN0cmVhbSBwcm9taXNlIHdpbGwgYWxzbyByZWplY3QuXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gZmluZENvbW1lbnRzQnlBdXRob3IodXNlcik7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykge1xuICAgICAgICAvLyBJZiBgZmluZENvbW1lbnRzQnlBdXRob3JgIGZ1bGZpbGxzLCB3ZSdsbCBoYXZlIHRoZSB2YWx1ZSBoZXJlXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIElmIGBmaW5kQ29tbWVudHNCeUF1dGhvcmAgcmVqZWN0cywgd2UnbGwgaGF2ZSB0aGUgcmVhc29uIGhlcmVcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgU2ltcGxlIEV4YW1wbGVcbiAgICAgIC0tLS0tLS0tLS0tLS0tXG4gICAgICAgU3luY2hyb25vdXMgRXhhbXBsZVxuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gZmluZFJlc3VsdCgpO1xuICAgICAgICAvLyBzdWNjZXNzXG4gICAgICB9IGNhdGNoKHJlYXNvbikge1xuICAgICAgICAvLyBmYWlsdXJlXG4gICAgICB9XG4gICAgICBgYGBcbiAgICAgICBFcnJiYWNrIEV4YW1wbGVcbiAgICAgICBgYGBqc1xuICAgICAgZmluZFJlc3VsdChmdW5jdGlvbihyZXN1bHQsIGVycil7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAvLyBmYWlsdXJlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFByb21pc2UgRXhhbXBsZTtcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICBmaW5kUmVzdWx0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpe1xuICAgICAgICAvLyBzdWNjZXNzXG4gICAgICB9LCBmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyBmYWlsdXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEFkdmFuY2VkIEV4YW1wbGVcbiAgICAgIC0tLS0tLS0tLS0tLS0tXG4gICAgICAgU3luY2hyb25vdXMgRXhhbXBsZVxuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIHZhciBhdXRob3IsIGJvb2tzO1xuICAgICAgIHRyeSB7XG4gICAgICAgIGF1dGhvciA9IGZpbmRBdXRob3IoKTtcbiAgICAgICAgYm9va3MgID0gZmluZEJvb2tzQnlBdXRob3IoYXV0aG9yKTtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfVxuICAgICAgYGBgXG4gICAgICAgRXJyYmFjayBFeGFtcGxlXG4gICAgICAgYGBganNcbiAgICAgICBmdW5jdGlvbiBmb3VuZEJvb2tzKGJvb2tzKSB7XG4gICAgICAgfVxuICAgICAgIGZ1bmN0aW9uIGZhaWx1cmUocmVhc29uKSB7XG4gICAgICAgfVxuICAgICAgIGZpbmRBdXRob3IoZnVuY3Rpb24oYXV0aG9yLCBlcnIpe1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgIC8vIGZhaWx1cmVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmluZEJvb29rc0J5QXV0aG9yKGF1dGhvciwgZnVuY3Rpb24oYm9va3MsIGVycikge1xuICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3VuZEJvb2tzKGJvb2tzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoKHJlYXNvbikge1xuICAgICAgICAgICAgICAgICAgZmFpbHVyZShyZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdWNjZXNzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgUHJvbWlzZSBFeGFtcGxlO1xuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIGZpbmRBdXRob3IoKS5cbiAgICAgICAgdGhlbihmaW5kQm9va3NCeUF1dGhvcikuXG4gICAgICAgIHRoZW4oZnVuY3Rpb24oYm9va3Mpe1xuICAgICAgICAgIC8vIGZvdW5kIGJvb2tzXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBAbWV0aG9kIHRoZW5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb259IG9uRnVsZmlsbGVkXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBvblJlamVjdGVkXG4gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuXG4gICAgICBAcmV0dXJuIHtQcm9taXNlfVxuICAgICovXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbikge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXM7XG4gICAgICB2YXIgc3RhdGUgPSBwYXJlbnQuX3N0YXRlO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCAmJiAhb25GdWxmaWxsbWVudCB8fCBzdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQgJiYgIW9uUmVqZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGQgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJlbnQuX3Jlc3VsdDtcblxuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50c1tzdGF0ZSAtIDFdO1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaW52b2tlQ2FsbGJhY2soc3RhdGUsIGNoaWxkLCBjYWxsYmFjaywgcmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUocGFyZW50LCBjaGlsZCwgb25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAgYGNhdGNoYCBpcyBzaW1wbHkgc3VnYXIgZm9yIGB0aGVuKHVuZGVmaW5lZCwgb25SZWplY3Rpb24pYCB3aGljaCBtYWtlcyBpdCB0aGUgc2FtZVxuICAgICAgYXMgdGhlIGNhdGNoIGJsb2NrIG9mIGEgdHJ5L2NhdGNoIHN0YXRlbWVudC5cbiAgICAgICBgYGBqc1xuICAgICAgZnVuY3Rpb24gZmluZEF1dGhvcigpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkbid0IGZpbmQgdGhhdCBhdXRob3InKTtcbiAgICAgIH1cbiAgICAgICAvLyBzeW5jaHJvbm91c1xuICAgICAgdHJ5IHtcbiAgICAgICAgZmluZEF1dGhvcigpO1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH1cbiAgICAgICAvLyBhc3luYyB3aXRoIHByb21pc2VzXG4gICAgICBmaW5kQXV0aG9yKCkuY2F0Y2goZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgQG1ldGhvZCBjYXRjaFxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3Rpb25cbiAgICAgIFVzZWZ1bCBmb3IgdG9vbGluZy5cbiAgICAgIEByZXR1cm4ge1Byb21pc2V9XG4gICAgKi9cbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiBfY2F0Y2gob25SZWplY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3Rpb24pO1xuICAgIH1cbiAgfTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRwb2x5ZmlsbCgpIHtcbiAgICB2YXIgbG9jYWw7XG5cbiAgICBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2FsID0gZ2xvYmFsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsb2NhbCA9IHNlbGY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvY2FsID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwb2x5ZmlsbCBmYWlsZWQgYmVjYXVzZSBnbG9iYWwgb2JqZWN0IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgUCA9IGxvY2FsLlByb21pc2U7XG5cbiAgICBpZiAoUCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUC5yZXNvbHZlKCkpID09PSAnW29iamVjdCBQcm9taXNlXScgJiYgIVAuY2FzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvY2FsLlByb21pc2UgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdDtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRwb2x5ZmlsbDtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZSA9IHtcbiAgICAnUHJvbWlzZSc6IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRkZWZhdWx0LFxuICAgICdwb2x5ZmlsbCc6IGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdFxuICB9O1xuXG4gIC8qIGdsb2JhbCBkZWZpbmU6dHJ1ZSBtb2R1bGU6dHJ1ZSB3aW5kb3c6IHRydWUgKi9cbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkge1xuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGVbJ2V4cG9ydHMnXSkge1xuICAgIG1vZHVsZVsnZXhwb3J0cyddID0gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aGlzWydFUzZQcm9taXNlJ10gPSBsaWIkZXM2JHByb21pc2UkdW1kJCRFUzZQcm9taXNlO1xuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRkZWZhdWx0KCk7XG59KS5jYWxsKHVuZGVmaW5lZCk7IiwiLy8gVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi5cbi8vIFNlZSBMSUNFTlNFLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG52YXIgZW5jb2RpbmcgPSByZXF1aXJlKFwiLi9saWIvZW5jb2RpbmcuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0RW5jb2RlcjogZW5jb2RpbmcuVGV4dEVuY29kZXIsXG4gIFRleHREZWNvZGVyOiBlbmNvZGluZy5UZXh0RGVjb2Rlcixcbn07XG4iLCIoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgZ2xvYmFsW1wiZW5jb2RpbmctaW5kZXhlc1wiXSA9IHtcbiAgXCJiaWc1XCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE3MzkyLDE5NTA2LDE3OTIzLDE3ODMwLDE3Nzg0LDE2MDM1OSwxOTgzMSwxNzg0MywxNjI5OTMsMTk2ODIsMTYzMDEzLDE1MjUzLDE4MjMwLDE4MjQ0LDE5NTI3LDE5NTIwLDE0ODE1OSwxNDQ5MTksMTYwNTk0LDE1OTM3MSwxNTk5NTQsMTk1NDMsMTcyODgxLDE4MjU1LDE3ODgyLDE5NTg5LDE2MjkyNCwxOTcxOSwxOTEwOCwxODA4MSwxNTg0OTksMjkyMjEsMTU0MTk2LDEzNzgyNywxNDY5NTAsMTQ3Mjk3LDI2MTg5LDIyMjY3LG51bGwsMzIxNDksMjI4MTMsMTY2ODQxLDE1ODYwLDM4NzA4LDE2Mjc5OSwyMzUxNSwxMzg1OTAsMjMyMDQsMTM4NjEsMTcxNjk2LDIzMjQ5LDIzNDc5LDIzODA0LDI2NDc4LDM0MTk1LDE3MDMwOSwyOTc5MywyOTg1MywxNDQ1MywxMzg1NzksMTQ1MDU0LDE1NTY4MSwxNjEwOCwxNTM4MjIsMTUwOTMsMzE0ODQsNDA4NTUsMTQ3ODA5LDE2NjE1NywxNDM4NTAsMTMzNzcwLDE0Mzk2NiwxNzE2MiwzMzkyNCw0MDg1NCwzNzkzNSwxODczNiwzNDMyMywyMjY3OCwzODczMCwzNzQwMCwzMTE4NCwzMTI4MiwyNjIwOCwyNzE3NywzNDk3MywyOTc3MiwzMTY4NSwyNjQ5OCwzMTI3NiwyMTA3MSwzNjkzNCwxMzU0MiwyOTYzNiwxNTUwNjUsMjk4OTQsNDA5MDMsMjI0NTEsMTg3MzUsMjE1ODAsMTY2ODksMTQ1MDM4LDIyNTUyLDMxMzQ2LDE2MjY2MSwzNTcyNywxODA5NCwxNTkzNjgsMTY3NjksMTU1MDMzLDMxNjYyLDE0MDQ3Niw0MDkwNCwxNDA0ODEsMTQwNDg5LDE0MDQ5Miw0MDkwNSwzNDA1MiwxNDQ4MjcsMTY1NjQsNDA5MDYsMTc2MzMsMTc1NjE1LDI1MjgxLDI4NzgyLDQwOTA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI3MzYsMTI3MzcsMTI3MzgsMTI3MzksMTI3NDAsMTMxMzQwLDEyNzQxLDEzMTI4MSwxMzEyNzcsMTI3NDIsMTI3NDMsMTMxMjc1LDEzOTI0MCwxMjc0NCwxMzEyNzQsMTI3NDUsMTI3NDYsMTI3NDcsMTI3NDgsMTMxMzQyLDEyNzQ5LDEyNzUwLDI1NiwxOTMsNDYxLDE5MiwyNzQsMjAxLDI4MiwyMDAsMzMyLDIxMSw0NjUsMjEwLG51bGwsNzg3MCxudWxsLDc4NzIsMjAyLDI1NywyMjUsNDYyLDIyNCw1OTMsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsbnVsbCw3ODcxLG51bGwsNzg3MywyMzQsNjA5LDkxNzgsOTE3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzI5NjksMTM1NDkzLG51bGwsMjU4NjYsbnVsbCxudWxsLDIwMDI5LDI4MzgxLDQwMjcwLDM3MzQzLG51bGwsbnVsbCwxNjE1ODksMjU3NDUsMjAyNTAsMjAyNjQsMjAzOTIsMjA4MjIsMjA4NTIsMjA4OTIsMjA5NjQsMjExNTMsMjExNjAsMjEzMDcsMjEzMjYsMjE0NTcsMjE0NjQsMjIyNDIsMjI3NjgsMjI3ODgsMjI3OTEsMjI4MzQsMjI4MzYsMjMzOTgsMjM0NTQsMjM0NTUsMjM3MDYsMjQxOTgsMjQ2MzUsMjU5OTMsMjY2MjIsMjY2MjgsMjY3MjUsMjc5ODIsMjg4NjAsMzAwMDUsMzI0MjAsMzI0MjgsMzI0NDIsMzI0NTUsMzI0NjMsMzI0NzksMzI1MTgsMzI1NjcsMzM0MDIsMzM0ODcsMzM2NDcsMzUyNzAsMzU3NzQsMzU4MTAsMzY3MTAsMzY3MTEsMzY3MTgsMjk3MTMsMzE5OTYsMzIyMDUsMjY5NTAsMzE0MzMsMjEwMzEsbnVsbCxudWxsLG51bGwsbnVsbCwzNzI2MCwzMDkwNCwzNzIxNCwzMjk1NixudWxsLDM2MTA3LDMzMDE0LDEzMzYwNyxudWxsLG51bGwsMzI5MjcsNDA2NDcsMTk2NjEsNDAzOTMsNDA0NjAsMTk1MTgsMTcxNTEwLDE1OTc1OCw0MDQ1OCwxNzIzMzksMTM3NjEsbnVsbCwyODMxNCwzMzM0MiwyOTk3NyxudWxsLDE4NzA1LDM5NTMyLDM5NTY3LDQwODU3LDMxMTExLDE2NDk3MiwxMzg2OTgsMTMyNTYwLDE0MjA1NCwyMDAwNCwyMDA5NywyMDA5NiwyMDEwMywyMDE1OSwyMDIwMywyMDI3OSwxMzM4OCwyMDQxMywxNTk0NCwyMDQ4MywyMDYxNiwxMzQzNywxMzQ1OSwxMzQ3NywyMDg3MCwyMjc4OSwyMDk1NSwyMDk4OCwyMDk5NywyMDEwNSwyMTExMywyMTEzNiwyMTI4NywxMzc2NywyMTQxNywxMzY0OSwyMTQyNCwxMzY1MSwyMTQ0MiwyMTUzOSwxMzY3NywxMzY4MiwxMzk1MywyMTY1MSwyMTY2NywyMTY4NCwyMTY4OSwyMTcxMiwyMTc0MywyMTc4NCwyMTc5NSwyMTgwMCwxMzcyMCwyMTgyMywxMzczMywxMzc1OSwyMTk3NSwxMzc2NSwxNjMyMDQsMjE3OTcsbnVsbCwxMzQyMTAsMTM0NDIxLDE1MTg1MSwyMTkwNCwxNDI1MzQsMTQ4MjgsMTMxOTA1LDM2NDIyLDE1MDk2OCwxNjkxODksMTY0NjcsMTY0MDMwLDMwNTg2LDE0MjM5MiwxNDkwMCwxODM4OSwxNjQxODksMTU4MTk0LDE1MTAxOCwyNTgyMSwxMzQ1MjQsMTM1MDkyLDEzNDM1NywxMzU0MTIsMjU3NDEsMzY0NzgsMTM0ODA2LDEzNDE1NSwxMzUwMTIsMTQyNTA1LDE2NDQzOCwxNDg2OTEsbnVsbCwxMzQ0NzAsMTcwNTczLDE2NDA3MywxODQyMCwxNTEyMDcsMTQyNTMwLDM5NjAyLDE0OTUxLDE2OTQ2MCwxNjM2NSwxMzU3NCwxNTIyNjMsMTY5OTQwLDE2MTk5MiwxNDI2NjAsNDAzMDIsMzg5MzMsbnVsbCwxNzM2OSwxNTU4MTMsMjU3ODAsMjE3MzEsMTQyNjY4LDE0MjI4MiwxMzUyODcsMTQ4NDMsMTM1Mjc5LDE1NzQwMiwxNTc0NjIsMTYyMjA4LDI1ODM0LDE1MTYzNCwxMzQyMTEsMzY0NTYsMTM5NjgxLDE2NjczMiwxMzI5MTMsbnVsbCwxODQ0MywxMzE0OTcsMTYzNzgsMjI2NDMsMTQyNzMzLG51bGwsMTQ4OTM2LDEzMjM0OCwxNTU3OTksMTM0OTg4LDEzNDU1MCwyMTg4MSwxNjU3MSwxNzMzOCxudWxsLDE5MTI0LDE0MTkyNiwxMzUzMjUsMzMxOTQsMzkxNTcsMTM0NTU2LDI1NDY1LDE0ODQ2LDE0MTE3MywzNjI4OCwyMjE3NywyNTcyNCwxNTkzOSxudWxsLDE3MzU2OSwxMzQ2NjUsMTQyMDMxLDE0MjUzNyxudWxsLDEzNTM2OCwxNDU4NTgsMTQ3MzgsMTQ4NTQsMTY0NTA3LDEzNjg4LDE1NTIwOSwxMzk0NjMsMjIwOTgsMTM0OTYxLDE0MjUxNCwxNjk3NjAsMTM1MDAsMjc3MDksMTUxMDk5LG51bGwsbnVsbCwxNjExNDAsMTQyOTg3LDEzOTc4NCwxNzM2NTksMTY3MTE3LDEzNDc3OCwxMzQxOTYsMTU3NzI0LDMyNjU5LDEzNTM3NSwxNDEzMTUsMTQxNjI1LDEzODE5LDE1MjAzNSwxMzQ3OTYsMTM1MDUzLDEzNDgyNiwxNjI3NSwxMzQ5NjAsMTM0NDcxLDEzNTUwMywxMzQ3MzIsbnVsbCwxMzQ4MjcsMTM0MDU3LDEzNDQ3MiwxMzUzNjAsMTM1NDg1LDE2Mzc3LDE0MDk1MCwyNTY1MCwxMzUwODUsMTQ0MzcyLDE2MTMzNywxNDIyODYsMTM0NTI2LDEzNDUyNywxNDI0MTcsMTQyNDIxLDE0ODcyLDEzNDgwOCwxMzUzNjcsMTM0OTU4LDE3MzYxOCwxNTg1NDQsMTY3MTIyLDE2NzMyMSwxNjcxMTQsMzgzMTQsMjE3MDgsMzM0NzYsMjE5NDUsbnVsbCwxNzE3MTUsMzk5NzQsMzk2MDYsMTYxNjMwLDE0MjgzMCwyODk5MiwzMzEzMywzMzAwNCwyMzU4MCwxNTcwNDIsMzMwNzYsMTQyMzEsMjEzNDMsMTY0MDI5LDM3MzAyLDEzNDkwNiwxMzQ2NzEsMTM0Nzc1LDEzNDkwNywxMzc4OSwxNTEwMTksMTM4MzMsMTM0MzU4LDIyMTkxLDE0MTIzNywxMzUzNjksMTM0NjcyLDEzNDc3NiwxMzUyODgsMTM1NDk2LDE2NDM1OSwxMzYyNzcsMTM0Nzc3LDE1MTEyMCwxNDI3NTYsMjMxMjQsMTM1MTk3LDEzNTE5OCwxMzU0MTMsMTM1NDE0LDIyNDI4LDEzNDY3MywxNjE0MjgsMTY0NTU3LDEzNTA5MywxMzQ3NzksMTUxOTM0LDE0MDgzLDEzNTA5NCwxMzU1NTIsMTUyMjgwLDE3MjczMywxNDk5NzgsMTM3Mjc0LDE0NzgzMSwxNjQ0NzYsMjI2ODEsMjEwOTYsMTM4NTAsMTUzNDA1LDMxNjY2LDIzNDAwLDE4NDMyLDE5MjQ0LDQwNzQzLDE4OTE5LDM5OTY3LDM5ODIxLDE1NDQ4NCwxNDM2NzcsMjIwMTEsMTM4MTAsMjIxNTMsMjAwMDgsMjI3ODYsMTM4MTc3LDE5NDY4MCwzODczNywxMzEyMDYsMjAwNTksMjAxNTUsMTM2MzAsMjM1ODcsMjQ0MDEsMjQ1MTYsMTQ1ODYsMjUxNjQsMjU5MDksMjc1MTQsMjc3MDEsMjc3MDYsMjg3ODAsMjkyMjcsMjAwMTIsMjkzNTcsMTQ5NzM3LDMyNTk0LDMxMDM1LDMxOTkzLDMyNTk1LDE1NjI2NiwxMzUwNSxudWxsLDE1NjQ5MSwzMjc3MCwzMjg5NiwxNTcyMDIsMTU4MDMzLDIxMzQxLDM0OTE2LDM1MjY1LDE2MTk3MCwzNTc0NCwzNjEyNSwzODAyMSwzODI2NCwzODI3MSwzODM3NiwxNjc0MzksMzg4ODYsMzkwMjksMzkxMTgsMzkxMzQsMzkyNjcsMTcwMDAwLDQwMDYwLDQwNDc5LDQwNjQ0LDI3NTAzLDYzNzUxLDIwMDIzLDEzMTIwNywzODQyOSwyNTE0MywzODA1MCxudWxsLDIwNTM5LDI4MTU4LDE3MTEyMyw0MDg3MCwxNTgxNywzNDk1OSwxNDc3OTAsMjg3OTEsMjM3OTcsMTkyMzIsMTUyMDEzLDEzNjU3LDE1NDkyOCwyNDg2NiwxNjY0NTAsMzY3NzUsMzczNjYsMjkwNzMsMjYzOTMsMjk2MjYsMTQ0MDAxLDE3MjI5NSwxNTQ5OSwxMzc2MDAsMTkyMTYsMzA5NDgsMjk2OTgsMjA5MTAsMTY1NjQ3LDE2MzkzLDI3MjM1LDE3MjczMCwxNjkzMSwzNDMxOSwxMzM3NDMsMzEyNzQsMTcwMzExLDE2NjYzNCwzODc0MSwyODc0OSwyMTI4NCwxMzkzOTAsMzc4NzYsMzA0MjUsMTY2MzcxLDQwODcxLDMwNjg1LDIwMTMxLDIwNDY0LDIwNjY4LDIwMDE1LDIwMjQ3LDQwODcyLDIxNTU2LDMyMTM5LDIyNjc0LDIyNzM2LDEzODY3OCwyNDIxMCwyNDIxNywyNDUxNCwxNDEwNzQsMjU5OTUsMTQ0Mzc3LDI2OTA1LDI3MjAzLDE0NjUzMSwyNzkwMyxudWxsLDI5MTg0LDE0ODc0MSwyOTU4MCwxNjA5MSwxNTAwMzUsMjMzMTcsMjk4ODEsMzU3MTUsMTU0Nzg4LDE1MzIzNywzMTM3OSwzMTcyNCwzMTkzOSwzMjM2NCwzMzUyOCwzNDE5OSw0MDg3MywzNDk2MCw0MDg3NCwzNjUzNyw0MDg3NSwzNjgxNSwzNDE0MywzOTM5MiwzNzQwOSw0MDg3NiwxNjczNTMsMTM2MjU1LDE2NDk3LDE3MDU4LDIzMDY2LG51bGwsbnVsbCxudWxsLDM5MDE2LDI2NDc1LDE3MDE0LDIyMzMzLG51bGwsMzQyNjIsMTQ5ODgzLDMzNDcxLDE2MDAxMywxOTU4NSwxNTkwOTIsMjM5MzEsMTU4NDg1LDE1OTY3OCw0MDg3Nyw0MDg3OCwyMzQ0Niw0MDg3OSwyNjM0MywzMjM0NywyODI0NywzMTE3OCwxNTc1MiwxNzYwMywxNDM5NTgsMTQxMjA2LDE3MzA2LDE3NzE4LG51bGwsMjM3NjUsMTQ2MjAyLDM1NTc3LDIzNjcyLDE1NjM0LDE0NDcyMSwyMzkyOCw0MDg4MiwyOTAxNSwxNzc1MiwxNDc2OTIsMTM4Nzg3LDE5NTc1LDE0NzEyLDEzMzg2LDEzMTQ5MiwxNTg3ODUsMzU1MzIsMjA0MDQsMTMxNjQxLDIyOTc1LDMzMTMyLDM4OTk4LDE3MDIzNCwyNDM3OSwxMzQwNDcsbnVsbCwxMzk3MTMsMTY2MjUzLDE2NjQyLDE4MTA3LDE2ODA1NywxNjEzNSw0MDg4MywxNzI0NjksMTY2MzIsMTQyOTQsMTgxNjcsMTU4NzkwLDE2NzY0LDE2NTU1NCwxNjA3NjcsMTc3NzMsMTQ1NDgsMTUyNzMwLDE3NzYxLDE3NjkxLDE5ODQ5LDE5NTc5LDE5ODMwLDE3ODk4LDE2MzI4LDE1MDI4NywxMzkyMSwxNzYzMCwxNzU5NywxNjg3NywyMzg3MCwyMzg4MCwyMzg5NCwxNTg2OCwxNDM1MSwyMzk3MiwyMzk5MywxNDM2OCwxNDM5MiwyNDEzMCwyNDI1MywyNDM1NywyNDQ1MSwxNDYwMCwxNDYxMiwxNDY1NSwxNDY2OSwyNDc5MSwyNDg5MywyMzc4MSwxNDcyOSwyNTAxNSwyNTAxNywyNTAzOSwxNDc3NiwyNTEzMiwyNTIzMiwyNTMxNywyNTM2OCwxNDg0MCwyMjE5MywxNDg1MSwyNTU3MCwyNTU5NSwyNTYwNywyNTY5MCwxNDkyMywyNTc5MiwyMzgyOSwyMjA0OSw0MDg2MywxNDk5OSwyNTk5MCwxNTAzNywyNjExMSwyNjE5NSwxNTA5MCwyNjI1OCwxNTEzOCwyNjM5MCwxNTE3MCwyNjUzMiwyNjYyNCwxNTE5MiwyNjY5OCwyNjc1NiwxNTIxOCwxNTIxNywxNTIyNywyNjg4OSwyNjk0NywyOTI3NiwyNjk4MCwyNzAzOSwyNzAxMywxNTI5MiwyNzA5NCwxNTMyNSwyNzIzNywyNzI1MiwyNzI0OSwyNzI2NiwxNTM0MCwyNzI4OSwxNTM0NiwyNzMwNywyNzMxNywyNzM0OCwyNzM4MiwyNzUyMSwyNzU4NSwyNzYyNiwyNzc2NSwyNzgxOCwxNTU2MywyNzkwNiwyNzkxMCwyNzk0MiwyODAzMywxNTU5OSwyODA2OCwyODA4MSwyODE4MSwyODE4NCwyODIwMSwyODI5NCwxNjYzMzYsMjgzNDcsMjgzODYsMjgzNzgsNDA4MzEsMjgzOTIsMjgzOTMsMjg0NTIsMjg0NjgsMTU2ODYsMTQ3MjY1LDI4NTQ1LDI4NjA2LDE1NzIyLDE1NzMzLDI5MTExLDIzNzA1LDE1NzU0LDI4NzE2LDE1NzYxLDI4NzUyLDI4NzU2LDI4NzgzLDI4Nzk5LDI4ODA5LDEzMTg3NywxNzM0NSwxMzgwOSwxMzQ4NzIsMTQ3MTU5LDIyNDYyLDE1OTQ0MywyODk5MCwxNTM1NjgsMTM5MDIsMjcwNDIsMTY2ODg5LDIzNDEyLDMxMzA1LDE1MzgyNSwxNjkxNzcsMzEzMzMsMzEzNTcsMTU0MDI4LDMxNDE5LDMxNDA4LDMxNDI2LDMxNDI3LDI5MTM3LDE1NjgxMywxNjg0MiwzMTQ1MCwzMTQ1MywzMTQ2NiwxNjg3OSwyMTY4MiwxNTQ2MjUsMzE0OTksMzE1NzMsMzE1MjksMTUyMzM0LDE1NDg3OCwzMTY1MCwzMTU5OSwzMzY5MiwxNTQ1NDgsMTU4ODQ3LDMxNjk2LDMzODI1LDMxNjM0LDMxNjcyLDE1NDkxMiwxNTc4OSwxNTQ3MjUsMzM5MzgsMzE3MzgsMzE3NTAsMzE3OTcsMTU0ODE3LDMxODEyLDMxODc1LDE0OTYzNCwzMTkxMCwyNjIzNywxNDg4NTYsMzE5NDUsMzE5NDMsMzE5NzQsMzE4NjAsMzE5ODcsMzE5ODksMzE5NTAsMzIzNTksMTc2OTMsMTU5MzAwLDMyMDkzLDE1OTQ0NiwyOTgzNywzMjEzNywzMjE3MSwyODk4MSwzMjE3OSwzMjIxMCwxNDc1NDMsMTU1Njg5LDMyMjI4LDE1NjM1LDMyMjQ1LDEzNzIwOSwzMjIyOSwxNjQ3MTcsMzIyODUsMTU1OTM3LDE1NTk5NCwzMjM2NiwzMjQwMiwxNzE5NSwzNzk5NiwzMjI5NSwzMjU3NiwzMjU3NywzMjU4MywzMTAzMCwxNTYzNjgsMzkzOTMsMzI2NjMsMTU2NDk3LDMyNjc1LDEzNjgwMSwxMzExNzYsMTc3NTYsMTQ1MjU0LDE3NjY3LDE2NDY2NiwzMjc2MiwxNTY4MDksMzI3NzMsMzI3NzYsMzI3OTcsMzI4MDgsMzI4MTUsMTcyMTY3LDE1ODkxNSwzMjgyNywzMjgyOCwzMjg2NSwxNDEwNzYsMTg4MjUsMTU3MjIyLDE0NjkxNSwxNTc0MTYsMjY0MDUsMzI5MzUsMTY2NDcyLDMzMDMxLDMzMDUwLDIyNzA0LDE0MTA0NiwyNzc3NSwxNTY4MjQsMTUxNDgwLDI1ODMxLDEzNjMzMCwzMzMwNCwxMzczMTAsMjcyMTksMTUwMTE3LDE1MDE2NSwxNzUzMCwzMzMyMSwxMzM5MDEsMTU4MjkwLDE0NjgxNCwyMDQ3MywxMzY0NDUsMzQwMTgsMzM2MzQsMTU4NDc0LDE0OTkyNywxNDQ2ODgsMTM3MDc1LDE0NjkzNiwzMzQ1MCwyNjkwNywxOTQ5NjQsMTY4NTksMzQxMjMsMzM0ODgsMzM1NjIsMTM0Njc4LDEzNzE0MCwxNDAxNywxNDM3NDEsMTQ0NzMwLDMzNDAzLDMzNTA2LDMzNTYwLDE0NzA4MywxNTkxMzksMTU4NDY5LDE1ODYxNSwxNDQ4NDYsMTU4MDcsMzM1NjUsMjE5OTYsMzM2NjksMTc2NzUsMTU5MTQxLDMzNzA4LDMzNzI5LDMzNzQ3LDEzNDM4LDE1OTQ0NCwyNzIyMywzNDEzOCwxMzQ2MiwxNTkyOTgsMTQzMDg3LDMzODgwLDE1NDU5NiwzMzkwNSwxNTgyNywxNzYzNiwyNzMwMywzMzg2NiwxNDY2MTMsMzEwNjQsMzM5NjAsMTU4NjE0LDE1OTM1MSwxNTkyOTksMzQwMTQsMzM4MDcsMzM2ODEsMTc1NjgsMzM5MzksMzQwMjAsMTU0NzY5LDE2OTYwLDE1NDgxNiwxNzczMSwzNDEwMCwyMzI4MiwxNTkzODUsMTc3MDMsMzQxNjMsMTc2ODYsMjY1NTksMzQzMjYsMTY1NDEzLDE2NTQzNSwzNDI0MSwxNTk4ODAsMzQzMDYsMTM2NTc4LDE1OTk0OSwxOTQ5OTQsMTc3NzAsMzQzNDQsMTM4OTYsMTM3Mzc4LDIxNDk1LDE2MDY2NiwzNDQzMCwzNDY3MywxNzIyODAsMzQ3OTgsMTQyMzc1LDM0NzM3LDM0Nzc4LDM0ODMxLDIyMTEzLDM0NDEyLDI2NzEwLDE3OTM1LDM0ODg1LDM0ODg2LDE2MTI0OCwxNDY4NzMsMTYxMjUyLDM0OTEwLDM0OTcyLDE4MDExLDM0OTk2LDM0OTk3LDI1NTM3LDM1MDEzLDMwNTgzLDE2MTU1MSwzNTIwNywzNTIxMCwzNTIzOCwzNTI0MSwzNTIzOSwzNTI2MCwxNjY0MzcsMzUzMDMsMTYyMDg0LDE2MjQ5MywzNTQ4NCwzMDYxMSwzNzM3NCwzNTQ3MiwxNjIzOTMsMzE0NjUsMTYyNjE4LDE0NzM0MywxODE5NSwxNjI2MTYsMjkwNTIsMzU1OTYsMzU2MTUsMTUyNjI0LDE1MjkzMywzNTY0NywzNTY2MCwzNTY2MSwzNTQ5NywxNTAxMzgsMzU3MjgsMzU3MzksMzU1MDMsMTM2OTI3LDE3OTQxLDM0ODk1LDM1OTk1LDE2MzE1NiwxNjMyMTUsMTk1MDI4LDE0MTE3LDE2MzE1NSwzNjA1NCwxNjMyMjQsMTYzMjYxLDM2MTE0LDM2MDk5LDEzNzQ4OCwzNjA1OSwyODc2NCwzNjExMywxNTA3MjksMTYwODAsMzYyMTUsMzYyNjUsMTYzODQyLDEzNTE4OCwxNDk4OTgsMTUyMjgsMTY0Mjg0LDE2MDAxMiwzMTQ2MywzNjUyNSwzNjUzNCwzNjU0NywzNzU4OCwzNjYzMywzNjY1MywxNjQ3MDksMTY0ODgyLDM2NzczLDM3NjM1LDE3MjcwMywxMzM3MTIsMzY3ODcsMTg3MzAsMTY2MzY2LDE2NTE4MSwxNDY4NzUsMjQzMTIsMTQzOTcwLDM2ODU3LDE3MjA1MiwxNjU1NjQsMTY1MTIxLDE0MDA2OSwxNDcyMCwxNTk0NDcsMzY5MTksMTY1MTgwLDE2MjQ5NCwzNjk2MSwxNjUyMjgsMTY1Mzg3LDM3MDMyLDE2NTY1MSwzNzA2MCwxNjU2MDYsMzcwMzgsMzcxMTcsMzcyMjMsMTUwODgsMzcyODksMzczMTYsMzE5MTYsMTY2MTk1LDEzODg4OSwzNzM5MCwyNzgwNywzNzQ0MSwzNzQ3NCwxNTMwMTcsMzc1NjEsMTY2NTk4LDE0NjU4NywxNjY2NjgsMTUzMDUxLDEzNDQ0OSwzNzY3NiwzNzczOSwxNjY2MjUsMTY2ODkxLDI4ODE1LDIzMjM1LDE2NjYyNiwxNjY2MjksMTg3ODksMzc0NDQsMTY2ODkyLDE2Njk2OSwxNjY5MTEsMzc3NDcsMzc5NzksMzY1NDAsMzgyNzcsMzgzMTAsMzc5MjYsMzgzMDQsMjg2NjIsMTcwODEsMTQwOTIyLDE2NTU5MiwxMzU4MDQsMTQ2OTkwLDE4OTExLDI3Njc2LDM4NTIzLDM4NTUwLDE2NzQ4LDM4NTYzLDE1OTQ0NSwyNTA1MCwzODU4MiwzMDk2NSwxNjY2MjQsMzg1ODksMjE0NTIsMTg4NDksMTU4OTA0LDEzMTcwMCwxNTY2ODgsMTY4MTExLDE2ODE2NSwxNTAyMjUsMTM3NDkzLDE0NDEzOCwzODcwNSwzNDM3MCwzODcxMCwxODk1OSwxNzcyNSwxNzc5NywxNTAyNDksMjg3ODksMjMzNjEsMzg2ODMsMzg3NDgsMTY4NDA1LDM4NzQzLDIzMzcwLDE2ODQyNywzODc1MSwzNzkyNSwyMDY4OCwxNDM1NDMsMTQzNTQ4LDM4NzkzLDM4ODE1LDM4ODMzLDM4ODQ2LDM4ODQ4LDM4ODY2LDM4ODgwLDE1MjY4NCwzODg5NCwyOTcyNCwxNjkwMTEsMzg5MTEsMzg5MDEsMTY4OTg5LDE2MjE3MCwxOTE1MywzODk2NCwzODk2MywzODk4NywzOTAxNCwxNTExOCwxNjAxMTcsMTU2OTcsMTMyNjU2LDE0NzgwNCwxNTMzNTAsMzkxMTQsMzkwOTUsMzkxMTIsMzkxMTEsMTkxOTksMTU5MDE1LDEzNjkxNSwyMTkzNiwzOTEzNywzOTE0MiwzOTE0OCwzNzc1MiwzOTIyNSwxNTAwNTcsMTkzMTQsMTcwMDcxLDE3MDI0NSwzOTQxMywzOTQzNiwzOTQ4MywzOTQ0MCwzOTUxMiwxNTMzODEsMTQwMjAsMTY4MTEzLDE3MDk2NSwzOTY0OCwzOTY1MCwxNzA3NTcsMzk2NjgsMTk0NzAsMzk3MDAsMzk3MjUsMTY1Mzc2LDIwNTMyLDM5NzMyLDE1ODEyMCwxNDUzMSwxNDM0ODUsMzk3NjAsMzk3NDQsMTcxMzI2LDIzMTA5LDEzNzMxNSwzOTgyMiwxNDgwNDMsMzk5MzgsMzk5MzUsMzk5NDgsMTcxNjI0LDQwNDA0LDE3MTk1OSwxNzI0MzQsMTcyNDU5LDE3MjI1NywxNzIzMjMsMTcyNTExLDQwMzE4LDQwMzIzLDE3MjM0MCw0MDQ2MiwyNjc2MCw0MDM4OCwxMzk2MTEsMTcyNDM1LDE3MjU3NiwxMzc1MzEsMTcyNTk1LDQwMjQ5LDE3MjIxNywxNzI3MjQsNDA1OTIsNDA1OTcsNDA2MDYsNDA2MTAsMTk3NjQsNDA2MTgsNDA2MjMsMTQ4MzI0LDQwNjQxLDE1MjAwLDE0ODIxLDE1NjQ1LDIwMjc0LDE0MjcwLDE2Njk1NSw0MDcwNiw0MDcxMiwxOTM1MCwzNzkyNCwxNTkxMzgsNDA3MjcsNDA3MjYsNDA3NjEsMjIxNzUsMjIxNTQsNDA3NzMsMzkzNTIsMTY4MDc1LDM4ODk4LDMzOTE5LDQwODAyLDQwODA5LDMxNDUyLDQwODQ2LDI5MjA2LDE5MzkwLDE0OTg3NywxNDk5NDcsMjkwNDcsMTUwMDA4LDE0ODI5NiwxNTAwOTcsMjk1OTgsMTY2ODc0LDEzNzQ2NiwzMTEzNSwxNjYyNzAsMTY3NDc4LDM3NzM3LDM3ODc1LDE2NjQ2OCwzNzYxMiwzNzc2MSwzNzgzNSwxNjYyNTIsMTQ4NjY1LDI5MjA3LDE2MTA3LDMwNTc4LDMxMjk5LDI4ODgwLDE0ODU5NSwxNDg0NzIsMjkwNTQsMTM3MTk5LDI4ODM1LDEzNzQwNiwxNDQ3OTMsMTYwNzEsMTM3MzQ5LDE1MjYyMywxMzcyMDgsMTQxMTQsMTM2OTU1LDEzNzI3MywxNDA0OSwxMzcwNzYsMTM3NDI1LDE1NTQ2NywxNDExNSwxMzY4OTYsMjIzNjMsMTUwMDUzLDEzNjE5MCwxMzU4NDgsMTM2MTM0LDEzNjM3NCwzNDA1MSwxNDUwNjIsMzQwNTEsMzM4NzcsMTQ5OTA4LDE2MDEwMSwxNDY5OTMsMTUyOTI0LDE0NzE5NSwxNTk4MjYsMTc2NTIsMTQ1MTM0LDE3MDM5NywxNTk1MjYsMjY2MTcsMTQxMzEsMTUzODEsMTU4NDcsMjI2MzYsMTM3NTA2LDI2NjQwLDE2NDcxLDE0NTIxNSwxNDc2ODEsMTQ3NTk1LDE0NzcyNywxNTg3NTMsMjE3MDcsMjIxNzQsMTU3MzYxLDIyMTYyLDEzNTEzNSwxMzQwNTYsMTM0NjY5LDM3ODMwLDE2NjY3NSwzNzc4OCwyMDIxNiwyMDc3OSwxNDM2MSwxNDg1MzQsMjAxNTYsMTMyMTk3LDEzMTk2NywyMDI5OSwyMDM2MiwxNTMxNjksMjMxNDQsMTMxNDk5LDEzMjA0MywxNDc0NSwxMzE4NTAsMTMyMTE2LDEzMzY1LDIwMjY1LDEzMTc3NiwxNjc2MDMsMTMxNzAxLDM1NTQ2LDEzMTU5NiwyMDEyMCwyMDY4NSwyMDc0OSwyMDM4NiwyMDIyNywxNTAwMzAsMTQ3MDgyLDIwMjkwLDIwNTI2LDIwNTg4LDIwNjA5LDIwNDI4LDIwNDUzLDIwNTY4LDIwNzMyLDIwODI1LDIwODI3LDIwODI5LDIwODMwLDI4Mjc4LDE0NDc4OSwxNDcwMDEsMTQ3MTM1LDI4MDE4LDEzNzM0OCwxNDcwODEsMjA5MDQsMjA5MzEsMTMyNTc2LDE3NjI5LDEzMjI1OSwxMzIyNDIsMTMyMjQxLDM2MjE4LDE2NjU1NiwxMzI4NzgsMjEwODEsMjExNTYsMTMzMjM1LDIxMjE3LDM3NzQyLDE4MDQyLDI5MDY4LDE0ODM2NCwxMzQxNzYsMTQ5OTMyLDEzNTM5NiwyNzA4OSwxMzQ2ODUsMjk4MTcsMTYwOTQsMjk4NDksMjk3MTYsMjk3ODIsMjk1OTIsMTkzNDIsMTUwMjA0LDE0NzU5NywyMTQ1NiwxMzcwMCwyOTE5OSwxNDc2NTcsMjE5NDAsMTMxOTA5LDIxNzA5LDEzNDA4NiwyMjMwMSwzNzQ2OSwzODY0NCwzNzczNCwyMjQ5MywyMjQxMywyMjM5OSwxMzg4NiwyMjczMSwyMzE5MywxNjY0NzAsMTM2OTU0LDEzNzA3MSwxMzY5NzYsMjMwODQsMjI5NjgsMzc1MTksMjMxNjYsMjMyNDcsMjMwNTgsMTUzOTI2LDEzNzcxNSwxMzczMTMsMTQ4MTE3LDE0MDY5LDI3OTA5LDI5NzYzLDIzMDczLDE1NTI2NywyMzE2OSwxNjY4NzEsMTMyMTE1LDM3ODU2LDI5ODM2LDEzNTkzOSwyODkzMywxODgwMiwzNzg5NiwxNjYzOTUsMzc4MjEsMTQyNDAsMjM1ODIsMjM3MTAsMjQxNTgsMjQxMzYsMTM3NjIyLDEzNzU5NiwxNDYxNTgsMjQyNjksMjMzNzUsMTM3NDc1LDEzNzQ3NiwxNDA4MSwxMzczNzYsMTQwNDUsMTM2OTU4LDE0MDM1LDMzMDY2LDE2NjQ3MSwxMzg2ODIsMTQ0NDk4LDE2NjMxMiwyNDMzMiwyNDMzNCwxMzc1MTEsMTM3MTMxLDIzMTQ3LDEzNzAxOSwyMzM2NCwzNDMyNCwxNjEyNzcsMzQ5MTIsMjQ3MDIsMTQxNDA4LDE0MDg0MywyNDUzOSwxNjA1NiwxNDA3MTksMTQwNzM0LDE2ODA3MiwxNTk2MDMsMjUwMjQsMTMxMTM0LDEzMTE0MiwxNDA4MjcsMjQ5ODUsMjQ5ODQsMjQ2OTMsMTQyNDkxLDE0MjU5OSwxNDkyMDQsMTY4MjY5LDI1NzEzLDE0OTA5MywxNDIxODYsMTQ4ODksMTQyMTE0LDE0NDQ2NCwxNzAyMTgsMTQyOTY4LDI1Mzk5LDE3MzE0NywyNTc4MiwyNTM5MywyNTU1MywxNDk5ODcsMTQyNjk1LDI1MjUyLDE0MjQ5NywyNTY1OSwyNTk2MywyNjk5NCwxNTM0OCwxNDM1MDIsMTQ0MDQ1LDE0OTg5NywxNDQwNDMsMjE3NzMsMTQ0MDk2LDEzNzQzMywxNjkwMjMsMjYzMTgsMTQ0MDA5LDE0Mzc5NSwxNTA3MiwxNjc4NCwxNTI5NjQsMTY2NjkwLDE1Mjk3NSwxMzY5NTYsMTUyOTIzLDE1MjYxMywzMDk1OCwxNDM2MTksMTM3MjU4LDE0MzkyNCwxMzQxMiwxNDM4ODcsMTQzNzQ2LDE0ODE2OSwyNjI1NCwxNTkwMTIsMjYyMTksMTkzNDcsMjYxNjAsMTYxOTA0LDEzODczMSwyNjIxMSwxNDQwODIsMTQ0MDk3LDI2MTQyLDE1MzcxNCwxNDU0NSwxNDU0NjYsMTQ1MzQwLDE1MjU3LDE0NTMxNCwxNDQzODIsMjk5MDQsMTUyNTQsMjY1MTEsMTQ5MDM0LDI2ODA2LDI2NjU0LDE1MzAwLDI3MzI2LDE0NDM1LDE0NTM2NSwxNDg2MTUsMjcxODcsMjcyMTgsMjczMzcsMjczOTcsMTM3NDkwLDI1ODczLDI2Nzc2LDI3MjEyLDE1MzE5LDI3MjU4LDI3NDc5LDE0NzM5MiwxNDY1ODYsMzc3OTIsMzc2MTgsMTY2ODkwLDE2NjYwMywzNzUxMywxNjM4NzAsMTY2MzY0LDM3OTkxLDI4MDY5LDI4NDI3LDE0OTk5NiwyODAwNywxNDczMjcsMTU3NTksMjgxNjQsMTQ3NTE2LDIzMTAxLDI4MTcwLDIyNTk5LDI3OTQwLDMwNzg2LDI4OTg3LDE0ODI1MCwxNDgwODYsMjg5MTMsMjkyNjQsMjkzMTksMjkzMzIsMTQ5MzkxLDE0OTI4NSwyMDg1NywxNTAxODAsMTMyNTg3LDI5ODE4LDE0NzE5MiwxNDQ5OTEsMTUwMDkwLDE0OTc4MywxNTU2MTcsMTYxMzQsMTYwNDksMTUwMjM5LDE2Njk0NywxNDcyNTMsMjQ3NDMsMTYxMTUsMjk5MDAsMjk3NTYsMzc3NjcsMjk3NTEsMTc1NjcsMTU5MjEwLDE3NzQ1LDMwMDgzLDE2MjI3LDE1MDc0NSwxNTA3OTAsMTYyMTYsMzAwMzcsMzAzMjMsMTczNTEwLDE1MTI5LDI5ODAwLDE2NjYwNCwxNDk5MzEsMTQ5OTAyLDE1MDk5LDE1ODIxLDE1MDA5NCwxNjEyNywxNDk5NTcsMTQ5NzQ3LDM3MzcwLDIyMzIyLDM3Njk4LDE2NjYyNywxMzczMTYsMjA3MDMsMTUyMDk3LDE1MjAzOSwzMDU4NCwxNDM5MjIsMzA0NzgsMzA0NzksMzA1ODcsMTQ5MTQzLDE0NTI4MSwxNDk0MiwxNDk3NDQsMjk3NTIsMjk4NTEsMTYwNjMsMTUwMjAyLDE1MDIxNSwxNjU4NCwxNTAxNjYsMTU2MDc4LDM3NjM5LDE1Mjk2MSwzMDc1MCwzMDg2MSwzMDg1NiwzMDkzMCwyOTY0OCwzMTA2NSwxNjE2MDEsMTUzMzE1LDE2NjU0LDMxMTMxLDMzOTQyLDMxMTQxLDI3MTgxLDE0NzE5NCwzMTI5MCwzMTIyMCwxNjc1MCwxMzY5MzQsMTY2OTAsMzc0MjksMzEyMTcsMTM0NDc2LDE0OTkwMCwxMzE3MzcsMTQ2ODc0LDEzNzA3MCwxMzcxOSwyMTg2NywxMzY4MCwxMzk5NCwxMzE1NDAsMTM0MTU3LDMxNDU4LDIzMTI5LDE0MTA0NSwxNTQyODcsMTU0MjY4LDIzMDUzLDEzMTY3NSwzMDk2MCwyMzA4MiwxNTQ1NjYsMzE0ODYsMTY4ODksMzE4MzcsMzE4NTMsMTY5MTMsMTU0NTQ3LDE1NTMyNCwxNTUzMDIsMzE5NDksMTUwMDA5LDEzNzEzNiwzMTg4NiwzMTg2OCwzMTkxOCwyNzMxNCwzMjIyMCwzMjI2MywzMjIxMSwzMjU5MCwxNTYyNTcsMTU1OTk2LDE2MjYzMiwzMjE1MSwxNTUyNjYsMTcwMDIsMTU4NTgxLDEzMzM5OCwyNjU4MiwxMzExNTAsMTQ0ODQ3LDIyNDY4LDE1NjY5MCwxNTY2NjQsMTQ5ODU4LDMyNzMzLDMxNTI3LDEzMzE2NCwxNTQzNDUsMTU0OTQ3LDMxNTAwLDE1NTE1MCwzOTM5OCwzNDM3MywzOTUyMywyNzE2NCwxNDQ0NDcsMTQ4MTgsMTUwMDA3LDE1NzEwMSwzOTQ1NSwxNTcwODgsMzM5MjAsMTYwMDM5LDE1ODkyOSwxNzY0MiwzMzA3OSwxNzQxMCwzMjk2NiwzMzAzMywzMzA5MCwxNTc2MjAsMzkxMDcsMTU4Mjc0LDMzMzc4LDMzMzgxLDE1ODI4OSwzMzg3NSwxNTkxNDMsMzQzMjAsMTYwMjgzLDIzMTc0LDE2NzY3LDEzNzI4MCwyMzMzOSwxMzczNzcsMjMyNjgsMTM3NDMyLDM0NDY0LDE5NTAwNCwxNDY4MzEsMzQ4NjEsMTYwODAyLDIzMDQyLDM0OTI2LDIwMjkzLDM0OTUxLDM1MDA3LDM1MDQ2LDM1MTczLDM1MTQ5LDE1MzIxOSwzNTE1NiwxNjE2NjksMTYxNjY4LDE2NjkwMSwxNjY4NzMsMTY2ODEyLDE2NjM5MywxNjA0NSwzMzk1NSwxODE2NSwxODEyNywxNDMyMiwzNTM4OSwzNTM1NiwxNjkwMzIsMjQzOTcsMzc0MTksMTQ4MTAwLDI2MDY4LDI4OTY5LDI4ODY4LDEzNzI4NSw0MDMwMSwzNTk5OSwzNjA3MywxNjMyOTIsMjI5MzgsMzA2NTksMjMwMjQsMTcyNjIsMTQwMzYsMzYzOTQsMzY1MTksMTUwNTM3LDM2NjU2LDM2NjgyLDE3MTQwLDI3NzM2LDI4NjAzLDE0MDA2NSwxODU4NywyODUzNywyODI5OSwxMzcxNzgsMzk5MTMsMTQwMDUsMTQ5ODA3LDM3MDUxLDM3MDE1LDIxODczLDE4Njk0LDM3MzA3LDM3ODkyLDE2NjQ3NSwxNjQ4MiwxNjY2NTIsMzc5MjcsMTY2OTQxLDE2Njk3MSwzNDAyMSwzNTM3MSwzODI5NywzODMxMSwzODI5NSwzODI5NCwxNjcyMjAsMjk3NjUsMTYwNjYsMTQ5NzU5LDE1MDA4MiwxNDg0NTgsMTYxMDMsMTQzOTA5LDM4NTQzLDE2NzY1NSwxNjc1MjYsMTY3NTI1LDE2MDc2LDE0OTk5NywxNTAxMzYsMTQ3NDM4LDI5NzE0LDI5ODAzLDE2MTI0LDM4NzIxLDE2ODExMiwyNjY5NSwxODk3MywxNjgwODMsMTUzNTY3LDM4NzQ5LDM3NzM2LDE2NjI4MSwxNjY5NTAsMTY2NzAzLDE1NjYwNiwzNzU2MiwyMzMxMywzNTY4OSwxODc0OCwyOTY4OSwxNDc5OTUsMzg4MTEsMzg3NjksMzkyMjQsMTM0OTUwLDI0MDAxLDE2Njg1MywxNTAxOTQsMzg5NDMsMTY5MTc4LDM3NjIyLDE2OTQzMSwzNzM0OSwxNzYwMCwxNjY3MzYsMTUwMTE5LDE2Njc1NiwzOTEzMiwxNjY0NjksMTYxMjgsMzc0MTgsMTg3MjUsMzM4MTIsMzkyMjcsMzkyNDUsMTYyNTY2LDE1ODY5LDM5MzIzLDE5MzExLDM5MzM4LDM5NTE2LDE2Njc1NywxNTM4MDAsMjcyNzksMzk0NTcsMjMyOTQsMzk0NzEsMTcwMjI1LDE5MzQ0LDE3MDMxMiwzOTM1NiwxOTM4OSwxOTM1MSwzNzc1NywyMjY0MiwxMzU5MzgsMjI1NjIsMTQ5OTQ0LDEzNjQyNCwzMDc4OCwxNDEwODcsMTQ2ODcyLDI2ODIxLDE1NzQxLDM3OTc2LDE0NjMxLDI0OTEyLDE0MTE4NSwxNDE2NzUsMjQ4MzksNDAwMTUsNDAwMTksNDAwNTksMzk5ODksMzk5NTIsMzk4MDcsMzk4ODcsMTcxNTY1LDM5ODM5LDE3MjUzMywxNzIyODYsNDAyMjUsMTk2MzAsMTQ3NzE2LDQwNDcyLDE5NjMyLDQwMjA0LDE3MjQ2OCwxNzIyNjksMTcyMjc1LDE3MDI4Nyw0MDM1NywzMzk4MSwxNTkyNTAsMTU5NzExLDE1ODU5NCwzNDMwMCwxNzcxNSwxNTkxNDAsMTU5MzY0LDE1OTIxNiwzMzgyNCwzNDI4NiwxNTkyMzIsMTQ1MzY3LDE1NTc0OCwzMTIwMiwxNDQ3OTYsMTQ0OTYwLDE4NzMzLDE0OTk4MiwxNTcxNCwzNzg1MSwzNzU2NiwzNzcwNCwxMzE3NzUsMzA5MDUsMzc0OTUsMzc5NjUsMjA0NTIsMTMzNzYsMzY5NjQsMTUyOTI1LDMwNzgxLDMwODA0LDMwOTAyLDMwNzk1LDEzNzA0NywxNDM4MTcsMTQ5ODI1LDEzOTc4LDIwMzM4LDI4NjM0LDI4NjMzLDI4NzAyLDI4NzAyLDIxNTI0LDE0Nzg5MywyMjQ1OSwyMjc3MSwyMjQxMCw0MDIxNCwyMjQ4NywyODk4MCwxMzQ4NywxNDc4ODQsMjkxNjMsMTU4Nzg0LDE1MTQ0NywyMzMzNiwxMzcxNDEsMTY2NDczLDI0ODQ0LDIzMjQ2LDIzMDUxLDE3MDg0LDE0ODYxNiwxNDEyNCwxOTMyMywxNjYzOTYsMzc4MTksMzc4MTYsMTM3NDMwLDEzNDk0MSwzMzkwNiwxNTg5MTIsMTM2MjExLDE0ODIxOCwxNDIzNzQsMTQ4NDE3LDIyOTMyLDE0Njg3MSwxNTc1MDUsMzIxNjgsMTU1OTk1LDE1NTgxMiwxNDk5NDUsMTQ5ODk5LDE2NjM5NCwzNzYwNSwyOTY2NiwxNjEwNSwyOTg3NiwxNjY3NTUsMTM3Mzc1LDE2MDk3LDE1MDE5NSwyNzM1MiwyOTY4MywyOTY5MSwxNjA4NiwxNTAwNzgsMTUwMTY0LDEzNzE3NywxNTAxMTgsMTMyMDA3LDEzNjIyOCwxNDk5ODksMjk3NjgsMTQ5NzgyLDI4ODM3LDE0OTg3OCwzNzUwOCwyOTY3MCwzNzcyNywxMzIzNTAsMzc2ODEsMTY2NjA2LDE2NjQyMiwzNzc2NiwxNjY4ODcsMTUzMDQ1LDE4NzQxLDE2NjUzMCwyOTAzNSwxNDk4MjcsMTM0Mzk5LDIyMTgwLDEzMjYzNCwxMzQxMjMsMTM0MzI4LDIxNzYyLDMxMTcyLDEzNzIxMCwzMjI1NCwxMzY4OTgsMTUwMDk2LDEzNzI5OCwxNzcxMCwzNzg4OSwxNDA5MCwxNjY1OTIsMTQ5OTMzLDIyOTYwLDEzNzQwNywxMzczNDcsMTYwOTAwLDIzMjAxLDE0MDUwLDE0Njc3OSwxNDAwMCwzNzQ3MSwyMzE2MSwxNjY1MjksMTM3MzE0LDM3NzQ4LDE1NTY1LDEzMzgxMiwxOTA5NCwxNDczMCwyMDcyNCwxNTcyMSwxNTY5MiwxMzYwOTIsMjkwNDUsMTcxNDcsMTY0Mzc2LDI4MTc1LDE2ODE2NCwxNzY0MywyNzk5MSwxNjM0MDcsMjg3NzUsMjc4MjMsMTU1NzQsMTQ3NDM3LDE0Njk4OSwyODE2MiwyODQyOCwxNTcyNywxMzIwODUsMzAwMzMsMTQwMTIsMTM1MTIsMTgwNDgsMTYwOTAsMTg1NDUsMjI5ODAsMzc0ODYsMTg3NTAsMzY2NzMsMTY2OTQwLDE1ODY1NiwyMjU0NiwyMjQ3MiwxNDAzOCwxMzYyNzQsMjg5MjYsMTQ4MzIyLDE1MDEyOSwxNDMzMzEsMTM1ODU2LDE0MDIyMSwyNjgwOSwyNjk4MywxMzYwODgsMTQ0NjEzLDE2MjgwNCwxNDUxMTksMTY2NTMxLDE0NTM2NiwxNDQzNzgsMTUwNjg3LDI3MTYyLDE0NTA2OSwxNTg5MDMsMzM4NTQsMTc2MzEsMTc2MTQsMTU5MDE0LDE1OTA1NywxNTg4NTAsMTU5NzEwLDI4NDM5LDE2MDAwOSwzMzU5NywxMzcwMTgsMzM3NzMsMTU4ODQ4LDE1OTgyNywxMzcxNzksMjI5MjEsMjMxNzAsMTM3MTM5LDIzMTM3LDIzMTUzLDEzNzQ3NywxNDc5NjQsMTQxMjUsMjMwMjMsMTM3MDIwLDE0MDIzLDI5MDcwLDM3Nzc2LDI2MjY2LDE0ODEzMywyMzE1MCwyMzA4MywxNDgxMTUsMjcxNzksMTQ3MTkzLDE2MTU5MCwxNDg1NzEsMTQ4MTcwLDI4OTU3LDE0ODA1NywxNjYzNjksMjA0MDAsMTU5MDE2LDIzNzQ2LDE0ODY4NiwxNjM0MDUsMTQ4NDEzLDI3MTQ4LDE0ODA1NCwxMzU5NDAsMjg4MzgsMjg5NzksMTQ4NDU3LDE1NzgxLDI3ODcxLDE5NDU5NywxNTAwOTUsMzIzNTcsMjMwMTksMjM4NTUsMTU4NTksMjQ0MTIsMTUwMTA5LDEzNzE4MywzMjE2NCwzMzgzMCwyMTYzNywxNDYxNzAsMTQ0MTI4LDEzMTYwNCwyMjM5OCwxMzMzMzMsMTMyNjMzLDE2MzU3LDEzOTE2NiwxNzI3MjYsMjg2NzUsMTY4MjgzLDIzOTIwLDI5NTgzLDMxOTU1LDE2NjQ4OSwxNjg5OTIsMjA0MjQsMzI3NDMsMjkzODksMjk0NTYsMTYyNTQ4LDI5NDk2LDI5NDk3LDE1MzMzNCwyOTUwNSwyOTUxMiwxNjA0MSwxNjI1ODQsMzY5NzIsMjkxNzMsMTQ5NzQ2LDI5NjY1LDMzMjcwLDE2MDc0LDMwNDc2LDE2MDgxLDI3ODEwLDIyMjY5LDI5NzIxLDI5NzI2LDI5NzI3LDE2MDk4LDE2MTEyLDE2MTE2LDE2MTIyLDI5OTA3LDE2MTQyLDE2MjExLDMwMDE4LDMwMDYxLDMwMDY2LDMwMDkzLDE2MjUyLDMwMTUyLDMwMTcyLDE2MzIwLDMwMjg1LDE2MzQzLDMwMzI0LDE2MzQ4LDMwMzMwLDE1MTM4OCwyOTA2NCwyMjA1MSwzNTIwMCwyMjYzMywxNjQxMywzMDUzMSwxNjQ0MSwyNjQ2NSwxNjQ1MywxMzc4NywzMDYxNiwxNjQ5MCwxNjQ5NSwyMzY0NiwzMDY1NCwzMDY2NywyMjc3MCwzMDc0NCwyODg1NywzMDc0OCwxNjU1MiwzMDc3NywzMDc5MSwzMDgwMSwzMDgyMiwzMzg2NCwxNTI4ODUsMzEwMjcsMjY2MjcsMzEwMjYsMTY2NDMsMTY2NDksMzExMjEsMzExMjksMzY3OTUsMzEyMzgsMzY3OTYsMTY3NDMsMzEzNzcsMTY4MTgsMzE0MjAsMzM0MDEsMTY4MzYsMzE0MzksMzE0NTEsMTY4NDcsMjAwMDEsMzE1ODYsMzE1OTYsMzE2MTEsMzE3NjIsMzE3NzEsMTY5OTIsMTcwMTgsMzE4NjcsMzE5MDAsMTcwMzYsMzE5MjgsMTcwNDQsMzE5ODEsMzY3NTUsMjg4NjQsMTM0MzUxLDMyMjA3LDMyMjEyLDMyMjA4LDMyMjUzLDMyNjg2LDMyNjkyLDI5MzQzLDE3MzAzLDMyODAwLDMyODA1LDMxNTQ1LDMyODE0LDMyODE3LDMyODUyLDE1ODIwLDIyNDUyLDI4ODMyLDMyOTUxLDMzMDAxLDE3Mzg5LDMzMDM2LDI5NDgyLDMzMDM4LDMzMDQyLDMwMDQ4LDMzMDQ0LDE3NDA5LDE1MTYxLDMzMTEwLDMzMTEzLDMzMTE0LDE3NDI3LDIyNTg2LDMzMTQ4LDMzMTU2LDE3NDQ1LDMzMTcxLDE3NDUzLDMzMTg5LDIyNTExLDMzMjE3LDMzMjUyLDMzMzY0LDE3NTUxLDMzNDQ2LDMzMzk4LDMzNDgyLDMzNDk2LDMzNTM1LDE3NTg0LDMzNjIzLDM4NTA1LDI3MDE4LDMzNzk3LDI4OTE3LDMzODkyLDI0ODAzLDMzOTI4LDE3NjY4LDMzOTgyLDM0MDE3LDM0MDQwLDM0MDY0LDM0MTA0LDM0MTMwLDE3NzIzLDM0MTU5LDM0MTYwLDM0MjcyLDE3NzgzLDM0NDE4LDM0NDUwLDM0NDgyLDM0NTQzLDM4NDY5LDM0Njk5LDE3OTI2LDE3OTQzLDM0OTkwLDM1MDcxLDM1MTA4LDM1MTQzLDM1MjE3LDE2MjE1MSwzNTM2OSwzNTM4NCwzNTQ3NiwzNTUwOCwzNTkyMSwzNjA1MiwzNjA4MiwzNjEyNCwxODMyOCwyMjYyMywzNjI5MSwxODQxMywyMDIwNiwzNjQxMCwyMTk3NiwyMjM1NiwzNjQ2NSwyMjAwNSwzNjUyOCwxODQ4NywzNjU1OCwzNjU3OCwzNjU4MCwzNjU4OSwzNjU5NCwzNjc5MSwzNjgwMSwzNjgxMCwzNjgxMiwzNjkxNSwzOTM2NCwxODYwNSwzOTEzNiwzNzM5NSwxODcxOCwzNzQxNiwzNzQ2NCwzNzQ4MywzNzU1MywzNzU1MCwzNzU2NywzNzYwMywzNzYxMSwzNzYxOSwzNzYyMCwzNzYyOSwzNzY5OSwzNzc2NCwzNzgwNSwxODc1NywxODc2OSw0MDYzOSwzNzkxMSwyMTI0OSwzNzkxNywzNzkzMywzNzk1MCwxODc5NCwzNzk3MiwzODAwOSwzODE4OSwzODMwNiwxODg1NSwzODM4OCwzODQ1MSwxODkxNywyNjUyOCwxODk4MCwzODcyMCwxODk5NywzODgzNCwzODg1MCwyMjEwMCwxOTE3MiwyNDgwOCwzOTA5NywxOTIyNSwzOTE1MywyMjU5NiwzOTE4MiwzOTE5MywyMDkxNiwzOTE5NiwzOTIyMywzOTIzNCwzOTI2MSwzOTI2NiwxOTMxMiwzOTM2NSwxOTM1NywzOTQ4NCwzOTY5NSwzMTM2MywzOTc4NSwzOTgwOSwzOTkwMSwzOTkyMSwzOTkyNCwxOTU2NSwzOTk2OCwxNDE5MSwxMzgxNzgsNDAyNjUsMzk5OTQsNDA3MDIsMjIwOTYsNDAzMzksNDAzODEsNDAzODQsNDA0NDQsMzgxMzQsMzY3OTAsNDA1NzEsNDA2MjAsNDA2MjUsNDA2MzcsNDA2NDYsMzgxMDgsNDA2NzQsNDA2ODksNDA2OTYsMzE0MzIsNDA3NzIsMTMxMjIwLDEzMTc2NywxMzIwMDAsMjY5MDYsMzgwODMsMjI5NTYsMTMyMzExLDIyNTkyLDM4MDgxLDE0MjY1LDEzMjU2NSwxMzI2MjksMTMyNzI2LDEzNjg5MCwyMjM1OSwyOTA0MywxMzM4MjYsMTMzODM3LDEzNDA3OSwyMTYxMCwxOTQ2MTksMTM0MDkxLDIxNjYyLDEzNDEzOSwxMzQyMDMsMTM0MjI3LDEzNDI0NSwxMzQyNjgsMjQ4MDcsMTM0Mjg1LDIyMTM4LDEzNDMyNSwxMzQzNjUsMTM0MzgxLDEzNDUxMSwxMzQ1NzgsMTM0NjAwLDI2OTY1LDM5OTgzLDM0NzI1LDEzNDY2MCwxMzQ2NzAsMTM0ODcxLDEzNTA1NiwxMzQ5NTcsMTM0NzcxLDIzNTg0LDEzNTEwMCwyNDA3NSwxMzUyNjAsMTM1MjQ3LDEzNTI4NiwyNjM5OCwxMzUyOTEsMTM1MzA0LDEzNTMxOCwxMzg5NSwxMzUzNTksMTM1Mzc5LDEzNTQ3MSwxMzU0ODMsMjEzNDgsMzM5NjUsMTM1OTA3LDEzNjA1MywxMzU5OTAsMzU3MTMsMTM2NTY3LDEzNjcyOSwxMzcxNTUsMTM3MTU5LDIwMDg4LDI4ODU5LDEzNzI2MSwxMzc1NzgsMTM3NzczLDEzNzc5NywxMzgyODIsMTM4MzUyLDEzODQxMiwxMzg5NTIsMjUyODMsMTM4OTY1LDEzOTAyOSwyOTA4MCwyNjcwOSwxMzkzMzMsMjcxMTMsMTQwMjQsMTM5OTAwLDE0MDI0NywxNDAyODIsMTQxMDk4LDE0MTQyNSwxNDE2NDcsMzM1MzMsMTQxNjcxLDE0MTcxNSwxNDIwMzcsMzUyMzcsMTQyMDU2LDM2NzY4LDE0MjA5NCwzODg0MCwxNDIxNDMsMzg5ODMsMzk2MTMsMTQyNDEyLG51bGwsMTQyNDcyLDE0MjUxOSwxNTQ2MDAsMTQyNjAwLDE0MjYxMCwxNDI3NzUsMTQyNzQxLDE0MjkxNCwxNDMyMjAsMTQzMzA4LDE0MzQxMSwxNDM0NjIsMTQ0MTU5LDE0NDM1MCwyNDQ5NywyNjE4NCwyNjMwMywxNjI0MjUsMTQ0NzQzLDE0NDg4MywyOTE4NSwxNDk5NDYsMzA2NzksMTQ0OTIyLDE0NTE3NCwzMjM5MSwxMzE5MTAsMjI3MDksMjYzODIsMjY5MDQsMTQ2MDg3LDE2MTM2NywxNTU2MTgsMTQ2OTYxLDE0NzEyOSwxNjEyNzgsMTM5NDE4LDE4NjQwLDE5MTI4LDE0NzczNywxNjY1NTQsMTQ4MjA2LDE0ODIzNywxNDc1MTUsMTQ4Mjc2LDE0ODM3NCwxNTAwODUsMTMyNTU0LDIwOTQ2LDEzMjYyNSwyMjk0MywxMzg5MjAsMTUyOTQsMTQ2Njg3LDE0ODQ4NCwxNDg2OTQsMjI0MDgsMTQ5MTA4LDE0NzQ3LDE0OTI5NSwxNjUzNTIsMTcwNDQxLDE0MTc4LDEzOTcxNSwzNTY3OCwxNjY3MzQsMzkzODIsMTQ5NTIyLDE0OTc1NSwxNTAwMzcsMjkxOTMsMTUwMjA4LDEzNDI2NCwyMjg4NSwxNTEyMDUsMTUxNDMwLDEzMjk4NSwzNjU3MCwxNTE1OTYsMjExMzUsMjIzMzUsMjkwNDEsMTUyMjE3LDE1MjYwMSwxNDcyNzQsMTUwMTgzLDIxOTQ4LDE1MjY0NiwxNTI2ODYsMTU4NTQ2LDM3MzMyLDEzNDI3LDE1Mjg5NSwxNjEzMzAsMTUyOTI2LDE4MjAwLDE1MjkzMCwxNTI5MzQsMTUzNTQzLDE0OTgyMywxNTM2OTMsMjA1ODIsMTM1NjMsMTQ0MzMyLDI0Nzk4LDE1Mzg1OSwxODMwMCwxNjYyMTYsMTU0Mjg2LDE1NDUwNSwxNTQ2MzAsMTM4NjQwLDIyNDMzLDI5MDA5LDI4NTk4LDE1NTkwNiwxNjI4MzQsMzY5NTAsMTU2MDgyLDE1MTQ1MCwzNTY4MiwxNTY2NzQsMTU2NzQ2LDIzODk5LDE1ODcxMSwzNjY2MiwxNTY4MDQsMTM3NTAwLDM1NTYyLDE1MDAwNiwxNTY4MDgsMTQ3NDM5LDE1Njk0NiwxOTM5MiwxNTcxMTksMTU3MzY1LDE0MTA4MywzNzk4OSwxNTM1NjksMjQ5ODEsMjMwNzksMTk0NzY1LDIwNDExLDIyMjAxLDE0ODc2OSwxNTc0MzYsMjAwNzQsMTQ5ODEyLDM4NDg2LDI4MDQ3LDE1ODkwOSwxMzg0OCwzNTE5MSwxNTc1OTMsMTU3ODA2LDE1NjY4OSwxNTc3OTAsMjkxNTEsMTU3ODk1LDMxNTU0LDE2ODEyOCwxMzM2NDksMTU3OTkwLDM3MTI0LDE1ODAwOSwzMTMwMSw0MDQzMiwxNTgyMDIsMzk0NjIsMTU4MjUzLDEzOTE5LDE1Njc3NywxMzExMDUsMzExMDcsMTU4MjYwLDE1ODU1NSwyMzg1MiwxNDQ2NjUsMzM3NDMsMTU4NjIxLDE4MTI4LDE1ODg4NCwzMDAxMSwzNDkxNywxNTkxNTAsMjI3MTAsMTQxMDgsMTQwNjg1LDE1OTgxOSwxNjAyMDUsMTU0NDQsMTYwMzg0LDE2MDM4OSwzNzUwNSwxMzk2NDIsMTYwMzk1LDM3NjgwLDE2MDQ4NiwxNDk5NjgsMjc3MDUsMzgwNDcsMTYwODQ4LDEzNDkwNCwzNDg1NSwzNTA2MSwxNDE2MDYsMTY0OTc5LDEzNzEzNywyODM0NCwxNTAwNTgsMTM3MjQ4LDE0NzU2LDE0MDA5LDIzNTY4LDMxMjAzLDE3NzI3LDI2Mjk0LDE3MTE4MSwxNzAxNDgsMzUxMzksMTYxNzQwLDE2MTg4MCwyMjIzMCwxNjYwNywxMzY3MTQsMTQ3NTMsMTQ1MTk5LDE2NDA3MiwxMzYxMzMsMjkxMDEsMzM2MzgsMTYyMjY5LDE2ODM2MCwyMzE0MywxOTYzOSwxNTk5MTksMTY2MzE1LDE2MjMwMSwxNjIzMTQsMTYyNTcxLDE2MzE3NCwxNDc4MzQsMzE1NTUsMzExMDIsMTYzODQ5LDI4NTk3LDE3Mjc2NywyNzEzOSwxNjQ2MzIsMjE0MTAsMTU5MjM5LDM3ODIzLDI2Njc4LDM4NzQ5LDE2NDIwNywxNjM4NzUsMTU4MTMzLDEzNjE3MywxNDM5MTksMTYzOTEyLDIzOTQxLDE2Njk2MCwxNjM5NzEsMjIyOTMsMzg5NDcsMTY2MjE3LDIzOTc5LDE0OTg5NiwyNjA0NiwyNzA5MywyMTQ1OCwxNTAxODEsMTQ3MzI5LDE1Mzc3LDI2NDIyLDE2Mzk4NCwxNjQwODQsMTY0MTQyLDEzOTE2OSwxNjQxNzUsMTY0MjMzLDE2NDI3MSwxNjQzNzgsMTY0NjE0LDE2NDY1NSwxNjQ3NDYsMTM3NzAsMTY0OTY4LDE2NTU0NiwxODY4MiwyNTU3NCwxNjYyMzAsMzA3MjgsMzc0NjEsMTY2MzI4LDE3Mzk0LDE2NjM3NSwxNzM3NSwxNjYzNzYsMTY2NzI2LDE2Njg2OCwyMzAzMiwxNjY5MjEsMzY2MTksMTY3ODc3LDE2ODE3MiwzMTU2OSwxNjgyMDgsMTY4MjUyLDE1ODYzLDE2ODI4NiwxNTAyMTgsMzY4MTYsMjkzMjcsMjIxNTUsMTY5MTkxLDE2OTQ0OSwxNjkzOTIsMTY5NDAwLDE2OTc3OCwxNzAxOTMsMTcwMzEzLDE3MDM0NiwxNzA0MzUsMTcwNTM2LDE3MDc2NiwxNzEzNTQsMTcxNDE5LDMyNDE1LDE3MTc2OCwxNzE4MTEsMTk2MjAsMzgyMTUsMTcyNjkxLDI5MDkwLDE3Mjc5OSwxOTg1NywzNjg4MiwxNzM1MTUsMTk4NjgsMTM0MzAwLDM2Nzk4LDIxOTUzLDM2Nzk0LDE0MDQ2NCwzNjc5MywxNTAxNjMsMTc2NzMsMzIzODMsMjg1MDIsMjczMTMsMjAyMDIsMTM1NDAsMTY2NzAwLDE2MTk0OSwxNDEzOCwzNjQ4MCwxMzcyMDUsMTYzODc2LDE2Njc2NCwxNjY4MDksMTYyMzY2LDE1NzM1OSwxNTg1MSwxNjEzNjUsMTQ2NjE1LDE1MzE0MSwxNTM5NDIsMjAxMjIsMTU1MjY1LDE1NjI0OCwyMjIwNywxMzQ3NjUsMzYzNjYsMjM0MDUsMTQ3MDgwLDE1MDY4NiwyNTU2NiwyNTI5NiwxMzcyMDYsMTM3MzM5LDI1OTA0LDIyMDYxLDE1NDY5OCwyMTUzMCwxNTIzMzcsMTU4MTQsMTcxNDE2LDE5NTgxLDIyMDUwLDIyMDQ2LDMyNTg1LDE1NTM1MiwyMjkwMSwxNDY3NTIsMzQ2NzIsMTk5OTYsMTM1MTQ2LDEzNDQ3MywxNDUwODIsMzMwNDcsNDAyODYsMzYxMjAsMzAyNjcsNDAwMDUsMzAyODYsMzA2NDksMzc3MDEsMjE1NTQsMzMwOTYsMzM1MjcsMjIwNTMsMzMwNzQsMzM4MTYsMzI5NTcsMjE5OTQsMzEwNzQsMjIwODMsMjE1MjYsMTM0ODEzLDEzNzc0LDIyMDIxLDIyMDAxLDI2MzUzLDE2NDU3OCwxMzg2OSwzMDAwNCwyMjAwMCwyMTk0NiwyMTY1NSwyMTg3NCwxMzQyMDksMTM0Mjk0LDI0MjcyLDE1MTg4MCwxMzQ3NzQsMTQyNDM0LDEzNDgxOCw0MDYxOSwzMjA5MCwyMTk4MiwxMzUyODUsMjUyNDUsMzg3NjUsMjE2NTIsMzYwNDUsMjkxNzQsMzcyMzgsMjU1OTYsMjU1MjksMjU1OTgsMjE4NjUsMTQyMTQ3LDQwMDUwLDE0MzAyNywyMDg5MCwxMzUzNSwxMzQ1NjcsMjA5MDMsMjE1ODEsMjE3OTAsMjE3NzksMzAzMTAsMzYzOTcsMTU3ODM0LDMwMTI5LDMyOTUwLDM0ODIwLDM0Njk0LDM1MDE1LDMzMjA2LDMzODIwLDEzNTM2MSwxNzY0NCwyOTQ0NCwxNDkyNTQsMjM0NDAsMzM1NDcsMTU3ODQzLDIyMTM5LDE0MTA0NCwxNjMxMTksMTQ3ODc1LDE2MzE4NywxNTk0NDAsMTYwNDM4LDM3MjMyLDEzNTY0MSwzNzM4NCwxNDY2ODQsMTczNzM3LDEzNDgyOCwxMzQ5MDUsMjkyODYsMTM4NDAyLDE4MjU0LDE1MTQ5MCwxNjM4MzMsMTM1MTQ3LDE2NjM0LDQwMDI5LDI1ODg3LDE0Mjc1MiwxODY3NSwxNDk0NzIsMTcxMzg4LDEzNTE0OCwxMzQ2NjYsMjQ2NzQsMTYxMTg3LDEzNTE0OSxudWxsLDE1NTcyMCwxMzU1NTksMjkwOTEsMzIzOTgsNDAyNzIsMTk5OTQsMTk5NzIsMTM2ODcsMjMzMDksMjc4MjYsMjEzNTEsMTM5OTYsMTQ4MTIsMjEzNzMsMTM5ODksMTQ5MDE2LDIyNjgyLDE1MDM4MiwzMzMyNSwyMTU3OSwyMjQ0MiwxNTQyNjEsMTMzNDk3LG51bGwsMTQ5MzAsMTQwMzg5LDI5NTU2LDE3MTY5MiwxOTcyMSwzOTkxNywxNDY2ODYsMTcxODI0LDE5NTQ3LDE1MTQ2NSwxNjkzNzQsMTcxOTk4LDMzODg0LDE0Njg3MCwxNjA0MzQsMTU3NjE5LDE0NTE4NCwyNTM5MCwzMjAzNywxNDcxOTEsMTQ2OTg4LDE0ODkwLDM2ODcyLDIxMTk2LDE1OTg4LDEzOTQ2LDE3ODk3LDEzMjIzOCwzMDI3MiwyMzI4MCwxMzQ4MzgsMzA4NDIsMTYzNjMwLDIyNjk1LDE2NTc1LDIyMTQwLDM5ODE5LDIzOTI0LDMwMjkyLDE3MzEwOCw0MDU4MSwxOTY4MSwzMDIwMSwxNDMzMSwyNDg1NywxNDM1NzgsMTQ4NDY2LG51bGwsMjIxMDksMTM1ODQ5LDIyNDM5LDE0OTg1OSwxNzE1MjYsMjEwNDQsMTU5OTE4LDEzNzQxLDI3NzIyLDQwMzE2LDMxODMwLDM5NzM3LDIyNDk0LDEzNzA2OCwyMzYzNSwyNTgxMSwxNjkxNjgsMTU2NDY5LDE2MDEwMCwzNDQ3NywxMzQ0NDAsMTU5MDEwLDE1MDI0MiwxMzQ1MTMsbnVsbCwyMDk5MCwxMzkwMjMsMjM5NTAsMzg2NTksMTM4NzA1LDQwNTc3LDM2OTQwLDMxNTE5LDM5NjgyLDIzNzYxLDMxNjUxLDI1MTkyLDI1Mzk3LDM5Njc5LDMxNjk1LDM5NzIyLDMxODcwLDM5NzI2LDMxODEwLDMxODc4LDM5OTU3LDMxNzQwLDM5Njg5LDQwNzI3LDM5OTYzLDE0OTgyMiw0MDc5NCwyMTg3NSwyMzQ5MSwyMDQ3Nyw0MDYwMCwyMDQ2NiwyMTA4OCwxNTg3OCwyMTIwMSwyMjM3NSwyMDU2NiwyMjk2NywyNDA4MiwzODg1Niw0MDM2MywzNjcwMCwyMTYwOSwzODgzNiwzOTIzMiwzODg0MiwyMTI5MiwyNDg4MCwyNjkyNCwyMTQ2NiwzOTk0Niw0MDE5NCwxOTUxNSwzODQ2NSwyNzAwOCwyMDY0NiwzMDAyMiwxMzcwNjksMzkzODYsMjExMDcsbnVsbCwzNzIwOSwzODUyOSwzNzIxMixudWxsLDM3MjAxLDE2NzU3NSwyNTQ3MSwxNTkwMTEsMjczMzgsMjIwMzMsMzcyNjIsMzAwNzQsMjUyMjEsMTMyMDkyLDI5NTE5LDMxODU2LDE1NDY1NywxNDY2ODUsbnVsbCwxNDk3ODUsMzA0MjIsMzk4MzcsMjAwMTAsMTM0MzU2LDMzNzI2LDM0ODgyLG51bGwsMjM2MjYsMjcwNzIsMjA3MTcsMjIzOTQsMjEwMjMsMjQwNTMsMjAxNzQsMjc2OTcsMTMxNTcwLDIwMjgxLDIxNjYwLDIxNzIyLDIxMTQ2LDM2MjI2LDEzODIyLDI0MzMyLDEzODExLG51bGwsMjc0NzQsMzcyNDQsNDA4NjksMzk4MzEsMzg5NTgsMzkwOTIsMzk2MTAsNDA2MTYsNDA1ODAsMjkwNTAsMzE1MDgsbnVsbCwyNzY0MiwzNDg0MCwzMjYzMixudWxsLDIyMDQ4LDE3MzY0MiwzNjQ3MSw0MDc4NyxudWxsLDM2MzA4LDM2NDMxLDQwNDc2LDM2MzUzLDI1MjE4LDE2NDczMywzNjM5MiwzNjQ2OSwzMTQ0MywxNTAxMzUsMzEyOTQsMzA5MzYsMjc4ODIsMzU0MzEsMzAyMTUsMTY2NDkwLDQwNzQyLDI3ODU0LDM0Nzc0LDMwMTQ3LDE3MjcyMiwzMDgwMywxOTQ2MjQsMzYxMDgsMjk0MTAsMjk1NTMsMzU2MjksMjk0NDIsMjk5MzcsMzYwNzUsMTUwMjAzLDM0MzUxLDI0NTA2LDM0OTc2LDE3NTkxLG51bGwsMTM3Mjc1LDE1OTIzNyxudWxsLDM1NDU0LDE0MDU3MSxudWxsLDI0ODI5LDMwMzExLDM5NjM5LDQwMjYwLDM3NzQyLDM5ODIzLDM0ODA1LG51bGwsMzQ4MzEsMzYwODcsMjk0ODQsMzg2ODksMzk4NTYsMTM3ODIsMjkzNjIsMTk0NjMsMzE4MjUsMzkyNDIsMTU1OTkzLDI0OTIxLDE5NDYwLDQwNTk4LDI0OTU3LG51bGwsMjIzNjcsMjQ5NDMsMjUyNTQsMjUxNDUsMjUyOTQsMTQ5NDAsMjUwNTgsMjE0MTgsMTQ0MzczLDI1NDQ0LDI2NjI2LDEzNzc4LDIzODk1LDE2Njg1MCwzNjgyNiwxNjc0ODEsbnVsbCwyMDY5NywxMzg1NjYsMzA5ODIsMjEyOTgsMzg0NTYsMTM0OTcxLDE2NDg1LG51bGwsMzA3MTgsbnVsbCwzMTkzOCwxNTU0MTgsMzE5NjIsMzEyNzcsMzI4NzAsMzI4NjcsMzIwNzcsMjk5NTcsMjk5MzgsMzUyMjAsMzMzMDYsMjYzODAsMzI4NjYsMTYwOTAyLDMyODU5LDI5OTM2LDMzMDI3LDMwNTAwLDM1MjA5LDE1NzY0NCwzMDAzNSwxNTk0NDEsMzQ3MjksMzQ3NjYsMzMyMjQsMzQ3MDAsMzU0MDEsMzYwMTMsMzU2NTEsMzA1MDcsMjk5NDQsMzQwMTAsMTM4NzcsMjcwNTgsMzYyNjIsbnVsbCwzNTI0MSwyOTgwMCwyODA4OSwzNDc1MywxNDc0NzMsMjk5MjcsMTU4MzUsMjkwNDYsMjQ3NDAsMjQ5ODgsMTU1NjksMjkwMjYsMjQ2OTUsbnVsbCwzMjYyNSwxNjY3MDEsMjkyNjQsMjQ4MDksMTkzMjYsMjEwMjQsMTUzODQsMTQ2NjMxLDE1NTM1MSwxNjEzNjYsMTUyODgxLDEzNzU0MCwxMzU5MzQsMTcwMjQzLDE1OTE5NiwxNTk5MTcsMjM3NDUsMTU2MDc3LDE2NjQxNSwxNDUwMTUsMTMxMzEwLDE1Nzc2NiwxNTEzMTAsMTc3NjIsMjMzMjcsMTU2NDkyLDQwNzg0LDQwNjE0LDE1NjI2NywxMjI4OCw2NTI5MiwxMjI4OSwxMjI5MCw2NTI5NCw4MjMxLDY1MzA3LDY1MzA2LDY1MzExLDY1MjgxLDY1MDcyLDgyMzAsODIyOSw2NTEwNCw2NTEwNSw2NTEwNiwxODMsNjUxMDgsNjUxMDksNjUxMTAsNjUxMTEsNjUzNzIsODIxMSw2NTA3Myw4MjEyLDY1MDc1LDk1ODgsNjUwNzYsNjUxMDMsNjUyODgsNjUyODksNjUwNzcsNjUwNzgsNjUzNzEsNjUzNzMsNjUwNzksNjUwODAsMTIzMDgsMTIzMDksNjUwODEsNjUwODIsMTIzMDQsMTIzMDUsNjUwODMsNjUwODQsMTIyOTgsMTIyOTksNjUwODUsNjUwODYsMTIyOTYsMTIyOTcsNjUwODcsNjUwODgsMTIzMDAsMTIzMDEsNjUwODksNjUwOTAsMTIzMDIsMTIzMDMsNjUwOTEsNjUwOTIsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMxNywxMjMxOCw4MjQ1LDgyNDIsNjUyODMsNjUyODYsNjUyOTAsODI1MSwxNjcsMTIyOTEsOTY3NSw5Njc5LDk2NTEsOTY1MCw5Njc4LDk3MzQsOTczMyw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NjEsOTY2MCwxMjk2Myw4NDUzLDE3NSw2NTUwNyw2NTM0Myw3MTcsNjUwOTcsNjUwOTgsNjUxMDEsNjUxMDIsNjUwOTksNjUxMDAsNjUxMTksNjUxMjAsNjUxMjEsNjUyOTEsNjUyOTMsMjE1LDI0NywxNzcsODczMCw2NTMwOCw2NTMxMCw2NTMwOSw4ODA2LDg4MDcsODgwMCw4NzM0LDg3ODYsODgwMSw2NTEyMiw2NTEyMyw2NTEyNCw2NTEyNSw2NTEyNiw2NTM3NCw4NzQ1LDg3NDYsODg2OSw4NzM2LDg3MzUsODg5NSwxMzI2NiwxMzI2NSw4NzQ3LDg3NTAsODc1Nyw4NzU2LDk3OTIsOTc5NCw4ODUzLDg4NTcsODU5Myw4NTk1LDg1OTIsODU5NCw4NTk4LDg1OTksODYwMSw4NjAwLDg3NDEsODczOSw2NTI5NSw2NTM0MCw4NzI1LDY1MTI4LDY1Mjg0LDY1NTA5LDEyMzA2LDY1NTA0LDY1NTA1LDY1Mjg1LDY1MzEyLDg0NTEsODQ1Nyw2NTEyOSw2NTEzMCw2NTEzMSwxMzI2OSwxMzIxMiwxMzIxMywxMzIxNCwxMzI2MiwxMzIxNywxMzE5OCwxMzE5OSwxMzI1MiwxNzYsMjA4MjUsMjA4MjcsMjA4MzAsMjA4MjksMjA4MzMsMjA4MzUsMjE5OTEsMjk5MjksMzE5NTAsOTYwMSw5NjAyLDk2MDMsOTYwNCw5NjA1LDk2MDYsOTYwNyw5NjA4LDk2MTUsOTYxNCw5NjEzLDk2MTIsOTYxMSw5NjEwLDk2MDksOTUzMiw5NTI0LDk1MTYsOTUwOCw5NTAwLDk2MjAsOTQ3Miw5NDc0LDk2MjEsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTgxLDk1ODIsOTU4NCw5NTgzLDk1NTIsOTU2Niw5NTc4LDk1NjksOTY5OCw5Njk5LDk3MDEsOTcwMCw5NTg1LDk1ODYsOTU4Nyw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDEyMzIxLDEyMzIyLDEyMzIzLDEyMzI0LDEyMzI1LDEyMzI2LDEyMzI3LDEyMzI4LDEyMzI5LDIxMzEzLDIxMzE2LDIxMzE3LDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDEyNTQ5LDEyNTUwLDEyNTUxLDEyNTUyLDEyNTUzLDEyNTU0LDEyNTU1LDEyNTU2LDEyNTU3LDEyNTU4LDEyNTU5LDEyNTYwLDEyNTYxLDEyNTYyLDEyNTYzLDEyNTY0LDEyNTY1LDEyNTY2LDEyNTY3LDEyNTY4LDEyNTY5LDEyNTcwLDEyNTcxLDEyNTcyLDEyNTczLDEyNTc0LDEyNTc1LDEyNTc2LDEyNTc3LDEyNTc4LDEyNTc5LDEyNTgwLDEyNTgxLDEyNTgyLDEyNTgzLDEyNTg0LDEyNTg1LDcyOSw3MTMsNzE0LDcxMSw3MTUsOTIxNiw5MjE3LDkyMTgsOTIxOSw5MjIwLDkyMjEsOTIyMiw5MjIzLDkyMjQsOTIyNSw5MjI2LDkyMjcsOTIyOCw5MjI5LDkyMzAsOTIzMSw5MjMyLDkyMzMsOTIzNCw5MjM1LDkyMzYsOTIzNyw5MjM4LDkyMzksOTI0MCw5MjQxLDkyNDIsOTI0Myw5MjQ0LDkyNDUsOTI0Niw5MjQ3LDkyNDksODM2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk5NjgsMjAwNTcsMTk5NjksMTk5NzEsMjAwMzUsMjAwNjEsMjAxMDIsMjAxMDgsMjAxNTQsMjA3OTksMjA4MzcsMjA4NDMsMjA5NjAsMjA5OTIsMjA5OTMsMjExNDcsMjEyNjksMjEzMTMsMjEzNDAsMjE0NDgsMTk5NzcsMTk5NzksMTk5NzYsMTk5NzgsMjAwMTEsMjAwMjQsMjA5NjEsMjAwMzcsMjAwNDAsMjAwNjMsMjAwNjIsMjAxMTAsMjAxMjksMjA4MDAsMjA5OTUsMjEyNDIsMjEzMTUsMjE0NDksMjE0NzUsMjIzMDMsMjI3NjMsMjI4MDUsMjI4MjMsMjI4OTksMjMzNzYsMjMzNzcsMjMzNzksMjM1NDQsMjM1NjcsMjM1ODYsMjM2MDgsMjM2NjUsMjQwMjksMjQwMzcsMjQwNDksMjQwNTAsMjQwNTEsMjQwNjIsMjQxNzgsMjQzMTgsMjQzMzEsMjQzMzksMjUxNjUsMTk5ODUsMTk5ODQsMTk5ODEsMjAwMTMsMjAwMTYsMjAwMjUsMjAwNDMsMjM2MDksMjAxMDQsMjAxMTMsMjAxMTcsMjAxMTQsMjAxMTYsMjAxMzAsMjAxNjEsMjAxNjAsMjAxNjMsMjAxNjYsMjAxNjcsMjAxNzMsMjAxNzAsMjAxNzEsMjAxNjQsMjA4MDMsMjA4MDEsMjA4MzksMjA4NDUsMjA4NDYsMjA4NDQsMjA4ODcsMjA5ODIsMjA5OTgsMjA5OTksMjEwMDAsMjEyNDMsMjEyNDYsMjEyNDcsMjEyNzAsMjEzMDUsMjEzMjAsMjEzMTksMjEzMTcsMjEzNDIsMjEzODAsMjE0NTEsMjE0NTAsMjE0NTMsMjI3NjQsMjI4MjUsMjI4MjcsMjI4MjYsMjI4MjksMjMzODAsMjM1NjksMjM1ODgsMjM2MTAsMjM2NjMsMjQwNTIsMjQxODcsMjQzMTksMjQzNDAsMjQzNDEsMjQ1MTUsMjUwOTYsMjUxNDIsMjUxNjMsMjUxNjYsMjU5MDMsMjU5OTEsMjYwMDcsMjYwMjAsMjYwNDEsMjYwODUsMjYzNTIsMjYzNzYsMjY0MDgsMjc0MjQsMjc0OTAsMjc1MTMsMjc1OTUsMjc2MDQsMjc2MTEsMjc2NjMsMjc3MDAsMjg3NzksMjkyMjYsMjkyMzgsMjkyNDMsMjkyNTUsMjkyNzMsMjkyNzUsMjkzNTYsMjk1NzksMTk5OTMsMTk5OTAsMTk5ODksMTk5ODgsMTk5OTIsMjAwMjcsMjAwNDUsMjAwNDcsMjAwNDYsMjAxOTcsMjAxODQsMjAxODAsMjAxODEsMjAxODIsMjAxODMsMjAxOTUsMjAxOTYsMjAxODUsMjAxOTAsMjA4MDUsMjA4MDQsMjA4NzMsMjA4NzQsMjA5MDgsMjA5ODUsMjA5ODYsMjA5ODQsMjEwMDIsMjExNTIsMjExNTEsMjEyNTMsMjEyNTQsMjEyNzEsMjEyNzcsMjAxOTEsMjEzMjIsMjEzMjEsMjEzNDUsMjEzNDQsMjEzNTksMjEzNTgsMjE0MzUsMjE0ODcsMjE0NzYsMjE0OTEsMjE0ODQsMjE0ODYsMjE0ODEsMjE0ODAsMjE1MDAsMjE0OTYsMjE0OTMsMjE0ODMsMjE0NzgsMjE0ODIsMjE0OTAsMjE0ODksMjE0ODgsMjE0NzcsMjE0ODUsMjE0OTksMjIyMzUsMjIyMzQsMjI4MDYsMjI4MzAsMjI4MzMsMjI5MDAsMjI5MDIsMjMzODEsMjM0MjcsMjM2MTIsMjQwNDAsMjQwMzksMjQwMzgsMjQwNjYsMjQwNjcsMjQxNzksMjQxODgsMjQzMjEsMjQzNDQsMjQzNDMsMjQ1MTcsMjUwOTgsMjUxNzEsMjUxNzIsMjUxNzAsMjUxNjksMjYwMjEsMjYwODYsMjY0MTQsMjY0MTIsMjY0MTAsMjY0MTEsMjY0MTMsMjc0OTEsMjc1OTcsMjc2NjUsMjc2NjQsMjc3MDQsMjc3MTMsMjc3MTIsMjc3MTAsMjkzNTksMjk1NzIsMjk1NzcsMjk5MTYsMjk5MjYsMjk5NzYsMjk5ODMsMjk5OTIsMjk5OTMsMzAwMDAsMzAwMDEsMzAwMDIsMzAwMDMsMzAwOTEsMzAzMzMsMzAzODIsMzAzOTksMzA0NDYsMzA2ODMsMzA2OTAsMzA3MDcsMzEwMzQsMzExNjYsMzEzNDgsMzE0MzUsMTk5OTgsMTk5OTksMjAwNTAsMjAwNTEsMjAwNzMsMjAxMjEsMjAxMzIsMjAxMzQsMjAxMzMsMjAyMjMsMjAyMzMsMjAyNDksMjAyMzQsMjAyNDUsMjAyMzcsMjAyNDAsMjAyNDEsMjAyMzksMjAyMTAsMjAyMTQsMjAyMTksMjAyMDgsMjAyMTEsMjAyMjEsMjAyMjUsMjAyMzUsMjA4MDksMjA4MDcsMjA4MDYsMjA4MDgsMjA4NDAsMjA4NDksMjA4NzcsMjA5MTIsMjEwMTUsMjEwMDksMjEwMTAsMjEwMDYsMjEwMTQsMjExNTUsMjEyNTYsMjEyODEsMjEyODAsMjEzNjAsMjEzNjEsMjE1MTMsMjE1MTksMjE1MTYsMjE1MTQsMjE1MjAsMjE1MDUsMjE1MTUsMjE1MDgsMjE1MjEsMjE1MTcsMjE1MTIsMjE1MDcsMjE1MTgsMjE1MTAsMjE1MjIsMjIyNDAsMjIyMzgsMjIyMzcsMjIzMjMsMjIzMjAsMjIzMTIsMjIzMTcsMjIzMTYsMjIzMTksMjIzMTMsMjI4MDksMjI4MTAsMjI4MzksMjI4NDAsMjI5MTYsMjI5MDQsMjI5MTUsMjI5MDksMjI5MDUsMjI5MTQsMjI5MTMsMjMzODMsMjMzODQsMjM0MzEsMjM0MzIsMjM0MjksMjM0MzMsMjM1NDYsMjM1NzQsMjM2NzMsMjQwMzAsMjQwNzAsMjQxODIsMjQxODAsMjQzMzUsMjQzNDcsMjQ1MzcsMjQ1MzQsMjUxMDIsMjUxMDAsMjUxMDEsMjUxMDQsMjUxODcsMjUxNzksMjUxNzYsMjU5MTAsMjYwODksMjYwODgsMjYwOTIsMjYwOTMsMjYzNTQsMjYzNTUsMjYzNzcsMjY0MjksMjY0MjAsMjY0MTcsMjY0MjEsMjc0MjUsMjc0OTIsMjc1MTUsMjc2NzAsMjc3NDEsMjc3MzUsMjc3MzcsMjc3NDMsMjc3NDQsMjc3MjgsMjc3MzMsMjc3NDUsMjc3MzksMjc3MjUsMjc3MjYsMjg3ODQsMjkyNzksMjkyNzcsMzAzMzQsMzE0ODEsMzE4NTksMzE5OTIsMzI1NjYsMzI2NTAsMzI3MDEsMzI3NjksMzI3NzEsMzI3ODAsMzI3ODYsMzI4MTksMzI4OTUsMzI5MDUsMzI5MDcsMzI5MDgsMzMyNTEsMzMyNTgsMzMyNjcsMzMyNzYsMzMyOTIsMzMzMDcsMzMzMTEsMzMzOTAsMzMzOTQsMzM0MDYsMzQ0MTEsMzQ4ODAsMzQ4OTIsMzQ5MTUsMzUxOTksMzg0MzMsMjAwMTgsMjAxMzYsMjAzMDEsMjAzMDMsMjAyOTUsMjAzMTEsMjAzMTgsMjAyNzYsMjAzMTUsMjAzMDksMjAyNzIsMjAzMDQsMjAzMDUsMjAyODUsMjAyODIsMjAyODAsMjAyOTEsMjAzMDgsMjAyODQsMjAyOTQsMjAzMjMsMjAzMTYsMjAzMjAsMjAyNzEsMjAzMDIsMjAyNzgsMjAzMTMsMjAzMTcsMjAyOTYsMjAzMTQsMjA4MTIsMjA4MTEsMjA4MTMsMjA4NTMsMjA5MTgsMjA5MTksMjEwMjksMjEwMjgsMjEwMzMsMjEwMzQsMjEwMzIsMjExNjMsMjExNjEsMjExNjIsMjExNjQsMjEyODMsMjEzNjMsMjEzNjUsMjE1MzMsMjE1NDksMjE1MzQsMjE1NjYsMjE1NDIsMjE1ODIsMjE1NDMsMjE1NzQsMjE1NzEsMjE1NTUsMjE1NzYsMjE1NzAsMjE1MzEsMjE1NDUsMjE1NzgsMjE1NjEsMjE1NjMsMjE1NjAsMjE1NTAsMjE1NTcsMjE1NTgsMjE1MzYsMjE1NjQsMjE1NjgsMjE1NTMsMjE1NDcsMjE1MzUsMjE1NDgsMjIyNTAsMjIyNTYsMjIyNDQsMjIyNTEsMjIzNDYsMjIzNTMsMjIzMzYsMjIzNDksMjIzNDMsMjIzNTAsMjIzMzQsMjIzNTIsMjIzNTEsMjIzMzEsMjI3NjcsMjI4NDYsMjI5NDEsMjI5MzAsMjI5NTIsMjI5NDIsMjI5NDcsMjI5MzcsMjI5MzQsMjI5MjUsMjI5NDgsMjI5MzEsMjI5MjIsMjI5NDksMjMzODksMjMzODgsMjMzODYsMjMzODcsMjM0MzYsMjM0MzUsMjM0MzksMjM1OTYsMjM2MTYsMjM2MTcsMjM2MTUsMjM2MTQsMjM2OTYsMjM2OTcsMjM3MDAsMjM2OTIsMjQwNDMsMjQwNzYsMjQyMDcsMjQxOTksMjQyMDIsMjQzMTEsMjQzMjQsMjQzNTEsMjQ0MjAsMjQ0MTgsMjQ0MzksMjQ0NDEsMjQ1MzYsMjQ1MjQsMjQ1MzUsMjQ1MjUsMjQ1NjEsMjQ1NTUsMjQ1NjgsMjQ1NTQsMjUxMDYsMjUxMDUsMjUyMjAsMjUyMzksMjUyMzgsMjUyMTYsMjUyMDYsMjUyMjUsMjUxOTcsMjUyMjYsMjUyMTIsMjUyMTQsMjUyMDksMjUyMDMsMjUyMzQsMjUxOTksMjUyNDAsMjUxOTgsMjUyMzcsMjUyMzUsMjUyMzMsMjUyMjIsMjU5MTMsMjU5MTUsMjU5MTIsMjYwOTcsMjYzNTYsMjY0NjMsMjY0NDYsMjY0NDcsMjY0NDgsMjY0NDksMjY0NjAsMjY0NTQsMjY0NjIsMjY0NDEsMjY0MzgsMjY0NjQsMjY0NTEsMjY0NTUsMjc0OTMsMjc1OTksMjc3MTQsMjc3NDIsMjc4MDEsMjc3NzcsMjc3ODQsMjc3ODUsMjc3ODEsMjc4MDMsMjc3NTQsMjc3NzAsMjc3OTIsMjc3NjAsMjc3ODgsMjc3NTIsMjc3OTgsMjc3OTQsMjc3NzMsMjc3NzksMjc3NjIsMjc3NzQsMjc3NjQsMjc3ODIsMjc3NjYsMjc3ODksMjc3OTYsMjc4MDAsMjc3NzgsMjg3OTAsMjg3OTYsMjg3OTcsMjg3OTIsMjkyODIsMjkyODEsMjkyODAsMjkzODAsMjkzNzgsMjk1OTAsMjk5OTYsMjk5OTUsMzAwMDcsMzAwMDgsMzAzMzgsMzA0NDcsMzA2OTEsMzExNjksMzExNjgsMzExNjcsMzEzNTAsMzE5OTUsMzI1OTcsMzI5MTgsMzI5MTUsMzI5MjUsMzI5MjAsMzI5MjMsMzI5MjIsMzI5NDYsMzMzOTEsMzM0MjYsMzM0MTksMzM0MjEsMzUyMTEsMzUyODIsMzUzMjgsMzU4OTUsMzU5MTAsMzU5MjUsMzU5OTcsMzYxOTYsMzYyMDgsMzYyNzUsMzY1MjMsMzY1NTQsMzY3NjMsMzY3ODQsMzY4MDIsMzY4MDYsMzY4MDUsMzY4MDQsMjQwMzMsMzcwMDksMzcwMjYsMzcwMzQsMzcwMzAsMzcwMjcsMzcxOTMsMzczMTgsMzczMjQsMzg0NTAsMzg0NDYsMzg0NDksMzg0NDIsMzg0NDQsMjAwMDYsMjAwNTQsMjAwODMsMjAxMDcsMjAxMjMsMjAxMjYsMjAxMzksMjAxNDAsMjAzMzUsMjAzODEsMjAzNjUsMjAzMzksMjAzNTEsMjAzMzIsMjAzNzksMjAzNjMsMjAzNTgsMjAzNTUsMjAzMzYsMjAzNDEsMjAzNjAsMjAzMjksMjAzNDcsMjAzNzQsMjAzNTAsMjAzNjcsMjAzNjksMjAzNDYsMjA4MjAsMjA4MTgsMjA4MjEsMjA4NDEsMjA4NTUsMjA4NTQsMjA4NTYsMjA5MjUsMjA5ODksMjEwNTEsMjEwNDgsMjEwNDcsMjEwNTAsMjEwNDAsMjEwMzgsMjEwNDYsMjEwNTcsMjExODIsMjExNzksMjEzMzAsMjEzMzIsMjEzMzEsMjEzMjksMjEzNTAsMjEzNjcsMjEzNjgsMjEzNjksMjE0NjIsMjE0NjAsMjE0NjMsMjE2MTksMjE2MjEsMjE2NTQsMjE2MjQsMjE2NTMsMjE2MzIsMjE2MjcsMjE2MjMsMjE2MzYsMjE2NTAsMjE2MzgsMjE2MjgsMjE2NDgsMjE2MTcsMjE2MjIsMjE2NDQsMjE2NTgsMjE2MDIsMjE2MDgsMjE2NDMsMjE2MjksMjE2NDYsMjIyNjYsMjI0MDMsMjIzOTEsMjIzNzgsMjIzNzcsMjIzNjksMjIzNzQsMjIzNzIsMjIzOTYsMjI4MTIsMjI4NTcsMjI4NTUsMjI4NTYsMjI4NTIsMjI4NjgsMjI5NzQsMjI5NzEsMjI5OTYsMjI5NjksMjI5NTgsMjI5OTMsMjI5ODIsMjI5OTIsMjI5ODksMjI5ODcsMjI5OTUsMjI5ODYsMjI5NTksMjI5NjMsMjI5OTQsMjI5ODEsMjMzOTEsMjMzOTYsMjMzOTUsMjM0NDcsMjM0NTAsMjM0NDgsMjM0NTIsMjM0NDksMjM0NTEsMjM1NzgsMjM2MjQsMjM2MjEsMjM2MjIsMjM3MzUsMjM3MTMsMjM3MzYsMjM3MjEsMjM3MjMsMjM3MjksMjM3MzEsMjQwODgsMjQwOTAsMjQwODYsMjQwODUsMjQwOTEsMjQwODEsMjQxODQsMjQyMTgsMjQyMTUsMjQyMjAsMjQyMTMsMjQyMTQsMjQzMTAsMjQzNTgsMjQzNTksMjQzNjEsMjQ0NDgsMjQ0NDksMjQ0NDcsMjQ0NDQsMjQ1NDEsMjQ1NDQsMjQ1NzMsMjQ1NjUsMjQ1NzUsMjQ1OTEsMjQ1OTYsMjQ2MjMsMjQ2MjksMjQ1OTgsMjQ2MTgsMjQ1OTcsMjQ2MDksMjQ2MTUsMjQ2MTcsMjQ2MTksMjQ2MDMsMjUxMTAsMjUxMDksMjUxNTEsMjUxNTAsMjUxNTIsMjUyMTUsMjUyODksMjUyOTIsMjUyODQsMjUyNzksMjUyODIsMjUyNzMsMjUyOTgsMjUzMDcsMjUyNTksMjUyOTksMjUzMDAsMjUyOTEsMjUyODgsMjUyNTYsMjUyNzcsMjUyNzYsMjUyOTYsMjUzMDUsMjUyODcsMjUyOTMsMjUyNjksMjUzMDYsMjUyNjUsMjUzMDQsMjUzMDIsMjUzMDMsMjUyODYsMjUyNjAsMjUyOTQsMjU5MTgsMjYwMjMsMjYwNDQsMjYxMDYsMjYxMzIsMjYxMzEsMjYxMjQsMjYxMTgsMjYxMTQsMjYxMjYsMjYxMTIsMjYxMjcsMjYxMzMsMjYxMjIsMjYxMTksMjYzODEsMjYzNzksMjY0NzcsMjY1MDcsMjY1MTcsMjY0ODEsMjY1MjQsMjY0ODMsMjY0ODcsMjY1MDMsMjY1MjUsMjY1MTksMjY0NzksMjY0ODAsMjY0OTUsMjY1MDUsMjY0OTQsMjY1MTIsMjY0ODUsMjY1MjIsMjY1MTUsMjY0OTIsMjY0NzQsMjY0ODIsMjc0MjcsMjc0OTQsMjc0OTUsMjc1MTksMjc2NjcsMjc2NzUsMjc4NzUsMjc4ODAsMjc4OTEsMjc4MjUsMjc4NTIsMjc4NzcsMjc4MjcsMjc4MzcsMjc4MzgsMjc4MzYsMjc4NzQsMjc4MTksMjc4NjEsMjc4NTksMjc4MzIsMjc4NDQsMjc4MzMsMjc4NDEsMjc4MjIsMjc4NjMsMjc4NDUsMjc4ODksMjc4MzksMjc4MzUsMjc4NzMsMjc4NjcsMjc4NTAsMjc4MjAsMjc4ODcsMjc4NjgsMjc4NjIsMjc4NzIsMjg4MjEsMjg4MTQsMjg4MTgsMjg4MTAsMjg4MjUsMjkyMjgsMjkyMjksMjkyNDAsMjkyNTYsMjkyODcsMjkyODksMjkzNzYsMjkzOTAsMjk0MDEsMjkzOTksMjkzOTIsMjk2MDksMjk2MDgsMjk1OTksMjk2MTEsMjk2MDUsMzAwMTMsMzAxMDksMzAxMDUsMzAxMDYsMzAzNDAsMzA0MDIsMzA0NTAsMzA0NTIsMzA2OTMsMzA3MTcsMzEwMzgsMzEwNDAsMzEwNDEsMzExNzcsMzExNzYsMzEzNTQsMzEzNTMsMzE0ODIsMzE5OTgsMzI1OTYsMzI2NTIsMzI2NTEsMzI3NzMsMzI5NTQsMzI5MzMsMzI5MzAsMzI5NDUsMzI5MjksMzI5MzksMzI5MzcsMzI5NDgsMzI5MzgsMzI5NDMsMzMyNTMsMzMyNzgsMzMyOTMsMzM0NTksMzM0MzcsMzM0MzMsMzM0NTMsMzM0NjksMzM0MzksMzM0NjUsMzM0NTcsMzM0NTIsMzM0NDUsMzM0NTUsMzM0NjQsMzM0NDMsMzM0NTYsMzM0NzAsMzM0NjMsMzQzODIsMzQ0MTcsMjEwMjEsMzQ5MjAsMzY1NTUsMzY4MTQsMzY4MjAsMzY4MTcsMzcwNDUsMzcwNDgsMzcwNDEsMzcwNDYsMzczMTksMzczMjksMzgyNjMsMzgyNzIsMzg0MjgsMzg0NjQsMzg0NjMsMzg0NTksMzg0NjgsMzg0NjYsMzg1ODUsMzg2MzIsMzg3MzgsMzg3NTAsMjAxMjcsMjAxNDEsMjAxNDIsMjA0NDksMjA0MDUsMjAzOTksMjA0MTUsMjA0NDgsMjA0MzMsMjA0MzEsMjA0NDUsMjA0MTksMjA0MDYsMjA0NDAsMjA0NDcsMjA0MjYsMjA0MzksMjAzOTgsMjA0MzIsMjA0MjAsMjA0MTgsMjA0NDIsMjA0MzAsMjA0NDYsMjA0MDcsMjA4MjMsMjA4ODIsMjA4ODEsMjA4OTYsMjEwNzAsMjEwNTksMjEwNjYsMjEwNjksMjEwNjgsMjEwNjcsMjEwNjMsMjExOTEsMjExOTMsMjExODcsMjExODUsMjEyNjEsMjEzMzUsMjEzNzEsMjE0MDIsMjE0NjcsMjE2NzYsMjE2OTYsMjE2NzIsMjE3MTAsMjE3MDUsMjE2ODgsMjE2NzAsMjE2ODMsMjE3MDMsMjE2OTgsMjE2OTMsMjE2NzQsMjE2OTcsMjE3MDAsMjE3MDQsMjE2NzksMjE2NzUsMjE2ODEsMjE2OTEsMjE2NzMsMjE2NzEsMjE2OTUsMjIyNzEsMjI0MDIsMjI0MTEsMjI0MzIsMjI0MzUsMjI0MzQsMjI0NzgsMjI0NDYsMjI0MTksMjI4NjksMjI4NjUsMjI4NjMsMjI4NjIsMjI4NjQsMjMwMDQsMjMwMDAsMjMwMzksMjMwMTEsMjMwMTYsMjMwNDMsMjMwMTMsMjMwMTgsMjMwMDIsMjMwMTQsMjMwNDEsMjMwMzUsMjM0MDEsMjM0NTksMjM0NjIsMjM0NjAsMjM0NTgsMjM0NjEsMjM1NTMsMjM2MzAsMjM2MzEsMjM2MjksMjM2MjcsMjM3NjksMjM3NjIsMjQwNTUsMjQwOTMsMjQxMDEsMjQwOTUsMjQxODksMjQyMjQsMjQyMzAsMjQzMTQsMjQzMjgsMjQzNjUsMjQ0MjEsMjQ0NTYsMjQ0NTMsMjQ0NTgsMjQ0NTksMjQ0NTUsMjQ0NjAsMjQ0NTcsMjQ1OTQsMjQ2MDUsMjQ2MDgsMjQ2MTMsMjQ1OTAsMjQ2MTYsMjQ2NTMsMjQ2ODgsMjQ2ODAsMjQ2NzQsMjQ2NDYsMjQ2NDMsMjQ2ODQsMjQ2ODMsMjQ2ODIsMjQ2NzYsMjUxNTMsMjUzMDgsMjUzNjYsMjUzNTMsMjUzNDAsMjUzMjUsMjUzNDUsMjUzMjYsMjUzNDEsMjUzNTEsMjUzMjksMjUzMzUsMjUzMjcsMjUzMjQsMjUzNDIsMjUzMzIsMjUzNjEsMjUzNDYsMjU5MTksMjU5MjUsMjYwMjcsMjYwNDUsMjYwODIsMjYxNDksMjYxNTcsMjYxNDQsMjYxNTEsMjYxNTksMjYxNDMsMjYxNTIsMjYxNjEsMjYxNDgsMjYzNTksMjY2MjMsMjY1NzksMjY2MDksMjY1ODAsMjY1NzYsMjY2MDQsMjY1NTAsMjY1NDMsMjY2MTMsMjY2MDEsMjY2MDcsMjY1NjQsMjY1NzcsMjY1NDgsMjY1ODYsMjY1OTcsMjY1NTIsMjY1NzUsMjY1OTAsMjY2MTEsMjY1NDQsMjY1ODUsMjY1OTQsMjY1ODksMjY1NzgsMjc0OTgsMjc1MjMsMjc1MjYsMjc1NzMsMjc2MDIsMjc2MDcsMjc2NzksMjc4NDksMjc5MTUsMjc5NTQsMjc5NDYsMjc5NjksMjc5NDEsMjc5MTYsMjc5NTMsMjc5MzQsMjc5MjcsMjc5NjMsMjc5NjUsMjc5NjYsMjc5NTgsMjc5MzEsMjc4OTMsMjc5NjEsMjc5NDMsMjc5NjAsMjc5NDUsMjc5NTAsMjc5NTcsMjc5MTgsMjc5NDcsMjg4NDMsMjg4NTgsMjg4NTEsMjg4NDQsMjg4NDcsMjg4NDUsMjg4NTYsMjg4NDYsMjg4MzYsMjkyMzIsMjkyOTgsMjkyOTUsMjkzMDAsMjk0MTcsMjk0MDgsMjk0MDksMjk2MjMsMjk2NDIsMjk2MjcsMjk2MTgsMjk2NDUsMjk2MzIsMjk2MTksMjk5NzgsMjk5OTcsMzAwMzEsMzAwMjgsMzAwMzAsMzAwMjcsMzAxMjMsMzAxMTYsMzAxMTcsMzAxMTQsMzAxMTUsMzAzMjgsMzAzNDIsMzAzNDMsMzAzNDQsMzA0MDgsMzA0MDYsMzA0MDMsMzA0MDUsMzA0NjUsMzA0NTcsMzA0NTYsMzA0NzMsMzA0NzUsMzA0NjIsMzA0NjAsMzA0NzEsMzA2ODQsMzA3MjIsMzA3NDAsMzA3MzIsMzA3MzMsMzEwNDYsMzEwNDksMzEwNDgsMzEwNDcsMzExNjEsMzExNjIsMzExODUsMzExODYsMzExNzksMzEzNTksMzEzNjEsMzE0ODcsMzE0ODUsMzE4NjksMzIwMDIsMzIwMDUsMzIwMDAsMzIwMDksMzIwMDcsMzIwMDQsMzIwMDYsMzI1NjgsMzI2NTQsMzI3MDMsMzI3NzIsMzI3ODQsMzI3ODEsMzI3ODUsMzI4MjIsMzI5ODIsMzI5OTcsMzI5ODYsMzI5NjMsMzI5NjQsMzI5NzIsMzI5OTMsMzI5ODcsMzI5NzQsMzI5OTAsMzI5OTYsMzI5ODksMzMyNjgsMzMzMTQsMzM1MTEsMzM1MzksMzM1NDEsMzM1MDcsMzM0OTksMzM1MTAsMzM1NDAsMzM1MDksMzM1MzgsMzM1NDUsMzM0OTAsMzM0OTUsMzM1MjEsMzM1MzcsMzM1MDAsMzM0OTIsMzM0ODksMzM1MDIsMzM0OTEsMzM1MDMsMzM1MTksMzM1NDIsMzQzODQsMzQ0MjUsMzQ0MjcsMzQ0MjYsMzQ4OTMsMzQ5MjMsMzUyMDEsMzUyODQsMzUzMzYsMzUzMzAsMzUzMzEsMzU5OTgsMzYwMDAsMzYyMTIsMzYyMTEsMzYyNzYsMzY1NTcsMzY1NTYsMzY4NDgsMzY4MzgsMzY4MzQsMzY4NDIsMzY4MzcsMzY4NDUsMzY4NDMsMzY4MzYsMzY4NDAsMzcwNjYsMzcwNzAsMzcwNTcsMzcwNTksMzcxOTUsMzcxOTQsMzczMjUsMzgyNzQsMzg0ODAsMzg0NzUsMzg0NzYsMzg0NzcsMzg3NTQsMzg3NjEsMzg4NTksMzg4OTMsMzg4OTksMzg5MTMsMzkwODAsMzkxMzEsMzkxMzUsMzkzMTgsMzkzMjEsMjAwNTYsMjAxNDcsMjA0OTIsMjA0OTMsMjA1MTUsMjA0NjMsMjA1MTgsMjA1MTcsMjA0NzIsMjA1MjEsMjA1MDIsMjA0ODYsMjA1NDAsMjA1MTEsMjA1MDYsMjA0OTgsMjA0OTcsMjA0NzQsMjA0ODAsMjA1MDAsMjA1MjAsMjA0NjUsMjA1MTMsMjA0OTEsMjA1MDUsMjA1MDQsMjA0NjcsMjA0NjIsMjA1MjUsMjA1MjIsMjA0NzgsMjA1MjMsMjA0ODksMjA4NjAsMjA5MDAsMjA5MDEsMjA4OTgsMjA5NDEsMjA5NDAsMjA5MzQsMjA5MzksMjEwNzgsMjEwODQsMjEwNzYsMjEwODMsMjEwODUsMjEyOTAsMjEzNzUsMjE0MDcsMjE0MDUsMjE0NzEsMjE3MzYsMjE3NzYsMjE3NjEsMjE4MTUsMjE3NTYsMjE3MzMsMjE3NDYsMjE3NjYsMjE3NTQsMjE3ODAsMjE3MzcsMjE3NDEsMjE3MjksMjE3NjksMjE3NDIsMjE3MzgsMjE3MzQsMjE3OTksMjE3NjcsMjE3NTcsMjE3NzUsMjIyNzUsMjIyNzYsMjI0NjYsMjI0ODQsMjI0NzUsMjI0NjcsMjI1MzcsMjI3OTksMjI4NzEsMjI4NzIsMjI4NzQsMjMwNTcsMjMwNjQsMjMwNjgsMjMwNzEsMjMwNjcsMjMwNTksMjMwMjAsMjMwNzIsMjMwNzUsMjMwODEsMjMwNzcsMjMwNTIsMjMwNDksMjM0MDMsMjM2NDAsMjM0NzIsMjM0NzUsMjM0NzgsMjM0NzYsMjM0NzAsMjM0NzcsMjM0ODEsMjM0ODAsMjM1NTYsMjM2MzMsMjM2MzcsMjM2MzIsMjM3ODksMjM4MDUsMjM4MDMsMjM3ODYsMjM3ODQsMjM3OTIsMjM3OTgsMjM4MDksMjM3OTYsMjQwNDYsMjQxMDksMjQxMDcsMjQyMzUsMjQyMzcsMjQyMzEsMjQzNjksMjQ0NjYsMjQ0NjUsMjQ0NjQsMjQ2NjUsMjQ2NzUsMjQ2NzcsMjQ2NTYsMjQ2NjEsMjQ2ODUsMjQ2ODEsMjQ2ODcsMjQ3MDgsMjQ3MzUsMjQ3MzAsMjQ3MTcsMjQ3MjQsMjQ3MTYsMjQ3MDksMjQ3MjYsMjUxNTksMjUzMzEsMjUzNTIsMjUzNDMsMjU0MjIsMjU0MDYsMjUzOTEsMjU0MjksMjU0MTAsMjU0MTQsMjU0MjMsMjU0MTcsMjU0MDIsMjU0MjQsMjU0MDUsMjUzODYsMjUzODcsMjUzODQsMjU0MjEsMjU0MjAsMjU5MjgsMjU5MjksMjYwMDksMjYwNDksMjYwNTMsMjYxNzgsMjYxODUsMjYxOTEsMjYxNzksMjYxOTQsMjYxODgsMjYxODEsMjYxNzcsMjYzNjAsMjYzODgsMjYzODksMjYzOTEsMjY2NTcsMjY2ODAsMjY2OTYsMjY2OTQsMjY3MDcsMjY2ODEsMjY2OTAsMjY3MDgsMjY2NjUsMjY4MDMsMjY2NDcsMjY3MDAsMjY3MDUsMjY2ODUsMjY2MTIsMjY3MDQsMjY2ODgsMjY2ODQsMjY2OTEsMjY2NjYsMjY2OTMsMjY2NDMsMjY2NDgsMjY2ODksMjc1MzAsMjc1MjksMjc1NzUsMjc2ODMsMjc2ODcsMjc2ODgsMjc2ODYsMjc2ODQsMjc4ODgsMjgwMTAsMjgwNTMsMjgwNDAsMjgwMzksMjgwMDYsMjgwMjQsMjgwMjMsMjc5OTMsMjgwNTEsMjgwMTIsMjgwNDEsMjgwMTQsMjc5OTQsMjgwMjAsMjgwMDksMjgwNDQsMjgwNDIsMjgwMjUsMjgwMzcsMjgwMDUsMjgwNTIsMjg4NzQsMjg4ODgsMjg5MDAsMjg4ODksMjg4NzIsMjg4NzksMjkyNDEsMjkzMDUsMjk0MzYsMjk0MzMsMjk0MzcsMjk0MzIsMjk0MzEsMjk1NzQsMjk2NzcsMjk3MDUsMjk2NzgsMjk2NjQsMjk2NzQsMjk2NjIsMzAwMzYsMzAwNDUsMzAwNDQsMzAwNDIsMzAwNDEsMzAxNDIsMzAxNDksMzAxNTEsMzAxMzAsMzAxMzEsMzAxNDEsMzAxNDAsMzAxMzcsMzAxNDYsMzAxMzYsMzAzNDcsMzAzODQsMzA0MTAsMzA0MTMsMzA0MTQsMzA1MDUsMzA0OTUsMzA0OTYsMzA1MDQsMzA2OTcsMzA3NjgsMzA3NTksMzA3NzYsMzA3NDksMzA3NzIsMzA3NzUsMzA3NTcsMzA3NjUsMzA3NTIsMzA3NTEsMzA3NzAsMzEwNjEsMzEwNTYsMzEwNzIsMzEwNzEsMzEwNjIsMzEwNzAsMzEwNjksMzEwNjMsMzEwNjYsMzEyMDQsMzEyMDMsMzEyMDcsMzExOTksMzEyMDYsMzEyMDksMzExOTIsMzEzNjQsMzEzNjgsMzE0NDksMzE0OTQsMzE1MDUsMzE4ODEsMzIwMzMsMzIwMjMsMzIwMTEsMzIwMTAsMzIwMzIsMzIwMzQsMzIwMjAsMzIwMTYsMzIwMjEsMzIwMjYsMzIwMjgsMzIwMTMsMzIwMjUsMzIwMjcsMzI1NzAsMzI2MDcsMzI2NjAsMzI3MDksMzI3MDUsMzI3NzQsMzI3OTIsMzI3ODksMzI3OTMsMzI3OTEsMzI4MjksMzI4MzEsMzMwMDksMzMwMjYsMzMwMDgsMzMwMjksMzMwMDUsMzMwMTIsMzMwMzAsMzMwMTYsMzMwMTEsMzMwMzIsMzMwMjEsMzMwMzQsMzMwMjAsMzMwMDcsMzMyNjEsMzMyNjAsMzMyODAsMzMyOTYsMzMzMjIsMzMzMjMsMzMzMjAsMzMzMjQsMzM0NjcsMzM1NzksMzM2MTgsMzM2MjAsMzM2MTAsMzM1OTIsMzM2MTYsMzM2MDksMzM1ODksMzM1ODgsMzM2MTUsMzM1ODYsMzM1OTMsMzM1OTAsMzM1NTksMzM2MDAsMzM1ODUsMzM1NzYsMzM2MDMsMzQzODgsMzQ0NDIsMzQ0NzQsMzQ0NTEsMzQ0NjgsMzQ0NzMsMzQ0NDQsMzQ0NjcsMzQ0NjAsMzQ5MjgsMzQ5MzUsMzQ5NDUsMzQ5NDYsMzQ5NDEsMzQ5MzcsMzUzNTIsMzUzNDQsMzUzNDIsMzUzNDAsMzUzNDksMzUzMzgsMzUzNTEsMzUzNDcsMzUzNTAsMzUzNDMsMzUzNDUsMzU5MTIsMzU5NjIsMzU5NjEsMzYwMDEsMzYwMDIsMzYyMTUsMzY1MjQsMzY1NjIsMzY1NjQsMzY1NTksMzY3ODUsMzY4NjUsMzY4NzAsMzY4NTUsMzY4NjQsMzY4NTgsMzY4NTIsMzY4NjcsMzY4NjEsMzY4NjksMzY4NTYsMzcwMTMsMzcwODksMzcwODUsMzcwOTAsMzcyMDIsMzcxOTcsMzcxOTYsMzczMzYsMzczNDEsMzczMzUsMzczNDAsMzczMzcsMzgyNzUsMzg0OTgsMzg0OTksMzg0OTcsMzg0OTEsMzg0OTMsMzg1MDAsMzg0ODgsMzg0OTQsMzg1ODcsMzkxMzgsMzkzNDAsMzk1OTIsMzk2NDAsMzk3MTcsMzk3MzAsMzk3NDAsMjAwOTQsMjA2MDIsMjA2MDUsMjA1NzIsMjA1NTEsMjA1NDcsMjA1NTYsMjA1NzAsMjA1NTMsMjA1ODEsMjA1OTgsMjA1NTgsMjA1NjUsMjA1OTcsMjA1OTYsMjA1OTksMjA1NTksMjA0OTUsMjA1OTEsMjA1ODksMjA4MjgsMjA4ODUsMjA5NzYsMjEwOTgsMjExMDMsMjEyMDIsMjEyMDksMjEyMDgsMjEyMDUsMjEyNjQsMjEyNjMsMjEyNzMsMjEzMTEsMjEzMTIsMjEzMTAsMjE0NDMsMjYzNjQsMjE4MzAsMjE4NjYsMjE4NjIsMjE4MjgsMjE4NTQsMjE4NTcsMjE4MjcsMjE4MzQsMjE4MDksMjE4NDYsMjE4MzksMjE4NDUsMjE4MDcsMjE4NjAsMjE4MTYsMjE4MDYsMjE4NTIsMjE4MDQsMjE4NTksMjE4MTEsMjE4MjUsMjE4NDcsMjIyODAsMjIyODMsMjIyODEsMjI0OTUsMjI1MzMsMjI1MzgsMjI1MzQsMjI0OTYsMjI1MDAsMjI1MjIsMjI1MzAsMjI1ODEsMjI1MTksMjI1MjEsMjI4MTYsMjI4ODIsMjMwOTQsMjMxMDUsMjMxMTMsMjMxNDIsMjMxNDYsMjMxMDQsMjMxMDAsMjMxMzgsMjMxMzAsMjMxMTAsMjMxMTQsMjM0MDgsMjM0OTUsMjM0OTMsMjM0OTIsMjM0OTAsMjM0ODcsMjM0OTQsMjM1NjEsMjM1NjAsMjM1NTksMjM2NDgsMjM2NDQsMjM2NDUsMjM4MTUsMjM4MTQsMjM4MjIsMjM4MzUsMjM4MzAsMjM4NDIsMjM4MjUsMjM4NDksMjM4MjgsMjM4MzMsMjM4NDQsMjM4NDcsMjM4MzEsMjQwMzQsMjQxMjAsMjQxMTgsMjQxMTUsMjQxMTksMjQyNDcsMjQyNDgsMjQyNDYsMjQyNDUsMjQyNTQsMjQzNzMsMjQzNzUsMjQ0MDcsMjQ0MjgsMjQ0MjUsMjQ0MjcsMjQ0NzEsMjQ0NzMsMjQ0NzgsMjQ0NzIsMjQ0ODEsMjQ0ODAsMjQ0NzYsMjQ3MDMsMjQ3MzksMjQ3MTMsMjQ3MzYsMjQ3NDQsMjQ3NzksMjQ3NTYsMjQ4MDYsMjQ3NjUsMjQ3NzMsMjQ3NjMsMjQ3NTcsMjQ3OTYsMjQ3NjQsMjQ3OTIsMjQ3ODksMjQ3NzQsMjQ3OTksMjQ3NjAsMjQ3OTQsMjQ3NzUsMjUxMTQsMjUxMTUsMjUxNjAsMjU1MDQsMjU1MTEsMjU0NTgsMjU0OTQsMjU1MDYsMjU1MDksMjU0NjMsMjU0NDcsMjU0OTYsMjU1MTQsMjU0NTcsMjU1MTMsMjU0ODEsMjU0NzUsMjU0OTksMjU0NTEsMjU1MTIsMjU0NzYsMjU0ODAsMjU0OTcsMjU1MDUsMjU1MTYsMjU0OTAsMjU0ODcsMjU0NzIsMjU0NjcsMjU0NDksMjU0NDgsMjU0NjYsMjU5NDksMjU5NDIsMjU5MzcsMjU5NDUsMjU5NDMsMjE4NTUsMjU5MzUsMjU5NDQsMjU5NDEsMjU5NDAsMjYwMTIsMjYwMTEsMjYwMjgsMjYwNjMsMjYwNTksMjYwNjAsMjYwNjIsMjYyMDUsMjYyMDIsMjYyMTIsMjYyMTYsMjYyMTQsMjYyMDYsMjYzNjEsMjEyMDcsMjYzOTUsMjY3NTMsMjY3OTksMjY3ODYsMjY3NzEsMjY4MDUsMjY3NTEsMjY3NDIsMjY4MDEsMjY3OTEsMjY3NzUsMjY4MDAsMjY3NTUsMjY4MjAsMjY3OTcsMjY3NTgsMjY3NTcsMjY3NzIsMjY3ODEsMjY3OTIsMjY3ODMsMjY3ODUsMjY3NTQsMjc0NDIsMjc1NzgsMjc2MjcsMjc2MjgsMjc2OTEsMjgwNDYsMjgwOTIsMjgxNDcsMjgxMjEsMjgwODIsMjgxMjksMjgxMDgsMjgxMzIsMjgxNTUsMjgxNTQsMjgxNjUsMjgxMDMsMjgxMDcsMjgwNzksMjgxMTMsMjgwNzgsMjgxMjYsMjgxNTMsMjgwODgsMjgxNTEsMjgxNDksMjgxMDEsMjgxMTQsMjgxODYsMjgwODUsMjgxMjIsMjgxMzksMjgxMjAsMjgxMzgsMjgxNDUsMjgxNDIsMjgxMzYsMjgxMDIsMjgxMDAsMjgwNzQsMjgxNDAsMjgwOTUsMjgxMzQsMjg5MjEsMjg5MzcsMjg5MzgsMjg5MjUsMjg5MTEsMjkyNDUsMjkzMDksMjkzMTMsMjk0NjgsMjk0NjcsMjk0NjIsMjk0NTksMjk0NjUsMjk1NzUsMjk3MDEsMjk3MDYsMjk2OTksMjk3MDIsMjk2OTQsMjk3MDksMjk5MjAsMjk5NDIsMjk5NDMsMjk5ODAsMjk5ODYsMzAwNTMsMzAwNTQsMzAwNTAsMzAwNjQsMzAwOTUsMzAxNjQsMzAxNjUsMzAxMzMsMzAxNTQsMzAxNTcsMzAzNTAsMzA0MjAsMzA0MTgsMzA0MjcsMzA1MTksMzA1MjYsMzA1MjQsMzA1MTgsMzA1MjAsMzA1MjIsMzA4MjcsMzA3ODcsMzA3OTgsMzEwNzcsMzEwODAsMzEwODUsMzEyMjcsMzEzNzgsMzEzODEsMzE1MjAsMzE1MjgsMzE1MTUsMzE1MzIsMzE1MjYsMzE1MTMsMzE1MTgsMzE1MzQsMzE4OTAsMzE4OTUsMzE4OTMsMzIwNzAsMzIwNjcsMzIxMTMsMzIwNDYsMzIwNTcsMzIwNjAsMzIwNjQsMzIwNDgsMzIwNTEsMzIwNjgsMzIwNDcsMzIwNjYsMzIwNTAsMzIwNDksMzI1NzMsMzI2NzAsMzI2NjYsMzI3MTYsMzI3MTgsMzI3MjIsMzI3OTYsMzI4NDIsMzI4MzgsMzMwNzEsMzMwNDYsMzMwNTksMzMwNjcsMzMwNjUsMzMwNzIsMzMwNjAsMzMyODIsMzMzMzMsMzMzMzUsMzMzMzQsMzMzMzcsMzM2NzgsMzM2OTQsMzM2ODgsMzM2NTYsMzM2OTgsMzM2ODYsMzM3MjUsMzM3MDcsMzM2ODIsMzM2NzQsMzM2ODMsMzM2NzMsMzM2OTYsMzM2NTUsMzM2NTksMzM2NjAsMzM2NzAsMzM3MDMsMzQzODksMjQ0MjYsMzQ1MDMsMzQ0OTYsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MDIsMzQ1MDcsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ4OTksMzQ5NzQsMzQ5NTIsMzQ5ODcsMzQ5NjIsMzQ5NjYsMzQ5NTcsMzQ5NTUsMzUyMTksMzUyMTUsMzUzNzAsMzUzNTcsMzUzNjMsMzUzNjUsMzUzNzcsMzUzNzMsMzUzNTksMzUzNTUsMzUzNjIsMzU5MTMsMzU5MzAsMzYwMDksMzYwMTIsMzYwMTEsMzYwMDgsMzYwMTAsMzYwMDcsMzYxOTksMzYxOTgsMzYyODYsMzYyODIsMzY1NzEsMzY1NzUsMzY4ODksMzY4NzcsMzY4OTAsMzY4ODcsMzY4OTksMzY4OTUsMzY4OTMsMzY4ODAsMzY4ODUsMzY4OTQsMzY4OTYsMzY4NzksMzY4OTgsMzY4ODYsMzY4OTEsMzY4ODQsMzcwOTYsMzcxMDEsMzcxMTcsMzcyMDcsMzczMjYsMzczNjUsMzczNTAsMzczNDcsMzczNTEsMzczNTcsMzczNTMsMzgyODEsMzg1MDYsMzg1MTcsMzg1MTUsMzg1MjAsMzg1MTIsMzg1MTYsMzg1MTgsMzg1MTksMzg1MDgsMzg1OTIsMzg2MzQsMzg2MzMsMzE0NTYsMzE0NTUsMzg5MTQsMzg5MTUsMzk3NzAsNDAxNjUsNDA1NjUsNDA1NzUsNDA2MTMsNDA2MzUsMjA2NDIsMjA2MjEsMjA2MTMsMjA2MzMsMjA2MjUsMjA2MDgsMjA2MzAsMjA2MzIsMjA2MzQsMjYzNjgsMjA5NzcsMjExMDYsMjExMDgsMjExMDksMjEwOTcsMjEyMTQsMjEyMTMsMjEyMTEsMjEzMzgsMjE0MTMsMjE4ODMsMjE4ODgsMjE5MjcsMjE4ODQsMjE4OTgsMjE5MTcsMjE5MTIsMjE4OTAsMjE5MTYsMjE5MzAsMjE5MDgsMjE4OTUsMjE4OTksMjE4OTEsMjE5MzksMjE5MzQsMjE5MTksMjE4MjIsMjE5MzgsMjE5MTQsMjE5NDcsMjE5MzIsMjE5MzcsMjE4ODYsMjE4OTcsMjE5MzEsMjE5MTMsMjIyODUsMjI1NzUsMjI1NzAsMjI1ODAsMjI1NjQsMjI1NzYsMjI1NzcsMjI1NjEsMjI1NTcsMjI1NjAsMjI3NzcsMjI3NzgsMjI4ODAsMjMxNTksMjMxOTQsMjMxNjcsMjMxODYsMjMxOTUsMjMyMDcsMjM0MTEsMjM0MDksMjM1MDYsMjM1MDAsMjM1MDcsMjM1MDQsMjM1NjIsMjM1NjMsMjM2MDEsMjM4ODQsMjM4ODgsMjM4NjAsMjM4NzksMjQwNjEsMjQxMzMsMjQxMjUsMjQxMjgsMjQxMzEsMjQxOTAsMjQyNjYsMjQyNTcsMjQyNTgsMjQyNjAsMjQzODAsMjQ0MjksMjQ0ODksMjQ0OTAsMjQ0ODgsMjQ3ODUsMjQ4MDEsMjQ3NTQsMjQ3NTgsMjQ4MDAsMjQ4NjAsMjQ4NjcsMjQ4MjYsMjQ4NTMsMjQ4MTYsMjQ4MjcsMjQ4MjAsMjQ5MzYsMjQ4MTcsMjQ4NDYsMjQ4MjIsMjQ4NDEsMjQ4MzIsMjQ4NTAsMjUxMTksMjUxNjEsMjU1MDcsMjU0ODQsMjU1NTEsMjU1MzYsMjU1NzcsMjU1NDUsMjU1NDIsMjU1NDksMjU1NTQsMjU1NzEsMjU1NTIsMjU1NjksMjU1NTgsMjU1ODEsMjU1ODIsMjU0NjIsMjU1ODgsMjU1NzgsMjU1NjMsMjU2ODIsMjU1NjIsMjU1OTMsMjU5NTAsMjU5NTgsMjU5NTQsMjU5NTUsMjYwMDEsMjYwMDAsMjYwMzEsMjYyMjIsMjYyMjQsMjYyMjgsMjYyMzAsMjYyMjMsMjYyNTcsMjYyMzQsMjYyMzgsMjYyMzEsMjYzNjYsMjYzNjcsMjYzOTksMjYzOTcsMjY4NzQsMjY4MzcsMjY4NDgsMjY4NDAsMjY4MzksMjY4ODUsMjY4NDcsMjY4NjksMjY4NjIsMjY4NTUsMjY4NzMsMjY4MzQsMjY4NjYsMjY4NTEsMjY4MjcsMjY4MjksMjY4OTMsMjY4OTgsMjY4OTQsMjY4MjUsMjY4NDIsMjY5OTAsMjY4NzUsMjc0NTQsMjc0NTAsMjc0NTMsMjc1NDQsMjc1NDIsMjc1ODAsMjc2MzEsMjc2OTQsMjc2OTUsMjc2OTIsMjgyMDcsMjgyMTYsMjgyNDQsMjgxOTMsMjgyMTAsMjgyNjMsMjgyMzQsMjgxOTIsMjgxOTcsMjgxOTUsMjgxODcsMjgyNTEsMjgyNDgsMjgxOTYsMjgyNDYsMjgyNzAsMjgyMDUsMjgxOTgsMjgyNzEsMjgyMTIsMjgyMzcsMjgyMTgsMjgyMDQsMjgyMjcsMjgxODksMjgyMjIsMjgzNjMsMjgyOTcsMjgxODUsMjgyMzgsMjgyNTksMjgyMjgsMjgyNzQsMjgyNjUsMjgyNTUsMjg5NTMsMjg5NTQsMjg5NjYsMjg5NzYsMjg5NjEsMjg5ODIsMjkwMzgsMjg5NTYsMjkyNjAsMjkzMTYsMjkzMTIsMjk0OTQsMjk0NzcsMjk0OTIsMjk0ODEsMjk3NTQsMjk3MzgsMjk3NDcsMjk3MzAsMjk3MzMsMjk3NDksMjk3NTAsMjk3NDgsMjk3NDMsMjk3MjMsMjk3MzQsMjk3MzYsMjk5ODksMjk5OTAsMzAwNTksMzAwNTgsMzAxNzgsMzAxNzEsMzAxNzksMzAxNjksMzAxNjgsMzAxNzQsMzAxNzYsMzAzMzEsMzAzMzIsMzAzNTgsMzAzNTUsMzAzODgsMzA0MjgsMzA1NDMsMzA3MDEsMzA4MTMsMzA4MjgsMzA4MzEsMzEyNDUsMzEyNDAsMzEyNDMsMzEyMzcsMzEyMzIsMzEzODQsMzEzODMsMzEzODIsMzE0NjEsMzE0NTksMzE1NjEsMzE1NzQsMzE1NTgsMzE1NjgsMzE1NzAsMzE1NzIsMzE1NjUsMzE1NjMsMzE1NjcsMzE1NjksMzE5MDMsMzE5MDksMzIwOTQsMzIwODAsMzIxMDQsMzIwODUsMzIwNDMsMzIxMTAsMzIxMTQsMzIwOTcsMzIxMDIsMzIwOTgsMzIxMTIsMzIxMTUsMjE4OTIsMzI3MjQsMzI3MjUsMzI3NzksMzI4NTAsMzI5MDEsMzMxMDksMzMxMDgsMzMwOTksMzMxMDUsMzMxMDIsMzMwODEsMzMwOTQsMzMwODYsMzMxMDAsMzMxMDcsMzMxNDAsMzMyOTgsMzMzMDgsMzM3NjksMzM3OTUsMzM3ODQsMzM4MDUsMzM3NjAsMzM3MzMsMzM4MDMsMzM3MjksMzM3NzUsMzM3NzcsMzM3ODAsMzM4NzksMzM4MDIsMzM3NzYsMzM4MDQsMzM3NDAsMzM3ODksMzM3NzgsMzM3MzgsMzM4NDgsMzM4MDYsMzM3OTYsMzM3NTYsMzM3OTksMzM3NDgsMzM3NTksMzQzOTUsMzQ1MjcsMzQ1MjEsMzQ1NDEsMzQ1MTYsMzQ1MjMsMzQ1MzIsMzQ1MTIsMzQ1MjYsMzQ5MDMsMzUwMDksMzUwMTAsMzQ5OTMsMzUyMDMsMzUyMjIsMzUzODcsMzU0MjQsMzU0MTMsMzU0MjIsMzUzODgsMzUzOTMsMzU0MTIsMzU0MTksMzU0MDgsMzUzOTgsMzUzODAsMzUzODYsMzUzODIsMzU0MTQsMzU5MzcsMzU5NzAsMzYwMTUsMzYwMjgsMzYwMTksMzYwMjksMzYwMzMsMzYwMjcsMzYwMzIsMzYwMjAsMzYwMjMsMzYwMjIsMzYwMzEsMzYwMjQsMzYyMzQsMzYyMjksMzYyMjUsMzYzMDIsMzYzMTcsMzYyOTksMzYzMTQsMzYzMDUsMzYzMDAsMzYzMTUsMzYyOTQsMzY2MDMsMzY2MDAsMzY2MDQsMzY3NjQsMzY5MTAsMzY5MTcsMzY5MTMsMzY5MjAsMzY5MTQsMzY5MTgsMzcxMjIsMzcxMDksMzcxMjksMzcxMTgsMzcyMTksMzcyMjEsMzczMjcsMzczOTYsMzczOTcsMzc0MTEsMzczODUsMzc0MDYsMzczODksMzczOTIsMzczODMsMzczOTMsMzgyOTIsMzgyODcsMzgyODMsMzgyODksMzgyOTEsMzgyOTAsMzgyODYsMzg1MzgsMzg1NDIsMzg1MzksMzg1MjUsMzg1MzMsMzg1MzQsMzg1NDEsMzg1MTQsMzg1MzIsMzg1OTMsMzg1OTcsMzg1OTYsMzg1OTgsMzg1OTksMzg2MzksMzg2NDIsMzg4NjAsMzg5MTcsMzg5MTgsMzg5MjAsMzkxNDMsMzkxNDYsMzkxNTEsMzkxNDUsMzkxNTQsMzkxNDksMzkzNDIsMzkzNDEsNDA2NDMsNDA2NTMsNDA2NTcsMjAwOTgsMjA2NTMsMjA2NjEsMjA2NTgsMjA2NTksMjA2NzcsMjA2NzAsMjA2NTIsMjA2NjMsMjA2NjcsMjA2NTUsMjA2NzksMjExMTksMjExMTEsMjExMTcsMjEyMTUsMjEyMjIsMjEyMjAsMjEyMTgsMjEyMTksMjEyOTUsMjE5ODMsMjE5OTIsMjE5NzEsMjE5OTAsMjE5NjYsMjE5ODAsMjE5NTksMjE5NjksMjE5ODcsMjE5ODgsMjE5OTksMjE5NzgsMjE5ODUsMjE5NTcsMjE5NTgsMjE5ODksMjE5NjEsMjIyOTAsMjIyOTEsMjI2MjIsMjI2MDksMjI2MTYsMjI2MTUsMjI2MTgsMjI2MTIsMjI2MzUsMjI2MDQsMjI2MzcsMjI2MDIsMjI2MjYsMjI2MTAsMjI2MDMsMjI4ODcsMjMyMzMsMjMyNDEsMjMyNDQsMjMyMzAsMjMyMjksMjMyMjgsMjMyMTksMjMyMzQsMjMyMTgsMjM5MTMsMjM5MTksMjQxNDAsMjQxODUsMjQyNjUsMjQyNjQsMjQzMzgsMjQ0MDksMjQ0OTIsMjQ0OTQsMjQ4NTgsMjQ4NDcsMjQ5MDQsMjQ4NjMsMjQ4MTksMjQ4NTksMjQ4MjUsMjQ4MzMsMjQ4NDAsMjQ5MTAsMjQ5MDgsMjQ5MDAsMjQ5MDksMjQ4OTQsMjQ4ODQsMjQ4NzEsMjQ4NDUsMjQ4MzgsMjQ4ODcsMjUxMjEsMjUxMjIsMjU2MTksMjU2NjIsMjU2MzAsMjU2NDIsMjU2NDUsMjU2NjEsMjU2NDQsMjU2MTUsMjU2MjgsMjU2MjAsMjU2MTMsMjU2NTQsMjU2MjIsMjU2MjMsMjU2MDYsMjU5NjQsMjYwMTUsMjYwMzIsMjYyNjMsMjYyNDksMjYyNDcsMjYyNDgsMjYyNjIsMjYyNDQsMjYyNjQsMjYyNTMsMjYzNzEsMjcwMjgsMjY5ODksMjY5NzAsMjY5OTksMjY5NzYsMjY5NjQsMjY5OTcsMjY5MjgsMjcwMTAsMjY5NTQsMjY5ODQsMjY5ODcsMjY5NzQsMjY5NjMsMjcwMDEsMjcwMTQsMjY5NzMsMjY5NzksMjY5NzEsMjc0NjMsMjc1MDYsMjc1ODQsMjc1ODMsMjc2MDMsMjc2NDUsMjgzMjIsMjgzMzUsMjgzNzEsMjgzNDIsMjgzNTQsMjgzMDQsMjgzMTcsMjgzNTksMjgzNTcsMjgzMjUsMjgzMTIsMjgzNDgsMjgzNDYsMjgzMzEsMjgzNjksMjgzMTAsMjgzMTYsMjgzNTYsMjgzNzIsMjgzMzAsMjgzMjcsMjgzNDAsMjkwMDYsMjkwMTcsMjkwMzMsMjkwMjgsMjkwMDEsMjkwMzEsMjkwMjAsMjkwMzYsMjkwMzAsMjkwMDQsMjkwMjksMjkwMjIsMjg5OTgsMjkwMzIsMjkwMTQsMjkyNDIsMjkyNjYsMjk0OTUsMjk1MDksMjk1MDMsMjk1MDIsMjk4MDcsMjk3ODYsMjk3ODEsMjk3OTEsMjk3OTAsMjk3NjEsMjk3NTksMjk3ODUsMjk3ODcsMjk3ODgsMzAwNzAsMzAwNzIsMzAyMDgsMzAxOTIsMzAyMDksMzAxOTQsMzAxOTMsMzAyMDIsMzAyMDcsMzAxOTYsMzAxOTUsMzA0MzAsMzA0MzEsMzA1NTUsMzA1NzEsMzA1NjYsMzA1NTgsMzA1NjMsMzA1ODUsMzA1NzAsMzA1NzIsMzA1NTYsMzA1NjUsMzA1NjgsMzA1NjIsMzA3MDIsMzA4NjIsMzA4OTYsMzA4NzEsMzA4NzIsMzA4NjAsMzA4NTcsMzA4NDQsMzA4NjUsMzA4NjcsMzA4NDcsMzEwOTgsMzExMDMsMzExMDUsMzM4MzYsMzExNjUsMzEyNjAsMzEyNTgsMzEyNjQsMzEyNTIsMzEyNjMsMzEyNjIsMzEzOTEsMzEzOTIsMzE2MDcsMzE2ODAsMzE1ODQsMzE1OTgsMzE1OTEsMzE5MjEsMzE5MjMsMzE5MjUsMzIxNDcsMzIxMjEsMzIxNDUsMzIxMjksMzIxNDMsMzIwOTEsMzI2MjIsMzI2MTcsMzI2MTgsMzI2MjYsMzI2ODEsMzI2ODAsMzI2NzYsMzI4NTQsMzI4NTYsMzI5MDIsMzI5MDAsMzMxMzcsMzMxMzYsMzMxNDQsMzMxMjUsMzMxMzQsMzMxMzksMzMxMzEsMzMxNDUsMzMxNDYsMzMxMjYsMzMyODUsMzMzNTEsMzM5MjIsMzM5MTEsMzM4NTMsMzM4NDEsMzM5MDksMzM4OTQsMzM4OTksMzM4NjUsMzM5MDAsMzM4ODMsMzM4NTIsMzM4NDUsMzM4ODksMzM4OTEsMzM4OTcsMzM5MDEsMzM4NjIsMzQzOTgsMzQzOTYsMzQzOTksMzQ1NTMsMzQ1NzksMzQ1NjgsMzQ1NjcsMzQ1NjAsMzQ1NTgsMzQ1NTUsMzQ1NjIsMzQ1NjMsMzQ1NjYsMzQ1NzAsMzQ5MDUsMzUwMzksMzUwMjgsMzUwMzMsMzUwMzYsMzUwMzIsMzUwMzcsMzUwNDEsMzUwMTgsMzUwMjksMzUwMjYsMzUyMjgsMzUyOTksMzU0MzUsMzU0NDIsMzU0NDMsMzU0MzAsMzU0MzMsMzU0NDAsMzU0NjMsMzU0NTIsMzU0MjcsMzU0ODgsMzU0NDEsMzU0NjEsMzU0MzcsMzU0MjYsMzU0MzgsMzU0MzYsMzU0NDksMzU0NTEsMzUzOTAsMzU0MzIsMzU5MzgsMzU5NzgsMzU5NzcsMzYwNDIsMzYwMzksMzYwNDAsMzYwMzYsMzYwMTgsMzYwMzUsMzYwMzQsMzYwMzcsMzYzMjEsMzYzMTksMzYzMjgsMzYzMzUsMzYzMzksMzYzNDYsMzYzMzAsMzYzMjQsMzYzMjYsMzY1MzAsMzY2MTEsMzY2MTcsMzY2MDYsMzY2MTgsMzY3NjcsMzY3ODYsMzY5MzksMzY5MzgsMzY5NDcsMzY5MzAsMzY5NDgsMzY5MjQsMzY5NDksMzY5NDQsMzY5MzUsMzY5NDMsMzY5NDIsMzY5NDEsMzY5NDUsMzY5MjYsMzY5MjksMzcxMzgsMzcxNDMsMzcyMjgsMzcyMjYsMzcyMjUsMzczMjEsMzc0MzEsMzc0NjMsMzc0MzIsMzc0MzcsMzc0NDAsMzc0MzgsMzc0NjcsMzc0NTEsMzc0NzYsMzc0NTcsMzc0MjgsMzc0NDksMzc0NTMsMzc0NDUsMzc0MzMsMzc0MzksMzc0NjYsMzgyOTYsMzg1NTIsMzg1NDgsMzg1NDksMzg2MDUsMzg2MDMsMzg2MDEsMzg2MDIsMzg2NDcsMzg2NTEsMzg2NDksMzg2NDYsMzg3NDIsMzg3NzIsMzg3NzQsMzg5MjgsMzg5MjksMzg5MzEsMzg5MjIsMzg5MzAsMzg5MjQsMzkxNjQsMzkxNTYsMzkxNjUsMzkxNjYsMzkzNDcsMzkzNDUsMzkzNDgsMzk2NDksNDAxNjksNDA1NzgsNDA3MTgsNDA3MjMsNDA3MzYsMjA3MTEsMjA3MTgsMjA3MDksMjA2OTQsMjA3MTcsMjA2OTgsMjA2OTMsMjA2ODcsMjA2ODksMjA3MjEsMjA2ODYsMjA3MTMsMjA4MzQsMjA5NzksMjExMjMsMjExMjIsMjEyOTcsMjE0MjEsMjIwMTQsMjIwMTYsMjIwNDMsMjIwMzksMjIwMTMsMjIwMzYsMjIwMjIsMjIwMjUsMjIwMjksMjIwMzAsMjIwMDcsMjIwMzgsMjIwNDcsMjIwMjQsMjIwMzIsMjIwMDYsMjIyOTYsMjIyOTQsMjI2NDUsMjI2NTQsMjI2NTksMjI2NzUsMjI2NjYsMjI2NDksMjI2NjEsMjI2NTMsMjI3ODEsMjI4MjEsMjI4MTgsMjI4MjAsMjI4OTAsMjI4ODksMjMyNjUsMjMyNzAsMjMyNzMsMjMyNTUsMjMyNTQsMjMyNTYsMjMyNjcsMjM0MTMsMjM1MTgsMjM1MjcsMjM1MjEsMjM1MjUsMjM1MjYsMjM1MjgsMjM1MjIsMjM1MjQsMjM1MTksMjM1NjUsMjM2NTAsMjM5NDAsMjM5NDMsMjQxNTUsMjQxNjMsMjQxNDksMjQxNTEsMjQxNDgsMjQyNzUsMjQyNzgsMjQzMzAsMjQzOTAsMjQ0MzIsMjQ1MDUsMjQ5MDMsMjQ4OTUsMjQ5MDcsMjQ5NTEsMjQ5MzAsMjQ5MzEsMjQ5MjcsMjQ5MjIsMjQ5MjAsMjQ5NDksMjUxMzAsMjU3MzUsMjU2ODgsMjU2ODQsMjU3NjQsMjU3MjAsMjU2OTUsMjU3MjIsMjU2ODEsMjU3MDMsMjU2NTIsMjU3MDksMjU3MjMsMjU5NzAsMjYwMTcsMjYwNzEsMjYwNzAsMjYyNzQsMjYyODAsMjYyNjksMjcwMzYsMjcwNDgsMjcwMjksMjcwNzMsMjcwNTQsMjcwOTEsMjcwODMsMjcwMzUsMjcwNjMsMjcwNjcsMjcwNTEsMjcwNjAsMjcwODgsMjcwODUsMjcwNTMsMjcwODQsMjcwNDYsMjcwNzUsMjcwNDMsMjc0NjUsMjc0NjgsMjc2OTksMjg0NjcsMjg0MzYsMjg0MTQsMjg0MzUsMjg0MDQsMjg0NTcsMjg0NzgsMjg0NDgsMjg0NjAsMjg0MzEsMjg0MTgsMjg0NTAsMjg0MTUsMjgzOTksMjg0MjIsMjg0NjUsMjg0NzIsMjg0NjYsMjg0NTEsMjg0MzcsMjg0NTksMjg0NjMsMjg1NTIsMjg0NTgsMjgzOTYsMjg0MTcsMjg0MDIsMjgzNjQsMjg0MDcsMjkwNzYsMjkwODEsMjkwNTMsMjkwNjYsMjkwNjAsMjkwNzQsMjkyNDYsMjkzMzAsMjkzMzQsMjk1MDgsMjk1MjAsMjk3OTYsMjk3OTUsMjk4MDIsMjk4MDgsMjk4MDUsMjk5NTYsMzAwOTcsMzAyNDcsMzAyMjEsMzAyMTksMzAyMTcsMzAyMjcsMzA0MzMsMzA0MzUsMzA1OTYsMzA1ODksMzA1OTEsMzA1NjEsMzA5MTMsMzA4NzksMzA4ODcsMzA4OTksMzA4ODksMzA4ODMsMzExMTgsMzExMTksMzExMTcsMzEyNzgsMzEyODEsMzE0MDIsMzE0MDEsMzE0NjksMzE0NzEsMzE2NDksMzE2MzcsMzE2MjcsMzE2MDUsMzE2MzksMzE2NDUsMzE2MzYsMzE2MzEsMzE2NzIsMzE2MjMsMzE2MjAsMzE5MjksMzE5MzMsMzE5MzQsMzIxODcsMzIxNzYsMzIxNTYsMzIxODksMzIxOTAsMzIxNjAsMzIyMDIsMzIxODAsMzIxNzgsMzIxNzcsMzIxODYsMzIxNjIsMzIxOTEsMzIxODEsMzIxODQsMzIxNzMsMzIyMTAsMzIxOTksMzIxNzIsMzI2MjQsMzI3MzYsMzI3MzcsMzI3MzUsMzI4NjIsMzI4NTgsMzI5MDMsMzMxMDQsMzMxNTIsMzMxNjcsMzMxNjAsMzMxNjIsMzMxNTEsMzMxNTQsMzMyNTUsMzMyNzQsMzMyODcsMzMzMDAsMzMzMTAsMzMzNTUsMzM5OTMsMzM5ODMsMzM5OTAsMzM5ODgsMzM5NDUsMzM5NTAsMzM5NzAsMzM5NDgsMzM5OTUsMzM5NzYsMzM5ODQsMzQwMDMsMzM5MzYsMzM5ODAsMzQwMDEsMzM5OTQsMzQ2MjMsMzQ1ODgsMzQ2MTksMzQ1OTQsMzQ1OTcsMzQ2MTIsMzQ1ODQsMzQ2NDUsMzQ2MTUsMzQ2MDEsMzUwNTksMzUwNzQsMzUwNjAsMzUwNjUsMzUwNjQsMzUwNjksMzUwNDgsMzUwOTgsMzUwNTUsMzU0OTQsMzU0NjgsMzU0ODYsMzU0OTEsMzU0NjksMzU0ODksMzU0NzUsMzU0OTIsMzU0OTgsMzU0OTMsMzU0OTYsMzU0ODAsMzU0NzMsMzU0ODIsMzU0OTUsMzU5NDYsMzU5ODEsMzU5ODAsMzYwNTEsMzYwNDksMzYwNTAsMzYyMDMsMzYyNDksMzYyNDUsMzYzNDgsMzY2MjgsMzY2MjYsMzY2MjksMzY2MjcsMzY3NzEsMzY5NjAsMzY5NTIsMzY5NTYsMzY5NjMsMzY5NTMsMzY5NTgsMzY5NjIsMzY5NTcsMzY5NTUsMzcxNDUsMzcxNDQsMzcxNTAsMzcyMzcsMzcyNDAsMzcyMzksMzcyMzYsMzc0OTYsMzc1MDQsMzc1MDksMzc1MjgsMzc1MjYsMzc0OTksMzc1MjMsMzc1MzIsMzc1NDQsMzc1MDAsMzc1MjEsMzgzMDUsMzgzMTIsMzgzMTMsMzgzMDcsMzgzMDksMzgzMDgsMzg1NTMsMzg1NTYsMzg1NTUsMzg2MDQsMzg2MTAsMzg2NTYsMzg3ODAsMzg3ODksMzg5MDIsMzg5MzUsMzg5MzYsMzkwODcsMzkwODksMzkxNzEsMzkxNzMsMzkxODAsMzkxNzcsMzkzNjEsMzk1OTksMzk2MDAsMzk2NTQsMzk3NDUsMzk3NDYsNDAxODAsNDAxODIsNDAxNzksNDA2MzYsNDA3NjMsNDA3NzgsMjA3NDAsMjA3MzYsMjA3MzEsMjA3MjUsMjA3MjksMjA3MzgsMjA3NDQsMjA3NDUsMjA3NDEsMjA5NTYsMjExMjcsMjExMjgsMjExMjksMjExMzMsMjExMzAsMjEyMzIsMjE0MjYsMjIwNjIsMjIwNzUsMjIwNzMsMjIwNjYsMjIwNzksMjIwNjgsMjIwNTcsMjIwOTksMjIwOTQsMjIxMDMsMjIxMzIsMjIwNzAsMjIwNjMsMjIwNjQsMjI2NTYsMjI2ODcsMjI2ODYsMjI3MDcsMjI2ODQsMjI3MDIsMjI2OTcsMjI2OTQsMjI4OTMsMjMzMDUsMjMyOTEsMjMzMDcsMjMyODUsMjMzMDgsMjMzMDQsMjM1MzQsMjM1MzIsMjM1MjksMjM1MzEsMjM2NTIsMjM2NTMsMjM5NjUsMjM5NTYsMjQxNjIsMjQxNTksMjQxNjEsMjQyOTAsMjQyODIsMjQyODcsMjQyODUsMjQyOTEsMjQyODgsMjQzOTIsMjQ0MzMsMjQ1MDMsMjQ1MDEsMjQ5NTAsMjQ5MzUsMjQ5NDIsMjQ5MjUsMjQ5MTcsMjQ5NjIsMjQ5NTYsMjQ5NDQsMjQ5MzksMjQ5NTgsMjQ5OTksMjQ5NzYsMjUwMDMsMjQ5NzQsMjUwMDQsMjQ5ODYsMjQ5OTYsMjQ5ODAsMjUwMDYsMjUxMzQsMjU3MDUsMjU3MTEsMjU3MjEsMjU3NTgsMjU3NzgsMjU3MzYsMjU3NDQsMjU3NzYsMjU3NjUsMjU3NDcsMjU3NDksMjU3NjksMjU3NDYsMjU3NzQsMjU3NzMsMjU3NzEsMjU3NTQsMjU3NzIsMjU3NTMsMjU3NjIsMjU3NzksMjU5NzMsMjU5NzUsMjU5NzYsMjYyODYsMjYyODMsMjYyOTIsMjYyODksMjcxNzEsMjcxNjcsMjcxMTIsMjcxMzcsMjcxNjYsMjcxNjEsMjcxMzMsMjcxNjksMjcxNTUsMjcxNDYsMjcxMjMsMjcxMzgsMjcxNDEsMjcxMTcsMjcxNTMsMjc0NzIsMjc0NzAsMjc1NTYsMjc1ODksMjc1OTAsMjg0NzksMjg1NDAsMjg1NDgsMjg0OTcsMjg1MTgsMjg1MDAsMjg1NTAsMjg1MjUsMjg1MDcsMjg1MzYsMjg1MjYsMjg1NTgsMjg1MzgsMjg1MjgsMjg1MTYsMjg1NjcsMjg1MDQsMjgzNzMsMjg1MjcsMjg1MTIsMjg1MTEsMjkwODcsMjkxMDAsMjkxMDUsMjkwOTYsMjkyNzAsMjkzMzksMjk1MTgsMjk1MjcsMjk4MDEsMjk4MzUsMjk4MjcsMjk4MjIsMjk4MjQsMzAwNzksMzAyNDAsMzAyNDksMzAyMzksMzAyNDQsMzAyNDYsMzAyNDEsMzAyNDIsMzAzNjIsMzAzOTQsMzA0MzYsMzA2MDYsMzA1OTksMzA2MDQsMzA2MDksMzA2MDMsMzA5MjMsMzA5MTcsMzA5MDYsMzA5MjIsMzA5MTAsMzA5MzMsMzA5MDgsMzA5MjgsMzEyOTUsMzEyOTIsMzEyOTYsMzEyOTMsMzEyODcsMzEyOTEsMzE0MDcsMzE0MDYsMzE2NjEsMzE2NjUsMzE2ODQsMzE2NjgsMzE2ODYsMzE2ODcsMzE2ODEsMzE2NDgsMzE2OTIsMzE5NDYsMzIyMjQsMzIyNDQsMzIyMzksMzIyNTEsMzIyMTYsMzIyMzYsMzIyMjEsMzIyMzIsMzIyMjcsMzIyMTgsMzIyMjIsMzIyMzMsMzIxNTgsMzIyMTcsMzIyNDIsMzIyNDksMzI2MjksMzI2MzEsMzI2ODcsMzI3NDUsMzI4MDYsMzMxNzksMzMxODAsMzMxODEsMzMxODQsMzMxNzgsMzMxNzYsMzQwNzEsMzQxMDksMzQwNzQsMzQwMzAsMzQwOTIsMzQwOTMsMzQwNjcsMzQwNjUsMzQwODMsMzQwODEsMzQwNjgsMzQwMjgsMzQwODUsMzQwNDcsMzQwNTQsMzQ2OTAsMzQ2NzYsMzQ2NzgsMzQ2NTYsMzQ2NjIsMzQ2ODAsMzQ2NjQsMzQ2NDksMzQ2NDcsMzQ2MzYsMzQ2NDMsMzQ5MDcsMzQ5MDksMzUwODgsMzUwNzksMzUwOTAsMzUwOTEsMzUwOTMsMzUwODIsMzU1MTYsMzU1MzgsMzU1MjcsMzU1MjQsMzU0NzcsMzU1MzEsMzU1NzYsMzU1MDYsMzU1MjksMzU1MjIsMzU1MTksMzU1MDQsMzU1NDIsMzU1MzMsMzU1MTAsMzU1MTMsMzU1NDcsMzU5MTYsMzU5MTgsMzU5NDgsMzYwNjQsMzYwNjIsMzYwNzAsMzYwNjgsMzYwNzYsMzYwNzcsMzYwNjYsMzYwNjcsMzYwNjAsMzYwNzQsMzYwNjUsMzYyMDUsMzYyNTUsMzYyNTksMzYzOTUsMzYzNjgsMzYzODEsMzYzODYsMzYzNjcsMzYzOTMsMzYzODMsMzYzODUsMzYzODIsMzY1MzgsMzY2MzcsMzY2MzUsMzY2MzksMzY2NDksMzY2NDYsMzY2NTAsMzY2MzYsMzY2MzgsMzY2NDUsMzY5NjksMzY5NzQsMzY5NjgsMzY5NzMsMzY5ODMsMzcxNjgsMzcxNjUsMzcxNTksMzcxNjksMzcyNTUsMzcyNTcsMzcyNTksMzcyNTEsMzc1NzMsMzc1NjMsMzc1NTksMzc2MTAsMzc1NDgsMzc2MDQsMzc1NjksMzc1NTUsMzc1NjQsMzc1ODYsMzc1NzUsMzc2MTYsMzc1NTQsMzgzMTcsMzgzMjEsMzg2NjAsMzg2NjIsMzg2NjMsMzg2NjUsMzg3NTIsMzg3OTcsMzg3OTUsMzg3OTksMzg5NDUsMzg5NTUsMzg5NDAsMzkwOTEsMzkxNzgsMzkxODcsMzkxODYsMzkxOTIsMzkzODksMzkzNzYsMzkzOTEsMzkzODcsMzkzNzcsMzkzODEsMzkzNzgsMzkzODUsMzk2MDcsMzk2NjIsMzk2NjMsMzk3MTksMzk3NDksMzk3NDgsMzk3OTksMzk3OTEsNDAxOTgsNDAyMDEsNDAxOTUsNDA2MTcsNDA2MzgsNDA2NTQsMjI2OTYsNDA3ODYsMjA3NTQsMjA3NjAsMjA3NTYsMjA3NTIsMjA3NTcsMjA4NjQsMjA5MDYsMjA5NTcsMjExMzcsMjExMzksMjEyMzUsMjIxMDUsMjIxMjMsMjIxMzcsMjIxMjEsMjIxMTYsMjIxMzYsMjIxMjIsMjIxMjAsMjIxMTcsMjIxMjksMjIxMjcsMjIxMjQsMjIxMTQsMjIxMzQsMjI3MjEsMjI3MTgsMjI3MjcsMjI3MjUsMjI4OTQsMjMzMjUsMjMzNDgsMjM0MTYsMjM1MzYsMjM1NjYsMjQzOTQsMjUwMTAsMjQ5NzcsMjUwMDEsMjQ5NzAsMjUwMzcsMjUwMTQsMjUwMjIsMjUwMzQsMjUwMzIsMjUxMzYsMjU3OTcsMjU3OTMsMjU4MDMsMjU3ODcsMjU3ODgsMjU4MTgsMjU3OTYsMjU3OTksMjU3OTQsMjU4MDUsMjU3OTEsMjU4MTAsMjU4MTIsMjU3OTAsMjU5NzIsMjYzMTAsMjYzMTMsMjYyOTcsMjYzMDgsMjYzMTEsMjYyOTYsMjcxOTcsMjcxOTIsMjcxOTQsMjcyMjUsMjcyNDMsMjcyMjQsMjcxOTMsMjcyMDQsMjcyMzQsMjcyMzMsMjcyMTEsMjcyMDcsMjcxODksMjcyMzEsMjcyMDgsMjc0ODEsMjc1MTEsMjc2NTMsMjg2MTAsMjg1OTMsMjg1NzcsMjg2MTEsMjg1ODAsMjg2MDksMjg1ODMsMjg1OTUsMjg2MDgsMjg2MDEsMjg1OTgsMjg1ODIsMjg1NzYsMjg1OTYsMjkxMTgsMjkxMjksMjkxMzYsMjkxMzgsMjkxMjgsMjkxNDEsMjkxMTMsMjkxMzQsMjkxNDUsMjkxNDgsMjkxMjMsMjkxMjQsMjk1NDQsMjk4NTIsMjk4NTksMjk4NDgsMjk4NTUsMjk4NTQsMjk5MjIsMjk5NjQsMjk5NjUsMzAyNjAsMzAyNjQsMzAyNjYsMzA0MzksMzA0MzcsMzA2MjQsMzA2MjIsMzA2MjMsMzA2MjksMzA5NTIsMzA5MzgsMzA5NTYsMzA5NTEsMzExNDIsMzEzMDksMzEzMTAsMzEzMDIsMzEzMDgsMzEzMDcsMzE0MTgsMzE3MDUsMzE3NjEsMzE2ODksMzE3MTYsMzE3MDcsMzE3MTMsMzE3MjEsMzE3MTgsMzE5NTcsMzE5NTgsMzIyNjYsMzIyNzMsMzIyNjQsMzIyODMsMzIyOTEsMzIyODYsMzIyODUsMzIyNjUsMzIyNzIsMzI2MzMsMzI2OTAsMzI3NTIsMzI3NTMsMzI3NTAsMzI4MDgsMzMyMDMsMzMxOTMsMzMxOTIsMzMyNzUsMzMyODgsMzMzNjgsMzMzNjksMzQxMjIsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNTMsMzQxMTUsMzQxMjEsMzQxNTcsMzQxNTQsMzQxNDIsMzQ2OTEsMzQ3MTksMzQ3MTgsMzQ3MjIsMzQ3MDEsMzQ5MTMsMzUxMTQsMzUxMjIsMzUxMDksMzUxMTUsMzUxMDUsMzUyNDIsMzUyMzgsMzU1NTgsMzU1NzgsMzU1NjMsMzU1NjksMzU1ODQsMzU1NDgsMzU1NTksMzU1NjYsMzU1ODIsMzU1ODUsMzU1ODYsMzU1NzUsMzU1NjUsMzU1NzEsMzU1NzQsMzU1ODAsMzU5NDcsMzU5NDksMzU5ODcsMzYwODQsMzY0MjAsMzY0MDEsMzY0MDQsMzY0MTgsMzY0MDksMzY0MDUsMzY2NjcsMzY2NTUsMzY2NjQsMzY2NTksMzY3NzYsMzY3NzQsMzY5ODEsMzY5ODAsMzY5ODQsMzY5NzgsMzY5ODgsMzY5ODYsMzcxNzIsMzcyNjYsMzc2NjQsMzc2ODYsMzc2MjQsMzc2ODMsMzc2NzksMzc2NjYsMzc2MjgsMzc2NzUsMzc2MzYsMzc2NTgsMzc2NDgsMzc2NzAsMzc2NjUsMzc2NTMsMzc2NzgsMzc2NTcsMzgzMzEsMzg1NjcsMzg1NjgsMzg1NzAsMzg2MTMsMzg2NzAsMzg2NzMsMzg2NzgsMzg2NjksMzg2NzUsMzg2NzEsMzg3NDcsMzg3NDgsMzg3NTgsMzg4MDgsMzg5NjAsMzg5NjgsMzg5NzEsMzg5NjcsMzg5NTcsMzg5NjksMzg5NDgsMzkxODQsMzkyMDgsMzkxOTgsMzkxOTUsMzkyMDEsMzkxOTQsMzk0MDUsMzkzOTQsMzk0MDksMzk2MDgsMzk2MTIsMzk2NzUsMzk2NjEsMzk3MjAsMzk4MjUsNDAyMTMsNDAyMjcsNDAyMzAsNDAyMzIsNDAyMTAsNDAyMTksNDA2NjQsNDA2NjAsNDA4NDUsNDA4NjAsMjA3NzgsMjA3NjcsMjA3NjksMjA3ODYsMjEyMzcsMjIxNTgsMjIxNDQsMjIxNjAsMjIxNDksMjIxNTEsMjIxNTksMjI3NDEsMjI3MzksMjI3MzcsMjI3MzQsMjMzNDQsMjMzMzgsMjMzMzIsMjM0MTgsMjM2MDcsMjM2NTYsMjM5OTYsMjM5OTQsMjM5OTcsMjM5OTIsMjQxNzEsMjQzOTYsMjQ1MDksMjUwMzMsMjUwMjYsMjUwMzEsMjUwNjIsMjUwMzUsMjUxMzgsMjUxNDAsMjU4MDYsMjU4MDIsMjU4MTYsMjU4MjQsMjU4NDAsMjU4MzAsMjU4MzYsMjU4NDEsMjU4MjYsMjU4MzcsMjU5ODYsMjU5ODcsMjYzMjksMjYzMjYsMjcyNjQsMjcyODQsMjcyNjgsMjcyOTgsMjcyOTIsMjczNTUsMjcyOTksMjcyNjIsMjcyODcsMjcyODAsMjcyOTYsMjc0ODQsMjc1NjYsMjc2MTAsMjc2NTYsMjg2MzIsMjg2NTcsMjg2MzksMjg2NDAsMjg2MzUsMjg2NDQsMjg2NTEsMjg2NTUsMjg1NDQsMjg2NTIsMjg2NDEsMjg2NDksMjg2MjksMjg2NTQsMjg2NTYsMjkxNTksMjkxNTEsMjkxNjYsMjkxNTgsMjkxNTcsMjkxNjUsMjkxNjQsMjkxNzIsMjkxNTIsMjkyMzcsMjkyNTQsMjk1NTIsMjk1NTQsMjk4NjUsMjk4NzIsMjk4NjIsMjk4NjQsMzAyNzgsMzAyNzQsMzAyODQsMzA0NDIsMzA2NDMsMzA2MzQsMzA2NDAsMzA2MzYsMzA2MzEsMzA2MzcsMzA3MDMsMzA5NjcsMzA5NzAsMzA5NjQsMzA5NTksMzA5NzcsMzExNDMsMzExNDYsMzEzMTksMzE0MjMsMzE3NTEsMzE3NTcsMzE3NDIsMzE3MzUsMzE3NTYsMzE3MTIsMzE5NjgsMzE5NjQsMzE5NjYsMzE5NzAsMzE5NjcsMzE5NjEsMzE5NjUsMzIzMDIsMzIzMTgsMzIzMjYsMzIzMTEsMzIzMDYsMzIzMjMsMzIyOTksMzIzMTcsMzIzMDUsMzIzMjUsMzIzMjEsMzIzMDgsMzIzMTMsMzIzMjgsMzIzMDksMzIzMTksMzIzMDMsMzI1ODAsMzI3NTUsMzI3NjQsMzI4ODEsMzI4ODIsMzI4ODAsMzI4NzksMzI4ODMsMzMyMjIsMzMyMTksMzMyMTAsMzMyMTgsMzMyMTYsMzMyMTUsMzMyMTMsMzMyMjUsMzMyMTQsMzMyNTYsMzMyODksMzMzOTMsMzQyMTgsMzQxODAsMzQxNzQsMzQyMDQsMzQxOTMsMzQxOTYsMzQyMjMsMzQyMDMsMzQxODMsMzQyMTYsMzQxODYsMzQ0MDcsMzQ3NTIsMzQ3NjksMzQ3MzksMzQ3NzAsMzQ3NTgsMzQ3MzEsMzQ3NDcsMzQ3NDYsMzQ3NjAsMzQ3NjMsMzUxMzEsMzUxMjYsMzUxNDAsMzUxMjgsMzUxMzMsMzUyNDQsMzU1OTgsMzU2MDcsMzU2MDksMzU2MTEsMzU1OTQsMzU2MTYsMzU2MTMsMzU1ODgsMzU2MDAsMzU5MDUsMzU5MDMsMzU5NTUsMzYwOTAsMzYwOTMsMzYwOTIsMzYwODgsMzYwOTEsMzYyNjQsMzY0MjUsMzY0MjcsMzY0MjQsMzY0MjYsMzY2NzYsMzY2NzAsMzY2NzQsMzY2NzcsMzY2NzEsMzY5OTEsMzY5ODksMzY5OTYsMzY5OTMsMzY5OTQsMzY5OTIsMzcxNzcsMzcyODMsMzcyNzgsMzcyNzYsMzc3MDksMzc3NjIsMzc2NzIsMzc3NDksMzc3MDYsMzc3MzMsMzc3MDcsMzc2NTYsMzc3NTgsMzc3NDAsMzc3MjMsMzc3NDQsMzc3MjIsMzc3MTYsMzgzNDYsMzgzNDcsMzgzNDgsMzgzNDQsMzgzNDIsMzg1NzcsMzg1ODQsMzg2MTQsMzg2ODQsMzg2ODYsMzg4MTYsMzg4NjcsMzg5ODIsMzkwOTQsMzkyMjEsMzk0MjUsMzk0MjMsMzk4NTQsMzk4NTEsMzk4NTAsMzk4NTMsNDAyNTEsNDAyNTUsNDA1ODcsNDA2NTUsNDA2NzAsNDA2NjgsNDA2NjksNDA2NjcsNDA3NjYsNDA3NzksMjE0NzQsMjIxNjUsMjIxOTAsMjI3NDUsMjI3NDQsMjMzNTIsMjQ0MTMsMjUwNTksMjUxMzksMjU4NDQsMjU4NDIsMjU4NTQsMjU4NjIsMjU4NTAsMjU4NTEsMjU4NDcsMjYwMzksMjYzMzIsMjY0MDYsMjczMTUsMjczMDgsMjczMzEsMjczMjMsMjczMjAsMjczMzAsMjczMTAsMjczMTEsMjc0ODcsMjc1MTIsMjc1NjcsMjg2ODEsMjg2ODMsMjg2NzAsMjg2NzgsMjg2NjYsMjg2ODksMjg2ODcsMjkxNzksMjkxODAsMjkxODIsMjkxNzYsMjk1NTksMjk1NTcsMjk4NjMsMjk4ODcsMjk5NzMsMzAyOTQsMzAyOTYsMzAyOTAsMzA2NTMsMzA2NTUsMzA2NTEsMzA2NTIsMzA5OTAsMzExNTAsMzEzMjksMzEzMzAsMzEzMjgsMzE0MjgsMzE0MjksMzE3ODcsMzE3ODMsMzE3ODYsMzE3NzQsMzE3NzksMzE3NzcsMzE5NzUsMzIzNDAsMzIzNDEsMzIzNTAsMzIzNDYsMzIzNTMsMzIzMzgsMzIzNDUsMzI1ODQsMzI3NjEsMzI3NjMsMzI4ODcsMzI4ODYsMzMyMjksMzMyMzEsMzMyOTAsMzQyNTUsMzQyMTcsMzQyNTMsMzQyNTYsMzQyNDksMzQyMjQsMzQyMzQsMzQyMzMsMzQyMTQsMzQ3OTksMzQ3OTYsMzQ4MDIsMzQ3ODQsMzUyMDYsMzUyNTAsMzUzMTYsMzU2MjQsMzU2NDEsMzU2MjgsMzU2MjcsMzU5MjAsMzYxMDEsMzY0NDEsMzY0NTEsMzY0NTQsMzY0NTIsMzY0NDcsMzY0MzcsMzY1NDQsMzY2ODEsMzY2ODUsMzY5OTksMzY5OTUsMzcwMDAsMzcyOTEsMzcyOTIsMzczMjgsMzc3ODAsMzc3NzAsMzc3ODIsMzc3OTQsMzc4MTEsMzc4MDYsMzc4MDQsMzc4MDgsMzc3ODQsMzc3ODYsMzc3ODMsMzgzNTYsMzgzNTgsMzgzNTIsMzgzNTcsMzg2MjYsMzg2MjAsMzg2MTcsMzg2MTksMzg2MjIsMzg2OTIsMzg4MTksMzg4MjIsMzg4MjksMzg5MDUsMzg5ODksMzg5OTEsMzg5ODgsMzg5OTAsMzg5OTUsMzkwOTgsMzkyMzAsMzkyMzEsMzkyMjksMzkyMTQsMzkzMzMsMzk0MzgsMzk2MTcsMzk2ODMsMzk2ODYsMzk3NTksMzk3NTgsMzk3NTcsMzk4ODIsMzk4ODEsMzk5MzMsMzk4ODAsMzk4NzIsNDAyNzMsNDAyODUsNDAyODgsNDA2NzIsNDA3MjUsNDA3NDgsMjA3ODcsMjIxODEsMjI3NTAsMjI3NTEsMjI3NTQsMjM1NDEsNDA4NDgsMjQzMDAsMjUwNzQsMjUwNzksMjUwNzgsMjUwNzcsMjU4NTYsMjU4NzEsMjYzMzYsMjYzMzMsMjczNjUsMjczNTcsMjczNTQsMjczNDcsMjg2OTksMjg3MDMsMjg3MTIsMjg2OTgsMjg3MDEsMjg2OTMsMjg2OTYsMjkxOTAsMjkxOTcsMjkyNzIsMjkzNDYsMjk1NjAsMjk1NjIsMjk4ODUsMjk4OTgsMjk5MjMsMzAwODcsMzAwODYsMzAzMDMsMzAzMDUsMzA2NjMsMzEwMDEsMzExNTMsMzEzMzksMzEzMzcsMzE4MDYsMzE4MDcsMzE4MDAsMzE4MDUsMzE3OTksMzE4MDgsMzIzNjMsMzIzNjUsMzIzNzcsMzIzNjEsMzIzNjIsMzI2NDUsMzIzNzEsMzI2OTQsMzI2OTcsMzI2OTYsMzMyNDAsMzQyODEsMzQyNjksMzQyODIsMzQyNjEsMzQyNzYsMzQyNzcsMzQyOTUsMzQ4MTEsMzQ4MjEsMzQ4MjksMzQ4MDksMzQ4MTQsMzUxNjgsMzUxNjcsMzUxNTgsMzUxNjYsMzU2NDksMzU2NzYsMzU2NzIsMzU2NTcsMzU2NzQsMzU2NjIsMzU2NjMsMzU2NTQsMzU2NzMsMzYxMDQsMzYxMDYsMzY0NzYsMzY0NjYsMzY0ODcsMzY0NzAsMzY0NjAsMzY0NzQsMzY0NjgsMzY2OTIsMzY2ODYsMzY3ODEsMzcwMDIsMzcwMDMsMzcyOTcsMzcyOTQsMzc4NTcsMzc4NDEsMzc4NTUsMzc4MjcsMzc4MzIsMzc4NTIsMzc4NTMsMzc4NDYsMzc4NTgsMzc4MzcsMzc4NDgsMzc4NjAsMzc4NDcsMzc4NjQsMzgzNjQsMzg1ODAsMzg2MjcsMzg2OTgsMzg2OTUsMzg3NTMsMzg4NzYsMzg5MDcsMzkwMDYsMzkwMDAsMzkwMDMsMzkxMDAsMzkyMzcsMzkyNDEsMzk0NDYsMzk0NDksMzk2OTMsMzk5MTIsMzk5MTEsMzk4OTQsMzk4OTksNDAzMjksNDAyODksNDAzMDYsNDAyOTgsNDAzMDAsNDA1OTQsNDA1OTksNDA1OTUsNDA2MjgsMjEyNDAsMjIxODQsMjIxOTksMjIxOTgsMjIxOTYsMjIyMDQsMjI3NTYsMjMzNjAsMjMzNjMsMjM0MjEsMjM1NDIsMjQwMDksMjUwODAsMjUwODIsMjU4ODAsMjU4NzYsMjU4ODEsMjYzNDIsMjY0MDcsMjczNzIsMjg3MzQsMjg3MjAsMjg3MjIsMjkyMDAsMjk1NjMsMjk5MDMsMzAzMDYsMzAzMDksMzEwMTQsMzEwMTgsMzEwMjAsMzEwMTksMzE0MzEsMzE0NzgsMzE4MjAsMzE4MTEsMzE4MjEsMzE5ODMsMzE5ODQsMzY3ODIsMzIzODEsMzIzODAsMzIzODYsMzI1ODgsMzI3NjgsMzMyNDIsMzMzODIsMzQyOTksMzQyOTcsMzQzMjEsMzQyOTgsMzQzMTAsMzQzMTUsMzQzMTEsMzQzMTQsMzQ4MzYsMzQ4MzcsMzUxNzIsMzUyNTgsMzUzMjAsMzU2OTYsMzU2OTIsMzU2ODYsMzU2OTUsMzU2NzksMzU2OTEsMzYxMTEsMzYxMDksMzY0ODksMzY0ODEsMzY0ODUsMzY0ODIsMzczMDAsMzczMjMsMzc5MTIsMzc4OTEsMzc4ODUsMzgzNjksMzg3MDQsMzkxMDgsMzkyNTAsMzkyNDksMzkzMzYsMzk0NjcsMzk0NzIsMzk0NzksMzk0NzcsMzk5NTUsMzk5NDksNDA1NjksNDA2MjksNDA2ODAsNDA3NTEsNDA3OTksNDA4MDMsNDA4MDEsMjA3OTEsMjA3OTIsMjIyMDksMjIyMDgsMjIyMTAsMjI4MDQsMjM2NjAsMjQwMTMsMjUwODQsMjUwODYsMjU4ODUsMjU4ODQsMjYwMDUsMjYzNDUsMjczODcsMjczOTYsMjczODYsMjc1NzAsMjg3NDgsMjkyMTEsMjkzNTEsMjk5MTAsMjk5MDgsMzAzMTMsMzA2NzUsMzE4MjQsMzIzOTksMzIzOTYsMzI3MDAsMzQzMjcsMzQzNDksMzQzMzAsMzQ4NTEsMzQ4NTAsMzQ4NDksMzQ4NDcsMzUxNzgsMzUxODAsMzUyNjEsMzU3MDAsMzU3MDMsMzU3MDksMzYxMTUsMzY0OTAsMzY0OTMsMzY0OTEsMzY3MDMsMzY3ODMsMzczMDYsMzc5MzQsMzc5MzksMzc5NDEsMzc5NDYsMzc5NDQsMzc5MzgsMzc5MzEsMzgzNzAsMzg3MTIsMzg3MTMsMzg3MDYsMzg5MTEsMzkwMTUsMzkwMTMsMzkyNTUsMzk0OTMsMzk0OTEsMzk0ODgsMzk0ODYsMzk2MzEsMzk3NjQsMzk3NjEsMzk5ODEsMzk5NzMsNDAzNjcsNDAzNzIsNDAzODYsNDAzNzYsNDA2MDUsNDA2ODcsNDA3MjksNDA3OTYsNDA4MDYsNDA4MDcsMjA3OTYsMjA3OTUsMjIyMTYsMjIyMTgsMjIyMTcsMjM0MjMsMjQwMjAsMjQwMTgsMjQzOTgsMjUwODcsMjU4OTIsMjc0MDIsMjc0ODksMjg3NTMsMjg3NjAsMjk1NjgsMjk5MjQsMzAwOTAsMzAzMTgsMzAzMTYsMzExNTUsMzE4NDAsMzE4MzksMzI4OTQsMzI4OTMsMzMyNDcsMzUxODYsMzUxODMsMzUzMjQsMzU3MTIsMzYxMTgsMzYxMTksMzY0OTcsMzY0OTksMzY3MDUsMzcxOTIsMzc5NTYsMzc5NjksMzc5NzAsMzg3MTcsMzg3MTgsMzg4NTEsMzg4NDksMzkwMTksMzkyNTMsMzk1MDksMzk1MDEsMzk2MzQsMzk3MDYsNDAwMDksMzk5ODUsMzk5OTgsMzk5OTUsNDA0MDMsNDA0MDcsNDA3NTYsNDA4MTIsNDA4MTAsNDA4NTIsMjIyMjAsMjQwMjIsMjUwODgsMjU4OTEsMjU4OTksMjU4OTgsMjYzNDgsMjc0MDgsMjk5MTQsMzE0MzQsMzE4NDQsMzE4NDMsMzE4NDUsMzI0MDMsMzI0MDYsMzI0MDQsMzMyNTAsMzQzNjAsMzQzNjcsMzQ4NjUsMzU3MjIsMzcwMDgsMzcwMDcsMzc5ODcsMzc5ODQsMzc5ODgsMzg3NjAsMzkwMjMsMzkyNjAsMzk1MTQsMzk1MTUsMzk1MTEsMzk2MzUsMzk2MzYsMzk2MzMsNDAwMjAsNDAwMjMsNDAwMjIsNDA0MjEsNDA2MDcsNDA2OTIsMjIyMjUsMjI3NjEsMjU5MDAsMjg3NjYsMzAzMjEsMzAzMjIsMzA2NzksMzI1OTIsMzI2NDgsMzQ4NzAsMzQ4NzMsMzQ5MTQsMzU3MzEsMzU3MzAsMzU3MzQsMzMzOTksMzYxMjMsMzczMTIsMzc5OTQsMzg3MjIsMzg3MjgsMzg3MjQsMzg4NTQsMzkwMjQsMzk1MTksMzk3MTQsMzk3NjgsNDAwMzEsNDA0NDEsNDA0NDIsNDA1NzIsNDA1NzMsNDA3MTEsNDA4MjMsNDA4MTgsMjQzMDcsMjc0MTQsMjg3NzEsMzE4NTIsMzE4NTQsMzQ4NzUsMzUyNjQsMzY1MTMsMzczMTMsMzgwMDIsMzgwMDAsMzkwMjUsMzkyNjIsMzk2MzgsMzk3MTUsNDA2NTIsMjg3NzIsMzA2ODIsMzU3MzgsMzgwMDcsMzg4NTcsMzk1MjIsMzk1MjUsMzI0MTIsMzU3NDAsMzY1MjIsMzczMTcsMzgwMTMsMzgwMTQsMzgwMTIsNDAwNTUsNDAwNTYsNDA2OTUsMzU5MjQsMzgwMTUsNDA0NzQsMjkyMjQsMzk1MzAsMzk3MjksNDA0NzUsNDA0NzgsMzE4NTgsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksMjAwMjIsMjAwMzEsMjAxMDEsMjAxMjgsMjA4NjYsMjA4ODYsMjA5MDcsMjEyNDEsMjEzMDQsMjEzNTMsMjE0MzAsMjI3OTQsMjM0MjQsMjQwMjcsMTIwODMsMjQxOTEsMjQzMDgsMjQ0MDAsMjQ0MTcsMjU5MDgsMjYwODAsMzAwOTgsMzAzMjYsMzY3ODksMzg1ODIsMTY4LDcxMCwxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw2NTMzOSw2NTM0MSwxMDA0NSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4Njc5LDg2MzIsODYzMywxMjc1MSwxMzEyNzYsMjAwNTgsMTMxMjEwLDIwOTk0LDE3NTUzLDQwODgwLDIwODcyLDQwODgxLDE2MTI4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSwxMjQ0MywxMjQ0NCwxMTkwNCwxMTkwOCwxMTkxMCwxMTkxMSwxMTkxMiwxMTkxNCwxMTkxNiwxMTkxNywxMTkyNSwxMTkzMiwxMTkzMywxMTk0MSwxMTk0MywxMTk0NiwxMTk0OCwxMTk1MCwxMTk1OCwxMTk2NCwxMTk2NiwxMTk3NCwxMTk3OCwxMTk4MCwxMTk4MSwxMTk4MywxMTk5MCwxMTk5MSwxMTk5OCwxMjAwMyxudWxsLG51bGwsbnVsbCw2NDMsNTkyLDYwMyw1OTYsNjI5LDMzOSwyNDgsMzMxLDY1MCw2MTgsMjAwMzQsMjAwNjAsMjA5ODEsMjEyNzQsMjEzNzgsMTk5NzUsMTk5ODAsMjAwMzksMjAxMDksMjIyMzEsNjQwMTIsMjM2NjIsMjQ0MzUsMTk5ODMsMjA4NzEsMTk5ODIsMjAwMTQsMjAxMTUsMjAxNjIsMjAxNjksMjAxNjgsMjA4ODgsMjEyNDQsMjEzNTYsMjE0MzMsMjIzMDQsMjI3ODcsMjI4MjgsMjM1NjgsMjQwNjMsMjYwODEsMjc1NzEsMjc1OTYsMjc2NjgsMjkyNDcsMjAwMTcsMjAwMjgsMjAyMDAsMjAxODgsMjAyMDEsMjAxOTMsMjAxODksMjAxODYsMjEwMDQsMjEyNzYsMjEzMjQsMjIzMDYsMjIzMDcsMjI4MDcsMjI4MzEsMjM0MjUsMjM0MjgsMjM1NzAsMjM2MTEsMjM2NjgsMjM2NjcsMjQwNjgsMjQxOTIsMjQxOTQsMjQ1MjEsMjUwOTcsMjUxNjgsMjc2NjksMjc3MDIsMjc3MTUsMjc3MTEsMjc3MDcsMjkzNTgsMjkzNjAsMjk1NzgsMzExNjAsMzI5MDYsMzg0MzAsMjAyMzgsMjAyNDgsMjAyNjgsMjAyMTMsMjAyNDQsMjAyMDksMjAyMjQsMjAyMTUsMjAyMzIsMjAyNTMsMjAyMjYsMjAyMjksMjAyNTgsMjAyNDMsMjAyMjgsMjAyMTIsMjAyNDIsMjA5MTMsMjEwMTEsMjEwMDEsMjEwMDgsMjExNTgsMjEyODIsMjEyNzksMjEzMjUsMjEzODYsMjE1MTEsMjIyNDEsMjIyMzksMjIzMTgsMjIzMTQsMjIzMjQsMjI4NDQsMjI5MTIsMjI5MDgsMjI5MTcsMjI5MDcsMjI5MTAsMjI5MDMsMjI5MTEsMjMzODIsMjM1NzMsMjM1ODksMjM2NzYsMjM2NzQsMjM2NzUsMjM2NzgsMjQwMzEsMjQxODEsMjQxOTYsMjQzMjIsMjQzNDYsMjQ0MzYsMjQ1MzMsMjQ1MzIsMjQ1MjcsMjUxODAsMjUxODIsMjUxODgsMjUxODUsMjUxOTAsMjUxODYsMjUxNzcsMjUxODQsMjUxNzgsMjUxODksMjYwOTUsMjYwOTQsMjY0MzAsMjY0MjUsMjY0MjQsMjY0MjcsMjY0MjYsMjY0MzEsMjY0MjgsMjY0MTksMjc2NzIsMjc3MTgsMjc3MzAsMjc3NDAsMjc3MjcsMjc3MjIsMjc3MzIsMjc3MjMsMjc3MjQsMjg3ODUsMjkyNzgsMjkzNjQsMjkzNjUsMjk1ODIsMjk5OTQsMzAzMzUsMzEzNDksMzI1OTMsMzM0MDAsMzM0MDQsMzM0MDgsMzM0MDUsMzM0MDcsMzQzODEsMzUxOTgsMzcwMTcsMzcwMTUsMzcwMTYsMzcwMTksMzcwMTIsMzg0MzQsMzg0MzYsMzg0MzIsMzg0MzUsMjAzMTAsMjAyODMsMjAzMjIsMjAyOTcsMjAzMDcsMjAzMjQsMjAyODYsMjAzMjcsMjAzMDYsMjAzMTksMjAyODksMjAzMTIsMjAyNjksMjAyNzUsMjAyODcsMjAzMjEsMjA4NzksMjA5MjEsMjEwMjAsMjEwMjIsMjEwMjUsMjExNjUsMjExNjYsMjEyNTcsMjEzNDcsMjEzNjIsMjEzOTAsMjEzOTEsMjE1NTIsMjE1NTksMjE1NDYsMjE1ODgsMjE1NzMsMjE1MjksMjE1MzIsMjE1NDEsMjE1MjgsMjE1NjUsMjE1ODMsMjE1NjksMjE1NDQsMjE1NDAsMjE1NzUsMjIyNTQsMjIyNDcsMjIyNDUsMjIzMzcsMjIzNDEsMjIzNDgsMjIzNDUsMjIzNDcsMjIzNTQsMjI3OTAsMjI4NDgsMjI5NTAsMjI5MzYsMjI5NDQsMjI5MzUsMjI5MjYsMjI5NDYsMjI5MjgsMjI5MjcsMjI5NTEsMjI5NDUsMjM0MzgsMjM0NDIsMjM1OTIsMjM1OTQsMjM2OTMsMjM2OTUsMjM2ODgsMjM2OTEsMjM2ODksMjM2OTgsMjM2OTAsMjM2ODYsMjM2OTksMjM3MDEsMjQwMzIsMjQwNzQsMjQwNzgsMjQyMDMsMjQyMDEsMjQyMDQsMjQyMDAsMjQyMDUsMjQzMjUsMjQzNDksMjQ0NDAsMjQ0MzgsMjQ1MzAsMjQ1MjksMjQ1MjgsMjQ1NTcsMjQ1NTIsMjQ1NTgsMjQ1NjMsMjQ1NDUsMjQ1NDgsMjQ1NDcsMjQ1NzAsMjQ1NTksMjQ1NjcsMjQ1NzEsMjQ1NzYsMjQ1NjQsMjUxNDYsMjUyMTksMjUyMjgsMjUyMzAsMjUyMzEsMjUyMzYsMjUyMjMsMjUyMDEsMjUyMTEsMjUyMTAsMjUyMDAsMjUyMTcsMjUyMjQsMjUyMDcsMjUyMTMsMjUyMDIsMjUyMDQsMjU5MTEsMjYwOTYsMjYxMDAsMjYwOTksMjYwOTgsMjYxMDEsMjY0MzcsMjY0MzksMjY0NTcsMjY0NTMsMjY0NDQsMjY0NDAsMjY0NjEsMjY0NDUsMjY0NTgsMjY0NDMsMjc2MDAsMjc2NzMsMjc2NzQsMjc3NjgsMjc3NTEsMjc3NTUsMjc3ODAsMjc3ODcsMjc3OTEsMjc3NjEsMjc3NTksMjc3NTMsMjc4MDIsMjc3NTcsMjc3ODMsMjc3OTcsMjc4MDQsMjc3NTAsMjc3NjMsMjc3NDksMjc3NzEsMjc3OTAsMjg3ODgsMjg3OTQsMjkyODMsMjkzNzUsMjkzNzMsMjkzNzksMjkzODIsMjkzNzcsMjkzNzAsMjkzODEsMjk1ODksMjk1OTEsMjk1ODcsMjk1ODgsMjk1ODYsMzAwMTAsMzAwMDksMzAxMDAsMzAxMDEsMzAzMzcsMzEwMzcsMzI4MjAsMzI5MTcsMzI5MjEsMzI5MTIsMzI5MTQsMzI5MjQsMzM0MjQsMzM0MjMsMzM0MTMsMzM0MjIsMzM0MjUsMzM0MjcsMzM0MTgsMzM0MTEsMzM0MTIsMzU5NjAsMzY4MDksMzY3OTksMzcwMjMsMzcwMjUsMzcwMjksMzcwMjIsMzcwMzEsMzcwMjQsMzg0NDgsMzg0NDAsMzg0NDcsMzg0NDUsMjAwMTksMjAzNzYsMjAzNDgsMjAzNTcsMjAzNDksMjAzNTIsMjAzNTksMjAzNDIsMjAzNDAsMjAzNjEsMjAzNTYsMjAzNDMsMjAzMDAsMjAzNzUsMjAzMzAsMjAzNzgsMjAzNDUsMjAzNTMsMjAzNDQsMjAzNjgsMjAzODAsMjAzNzIsMjAzODIsMjAzNzAsMjAzNTQsMjAzNzMsMjAzMzEsMjAzMzQsMjA4OTQsMjA5MjQsMjA5MjYsMjEwNDUsMjEwNDIsMjEwNDMsMjEwNjIsMjEwNDEsMjExODAsMjEyNTgsMjEyNTksMjEzMDgsMjEzOTQsMjEzOTYsMjE2MzksMjE2MzEsMjE2MzMsMjE2NDksMjE2MzQsMjE2NDAsMjE2MTEsMjE2MjYsMjE2MzAsMjE2MDUsMjE2MTIsMjE2MjAsMjE2MDYsMjE2NDUsMjE2MTUsMjE2MDEsMjE2MDAsMjE2NTYsMjE2MDMsMjE2MDcsMjE2MDQsMjIyNjMsMjIyNjUsMjIzODMsMjIzODYsMjIzODEsMjIzNzksMjIzODUsMjIzODQsMjIzOTAsMjI0MDAsMjIzODksMjIzOTUsMjIzODcsMjIzODgsMjIzNzAsMjIzNzYsMjIzOTcsMjI3OTYsMjI4NTMsMjI5NjUsMjI5NzAsMjI5OTEsMjI5OTAsMjI5NjIsMjI5ODgsMjI5NzcsMjI5NjYsMjI5NzIsMjI5NzksMjI5OTgsMjI5NjEsMjI5NzMsMjI5NzYsMjI5ODQsMjI5NjQsMjI5ODMsMjMzOTQsMjMzOTcsMjM0NDMsMjM0NDUsMjM2MjAsMjM2MjMsMjM3MjYsMjM3MTYsMjM3MTIsMjM3MzMsMjM3MjcsMjM3MjAsMjM3MjQsMjM3MTEsMjM3MTUsMjM3MjUsMjM3MTQsMjM3MjIsMjM3MTksMjM3MDksMjM3MTcsMjM3MzQsMjM3MjgsMjM3MTgsMjQwODcsMjQwODQsMjQwODksMjQzNjAsMjQzNTQsMjQzNTUsMjQzNTYsMjQ0MDQsMjQ0NTAsMjQ0NDYsMjQ0NDUsMjQ1NDIsMjQ1NDksMjQ2MjEsMjQ2MTQsMjQ2MDEsMjQ2MjYsMjQ1ODcsMjQ2MjgsMjQ1ODYsMjQ1OTksMjQ2MjcsMjQ2MDIsMjQ2MDYsMjQ2MjAsMjQ2MTAsMjQ1ODksMjQ1OTIsMjQ2MjIsMjQ1OTUsMjQ1OTMsMjQ1ODgsMjQ1ODUsMjQ2MDQsMjUxMDgsMjUxNDksMjUyNjEsMjUyNjgsMjUyOTcsMjUyNzgsMjUyNTgsMjUyNzAsMjUyOTAsMjUyNjIsMjUyNjcsMjUyNjMsMjUyNzUsMjUyNTcsMjUyNjQsMjUyNzIsMjU5MTcsMjYwMjQsMjYwNDMsMjYxMjEsMjYxMDgsMjYxMTYsMjYxMzAsMjYxMjAsMjYxMDcsMjYxMTUsMjYxMjMsMjYxMjUsMjYxMTcsMjYxMDksMjYxMjksMjYxMjgsMjYzNTgsMjYzNzgsMjY1MDEsMjY0NzYsMjY1MTAsMjY1MTQsMjY0ODYsMjY0OTEsMjY1MjAsMjY1MDIsMjY1MDAsMjY0ODQsMjY1MDksMjY1MDgsMjY0OTAsMjY1MjcsMjY1MTMsMjY1MjEsMjY0OTksMjY0OTMsMjY0OTcsMjY0ODgsMjY0ODksMjY1MTYsMjc0MjksMjc1MjAsMjc1MTgsMjc2MTQsMjc2NzcsMjc3OTUsMjc4ODQsMjc4ODMsMjc4ODYsMjc4NjUsMjc4MzAsMjc4NjAsMjc4MjEsMjc4NzksMjc4MzEsMjc4NTYsMjc4NDIsMjc4MzQsMjc4NDMsMjc4NDYsMjc4ODUsMjc4OTAsMjc4NTgsMjc4NjksMjc4MjgsMjc3ODYsMjc4MDUsMjc3NzYsMjc4NzAsMjc4NDAsMjc5NTIsMjc4NTMsMjc4NDcsMjc4MjQsMjc4OTcsMjc4NTUsMjc4ODEsMjc4NTcsMjg4MjAsMjg4MjQsMjg4MDUsMjg4MTksMjg4MDYsMjg4MDQsMjg4MTcsMjg4MjIsMjg4MDIsMjg4MjYsMjg4MDMsMjkyOTAsMjkzOTgsMjkzODcsMjk0MDAsMjkzODUsMjk0MDQsMjkzOTQsMjkzOTYsMjk0MDIsMjkzODgsMjkzOTMsMjk2MDQsMjk2MDEsMjk2MTMsMjk2MDYsMjk2MDIsMjk2MDAsMjk2MTIsMjk1OTcsMjk5MTcsMjk5MjgsMzAwMTUsMzAwMTYsMzAwMTQsMzAwOTIsMzAxMDQsMzAzODMsMzA0NTEsMzA0NDksMzA0NDgsMzA0NTMsMzA3MTIsMzA3MTYsMzA3MTMsMzA3MTUsMzA3MTQsMzA3MTEsMzEwNDIsMzEwMzksMzExNzMsMzEzNTIsMzEzNTUsMzE0ODMsMzE4NjEsMzE5OTcsMzI4MjEsMzI5MTEsMzI5NDIsMzI5MzEsMzI5NTIsMzI5NDksMzI5NDEsMzMzMTIsMzM0NDAsMzM0NzIsMzM0NTEsMzM0MzQsMzM0MzIsMzM0MzUsMzM0NjEsMzM0NDcsMzM0NTQsMzM0NjgsMzM0MzgsMzM0NjYsMzM0NjAsMzM0NDgsMzM0NDEsMzM0NDksMzM0NzQsMzM0NDQsMzM0NzUsMzM0NjIsMzM0NDIsMzQ0MTYsMzQ0MTUsMzQ0MTMsMzQ0MTQsMzU5MjYsMzY4MTgsMzY4MTEsMzY4MTksMzY4MTMsMzY4MjIsMzY4MjEsMzY4MjMsMzcwNDIsMzcwNDQsMzcwMzksMzcwNDMsMzcwNDAsMzg0NTcsMzg0NjEsMzg0NjAsMzg0NTgsMzg0NjcsMjA0MjksMjA0MjEsMjA0MzUsMjA0MDIsMjA0MjUsMjA0MjcsMjA0MTcsMjA0MzYsMjA0NDQsMjA0NDEsMjA0MTEsMjA0MDMsMjA0NDMsMjA0MjMsMjA0MzgsMjA0MTAsMjA0MTYsMjA0MDksMjA0NjAsMjEwNjAsMjEwNjUsMjExODQsMjExODYsMjEzMDksMjEzNzIsMjEzOTksMjEzOTgsMjE0MDEsMjE0MDAsMjE2OTAsMjE2NjUsMjE2NzcsMjE2NjksMjE3MTEsMjE2OTksMzM1NDksMjE2ODcsMjE2NzgsMjE3MTgsMjE2ODYsMjE3MDEsMjE3MDIsMjE2NjQsMjE2MTYsMjE2OTIsMjE2NjYsMjE2OTQsMjE2MTgsMjE3MjYsMjE2ODAsMjI0NTMsMjI0MzAsMjI0MzEsMjI0MzYsMjI0MTIsMjI0MjMsMjI0MjksMjI0MjcsMjI0MjAsMjI0MjQsMjI0MTUsMjI0MjUsMjI0MzcsMjI0MjYsMjI0MjEsMjI3NzIsMjI3OTcsMjI4NjcsMjMwMDksMjMwMDYsMjMwMjIsMjMwNDAsMjMwMjUsMjMwMDUsMjMwMzQsMjMwMzcsMjMwMzYsMjMwMzAsMjMwMTIsMjMwMjYsMjMwMzEsMjMwMDMsMjMwMTcsMjMwMjcsMjMwMjksMjMwMDgsMjMwMzgsMjMwMjgsMjMwMjEsMjM0NjQsMjM2MjgsMjM3NjAsMjM3NjgsMjM3NTYsMjM3NjcsMjM3NTUsMjM3NzEsMjM3NzQsMjM3NzAsMjM3NTMsMjM3NTEsMjM3NTQsMjM3NjYsMjM3NjMsMjM3NjQsMjM3NTksMjM3NTIsMjM3NTAsMjM3NTgsMjM3NzUsMjM4MDAsMjQwNTcsMjQwOTcsMjQwOTgsMjQwOTksMjQwOTYsMjQxMDAsMjQyNDAsMjQyMjgsMjQyMjYsMjQyMTksMjQyMjcsMjQyMjksMjQzMjcsMjQzNjYsMjQ0MDYsMjQ0NTQsMjQ2MzEsMjQ2MzMsMjQ2NjAsMjQ2OTAsMjQ2NzAsMjQ2NDUsMjQ2NTksMjQ2NDcsMjQ2NDksMjQ2NjcsMjQ2NTIsMjQ2NDAsMjQ2NDIsMjQ2NzEsMjQ2MTIsMjQ2NDQsMjQ2NjQsMjQ2NzgsMjQ2ODYsMjUxNTQsMjUxNTUsMjUyOTUsMjUzNTcsMjUzNTUsMjUzMzMsMjUzNTgsMjUzNDcsMjUzMjMsMjUzMzcsMjUzNTksMjUzNTYsMjUzMzYsMjUzMzQsMjUzNDQsMjUzNjMsMjUzNjQsMjUzMzgsMjUzNjUsMjUzMzksMjUzMjgsMjU5MjEsMjU5MjMsMjYwMjYsMjYwNDcsMjYxNjYsMjYxNDUsMjYxNjIsMjYxNjUsMjYxNDAsMjYxNTAsMjYxNDYsMjYxNjMsMjYxNTUsMjYxNzAsMjYxNDEsMjYxNjQsMjYxNjksMjYxNTgsMjYzODMsMjYzODQsMjY1NjEsMjY2MTAsMjY1NjgsMjY1NTQsMjY1ODgsMjY1NTUsMjY2MTYsMjY1ODQsMjY1NjAsMjY1NTEsMjY1NjUsMjY2MDMsMjY1OTYsMjY1OTEsMjY1NDksMjY1NzMsMjY1NDcsMjY2MTUsMjY2MTQsMjY2MDYsMjY1OTUsMjY1NjIsMjY1NTMsMjY1NzQsMjY1OTksMjY2MDgsMjY1NDYsMjY2MjAsMjY1NjYsMjY2MDUsMjY1NzIsMjY1NDIsMjY1OTgsMjY1ODcsMjY2MTgsMjY1NjksMjY1NzAsMjY1NjMsMjY2MDIsMjY1NzEsMjc0MzIsMjc1MjIsMjc1MjQsMjc1NzQsMjc2MDYsMjc2MDgsMjc2MTYsMjc2ODAsMjc2ODEsMjc5NDQsMjc5NTYsMjc5NDksMjc5MzUsMjc5NjQsMjc5NjcsMjc5MjIsMjc5MTQsMjc4NjYsMjc5NTUsMjc5MDgsMjc5MjksMjc5NjIsMjc5MzAsMjc5MjEsMjc5MDQsMjc5MzMsMjc5NzAsMjc5MDUsMjc5MjgsMjc5NTksMjc5MDcsMjc5MTksMjc5NjgsMjc5MTEsMjc5MzYsMjc5NDgsMjc5MTIsMjc5MzgsMjc5MTMsMjc5MjAsMjg4NTUsMjg4MzEsMjg4NjIsMjg4NDksMjg4NDgsMjg4MzMsMjg4NTIsMjg4NTMsMjg4NDEsMjkyNDksMjkyNTcsMjkyNTgsMjkyOTIsMjkyOTYsMjkyOTksMjkyOTQsMjkzODYsMjk0MTIsMjk0MTYsMjk0MTksMjk0MDcsMjk0MTgsMjk0MTQsMjk0MTEsMjk1NzMsMjk2NDQsMjk2MzQsMjk2NDAsMjk2MzcsMjk2MjUsMjk2MjIsMjk2MjEsMjk2MjAsMjk2NzUsMjk2MzEsMjk2MzksMjk2MzAsMjk2MzUsMjk2MzgsMjk2MjQsMjk2NDMsMjk5MzIsMjk5MzQsMjk5OTgsMzAwMjMsMzAwMjQsMzAxMTksMzAxMjIsMzAzMjksMzA0MDQsMzA0NzIsMzA0NjcsMzA0NjgsMzA0NjksMzA0NzQsMzA0NTUsMzA0NTksMzA0NTgsMzA2OTUsMzA2OTYsMzA3MjYsMzA3MzcsMzA3MzgsMzA3MjUsMzA3MzYsMzA3MzUsMzA3MzQsMzA3MjksMzA3MjMsMzA3MzksMzEwNTAsMzEwNTIsMzEwNTEsMzEwNDUsMzEwNDQsMzExODksMzExODEsMzExODMsMzExOTAsMzExODIsMzEzNjAsMzEzNTgsMzE0NDEsMzE0ODgsMzE0ODksMzE4NjYsMzE4NjQsMzE4NjUsMzE4NzEsMzE4NzIsMzE4NzMsMzIwMDMsMzIwMDgsMzIwMDEsMzI2MDAsMzI2NTcsMzI2NTMsMzI3MDIsMzI3NzUsMzI3ODIsMzI3ODMsMzI3ODgsMzI4MjMsMzI5ODQsMzI5NjcsMzI5OTIsMzI5NzcsMzI5NjgsMzI5NjIsMzI5NzYsMzI5NjUsMzI5OTUsMzI5ODUsMzI5ODgsMzI5NzAsMzI5ODEsMzI5NjksMzI5NzUsMzI5ODMsMzI5OTgsMzI5NzMsMzMyNzksMzMzMTMsMzM0MjgsMzM0OTcsMzM1MzQsMzM1MjksMzM1NDMsMzM1MTIsMzM1MzYsMzM0OTMsMzM1OTQsMzM1MTUsMzM0OTQsMzM1MjQsMzM1MTYsMzM1MDUsMzM1MjIsMzM1MjUsMzM1NDgsMzM1MzEsMzM1MjYsMzM1MjAsMzM1MTQsMzM1MDgsMzM1MDQsMzM1MzAsMzM1MjMsMzM1MTcsMzQ0MjMsMzQ0MjAsMzQ0MjgsMzQ0MTksMzQ4ODEsMzQ4OTQsMzQ5MTksMzQ5MjIsMzQ5MjEsMzUyODMsMzUzMzIsMzUzMzUsMzYyMTAsMzY4MzUsMzY4MzMsMzY4NDYsMzY4MzIsMzcxMDUsMzcwNTMsMzcwNTUsMzcwNzcsMzcwNjEsMzcwNTQsMzcwNjMsMzcwNjcsMzcwNjQsMzczMzIsMzczMzEsMzg0ODQsMzg0NzksMzg0ODEsMzg0ODMsMzg0NzQsMzg0NzgsMjA1MTAsMjA0ODUsMjA0ODcsMjA0OTksMjA1MTQsMjA1MjgsMjA1MDcsMjA0NjksMjA0NjgsMjA1MzEsMjA1MzUsMjA1MjQsMjA0NzAsMjA0NzEsMjA1MDMsMjA1MDgsMjA1MTIsMjA1MTksMjA1MzMsMjA1MjcsMjA1MjksMjA0OTQsMjA4MjYsMjA4ODQsMjA4ODMsMjA5MzgsMjA5MzIsMjA5MzMsMjA5MzYsMjA5NDIsMjEwODksMjEwODIsMjEwNzQsMjEwODYsMjEwODcsMjEwNzcsMjEwOTAsMjExOTcsMjEyNjIsMjE0MDYsMjE3OTgsMjE3MzAsMjE3ODMsMjE3NzgsMjE3MzUsMjE3NDcsMjE3MzIsMjE3ODYsMjE3NTksMjE3NjQsMjE3NjgsMjE3MzksMjE3NzcsMjE3NjUsMjE3NDUsMjE3NzAsMjE3NTUsMjE3NTEsMjE3NTIsMjE3MjgsMjE3NzQsMjE3NjMsMjE3NzEsMjIyNzMsMjIyNzQsMjI0NzYsMjI1NzgsMjI0ODUsMjI0ODIsMjI0NTgsMjI0NzAsMjI0NjEsMjI0NjAsMjI0NTYsMjI0NTQsMjI0NjMsMjI0NzEsMjI0ODAsMjI0NTcsMjI0NjUsMjI3OTgsMjI4NTgsMjMwNjUsMjMwNjIsMjMwODUsMjMwODYsMjMwNjEsMjMwNTUsMjMwNjMsMjMwNTAsMjMwNzAsMjMwOTEsMjM0MDQsMjM0NjMsMjM0NjksMjM0NjgsMjM1NTUsMjM2MzgsMjM2MzYsMjM3ODgsMjM4MDcsMjM3OTAsMjM3OTMsMjM3OTksMjM4MDgsMjM4MDEsMjQxMDUsMjQxMDQsMjQyMzIsMjQyMzgsMjQyMzQsMjQyMzYsMjQzNzEsMjQzNjgsMjQ0MjMsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ3MzgsMjQ3MTIsMjQ3MDQsMjQ3MjIsMjQ3MDUsMjQ3MzMsMjQ3MDcsMjQ3MjUsMjQ3MzEsMjQ3MjcsMjQ3MTEsMjQ3MzIsMjQ3MTgsMjUxMTMsMjUxNTgsMjUzMzAsMjUzNjAsMjU0MzAsMjUzODgsMjU0MTIsMjU0MTMsMjUzOTgsMjU0MTEsMjU1NzIsMjU0MDEsMjU0MTksMjU0MTgsMjU0MDQsMjUzODUsMjU0MDksMjUzOTYsMjU0MzIsMjU0MjgsMjU0MzMsMjUzODksMjU0MTUsMjUzOTUsMjU0MzQsMjU0MjUsMjU0MDAsMjU0MzEsMjU0MDgsMjU0MTYsMjU5MzAsMjU5MjYsMjYwNTQsMjYwNTEsMjYwNTIsMjYwNTAsMjYxODYsMjYyMDcsMjYxODMsMjYxOTMsMjYzODYsMjYzODcsMjY2NTUsMjY2NTAsMjY2OTcsMjY2NzQsMjY2NzUsMjY2ODMsMjY2OTksMjY3MDMsMjY2NDYsMjY2NzMsMjY2NTIsMjY2NzcsMjY2NjcsMjY2NjksMjY2NzEsMjY3MDIsMjY2OTIsMjY2NzYsMjY2NTMsMjY2NDIsMjY2NDQsMjY2NjIsMjY2NjQsMjY2NzAsMjY3MDEsMjY2ODIsMjY2NjEsMjY2NTYsMjc0MzYsMjc0MzksMjc0MzcsMjc0NDEsMjc0NDQsMjc1MDEsMzI4OTgsMjc1MjgsMjc2MjIsMjc2MjAsMjc2MjQsMjc2MTksMjc2MTgsMjc2MjMsMjc2ODUsMjgwMjYsMjgwMDMsMjgwMDQsMjgwMjIsMjc5MTcsMjgwMDEsMjgwNTAsMjc5OTIsMjgwMDIsMjgwMTMsMjgwMTUsMjgwNDksMjgwNDUsMjgxNDMsMjgwMzEsMjgwMzgsMjc5OTgsMjgwMDcsMjgwMDAsMjgwNTUsMjgwMTYsMjgwMjgsMjc5OTksMjgwMzQsMjgwNTYsMjc5NTEsMjgwMDgsMjgwNDMsMjgwMzAsMjgwMzIsMjgwMzYsMjc5MjYsMjgwMzUsMjgwMjcsMjgwMjksMjgwMjEsMjgwNDgsMjg4OTIsMjg4ODMsMjg4ODEsMjg4OTMsMjg4NzUsMzI1NjksMjg4OTgsMjg4ODcsMjg4ODIsMjg4OTQsMjg4OTYsMjg4ODQsMjg4NzcsMjg4NjksMjg4NzAsMjg4NzEsMjg4OTAsMjg4NzgsMjg4OTcsMjkyNTAsMjkzMDQsMjkzMDMsMjkzMDIsMjk0NDAsMjk0MzQsMjk0MjgsMjk0MzgsMjk0MzAsMjk0MjcsMjk0MzUsMjk0NDEsMjk2NTEsMjk2NTcsMjk2NjksMjk2NTQsMjk2MjgsMjk2NzEsMjk2NjcsMjk2NzMsMjk2NjAsMjk2NTAsMjk2NTksMjk2NTIsMjk2NjEsMjk2NTgsMjk2NTUsMjk2NTYsMjk2NzIsMjk5MTgsMjk5MTksMjk5NDAsMjk5NDEsMjk5ODUsMzAwNDMsMzAwNDcsMzAxMjgsMzAxNDUsMzAxMzksMzAxNDgsMzAxNDQsMzAxNDMsMzAxMzQsMzAxMzgsMzAzNDYsMzA0MDksMzA0OTMsMzA0OTEsMzA0ODAsMzA0ODMsMzA0ODIsMzA0OTksMzA0ODEsMzA0ODUsMzA0ODksMzA0OTAsMzA0OTgsMzA1MDMsMzA3NTUsMzA3NjQsMzA3NTQsMzA3NzMsMzA3NjcsMzA3NjAsMzA3NjYsMzA3NjMsMzA3NTMsMzA3NjEsMzA3NzEsMzA3NjIsMzA3NjksMzEwNjAsMzEwNjcsMzEwNTUsMzEwNjgsMzEwNTksMzEwNTgsMzEwNTcsMzEyMTEsMzEyMTIsMzEyMDAsMzEyMTQsMzEyMTMsMzEyMTAsMzExOTYsMzExOTgsMzExOTcsMzEzNjYsMzEzNjksMzEzNjUsMzEzNzEsMzEzNzIsMzEzNzAsMzEzNjcsMzE0NDgsMzE1MDQsMzE0OTIsMzE1MDcsMzE0OTMsMzE1MDMsMzE0OTYsMzE0OTgsMzE1MDIsMzE0OTcsMzE1MDYsMzE4NzYsMzE4ODksMzE4ODIsMzE4ODQsMzE4ODAsMzE4ODUsMzE4NzcsMzIwMzAsMzIwMjksMzIwMTcsMzIwMTQsMzIwMjQsMzIwMjIsMzIwMTksMzIwMzEsMzIwMTgsMzIwMTUsMzIwMTIsMzI2MDQsMzI2MDksMzI2MDYsMzI2MDgsMzI2MDUsMzI2MDMsMzI2NjIsMzI2NTgsMzI3MDcsMzI3MDYsMzI3MDQsMzI3OTAsMzI4MzAsMzI4MjUsMzMwMTgsMzMwMTAsMzMwMTcsMzMwMTMsMzMwMjUsMzMwMTksMzMwMjQsMzMyODEsMzMzMjcsMzMzMTcsMzM1ODcsMzM1ODEsMzM2MDQsMzM1NjEsMzM2MTcsMzM1NzMsMzM2MjIsMzM1OTksMzM2MDEsMzM1NzQsMzM1NjQsMzM1NzAsMzM2MDIsMzM2MTQsMzM1NjMsMzM1NzgsMzM1NDQsMzM1OTYsMzM2MTMsMzM1NTgsMzM1NzIsMzM1NjgsMzM1OTEsMzM1ODMsMzM1NzcsMzM2MDcsMzM2MDUsMzM2MTIsMzM2MTksMzM1NjYsMzM1ODAsMzM2MTEsMzM1NzUsMzM2MDgsMzQzODcsMzQzODYsMzQ0NjYsMzQ0NzIsMzQ0NTQsMzQ0NDUsMzQ0NDksMzQ0NjIsMzQ0MzksMzQ0NTUsMzQ0MzgsMzQ0NDMsMzQ0NTgsMzQ0MzcsMzQ0NjksMzQ0NTcsMzQ0NjUsMzQ0NzEsMzQ0NTMsMzQ0NTYsMzQ0NDYsMzQ0NjEsMzQ0NDgsMzQ0NTIsMzQ4ODMsMzQ4ODQsMzQ5MjUsMzQ5MzMsMzQ5MzQsMzQ5MzAsMzQ5NDQsMzQ5MjksMzQ5NDMsMzQ5MjcsMzQ5NDcsMzQ5NDIsMzQ5MzIsMzQ5NDAsMzUzNDYsMzU5MTEsMzU5MjcsMzU5NjMsMzYwMDQsMzYwMDMsMzYyMTQsMzYyMTYsMzYyNzcsMzYyNzksMzYyNzgsMzY1NjEsMzY1NjMsMzY4NjIsMzY4NTMsMzY4NjYsMzY4NjMsMzY4NTksMzY4NjgsMzY4NjAsMzY4NTQsMzcwNzgsMzcwODgsMzcwODEsMzcwODIsMzcwOTEsMzcwODcsMzcwOTMsMzcwODAsMzcwODMsMzcwNzksMzcwODQsMzcwOTIsMzcyMDAsMzcxOTgsMzcxOTksMzczMzMsMzczNDYsMzczMzgsMzg0OTIsMzg0OTUsMzg1ODgsMzkxMzksMzk2NDcsMzk3MjcsMjAwOTUsMjA1OTIsMjA1ODYsMjA1NzcsMjA1NzQsMjA1NzYsMjA1NjMsMjA1NTUsMjA1NzMsMjA1OTQsMjA1NTIsMjA1NTcsMjA1NDUsMjA1NzEsMjA1NTQsMjA1NzgsMjA1MDEsMjA1NDksMjA1NzUsMjA1ODUsMjA1ODcsMjA1NzksMjA1ODAsMjA1NTAsMjA1NDQsMjA1OTAsMjA1OTUsMjA1NjcsMjA1NjEsMjA5NDQsMjEwOTksMjExMDEsMjExMDAsMjExMDIsMjEyMDYsMjEyMDMsMjEyOTMsMjE0MDQsMjE4NzcsMjE4NzgsMjE4MjAsMjE4MzcsMjE4NDAsMjE4MTIsMjE4MDIsMjE4NDEsMjE4NTgsMjE4MTQsMjE4MTMsMjE4MDgsMjE4NDIsMjE4MjksMjE3NzIsMjE4MTAsMjE4NjEsMjE4MzgsMjE4MTcsMjE4MzIsMjE4MDUsMjE4MTksMjE4MjQsMjE4MzUsMjIyODIsMjIyNzksMjI1MjMsMjI1NDgsMjI0OTgsMjI1MTgsMjI0OTIsMjI1MTYsMjI1MjgsMjI1MDksMjI1MjUsMjI1MzYsMjI1MjAsMjI1MzksMjI1MTUsMjI0NzksMjI1MzUsMjI1MTAsMjI0OTksMjI1MTQsMjI1MDEsMjI1MDgsMjI0OTcsMjI1NDIsMjI1MjQsMjI1NDQsMjI1MDMsMjI1MjksMjI1NDAsMjI1MTMsMjI1MDUsMjI1MTIsMjI1NDEsMjI1MzIsMjI4NzYsMjMxMzYsMjMxMjgsMjMxMjUsMjMxNDMsMjMxMzQsMjMwOTYsMjMwOTMsMjMxNDksMjMxMjAsMjMxMzUsMjMxNDEsMjMxNDgsMjMxMjMsMjMxNDAsMjMxMjcsMjMxMDcsMjMxMzMsMjMxMjIsMjMxMDgsMjMxMzEsMjMxMTIsMjMxODIsMjMxMDIsMjMxMTcsMjMwOTcsMjMxMTYsMjMxNTIsMjMxNDUsMjMxMTEsMjMxMjEsMjMxMjYsMjMxMDYsMjMxMzIsMjM0MTAsMjM0MDYsMjM0ODksMjM0ODgsMjM2NDEsMjM4MzgsMjM4MTksMjM4MzcsMjM4MzQsMjM4NDAsMjM4MjAsMjM4NDgsMjM4MjEsMjM4NDYsMjM4NDUsMjM4MjMsMjM4NTYsMjM4MjYsMjM4NDMsMjM4MzksMjM4NTQsMjQxMjYsMjQxMTYsMjQyNDEsMjQyNDQsMjQyNDksMjQyNDIsMjQyNDMsMjQzNzQsMjQzNzYsMjQ0NzUsMjQ0NzAsMjQ0NzksMjQ3MTQsMjQ3MjAsMjQ3MTAsMjQ3NjYsMjQ3NTIsMjQ3NjIsMjQ3ODcsMjQ3ODgsMjQ3ODMsMjQ4MDQsMjQ3OTMsMjQ3OTcsMjQ3NzYsMjQ3NTMsMjQ3OTUsMjQ3NTksMjQ3NzgsMjQ3NjcsMjQ3NzEsMjQ3ODEsMjQ3NjgsMjUzOTQsMjU0NDUsMjU0ODIsMjU0NzQsMjU0NjksMjU1MzMsMjU1MDIsMjU1MTcsMjU1MDEsMjU0OTUsMjU1MTUsMjU0ODYsMjU0NTUsMjU0NzksMjU0ODgsMjU0NTQsMjU1MTksMjU0NjEsMjU1MDAsMjU0NTMsMjU1MTgsMjU0NjgsMjU1MDgsMjU0MDMsMjU1MDMsMjU0NjQsMjU0NzcsMjU0NzMsMjU0ODksMjU0ODUsMjU0NTYsMjU5MzksMjYwNjEsMjYyMTMsMjYyMDksMjYyMDMsMjYyMDEsMjYyMDQsMjYyMTAsMjYzOTIsMjY3NDUsMjY3NTksMjY3NjgsMjY3ODAsMjY3MzMsMjY3MzQsMjY3OTgsMjY3OTUsMjY5NjYsMjY3MzUsMjY3ODcsMjY3OTYsMjY3OTMsMjY3NDEsMjY3NDAsMjY4MDIsMjY3NjcsMjY3NDMsMjY3NzAsMjY3NDgsMjY3MzEsMjY3MzgsMjY3OTQsMjY3NTIsMjY3MzcsMjY3NTAsMjY3NzksMjY3NzQsMjY3NjMsMjY3ODQsMjY3NjEsMjY3ODgsMjY3NDQsMjY3NDcsMjY3NjksMjY3NjQsMjY3NjIsMjY3NDksMjc0NDYsMjc0NDMsMjc0NDcsMjc0NDgsMjc1MzcsMjc1MzUsMjc1MzMsMjc1MzQsMjc1MzIsMjc2OTAsMjgwOTYsMjgwNzUsMjgwODQsMjgwODMsMjgyNzYsMjgwNzYsMjgxMzcsMjgxMzAsMjgwODcsMjgxNTAsMjgxMTYsMjgxNjAsMjgxMDQsMjgxMjgsMjgxMjcsMjgxMTgsMjgwOTQsMjgxMzMsMjgxMjQsMjgxMjUsMjgxMjMsMjgxNDgsMjgxMDYsMjgwOTMsMjgxNDEsMjgxNDQsMjgwOTAsMjgxMTcsMjgwOTgsMjgxMTEsMjgxMDUsMjgxMTIsMjgxNDYsMjgxMTUsMjgxNTcsMjgxMTksMjgxMDksMjgxMzEsMjgwOTEsMjg5MjIsMjg5NDEsMjg5MTksMjg5NTEsMjg5MTYsMjg5NDAsMjg5MTIsMjg5MzIsMjg5MTUsMjg5NDQsMjg5MjQsMjg5MjcsMjg5MzQsMjg5NDcsMjg5MjgsMjg5MjAsMjg5MTgsMjg5MzksMjg5MzAsMjg5NDIsMjkzMTAsMjkzMDcsMjkzMDgsMjkzMTEsMjk0NjksMjk0NjMsMjk0NDcsMjk0NTcsMjk0NjQsMjk0NTAsMjk0NDgsMjk0MzksMjk0NTUsMjk0NzAsMjk1NzYsMjk2ODYsMjk2ODgsMjk2ODUsMjk3MDAsMjk2OTcsMjk2OTMsMjk3MDMsMjk2OTYsMjk2OTAsMjk2OTIsMjk2OTUsMjk3MDgsMjk3MDcsMjk2ODQsMjk3MDQsMzAwNTIsMzAwNTEsMzAxNTgsMzAxNjIsMzAxNTksMzAxNTUsMzAxNTYsMzAxNjEsMzAxNjAsMzAzNTEsMzAzNDUsMzA0MTksMzA1MjEsMzA1MTEsMzA1MDksMzA1MTMsMzA1MTQsMzA1MTYsMzA1MTUsMzA1MjUsMzA1MDEsMzA1MjMsMzA1MTcsMzA3OTIsMzA4MDIsMzA3OTMsMzA3OTcsMzA3OTQsMzA3OTYsMzA3NTgsMzA3ODksMzA4MDAsMzEwNzYsMzEwNzksMzEwODEsMzEwODIsMzEwNzUsMzEwODMsMzEwNzMsMzExNjMsMzEyMjYsMzEyMjQsMzEyMjIsMzEyMjMsMzEzNzUsMzEzODAsMzEzNzYsMzE1NDEsMzE1NTksMzE1NDAsMzE1MjUsMzE1MzYsMzE1MjIsMzE1MjQsMzE1MzksMzE1MTIsMzE1MzAsMzE1MTcsMzE1MzcsMzE1MzEsMzE1MzMsMzE1MzUsMzE1MzgsMzE1NDQsMzE1MTQsMzE1MjMsMzE4OTIsMzE4OTYsMzE4OTQsMzE5MDcsMzIwNTMsMzIwNjEsMzIwNTYsMzIwNTQsMzIwNTgsMzIwNjksMzIwNDQsMzIwNDEsMzIwNjUsMzIwNzEsMzIwNjIsMzIwNjMsMzIwNzQsMzIwNTksMzIwNDAsMzI2MTEsMzI2NjEsMzI2NjgsMzI2NjksMzI2NjcsMzI3MTQsMzI3MTUsMzI3MTcsMzI3MjAsMzI3MjEsMzI3MTEsMzI3MTksMzI3MTMsMzI3OTksMzI3OTgsMzI3OTUsMzI4MzksMzI4MzUsMzI4NDAsMzMwNDgsMzMwNjEsMzMwNDksMzMwNTEsMzMwNjksMzMwNTUsMzMwNjgsMzMwNTQsMzMwNTcsMzMwNDUsMzMwNjMsMzMwNTMsMzMwNTgsMzMyOTcsMzMzMzYsMzMzMzEsMzMzMzgsMzMzMzIsMzMzMzAsMzMzOTYsMzM2ODAsMzM2OTksMzM3MDQsMzM2NzcsMzM2NTgsMzM2NTEsMzM3MDAsMzM2NTIsMzM2NzksMzM2NjUsMzM2ODUsMzM2ODksMzM2NTMsMzM2ODQsMzM3MDUsMzM2NjEsMzM2NjcsMzM2NzYsMzM2OTMsMzM2OTEsMzM3MDYsMzM2NzUsMzM2NjIsMzM3MDEsMzM3MTEsMzM2NzIsMzM2ODcsMzM3MTIsMzM2NjMsMzM3MDIsMzM2NzEsMzM3MTAsMzM2NTQsMzM2OTAsMzQzOTMsMzQzOTAsMzQ0OTUsMzQ0ODcsMzQ0OTgsMzQ0OTcsMzQ1MDEsMzQ0OTAsMzQ0ODAsMzQ1MDQsMzQ0ODksMzQ0ODMsMzQ0ODgsMzQ1MDgsMzQ0ODQsMzQ0OTEsMzQ0OTIsMzQ0OTksMzQ0OTMsMzQ0OTQsMzQ4OTgsMzQ5NTMsMzQ5NjUsMzQ5ODQsMzQ5NzgsMzQ5ODYsMzQ5NzAsMzQ5NjEsMzQ5NzcsMzQ5NzUsMzQ5NjgsMzQ5ODMsMzQ5NjksMzQ5NzEsMzQ5NjcsMzQ5ODAsMzQ5ODgsMzQ5NTYsMzQ5NjMsMzQ5NTgsMzUyMDIsMzUyODYsMzUyODksMzUyODUsMzUzNzYsMzUzNjcsMzUzNzIsMzUzNTgsMzU4OTcsMzU4OTksMzU5MzIsMzU5MzMsMzU5NjUsMzYwMDUsMzYyMjEsMzYyMTksMzYyMTcsMzYyODQsMzYyOTAsMzYyODEsMzYyODcsMzYyODksMzY1NjgsMzY1NzQsMzY1NzMsMzY1NzIsMzY1NjcsMzY1NzYsMzY1NzcsMzY5MDAsMzY4NzUsMzY4ODEsMzY4OTIsMzY4NzYsMzY4OTcsMzcxMDMsMzcwOTgsMzcxMDQsMzcxMDgsMzcxMDYsMzcxMDcsMzcwNzYsMzcwOTksMzcxMDAsMzcwOTcsMzcyMDYsMzcyMDgsMzcyMTAsMzcyMDMsMzcyMDUsMzczNTYsMzczNjQsMzczNjEsMzczNjMsMzczNjgsMzczNDgsMzczNjksMzczNTQsMzczNTUsMzczNjcsMzczNTIsMzczNTgsMzgyNjYsMzgyNzgsMzgyODAsMzg1MjQsMzg1MDksMzg1MDcsMzg1MTMsMzg1MTEsMzg1OTEsMzg3NjIsMzg5MTYsMzkxNDEsMzkzMTksMjA2MzUsMjA2MjksMjA2MjgsMjA2MzgsMjA2MTksMjA2NDMsMjA2MTEsMjA2MjAsMjA2MjIsMjA2MzcsMjA1ODQsMjA2MzYsMjA2MjYsMjA2MTAsMjA2MTUsMjA4MzEsMjA5NDgsMjEyNjYsMjEyNjUsMjE0MTIsMjE0MTUsMjE5MDUsMjE5MjgsMjE5MjUsMjE5MzMsMjE4NzksMjIwODUsMjE5MjIsMjE5MDcsMjE4OTYsMjE5MDMsMjE5NDEsMjE4ODksMjE5MjMsMjE5MDYsMjE5MjQsMjE4ODUsMjE5MDAsMjE5MjYsMjE4ODcsMjE5MDksMjE5MjEsMjE5MDIsMjIyODQsMjI1NjksMjI1ODMsMjI1NTMsMjI1NTgsMjI1NjcsMjI1NjMsMjI1NjgsMjI1MTcsMjI2MDAsMjI1NjUsMjI1NTYsMjI1NTUsMjI1NzksMjI1OTEsMjI1ODIsMjI1NzQsMjI1ODUsMjI1ODQsMjI1NzMsMjI1NzIsMjI1ODcsMjI4ODEsMjMyMTUsMjMxODgsMjMxOTksMjMxNjIsMjMyMDIsMjMxOTgsMjMxNjAsMjMyMDYsMjMxNjQsMjMyMDUsMjMyMTIsMjMxODksMjMyMTQsMjMwOTUsMjMxNzIsMjMxNzgsMjMxOTEsMjMxNzEsMjMxNzksMjMyMDksMjMxNjMsMjMxNjUsMjMxODAsMjMxOTYsMjMxODMsMjMxODcsMjMxOTcsMjM1MzAsMjM1MDEsMjM0OTksMjM1MDgsMjM1MDUsMjM0OTgsMjM1MDIsMjM1NjQsMjM2MDAsMjM4NjMsMjM4NzUsMjM5MTUsMjM4NzMsMjM4ODMsMjM4NzEsMjM4NjEsMjM4ODksMjM4ODYsMjM4OTMsMjM4NTksMjM4NjYsMjM4OTAsMjM4NjksMjM4NTcsMjM4OTcsMjM4NzQsMjM4NjUsMjM4ODEsMjM4NjQsMjM4NjgsMjM4NTgsMjM4NjIsMjM4NzIsMjM4NzcsMjQxMzIsMjQxMjksMjQ0MDgsMjQ0ODYsMjQ0ODUsMjQ0OTEsMjQ3NzcsMjQ3NjEsMjQ3ODAsMjQ4MDIsMjQ3ODIsMjQ3NzIsMjQ4NTIsMjQ4MTgsMjQ4NDIsMjQ4NTQsMjQ4MzcsMjQ4MjEsMjQ4NTEsMjQ4MjQsMjQ4MjgsMjQ4MzAsMjQ3NjksMjQ4MzUsMjQ4NTYsMjQ4NjEsMjQ4NDgsMjQ4MzEsMjQ4MzYsMjQ4NDMsMjUxNjIsMjU0OTIsMjU1MjEsMjU1MjAsMjU1NTAsMjU1NzMsMjU1NzYsMjU1ODMsMjU1MzksMjU3NTcsMjU1ODcsMjU1NDYsMjU1NjgsMjU1OTAsMjU1NTcsMjU1ODYsMjU1ODksMjU2OTcsMjU1NjcsMjU1MzQsMjU1NjUsMjU1NjQsMjU1NDAsMjU1NjAsMjU1NTUsMjU1MzgsMjU1NDMsMjU1NDgsMjU1NDcsMjU1NDQsMjU1ODQsMjU1NTksMjU1NjEsMjU5MDYsMjU5NTksMjU5NjIsMjU5NTYsMjU5NDgsMjU5NjAsMjU5NTcsMjU5OTYsMjYwMTMsMjYwMTQsMjYwMzAsMjYwNjQsMjYwNjYsMjYyMzYsMjYyMjAsMjYyMzUsMjYyNDAsMjYyMjUsMjYyMzMsMjYyMTgsMjYyMjYsMjYzNjksMjY4OTIsMjY4MzUsMjY4ODQsMjY4NDQsMjY5MjIsMjY4NjAsMjY4NTgsMjY4NjUsMjY4OTUsMjY4MzgsMjY4NzEsMjY4NTksMjY4NTIsMjY4NzAsMjY4OTksMjY4OTYsMjY4NjcsMjY4NDksMjY4ODcsMjY4MjgsMjY4ODgsMjY5OTIsMjY4MDQsMjY4OTcsMjY4NjMsMjY4MjIsMjY5MDAsMjY4NzIsMjY4MzIsMjY4NzcsMjY4NzYsMjY4NTYsMjY4OTEsMjY4OTAsMjY5MDMsMjY4MzAsMjY4MjQsMjY4NDUsMjY4NDYsMjY4NTQsMjY4NjgsMjY4MzMsMjY4ODYsMjY4MzYsMjY4NTcsMjY5MDEsMjY5MTcsMjY4MjMsMjc0NDksMjc0NTEsMjc0NTUsMjc0NTIsMjc1NDAsMjc1NDMsMjc1NDUsMjc1NDEsMjc1ODEsMjc2MzIsMjc2MzQsMjc2MzUsMjc2OTYsMjgxNTYsMjgyMzAsMjgyMzEsMjgxOTEsMjgyMzMsMjgyOTYsMjgyMjAsMjgyMjEsMjgyMjksMjgyNTgsMjgyMDMsMjgyMjMsMjgyMjUsMjgyNTMsMjgyNzUsMjgxODgsMjgyMTEsMjgyMzUsMjgyMjQsMjgyNDEsMjgyMTksMjgxNjMsMjgyMDYsMjgyNTQsMjgyNjQsMjgyNTIsMjgyNTcsMjgyMDksMjgyMDAsMjgyNTYsMjgyNzMsMjgyNjcsMjgyMTcsMjgxOTQsMjgyMDgsMjgyNDMsMjgyNjEsMjgxOTksMjgyODAsMjgyNjAsMjgyNzksMjgyNDUsMjgyODEsMjgyNDIsMjgyNjIsMjgyMTMsMjgyMTQsMjgyNTAsMjg5NjAsMjg5NTgsMjg5NzUsMjg5MjMsMjg5NzQsMjg5NzcsMjg5NjMsMjg5NjUsMjg5NjIsMjg5NzgsMjg5NTksMjg5NjgsMjg5ODYsMjg5NTUsMjkyNTksMjkyNzQsMjkzMjAsMjkzMjEsMjkzMTgsMjkzMTcsMjkzMjMsMjk0NTgsMjk0NTEsMjk0ODgsMjk0NzQsMjk0ODksMjk0OTEsMjk0NzksMjk0OTAsMjk0ODUsMjk0NzgsMjk0NzUsMjk0OTMsMjk0NTIsMjk3NDIsMjk3NDAsMjk3NDQsMjk3MzksMjk3MTgsMjk3MjIsMjk3MjksMjk3NDEsMjk3NDUsMjk3MzIsMjk3MzEsMjk3MjUsMjk3MzcsMjk3MjgsMjk3NDYsMjk5NDcsMjk5OTksMzAwNjMsMzAwNjAsMzAxODMsMzAxNzAsMzAxNzcsMzAxODIsMzAxNzMsMzAxNzUsMzAxODAsMzAxNjcsMzAzNTcsMzAzNTQsMzA0MjYsMzA1MzQsMzA1MzUsMzA1MzIsMzA1NDEsMzA1MzMsMzA1MzgsMzA1NDIsMzA1MzksMzA1NDAsMzA2ODYsMzA3MDAsMzA4MTYsMzA4MjAsMzA4MjEsMzA4MTIsMzA4MjksMzA4MzMsMzA4MjYsMzA4MzAsMzA4MzIsMzA4MjUsMzA4MjQsMzA4MTQsMzA4MTgsMzEwOTIsMzEwOTEsMzEwOTAsMzEwODgsMzEyMzQsMzEyNDIsMzEyMzUsMzEyNDQsMzEyMzYsMzEzODUsMzE0NjIsMzE0NjAsMzE1NjIsMzE1NDcsMzE1NTYsMzE1NjAsMzE1NjQsMzE1NjYsMzE1NTIsMzE1NzYsMzE1NTcsMzE5MDYsMzE5MDIsMzE5MTIsMzE5MDUsMzIwODgsMzIxMTEsMzIwOTksMzIwODMsMzIwODYsMzIxMDMsMzIxMDYsMzIwNzksMzIxMDksMzIwOTIsMzIxMDcsMzIwODIsMzIwODQsMzIxMDUsMzIwODEsMzIwOTUsMzIwNzgsMzI1NzQsMzI1NzUsMzI2MTMsMzI2MTQsMzI2NzQsMzI2NzIsMzI2NzMsMzI3MjcsMzI4NDksMzI4NDcsMzI4NDgsMzMwMjIsMzI5ODAsMzMwOTEsMzMwOTgsMzMxMDYsMzMxMDMsMzMwOTUsMzMwODUsMzMxMDEsMzMwODIsMzMyNTQsMzMyNjIsMzMyNzEsMzMyNzIsMzMyNzMsMzMyODQsMzMzNDAsMzMzNDEsMzMzNDMsMzMzOTcsMzM1OTUsMzM3NDMsMzM3ODUsMzM4MjcsMzM3MjgsMzM3NjgsMzM4MTAsMzM3NjcsMzM3NjQsMzM3ODgsMzM3ODIsMzM4MDgsMzM3MzQsMzM3MzYsMzM3NzEsMzM3NjMsMzM3MjcsMzM3OTMsMzM3NTcsMzM3NjUsMzM3NTIsMzM3OTEsMzM3NjEsMzM3MzksMzM3NDIsMzM3NTAsMzM3ODEsMzM3MzcsMzM4MDEsMzM4MDcsMzM3NTgsMzM4MDksMzM3OTgsMzM3MzAsMzM3NzksMzM3NDksMzM3ODYsMzM3MzUsMzM3NDUsMzM3NzAsMzM4MTEsMzM3MzEsMzM3NzIsMzM3NzQsMzM3MzIsMzM3ODcsMzM3NTEsMzM3NjIsMzM4MTksMzM3NTUsMzM3OTAsMzQ1MjAsMzQ1MzAsMzQ1MzQsMzQ1MTUsMzQ1MzEsMzQ1MjIsMzQ1MzgsMzQ1MjUsMzQ1MzksMzQ1MjQsMzQ1NDAsMzQ1MzcsMzQ1MTksMzQ1MzYsMzQ1MTMsMzQ4ODgsMzQ5MDIsMzQ5MDEsMzUwMDIsMzUwMzEsMzUwMDEsMzUwMDAsMzUwMDgsMzUwMDYsMzQ5OTgsMzUwMDQsMzQ5OTksMzUwMDUsMzQ5OTQsMzUwNzMsMzUwMTcsMzUyMjEsMzUyMjQsMzUyMjMsMzUyOTMsMzUyOTAsMzUyOTEsMzU0MDYsMzU0MDUsMzUzODUsMzU0MTcsMzUzOTIsMzU0MTUsMzU0MTYsMzUzOTYsMzUzOTcsMzU0MTAsMzU0MDAsMzU0MDksMzU0MDIsMzU0MDQsMzU0MDcsMzU5MzUsMzU5NjksMzU5NjgsMzYwMjYsMzYwMzAsMzYwMTYsMzYwMjUsMzYwMjEsMzYyMjgsMzYyMjQsMzYyMzMsMzYzMTIsMzYzMDcsMzYzMDEsMzYyOTUsMzYzMTAsMzYzMTYsMzYzMDMsMzYzMDksMzYzMTMsMzYyOTYsMzYzMTEsMzYyOTMsMzY1OTEsMzY1OTksMzY2MDIsMzY2MDEsMzY1ODIsMzY1OTAsMzY1ODEsMzY1OTcsMzY1ODMsMzY1ODQsMzY1OTgsMzY1ODcsMzY1OTMsMzY1ODgsMzY1OTYsMzY1ODUsMzY5MDksMzY5MTYsMzY5MTEsMzcxMjYsMzcxNjQsMzcxMjQsMzcxMTksMzcxMTYsMzcxMjgsMzcxMTMsMzcxMTUsMzcxMjEsMzcxMjAsMzcxMjcsMzcxMjUsMzcxMjMsMzcyMTcsMzcyMjAsMzcyMTUsMzcyMTgsMzcyMTYsMzczNzcsMzczODYsMzc0MTMsMzczNzksMzc0MDIsMzc0MTQsMzczOTEsMzczODgsMzczNzYsMzczOTQsMzczNzUsMzczNzMsMzczODIsMzczODAsMzc0MTUsMzczNzgsMzc0MDQsMzc0MTIsMzc0MDEsMzczOTksMzczODEsMzczOTgsMzgyNjcsMzgyODUsMzgyODQsMzgyODgsMzg1MzUsMzg1MjYsMzg1MzYsMzg1MzcsMzg1MzEsMzg1MjgsMzg1OTQsMzg2MDAsMzg1OTUsMzg2NDEsMzg2NDAsMzg3NjQsMzg3NjgsMzg3NjYsMzg5MTksMzkwODEsMzkxNDcsNDAxNjYsNDA2OTcsMjAwOTksMjAxMDAsMjAxNTAsMjA2NjksMjA2NzEsMjA2NzgsMjA2NTQsMjA2NzYsMjA2ODIsMjA2NjAsMjA2ODAsMjA2NzQsMjA2NTYsMjA2NzMsMjA2NjYsMjA2NTcsMjA2ODMsMjA2ODEsMjA2NjIsMjA2NjQsMjA5NTEsMjExMTQsMjExMTIsMjExMTUsMjExMTYsMjE5NTUsMjE5NzksMjE5NjQsMjE5NjgsMjE5NjMsMjE5NjIsMjE5ODEsMjE5NTIsMjE5NzIsMjE5NTYsMjE5OTMsMjE5NTEsMjE5NzAsMjE5MDEsMjE5NjcsMjE5NzMsMjE5ODYsMjE5NzQsMjE5NjAsMjIwMDIsMjE5NjUsMjE5NzcsMjE5NTQsMjIyOTIsMjI2MTEsMjI2MzIsMjI2MjgsMjI2MDcsMjI2MDUsMjI2MDEsMjI2MzksMjI2MTMsMjI2MDYsMjI2MjEsMjI2MTcsMjI2MjksMjI2MTksMjI1ODksMjI2MjcsMjI2NDEsMjI3ODAsMjMyMzksMjMyMzYsMjMyNDMsMjMyMjYsMjMyMjQsMjMyMTcsMjMyMjEsMjMyMTYsMjMyMzEsMjMyNDAsMjMyMjcsMjMyMzgsMjMyMjMsMjMyMzIsMjMyNDIsMjMyMjAsMjMyMjIsMjMyNDUsMjMyMjUsMjMxODQsMjM1MTAsMjM1MTIsMjM1MTMsMjM1ODMsMjM2MDMsMjM5MjEsMjM5MDcsMjM4ODIsMjM5MDksMjM5MjIsMjM5MTYsMjM5MDIsMjM5MTIsMjM5MTEsMjM5MDYsMjQwNDgsMjQxNDMsMjQxNDIsMjQxMzgsMjQxNDEsMjQxMzksMjQyNjEsMjQyNjgsMjQyNjIsMjQyNjcsMjQyNjMsMjQzODQsMjQ0OTUsMjQ0OTMsMjQ4MjMsMjQ5MDUsMjQ5MDYsMjQ4NzUsMjQ5MDEsMjQ4ODYsMjQ4ODIsMjQ4NzgsMjQ5MDIsMjQ4NzksMjQ5MTEsMjQ4NzMsMjQ4OTYsMjUxMjAsMzcyMjQsMjUxMjMsMjUxMjUsMjUxMjQsMjU1NDEsMjU1ODUsMjU1NzksMjU2MTYsMjU2MTgsMjU2MDksMjU2MzIsMjU2MzYsMjU2NTEsMjU2NjcsMjU2MzEsMjU2MjEsMjU2MjQsMjU2NTcsMjU2NTUsMjU2MzQsMjU2MzUsMjU2MTIsMjU2MzgsMjU2NDgsMjU2NDAsMjU2NjUsMjU2NTMsMjU2NDcsMjU2MTAsMjU2MjYsMjU2NjQsMjU2MzcsMjU2MzksMjU2MTEsMjU1NzUsMjU2MjcsMjU2NDYsMjU2MzMsMjU2MTQsMjU5NjcsMjYwMDIsMjYwNjcsMjYyNDYsMjYyNTIsMjYyNjEsMjYyNTYsMjYyNTEsMjYyNTAsMjYyNjUsMjYyNjAsMjYyMzIsMjY0MDAsMjY5ODIsMjY5NzUsMjY5MzYsMjY5NTgsMjY5NzgsMjY5OTMsMjY5NDMsMjY5NDksMjY5ODYsMjY5MzcsMjY5NDYsMjY5NjcsMjY5NjksMjcwMDIsMjY5NTIsMjY5NTMsMjY5MzMsMjY5ODgsMjY5MzEsMjY5NDEsMjY5ODEsMjY4NjQsMjcwMDAsMjY5MzIsMjY5ODUsMjY5NDQsMjY5OTEsMjY5NDgsMjY5OTgsMjY5NjgsMjY5NDUsMjY5OTYsMjY5NTYsMjY5MzksMjY5NTUsMjY5MzUsMjY5NzIsMjY5NTksMjY5NjEsMjY5MzAsMjY5NjIsMjY5MjcsMjcwMDMsMjY5NDAsMjc0NjIsMjc0NjEsMjc0NTksMjc0NTgsMjc0NjQsMjc0NTcsMjc1NDcsNjQwMTMsMjc2NDMsMjc2NDQsMjc2NDEsMjc2MzksMjc2NDAsMjgzMTUsMjgzNzQsMjgzNjAsMjgzMDMsMjgzNTIsMjgzMTksMjgzMDcsMjgzMDgsMjgzMjAsMjgzMzcsMjgzNDUsMjgzNTgsMjgzNzAsMjgzNDksMjgzNTMsMjgzMTgsMjgzNjEsMjgzNDMsMjgzMzYsMjgzNjUsMjgzMjYsMjgzNjcsMjgzMzgsMjgzNTAsMjgzNTUsMjgzODAsMjgzNzYsMjgzMTMsMjgzMDYsMjgzMDIsMjgzMDEsMjgzMjQsMjgzMjEsMjgzNTEsMjgzMzksMjgzNjgsMjgzNjIsMjgzMTEsMjgzMzQsMjgzMjMsMjg5OTksMjkwMTIsMjkwMTAsMjkwMjcsMjkwMjQsMjg5OTMsMjkwMjEsMjkwMjYsMjkwNDIsMjkwNDgsMjkwMzQsMjkwMjUsMjg5OTQsMjkwMTYsMjg5OTUsMjkwMDMsMjkwNDAsMjkwMjMsMjkwMDgsMjkwMTEsMjg5OTYsMjkwMDUsMjkwMTgsMjkyNjMsMjkzMjUsMjkzMjQsMjkzMjksMjkzMjgsMjkzMjYsMjk1MDAsMjk1MDYsMjk0OTksMjk0OTgsMjk1MDQsMjk1MTQsMjk1MTMsMjk3NjQsMjk3NzAsMjk3NzEsMjk3NzgsMjk3NzcsMjk3ODMsMjk3NjAsMjk3NzUsMjk3NzYsMjk3NzQsMjk3NjIsMjk3NjYsMjk3NzMsMjk3ODAsMjk5MjEsMjk5NTEsMjk5NTAsMjk5NDksMjk5ODEsMzAwNzMsMzAwNzEsMjcwMTEsMzAxOTEsMzAyMjMsMzAyMTEsMzAxOTksMzAyMDYsMzAyMDQsMzAyMDEsMzAyMDAsMzAyMjQsMzAyMDMsMzAxOTgsMzAxODksMzAxOTcsMzAyMDUsMzAzNjEsMzAzODksMzA0MjksMzA1NDksMzA1NTksMzA1NjAsMzA1NDYsMzA1NTAsMzA1NTQsMzA1NjksMzA1NjcsMzA1NDgsMzA1NTMsMzA1NzMsMzA2ODgsMzA4NTUsMzA4NzQsMzA4NjgsMzA4NjMsMzA4NTIsMzA4NjksMzA4NTMsMzA4NTQsMzA4ODEsMzA4NTEsMzA4NDEsMzA4NzMsMzA4NDgsMzA4NzAsMzA4NDMsMzExMDAsMzExMDYsMzExMDEsMzEwOTcsMzEyNDksMzEyNTYsMzEyNTcsMzEyNTAsMzEyNTUsMzEyNTMsMzEyNjYsMzEyNTEsMzEyNTksMzEyNDgsMzEzOTUsMzEzOTQsMzEzOTAsMzE0NjcsMzE1OTAsMzE1ODgsMzE1OTcsMzE2MDQsMzE1OTMsMzE2MDIsMzE1ODksMzE2MDMsMzE2MDEsMzE2MDAsMzE1ODUsMzE2MDgsMzE2MDYsMzE1ODcsMzE5MjIsMzE5MjQsMzE5MTksMzIxMzYsMzIxMzQsMzIxMjgsMzIxNDEsMzIxMjcsMzIxMzMsMzIxMjIsMzIxNDIsMzIxMjMsMzIxMzEsMzIxMjQsMzIxNDAsMzIxNDgsMzIxMzIsMzIxMjUsMzIxNDYsMzI2MjEsMzI2MTksMzI2MTUsMzI2MTYsMzI2MjAsMzI2NzgsMzI2NzcsMzI2NzksMzI3MzEsMzI3MzIsMzI4MDEsMzMxMjQsMzMxMjAsMzMxNDMsMzMxMTYsMzMxMjksMzMxMTUsMzMxMjIsMzMxMzgsMjY0MDEsMzMxMTgsMzMxNDIsMzMxMjcsMzMxMzUsMzMwOTIsMzMxMjEsMzMzMDksMzMzNTMsMzMzNDgsMzMzNDQsMzMzNDYsMzMzNDksMzQwMzMsMzM4NTUsMzM4NzgsMzM5MTAsMzM5MTMsMzM5MzUsMzM5MzMsMzM4OTMsMzM4NzMsMzM4NTYsMzM5MjYsMzM4OTUsMzM4NDAsMzM4NjksMzM5MTcsMzM4ODIsMzM4ODEsMzM5MDgsMzM5MDcsMzM4ODUsMzQwNTUsMzM4ODYsMzM4NDcsMzM4NTAsMzM4NDQsMzM5MTQsMzM4NTksMzM5MTIsMzM4NDIsMzM4NjEsMzM4MzMsMzM3NTMsMzM4NjcsMzM4MzksMzM4NTgsMzM4MzcsMzM4ODcsMzM5MDQsMzM4NDksMzM4NzAsMzM4NjgsMzM4NzQsMzM5MDMsMzM5ODksMzM5MzQsMzM4NTEsMzM4NjMsMzM4NDYsMzM4NDMsMzM4OTYsMzM5MTgsMzM4NjAsMzM4MzUsMzM4ODgsMzM4NzYsMzM5MDIsMzM4NzIsMzQ1NzEsMzQ1NjQsMzQ1NTEsMzQ1NzIsMzQ1NTQsMzQ1MTgsMzQ1NDksMzQ2MzcsMzQ1NTIsMzQ1NzQsMzQ1NjksMzQ1NjEsMzQ1NTAsMzQ1NzMsMzQ1NjUsMzUwMzAsMzUwMTksMzUwMjEsMzUwMjIsMzUwMzgsMzUwMzUsMzUwMzQsMzUwMjAsMzUwMjQsMzUyMDUsMzUyMjcsMzUyOTUsMzUzMDEsMzUzMDAsMzUyOTcsMzUyOTYsMzUyOTgsMzUyOTIsMzUzMDIsMzU0NDYsMzU0NjIsMzU0NTUsMzU0MjUsMzUzOTEsMzU0NDcsMzU0NTgsMzU0NjAsMzU0NDUsMzU0NTksMzU0NTcsMzU0NDQsMzU0NTAsMzU5MDAsMzU5MTUsMzU5MTQsMzU5NDEsMzU5NDAsMzU5NDIsMzU5NzQsMzU5NzIsMzU5NzMsMzYwNDQsMzYyMDAsMzYyMDEsMzYyNDEsMzYyMzYsMzYyMzgsMzYyMzksMzYyMzcsMzYyNDMsMzYyNDQsMzYyNDAsMzYyNDIsMzYzMzYsMzYzMjAsMzYzMzIsMzYzMzcsMzYzMzQsMzYzMDQsMzYzMjksMzYzMjMsMzYzMjIsMzYzMjcsMzYzMzgsMzYzMzEsMzYzNDAsMzY2MTQsMzY2MDcsMzY2MDksMzY2MDgsMzY2MTMsMzY2MTUsMzY2MTYsMzY2MTAsMzY2MTksMzY5NDYsMzY5MjcsMzY5MzIsMzY5MzcsMzY5MjUsMzcxMzYsMzcxMzMsMzcxMzUsMzcxMzcsMzcxNDIsMzcxNDAsMzcxMzEsMzcxMzQsMzcyMzAsMzcyMzEsMzc0NDgsMzc0NTgsMzc0MjQsMzc0MzQsMzc0NzgsMzc0MjcsMzc0NzcsMzc0NzAsMzc1MDcsMzc0MjIsMzc0NTAsMzc0NDYsMzc0ODUsMzc0ODQsMzc0NTUsMzc0NzIsMzc0NzksMzc0ODcsMzc0MzAsMzc0NzMsMzc0ODgsMzc0MjUsMzc0NjAsMzc0NzUsMzc0NTYsMzc0OTAsMzc0NTQsMzc0NTksMzc0NTIsMzc0NjIsMzc0MjYsMzgzMDMsMzgzMDAsMzgzMDIsMzgyOTksMzg1NDYsMzg1NDcsMzg1NDUsMzg1NTEsMzg2MDYsMzg2NTAsMzg2NTMsMzg2NDgsMzg2NDUsMzg3NzEsMzg3NzUsMzg3NzYsMzg3NzAsMzg5MjcsMzg5MjUsMzg5MjYsMzkwODQsMzkxNTgsMzkxNjEsMzkzNDMsMzkzNDYsMzkzNDQsMzkzNDksMzk1OTcsMzk1OTUsMzk3NzEsNDAxNzAsNDAxNzMsNDAxNjcsNDA1NzYsNDA3MDEsMjA3MTAsMjA2OTIsMjA2OTUsMjA3MTIsMjA3MjMsMjA2OTksMjA3MTQsMjA3MDEsMjA3MDgsMjA2OTEsMjA3MTYsMjA3MjAsMjA3MTksMjA3MDcsMjA3MDQsMjA5NTIsMjExMjAsMjExMjEsMjEyMjUsMjEyMjcsMjEyOTYsMjE0MjAsMjIwNTUsMjIwMzcsMjIwMjgsMjIwMzQsMjIwMTIsMjIwMzEsMjIwNDQsMjIwMTcsMjIwMzUsMjIwMTgsMjIwMTAsMjIwNDUsMjIwMjAsMjIwMTUsMjIwMDksMjI2NjUsMjI2NTIsMjI2NzIsMjI2ODAsMjI2NjIsMjI2NTcsMjI2NTUsMjI2NDQsMjI2NjcsMjI2NTAsMjI2NjMsMjI2NzMsMjI2NzAsMjI2NDYsMjI2NTgsMjI2NjQsMjI2NTEsMjI2NzYsMjI2NzEsMjI3ODIsMjI4OTEsMjMyNjAsMjMyNzgsMjMyNjksMjMyNTMsMjMyNzQsMjMyNTgsMjMyNzcsMjMyNzUsMjMyODMsMjMyNjYsMjMyNjQsMjMyNTksMjMyNzYsMjMyNjIsMjMyNjEsMjMyNTcsMjMyNzIsMjMyNjMsMjM0MTUsMjM1MjAsMjM1MjMsMjM2NTEsMjM5MzgsMjM5MzYsMjM5MzMsMjM5NDIsMjM5MzAsMjM5MzcsMjM5MjcsMjM5NDYsMjM5NDUsMjM5NDQsMjM5MzQsMjM5MzIsMjM5NDksMjM5MjksMjM5MzUsMjQxNTIsMjQxNTMsMjQxNDcsMjQyODAsMjQyNzMsMjQyNzksMjQyNzAsMjQyODQsMjQyNzcsMjQyODEsMjQyNzQsMjQyNzYsMjQzODgsMjQzODcsMjQ0MzEsMjQ1MDIsMjQ4NzYsMjQ4NzIsMjQ4OTcsMjQ5MjYsMjQ5NDUsMjQ5NDcsMjQ5MTQsMjQ5MTUsMjQ5NDYsMjQ5NDAsMjQ5NjAsMjQ5NDgsMjQ5MTYsMjQ5NTQsMjQ5MjMsMjQ5MzMsMjQ4OTEsMjQ5MzgsMjQ5MjksMjQ5MTgsMjUxMjksMjUxMjcsMjUxMzEsMjU2NDMsMjU2NzcsMjU2OTEsMjU2OTMsMjU3MTYsMjU3MTgsMjU3MTQsMjU3MTUsMjU3MjUsMjU3MTcsMjU3MDIsMjU3NjYsMjU2NzgsMjU3MzAsMjU2OTQsMjU2OTIsMjU2NzUsMjU2ODMsMjU2OTYsMjU2ODAsMjU3MjcsMjU2NjMsMjU3MDgsMjU3MDcsMjU2ODksMjU3MDEsMjU3MTksMjU5NzEsMjYwMTYsMjYyNzMsMjYyNzIsMjYyNzEsMjYzNzMsMjYzNzIsMjY0MDIsMjcwNTcsMjcwNjIsMjcwODEsMjcwNDAsMjcwODYsMjcwMzAsMjcwNTYsMjcwNTIsMjcwNjgsMjcwMjUsMjcwMzMsMjcwMjIsMjcwNDcsMjcwMjEsMjcwNDksMjcwNzAsMjcwNTUsMjcwNzEsMjcwNzYsMjcwNjksMjcwNDQsMjcwOTIsMjcwNjUsMjcwODIsMjcwMzQsMjcwODcsMjcwNTksMjcwMjcsMjcwNTAsMjcwNDEsMjcwMzgsMjcwOTcsMjcwMzEsMjcwMjQsMjcwNzQsMjcwNjEsMjcwNDUsMjcwNzgsMjc0NjYsMjc0NjksMjc0NjcsMjc1NTAsMjc1NTEsMjc1NTIsMjc1ODcsMjc1ODgsMjc2NDYsMjgzNjYsMjg0MDUsMjg0MDEsMjg0MTksMjg0NTMsMjg0MDgsMjg0NzEsMjg0MTEsMjg0NjIsMjg0MjUsMjg0OTQsMjg0NDEsMjg0NDIsMjg0NTUsMjg0NDAsMjg0NzUsMjg0MzQsMjgzOTcsMjg0MjYsMjg0NzAsMjg1MzEsMjg0MDksMjgzOTgsMjg0NjEsMjg0ODAsMjg0NjQsMjg0NzYsMjg0NjksMjgzOTUsMjg0MjMsMjg0MzAsMjg0ODMsMjg0MjEsMjg0MTMsMjg0MDYsMjg0NzMsMjg0NDQsMjg0MTIsMjg0NzQsMjg0NDcsMjg0MjksMjg0NDYsMjg0MjQsMjg0NDksMjkwNjMsMjkwNzIsMjkwNjUsMjkwNTYsMjkwNjEsMjkwNTgsMjkwNzEsMjkwNTEsMjkwNjIsMjkwNTcsMjkwNzksMjkyNTIsMjkyNjcsMjkzMzUsMjkzMzMsMjkzMzEsMjk1MDcsMjk1MTcsMjk1MjEsMjk1MTYsMjk3OTQsMjk4MTEsMjk4MDksMjk4MTMsMjk4MTAsMjk3OTksMjk4MDYsMjk5NTIsMjk5NTQsMjk5NTUsMzAwNzcsMzAwOTYsMzAyMzAsMzAyMTYsMzAyMjAsMzAyMjksMzAyMjUsMzAyMTgsMzAyMjgsMzAzOTIsMzA1OTMsMzA1ODgsMzA1OTcsMzA1OTQsMzA1NzQsMzA1OTIsMzA1NzUsMzA1OTAsMzA1OTUsMzA4OTgsMzA4OTAsMzA5MDAsMzA4OTMsMzA4ODgsMzA4NDYsMzA4OTEsMzA4NzgsMzA4ODUsMzA4ODAsMzA4OTIsMzA4ODIsMzA4ODQsMzExMjgsMzExMTQsMzExMTUsMzExMjYsMzExMjUsMzExMjQsMzExMjMsMzExMjcsMzExMTIsMzExMjIsMzExMjAsMzEyNzUsMzEzMDYsMzEyODAsMzEyNzksMzEyNzIsMzEyNzAsMzE0MDAsMzE0MDMsMzE0MDQsMzE0NzAsMzE2MjQsMzE2NDQsMzE2MjYsMzE2MzMsMzE2MzIsMzE2MzgsMzE2MjksMzE2MjgsMzE2NDMsMzE2MzAsMzE2MjEsMzE2NDAsMjExMjQsMzE2NDEsMzE2NTIsMzE2MTgsMzE5MzEsMzE5MzUsMzE5MzIsMzE5MzAsMzIxNjcsMzIxODMsMzIxOTQsMzIxNjMsMzIxNzAsMzIxOTMsMzIxOTIsMzIxOTcsMzIxNTcsMzIyMDYsMzIxOTYsMzIxOTgsMzIyMDMsMzIyMDQsMzIxNzUsMzIxODUsMzIxNTAsMzIxODgsMzIxNTksMzIxNjYsMzIxNzQsMzIxNjksMzIxNjEsMzIyMDEsMzI2MjcsMzI3MzgsMzI3MzksMzI3NDEsMzI3MzQsMzI4MDQsMzI4NjEsMzI4NjAsMzMxNjEsMzMxNTgsMzMxNTUsMzMxNTksMzMxNjUsMzMxNjQsMzMxNjMsMzMzMDEsMzM5NDMsMzM5NTYsMzM5NTMsMzM5NTEsMzM5NzgsMzM5OTgsMzM5ODYsMzM5NjQsMzM5NjYsMzM5NjMsMzM5NzcsMzM5NzIsMzM5ODUsMzM5OTcsMzM5NjIsMzM5NDYsMzM5NjksMzQwMDAsMzM5NDksMzM5NTksMzM5NzksMzM5NTQsMzM5NDAsMzM5OTEsMzM5OTYsMzM5NDcsMzM5NjEsMzM5NjcsMzM5NjAsMzQwMDYsMzM5NDQsMzM5NzQsMzM5OTksMzM5NTIsMzQwMDcsMzQwMDQsMzQwMDIsMzQwMTEsMzM5NjgsMzM5MzcsMzQ0MDEsMzQ2MTEsMzQ1OTUsMzQ2MDAsMzQ2NjcsMzQ2MjQsMzQ2MDYsMzQ1OTAsMzQ1OTMsMzQ1ODUsMzQ1ODcsMzQ2MjcsMzQ2MDQsMzQ2MjUsMzQ2MjIsMzQ2MzAsMzQ1OTIsMzQ2MTAsMzQ2MDIsMzQ2MDUsMzQ2MjAsMzQ1NzgsMzQ2MTgsMzQ2MDksMzQ2MTMsMzQ2MjYsMzQ1OTgsMzQ1OTksMzQ2MTYsMzQ1OTYsMzQ1ODYsMzQ2MDgsMzQ1NzcsMzUwNjMsMzUwNDcsMzUwNTcsMzUwNTgsMzUwNjYsMzUwNzAsMzUwNTQsMzUwNjgsMzUwNjIsMzUwNjcsMzUwNTYsMzUwNTIsMzUwNTEsMzUyMjksMzUyMzMsMzUyMzEsMzUyMzAsMzUzMDUsMzUzMDcsMzUzMDQsMzU0OTksMzU0ODEsMzU0NjcsMzU0NzQsMzU0NzEsMzU0NzgsMzU5MDEsMzU5NDQsMzU5NDUsMzYwNTMsMzYwNDcsMzYwNTUsMzYyNDYsMzYzNjEsMzYzNTQsMzYzNTEsMzYzNjUsMzYzNDksMzYzNjIsMzYzNTUsMzYzNTksMzYzNTgsMzYzNTcsMzYzNTAsMzYzNTIsMzYzNTYsMzY2MjQsMzY2MjUsMzY2MjIsMzY2MjEsMzcxNTUsMzcxNDgsMzcxNTIsMzcxNTQsMzcxNTEsMzcxNDksMzcxNDYsMzcxNTYsMzcxNTMsMzcxNDcsMzcyNDIsMzcyMzQsMzcyNDEsMzcyMzUsMzc1NDEsMzc1NDAsMzc0OTQsMzc1MzEsMzc0OTgsMzc1MzYsMzc1MjQsMzc1NDYsMzc1MTcsMzc1NDIsMzc1MzAsMzc1NDcsMzc0OTcsMzc1MjcsMzc1MDMsMzc1MzksMzc2MTQsMzc1MTgsMzc1MDYsMzc1MjUsMzc1MzgsMzc1MDEsMzc1MTIsMzc1MzcsMzc1MTQsMzc1MTAsMzc1MTYsMzc1MjksMzc1NDMsMzc1MDIsMzc1MTEsMzc1NDUsMzc1MzMsMzc1MTUsMzc0MjEsMzg1NTgsMzg1NjEsMzg2NTUsMzg3NDQsMzg3ODEsMzg3NzgsMzg3ODIsMzg3ODcsMzg3ODQsMzg3ODYsMzg3NzksMzg3ODgsMzg3ODUsMzg3ODMsMzg4NjIsMzg4NjEsMzg5MzQsMzkwODUsMzkwODYsMzkxNzAsMzkxNjgsMzkxNzUsMzkzMjUsMzkzMjQsMzkzNjMsMzkzNTMsMzkzNTUsMzkzNTQsMzkzNjIsMzkzNTcsMzkzNjcsMzk2MDEsMzk2NTEsMzk2NTUsMzk3NDIsMzk3NDMsMzk3NzYsMzk3NzcsMzk3NzUsNDAxNzcsNDAxNzgsNDAxODEsNDA2MTUsMjA3MzUsMjA3MzksMjA3ODQsMjA3MjgsMjA3NDIsMjA3NDMsMjA3MjYsMjA3MzQsMjA3NDcsMjA3NDgsMjA3MzMsMjA3NDYsMjExMzEsMjExMzIsMjEyMzMsMjEyMzEsMjIwODgsMjIwODIsMjIwOTIsMjIwNjksMjIwODEsMjIwOTAsMjIwODksMjIwODYsMjIxMDQsMjIxMDYsMjIwODAsMjIwNjcsMjIwNzcsMjIwNjAsMjIwNzgsMjIwNzIsMjIwNTgsMjIwNzQsMjIyOTgsMjI2OTksMjI2ODUsMjI3MDUsMjI2ODgsMjI2OTEsMjI3MDMsMjI3MDAsMjI2OTMsMjI2ODksMjI3ODMsMjMyOTUsMjMyODQsMjMyOTMsMjMyODcsMjMyODYsMjMyOTksMjMyODgsMjMyOTgsMjMyODksMjMyOTcsMjMzMDMsMjMzMDEsMjMzMTEsMjM2NTUsMjM5NjEsMjM5NTksMjM5NjcsMjM5NTQsMjM5NzAsMjM5NTUsMjM5NTcsMjM5NjgsMjM5NjQsMjM5NjksMjM5NjIsMjM5NjYsMjQxNjksMjQxNTcsMjQxNjAsMjQxNTYsMzIyNDMsMjQyODMsMjQyODYsMjQyODksMjQzOTMsMjQ0OTgsMjQ5NzEsMjQ5NjMsMjQ5NTMsMjUwMDksMjUwMDgsMjQ5OTQsMjQ5NjksMjQ5ODcsMjQ5NzksMjUwMDcsMjUwMDUsMjQ5OTEsMjQ5NzgsMjUwMDIsMjQ5OTMsMjQ5NzMsMjQ5MzQsMjUwMTEsMjUxMzMsMjU3MTAsMjU3MTIsMjU3NTAsMjU3NjAsMjU3MzMsMjU3NTEsMjU3NTYsMjU3NDMsMjU3MzksMjU3MzgsMjU3NDAsMjU3NjMsMjU3NTksMjU3MDQsMjU3NzcsMjU3NTIsMjU5NzQsMjU5NzgsMjU5NzcsMjU5NzksMjYwMzQsMjYwMzUsMjYyOTMsMjYyODgsMjYyODEsMjYyOTAsMjYyOTUsMjYyODIsMjYyODcsMjcxMzYsMjcxNDIsMjcxNTksMjcxMDksMjcxMjgsMjcxNTcsMjcxMjEsMjcxMDgsMjcxNjgsMjcxMzUsMjcxMTYsMjcxMDYsMjcxNjMsMjcxNjUsMjcxMzQsMjcxNzUsMjcxMjIsMjcxMTgsMjcxNTYsMjcxMjcsMjcxMTEsMjcyMDAsMjcxNDQsMjcxMTAsMjcxMzEsMjcxNDksMjcxMzIsMjcxMTUsMjcxNDUsMjcxNDAsMjcxNjAsMjcxNzMsMjcxNTEsMjcxMjYsMjcxNzQsMjcxNDMsMjcxMjQsMjcxNTgsMjc0NzMsMjc1NTcsMjc1NTUsMjc1NTQsMjc1NTgsMjc2NDksMjc2NDgsMjc2NDcsMjc2NTAsMjg0ODEsMjg0NTQsMjg1NDIsMjg1NTEsMjg2MTQsMjg1NjIsMjg1NTcsMjg1NTMsMjg1NTYsMjg1MTQsMjg0OTUsMjg1NDksMjg1MDYsMjg1NjYsMjg1MzQsMjg1MjQsMjg1NDYsMjg1MDEsMjg1MzAsMjg0OTgsMjg0OTYsMjg1MDMsMjg1NjQsMjg1NjMsMjg1MDksMjg0MTYsMjg1MTMsMjg1MjMsMjg1NDEsMjg1MTksMjg1NjAsMjg0OTksMjg1NTUsMjg1MjEsMjg1NDMsMjg1NjUsMjg1MTUsMjg1MzUsMjg1MjIsMjg1MzksMjkxMDYsMjkxMDMsMjkwODMsMjkxMDQsMjkwODgsMjkwODIsMjkwOTcsMjkxMDksMjkwODUsMjkwOTMsMjkwODYsMjkwOTIsMjkwODksMjkwOTgsMjkwODQsMjkwOTUsMjkxMDcsMjkzMzYsMjkzMzgsMjk1MjgsMjk1MjIsMjk1MzQsMjk1MzUsMjk1MzYsMjk1MzMsMjk1MzEsMjk1MzcsMjk1MzAsMjk1MjksMjk1MzgsMjk4MzEsMjk4MzMsMjk4MzQsMjk4MzAsMjk4MjUsMjk4MjEsMjk4MjksMjk4MzIsMjk4MjAsMjk4MTcsMjk5NjAsMjk5NTksMzAwNzgsMzAyNDUsMzAyMzgsMzAyMzMsMzAyMzcsMzAyMzYsMzAyNDMsMzAyMzQsMzAyNDgsMzAyMzUsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjMsMzA2MDUsMzA2MDcsMzA2MDEsMzA2MDAsMzA5MjUsMzA5MDcsMzA5MjcsMzA5MjQsMzA5MjksMzA5MjYsMzA5MzIsMzA5MjAsMzA5MTUsMzA5MTYsMzA5MjEsMzExMzAsMzExMzcsMzExMzYsMzExMzIsMzExMzgsMzExMzEsMjc1MTAsMzEyODksMzE0MTAsMzE0MTIsMzE0MTEsMzE2NzEsMzE2OTEsMzE2NzgsMzE2NjAsMzE2OTQsMzE2NjMsMzE2NzMsMzE2OTAsMzE2NjksMzE5NDEsMzE5NDQsMzE5NDgsMzE5NDcsMzIyNDcsMzIyMTksMzIyMzQsMzIyMzEsMzIyMTUsMzIyMjUsMzIyNTksMzIyNTAsMzIyMzAsMzIyNDYsMzIyNDEsMzIyNDAsMzIyMzgsMzIyMjMsMzI2MzAsMzI2ODQsMzI2ODgsMzI2ODUsMzI3NDksMzI3NDcsMzI3NDYsMzI3NDgsMzI3NDIsMzI3NDQsMzI4NjgsMzI4NzEsMzMxODcsMzMxODMsMzMxODIsMzMxNzMsMzMxODYsMzMxNzcsMzMxNzUsMzMzMDIsMzMzNTksMzMzNjMsMzMzNjIsMzMzNjAsMzMzNTgsMzMzNjEsMzQwODQsMzQxMDcsMzQwNjMsMzQwNDgsMzQwODksMzQwNjIsMzQwNTcsMzQwNjEsMzQwNzksMzQwNTgsMzQwODcsMzQwNzYsMzQwNDMsMzQwOTEsMzQwNDIsMzQwNTYsMzQwNjAsMzQwMzYsMzQwOTAsMzQwMzQsMzQwNjksMzQwMzksMzQwMjcsMzQwMzUsMzQwNDQsMzQwNjYsMzQwMjYsMzQwMjUsMzQwNzAsMzQwNDYsMzQwODgsMzQwNzcsMzQwOTQsMzQwNTAsMzQwNDUsMzQwNzgsMzQwMzgsMzQwOTcsMzQwODYsMzQwMjMsMzQwMjQsMzQwMzIsMzQwMzEsMzQwNDEsMzQwNzIsMzQwODAsMzQwOTYsMzQwNTksMzQwNzMsMzQwOTUsMzQ0MDIsMzQ2NDYsMzQ2NTksMzQ2NjAsMzQ2NzksMzQ3ODUsMzQ2NzUsMzQ2NDgsMzQ2NDQsMzQ2NTEsMzQ2NDIsMzQ2NTcsMzQ2NTAsMzQ2NDEsMzQ2NTQsMzQ2NjksMzQ2NjYsMzQ2NDAsMzQ2MzgsMzQ2NTUsMzQ2NTMsMzQ2NzEsMzQ2NjgsMzQ2ODIsMzQ2NzAsMzQ2NTIsMzQ2NjEsMzQ2MzksMzQ2ODMsMzQ2NzcsMzQ2NTgsMzQ2NjMsMzQ2NjUsMzQ5MDYsMzUwNzcsMzUwODQsMzUwOTIsMzUwODMsMzUwOTUsMzUwOTYsMzUwOTcsMzUwNzgsMzUwOTQsMzUwODksMzUwODYsMzUwODEsMzUyMzQsMzUyMzYsMzUyMzUsMzUzMDksMzUzMTIsMzUzMDgsMzU1MzUsMzU1MjYsMzU1MTIsMzU1MzksMzU1MzcsMzU1NDAsMzU1NDEsMzU1MTUsMzU1NDMsMzU1MTgsMzU1MjAsMzU1MjUsMzU1NDQsMzU1MjMsMzU1MTQsMzU1MTcsMzU1NDUsMzU5MDIsMzU5MTcsMzU5ODMsMzYwNjksMzYwNjMsMzYwNTcsMzYwNzIsMzYwNTgsMzYwNjEsMzYwNzEsMzYyNTYsMzYyNTIsMzYyNTcsMzYyNTEsMzYzODQsMzYzODcsMzYzODksMzYzODgsMzYzOTgsMzYzNzMsMzYzNzksMzYzNzQsMzYzNjksMzYzNzcsMzYzOTAsMzYzOTEsMzYzNzIsMzYzNzAsMzYzNzYsMzYzNzEsMzYzODAsMzYzNzUsMzYzNzgsMzY2NTIsMzY2NDQsMzY2MzIsMzY2MzQsMzY2NDAsMzY2NDMsMzY2MzAsMzY2MzEsMzY5NzksMzY5NzYsMzY5NzUsMzY5NjcsMzY5NzEsMzcxNjcsMzcxNjMsMzcxNjEsMzcxNjIsMzcxNzAsMzcxNTgsMzcxNjYsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNDksMzcyNTAsMzcyNTIsMzcyNDgsMzc1ODQsMzc1NzEsMzc1NzIsMzc1NjgsMzc1OTMsMzc1NTgsMzc1ODMsMzc2MTcsMzc1OTksMzc1OTIsMzc2MDksMzc1OTEsMzc1OTcsMzc1ODAsMzc2MTUsMzc1NzAsMzc2MDgsMzc1NzgsMzc1NzYsMzc1ODIsMzc2MDYsMzc1ODEsMzc1ODksMzc1NzcsMzc2MDAsMzc1OTgsMzc2MDcsMzc1ODUsMzc1ODcsMzc1NTcsMzc2MDEsMzc1NzQsMzc1NTYsMzgyNjgsMzgzMTYsMzgzMTUsMzgzMTgsMzgzMjAsMzg1NjQsMzg1NjIsMzg2MTEsMzg2NjEsMzg2NjQsMzg2NTgsMzg3NDYsMzg3OTQsMzg3OTgsMzg3OTIsMzg4NjQsMzg4NjMsMzg5NDIsMzg5NDEsMzg5NTAsMzg5NTMsMzg5NTIsMzg5NDQsMzg5MzksMzg5NTEsMzkwOTAsMzkxNzYsMzkxNjIsMzkxODUsMzkxODgsMzkxOTAsMzkxOTEsMzkxODksMzkzODgsMzkzNzMsMzkzNzUsMzkzNzksMzkzODAsMzkzNzQsMzkzNjksMzkzODIsMzkzODQsMzkzNzEsMzkzODMsMzkzNzIsMzk2MDMsMzk2NjAsMzk2NTksMzk2NjcsMzk2NjYsMzk2NjUsMzk3NTAsMzk3NDcsMzk3ODMsMzk3OTYsMzk3OTMsMzk3ODIsMzk3OTgsMzk3OTcsMzk3OTIsMzk3ODQsMzk3ODAsMzk3ODgsNDAxODgsNDAxODYsNDAxODksNDAxOTEsNDAxODMsNDAxOTksNDAxOTIsNDAxODUsNDAxODcsNDAyMDAsNDAxOTcsNDAxOTYsNDA1NzksNDA2NTksNDA3MTksNDA3MjAsMjA3NjQsMjA3NTUsMjA3NTksMjA3NjIsMjA3NTMsMjA5NTgsMjEzMDAsMjE0NzMsMjIxMjgsMjIxMTIsMjIxMjYsMjIxMzEsMjIxMTgsMjIxMTUsMjIxMjUsMjIxMzAsMjIxMTAsMjIxMzUsMjIzMDAsMjIyOTksMjI3MjgsMjI3MTcsMjI3MjksMjI3MTksMjI3MTQsMjI3MjIsMjI3MTYsMjI3MjYsMjMzMTksMjMzMjEsMjMzMjMsMjMzMjksMjMzMTYsMjMzMTUsMjMzMTIsMjMzMTgsMjMzMzYsMjMzMjIsMjMzMjgsMjMzMjYsMjM1MzUsMjM5ODAsMjM5ODUsMjM5NzcsMjM5NzUsMjM5ODksMjM5ODQsMjM5ODIsMjM5NzgsMjM5NzYsMjM5ODYsMjM5ODEsMjM5ODMsMjM5ODgsMjQxNjcsMjQxNjgsMjQxNjYsMjQxNzUsMjQyOTcsMjQyOTUsMjQyOTQsMjQyOTYsMjQyOTMsMjQzOTUsMjQ1MDgsMjQ5ODksMjUwMDAsMjQ5ODIsMjUwMjksMjUwMTIsMjUwMzAsMjUwMjUsMjUwMzYsMjUwMTgsMjUwMjMsMjUwMTYsMjQ5NzIsMjU4MTUsMjU4MTQsMjU4MDgsMjU4MDcsMjU4MDEsMjU3ODksMjU3MzcsMjU3OTUsMjU4MTksMjU4NDMsMjU4MTcsMjU5MDcsMjU5ODMsMjU5ODAsMjYwMTgsMjYzMTIsMjYzMDIsMjYzMDQsMjYzMTQsMjYzMTUsMjYzMTksMjYzMDEsMjYyOTksMjYyOTgsMjYzMTYsMjY0MDMsMjcxODgsMjcyMzgsMjcyMDksMjcyMzksMjcxODYsMjcyNDAsMjcxOTgsMjcyMjksMjcyNDUsMjcyNTQsMjcyMjcsMjcyMTcsMjcxNzYsMjcyMjYsMjcxOTUsMjcxOTksMjcyMDEsMjcyNDIsMjcyMzYsMjcyMTYsMjcyMTUsMjcyMjAsMjcyNDcsMjcyNDEsMjcyMzIsMjcxOTYsMjcyMzAsMjcyMjIsMjcyMjEsMjcyMTMsMjcyMTQsMjcyMDYsMjc0NzcsMjc0NzYsMjc0NzgsMjc1NTksMjc1NjIsMjc1NjMsMjc1OTIsMjc1OTEsMjc2NTIsMjc2NTEsMjc2NTQsMjg1ODksMjg2MTksMjg1NzksMjg2MTUsMjg2MDQsMjg2MjIsMjg2MTYsMjg1MTAsMjg2MTIsMjg2MDUsMjg1NzQsMjg2MTgsMjg1ODQsMjg2NzYsMjg1ODEsMjg1OTAsMjg2MDIsMjg1ODgsMjg1ODYsMjg2MjMsMjg2MDcsMjg2MDAsMjg1NzgsMjg2MTcsMjg1ODcsMjg2MjEsMjg1OTEsMjg1OTQsMjg1OTIsMjkxMjUsMjkxMjIsMjkxMTksMjkxMTIsMjkxNDIsMjkxMjAsMjkxMjEsMjkxMzEsMjkxNDAsMjkxMzAsMjkxMjcsMjkxMzUsMjkxMTcsMjkxNDQsMjkxMTYsMjkxMjYsMjkxNDYsMjkxNDcsMjkzNDEsMjkzNDIsMjk1NDUsMjk1NDIsMjk1NDMsMjk1NDgsMjk1NDEsMjk1NDcsMjk1NDYsMjk4MjMsMjk4NTAsMjk4NTYsMjk4NDQsMjk4NDIsMjk4NDUsMjk4NTcsMjk5NjMsMzAwODAsMzAyNTUsMzAyNTMsMzAyNTcsMzAyNjksMzAyNTksMzAyNjgsMzAyNjEsMzAyNTgsMzAyNTYsMzAzOTUsMzA0MzgsMzA2MTgsMzA2MjEsMzA2MjUsMzA2MjAsMzA2MTksMzA2MjYsMzA2MjcsMzA2MTMsMzA2MTcsMzA2MTUsMzA5NDEsMzA5NTMsMzA5NDksMzA5NTQsMzA5NDIsMzA5NDcsMzA5MzksMzA5NDUsMzA5NDYsMzA5NTcsMzA5NDMsMzA5NDQsMzExNDAsMzEzMDAsMzEzMDQsMzEzMDMsMzE0MTQsMzE0MTYsMzE0MTMsMzE0MDksMzE0MTUsMzE3MTAsMzE3MTUsMzE3MTksMzE3MDksMzE3MDEsMzE3MTcsMzE3MDYsMzE3MjAsMzE3MzcsMzE3MDAsMzE3MjIsMzE3MTQsMzE3MDgsMzE3MjMsMzE3MDQsMzE3MTEsMzE5NTQsMzE5NTYsMzE5NTksMzE5NTIsMzE5NTMsMzIyNzQsMzIyODksMzIyNzksMzIyNjgsMzIyODcsMzIyODgsMzIyNzUsMzIyNzAsMzIyODQsMzIyNzcsMzIyODIsMzIyOTAsMzIyNjcsMzIyNzEsMzIyNzgsMzIyNjksMzIyNzYsMzIyOTMsMzIyOTIsMzI1NzksMzI2MzUsMzI2MzYsMzI2MzQsMzI2ODksMzI3NTEsMzI4MTAsMzI4MDksMzI4NzYsMzMyMDEsMzMxOTAsMzMxOTgsMzMyMDksMzMyMDUsMzMxOTUsMzMyMDAsMzMxOTYsMzMyMDQsMzMyMDIsMzMyMDcsMzMxOTEsMzMyNjYsMzMzNjUsMzMzNjYsMzMzNjcsMzQxMzQsMzQxMTcsMzQxNTUsMzQxMjUsMzQxMzEsMzQxNDUsMzQxMzYsMzQxMTIsMzQxMTgsMzQxNDgsMzQxMTMsMzQxNDYsMzQxMTYsMzQxMjksMzQxMTksMzQxNDcsMzQxMTAsMzQxMzksMzQxNjEsMzQxMjYsMzQxNTgsMzQxNjUsMzQxMzMsMzQxNTEsMzQxNDQsMzQxODgsMzQxNTAsMzQxNDEsMzQxMzIsMzQxNDksMzQxNTYsMzQ0MDMsMzQ0MDUsMzQ0MDQsMzQ3MTUsMzQ3MDMsMzQ3MTEsMzQ3MDcsMzQ3MDYsMzQ2OTYsMzQ2ODksMzQ3MTAsMzQ3MTIsMzQ2ODEsMzQ2OTUsMzQ3MjMsMzQ2OTMsMzQ3MDQsMzQ3MDUsMzQ3MTcsMzQ2OTIsMzQ3MDgsMzQ3MTYsMzQ3MTQsMzQ2OTcsMzUxMDIsMzUxMTAsMzUxMjAsMzUxMTcsMzUxMTgsMzUxMTEsMzUxMjEsMzUxMDYsMzUxMTMsMzUxMDcsMzUxMTksMzUxMTYsMzUxMDMsMzUzMTMsMzU1NTIsMzU1NTQsMzU1NzAsMzU1NzIsMzU1NzMsMzU1NDksMzU2MDQsMzU1NTYsMzU1NTEsMzU1NjgsMzU1MjgsMzU1NTAsMzU1NTMsMzU1NjAsMzU1ODMsMzU1NjcsMzU1NzksMzU5ODUsMzU5ODYsMzU5ODQsMzYwODUsMzYwNzgsMzYwODEsMzYwODAsMzYwODMsMzYyMDQsMzYyMDYsMzYyNjEsMzYyNjMsMzY0MDMsMzY0MTQsMzY0MDgsMzY0MTYsMzY0MjEsMzY0MDYsMzY0MTIsMzY0MTMsMzY0MTcsMzY0MDAsMzY0MTUsMzY1NDEsMzY2NjIsMzY2NTQsMzY2NjEsMzY2NTgsMzY2NjUsMzY2NjMsMzY2NjAsMzY5ODIsMzY5ODUsMzY5ODcsMzY5OTgsMzcxMTQsMzcxNzEsMzcxNzMsMzcxNzQsMzcyNjcsMzcyNjQsMzcyNjUsMzcyNjEsMzcyNjMsMzc2NzEsMzc2NjIsMzc2NDAsMzc2NjMsMzc2MzgsMzc2NDcsMzc3NTQsMzc2ODgsMzc2OTIsMzc2NTksMzc2NjcsMzc2NTAsMzc2MzMsMzc3MDIsMzc2NzcsMzc2NDYsMzc2NDUsMzc1NzksMzc2NjEsMzc2MjYsMzc2NjksMzc2NTEsMzc2MjUsMzc2MjMsMzc2ODQsMzc2MzQsMzc2NjgsMzc2MzEsMzc2NzMsMzc2ODksMzc2ODUsMzc2NzQsMzc2NTIsMzc2NDQsMzc2NDMsMzc2MzAsMzc2NDEsMzc2MzIsMzc2MjcsMzc2NTQsMzgzMzIsMzgzNDksMzgzMzQsMzgzMjksMzgzMzAsMzgzMjYsMzgzMzUsMzgzMjUsMzgzMzMsMzg1NjksMzg2MTIsMzg2NjcsMzg2NzQsMzg2NzIsMzg4MDksMzg4MDcsMzg4MDQsMzg4OTYsMzg5MDQsMzg5NjUsMzg5NTksMzg5NjIsMzkyMDQsMzkxOTksMzkyMDcsMzkyMDksMzkzMjYsMzk0MDYsMzk0MDQsMzkzOTcsMzkzOTYsMzk0MDgsMzkzOTUsMzk0MDIsMzk0MDEsMzkzOTksMzk2MDksMzk2MTUsMzk2MDQsMzk2MTEsMzk2NzAsMzk2NzQsMzk2NzMsMzk2NzEsMzk3MzEsMzk4MDgsMzk4MTMsMzk4MTUsMzk4MDQsMzk4MDYsMzk4MDMsMzk4MTAsMzk4MjcsMzk4MjYsMzk4MjQsMzk4MDIsMzk4MjksMzk4MDUsMzk4MTYsNDAyMjksNDAyMTUsNDAyMjQsNDAyMjIsNDAyMTIsNDAyMzMsNDAyMjEsNDAyMTYsNDAyMjYsNDAyMDgsNDAyMTcsNDAyMjMsNDA1ODQsNDA1ODIsNDA1ODMsNDA2MjIsNDA2MjEsNDA2NjEsNDA2NjIsNDA2OTgsNDA3MjIsNDA3NjUsMjA3NzQsMjA3NzMsMjA3NzAsMjA3NzIsMjA3NjgsMjA3NzcsMjEyMzYsMjIxNjMsMjIxNTYsMjIxNTcsMjIxNTAsMjIxNDgsMjIxNDcsMjIxNDIsMjIxNDYsMjIxNDMsMjIxNDUsMjI3NDIsMjI3NDAsMjI3MzUsMjI3MzgsMjMzNDEsMjMzMzMsMjMzNDYsMjMzMzEsMjMzNDAsMjMzMzUsMjMzMzQsMjMzNDMsMjMzNDIsMjM0MTksMjM1MzcsMjM1MzgsMjM5OTEsMjQxNzIsMjQxNzAsMjQ1MTAsMjQ1MDcsMjUwMjcsMjUwMTMsMjUwMjAsMjUwNjMsMjUwNTYsMjUwNjEsMjUwNjAsMjUwNjQsMjUwNTQsMjU4MzksMjU4MzMsMjU4MjcsMjU4MzUsMjU4MjgsMjU4MzIsMjU5ODUsMjU5ODQsMjYwMzgsMjYwNzQsMjYzMjIsMjcyNzcsMjcyODYsMjcyNjUsMjczMDEsMjcyNzMsMjcyOTUsMjcyOTEsMjcyOTcsMjcyOTQsMjcyNzEsMjcyODMsMjcyNzgsMjcyODUsMjcyNjcsMjczMDQsMjczMDAsMjcyODEsMjcyNjMsMjczMDIsMjcyOTAsMjcyNjksMjcyNzYsMjcyODIsMjc0ODMsMjc1NjUsMjc2NTcsMjg2MjAsMjg1ODUsMjg2NjAsMjg2MjgsMjg2NDMsMjg2MzYsMjg2NTMsMjg2NDcsMjg2NDYsMjg2MzgsMjg2NTgsMjg2MzcsMjg2NDIsMjg2NDgsMjkxNTMsMjkxNjksMjkxNjAsMjkxNzAsMjkxNTYsMjkxNjgsMjkxNTQsMjk1NTUsMjk1NTAsMjk1NTEsMjk4NDcsMjk4NzQsMjk4NjcsMjk4NDAsMjk4NjYsMjk4NjksMjk4NzMsMjk4NjEsMjk4NzEsMjk5NjgsMjk5NjksMjk5NzAsMjk5NjcsMzAwODQsMzAyNzUsMzAyODAsMzAyODEsMzAyNzksMzAzNzIsMzA0NDEsMzA2NDUsMzA2MzUsMzA2NDIsMzA2NDcsMzA2NDYsMzA2NDQsMzA2NDEsMzA2MzIsMzA3MDQsMzA5NjMsMzA5NzMsMzA5NzgsMzA5NzEsMzA5NzIsMzA5NjIsMzA5ODEsMzA5NjksMzA5NzQsMzA5ODAsMzExNDcsMzExNDQsMzEzMjQsMzEzMjMsMzEzMTgsMzEzMjAsMzEzMTYsMzEzMjIsMzE0MjIsMzE0MjQsMzE0MjUsMzE3NDksMzE3NTksMzE3MzAsMzE3NDQsMzE3NDMsMzE3MzksMzE3NTgsMzE3MzIsMzE3NTUsMzE3MzEsMzE3NDYsMzE3NTMsMzE3NDcsMzE3NDUsMzE3MzYsMzE3NDEsMzE3NTAsMzE3MjgsMzE3MjksMzE3NjAsMzE3NTQsMzE5NzYsMzIzMDEsMzIzMTYsMzIzMjIsMzIzMDcsMzg5ODQsMzIzMTIsMzIyOTgsMzIzMjksMzIzMjAsMzIzMjcsMzIyOTcsMzIzMzIsMzIzMDQsMzIzMTUsMzIzMTAsMzIzMjQsMzIzMTQsMzI1ODEsMzI2MzksMzI2MzgsMzI2MzcsMzI3NTYsMzI3NTQsMzI4MTIsMzMyMTEsMzMyMjAsMzMyMjgsMzMyMjYsMzMyMjEsMzMyMjMsMzMyMTIsMzMyNTcsMzMzNzEsMzMzNzAsMzMzNzIsMzQxNzksMzQxNzYsMzQxOTEsMzQyMTUsMzQxOTcsMzQyMDgsMzQxODcsMzQyMTEsMzQxNzEsMzQyMTIsMzQyMDIsMzQyMDYsMzQxNjcsMzQxNzIsMzQxODUsMzQyMDksMzQxNzAsMzQxNjgsMzQxMzUsMzQxOTAsMzQxOTgsMzQxODIsMzQxODksMzQyMDEsMzQyMDUsMzQxNzcsMzQyMTAsMzQxNzgsMzQxODQsMzQxODEsMzQxNjksMzQxNjYsMzQyMDAsMzQxOTIsMzQyMDcsMzQ0MDgsMzQ3NTAsMzQ3MzAsMzQ3MzMsMzQ3NTcsMzQ3MzYsMzQ3MzIsMzQ3NDUsMzQ3NDEsMzQ3NDgsMzQ3MzQsMzQ3NjEsMzQ3NTUsMzQ3NTQsMzQ3NjQsMzQ3NDMsMzQ3MzUsMzQ3NTYsMzQ3NjIsMzQ3NDAsMzQ3NDIsMzQ3NTEsMzQ3NDQsMzQ3NDksMzQ3ODIsMzQ3MzgsMzUxMjUsMzUxMjMsMzUxMzIsMzUxMzQsMzUxMzcsMzUxNTQsMzUxMjcsMzUxMzgsMzUyNDUsMzUyNDcsMzUyNDYsMzUzMTQsMzUzMTUsMzU2MTQsMzU2MDgsMzU2MDYsMzU2MDEsMzU1ODksMzU1OTUsMzU2MTgsMzU1OTksMzU2MDIsMzU2MDUsMzU1OTEsMzU1OTcsMzU1OTIsMzU1OTAsMzU2MTIsMzU2MDMsMzU2MTAsMzU5MTksMzU5NTIsMzU5NTQsMzU5NTMsMzU5NTEsMzU5ODksMzU5ODgsMzYwODksMzYyMDcsMzY0MzAsMzY0MjksMzY0MzUsMzY0MzIsMzY0MjgsMzY0MjMsMzY2NzUsMzY2NzIsMzY5OTcsMzY5OTAsMzcxNzYsMzcyNzQsMzcyODIsMzcyNzUsMzcyNzMsMzcyNzksMzcyODEsMzcyNzcsMzcyODAsMzc3OTMsMzc3NjMsMzc4MDcsMzc3MzIsMzc3MTgsMzc3MDMsMzc3NTYsMzc3MjAsMzc3MjQsMzc3NTAsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MjgsMzc3NDEsMzc3NzUsMzc3MDgsMzc3MzgsMzc3NTMsMzc3MTksMzc3MTcsMzc3MTQsMzc3MTEsMzc3NDUsMzc3NTEsMzc3NTUsMzc3MjksMzc3MjYsMzc3MzEsMzc3MzUsMzc3NjAsMzc3MTAsMzc3MjEsMzgzNDMsMzgzMzYsMzgzNDUsMzgzMzksMzgzNDEsMzgzMjcsMzg1NzQsMzg1NzYsMzg1NzIsMzg2ODgsMzg2ODcsMzg2ODAsMzg2ODUsMzg2ODEsMzg4MTAsMzg4MTcsMzg4MTIsMzg4MTQsMzg4MTMsMzg4NjksMzg4NjgsMzg4OTcsMzg5NzcsMzg5ODAsMzg5ODYsMzg5ODUsMzg5ODEsMzg5NzksMzkyMDUsMzkyMTEsMzkyMTIsMzkyMTAsMzkyMTksMzkyMTgsMzkyMTUsMzkyMTMsMzkyMTcsMzkyMTYsMzkzMjAsMzkzMzEsMzkzMjksMzk0MjYsMzk0MTgsMzk0MTIsMzk0MTUsMzk0MTcsMzk0MTYsMzk0MTQsMzk0MTksMzk0MjEsMzk0MjIsMzk0MjAsMzk0MjcsMzk2MTQsMzk2NzgsMzk2NzcsMzk2ODEsMzk2NzYsMzk3NTIsMzk4MzQsMzk4NDgsMzk4MzgsMzk4MzUsMzk4NDYsMzk4NDEsMzk4NDUsMzk4NDQsMzk4MTQsMzk4NDIsMzk4NDAsMzk4NTUsNDAyNDMsNDAyNTcsNDAyOTUsNDAyNDYsNDAyMzgsNDAyMzksNDAyNDEsNDAyNDgsNDAyNDAsNDAyNjEsNDAyNTgsNDAyNTksNDAyNTQsNDAyNDcsNDAyNTYsNDAyNTMsMzI3NTcsNDAyMzcsNDA1ODYsNDA1ODUsNDA1ODksNDA2MjQsNDA2NDgsNDA2NjYsNDA2OTksNDA3MDMsNDA3NDAsNDA3MzksNDA3MzgsNDA3ODgsNDA4NjQsMjA3ODUsMjA3ODEsMjA3ODIsMjIxNjgsMjIxNzIsMjIxNjcsMjIxNzAsMjIxNzMsMjIxNjksMjI4OTYsMjMzNTYsMjM2NTcsMjM2NTgsMjQwMDAsMjQxNzMsMjQxNzQsMjUwNDgsMjUwNTUsMjUwNjksMjUwNzAsMjUwNzMsMjUwNjYsMjUwNzIsMjUwNjcsMjUwNDYsMjUwNjUsMjU4NTUsMjU4NjAsMjU4NTMsMjU4NDgsMjU4NTcsMjU4NTksMjU4NTIsMjYwMDQsMjYwNzUsMjYzMzAsMjYzMzEsMjYzMjgsMjczMzMsMjczMjEsMjczMjUsMjczNjEsMjczMzQsMjczMjIsMjczMTgsMjczMTksMjczMzUsMjczMTYsMjczMDksMjc0ODYsMjc1OTMsMjc2NTksMjg2NzksMjg2ODQsMjg2ODUsMjg2NzMsMjg2NzcsMjg2OTIsMjg2ODYsMjg2NzEsMjg2NzIsMjg2NjcsMjg3MTAsMjg2NjgsMjg2NjMsMjg2ODIsMjkxODUsMjkxODMsMjkxNzcsMjkxODcsMjkxODEsMjk1NTgsMjk4ODAsMjk4ODgsMjk4NzcsMjk4ODksMjk4ODYsMjk4NzgsMjk4ODMsMjk4OTAsMjk5NzIsMjk5NzEsMzAzMDAsMzAzMDgsMzAyOTcsMzAyODgsMzAyOTEsMzAyOTUsMzAyOTgsMzAzNzQsMzAzOTcsMzA0NDQsMzA2NTgsMzA2NTAsMzA5NzUsMzA5ODgsMzA5OTUsMzA5OTYsMzA5ODUsMzA5OTIsMzA5OTQsMzA5OTMsMzExNDksMzExNDgsMzEzMjcsMzE3NzIsMzE3ODUsMzE3NjksMzE3NzYsMzE3NzUsMzE3ODksMzE3NzMsMzE3ODIsMzE3ODQsMzE3NzgsMzE3ODEsMzE3OTIsMzIzNDgsMzIzMzYsMzIzNDIsMzIzNTUsMzIzNDQsMzIzNTQsMzIzNTEsMzIzMzcsMzIzNTIsMzIzNDMsMzIzMzksMzI2OTMsMzI2OTEsMzI3NTksMzI3NjAsMzI4ODUsMzMyMzMsMzMyMzQsMzMyMzIsMzMzNzUsMzMzNzQsMzQyMjgsMzQyNDYsMzQyNDAsMzQyNDMsMzQyNDIsMzQyMjcsMzQyMjksMzQyMzcsMzQyNDcsMzQyNDQsMzQyMzksMzQyNTEsMzQyNTQsMzQyNDgsMzQyNDUsMzQyMjUsMzQyMzAsMzQyNTgsMzQzNDAsMzQyMzIsMzQyMzEsMzQyMzgsMzQ0MDksMzQ3OTEsMzQ3OTAsMzQ3ODYsMzQ3NzksMzQ3OTUsMzQ3OTQsMzQ3ODksMzQ3ODMsMzQ4MDMsMzQ3ODgsMzQ3NzIsMzQ3ODAsMzQ3NzEsMzQ3OTcsMzQ3NzYsMzQ3ODcsMzQ3MjQsMzQ3NzUsMzQ3NzcsMzQ4MTcsMzQ4MDQsMzQ3OTIsMzQ3ODEsMzUxNTUsMzUxNDcsMzUxNTEsMzUxNDgsMzUxNDIsMzUxNTIsMzUxNTMsMzUxNDUsMzU2MjYsMzU2MjMsMzU2MTksMzU2MzUsMzU2MzIsMzU2MzcsMzU2NTUsMzU2MzEsMzU2NDQsMzU2NDYsMzU2MzMsMzU2MjEsMzU2MzksMzU2MjIsMzU2MzgsMzU2MzAsMzU2MjAsMzU2NDMsMzU2NDUsMzU2NDIsMzU5MDYsMzU5NTcsMzU5OTMsMzU5OTIsMzU5OTEsMzYwOTQsMzYxMDAsMzYwOTgsMzYwOTYsMzY0NDQsMzY0NTAsMzY0NDgsMzY0MzksMzY0MzgsMzY0NDYsMzY0NTMsMzY0NTUsMzY0NDMsMzY0NDIsMzY0NDksMzY0NDUsMzY0NTcsMzY0MzYsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODMsMzcxNjAsMzcxNzgsMzcxNzksMzcxODIsMzcyODgsMzcyODUsMzcyODcsMzcyOTUsMzcyOTAsMzc4MTMsMzc3NzIsMzc3NzgsMzc4MTUsMzc3ODcsMzc3ODksMzc3NjksMzc3OTksMzc3NzQsMzc4MDIsMzc3OTAsMzc3OTgsMzc3ODEsMzc3NjgsMzc3ODUsMzc3OTEsMzc3NzMsMzc4MDksMzc3NzcsMzc4MTAsMzc3OTYsMzc4MDAsMzc4MTIsMzc3OTUsMzc3OTcsMzgzNTQsMzgzNTUsMzgzNTMsMzg1NzksMzg2MTUsMzg2MTgsMjQwMDIsMzg2MjMsMzg2MTYsMzg2MjEsMzg2OTEsMzg2OTAsMzg2OTMsMzg4MjgsMzg4MzAsMzg4MjQsMzg4MjcsMzg4MjAsMzg4MjYsMzg4MTgsMzg4MjEsMzg4NzEsMzg4NzMsMzg4NzAsMzg4NzIsMzg5MDYsMzg5OTIsMzg5OTMsMzg5OTQsMzkwOTYsMzkyMzMsMzkyMjgsMzkyMjYsMzk0MzksMzk0MzUsMzk0MzMsMzk0MzcsMzk0MjgsMzk0NDEsMzk0MzQsMzk0MjksMzk0MzEsMzk0MzAsMzk2MTYsMzk2NDQsMzk2ODgsMzk2ODQsMzk2ODUsMzk3MjEsMzk3MzMsMzk3NTQsMzk3NTYsMzk3NTUsMzk4NzksMzk4NzgsMzk4NzUsMzk4NzEsMzk4NzMsMzk4NjEsMzk4NjQsMzk4OTEsMzk4NjIsMzk4NzYsMzk4NjUsMzk4NjksNDAyODQsNDAyNzUsNDAyNzEsNDAyNjYsNDAyODMsNDAyNjcsNDAyODEsNDAyNzgsNDAyNjgsNDAyNzksNDAyNzQsNDAyNzYsNDAyODcsNDAyODAsNDAyODIsNDA1OTAsNDA1ODgsNDA2NzEsNDA3MDUsNDA3MDQsNDA3MjYsNDA3NDEsNDA3NDcsNDA3NDYsNDA3NDUsNDA3NDQsNDA3ODAsNDA3ODksMjA3ODgsMjA3ODksMjExNDIsMjEyMzksMjE0MjgsMjIxODcsMjIxODksMjIxODIsMjIxODMsMjIxODYsMjIxODgsMjI3NDYsMjI3NDksMjI3NDcsMjI4MDIsMjMzNTcsMjMzNTgsMjMzNTksMjQwMDMsMjQxNzYsMjQ1MTEsMjUwODMsMjU4NjMsMjU4NzIsMjU4NjksMjU4NjUsMjU4NjgsMjU4NzAsMjU5ODgsMjYwNzgsMjYwNzcsMjYzMzQsMjczNjcsMjczNjAsMjczNDAsMjczNDUsMjczNTMsMjczMzksMjczNTksMjczNTYsMjczNDQsMjczNzEsMjczNDMsMjczNDEsMjczNTgsMjc0ODgsMjc1NjgsMjc2NjAsMjg2OTcsMjg3MTEsMjg3MDQsMjg2OTQsMjg3MTUsMjg3MDUsMjg3MDYsMjg3MDcsMjg3MTMsMjg2OTUsMjg3MDgsMjg3MDAsMjg3MTQsMjkxOTYsMjkxOTQsMjkxOTEsMjkxODYsMjkxODksMjkzNDksMjkzNTAsMjkzNDgsMjkzNDcsMjkzNDUsMjk4OTksMjk4OTMsMjk4NzksMjk4OTEsMjk5NzQsMzAzMDQsMzA2NjUsMzA2NjYsMzA2NjAsMzA3MDUsMzEwMDUsMzEwMDMsMzEwMDksMzEwMDQsMzA5OTksMzEwMDYsMzExNTIsMzEzMzUsMzEzMzYsMzE3OTUsMzE4MDQsMzE4MDEsMzE3ODgsMzE4MDMsMzE5ODAsMzE5NzgsMzIzNzQsMzIzNzMsMzIzNzYsMzIzNjgsMzIzNzUsMzIzNjcsMzIzNzgsMzIzNzAsMzIzNzIsMzIzNjAsMzI1ODcsMzI1ODYsMzI2NDMsMzI2NDYsMzI2OTUsMzI3NjUsMzI3NjYsMzI4ODgsMzMyMzksMzMyMzcsMzMzODAsMzMzNzcsMzMzNzksMzQyODMsMzQyODksMzQyODUsMzQyNjUsMzQyNzMsMzQyODAsMzQyNjYsMzQyNjMsMzQyODQsMzQyOTAsMzQyOTYsMzQyNjQsMzQyNzEsMzQyNzUsMzQyNjgsMzQyNTcsMzQyODgsMzQyNzgsMzQyODcsMzQyNzAsMzQyNzQsMzQ4MTYsMzQ4MTAsMzQ4MTksMzQ4MDYsMzQ4MDcsMzQ4MjUsMzQ4MjgsMzQ4MjcsMzQ4MjIsMzQ4MTIsMzQ4MjQsMzQ4MTUsMzQ4MjYsMzQ4MTgsMzUxNzAsMzUxNjIsMzUxNjMsMzUxNTksMzUxNjksMzUxNjQsMzUxNjAsMzUxNjUsMzUxNjEsMzUyMDgsMzUyNTUsMzUyNTQsMzUzMTgsMzU2NjQsMzU2NTYsMzU2NTgsMzU2NDgsMzU2NjcsMzU2NzAsMzU2NjgsMzU2NTksMzU2NjksMzU2NjUsMzU2NTAsMzU2NjYsMzU2NzEsMzU5MDcsMzU5NTksMzU5NTgsMzU5OTQsMzYxMDIsMzYxMDMsMzYxMDUsMzYyNjgsMzYyNjYsMzYyNjksMzYyNjcsMzY0NjEsMzY0NzIsMzY0NjcsMzY0NTgsMzY0NjMsMzY0NzUsMzY1NDYsMzY2OTAsMzY2ODksMzY2ODcsMzY2ODgsMzY2OTEsMzY3ODgsMzcxODQsMzcxODMsMzcyOTYsMzcyOTMsMzc4NTQsMzc4MzEsMzc4MzksMzc4MjYsMzc4NTAsMzc4NDAsMzc4ODEsMzc4NjgsMzc4MzYsMzc4NDksMzc4MDEsMzc4NjIsMzc4MzQsMzc4NDQsMzc4NzAsMzc4NTksMzc4NDUsMzc4MjgsMzc4MzgsMzc4MjQsMzc4NDIsMzc4NjMsMzgyNjksMzgzNjIsMzgzNjMsMzg2MjUsMzg2OTcsMzg2OTksMzg3MDAsMzg2OTYsMzg2OTQsMzg4MzUsMzg4MzksMzg4MzgsMzg4NzcsMzg4NzgsMzg4NzksMzkwMDQsMzkwMDEsMzkwMDUsMzg5OTksMzkxMDMsMzkxMDEsMzkwOTksMzkxMDIsMzkyNDAsMzkyMzksMzkyMzUsMzkzMzQsMzkzMzUsMzk0NTAsMzk0NDUsMzk0NjEsMzk0NTMsMzk0NjAsMzk0NTEsMzk0NTgsMzk0NTYsMzk0NjMsMzk0NTksMzk0NTQsMzk0NTIsMzk0NDQsMzk2MTgsMzk2OTEsMzk2OTAsMzk2OTQsMzk2OTIsMzk3MzUsMzk5MTQsMzk5MTUsMzk5MDQsMzk5MDIsMzk5MDgsMzk5MTAsMzk5MDYsMzk5MjAsMzk4OTIsMzk4OTUsMzk5MTYsMzk5MDAsMzk4OTcsMzk5MDksMzk4OTMsMzk5MDUsMzk4OTgsNDAzMTEsNDAzMjEsNDAzMzAsNDAzMjQsNDAzMjgsNDAzMDUsNDAzMjAsNDAzMTIsNDAzMjYsNDAzMzEsNDAzMzIsNDAzMTcsNDAyOTksNDAzMDgsNDAzMDksNDAzMDQsNDAyOTcsNDAzMjUsNDAzMDcsNDAzMTUsNDAzMjIsNDAzMDMsNDAzMTMsNDAzMTksNDAzMjcsNDAyOTYsNDA1OTYsNDA1OTMsNDA2NDAsNDA3MDAsNDA3NDksNDA3NjgsNDA3NjksNDA3ODEsNDA3OTAsNDA3OTEsNDA3OTIsMjEzMDMsMjIxOTQsMjIxOTcsMjIxOTUsMjI3NTUsMjMzNjUsMjQwMDYsMjQwMDcsMjQzMDIsMjQzMDMsMjQ1MTIsMjQ1MTMsMjUwODEsMjU4NzksMjU4NzgsMjU4NzcsMjU4NzUsMjYwNzksMjYzNDQsMjYzMzksMjYzNDAsMjczNzksMjczNzYsMjczNzAsMjczNjgsMjczODUsMjczNzcsMjczNzQsMjczNzUsMjg3MzIsMjg3MjUsMjg3MTksMjg3MjcsMjg3MjQsMjg3MjEsMjg3MzgsMjg3MjgsMjg3MzUsMjg3MzAsMjg3MjksMjg3MzYsMjg3MzEsMjg3MjMsMjg3MzcsMjkyMDMsMjkyMDQsMjkzNTIsMjk1NjUsMjk1NjQsMjk4ODIsMzAzNzksMzAzNzgsMzAzOTgsMzA0NDUsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NjksMzA3MDYsMzEwMTMsMzEwMTEsMzEwMTUsMzEwMTYsMzEwMTIsMzEwMTcsMzExNTQsMzEzNDIsMzEzNDAsMzEzNDEsMzE0NzksMzE4MTcsMzE4MTYsMzE4MTgsMzE4MTUsMzE4MTMsMzE5ODIsMzIzNzksMzIzODIsMzIzODUsMzIzODQsMzI2OTgsMzI3NjcsMzI4ODksMzMyNDMsMzMyNDEsMzMyOTEsMzMzODQsMzMzODUsMzQzMzgsMzQzMDMsMzQzMDUsMzQzMDIsMzQzMzEsMzQzMDQsMzQyOTQsMzQzMDgsMzQzMTMsMzQzMDksMzQzMTYsMzQzMDEsMzQ4NDEsMzQ4MzIsMzQ4MzMsMzQ4MzksMzQ4MzUsMzQ4MzgsMzUxNzEsMzUxNzQsMzUyNTcsMzUzMTksMzU2ODAsMzU2OTAsMzU2NzcsMzU2ODgsMzU2ODMsMzU2ODUsMzU2ODcsMzU2OTMsMzYyNzAsMzY0ODYsMzY0ODgsMzY0ODQsMzY2OTcsMzY2OTQsMzY2OTUsMzY2OTMsMzY2OTYsMzY2OTgsMzcwMDUsMzcxODcsMzcxODUsMzczMDMsMzczMDEsMzcyOTgsMzcyOTksMzc4OTksMzc5MDcsMzc4ODMsMzc5MjAsMzc5MDMsMzc5MDgsMzc4ODYsMzc5MDksMzc5MDQsMzc5MjgsMzc5MTMsMzc5MDEsMzc4NzcsMzc4ODgsMzc4NzksMzc4OTUsMzc5MDIsMzc5MTAsMzc5MDYsMzc4ODIsMzc4OTcsMzc4ODAsMzc4OTgsMzc4ODcsMzc4ODQsMzc5MDAsMzc4NzgsMzc5MDUsMzc4OTQsMzgzNjYsMzgzNjgsMzgzNjcsMzg3MDIsMzg3MDMsMzg4NDEsMzg4NDMsMzg5MDksMzg5MTAsMzkwMDgsMzkwMTAsMzkwMTEsMzkwMDcsMzkxMDUsMzkxMDYsMzkyNDgsMzkyNDYsMzkyNTcsMzkyNDQsMzkyNDMsMzkyNTEsMzk0NzQsMzk0NzYsMzk0NzMsMzk0NjgsMzk0NjYsMzk0NzgsMzk0NjUsMzk0NzAsMzk0ODAsMzk0NjksMzk2MjMsMzk2MjYsMzk2MjIsMzk2OTYsMzk2OTgsMzk2OTcsMzk5NDcsMzk5NDQsMzk5MjcsMzk5NDEsMzk5NTQsMzk5MjgsNDAwMDAsMzk5NDMsMzk5NTAsMzk5NDIsMzk5NTksMzk5NTYsMzk5NDUsNDAzNTEsNDAzNDUsNDAzNTYsNDAzNDksNDAzMzgsNDAzNDQsNDAzMzYsNDAzNDcsNDAzNTIsNDAzNDAsNDAzNDgsNDAzNjIsNDAzNDMsNDAzNTMsNDAzNDYsNDAzNTQsNDAzNjAsNDAzNTAsNDAzNTUsNDAzODMsNDAzNjEsNDAzNDIsNDAzNTgsNDAzNTksNDA2MDEsNDA2MDMsNDA2MDIsNDA2NzcsNDA2NzYsNDA2NzksNDA2NzgsNDA3NTIsNDA3NTAsNDA3OTUsNDA4MDAsNDA3OTgsNDA3OTcsNDA3OTMsNDA4NDksMjA3OTQsMjA3OTMsMjExNDQsMjExNDMsMjIyMTEsMjIyMDUsMjIyMDYsMjMzNjgsMjMzNjcsMjQwMTEsMjQwMTUsMjQzMDUsMjUwODUsMjU4ODMsMjczOTQsMjczODgsMjczOTUsMjczODQsMjczOTIsMjg3MzksMjg3NDAsMjg3NDYsMjg3NDQsMjg3NDUsMjg3NDEsMjg3NDIsMjkyMTMsMjkyMTAsMjkyMDksMjk1NjYsMjk5NzUsMzAzMTQsMzA2NzIsMzEwMjEsMzEwMjUsMzEwMjMsMzE4MjgsMzE4MjcsMzE5ODYsMzIzOTQsMzIzOTEsMzIzOTIsMzIzOTUsMzIzOTAsMzIzOTcsMzI1ODksMzI2OTksMzI4MTYsMzMyNDUsMzQzMjgsMzQzNDYsMzQzNDIsMzQzMzUsMzQzMzksMzQzMzIsMzQzMjksMzQzNDMsMzQzNTAsMzQzMzcsMzQzMzYsMzQzNDUsMzQzMzQsMzQzNDEsMzQ4NTcsMzQ4NDUsMzQ4NDMsMzQ4NDgsMzQ4NTIsMzQ4NDQsMzQ4NTksMzQ4OTAsMzUxODEsMzUxNzcsMzUxODIsMzUxNzksMzUzMjIsMzU3MDUsMzU3MDQsMzU2NTMsMzU3MDYsMzU3MDcsMzYxMTIsMzYxMTYsMzYyNzEsMzY0OTQsMzY0OTIsMzY3MDIsMzY2OTksMzY3MDEsMzcxOTAsMzcxODgsMzcxODksMzczMDUsMzc5NTEsMzc5NDcsMzc5NDIsMzc5MjksMzc5NDksMzc5NDgsMzc5MzYsMzc5NDUsMzc5MzAsMzc5NDMsMzc5MzIsMzc5NTIsMzc5MzcsMzgzNzMsMzgzNzIsMzgzNzEsMzg3MDksMzg3MTQsMzg4NDcsMzg4ODEsMzkwMTIsMzkxMTMsMzkxMTAsMzkxMDQsMzkyNTYsMzkyNTQsMzk0ODEsMzk0ODUsMzk0OTQsMzk0OTIsMzk0OTAsMzk0ODksMzk0ODIsMzk0ODcsMzk2MjksMzk3MDEsMzk3MDMsMzk3MDQsMzk3MDIsMzk3MzgsMzk3NjIsMzk5NzksMzk5NjUsMzk5NjQsMzk5ODAsMzk5NzEsMzk5NzYsMzk5NzcsMzk5NzIsMzk5NjksNDAzNzUsNDAzNzQsNDAzODAsNDAzODUsNDAzOTEsNDAzOTQsNDAzOTksNDAzODIsNDAzODksNDAzODcsNDAzNzksNDAzNzMsNDAzOTgsNDAzNzcsNDAzNzgsNDAzNjQsNDAzOTIsNDAzNjksNDAzNjUsNDAzOTYsNDAzNzEsNDAzOTcsNDAzNzAsNDA1NzAsNDA2MDQsNDA2ODMsNDA2ODYsNDA2ODUsNDA3MzEsNDA3MjgsNDA3MzAsNDA3NTMsNDA3ODIsNDA4MDUsNDA4MDQsNDA4NTAsMjAxNTMsMjIyMTQsMjIyMTMsMjIyMTksMjI4OTcsMjMzNzEsMjMzNzIsMjQwMjEsMjQwMTcsMjQzMDYsMjU4ODksMjU4ODgsMjU4OTQsMjU4OTAsMjc0MDMsMjc0MDAsMjc0MDEsMjc2NjEsMjg3NTcsMjg3NTgsMjg3NTksMjg3NTQsMjkyMTQsMjkyMTUsMjkzNTMsMjk1NjcsMjk5MTIsMjk5MDksMjk5MTMsMjk5MTEsMzAzMTcsMzAzODEsMzEwMjksMzExNTYsMzEzNDQsMzEzNDUsMzE4MzEsMzE4MzYsMzE4MzMsMzE4MzUsMzE4MzQsMzE5ODgsMzE5ODUsMzI0MDEsMzI1OTEsMzI2NDcsMzMyNDYsMzMzODcsMzQzNTYsMzQzNTcsMzQzNTUsMzQzNDgsMzQzNTQsMzQzNTgsMzQ4NjAsMzQ4NTYsMzQ4NTQsMzQ4NTgsMzQ4NTMsMzUxODUsMzUyNjMsMzUyNjIsMzUzMjMsMzU3MTAsMzU3MTYsMzU3MTQsMzU3MTgsMzU3MTcsMzU3MTEsMzYxMTcsMzY1MDEsMzY1MDAsMzY1MDYsMzY0OTgsMzY0OTYsMzY1MDIsMzY1MDMsMzY3MDQsMzY3MDYsMzcxOTEsMzc5NjQsMzc5NjgsMzc5NjIsMzc5NjMsMzc5NjcsMzc5NTksMzc5NTcsMzc5NjAsMzc5NjEsMzc5NTgsMzg3MTksMzg4ODMsMzkwMTgsMzkwMTcsMzkxMTUsMzkyNTIsMzkyNTksMzk1MDIsMzk1MDcsMzk1MDgsMzk1MDAsMzk1MDMsMzk0OTYsMzk0OTgsMzk0OTcsMzk1MDYsMzk1MDQsMzk2MzIsMzk3MDUsMzk3MjMsMzk3MzksMzk3NjYsMzk3NjUsNDAwMDYsNDAwMDgsMzk5OTksNDAwMDQsMzk5OTMsMzk5ODcsNDAwMDEsMzk5OTYsMzk5OTEsMzk5ODgsMzk5ODYsMzk5OTcsMzk5OTAsNDA0MTEsNDA0MDIsNDA0MTQsNDA0MTAsNDAzOTUsNDA0MDAsNDA0MTIsNDA0MDEsNDA0MTUsNDA0MjUsNDA0MDksNDA0MDgsNDA0MDYsNDA0MzcsNDA0MDUsNDA0MTMsNDA2MzAsNDA2ODgsNDA3NTcsNDA3NTUsNDA3NTQsNDA3NzAsNDA4MTEsNDA4NTMsNDA4NjYsMjA3OTcsMjExNDUsMjI3NjAsMjI3NTksMjI4OTgsMjMzNzMsMjQwMjQsMzQ4NjMsMjQzOTksMjUwODksMjUwOTEsMjUwOTIsMjU4OTcsMjU4OTMsMjYwMDYsMjYzNDcsMjc0MDksMjc0MTAsMjc0MDcsMjc1OTQsMjg3NjMsMjg3NjIsMjkyMTgsMjk1NzAsMjk1NjksMjk1NzEsMzAzMjAsMzA2NzYsMzE4NDcsMzE4NDYsMzI0MDUsMzMzODgsMzQzNjIsMzQzNjgsMzQzNjEsMzQzNjQsMzQzNTMsMzQzNjMsMzQzNjYsMzQ4NjQsMzQ4NjYsMzQ4NjIsMzQ4NjcsMzUxOTAsMzUxODgsMzUxODcsMzUzMjYsMzU3MjQsMzU3MjYsMzU3MjMsMzU3MjAsMzU5MDksMzYxMjEsMzY1MDQsMzY3MDgsMzY3MDcsMzczMDgsMzc5ODYsMzc5NzMsMzc5ODEsMzc5NzUsMzc5ODIsMzg4NTIsMzg4NTMsMzg5MTIsMzk1MTAsMzk1MTMsMzk3MTAsMzk3MTEsMzk3MTIsNDAwMTgsNDAwMjQsNDAwMTYsNDAwMTAsNDAwMTMsNDAwMTEsNDAwMjEsNDAwMjUsNDAwMTIsNDAwMTQsNDA0NDMsNDA0MzksNDA0MzEsNDA0MTksNDA0MjcsNDA0NDAsNDA0MjAsNDA0MzgsNDA0MTcsNDA0MzAsNDA0MjIsNDA0MzQsNDA0MzIsNDA0MTgsNDA0MjgsNDA0MzYsNDA0MzUsNDA0MjQsNDA0MjksNDA2NDIsNDA2NTYsNDA2OTAsNDA2OTEsNDA3MTAsNDA3MzIsNDA3NjAsNDA3NTksNDA3NTgsNDA3NzEsNDA3ODMsNDA4MTcsNDA4MTYsNDA4MTQsNDA4MTUsMjIyMjcsMjIyMjEsMjMzNzQsMjM2NjEsMjU5MDEsMjYzNDksMjYzNTAsMjc0MTEsMjg3NjcsMjg3NjksMjg3NjUsMjg3NjgsMjkyMTksMjk5MTUsMjk5MjUsMzA2NzcsMzEwMzIsMzExNTksMzExNTgsMzE4NTAsMzI0MDcsMzI2NDksMzMzODksMzQzNzEsMzQ4NzIsMzQ4NzEsMzQ4NjksMzQ4OTEsMzU3MzIsMzU3MzMsMzY1MTAsMzY1MTEsMzY1MTIsMzY1MDksMzczMTAsMzczMDksMzczMTQsMzc5OTUsMzc5OTIsMzc5OTMsMzg2MjksMzg3MjYsMzg3MjMsMzg3MjcsMzg4NTUsMzg4ODUsMzk1MTgsMzk2MzcsMzk3NjksNDAwMzUsNDAwMzksNDAwMzgsNDAwMzQsNDAwMzAsNDAwMzIsNDA0NTAsNDA0NDYsNDA0NTUsNDA0NTEsNDA0NTQsNDA0NTMsNDA0NDgsNDA0NDksNDA0NTcsNDA0NDcsNDA0NDUsNDA0NTIsNDA2MDgsNDA3MzQsNDA3NzQsNDA4MjAsNDA4MjEsNDA4MjIsMjIyMjgsMjU5MDIsMjYwNDAsMjc0MTYsMjc0MTcsMjc0MTUsMjc0MTgsMjg3NzAsMjkyMjIsMjkzNTQsMzA2ODAsMzA2ODEsMzEwMzMsMzE4NDksMzE4NTEsMzE5OTAsMzI0MTAsMzI0MDgsMzI0MTEsMzI0MDksMzMyNDgsMzMyNDksMzQzNzQsMzQzNzUsMzQzNzYsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTUsMzUzMjcsMzU3MzYsMzU3MzcsMzY1MTcsMzY1MTYsMzY1MTUsMzc5OTgsMzc5OTcsMzc5OTksMzgwMDEsMzgwMDMsMzg3MjksMzkwMjYsMzkyNjMsNDAwNDAsNDAwNDYsNDAwNDUsNDA0NTksNDA0NjEsNDA0NjQsNDA0NjMsNDA0NjYsNDA0NjUsNDA2MDksNDA2OTMsNDA3MTMsNDA3NzUsNDA4MjQsNDA4MjcsNDA4MjYsNDA4MjUsMjIzMDIsMjg3NzQsMzE4NTUsMzQ4NzYsMzYyNzQsMzY1MTgsMzczMTUsMzgwMDQsMzgwMDgsMzgwMDYsMzgwMDUsMzk1MjAsNDAwNTIsNDAwNTEsNDAwNDksNDAwNTMsNDA0NjgsNDA0NjcsNDA2OTQsNDA3MTQsNDA4NjgsMjg3NzYsMjg3NzMsMzE5OTEsMzQ0MTAsMzQ4NzgsMzQ4NzcsMzQ4NzksMzU3NDIsMzU5OTYsMzY1MjEsMzY1NTMsMzg3MzEsMzkwMjcsMzkwMjgsMzkxMTYsMzkyNjUsMzkzMzksMzk1MjQsMzk1MjYsMzk1MjcsMzk3MTYsNDA0NjksNDA0NzEsNDA3NzYsMjUwOTUsMjc0MjIsMjkyMjMsMzQzODAsMzY1MjAsMzgwMTgsMzgwMTYsMzgwMTcsMzk1MjksMzk1MjgsMzk3MjYsNDA0NzMsMjkyMjUsMzQzNzksMzU3NDMsMzgwMTksNDAwNTcsNDA2MzEsMzAzMjUsMzk1MzEsNDAwNTgsNDA0NzcsMjg3NzcsMjg3NzgsNDA2MTIsNDA4MzAsNDA3NzcsNDA4NTYsMzA4NDksMzc1NjEsMzUwMjMsMjI3MTUsMjQ2NTgsMzE5MTEsMjMyOTAsOTU1Niw5NTc0LDk1NTksOTU2OCw5NTgwLDk1NzEsOTU2Miw5NTc3LDk1NjUsOTU1NCw5NTcyLDk1NTcsOTU2Niw5NTc4LDk1NjksOTU2MCw5NTc1LDk1NjMsOTU1NSw5NTczLDk1NTgsOTU2Nyw5NTc5LDk1NzAsOTU2MSw5NTc2LDk1NjQsOTU1Myw5NTUyLDk1ODEsOTU4Miw5NTg0LDk1ODMsNjU1MTcsMTMyNDIzLDM3NTk1LDEzMjU3NSwxNDczOTcsMzQxMjQsMTcwNzcsMjk2NzksMjA5MTcsMTM4OTcsMTQ5ODI2LDE2NjM3MiwzNzcwMCwxMzc2OTEsMzM1MTgsMTQ2NjMyLDMwNzgwLDI2NDM2LDI1MzExLDE0OTgxMSwxNjYzMTQsMTMxNzQ0LDE1ODY0MywxMzU5NDEsMjAzOTUsMTQwNTI1LDIwNDg4LDE1OTAxNywxNjI0MzYsMTQ0ODk2LDE1MDE5MywxNDA1NjMsMjA1MjEsMTMxOTY2LDI0NDg0LDEzMTk2OCwxMzE5MTEsMjgzNzksMTMyMTI3LDIwNjA1LDIwNzM3LDEzNDM0LDIwNzUwLDM5MDIwLDE0MTQ3LDMzODE0LDE0OTkyNCwxMzIyMzEsMjA4MzIsMTQ0MzA4LDIwODQyLDEzNDE0MywxMzk1MTYsMTMxODEzLDE0MDU5MiwxMzI0OTQsMTQzOTIzLDEzNzYwMywyMzQyNiwzNDY4NSwxMzI1MzEsMTQ2NTg1LDIwOTE0LDIwOTIwLDQwMjQ0LDIwOTM3LDIwOTQzLDIwOTQ1LDE1NTgwLDIwOTQ3LDE1MDE4MiwyMDkxNSwyMDk2MiwyMTMxNCwyMDk3MywzMzc0MSwyNjk0MiwxNDUxOTcsMjQ0NDMsMjEwMDMsMjEwMzAsMjEwNTIsMjExNzMsMjEwNzksMjExNDAsMjExNzcsMjExODksMzE3NjUsMzQxMTQsMjEyMTYsMzQzMTcsMTU4NDgzLDIxMjUzLDE2NjYyMiwyMTgzMywyODM3NywxNDczMjgsMTMzNDYwLDE0NzQzNiwyMTI5OSwyMTMxNiwxMzQxMTQsMjc4NTEsMTM2OTk4LDI2NjUxLDI5NjUzLDI0NjUwLDE2MDQyLDE0NTQwLDEzNjkzNiwyOTE0OSwxNzU3MCwyMTM1NywyMTM2NCwxNjU1NDcsMjEzNzQsMjEzNzUsMTM2NTk4LDEzNjcyMywzMDY5NCwyMTM5NSwxNjY1NTUsMjE0MDgsMjE0MTksMjE0MjIsMjk2MDcsMTUzNDU4LDE2MjE3LDI5NTk2LDIxNDQxLDIxNDQ1LDI3NzIxLDIwMDQxLDIyNTI2LDIxNDY1LDE1MDE5LDEzNDAzMSwyMTQ3MiwxNDc0MzUsMTQyNzU1LDIxNDk0LDEzNDI2MywyMTUyMywyODc5MywyMTgwMywyNjE5OSwyNzk5NSwyMTYxMywxNTg1NDcsMTM0NTE2LDIxODUzLDIxNjQ3LDIxNjY4LDE4MzQyLDEzNjk3MywxMzQ4NzcsMTU3OTYsMTM0NDc3LDE2NjMzMiwxNDA5NTIsMjE4MzEsMTk2OTMsMjE1NTEsMjk3MTksMjE4OTQsMjE5MjksMjIwMjEsMTM3NDMxLDE0NzUxNCwxNzc0NiwxNDg1MzMsMjYyOTEsMTM1MzQ4LDIyMDcxLDI2MzE3LDE0NDAxMCwyNjI3NiwyNjI4NSwyMjA5MywyMjA5NSwzMDk2MSwyMjI1NywzODc5MSwyMTUwMiwyMjI3MiwyMjI1NSwyMjI1MywxNjY3NTgsMTM4NTksMTM1NzU5LDIyMzQyLDE0Nzg3NywyNzc1OCwyODgxMSwyMjMzOCwxNDAwMSwxNTg4NDYsMjI1MDIsMTM2MjE0LDIyNTMxLDEzNjI3NiwxNDgzMjMsMjI1NjYsMTUwNTE3LDIyNjIwLDIyNjk4LDEzNjY1LDIyNzUyLDIyNzQ4LDEzNTc0MCwyMjc3OSwyMzU1MSwyMjMzOSwxNzIzNjgsMTQ4MDg4LDM3ODQzLDEzNzI5LDIyODE1LDI2NzkwLDE0MDE5LDI4MjQ5LDEzNjc2NiwyMzA3NiwyMTg0MywxMzY4NTAsMzQwNTMsMjI5ODUsMTM0NDc4LDE1ODg0OSwxNTkwMTgsMTM3MTgwLDIzMDAxLDEzNzIxMSwxMzcxMzgsMTU5MTQyLDI4MDE3LDEzNzI1NiwxMzY5MTcsMjMwMzMsMTU5MzAxLDIzMjExLDIzMTM5LDE0MDU0LDE0OTkyOSwyMzE1OSwxNDA4OCwyMzE5MCwyOTc5NywyMzI1MSwxNTk2NDksMTQwNjI4LDE1NzQ5LDEzNzQ4OSwxNDEzMCwxMzY4ODgsMjQxOTUsMjEyMDAsMjM0MTQsMjU5OTIsMjM0MjAsMTYyMzE4LDE2Mzg4LDE4NTI1LDEzMTU4OCwyMzUwOSwyNDkyOCwxMzc3ODAsMTU0MDYwLDEzMjUxNywyMzUzOSwyMzQ1MywxOTcyOCwyMzU1NywxMzgwNTIsMjM1NzEsMjk2NDYsMjM1NzIsMTM4NDA1LDE1ODUwNCwyMzYyNSwxODY1MywyMzY4NSwyMzc4NSwyMzc5MSwyMzk0NywxMzg3NDUsMTM4ODA3LDIzODI0LDIzODMyLDIzODc4LDEzODkxNiwyMzczOCwyNDAyMywzMzUzMiwxNDM4MSwxNDk3NjEsMTM5MzM3LDEzOTYzNSwzMzQxNSwxNDM5MCwxNTI5OCwyNDExMCwyNzI3NCwyNDE4MSwyNDE4NiwxNDg2NjgsMTM0MzU1LDIxNDE0LDIwMTUxLDI0MjcyLDIxNDE2LDEzNzA3MywyNDA3MywyNDMwOCwxNjQ5OTQsMjQzMTMsMjQzMTUsMTQ0OTYsMjQzMTYsMjY2ODYsMzc5MTUsMjQzMzMsMTMxNTIxLDE5NDcwOCwxNTA3MCwxODYwNiwxMzU5OTQsMjQzNzgsMTU3ODMyLDE0MDI0MCwyNDQwOCwxNDA0MDEsMjQ0MTksMzg4NDUsMTU5MzQyLDI0NDM0LDM3Njk2LDE2NjQ1NCwyNDQ4NywyMzk5MCwxNTcxMSwxNTIxNDQsMTM5MTE0LDE1OTk5MiwxNDA5MDQsMzczMzQsMTMxNzQyLDE2NjQ0MSwyNDYyNSwyNjI0NSwxMzczMzUsMTQ2OTEsMTU4MTUsMTM4ODEsMjI0MTYsMTQxMjM2LDMxMDg5LDE1OTM2LDI0NzM0LDI0NzQwLDI0NzU1LDE0OTg5MCwxNDk5MDMsMTYyMzg3LDI5ODYwLDIwNzA1LDIzMjAwLDI0OTMyLDMzODI4LDI0ODk4LDE5NDcyNiwxNTk0NDIsMjQ5NjEsMjA5ODAsMTMyNjk0LDI0OTY3LDIzNDY2LDE0NzM4MywxNDE0MDcsMjUwNDMsMTY2ODEzLDE3MDMzMywyNTA0MCwxNDY0MiwxNDE2OTYsMTQxNTA1LDI0NjExLDI0OTI0LDI1ODg2LDI1NDgzLDEzMTM1MiwyNTI4NSwxMzcwNzIsMjUzMDEsMTQyODYxLDI1NDUyLDE0OTk4MywxNDg3MSwyNTY1NiwyNTU5MiwxMzYwNzgsMTM3MjEyLDI1NzQ0LDI4NTU0LDE0MjkwMiwzODkzMiwxNDc1OTYsMTUzMzczLDI1ODI1LDI1ODI5LDM4MDExLDE0OTUwLDI1NjU4LDE0OTM1LDI1OTMzLDI4NDM4LDE1MDA1NiwxNTAwNTEsMjU5ODksMjU5NjUsMjU5NTEsMTQzNDg2LDI2MDM3LDE0OTgyNCwxOTI1NSwyNjA2NSwxNjYwMCwxMzcyNTcsMjYwODAsMjYwODMsMjQ1NDMsMTQ0Mzg0LDI2MTM2LDE0Mzg2MywxNDM4NjQsMjYxODAsMTQzNzgwLDE0Mzc4MSwyNjE4NywxMzQ3NzMsMjYyMTUsMTUyMDM4LDI2MjI3LDI2MjI4LDEzODgxMywxNDM5MjEsMTY1MzY0LDE0MzgxNiwxNTIzMzksMzA2NjEsMTQxNTU5LDM5MzMyLDI2MzcwLDE0ODM4MCwxNTAwNDksMTUxNDcsMjcxMzAsMTQ1MzQ2LDI2NDYyLDI2NDcxLDI2NDY2LDE0NzkxNywxNjgxNzMsMjY1ODMsMTc2NDEsMjY2NTgsMjgyNDAsMzc0MzYsMjY2MjUsMTQ0MzU4LDE1OTEzNiwyNjcxNywxNDQ0OTUsMjcxMDUsMjcxNDcsMTY2NjIzLDI2OTk1LDI2ODE5LDE0NDg0NSwyNjg4MSwyNjg4MCwxNTY2NiwxNDg0OSwxNDQ5NTYsMTUyMzIsMjY1NDAsMjY5NzcsMTY2NDc0LDE3MTQ4LDI2OTM0LDI3MDMyLDE1MjY1LDEzMjA0MSwzMzYzNSwyMDYyNCwyNzEyOSwxNDQ5ODUsMTM5NTYyLDI3MjA1LDE0NTE1NSwyNzI5MywxNTM0NywyNjU0NSwyNzMzNiwxNjgzNDgsMTUzNzMsMjc0MjEsMTMzNDExLDI0Nzk4LDI3NDQ1LDI3NTA4LDE0MTI2MSwyODM0MSwxNDYxMzksMTMyMDIxLDEzNzU2MCwxNDE0NCwyMTUzNywxNDYyNjYsMjc2MTcsMTQ3MTk2LDI3NjEyLDI3NzAzLDE0MDQyNywxNDk3NDUsMTU4NTQ1LDI3NzM4LDMzMzE4LDI3NzY5LDE0Njg3NiwxNzYwNSwxNDY4NzcsMTQ3ODc2LDE0OTc3MiwxNDk3NjAsMTQ2NjMzLDE0MDUzLDE1NTk1LDEzNDQ1MCwzOTgxMSwxNDM4NjUsMTQwNDMzLDMyNjU1LDI2Njc5LDE1OTAxMywxNTkxMzcsMTU5MjExLDI4MDU0LDI3OTk2LDI4Mjg0LDI4NDIwLDE0OTg4NywxNDc1ODksMTU5MzQ2LDM0MDk5LDE1OTYwNCwyMDkzNSwyNzgwNCwyODE4OSwzMzgzOCwxNjY2ODksMjgyMDcsMTQ2OTkxLDI5Nzc5LDE0NzMzMCwzMTE4MCwyODIzOSwyMzE4NSwxNDM0MzUsMjg2NjQsMTQwOTMsMjg1NzMsMTQ2OTkyLDI4NDEwLDEzNjM0MywxNDc1MTcsMTc3NDksMzc4NzIsMjg0ODQsMjg1MDgsMTU2OTQsMjg1MzIsMTY4MzA0LDE1Njc1LDI4NTc1LDE0Nzc4MCwyODYyNywxNDc2MDEsMTQ3Nzk3LDE0NzUxMywxNDc0NDAsMTQ3MzgwLDE0Nzc3NSwyMDk1OSwxNDc3OTgsMTQ3Nzk5LDE0Nzc3NiwxNTYxMjUsMjg3NDcsMjg3OTgsMjg4MzksMjg4MDEsMjg4NzYsMjg4ODUsMjg4ODYsMjg4OTUsMTY2NDQsMTU4NDgsMjkxMDgsMjkwNzgsMTQ4MDg3LDI4OTcxLDI4OTk3LDIzMTc2LDI5MDAyLDI5MDM4LDIzNzA4LDE0ODMyNSwyOTAwNywzNzczMCwxNDgxNjEsMjg5NzIsMTQ4NTcwLDE1MDA1NSwxNTAwNTAsMjkxMTQsMTY2ODg4LDI4ODYxLDI5MTk4LDM3OTU0LDI5MjA1LDIyODAxLDM3OTU1LDI5MjIwLDM3Njk3LDE1MzA5MywyOTIzMCwyOTI0OCwxNDk4NzYsMjY4MTMsMjkyNjksMjkyNzEsMTU5NTcsMTQzNDI4LDI2NjM3LDI4NDc3LDI5MzE0LDI5NDgyLDI5NDgzLDE0OTUzOSwxNjU5MzEsMTg2NjksMTY1ODkyLDI5NDgwLDI5NDg2LDI5NjQ3LDI5NjEwLDEzNDIwMiwxNTgyNTQsMjk2NDEsMjk3NjksMTQ3OTM4LDEzNjkzNSwxNTAwNTIsMjYxNDcsMTQwMjEsMTQ5OTQzLDE0OTkwMSwxNTAwMTEsMjk2ODcsMjk3MTcsMjY4ODMsMTUwMDU0LDI5NzUzLDEzMjU0NywxNjA4NywyOTc4OCwxNDE0ODUsMjk3OTIsMTY3NjAyLDI5NzY3LDI5NjY4LDI5ODE0LDMzNzIxLDI5ODA0LDE0MTI4LDI5ODEyLDM3ODczLDI3MTgwLDI5ODI2LDE4NzcxLDE1MDE1NiwxNDc4MDcsMTUwMTM3LDE2Njc5OSwyMzM2NiwxNjY5MTUsMTM3Mzc0LDI5ODk2LDEzNzYwOCwyOTk2NiwyOTkyOSwyOTk4MiwxNjc2NDEsMTM3ODAzLDIzNTExLDE2NzU5NiwzNzc2NSwzMDAyOSwzMDAyNiwzMDA1NSwzMDA2MiwxNTE0MjYsMTYxMzIsMTUwODAzLDMwMDk0LDI5Nzg5LDMwMTEwLDMwMTMyLDMwMjEwLDMwMjUyLDMwMjg5LDMwMjg3LDMwMzE5LDMwMzI2LDE1NjY2MSwzMDM1MiwzMzI2MywxNDMyOCwxNTc5NjksMTU3OTY2LDMwMzY5LDMwMzczLDMwMzkxLDMwNDEyLDE1OTY0NywzMzg5MCwxNTE3MDksMTUxOTMzLDEzODc4MCwzMDQ5NCwzMDUwMiwzMDUyOCwyNTc3NSwxNTIwOTYsMzA1NTIsMTQ0MDQ0LDMwNjM5LDE2NjI0NCwxNjYyNDgsMTM2ODk3LDMwNzA4LDMwNzI5LDEzNjA1NCwxNTAwMzQsMjY4MjYsMzA4OTUsMzA5MTksMzA5MzEsMzg1NjUsMzEwMjIsMTUzMDU2LDMwOTM1LDMxMDI4LDMwODk3LDE2MTI5MiwzNjc5MiwzNDk0OCwxNjY2OTksMTU1Nzc5LDE0MDgyOCwzMTExMCwzNTA3MiwyNjg4MiwzMTEwNCwxNTM2ODcsMzExMzMsMTYyNjE3LDMxMDM2LDMxMTQ1LDI4MjAyLDE2MDAzOCwxNjA0MCwzMTE3NCwxNjgyMDUsMzExODhdLFxuICBcImV1Yy1rclwiOls0NDAzNCw0NDAzNSw0NDAzNyw0NDAzOCw0NDA0Myw0NDA0NCw0NDA0NSw0NDA0Niw0NDA0Nyw0NDA1Niw0NDA2Miw0NDA2Myw0NDA2NSw0NDA2Niw0NDA2Nyw0NDA2OSw0NDA3MCw0NDA3MSw0NDA3Miw0NDA3Myw0NDA3NCw0NDA3NSw0NDA3OCw0NDA4Miw0NDA4Myw0NDA4NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDA4NSw0NDA4Niw0NDA4Nyw0NDA5MCw0NDA5MSw0NDA5Myw0NDA5NCw0NDA5NSw0NDA5Nyw0NDA5OCw0NDA5OSw0NDEwMCw0NDEwMSw0NDEwMiw0NDEwMyw0NDEwNCw0NDEwNSw0NDEwNiw0NDEwOCw0NDExMCw0NDExMSw0NDExMiw0NDExMyw0NDExNCw0NDExNSw0NDExNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDExOCw0NDExOSw0NDEyMSw0NDEyMiw0NDEyMyw0NDEyNSw0NDEyNiw0NDEyNyw0NDEyOCw0NDEyOSw0NDEzMCw0NDEzMSw0NDEzMiw0NDEzMyw0NDEzNCw0NDEzNSw0NDEzNiw0NDEzNyw0NDEzOCw0NDEzOSw0NDE0MCw0NDE0MSw0NDE0Miw0NDE0Myw0NDE0Niw0NDE0Nyw0NDE0OSw0NDE1MCw0NDE1Myw0NDE1NSw0NDE1Niw0NDE1Nyw0NDE1OCw0NDE1OSw0NDE2Miw0NDE2Nyw0NDE2OCw0NDE3Myw0NDE3NCw0NDE3NSw0NDE3Nyw0NDE3OCw0NDE3OSw0NDE4MSw0NDE4Miw0NDE4Myw0NDE4NCw0NDE4NSw0NDE4Niw0NDE4Nyw0NDE5MCw0NDE5NCw0NDE5NSw0NDE5Niw0NDE5Nyw0NDE5OCw0NDE5OSw0NDIwMyw0NDIwNSw0NDIwNiw0NDIwOSw0NDIxMCw0NDIxMSw0NDIxMiw0NDIxMyw0NDIxNCw0NDIxNSw0NDIxOCw0NDIyMiw0NDIyMyw0NDIyNCw0NDIyNiw0NDIyNyw0NDIyOSw0NDIzMCw0NDIzMSw0NDIzMyw0NDIzNCw0NDIzNSw0NDIzNyw0NDIzOCw0NDIzOSw0NDI0MCw0NDI0MSw0NDI0Miw0NDI0Myw0NDI0NCw0NDI0Niw0NDI0OCw0NDI0OSw0NDI1MCw0NDI1MSw0NDI1Miw0NDI1Myw0NDI1NCw0NDI1NSw0NDI1OCw0NDI1OSw0NDI2MSw0NDI2Miw0NDI2NSw0NDI2Nyw0NDI2OSw0NDI3MCw0NDI3NCw0NDI3Niw0NDI3OSw0NDI4MCw0NDI4MSw0NDI4Miw0NDI4Myw0NDI4Niw0NDI4Nyw0NDI4OSw0NDI5MCw0NDI5MSw0NDI5Myw0NDI5NSw0NDI5Niw0NDI5Nyw0NDI5OCw0NDI5OSw0NDMwMiw0NDMwNCw0NDMwNiw0NDMwNyw0NDMwOCw0NDMwOSw0NDMxMCw0NDMxMSw0NDMxMyw0NDMxNCw0NDMxNSw0NDMxNyw0NDMxOCw0NDMxOSw0NDMyMSw0NDMyMiw0NDMyMyw0NDMyNCw0NDMyNSw0NDMyNiw0NDMyNyw0NDMyOCw0NDMzMCw0NDMzMSw0NDMzNCw0NDMzNSw0NDMzNiw0NDMzNyw0NDMzOCw0NDMzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDM0Miw0NDM0Myw0NDM0NSw0NDM0Niw0NDM0Nyw0NDM0OSw0NDM1MCw0NDM1MSw0NDM1Miw0NDM1Myw0NDM1NCw0NDM1NSw0NDM1OCw0NDM2MCw0NDM2Miw0NDM2Myw0NDM2NCw0NDM2NSw0NDM2Niw0NDM2Nyw0NDM2OSw0NDM3MCw0NDM3MSw0NDM3Myw0NDM3NCw0NDM3NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDM3Nyw0NDM3OCw0NDM3OSw0NDM4MCw0NDM4MSw0NDM4Miw0NDM4Myw0NDM4NCw0NDM4Niw0NDM4OCw0NDM4OSw0NDM5MCw0NDM5MSw0NDM5Miw0NDM5Myw0NDM5NCw0NDM5NSw0NDM5OCw0NDM5OSw0NDQwMSw0NDQwMiw0NDQwNyw0NDQwOCw0NDQwOSw0NDQxMCw0NDQxNCw0NDQxNiw0NDQxOSw0NDQyMCw0NDQyMSw0NDQyMiw0NDQyMyw0NDQyNiw0NDQyNyw0NDQyOSw0NDQzMCw0NDQzMSw0NDQzMyw0NDQzNCw0NDQzNSw0NDQzNiw0NDQzNyw0NDQzOCw0NDQzOSw0NDQ0MCw0NDQ0MSw0NDQ0Miw0NDQ0Myw0NDQ0Niw0NDQ0Nyw0NDQ0OCw0NDQ0OSw0NDQ1MCw0NDQ1MSw0NDQ1Myw0NDQ1NCw0NDQ1NSw0NDQ1Niw0NDQ1Nyw0NDQ1OCw0NDQ1OSw0NDQ2MCw0NDQ2MSw0NDQ2Miw0NDQ2Myw0NDQ2NCw0NDQ2NSw0NDQ2Niw0NDQ2Nyw0NDQ2OCw0NDQ2OSw0NDQ3MCw0NDQ3Miw0NDQ3Myw0NDQ3NCw0NDQ3NSw0NDQ3Niw0NDQ3Nyw0NDQ3OCw0NDQ3OSw0NDQ4Miw0NDQ4Myw0NDQ4NSw0NDQ4Niw0NDQ4Nyw0NDQ4OSw0NDQ5MCw0NDQ5MSw0NDQ5Miw0NDQ5Myw0NDQ5NCw0NDQ5NSw0NDQ5OCw0NDUwMCw0NDUwMSw0NDUwMiw0NDUwMyw0NDUwNCw0NDUwNSw0NDUwNiw0NDUwNyw0NDUwOSw0NDUxMCw0NDUxMSw0NDUxMyw0NDUxNCw0NDUxNSw0NDUxNyw0NDUxOCw0NDUxOSw0NDUyMCw0NDUyMSw0NDUyMiw0NDUyMyw0NDUyNCw0NDUyNSw0NDUyNiw0NDUyNyw0NDUyOCw0NDUyOSw0NDUzMCw0NDUzMSw0NDUzMiw0NDUzMyw0NDUzNCw0NDUzNSw0NDUzOCw0NDUzOSw0NDU0MSw0NDU0Miw0NDU0Niw0NDU0Nyw0NDU0OCw0NDU0OSw0NDU1MCw0NDU1MSw0NDU1NCw0NDU1Niw0NDU1OCw0NDU1OSw0NDU2MCw0NDU2MSw0NDU2Miw0NDU2Myw0NDU2NSw0NDU2Niw0NDU2Nyw0NDU2OCw0NDU2OSw0NDU3MCw0NDU3MSw0NDU3MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDU3Myw0NDU3NCw0NDU3NSw0NDU3Niw0NDU3Nyw0NDU3OCw0NDU3OSw0NDU4MCw0NDU4MSw0NDU4Miw0NDU4Myw0NDU4NCw0NDU4NSw0NDU4Niw0NDU4Nyw0NDU4OCw0NDU4OSw0NDU5MCw0NDU5MSw0NDU5NCw0NDU5NSw0NDU5Nyw0NDU5OCw0NDYwMSw0NDYwMyw0NDYwNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDYwNSw0NDYwNiw0NDYwNyw0NDYxMCw0NDYxMiw0NDYxNSw0NDYxNiw0NDYxNyw0NDYxOSw0NDYyMyw0NDYyNSw0NDYyNiw0NDYyNyw0NDYyOSw0NDYzMSw0NDYzMiw0NDYzMyw0NDYzNCw0NDYzNSw0NDYzOCw0NDY0Miw0NDY0Myw0NDY0NCw0NDY0Niw0NDY0Nyw0NDY1MCw0NDY1MSw0NDY1Myw0NDY1NCw0NDY1NSw0NDY1Nyw0NDY1OCw0NDY1OSw0NDY2MCw0NDY2MSw0NDY2Miw0NDY2Myw0NDY2Niw0NDY3MCw0NDY3MSw0NDY3Miw0NDY3Myw0NDY3NCw0NDY3NSw0NDY3OCw0NDY3OSw0NDY4MCw0NDY4MSw0NDY4Miw0NDY4Myw0NDY4NSw0NDY4Niw0NDY4Nyw0NDY4OCw0NDY4OSw0NDY5MCw0NDY5MSw0NDY5Miw0NDY5Myw0NDY5NCw0NDY5NSw0NDY5Niw0NDY5Nyw0NDY5OCw0NDY5OSw0NDcwMCw0NDcwMSw0NDcwMiw0NDcwMyw0NDcwNCw0NDcwNSw0NDcwNiw0NDcwNyw0NDcwOCw0NDcwOSw0NDcxMCw0NDcxMSw0NDcxMiw0NDcxMyw0NDcxNCw0NDcxNSw0NDcxNiw0NDcxNyw0NDcxOCw0NDcxOSw0NDcyMCw0NDcyMSw0NDcyMiw0NDcyMyw0NDcyNCw0NDcyNSw0NDcyNiw0NDcyNyw0NDcyOCw0NDcyOSw0NDczMCw0NDczMSw0NDczNSw0NDczNyw0NDczOCw0NDczOSw0NDc0MSw0NDc0Miw0NDc0Myw0NDc0NCw0NDc0NSw0NDc0Niw0NDc0Nyw0NDc1MCw0NDc1NCw0NDc1NSw0NDc1Niw0NDc1Nyw0NDc1OCw0NDc1OSw0NDc2Miw0NDc2Myw0NDc2NSw0NDc2Niw0NDc2Nyw0NDc2OCw0NDc2OSw0NDc3MCw0NDc3MSw0NDc3Miw0NDc3Myw0NDc3NCw0NDc3NSw0NDc3Nyw0NDc3OCw0NDc4MCw0NDc4Miw0NDc4Myw0NDc4NCw0NDc4NSw0NDc4Niw0NDc4Nyw0NDc4OSw0NDc5MCw0NDc5MSw0NDc5Myw0NDc5NCw0NDc5NSw0NDc5Nyw0NDc5OCw0NDc5OSw0NDgwMCw0NDgwMSw0NDgwMiw0NDgwMyw0NDgwNCw0NDgwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDgwNiw0NDgwOSw0NDgxMCw0NDgxMSw0NDgxMiw0NDgxNCw0NDgxNSw0NDgxNyw0NDgxOCw0NDgxOSw0NDgyMCw0NDgyMSw0NDgyMiw0NDgyMyw0NDgyNCw0NDgyNSw0NDgyNiw0NDgyNyw0NDgyOCw0NDgyOSw0NDgzMCw0NDgzMSw0NDgzMiw0NDgzMyw0NDgzNCw0NDgzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDgzNiw0NDgzNyw0NDgzOCw0NDgzOSw0NDg0MCw0NDg0MSw0NDg0Miw0NDg0Myw0NDg0Niw0NDg0Nyw0NDg0OSw0NDg1MSw0NDg1Myw0NDg1NCw0NDg1NSw0NDg1Niw0NDg1Nyw0NDg1OCw0NDg1OSw0NDg2Miw0NDg2NCw0NDg2OCw0NDg2OSw0NDg3MCw0NDg3MSw0NDg3NCw0NDg3NSw0NDg3Niw0NDg3Nyw0NDg3OCw0NDg3OSw0NDg4MSw0NDg4Miw0NDg4Myw0NDg4NCw0NDg4NSw0NDg4Niw0NDg4Nyw0NDg4OCw0NDg4OSw0NDg5MCw0NDg5MSw0NDg5NCw0NDg5NSw0NDg5Niw0NDg5Nyw0NDg5OCw0NDg5OSw0NDkwMiw0NDkwMyw0NDkwNCw0NDkwNSw0NDkwNiw0NDkwNyw0NDkwOCw0NDkwOSw0NDkxMCw0NDkxMSw0NDkxMiw0NDkxMyw0NDkxNCw0NDkxNSw0NDkxNiw0NDkxNyw0NDkxOCw0NDkxOSw0NDkyMCw0NDkyMiw0NDkyMyw0NDkyNCw0NDkyNSw0NDkyNiw0NDkyNyw0NDkyOSw0NDkzMCw0NDkzMSw0NDkzMyw0NDkzNCw0NDkzNSw0NDkzNyw0NDkzOCw0NDkzOSw0NDk0MCw0NDk0MSw0NDk0Miw0NDk0Myw0NDk0Niw0NDk0Nyw0NDk0OCw0NDk1MCw0NDk1MSw0NDk1Miw0NDk1Myw0NDk1NCw0NDk1NSw0NDk1Nyw0NDk1OCw0NDk1OSw0NDk2MCw0NDk2MSw0NDk2Miw0NDk2Myw0NDk2NCw0NDk2NSw0NDk2Niw0NDk2Nyw0NDk2OCw0NDk2OSw0NDk3MCw0NDk3MSw0NDk3Miw0NDk3Myw0NDk3NCw0NDk3NSw0NDk3Niw0NDk3Nyw0NDk3OCw0NDk3OSw0NDk4MCw0NDk4MSw0NDk4Miw0NDk4Myw0NDk4Niw0NDk4Nyw0NDk4OSw0NDk5MCw0NDk5MSw0NDk5Myw0NDk5NCw0NDk5NSw0NDk5Niw0NDk5Nyw0NDk5OCw0NTAwMiw0NTAwNCw0NTAwNyw0NTAwOCw0NTAwOSw0NTAxMCw0NTAxMSw0NTAxMyw0NTAxNCw0NTAxNSw0NTAxNiw0NTAxNyw0NTAxOCw0NTAxOSw0NTAyMSw0NTAyMiw0NTAyMyw0NTAyNCw0NTAyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTAyNiw0NTAyNyw0NTAyOCw0NTAyOSw0NTAzMCw0NTAzMSw0NTAzNCw0NTAzNSw0NTAzNiw0NTAzNyw0NTAzOCw0NTAzOSw0NTA0Miw0NTA0Myw0NTA0NSw0NTA0Niw0NTA0Nyw0NTA0OSw0NTA1MCw0NTA1MSw0NTA1Miw0NTA1Myw0NTA1NCw0NTA1NSw0NTA1OCw0NTA1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTA2MSw0NTA2Miw0NTA2Myw0NTA2NCw0NTA2NSw0NTA2Niw0NTA2Nyw0NTA2OSw0NTA3MCw0NTA3MSw0NTA3Myw0NTA3NCw0NTA3NSw0NTA3Nyw0NTA3OCw0NTA3OSw0NTA4MCw0NTA4MSw0NTA4Miw0NTA4Myw0NTA4Niw0NTA4Nyw0NTA4OCw0NTA4OSw0NTA5MCw0NTA5MSw0NTA5Miw0NTA5Myw0NTA5NCw0NTA5NSw0NTA5Nyw0NTA5OCw0NTA5OSw0NTEwMCw0NTEwMSw0NTEwMiw0NTEwMyw0NTEwNCw0NTEwNSw0NTEwNiw0NTEwNyw0NTEwOCw0NTEwOSw0NTExMCw0NTExMSw0NTExMiw0NTExMyw0NTExNCw0NTExNSw0NTExNiw0NTExNyw0NTExOCw0NTExOSw0NTEyMCw0NTEyMSw0NTEyMiw0NTEyMyw0NTEyNiw0NTEyNyw0NTEyOSw0NTEzMSw0NTEzMyw0NTEzNSw0NTEzNiw0NTEzNyw0NTEzOCw0NTE0Miw0NTE0NCw0NTE0Niw0NTE0Nyw0NTE0OCw0NTE1MCw0NTE1MSw0NTE1Miw0NTE1Myw0NTE1NCw0NTE1NSw0NTE1Niw0NTE1Nyw0NTE1OCw0NTE1OSw0NTE2MCw0NTE2MSw0NTE2Miw0NTE2Myw0NTE2NCw0NTE2NSw0NTE2Niw0NTE2Nyw0NTE2OCw0NTE2OSw0NTE3MCw0NTE3MSw0NTE3Miw0NTE3Myw0NTE3NCw0NTE3NSw0NTE3Niw0NTE3Nyw0NTE3OCw0NTE3OSw0NTE4Miw0NTE4Myw0NTE4NSw0NTE4Niw0NTE4Nyw0NTE4OSw0NTE5MCw0NTE5MSw0NTE5Miw0NTE5Myw0NTE5NCw0NTE5NSw0NTE5OCw0NTIwMCw0NTIwMiw0NTIwMyw0NTIwNCw0NTIwNSw0NTIwNiw0NTIwNyw0NTIxMSw0NTIxMyw0NTIxNCw0NTIxOSw0NTIyMCw0NTIyMSw0NTIyMiw0NTIyMyw0NTIyNiw0NTIzMiw0NTIzNCw0NTIzOCw0NTIzOSw0NTI0MSw0NTI0Miw0NTI0Myw0NTI0NSw0NTI0Niw0NTI0Nyw0NTI0OCw0NTI0OSw0NTI1MCw0NTI1MSw0NTI1NCw0NTI1OCw0NTI1OSw0NTI2MCw0NTI2MSw0NTI2Miw0NTI2Myw0NTI2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTI2Nyw0NTI2OSw0NTI3MCw0NTI3MSw0NTI3Myw0NTI3NCw0NTI3NSw0NTI3Niw0NTI3Nyw0NTI3OCw0NTI3OSw0NTI4MSw0NTI4Miw0NTI4Myw0NTI4NCw0NTI4Niw0NTI4Nyw0NTI4OCw0NTI4OSw0NTI5MCw0NTI5MSw0NTI5Miw0NTI5Myw0NTI5NCw0NTI5NSw0NTI5NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTI5Nyw0NTI5OCw0NTI5OSw0NTMwMCw0NTMwMSw0NTMwMiw0NTMwMyw0NTMwNCw0NTMwNSw0NTMwNiw0NTMwNyw0NTMwOCw0NTMwOSw0NTMxMCw0NTMxMSw0NTMxMiw0NTMxMyw0NTMxNCw0NTMxNSw0NTMxNiw0NTMxNyw0NTMxOCw0NTMxOSw0NTMyMiw0NTMyNSw0NTMyNiw0NTMyNyw0NTMyOSw0NTMzMiw0NTMzMyw0NTMzNCw0NTMzNSw0NTMzOCw0NTM0Miw0NTM0Myw0NTM0NCw0NTM0NSw0NTM0Niw0NTM1MCw0NTM1MSw0NTM1Myw0NTM1NCw0NTM1NSw0NTM1Nyw0NTM1OCw0NTM1OSw0NTM2MCw0NTM2MSw0NTM2Miw0NTM2Myw0NTM2Niw0NTM3MCw0NTM3MSw0NTM3Miw0NTM3Myw0NTM3NCw0NTM3NSw0NTM3OCw0NTM3OSw0NTM4MSw0NTM4Miw0NTM4Myw0NTM4NSw0NTM4Niw0NTM4Nyw0NTM4OCw0NTM4OSw0NTM5MCw0NTM5MSw0NTM5NCw0NTM5NSw0NTM5OCw0NTM5OSw0NTQwMSw0NTQwMiw0NTQwMyw0NTQwNSw0NTQwNiw0NTQwNyw0NTQwOSw0NTQxMCw0NTQxMSw0NTQxMiw0NTQxMyw0NTQxNCw0NTQxNSw0NTQxNiw0NTQxNyw0NTQxOCw0NTQxOSw0NTQyMCw0NTQyMSw0NTQyMiw0NTQyMyw0NTQyNCw0NTQyNSw0NTQyNiw0NTQyNyw0NTQyOCw0NTQyOSw0NTQzMCw0NTQzMSw0NTQzNCw0NTQzNSw0NTQzNyw0NTQzOCw0NTQzOSw0NTQ0MSw0NTQ0Myw0NTQ0NCw0NTQ0NSw0NTQ0Niw0NTQ0Nyw0NTQ1MCw0NTQ1Miw0NTQ1NCw0NTQ1NSw0NTQ1Niw0NTQ1Nyw0NTQ2MSw0NTQ2Miw0NTQ2Myw0NTQ2NSw0NTQ2Niw0NTQ2Nyw0NTQ2OSw0NTQ3MCw0NTQ3MSw0NTQ3Miw0NTQ3Myw0NTQ3NCw0NTQ3NSw0NTQ3Niw0NTQ3Nyw0NTQ3OCw0NTQ3OSw0NTQ4MSw0NTQ4Miw0NTQ4Myw0NTQ4NCw0NTQ4NSw0NTQ4Niw0NTQ4Nyw0NTQ4OCw0NTQ4OSw0NTQ5MCw0NTQ5MSw0NTQ5Miw0NTQ5Myw0NTQ5NCw0NTQ5NSw0NTQ5NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTQ5Nyw0NTQ5OCw0NTQ5OSw0NTUwMCw0NTUwMSw0NTUwMiw0NTUwMyw0NTUwNCw0NTUwNSw0NTUwNiw0NTUwNyw0NTUwOCw0NTUwOSw0NTUxMCw0NTUxMSw0NTUxMiw0NTUxMyw0NTUxNCw0NTUxNSw0NTUxNyw0NTUxOCw0NTUxOSw0NTUyMSw0NTUyMiw0NTUyMyw0NTUyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTUyNiw0NTUyNyw0NTUyOCw0NTUyOSw0NTUzMCw0NTUzMSw0NTUzNCw0NTUzNiw0NTUzNyw0NTUzOCw0NTUzOSw0NTU0MCw0NTU0MSw0NTU0Miw0NTU0Myw0NTU0Niw0NTU0Nyw0NTU0OSw0NTU1MCw0NTU1MSw0NTU1Myw0NTU1NCw0NTU1NSw0NTU1Niw0NTU1Nyw0NTU1OCw0NTU1OSw0NTU2MCw0NTU2Miw0NTU2NCw0NTU2Niw0NTU2Nyw0NTU2OCw0NTU2OSw0NTU3MCw0NTU3MSw0NTU3NCw0NTU3NSw0NTU3Nyw0NTU3OCw0NTU4MSw0NTU4Miw0NTU4Myw0NTU4NCw0NTU4NSw0NTU4Niw0NTU4Nyw0NTU5MCw0NTU5Miw0NTU5NCw0NTU5NSw0NTU5Niw0NTU5Nyw0NTU5OCw0NTU5OSw0NTYwMSw0NTYwMiw0NTYwMyw0NTYwNCw0NTYwNSw0NTYwNiw0NTYwNyw0NTYwOCw0NTYwOSw0NTYxMCw0NTYxMSw0NTYxMiw0NTYxMyw0NTYxNCw0NTYxNSw0NTYxNiw0NTYxNyw0NTYxOCw0NTYxOSw0NTYyMSw0NTYyMiw0NTYyMyw0NTYyNCw0NTYyNSw0NTYyNiw0NTYyNyw0NTYyOSw0NTYzMCw0NTYzMSw0NTYzMiw0NTYzMyw0NTYzNCw0NTYzNSw0NTYzNiw0NTYzNyw0NTYzOCw0NTYzOSw0NTY0MCw0NTY0MSw0NTY0Miw0NTY0Myw0NTY0NCw0NTY0NSw0NTY0Niw0NTY0Nyw0NTY0OCw0NTY0OSw0NTY1MCw0NTY1MSw0NTY1Miw0NTY1Myw0NTY1NCw0NTY1NSw0NTY1Nyw0NTY1OCw0NTY1OSw0NTY2MSw0NTY2Miw0NTY2Myw0NTY2NSw0NTY2Niw0NTY2Nyw0NTY2OCw0NTY2OSw0NTY3MCw0NTY3MSw0NTY3NCw0NTY3NSw0NTY3Niw0NTY3Nyw0NTY3OCw0NTY3OSw0NTY4MCw0NTY4MSw0NTY4Miw0NTY4Myw0NTY4Niw0NTY4Nyw0NTY4OCw0NTY4OSw0NTY5MCw0NTY5MSw0NTY5Myw0NTY5NCw0NTY5NSw0NTY5Niw0NTY5Nyw0NTY5OCw0NTY5OSw0NTcwMiw0NTcwMyw0NTcwNCw0NTcwNiw0NTcwNyw0NTcwOCw0NTcwOSw0NTcxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTcxMSw0NTcxNCw0NTcxNSw0NTcxNyw0NTcxOCw0NTcxOSw0NTcyMyw0NTcyNCw0NTcyNSw0NTcyNiw0NTcyNyw0NTczMCw0NTczMiw0NTczNSw0NTczNiw0NTczNyw0NTczOSw0NTc0MSw0NTc0Miw0NTc0Myw0NTc0NSw0NTc0Niw0NTc0Nyw0NTc0OSw0NTc1MCw0NTc1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTc1Miw0NTc1Myw0NTc1NCw0NTc1NSw0NTc1Niw0NTc1Nyw0NTc1OCw0NTc1OSw0NTc2MCw0NTc2MSw0NTc2Miw0NTc2Myw0NTc2NCw0NTc2NSw0NTc2Niw0NTc2Nyw0NTc3MCw0NTc3MSw0NTc3Myw0NTc3NCw0NTc3NSw0NTc3Nyw0NTc3OSw0NTc4MCw0NTc4MSw0NTc4Miw0NTc4Myw0NTc4Niw0NTc4OCw0NTc5MCw0NTc5MSw0NTc5Miw0NTc5Myw0NTc5NSw0NTc5OSw0NTgwMSw0NTgwMiw0NTgwOCw0NTgwOSw0NTgxMCw0NTgxNCw0NTgyMCw0NTgyMSw0NTgyMiw0NTgyNiw0NTgyNyw0NTgyOSw0NTgzMCw0NTgzMSw0NTgzMyw0NTgzNCw0NTgzNSw0NTgzNiw0NTgzNyw0NTgzOCw0NTgzOSw0NTg0Miw0NTg0Niw0NTg0Nyw0NTg0OCw0NTg0OSw0NTg1MCw0NTg1MSw0NTg1Myw0NTg1NCw0NTg1NSw0NTg1Niw0NTg1Nyw0NTg1OCw0NTg1OSw0NTg2MCw0NTg2MSw0NTg2Miw0NTg2Myw0NTg2NCw0NTg2NSw0NTg2Niw0NTg2Nyw0NTg2OCw0NTg2OSw0NTg3MCw0NTg3MSw0NTg3Miw0NTg3Myw0NTg3NCw0NTg3NSw0NTg3Niw0NTg3Nyw0NTg3OCw0NTg3OSw0NTg4MCw0NTg4MSw0NTg4Miw0NTg4Myw0NTg4NCw0NTg4NSw0NTg4Niw0NTg4Nyw0NTg4OCw0NTg4OSw0NTg5MCw0NTg5MSw0NTg5Miw0NTg5Myw0NTg5NCw0NTg5NSw0NTg5Niw0NTg5Nyw0NTg5OCw0NTg5OSw0NTkwMCw0NTkwMSw0NTkwMiw0NTkwMyw0NTkwNCw0NTkwNSw0NTkwNiw0NTkwNyw0NTkxMSw0NTkxMyw0NTkxNCw0NTkxNyw0NTkyMCw0NTkyMSw0NTkyMiw0NTkyMyw0NTkyNiw0NTkyOCw0NTkzMCw0NTkzMiw0NTkzMyw0NTkzNSw0NTkzOCw0NTkzOSw0NTk0MSw0NTk0Miw0NTk0Myw0NTk0NSw0NTk0Niw0NTk0Nyw0NTk0OCw0NTk0OSw0NTk1MCw0NTk1MSw0NTk1NCw0NTk1OCw0NTk1OSw0NTk2MCw0NTk2MSw0NTk2Miw0NTk2Myw0NTk2NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTk2Niw0NTk2Nyw0NTk2OSw0NTk3MCw0NTk3MSw0NTk3Myw0NTk3NCw0NTk3NSw0NTk3Niw0NTk3Nyw0NTk3OCw0NTk3OSw0NTk4MCw0NTk4MSw0NTk4Miw0NTk4Myw0NTk4Niw0NTk4Nyw0NTk4OCw0NTk4OSw0NTk5MCw0NTk5MSw0NTk5Myw0NTk5NCw0NTk5NSw0NTk5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTk5OCw0NTk5OSw0NjAwMCw0NjAwMSw0NjAwMiw0NjAwMyw0NjAwNCw0NjAwNSw0NjAwNiw0NjAwNyw0NjAwOCw0NjAwOSw0NjAxMCw0NjAxMSw0NjAxMiw0NjAxMyw0NjAxNCw0NjAxNSw0NjAxNiw0NjAxNyw0NjAxOCw0NjAxOSw0NjAyMiw0NjAyMyw0NjAyNSw0NjAyNiw0NjAyOSw0NjAzMSw0NjAzMyw0NjAzNCw0NjAzNSw0NjAzOCw0NjA0MCw0NjA0Miw0NjA0NCw0NjA0Niw0NjA0Nyw0NjA0OSw0NjA1MCw0NjA1MSw0NjA1Myw0NjA1NCw0NjA1NSw0NjA1Nyw0NjA1OCw0NjA1OSw0NjA2MCw0NjA2MSw0NjA2Miw0NjA2Myw0NjA2NCw0NjA2NSw0NjA2Niw0NjA2Nyw0NjA2OCw0NjA2OSw0NjA3MCw0NjA3MSw0NjA3Miw0NjA3Myw0NjA3NCw0NjA3NSw0NjA3Nyw0NjA3OCw0NjA3OSw0NjA4MCw0NjA4MSw0NjA4Miw0NjA4Myw0NjA4NCw0NjA4NSw0NjA4Niw0NjA4Nyw0NjA4OCw0NjA4OSw0NjA5MCw0NjA5MSw0NjA5Miw0NjA5Myw0NjA5NCw0NjA5NSw0NjA5Nyw0NjA5OCw0NjA5OSw0NjEwMCw0NjEwMSw0NjEwMiw0NjEwMyw0NjEwNSw0NjEwNiw0NjEwNyw0NjEwOSw0NjExMCw0NjExMSw0NjExMyw0NjExNCw0NjExNSw0NjExNiw0NjExNyw0NjExOCw0NjExOSw0NjEyMiw0NjEyNCw0NjEyNSw0NjEyNiw0NjEyNyw0NjEyOCw0NjEyOSw0NjEzMCw0NjEzMSw0NjEzMyw0NjEzNCw0NjEzNSw0NjEzNiw0NjEzNyw0NjEzOCw0NjEzOSw0NjE0MCw0NjE0MSw0NjE0Miw0NjE0Myw0NjE0NCw0NjE0NSw0NjE0Niw0NjE0Nyw0NjE0OCw0NjE0OSw0NjE1MCw0NjE1MSw0NjE1Miw0NjE1Myw0NjE1NCw0NjE1NSw0NjE1Niw0NjE1Nyw0NjE1OCw0NjE1OSw0NjE2Miw0NjE2Myw0NjE2NSw0NjE2Niw0NjE2Nyw0NjE2OSw0NjE3MCw0NjE3MSw0NjE3Miw0NjE3Myw0NjE3NCw0NjE3NSw0NjE3OCw0NjE4MCw0NjE4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjE4Myw0NjE4NCw0NjE4NSw0NjE4Niw0NjE4Nyw0NjE4OSw0NjE5MCw0NjE5MSw0NjE5Miw0NjE5Myw0NjE5NCw0NjE5NSw0NjE5Niw0NjE5Nyw0NjE5OCw0NjE5OSw0NjIwMCw0NjIwMSw0NjIwMiw0NjIwMyw0NjIwNCw0NjIwNSw0NjIwNiw0NjIwNyw0NjIwOSw0NjIxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjIxMSw0NjIxMiw0NjIxMyw0NjIxNCw0NjIxNSw0NjIxNyw0NjIxOCw0NjIxOSw0NjIyMCw0NjIyMSw0NjIyMiw0NjIyMyw0NjIyNCw0NjIyNSw0NjIyNiw0NjIyNyw0NjIyOCw0NjIyOSw0NjIzMCw0NjIzMSw0NjIzMiw0NjIzMyw0NjIzNCw0NjIzNSw0NjIzNiw0NjIzOCw0NjIzOSw0NjI0MCw0NjI0MSw0NjI0Miw0NjI0Myw0NjI0NSw0NjI0Niw0NjI0Nyw0NjI0OSw0NjI1MCw0NjI1MSw0NjI1Myw0NjI1NCw0NjI1NSw0NjI1Niw0NjI1Nyw0NjI1OCw0NjI1OSw0NjI2MCw0NjI2Miw0NjI2NCw0NjI2Niw0NjI2Nyw0NjI2OCw0NjI2OSw0NjI3MCw0NjI3MSw0NjI3Myw0NjI3NCw0NjI3NSw0NjI3Nyw0NjI3OCw0NjI3OSw0NjI4MSw0NjI4Miw0NjI4Myw0NjI4NCw0NjI4NSw0NjI4Niw0NjI4Nyw0NjI4OSw0NjI5MCw0NjI5MSw0NjI5Miw0NjI5NCw0NjI5NSw0NjI5Niw0NjI5Nyw0NjI5OCw0NjI5OSw0NjMwMiw0NjMwMyw0NjMwNSw0NjMwNiw0NjMwOSw0NjMxMSw0NjMxMiw0NjMxMyw0NjMxNCw0NjMxNSw0NjMxOCw0NjMyMCw0NjMyMiw0NjMyMyw0NjMyNCw0NjMyNSw0NjMyNiw0NjMyNyw0NjMyOSw0NjMzMCw0NjMzMSw0NjMzMiw0NjMzMyw0NjMzNCw0NjMzNSw0NjMzNiw0NjMzNyw0NjMzOCw0NjMzOSw0NjM0MCw0NjM0MSw0NjM0Miw0NjM0Myw0NjM0NCw0NjM0NSw0NjM0Niw0NjM0Nyw0NjM0OCw0NjM0OSw0NjM1MCw0NjM1MSw0NjM1Miw0NjM1Myw0NjM1NCw0NjM1NSw0NjM1OCw0NjM1OSw0NjM2MSw0NjM2Miw0NjM2NSw0NjM2Niw0NjM2Nyw0NjM2OCw0NjM2OSw0NjM3MCw0NjM3MSw0NjM3NCw0NjM3OSw0NjM4MCw0NjM4MSw0NjM4Miw0NjM4Myw0NjM4Niw0NjM4Nyw0NjM4OSw0NjM5MCw0NjM5MSw0NjM5Myw0NjM5NCw0NjM5NSw0NjM5Niw0NjM5Nyw0NjM5OCw0NjM5OSw0NjQwMiw0NjQwNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQwNyw0NjQwOCw0NjQwOSw0NjQxMCw0NjQxNCw0NjQxNSw0NjQxNyw0NjQxOCw0NjQxOSw0NjQyMSw0NjQyMiw0NjQyMyw0NjQyNCw0NjQyNSw0NjQyNiw0NjQyNyw0NjQzMCw0NjQzNCw0NjQzNSw0NjQzNiw0NjQzNyw0NjQzOCw0NjQzOSw0NjQ0MCw0NjQ0MSw0NjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQ0Myw0NjQ0NCw0NjQ0NSw0NjQ0Niw0NjQ0Nyw0NjQ0OCw0NjQ0OSw0NjQ1MCw0NjQ1MSw0NjQ1Miw0NjQ1Myw0NjQ1NCw0NjQ1NSw0NjQ1Niw0NjQ1Nyw0NjQ1OCw0NjQ1OSw0NjQ2MCw0NjQ2MSw0NjQ2Miw0NjQ2Myw0NjQ2NCw0NjQ2NSw0NjQ2Niw0NjQ2Nyw0NjQ2OCw0NjQ2OSw0NjQ3MCw0NjQ3MSw0NjQ3Miw0NjQ3Myw0NjQ3NCw0NjQ3NSw0NjQ3Niw0NjQ3Nyw0NjQ3OCw0NjQ3OSw0NjQ4MCw0NjQ4MSw0NjQ4Miw0NjQ4Myw0NjQ4NCw0NjQ4NSw0NjQ4Niw0NjQ4Nyw0NjQ4OCw0NjQ4OSw0NjQ5MCw0NjQ5MSw0NjQ5Miw0NjQ5Myw0NjQ5NCw0NjQ5NSw0NjQ5OCw0NjQ5OSw0NjUwMSw0NjUwMiw0NjUwMyw0NjUwNSw0NjUwOCw0NjUwOSw0NjUxMCw0NjUxMSw0NjUxNCw0NjUxOCw0NjUxOSw0NjUyMCw0NjUyMSw0NjUyMiw0NjUyNiw0NjUyNyw0NjUyOSw0NjUzMCw0NjUzMSw0NjUzMyw0NjUzNCw0NjUzNSw0NjUzNiw0NjUzNyw0NjUzOCw0NjUzOSw0NjU0Miw0NjU0Niw0NjU0Nyw0NjU0OCw0NjU0OSw0NjU1MCw0NjU1MSw0NjU1Myw0NjU1NCw0NjU1NSw0NjU1Niw0NjU1Nyw0NjU1OCw0NjU1OSw0NjU2MCw0NjU2MSw0NjU2Miw0NjU2Myw0NjU2NCw0NjU2NSw0NjU2Niw0NjU2Nyw0NjU2OCw0NjU2OSw0NjU3MCw0NjU3MSw0NjU3Myw0NjU3NCw0NjU3NSw0NjU3Niw0NjU3Nyw0NjU3OCw0NjU3OSw0NjU4MCw0NjU4MSw0NjU4Miw0NjU4Myw0NjU4NCw0NjU4NSw0NjU4Niw0NjU4Nyw0NjU4OCw0NjU4OSw0NjU5MCw0NjU5MSw0NjU5Miw0NjU5Myw0NjU5NCw0NjU5NSw0NjU5Niw0NjU5Nyw0NjU5OCw0NjU5OSw0NjYwMCw0NjYwMSw0NjYwMiw0NjYwMyw0NjYwNCw0NjYwNSw0NjYwNiw0NjYwNyw0NjYxMCw0NjYxMSw0NjYxMyw0NjYxNCw0NjYxNSw0NjYxNyw0NjYxOCw0NjYxOSw0NjYyMCw0NjYyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjYyMiw0NjYyMyw0NjYyNCw0NjYyNSw0NjYyNiw0NjYyNyw0NjYyOCw0NjYzMCw0NjYzMSw0NjYzMiw0NjYzMyw0NjYzNCw0NjYzNSw0NjYzNyw0NjYzOCw0NjYzOSw0NjY0MCw0NjY0MSw0NjY0Miw0NjY0Myw0NjY0NSw0NjY0Niw0NjY0Nyw0NjY0OCw0NjY0OSw0NjY1MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjY1MSw0NjY1Miw0NjY1Myw0NjY1NCw0NjY1NSw0NjY1Niw0NjY1Nyw0NjY1OCw0NjY1OSw0NjY2MCw0NjY2MSw0NjY2Miw0NjY2Myw0NjY2NSw0NjY2Niw0NjY2Nyw0NjY2OCw0NjY2OSw0NjY3MCw0NjY3MSw0NjY3Miw0NjY3Myw0NjY3NCw0NjY3NSw0NjY3Niw0NjY3Nyw0NjY3OCw0NjY3OSw0NjY4MCw0NjY4MSw0NjY4Miw0NjY4Myw0NjY4NCw0NjY4NSw0NjY4Niw0NjY4Nyw0NjY4OCw0NjY4OSw0NjY5MCw0NjY5MSw0NjY5Myw0NjY5NCw0NjY5NSw0NjY5Nyw0NjY5OCw0NjY5OSw0NjcwMCw0NjcwMSw0NjcwMiw0NjcwMyw0NjcwNCw0NjcwNSw0NjcwNiw0NjcwNyw0NjcwOCw0NjcwOSw0NjcxMCw0NjcxMSw0NjcxMiw0NjcxMyw0NjcxNCw0NjcxNSw0NjcxNiw0NjcxNyw0NjcxOCw0NjcxOSw0NjcyMCw0NjcyMSw0NjcyMiw0NjcyMyw0NjcyNCw0NjcyNSw0NjcyNiw0NjcyNyw0NjcyOCw0NjcyOSw0NjczMCw0NjczMSw0NjczMiw0NjczMyw0NjczNCw0NjczNSw0NjczNiw0NjczNyw0NjczOCw0NjczOSw0Njc0MCw0Njc0MSw0Njc0Miw0Njc0Myw0Njc0NCw0Njc0NSw0Njc0Niw0Njc0Nyw0Njc1MCw0Njc1MSw0Njc1Myw0Njc1NCw0Njc1NSw0Njc1Nyw0Njc1OCw0Njc1OSw0Njc2MCw0Njc2MSw0Njc2Miw0Njc2NSw0Njc2Niw0Njc2Nyw0Njc2OCw0Njc3MCw0Njc3MSw0Njc3Miw0Njc3Myw0Njc3NCw0Njc3NSw0Njc3Niw0Njc3Nyw0Njc3OCw0Njc3OSw0Njc4MCw0Njc4MSw0Njc4Miw0Njc4Myw0Njc4NCw0Njc4NSw0Njc4Niw0Njc4Nyw0Njc4OCw0Njc4OSw0Njc5MCw0Njc5MSw0Njc5Miw0Njc5Myw0Njc5NCw0Njc5NSw0Njc5Niw0Njc5Nyw0Njc5OCw0Njc5OSw0NjgwMCw0NjgwMSw0NjgwMiw0NjgwMyw0NjgwNSw0NjgwNiw0NjgwNyw0NjgwOCw0NjgwOSw0NjgxMCw0NjgxMSw0NjgxMiw0NjgxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjgxNCw0NjgxNSw0NjgxNiw0NjgxNyw0NjgxOCw0NjgxOSw0NjgyMCw0NjgyMSw0NjgyMiw0NjgyMyw0NjgyNCw0NjgyNSw0NjgyNiw0NjgyNyw0NjgyOCw0NjgyOSw0NjgzMCw0NjgzMSw0NjgzMyw0NjgzNCw0NjgzNSw0NjgzNyw0NjgzOCw0NjgzOSw0Njg0MSw0Njg0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Njg0Myw0Njg0NCw0Njg0NSw0Njg0Niw0Njg0Nyw0Njg1MCw0Njg1MSw0Njg1Miw0Njg1NCw0Njg1NSw0Njg1Niw0Njg1Nyw0Njg1OCw0Njg1OSw0Njg2MCw0Njg2MSw0Njg2Miw0Njg2Myw0Njg2NCw0Njg2NSw0Njg2Niw0Njg2Nyw0Njg2OCw0Njg2OSw0Njg3MCw0Njg3MSw0Njg3Miw0Njg3Myw0Njg3NCw0Njg3NSw0Njg3Niw0Njg3Nyw0Njg3OCw0Njg3OSw0Njg4MCw0Njg4MSw0Njg4Miw0Njg4Myw0Njg4NCw0Njg4NSw0Njg4Niw0Njg4Nyw0Njg5MCw0Njg5MSw0Njg5Myw0Njg5NCw0Njg5Nyw0Njg5OCw0Njg5OSw0NjkwMCw0NjkwMSw0NjkwMiw0NjkwMyw0NjkwNiw0NjkwOCw0NjkwOSw0NjkxMCw0NjkxMSw0NjkxMiw0NjkxMyw0NjkxNCw0NjkxNSw0NjkxNyw0NjkxOCw0NjkxOSw0NjkyMSw0NjkyMiw0NjkyMyw0NjkyNSw0NjkyNiw0NjkyNyw0NjkyOCw0NjkyOSw0NjkzMCw0NjkzMSw0NjkzNCw0NjkzNSw0NjkzNiw0NjkzNyw0NjkzOCw0NjkzOSw0Njk0MCw0Njk0MSw0Njk0Miw0Njk0Myw0Njk0NSw0Njk0Niw0Njk0Nyw0Njk0OSw0Njk1MCw0Njk1MSw0Njk1Myw0Njk1NCw0Njk1NSw0Njk1Niw0Njk1Nyw0Njk1OCw0Njk1OSw0Njk2Miw0Njk2NCw0Njk2Niw0Njk2Nyw0Njk2OCw0Njk2OSw0Njk3MCw0Njk3MSw0Njk3NCw0Njk3NSw0Njk3Nyw0Njk3OCw0Njk3OSw0Njk4MSw0Njk4Miw0Njk4Myw0Njk4NCw0Njk4NSw0Njk4Niw0Njk4Nyw0Njk5MCw0Njk5NSw0Njk5Niw0Njk5Nyw0NzAwMiw0NzAwMyw0NzAwNSw0NzAwNiw0NzAwNyw0NzAwOSw0NzAxMCw0NzAxMSw0NzAxMiw0NzAxMyw0NzAxNCw0NzAxNSw0NzAxOCw0NzAyMiw0NzAyMyw0NzAyNCw0NzAyNSw0NzAyNiw0NzAyNyw0NzAzMCw0NzAzMSw0NzAzMyw0NzAzNCw0NzAzNSw0NzAzNiw0NzAzNyw0NzAzOCw0NzAzOSw0NzA0MCw0NzA0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA0Miw0NzA0Myw0NzA0NCw0NzA0NSw0NzA0Niw0NzA0OCw0NzA1MCw0NzA1MSw0NzA1Miw0NzA1Myw0NzA1NCw0NzA1NSw0NzA1Niw0NzA1Nyw0NzA1OCw0NzA1OSw0NzA2MCw0NzA2MSw0NzA2Miw0NzA2Myw0NzA2NCw0NzA2NSw0NzA2Niw0NzA2Nyw0NzA2OCw0NzA2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA3MCw0NzA3MSw0NzA3Miw0NzA3Myw0NzA3NCw0NzA3NSw0NzA3Niw0NzA3Nyw0NzA3OCw0NzA3OSw0NzA4MCw0NzA4MSw0NzA4Miw0NzA4Myw0NzA4Niw0NzA4Nyw0NzA4OSw0NzA5MCw0NzA5MSw0NzA5Myw0NzA5NCw0NzA5NSw0NzA5Niw0NzA5Nyw0NzA5OCw0NzA5OSw0NzEwMiw0NzEwNiw0NzEwNyw0NzEwOCw0NzEwOSw0NzExMCw0NzExNCw0NzExNSw0NzExNyw0NzExOCw0NzExOSw0NzEyMSw0NzEyMiw0NzEyMyw0NzEyNCw0NzEyNSw0NzEyNiw0NzEyNyw0NzEzMCw0NzEzMiw0NzEzNCw0NzEzNSw0NzEzNiw0NzEzNyw0NzEzOCw0NzEzOSw0NzE0Miw0NzE0Myw0NzE0NSw0NzE0Niw0NzE0Nyw0NzE0OSw0NzE1MCw0NzE1MSw0NzE1Miw0NzE1Myw0NzE1NCw0NzE1NSw0NzE1OCw0NzE2Miw0NzE2Myw0NzE2NCw0NzE2NSw0NzE2Niw0NzE2Nyw0NzE2OSw0NzE3MCw0NzE3MSw0NzE3Myw0NzE3NCw0NzE3NSw0NzE3Niw0NzE3Nyw0NzE3OCw0NzE3OSw0NzE4MCw0NzE4MSw0NzE4Miw0NzE4Myw0NzE4NCw0NzE4Niw0NzE4OCw0NzE4OSw0NzE5MCw0NzE5MSw0NzE5Miw0NzE5Myw0NzE5NCw0NzE5NSw0NzE5OCw0NzE5OSw0NzIwMSw0NzIwMiw0NzIwMyw0NzIwNSw0NzIwNiw0NzIwNyw0NzIwOCw0NzIwOSw0NzIxMCw0NzIxMSw0NzIxNCw0NzIxNiw0NzIxOCw0NzIxOSw0NzIyMCw0NzIyMSw0NzIyMiw0NzIyMyw0NzIyNSw0NzIyNiw0NzIyNyw0NzIyOSw0NzIzMCw0NzIzMSw0NzIzMiw0NzIzMyw0NzIzNCw0NzIzNSw0NzIzNiw0NzIzNyw0NzIzOCw0NzIzOSw0NzI0MCw0NzI0MSw0NzI0Miw0NzI0Myw0NzI0NCw0NzI0Niw0NzI0Nyw0NzI0OCw0NzI0OSw0NzI1MCw0NzI1MSw0NzI1Miw0NzI1Myw0NzI1NCw0NzI1NSw0NzI1Niw0NzI1Nyw0NzI1OCw0NzI1OSw0NzI2MCw0NzI2MSw0NzI2Miw0NzI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI2NCw0NzI2NSw0NzI2Niw0NzI2Nyw0NzI2OCw0NzI2OSw0NzI3MCw0NzI3MSw0NzI3Myw0NzI3NCw0NzI3NSw0NzI3Niw0NzI3Nyw0NzI3OCw0NzI3OSw0NzI4MSw0NzI4Miw0NzI4Myw0NzI4NSw0NzI4Niw0NzI4Nyw0NzI4OSw0NzI5MCw0NzI5MSw0NzI5Miw0NzI5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI5NCw0NzI5NSw0NzI5OCw0NzMwMCw0NzMwMiw0NzMwMyw0NzMwNCw0NzMwNSw0NzMwNiw0NzMwNyw0NzMwOSw0NzMxMCw0NzMxMSw0NzMxMyw0NzMxNCw0NzMxNSw0NzMxNyw0NzMxOCw0NzMxOSw0NzMyMCw0NzMyMSw0NzMyMiw0NzMyMyw0NzMyNCw0NzMyNiw0NzMyOCw0NzMzMCw0NzMzMSw0NzMzMiw0NzMzMyw0NzMzNCw0NzMzNSw0NzMzOCw0NzMzOSw0NzM0MSw0NzM0Miw0NzM0Myw0NzM0NSw0NzM0Niw0NzM0Nyw0NzM0OCw0NzM0OSw0NzM1MCw0NzM1MSw0NzM1NCw0NzM1Niw0NzM1OCw0NzM1OSw0NzM2MCw0NzM2MSw0NzM2Miw0NzM2Myw0NzM2NSw0NzM2Niw0NzM2Nyw0NzM2OCw0NzM2OSw0NzM3MCw0NzM3MSw0NzM3Miw0NzM3Myw0NzM3NCw0NzM3NSw0NzM3Niw0NzM3Nyw0NzM3OCw0NzM3OSw0NzM4MCw0NzM4MSw0NzM4Miw0NzM4Myw0NzM4NSw0NzM4Niw0NzM4Nyw0NzM4OCw0NzM4OSw0NzM5MCw0NzM5MSw0NzM5Myw0NzM5NCw0NzM5NSw0NzM5Niw0NzM5Nyw0NzM5OCw0NzM5OSw0NzQwMCw0NzQwMSw0NzQwMiw0NzQwMyw0NzQwNCw0NzQwNSw0NzQwNiw0NzQwNyw0NzQwOCw0NzQwOSw0NzQxMCw0NzQxMSw0NzQxMiw0NzQxMyw0NzQxNCw0NzQxNSw0NzQxNiw0NzQxNyw0NzQxOCw0NzQxOSw0NzQyMiw0NzQyMyw0NzQyNSw0NzQyNiw0NzQyNyw0NzQyOSw0NzQzMCw0NzQzMSw0NzQzMiw0NzQzMyw0NzQzNCw0NzQzNSw0NzQzNyw0NzQzOCw0NzQ0MCw0NzQ0Miw0NzQ0Myw0NzQ0NCw0NzQ0NSw0NzQ0Niw0NzQ0Nyw0NzQ1MCw0NzQ1MSw0NzQ1Myw0NzQ1NCw0NzQ1NSw0NzQ1Nyw0NzQ1OCw0NzQ1OSw0NzQ2MCw0NzQ2MSw0NzQ2Miw0NzQ2Myw0NzQ2Niw0NzQ2OCw0NzQ3MCw0NzQ3MSw0NzQ3Miw0NzQ3Myw0NzQ3NCw0NzQ3NSw0NzQ3OCw0NzQ3OSw0NzQ4MSw0NzQ4Miw0NzQ4Myw0NzQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzQ4Niw0NzQ4Nyw0NzQ4OCw0NzQ4OSw0NzQ5MCw0NzQ5MSw0NzQ5NCw0NzQ5Niw0NzQ5OSw0NzUwMCw0NzUwMyw0NzUwNCw0NzUwNSw0NzUwNiw0NzUwNyw0NzUwOCw0NzUwOSw0NzUxMCw0NzUxMSw0NzUxMiw0NzUxMyw0NzUxNCw0NzUxNSw0NzUxNiw0NzUxNyw0NzUxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzUxOSw0NzUyMCw0NzUyMSw0NzUyMiw0NzUyMyw0NzUyNCw0NzUyNSw0NzUyNiw0NzUyNyw0NzUyOCw0NzUyOSw0NzUzMCw0NzUzMSw0NzUzNCw0NzUzNSw0NzUzNyw0NzUzOCw0NzUzOSw0NzU0MSw0NzU0Miw0NzU0Myw0NzU0NCw0NzU0NSw0NzU0Niw0NzU0Nyw0NzU1MCw0NzU1Miw0NzU1NCw0NzU1NSw0NzU1Niw0NzU1Nyw0NzU1OCw0NzU1OSw0NzU2Miw0NzU2Myw0NzU2NSw0NzU3MSw0NzU3Miw0NzU3Myw0NzU3NCw0NzU3NSw0NzU3OCw0NzU4MCw0NzU4Myw0NzU4NCw0NzU4Niw0NzU5MCw0NzU5MSw0NzU5Myw0NzU5NCw0NzU5NSw0NzU5Nyw0NzU5OCw0NzU5OSw0NzYwMCw0NzYwMSw0NzYwMiw0NzYwMyw0NzYwNiw0NzYxMSw0NzYxMiw0NzYxMyw0NzYxNCw0NzYxNSw0NzYxOCw0NzYxOSw0NzYyMCw0NzYyMSw0NzYyMiw0NzYyMyw0NzYyNSw0NzYyNiw0NzYyNyw0NzYyOCw0NzYyOSw0NzYzMCw0NzYzMSw0NzYzMiw0NzYzMyw0NzYzNCw0NzYzNSw0NzYzNiw0NzYzOCw0NzYzOSw0NzY0MCw0NzY0MSw0NzY0Miw0NzY0Myw0NzY0NCw0NzY0NSw0NzY0Niw0NzY0Nyw0NzY0OCw0NzY0OSw0NzY1MCw0NzY1MSw0NzY1Miw0NzY1Myw0NzY1NCw0NzY1NSw0NzY1Niw0NzY1Nyw0NzY1OCw0NzY1OSw0NzY2MCw0NzY2MSw0NzY2Miw0NzY2Myw0NzY2NCw0NzY2NSw0NzY2Niw0NzY2Nyw0NzY2OCw0NzY2OSw0NzY3MCw0NzY3MSw0NzY3NCw0NzY3NSw0NzY3Nyw0NzY3OCw0NzY3OSw0NzY4MSw0NzY4Myw0NzY4NCw0NzY4NSw0NzY4Niw0NzY4Nyw0NzY5MCw0NzY5Miw0NzY5NSw0NzY5Niw0NzY5Nyw0NzY5OCw0NzcwMiw0NzcwMyw0NzcwNSw0NzcwNiw0NzcwNyw0NzcwOSw0NzcxMCw0NzcxMSw0NzcxMiw0NzcxMyw0NzcxNCw0NzcxNSw0NzcxOCw0NzcyMiw0NzcyMyw0NzcyNCw0NzcyNSw0NzcyNiw0NzcyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzczMCw0NzczMSw0NzczMyw0NzczNCw0NzczNSw0NzczNyw0NzczOCw0NzczOSw0Nzc0MCw0Nzc0MSw0Nzc0Miw0Nzc0Myw0Nzc0NCw0Nzc0NSw0Nzc0Niw0Nzc1MCw0Nzc1Miw0Nzc1Myw0Nzc1NCw0Nzc1NSw0Nzc1Nyw0Nzc1OCw0Nzc1OSw0Nzc2MCw0Nzc2MSw0Nzc2MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzc2Myw0Nzc2NCw0Nzc2NSw0Nzc2Niw0Nzc2Nyw0Nzc2OCw0Nzc2OSw0Nzc3MCw0Nzc3MSw0Nzc3Miw0Nzc3Myw0Nzc3NCw0Nzc3NSw0Nzc3Niw0Nzc3Nyw0Nzc3OCw0Nzc3OSw0Nzc4MCw0Nzc4MSw0Nzc4Miw0Nzc4Myw0Nzc4Niw0Nzc4OSw0Nzc5MCw0Nzc5MSw0Nzc5Myw0Nzc5NSw0Nzc5Niw0Nzc5Nyw0Nzc5OCw0Nzc5OSw0NzgwMiw0NzgwNCw0NzgwNiw0NzgwNyw0NzgwOCw0NzgwOSw0NzgxMCw0NzgxMSw0NzgxMyw0NzgxNCw0NzgxNSw0NzgxNyw0NzgxOCw0NzgxOSw0NzgyMCw0NzgyMSw0NzgyMiw0NzgyMyw0NzgyNCw0NzgyNSw0NzgyNiw0NzgyNyw0NzgyOCw0NzgyOSw0NzgzMCw0NzgzMSw0NzgzNCw0NzgzNSw0NzgzNiw0NzgzNyw0NzgzOCw0NzgzOSw0Nzg0MCw0Nzg0MSw0Nzg0Miw0Nzg0Myw0Nzg0NCw0Nzg0NSw0Nzg0Niw0Nzg0Nyw0Nzg0OCw0Nzg0OSw0Nzg1MCw0Nzg1MSw0Nzg1Miw0Nzg1Myw0Nzg1NCw0Nzg1NSw0Nzg1Niw0Nzg1Nyw0Nzg1OCw0Nzg1OSw0Nzg2MCw0Nzg2MSw0Nzg2Miw0Nzg2Myw0Nzg2NCw0Nzg2NSw0Nzg2Niw0Nzg2Nyw0Nzg2OSw0Nzg3MCw0Nzg3MSw0Nzg3Myw0Nzg3NCw0Nzg3NSw0Nzg3Nyw0Nzg3OCw0Nzg3OSw0Nzg4MCw0Nzg4MSw0Nzg4Miw0Nzg4Myw0Nzg4NCw0Nzg4Niw0Nzg4OCw0Nzg5MCw0Nzg5MSw0Nzg5Miw0Nzg5Myw0Nzg5NCw0Nzg5NSw0Nzg5Nyw0Nzg5OCw0Nzg5OSw0NzkwMSw0NzkwMiw0NzkwMyw0NzkwNSw0NzkwNiw0NzkwNyw0NzkwOCw0NzkwOSw0NzkxMCw0NzkxMSw0NzkxMiw0NzkxNCw0NzkxNiw0NzkxNyw0NzkxOCw0NzkxOSw0NzkyMCw0NzkyMSw0NzkyMiw0NzkyMyw0NzkyNyw0NzkyOSw0NzkzMCw0NzkzNSw0NzkzNiw0NzkzNyw0NzkzOCw0NzkzOSw0Nzk0Miw0Nzk0NCw0Nzk0Niw0Nzk0Nyw0Nzk0OCw0Nzk1MCw0Nzk1Myw0Nzk1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk1NSw0Nzk1Nyw0Nzk1OCw0Nzk1OSw0Nzk2MSw0Nzk2Miw0Nzk2Myw0Nzk2NCw0Nzk2NSw0Nzk2Niw0Nzk2Nyw0Nzk2OCw0Nzk3MCw0Nzk3Miw0Nzk3Myw0Nzk3NCw0Nzk3NSw0Nzk3Niw0Nzk3Nyw0Nzk3OCw0Nzk3OSw0Nzk4MSw0Nzk4Miw0Nzk4Myw0Nzk4NCw0Nzk4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk4Niw0Nzk4Nyw0Nzk4OCw0Nzk4OSw0Nzk5MCw0Nzk5MSw0Nzk5Miw0Nzk5Myw0Nzk5NCw0Nzk5NSw0Nzk5Niw0Nzk5Nyw0Nzk5OCw0Nzk5OSw0ODAwMCw0ODAwMSw0ODAwMiw0ODAwMyw0ODAwNCw0ODAwNSw0ODAwNiw0ODAwNyw0ODAwOSw0ODAxMCw0ODAxMSw0ODAxMyw0ODAxNCw0ODAxNSw0ODAxNyw0ODAxOCw0ODAxOSw0ODAyMCw0ODAyMSw0ODAyMiw0ODAyMyw0ODAyNCw0ODAyNSw0ODAyNiw0ODAyNyw0ODAyOCw0ODAyOSw0ODAzMCw0ODAzMSw0ODAzMiw0ODAzMyw0ODAzNCw0ODAzNSw0ODAzNyw0ODAzOCw0ODAzOSw0ODA0MSw0ODA0Miw0ODA0Myw0ODA0NSw0ODA0Niw0ODA0Nyw0ODA0OCw0ODA0OSw0ODA1MCw0ODA1MSw0ODA1Myw0ODA1NCw0ODA1Niw0ODA1Nyw0ODA1OCw0ODA1OSw0ODA2MCw0ODA2MSw0ODA2Miw0ODA2Myw0ODA2NSw0ODA2Niw0ODA2Nyw0ODA2OSw0ODA3MCw0ODA3MSw0ODA3Myw0ODA3NCw0ODA3NSw0ODA3Niw0ODA3Nyw0ODA3OCw0ODA3OSw0ODA4MSw0ODA4Miw0ODA4NCw0ODA4NSw0ODA4Niw0ODA4Nyw0ODA4OCw0ODA4OSw0ODA5MCw0ODA5MSw0ODA5Miw0ODA5Myw0ODA5NCw0ODA5NSw0ODA5Niw0ODA5Nyw0ODA5OCw0ODA5OSw0ODEwMCw0ODEwMSw0ODEwMiw0ODEwMyw0ODEwNCw0ODEwNSw0ODEwNiw0ODEwNyw0ODEwOCw0ODEwOSw0ODExMCw0ODExMSw0ODExMiw0ODExMyw0ODExNCw0ODExNSw0ODExNiw0ODExNyw0ODExOCw0ODExOSw0ODEyMiw0ODEyMyw0ODEyNSw0ODEyNiw0ODEyOSw0ODEzMSw0ODEzMiw0ODEzMyw0ODEzNCw0ODEzNSw0ODEzOCw0ODE0Miw0ODE0NCw0ODE0Niw0ODE0Nyw0ODE1Myw0ODE1NCw0ODE2MCw0ODE2MSw0ODE2Miw0ODE2Myw0ODE2Niw0ODE2OCw0ODE3MCw0ODE3MSw0ODE3Miw0ODE3NCw0ODE3NSw0ODE3OCw0ODE3OSw0ODE4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODE4Miw0ODE4Myw0ODE4NSw0ODE4Niw0ODE4Nyw0ODE4OCw0ODE4OSw0ODE5MCw0ODE5MSw0ODE5NCw0ODE5OCw0ODE5OSw0ODIwMCw0ODIwMiw0ODIwMyw0ODIwNiw0ODIwNyw0ODIwOSw0ODIxMCw0ODIxMSw0ODIxMiw0ODIxMyw0ODIxNCw0ODIxNSw0ODIxNiw0ODIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODIxOCw0ODIxOSw0ODIyMCw0ODIyMiw0ODIyMyw0ODIyNCw0ODIyNSw0ODIyNiw0ODIyNyw0ODIyOCw0ODIyOSw0ODIzMCw0ODIzMSw0ODIzMiw0ODIzMyw0ODIzNCw0ODIzNSw0ODIzNiw0ODIzNyw0ODIzOCw0ODIzOSw0ODI0MCw0ODI0MSw0ODI0Miw0ODI0Myw0ODI0NCw0ODI0NSw0ODI0Niw0ODI0Nyw0ODI0OCw0ODI0OSw0ODI1MCw0ODI1MSw0ODI1Miw0ODI1Myw0ODI1NCw0ODI1NSw0ODI1Niw0ODI1Nyw0ODI1OCw0ODI1OSw0ODI2Miw0ODI2Myw0ODI2NSw0ODI2Niw0ODI2OSw0ODI3MSw0ODI3Miw0ODI3Myw0ODI3NCw0ODI3NSw0ODI3OCw0ODI4MCw0ODI4Myw0ODI4NCw0ODI4NSw0ODI4Niw0ODI4Nyw0ODI5MCw0ODI5MSw0ODI5Myw0ODI5NCw0ODI5Nyw0ODI5OCw0ODI5OSw0ODMwMCw0ODMwMSw0ODMwMiw0ODMwMyw0ODMwNiw0ODMxMCw0ODMxMSw0ODMxMiw0ODMxMyw0ODMxNCw0ODMxNSw0ODMxOCw0ODMxOSw0ODMyMSw0ODMyMiw0ODMyMyw0ODMyNSw0ODMyNiw0ODMyNyw0ODMyOCw0ODMyOSw0ODMzMCw0ODMzMSw0ODMzMiw0ODMzNCw0ODMzOCw0ODMzOSw0ODM0MCw0ODM0Miw0ODM0Myw0ODM0NSw0ODM0Niw0ODM0Nyw0ODM0OSw0ODM1MCw0ODM1MSw0ODM1Miw0ODM1Myw0ODM1NCw0ODM1NSw0ODM1Niw0ODM1Nyw0ODM1OCw0ODM1OSw0ODM2MCw0ODM2MSw0ODM2Miw0ODM2Myw0ODM2NCw0ODM2NSw0ODM2Niw0ODM2Nyw0ODM2OCw0ODM2OSw0ODM3MCw0ODM3MSw0ODM3NSw0ODM3Nyw0ODM3OCw0ODM3OSw0ODM4MSw0ODM4Miw0ODM4Myw0ODM4NCw0ODM4NSw0ODM4Niw0ODM4Nyw0ODM5MCw0ODM5Miw0ODM5NCw0ODM5NSw0ODM5Niw0ODM5Nyw0ODM5OCw0ODM5OSw0ODQwMSw0ODQwMiw0ODQwMyw0ODQwNSw0ODQwNiw0ODQwNyw0ODQwOCw0ODQwOSw0ODQxMCw0ODQxMSw0ODQxMiw0ODQxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQxNCw0ODQxNSw0ODQxNiw0ODQxNyw0ODQxOCw0ODQxOSw0ODQyMSw0ODQyMiw0ODQyMyw0ODQyNCw0ODQyNSw0ODQyNiw0ODQyNyw0ODQyOSw0ODQzMCw0ODQzMSw0ODQzMiw0ODQzMyw0ODQzNCw0ODQzNSw0ODQzNiw0ODQzNyw0ODQzOCw0ODQzOSw0ODQ0MCw0ODQ0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQ0Miw0ODQ0Myw0ODQ0NCw0ODQ0NSw0ODQ0Niw0ODQ0Nyw0ODQ0OSw0ODQ1MCw0ODQ1MSw0ODQ1Miw0ODQ1Myw0ODQ1NCw0ODQ1NSw0ODQ1OCw0ODQ1OSw0ODQ2MSw0ODQ2Miw0ODQ2Myw0ODQ2NSw0ODQ2Niw0ODQ2Nyw0ODQ2OCw0ODQ2OSw0ODQ3MCw0ODQ3MSw0ODQ3NCw0ODQ3NSw0ODQ3Niw0ODQ3Nyw0ODQ3OCw0ODQ3OSw0ODQ4MCw0ODQ4MSw0ODQ4Miw0ODQ4Myw0ODQ4NSw0ODQ4Niw0ODQ4Nyw0ODQ4OSw0ODQ5MCw0ODQ5MSw0ODQ5Miw0ODQ5Myw0ODQ5NCw0ODQ5NSw0ODQ5Niw0ODQ5Nyw0ODQ5OCw0ODQ5OSw0ODUwMCw0ODUwMSw0ODUwMiw0ODUwMyw0ODUwNCw0ODUwNSw0ODUwNiw0ODUwNyw0ODUwOCw0ODUwOSw0ODUxMCw0ODUxMSw0ODUxNCw0ODUxNSw0ODUxNyw0ODUxOCw0ODUyMyw0ODUyNCw0ODUyNSw0ODUyNiw0ODUyNyw0ODUzMCw0ODUzMiw0ODUzNCw0ODUzNSw0ODUzNiw0ODUzOSw0ODU0MSw0ODU0Miw0ODU0Myw0ODU0NCw0ODU0NSw0ODU0Niw0ODU0Nyw0ODU0OSw0ODU1MCw0ODU1MSw0ODU1Miw0ODU1Myw0ODU1NCw0ODU1NSw0ODU1Niw0ODU1Nyw0ODU1OCw0ODU1OSw0ODU2MSw0ODU2Miw0ODU2Myw0ODU2NCw0ODU2NSw0ODU2Niw0ODU2Nyw0ODU2OSw0ODU3MCw0ODU3MSw0ODU3Miw0ODU3Myw0ODU3NCw0ODU3NSw0ODU3Niw0ODU3Nyw0ODU3OCw0ODU3OSw0ODU4MCw0ODU4MSw0ODU4Miw0ODU4Myw0ODU4NCw0ODU4NSw0ODU4Niw0ODU4Nyw0ODU4OCw0ODU4OSw0ODU5MCw0ODU5MSw0ODU5Miw0ODU5Myw0ODU5NCw0ODU5NSw0ODU5OCw0ODU5OSw0ODYwMSw0ODYwMiw0ODYwMyw0ODYwNSw0ODYwNiw0ODYwNyw0ODYwOCw0ODYwOSw0ODYxMCw0ODYxMSw0ODYxMiw0ODYxMyw0ODYxNCw0ODYxNSw0ODYxNiw0ODYxOCw0ODYxOSw0ODYyMCw0ODYyMSw0ODYyMiw0ODYyMyw0ODYyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODYyNiw0ODYyNyw0ODYyOSw0ODYzMCw0ODYzMSw0ODYzMyw0ODYzNCw0ODYzNSw0ODYzNiw0ODYzNyw0ODYzOCw0ODYzOSw0ODY0MSw0ODY0Miw0ODY0NCw0ODY0Niw0ODY0Nyw0ODY0OCw0ODY0OSw0ODY1MCw0ODY1MSw0ODY1NCw0ODY1NSw0ODY1Nyw0ODY1OCw0ODY1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODY2MSw0ODY2Miw0ODY2Myw0ODY2NCw0ODY2NSw0ODY2Niw0ODY2Nyw0ODY3MCw0ODY3Miw0ODY3Myw0ODY3NCw0ODY3NSw0ODY3Niw0ODY3Nyw0ODY3OCw0ODY3OSw0ODY4MCw0ODY4MSw0ODY4Miw0ODY4Myw0ODY4NCw0ODY4NSw0ODY4Niw0ODY4Nyw0ODY4OCw0ODY4OSw0ODY5MCw0ODY5MSw0ODY5Miw0ODY5Myw0ODY5NCw0ODY5NSw0ODY5Niw0ODY5Nyw0ODY5OCw0ODY5OSw0ODcwMCw0ODcwMSw0ODcwMiw0ODcwMyw0ODcwNCw0ODcwNSw0ODcwNiw0ODcwNyw0ODcxMCw0ODcxMSw0ODcxMyw0ODcxNCw0ODcxNSw0ODcxNyw0ODcxOSw0ODcyMCw0ODcyMSw0ODcyMiw0ODcyMyw0ODcyNiw0ODcyOCw0ODczMiw0ODczMyw0ODczNCw0ODczNSw0ODczOCw0ODczOSw0ODc0MSw0ODc0Miw0ODc0Myw0ODc0NSw0ODc0Nyw0ODc0OCw0ODc0OSw0ODc1MCw0ODc1MSw0ODc1NCw0ODc1OCw0ODc1OSw0ODc2MCw0ODc2MSw0ODc2Miw0ODc2Niw0ODc2Nyw0ODc2OSw0ODc3MCw0ODc3MSw0ODc3Myw0ODc3NCw0ODc3NSw0ODc3Niw0ODc3Nyw0ODc3OCw0ODc3OSw0ODc4Miw0ODc4Niw0ODc4Nyw0ODc4OCw0ODc4OSw0ODc5MCw0ODc5MSw0ODc5NCw0ODc5NSw0ODc5Niw0ODc5Nyw0ODc5OCw0ODc5OSw0ODgwMCw0ODgwMSw0ODgwMiw0ODgwMyw0ODgwNCw0ODgwNSw0ODgwNiw0ODgwNyw0ODgwOSw0ODgxMCw0ODgxMSw0ODgxMiw0ODgxMyw0ODgxNCw0ODgxNSw0ODgxNiw0ODgxNyw0ODgxOCw0ODgxOSw0ODgyMCw0ODgyMSw0ODgyMiw0ODgyMyw0ODgyNCw0ODgyNSw0ODgyNiw0ODgyNyw0ODgyOCw0ODgyOSw0ODgzMCw0ODgzMSw0ODgzMiw0ODgzMyw0ODgzNCw0ODgzNSw0ODgzNiw0ODgzNyw0ODgzOCw0ODgzOSw0ODg0MCw0ODg0MSw0ODg0Miw0ODg0Myw0ODg0NCw0ODg0NSw0ODg0Niw0ODg0Nyw0ODg1MCw0ODg1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg1Myw0ODg1NCw0ODg1Nyw0ODg1OCw0ODg1OSw0ODg2MCw0ODg2MSw0ODg2Miw0ODg2Myw0ODg2NSw0ODg2Niw0ODg3MCw0ODg3MSw0ODg3Miw0ODg3Myw0ODg3NCw0ODg3NSw0ODg3Nyw0ODg3OCw0ODg3OSw0ODg4MCw0ODg4MSw0ODg4Miw0ODg4Myw0ODg4NCw0ODg4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg4Niw0ODg4Nyw0ODg4OCw0ODg4OSw0ODg5MCw0ODg5MSw0ODg5Miw0ODg5Myw0ODg5NCw0ODg5NSw0ODg5Niw0ODg5OCw0ODg5OSw0ODkwMCw0ODkwMSw0ODkwMiw0ODkwMyw0ODkwNiw0ODkwNyw0ODkwOCw0ODkwOSw0ODkxMCw0ODkxMSw0ODkxMiw0ODkxMyw0ODkxNCw0ODkxNSw0ODkxNiw0ODkxNyw0ODkxOCw0ODkxOSw0ODkyMiw0ODkyNiw0ODkyNyw0ODkyOCw0ODkyOSw0ODkzMCw0ODkzMSw0ODkzMiw0ODkzMyw0ODkzNCw0ODkzNSw0ODkzNiw0ODkzNyw0ODkzOCw0ODkzOSw0ODk0MCw0ODk0MSw0ODk0Miw0ODk0Myw0ODk0NCw0ODk0NSw0ODk0Niw0ODk0Nyw0ODk0OCw0ODk0OSw0ODk1MCw0ODk1MSw0ODk1Miw0ODk1Myw0ODk1NCw0ODk1NSw0ODk1Niw0ODk1Nyw0ODk1OCw0ODk1OSw0ODk2Miw0ODk2Myw0ODk2NSw0ODk2Niw0ODk2Nyw0ODk2OSw0ODk3MCw0ODk3MSw0ODk3Miw0ODk3Myw0ODk3NCw0ODk3NSw0ODk3OCw0ODk3OSw0ODk4MCw0ODk4Miw0ODk4Myw0ODk4NCw0ODk4NSw0ODk4Niw0ODk4Nyw0ODk4OCw0ODk4OSw0ODk5MCw0ODk5MSw0ODk5Miw0ODk5Myw0ODk5NCw0ODk5NSw0ODk5Niw0ODk5Nyw0ODk5OCw0ODk5OSw0OTAwMCw0OTAwMSw0OTAwMiw0OTAwMyw0OTAwNCw0OTAwNSw0OTAwNiw0OTAwNyw0OTAwOCw0OTAwOSw0OTAxMCw0OTAxMSw0OTAxMiw0OTAxMyw0OTAxNCw0OTAxNSw0OTAxNiw0OTAxNyw0OTAxOCw0OTAxOSw0OTAyMCw0OTAyMSw0OTAyMiw0OTAyMyw0OTAyNCw0OTAyNSw0OTAyNiw0OTAyNyw0OTAyOCw0OTAyOSw0OTAzMCw0OTAzMSw0OTAzMiw0OTAzMyw0OTAzNCw0OTAzNSw0OTAzNiw0OTAzNyw0OTAzOCw0OTAzOSw0OTA0MCw0OTA0MSw0OTA0Miw0OTA0Myw0OTA0NSw0OTA0Niw0OTA0Nyw0OTA0OCw0OTA0OSw0OTA1MCw0OTA1MSw0OTA1Miw0OTA1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTA1NCw0OTA1NSw0OTA1Niw0OTA1Nyw0OTA1OCw0OTA1OSw0OTA2MCw0OTA2MSw0OTA2Miw0OTA2Myw0OTA2NCw0OTA2NSw0OTA2Niw0OTA2Nyw0OTA2OCw0OTA2OSw0OTA3MCw0OTA3MSw0OTA3Myw0OTA3NCw0OTA3NSw0OTA3Niw0OTA3Nyw0OTA3OCw0OTA3OSw0OTA4MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTA4MSw0OTA4Miw0OTA4Myw0OTA4NCw0OTA4NSw0OTA4Niw0OTA4Nyw0OTA4OCw0OTA4OSw0OTA5MCw0OTA5MSw0OTA5Miw0OTA5NCw0OTA5NSw0OTA5Niw0OTA5Nyw0OTA5OCw0OTA5OSw0OTEwMiw0OTEwMyw0OTEwNSw0OTEwNiw0OTEwNyw0OTEwOSw0OTExMCw0OTExMSw0OTExMiw0OTExMyw0OTExNCw0OTExNSw0OTExNyw0OTExOCw0OTEyMCw0OTEyMiw0OTEyMyw0OTEyNCw0OTEyNSw0OTEyNiw0OTEyNyw0OTEyOCw0OTEyOSw0OTEzMCw0OTEzMSw0OTEzMiw0OTEzMyw0OTEzNCw0OTEzNSw0OTEzNiw0OTEzNyw0OTEzOCw0OTEzOSw0OTE0MCw0OTE0MSw0OTE0Miw0OTE0Myw0OTE0NCw0OTE0NSw0OTE0Niw0OTE0Nyw0OTE0OCw0OTE0OSw0OTE1MCw0OTE1MSw0OTE1Miw0OTE1Myw0OTE1NCw0OTE1NSw0OTE1Niw0OTE1Nyw0OTE1OCw0OTE1OSw0OTE2MCw0OTE2MSw0OTE2Miw0OTE2Myw0OTE2NCw0OTE2NSw0OTE2Niw0OTE2Nyw0OTE2OCw0OTE2OSw0OTE3MCw0OTE3MSw0OTE3Miw0OTE3Myw0OTE3NCw0OTE3NSw0OTE3Niw0OTE3Nyw0OTE3OCw0OTE3OSw0OTE4MCw0OTE4MSw0OTE4Miw0OTE4Myw0OTE4NCw0OTE4NSw0OTE4Niw0OTE4Nyw0OTE4OCw0OTE4OSw0OTE5MCw0OTE5MSw0OTE5Miw0OTE5Myw0OTE5NCw0OTE5NSw0OTE5Niw0OTE5Nyw0OTE5OCw0OTE5OSw0OTIwMCw0OTIwMSw0OTIwMiw0OTIwMyw0OTIwNCw0OTIwNSw0OTIwNiw0OTIwNyw0OTIwOCw0OTIwOSw0OTIxMCw0OTIxMSw0OTIxMyw0OTIxNCw0OTIxNSw0OTIxNiw0OTIxNyw0OTIxOCw0OTIxOSw0OTIyMCw0OTIyMSw0OTIyMiw0OTIyMyw0OTIyNCw0OTIyNSw0OTIyNiw0OTIyNyw0OTIyOCw0OTIyOSw0OTIzMCw0OTIzMSw0OTIzMiw0OTIzNCw0OTIzNSw0OTIzNiw0OTIzNyw0OTIzOCw0OTIzOSw0OTI0MSw0OTI0Miw0OTI0MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTI0NSw0OTI0Niw0OTI0Nyw0OTI0OSw0OTI1MCw0OTI1MSw0OTI1Miw0OTI1Myw0OTI1NCw0OTI1NSw0OTI1OCw0OTI1OSw0OTI2MCw0OTI2MSw0OTI2Miw0OTI2Myw0OTI2NCw0OTI2NSw0OTI2Niw0OTI2Nyw0OTI2OCw0OTI2OSw0OTI3MCw0OTI3MSw0OTI3Miw0OTI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTI3NCw0OTI3NSw0OTI3Niw0OTI3Nyw0OTI3OCw0OTI3OSw0OTI4MCw0OTI4MSw0OTI4Miw0OTI4Myw0OTI4NCw0OTI4NSw0OTI4Niw0OTI4Nyw0OTI4OCw0OTI4OSw0OTI5MCw0OTI5MSw0OTI5Miw0OTI5Myw0OTI5NCw0OTI5NSw0OTI5OCw0OTI5OSw0OTMwMSw0OTMwMiw0OTMwMyw0OTMwNSw0OTMwNiw0OTMwNyw0OTMwOCw0OTMwOSw0OTMxMCw0OTMxMSw0OTMxNCw0OTMxNiw0OTMxOCw0OTMxOSw0OTMyMCw0OTMyMSw0OTMyMiw0OTMyMyw0OTMyNiw0OTMyOSw0OTMzMCw0OTMzNSw0OTMzNiw0OTMzNyw0OTMzOCw0OTMzOSw0OTM0Miw0OTM0Niw0OTM0Nyw0OTM0OCw0OTM1MCw0OTM1MSw0OTM1NCw0OTM1NSw0OTM1Nyw0OTM1OCw0OTM1OSw0OTM2MSw0OTM2Miw0OTM2Myw0OTM2NCw0OTM2NSw0OTM2Niw0OTM2Nyw0OTM3MCw0OTM3NCw0OTM3NSw0OTM3Niw0OTM3Nyw0OTM3OCw0OTM3OSw0OTM4Miw0OTM4Myw0OTM4NSw0OTM4Niw0OTM4Nyw0OTM4OSw0OTM5MCw0OTM5MSw0OTM5Miw0OTM5Myw0OTM5NCw0OTM5NSw0OTM5OCw0OTQwMCw0OTQwMiw0OTQwMyw0OTQwNCw0OTQwNSw0OTQwNiw0OTQwNyw0OTQwOSw0OTQxMCw0OTQxMSw0OTQxMyw0OTQxNCw0OTQxNSw0OTQxNyw0OTQxOCw0OTQxOSw0OTQyMCw0OTQyMSw0OTQyMiw0OTQyMyw0OTQyNSw0OTQyNiw0OTQyNyw0OTQyOCw0OTQzMCw0OTQzMSw0OTQzMiw0OTQzMyw0OTQzNCw0OTQzNSw0OTQ0MSw0OTQ0Miw0OTQ0NSw0OTQ0OCw0OTQ0OSw0OTQ1MCw0OTQ1MSw0OTQ1NCw0OTQ1OCw0OTQ1OSw0OTQ2MCw0OTQ2MSw0OTQ2Myw0OTQ2Niw0OTQ2Nyw0OTQ2OSw0OTQ3MCw0OTQ3MSw0OTQ3Myw0OTQ3NCw0OTQ3NSw0OTQ3Niw0OTQ3Nyw0OTQ3OCw0OTQ3OSw0OTQ4Miw0OTQ4Niw0OTQ4Nyw0OTQ4OCw0OTQ4OSw0OTQ5MCw0OTQ5MSw0OTQ5NCw0OTQ5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTQ5Nyw0OTQ5OCw0OTQ5OSw0OTUwMSw0OTUwMiw0OTUwMyw0OTUwNCw0OTUwNSw0OTUwNiw0OTUwNyw0OTUxMCw0OTUxNCw0OTUxNSw0OTUxNiw0OTUxNyw0OTUxOCw0OTUxOSw0OTUyMSw0OTUyMiw0OTUyMyw0OTUyNSw0OTUyNiw0OTUyNyw0OTUyOSw0OTUzMCw0OTUzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTUzMiw0OTUzMyw0OTUzNCw0OTUzNSw0OTUzNiw0OTUzNyw0OTUzOCw0OTUzOSw0OTU0MCw0OTU0Miw0OTU0Myw0OTU0NCw0OTU0NSw0OTU0Niw0OTU0Nyw0OTU1MSw0OTU1Myw0OTU1NCw0OTU1NSw0OTU1Nyw0OTU1OSw0OTU2MCw0OTU2MSw0OTU2Miw0OTU2Myw0OTU2Niw0OTU2OCw0OTU3MCw0OTU3MSw0OTU3Miw0OTU3NCw0OTU3NSw0OTU3OCw0OTU3OSw0OTU4MSw0OTU4Miw0OTU4Myw0OTU4NSw0OTU4Niw0OTU4Nyw0OTU4OCw0OTU4OSw0OTU5MCw0OTU5MSw0OTU5Miw0OTU5Myw0OTU5NCw0OTU5NSw0OTU5Niw0OTU5OCw0OTU5OSw0OTYwMCw0OTYwMSw0OTYwMiw0OTYwMyw0OTYwNSw0OTYwNiw0OTYwNyw0OTYwOSw0OTYxMCw0OTYxMSw0OTYxMyw0OTYxNCw0OTYxNSw0OTYxNiw0OTYxNyw0OTYxOCw0OTYxOSw0OTYyMSw0OTYyMiw0OTYyNSw0OTYyNiw0OTYyNyw0OTYyOCw0OTYyOSw0OTYzMCw0OTYzMSw0OTYzMyw0OTYzNCw0OTYzNSw0OTYzNyw0OTYzOCw0OTYzOSw0OTY0MSw0OTY0Miw0OTY0Myw0OTY0NCw0OTY0NSw0OTY0Niw0OTY0Nyw0OTY1MCw0OTY1Miw0OTY1Myw0OTY1NCw0OTY1NSw0OTY1Niw0OTY1Nyw0OTY1OCw0OTY1OSw0OTY2Miw0OTY2Myw0OTY2NSw0OTY2Niw0OTY2Nyw0OTY2OSw0OTY3MCw0OTY3MSw0OTY3Miw0OTY3Myw0OTY3NCw0OTY3NSw0OTY3OCw0OTY4MCw0OTY4Miw0OTY4Myw0OTY4NCw0OTY4NSw0OTY4Niw0OTY4Nyw0OTY5MCw0OTY5MSw0OTY5Myw0OTY5NCw0OTY5Nyw0OTY5OCw0OTY5OSw0OTcwMCw0OTcwMSw0OTcwMiw0OTcwMyw0OTcwNiw0OTcwOCw0OTcxMCw0OTcxMiw0OTcxNSw0OTcxNyw0OTcxOCw0OTcxOSw0OTcyMCw0OTcyMSw0OTcyMiw0OTcyMyw0OTcyNCw0OTcyNSw0OTcyNiw0OTcyNyw0OTcyOCw0OTcyOSw0OTczMCw0OTczMSw0OTczMiw0OTczMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTczNCw0OTczNSw0OTczNyw0OTczOCw0OTczOSw0OTc0MCw0OTc0MSw0OTc0Miw0OTc0Myw0OTc0Niw0OTc0Nyw0OTc0OSw0OTc1MCw0OTc1MSw0OTc1Myw0OTc1NCw0OTc1NSw0OTc1Niw0OTc1Nyw0OTc1OCw0OTc1OSw0OTc2MSw0OTc2Miw0OTc2Myw0OTc2NCw0OTc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTc2Nyw0OTc2OCw0OTc2OSw0OTc3MCw0OTc3MSw0OTc3NCw0OTc3NSw0OTc3Nyw0OTc3OCw0OTc3OSw0OTc4MSw0OTc4Miw0OTc4Myw0OTc4NCw0OTc4NSw0OTc4Niw0OTc4Nyw0OTc5MCw0OTc5Miw0OTc5NCw0OTc5NSw0OTc5Niw0OTc5Nyw0OTc5OCw0OTc5OSw0OTgwMiw0OTgwMyw0OTgwNCw0OTgwNSw0OTgwNiw0OTgwNyw0OTgwOSw0OTgxMCw0OTgxMSw0OTgxMiw0OTgxMyw0OTgxNCw0OTgxNSw0OTgxNyw0OTgxOCw0OTgyMCw0OTgyMiw0OTgyMyw0OTgyNCw0OTgyNSw0OTgyNiw0OTgyNyw0OTgzMCw0OTgzMSw0OTgzMyw0OTgzNCw0OTgzNSw0OTgzOCw0OTgzOSw0OTg0MCw0OTg0MSw0OTg0Miw0OTg0Myw0OTg0Niw0OTg0OCw0OTg1MCw0OTg1MSw0OTg1Miw0OTg1Myw0OTg1NCw0OTg1NSw0OTg1Niw0OTg1Nyw0OTg1OCw0OTg1OSw0OTg2MCw0OTg2MSw0OTg2Miw0OTg2Myw0OTg2NCw0OTg2NSw0OTg2Niw0OTg2Nyw0OTg2OCw0OTg2OSw0OTg3MCw0OTg3MSw0OTg3Miw0OTg3Myw0OTg3NCw0OTg3NSw0OTg3Niw0OTg3Nyw0OTg3OCw0OTg3OSw0OTg4MCw0OTg4MSw0OTg4Miw0OTg4Myw0OTg4Niw0OTg4Nyw0OTg4OSw0OTg5MCw0OTg5Myw0OTg5NCw0OTg5NSw0OTg5Niw0OTg5Nyw0OTg5OCw0OTkwMiw0OTkwNCw0OTkwNiw0OTkwNyw0OTkwOCw0OTkwOSw0OTkxMSw0OTkxNCw0OTkxNyw0OTkxOCw0OTkxOSw0OTkyMSw0OTkyMiw0OTkyMyw0OTkyNCw0OTkyNSw0OTkyNiw0OTkyNyw0OTkzMCw0OTkzMSw0OTkzNCw0OTkzNSw0OTkzNiw0OTkzNyw0OTkzOCw0OTk0Miw0OTk0Myw0OTk0NSw0OTk0Niw0OTk0Nyw0OTk0OSw0OTk1MCw0OTk1MSw0OTk1Miw0OTk1Myw0OTk1NCw0OTk1NSw0OTk1OCw0OTk1OSw0OTk2Miw0OTk2Myw0OTk2NCw0OTk2NSw0OTk2Niw0OTk2Nyw0OTk2OCw0OTk2OSw0OTk3MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTk3MSw0OTk3Miw0OTk3Myw0OTk3NCw0OTk3NSw0OTk3Niw0OTk3Nyw0OTk3OCw0OTk3OSw0OTk4MCw0OTk4MSw0OTk4Miw0OTk4Myw0OTk4NCw0OTk4NSw0OTk4Niw0OTk4Nyw0OTk4OCw0OTk5MCw0OTk5MSw0OTk5Miw0OTk5Myw0OTk5NCw0OTk5NSw0OTk5Niw0OTk5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTk5OCw0OTk5OSw1MDAwMCw1MDAwMSw1MDAwMiw1MDAwMyw1MDAwNCw1MDAwNSw1MDAwNiw1MDAwNyw1MDAwOCw1MDAwOSw1MDAxMCw1MDAxMSw1MDAxMiw1MDAxMyw1MDAxNCw1MDAxNSw1MDAxNiw1MDAxNyw1MDAxOCw1MDAxOSw1MDAyMCw1MDAyMSw1MDAyMiw1MDAyMyw1MDAyNiw1MDAyNyw1MDAyOSw1MDAzMCw1MDAzMSw1MDAzMyw1MDAzNSw1MDAzNiw1MDAzNyw1MDAzOCw1MDAzOSw1MDA0Miw1MDA0Myw1MDA0Niw1MDA0Nyw1MDA0OCw1MDA0OSw1MDA1MCw1MDA1MSw1MDA1Myw1MDA1NCw1MDA1NSw1MDA1Nyw1MDA1OCw1MDA1OSw1MDA2MSw1MDA2Miw1MDA2Myw1MDA2NCw1MDA2NSw1MDA2Niw1MDA2Nyw1MDA2OCw1MDA2OSw1MDA3MCw1MDA3MSw1MDA3Miw1MDA3Myw1MDA3NCw1MDA3NSw1MDA3Niw1MDA3Nyw1MDA3OCw1MDA3OSw1MDA4MCw1MDA4MSw1MDA4Miw1MDA4Myw1MDA4NCw1MDA4NSw1MDA4Niw1MDA4Nyw1MDA4OCw1MDA4OSw1MDA5MCw1MDA5MSw1MDA5Miw1MDA5Myw1MDA5NCw1MDA5NSw1MDA5Niw1MDA5Nyw1MDA5OCw1MDA5OSw1MDEwMCw1MDEwMSw1MDEwMiw1MDEwMyw1MDEwNCw1MDEwNSw1MDEwNiw1MDEwNyw1MDEwOCw1MDEwOSw1MDExMCw1MDExMSw1MDExMyw1MDExNCw1MDExNSw1MDExNiw1MDExNyw1MDExOCw1MDExOSw1MDEyMCw1MDEyMSw1MDEyMiw1MDEyMyw1MDEyNCw1MDEyNSw1MDEyNiw1MDEyNyw1MDEyOCw1MDEyOSw1MDEzMCw1MDEzMSw1MDEzMiw1MDEzMyw1MDEzNCw1MDEzNSw1MDEzOCw1MDEzOSw1MDE0MSw1MDE0Miw1MDE0NSw1MDE0Nyw1MDE0OCw1MDE0OSw1MDE1MCw1MDE1MSw1MDE1NCw1MDE1NSw1MDE1Niw1MDE1OCw1MDE1OSw1MDE2MCw1MDE2MSw1MDE2Miw1MDE2Myw1MDE2Niw1MDE2Nyw1MDE2OSw1MDE3MCw1MDE3MSw1MDE3Miw1MDE3Myw1MDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDE3NSw1MDE3Niw1MDE3Nyw1MDE3OCw1MDE3OSw1MDE4MCw1MDE4MSw1MDE4Miw1MDE4Myw1MDE4NSw1MDE4Niw1MDE4Nyw1MDE4OCw1MDE4OSw1MDE5MCw1MDE5MSw1MDE5Myw1MDE5NCw1MDE5NSw1MDE5Niw1MDE5Nyw1MDE5OCw1MDE5OSw1MDIwMCw1MDIwMSw1MDIwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDIwMyw1MDIwNCw1MDIwNSw1MDIwNiw1MDIwNyw1MDIwOCw1MDIwOSw1MDIxMCw1MDIxMSw1MDIxMyw1MDIxNCw1MDIxNSw1MDIxNiw1MDIxNyw1MDIxOCw1MDIxOSw1MDIyMSw1MDIyMiw1MDIyMyw1MDIyNSw1MDIyNiw1MDIyNyw1MDIyOSw1MDIzMCw1MDIzMSw1MDIzMiw1MDIzMyw1MDIzNCw1MDIzNSw1MDIzOCw1MDIzOSw1MDI0MCw1MDI0MSw1MDI0Miw1MDI0Myw1MDI0NCw1MDI0NSw1MDI0Niw1MDI0Nyw1MDI0OSw1MDI1MCw1MDI1MSw1MDI1Miw1MDI1Myw1MDI1NCw1MDI1NSw1MDI1Niw1MDI1Nyw1MDI1OCw1MDI1OSw1MDI2MCw1MDI2MSw1MDI2Miw1MDI2Myw1MDI2NCw1MDI2NSw1MDI2Niw1MDI2Nyw1MDI2OCw1MDI2OSw1MDI3MCw1MDI3MSw1MDI3Miw1MDI3Myw1MDI3NCw1MDI3NSw1MDI3OCw1MDI3OSw1MDI4MSw1MDI4Miw1MDI4Myw1MDI4NSw1MDI4Niw1MDI4Nyw1MDI4OCw1MDI4OSw1MDI5MCw1MDI5MSw1MDI5NCw1MDI5NSw1MDI5Niw1MDI5OCw1MDI5OSw1MDMwMCw1MDMwMSw1MDMwMiw1MDMwMyw1MDMwNSw1MDMwNiw1MDMwNyw1MDMwOCw1MDMwOSw1MDMxMCw1MDMxMSw1MDMxMiw1MDMxMyw1MDMxNCw1MDMxNSw1MDMxNiw1MDMxNyw1MDMxOCw1MDMxOSw1MDMyMCw1MDMyMSw1MDMyMiw1MDMyMyw1MDMyNSw1MDMyNiw1MDMyNyw1MDMyOCw1MDMyOSw1MDMzMCw1MDMzMSw1MDMzMyw1MDMzNCw1MDMzNSw1MDMzNiw1MDMzNyw1MDMzOCw1MDMzOSw1MDM0MCw1MDM0MSw1MDM0Miw1MDM0Myw1MDM0NCw1MDM0NSw1MDM0Niw1MDM0Nyw1MDM0OCw1MDM0OSw1MDM1MCw1MDM1MSw1MDM1Miw1MDM1Myw1MDM1NCw1MDM1NSw1MDM1Niw1MDM1Nyw1MDM1OCw1MDM1OSw1MDM2MSw1MDM2Miw1MDM2Myw1MDM2NSw1MDM2Niw1MDM2Nyw1MDM2OCw1MDM2OSw1MDM3MCw1MDM3MSw1MDM3Miw1MDM3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDM3NCw1MDM3NSw1MDM3Niw1MDM3Nyw1MDM3OCw1MDM3OSw1MDM4MCw1MDM4MSw1MDM4Miw1MDM4Myw1MDM4NCw1MDM4NSw1MDM4Niw1MDM4Nyw1MDM4OCw1MDM4OSw1MDM5MCw1MDM5MSw1MDM5Miw1MDM5Myw1MDM5NCw1MDM5NSw1MDM5Niw1MDM5Nyw1MDM5OCw1MDM5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDQwMCw1MDQwMSw1MDQwMiw1MDQwMyw1MDQwNCw1MDQwNSw1MDQwNiw1MDQwNyw1MDQwOCw1MDQxMCw1MDQxMSw1MDQxMiw1MDQxMyw1MDQxNCw1MDQxNSw1MDQxOCw1MDQxOSw1MDQyMSw1MDQyMiw1MDQyMyw1MDQyNSw1MDQyNyw1MDQyOCw1MDQyOSw1MDQzMCw1MDQzNCw1MDQzNSw1MDQzNiw1MDQzNyw1MDQzOCw1MDQzOSw1MDQ0MCw1MDQ0MSw1MDQ0Miw1MDQ0Myw1MDQ0NSw1MDQ0Niw1MDQ0Nyw1MDQ0OSw1MDQ1MCw1MDQ1MSw1MDQ1Myw1MDQ1NCw1MDQ1NSw1MDQ1Niw1MDQ1Nyw1MDQ1OCw1MDQ1OSw1MDQ2MSw1MDQ2Miw1MDQ2Myw1MDQ2NCw1MDQ2NSw1MDQ2Niw1MDQ2Nyw1MDQ2OCw1MDQ2OSw1MDQ3MCw1MDQ3MSw1MDQ3NCw1MDQ3NSw1MDQ3Nyw1MDQ3OCw1MDQ3OSw1MDQ4MSw1MDQ4Miw1MDQ4Myw1MDQ4NCw1MDQ4NSw1MDQ4Niw1MDQ4Nyw1MDQ5MCw1MDQ5Miw1MDQ5NCw1MDQ5NSw1MDQ5Niw1MDQ5Nyw1MDQ5OCw1MDQ5OSw1MDUwMiw1MDUwMyw1MDUwNyw1MDUxMSw1MDUxMiw1MDUxMyw1MDUxNCw1MDUxOCw1MDUyMiw1MDUyMyw1MDUyNCw1MDUyNyw1MDUzMCw1MDUzMSw1MDUzMyw1MDUzNCw1MDUzNSw1MDUzNyw1MDUzOCw1MDUzOSw1MDU0MCw1MDU0MSw1MDU0Miw1MDU0Myw1MDU0Niw1MDU1MCw1MDU1MSw1MDU1Miw1MDU1Myw1MDU1NCw1MDU1NSw1MDU1OCw1MDU1OSw1MDU2MSw1MDU2Miw1MDU2Myw1MDU2NSw1MDU2Niw1MDU2OCw1MDU2OSw1MDU3MCw1MDU3MSw1MDU3NCw1MDU3Niw1MDU3OCw1MDU3OSw1MDU4MCw1MDU4Miw1MDU4NSw1MDU4Niw1MDU4Nyw1MDU4OSw1MDU5MCw1MDU5MSw1MDU5Myw1MDU5NCw1MDU5NSw1MDU5Niw1MDU5Nyw1MDU5OCw1MDU5OSw1MDYwMCw1MDYwMiw1MDYwMyw1MDYwNCw1MDYwNSw1MDYwNiw1MDYwNyw1MDYwOCw1MDYwOSw1MDYxMCw1MDYxMSw1MDYxNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDYxNSw1MDYxOCw1MDYyMyw1MDYyNCw1MDYyNSw1MDYyNiw1MDYyNyw1MDYzNSw1MDYzNyw1MDYzOSw1MDY0Miw1MDY0Myw1MDY0NSw1MDY0Niw1MDY0Nyw1MDY0OSw1MDY1MCw1MDY1MSw1MDY1Miw1MDY1Myw1MDY1NCw1MDY1NSw1MDY1OCw1MDY2MCw1MDY2Miw1MDY2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDY2NCw1MDY2NSw1MDY2Niw1MDY2Nyw1MDY3MSw1MDY3Myw1MDY3NCw1MDY3NSw1MDY3Nyw1MDY4MCw1MDY4MSw1MDY4Miw1MDY4Myw1MDY5MCw1MDY5MSw1MDY5Miw1MDY5Nyw1MDY5OCw1MDY5OSw1MDcwMSw1MDcwMiw1MDcwMyw1MDcwNSw1MDcwNiw1MDcwNyw1MDcwOCw1MDcwOSw1MDcxMCw1MDcxMSw1MDcxNCw1MDcxNyw1MDcxOCw1MDcxOSw1MDcyMCw1MDcyMSw1MDcyMiw1MDcyMyw1MDcyNiw1MDcyNyw1MDcyOSw1MDczMCw1MDczMSw1MDczNSw1MDczNyw1MDczOCw1MDc0Miw1MDc0NCw1MDc0Niw1MDc0OCw1MDc0OSw1MDc1MCw1MDc1MSw1MDc1NCw1MDc1NSw1MDc1Nyw1MDc1OCw1MDc1OSw1MDc2MSw1MDc2Miw1MDc2Myw1MDc2NCw1MDc2NSw1MDc2Niw1MDc2Nyw1MDc3MCw1MDc3NCw1MDc3NSw1MDc3Niw1MDc3Nyw1MDc3OCw1MDc3OSw1MDc4Miw1MDc4Myw1MDc4NSw1MDc4Niw1MDc4Nyw1MDc4OCw1MDc4OSw1MDc5MCw1MDc5MSw1MDc5Miw1MDc5Myw1MDc5NCw1MDc5NSw1MDc5Nyw1MDc5OCw1MDgwMCw1MDgwMiw1MDgwMyw1MDgwNCw1MDgwNSw1MDgwNiw1MDgwNyw1MDgxMCw1MDgxMSw1MDgxMyw1MDgxNCw1MDgxNSw1MDgxNyw1MDgxOCw1MDgxOSw1MDgyMCw1MDgyMSw1MDgyMiw1MDgyMyw1MDgyNiw1MDgyOCw1MDgzMCw1MDgzMSw1MDgzMiw1MDgzMyw1MDgzNCw1MDgzNSw1MDgzOCw1MDgzOSw1MDg0MSw1MDg0Miw1MDg0Myw1MDg0NSw1MDg0Niw1MDg0Nyw1MDg0OCw1MDg0OSw1MDg1MCw1MDg1MSw1MDg1NCw1MDg1Niw1MDg1OCw1MDg1OSw1MDg2MCw1MDg2MSw1MDg2Miw1MDg2Myw1MDg2Niw1MDg2Nyw1MDg2OSw1MDg3MCw1MDg3MSw1MDg3NSw1MDg3Niw1MDg3Nyw1MDg3OCw1MDg3OSw1MDg4Miw1MDg4NCw1MDg4Niw1MDg4Nyw1MDg4OCw1MDg4OSw1MDg5MCw1MDg5MSw1MDg5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDg5NSw1MDg5Nyw1MDg5OCw1MDg5OSw1MDkwMSw1MDkwMiw1MDkwMyw1MDkwNCw1MDkwNSw1MDkwNiw1MDkwNyw1MDkxMCw1MDkxMSw1MDkxNCw1MDkxNSw1MDkxNiw1MDkxNyw1MDkxOCw1MDkxOSw1MDkyMiw1MDkyMyw1MDkyNSw1MDkyNiw1MDkyNyw1MDkyOSw1MDkzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDkzMSw1MDkzMiw1MDkzMyw1MDkzNCw1MDkzNSw1MDkzOCw1MDkzOSw1MDk0MCw1MDk0Miw1MDk0Myw1MDk0NCw1MDk0NSw1MDk0Niw1MDk0Nyw1MDk1MCw1MDk1MSw1MDk1Myw1MDk1NCw1MDk1NSw1MDk1Nyw1MDk1OCw1MDk1OSw1MDk2MCw1MDk2MSw1MDk2Miw1MDk2Myw1MDk2Niw1MDk2OCw1MDk3MCw1MDk3MSw1MDk3Miw1MDk3Myw1MDk3NCw1MDk3NSw1MDk3OCw1MDk3OSw1MDk4MSw1MDk4Miw1MDk4Myw1MDk4NSw1MDk4Niw1MDk4Nyw1MDk4OCw1MDk4OSw1MDk5MCw1MDk5MSw1MDk5NCw1MDk5Niw1MDk5OCw1MTAwMCw1MTAwMSw1MTAwMiw1MTAwMyw1MTAwNiw1MTAwNyw1MTAwOSw1MTAxMCw1MTAxMSw1MTAxMyw1MTAxNCw1MTAxNSw1MTAxNiw1MTAxNyw1MTAxOSw1MTAyMiw1MTAyNCw1MTAzMyw1MTAzNCw1MTAzNSw1MTAzNyw1MTAzOCw1MTAzOSw1MTA0MSw1MTA0Miw1MTA0Myw1MTA0NCw1MTA0NSw1MTA0Niw1MTA0Nyw1MTA0OSw1MTA1MCw1MTA1Miw1MTA1Myw1MTA1NCw1MTA1NSw1MTA1Niw1MTA1Nyw1MTA1OCw1MTA1OSw1MTA2Miw1MTA2Myw1MTA2NSw1MTA2Niw1MTA2Nyw1MTA3MSw1MTA3Miw1MTA3Myw1MTA3NCw1MTA3OCw1MTA4Myw1MTA4NCw1MTA4NSw1MTA4Nyw1MTA5MCw1MTA5MSw1MTA5Myw1MTA5Nyw1MTA5OSw1MTEwMCw1MTEwMSw1MTEwMiw1MTEwMyw1MTEwNiw1MTExMSw1MTExMiw1MTExMyw1MTExNCw1MTExNSw1MTExOCw1MTExOSw1MTEyMSw1MTEyMiw1MTEyMyw1MTEyNSw1MTEyNiw1MTEyNyw1MTEyOCw1MTEyOSw1MTEzMCw1MTEzMSw1MTEzNCw1MTEzOCw1MTEzOSw1MTE0MCw1MTE0MSw1MTE0Miw1MTE0Myw1MTE0Niw1MTE0Nyw1MTE0OSw1MTE1MSw1MTE1Myw1MTE1NCw1MTE1NSw1MTE1Niw1MTE1Nyw1MTE1OCw1MTE1OSw1MTE2MSw1MTE2Miw1MTE2Myw1MTE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTE2Niw1MTE2Nyw1MTE2OCw1MTE2OSw1MTE3MCw1MTE3MSw1MTE3Myw1MTE3NCw1MTE3NSw1MTE3Nyw1MTE3OCw1MTE3OSw1MTE4MSw1MTE4Miw1MTE4Myw1MTE4NCw1MTE4NSw1MTE4Niw1MTE4Nyw1MTE4OCw1MTE4OSw1MTE5MCw1MTE5MSw1MTE5Miw1MTE5Myw1MTE5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTE5NSw1MTE5Niw1MTE5Nyw1MTE5OCw1MTE5OSw1MTIwMiw1MTIwMyw1MTIwNSw1MTIwNiw1MTIwNyw1MTIwOSw1MTIxMSw1MTIxMiw1MTIxMyw1MTIxNCw1MTIxNSw1MTIxOCw1MTIyMCw1MTIyMyw1MTIyNCw1MTIyNSw1MTIyNiw1MTIyNyw1MTIzMCw1MTIzMSw1MTIzMyw1MTIzNCw1MTIzNSw1MTIzNyw1MTIzOCw1MTIzOSw1MTI0MCw1MTI0MSw1MTI0Miw1MTI0Myw1MTI0Niw1MTI0OCw1MTI1MCw1MTI1MSw1MTI1Miw1MTI1Myw1MTI1NCw1MTI1NSw1MTI1Nyw1MTI1OCw1MTI1OSw1MTI2MSw1MTI2Miw1MTI2Myw1MTI2NSw1MTI2Niw1MTI2Nyw1MTI2OCw1MTI2OSw1MTI3MCw1MTI3MSw1MTI3NCw1MTI3NSw1MTI3OCw1MTI3OSw1MTI4MCw1MTI4MSw1MTI4Miw1MTI4Myw1MTI4NSw1MTI4Niw1MTI4Nyw1MTI4OCw1MTI4OSw1MTI5MCw1MTI5MSw1MTI5Miw1MTI5Myw1MTI5NCw1MTI5NSw1MTI5Niw1MTI5Nyw1MTI5OCw1MTI5OSw1MTMwMCw1MTMwMSw1MTMwMiw1MTMwMyw1MTMwNCw1MTMwNSw1MTMwNiw1MTMwNyw1MTMwOCw1MTMwOSw1MTMxMCw1MTMxMSw1MTMxNCw1MTMxNSw1MTMxNyw1MTMxOCw1MTMxOSw1MTMyMSw1MTMyMyw1MTMyNCw1MTMyNSw1MTMyNiw1MTMyNyw1MTMzMCw1MTMzMiw1MTMzNiw1MTMzNyw1MTMzOCw1MTM0Miw1MTM0Myw1MTM0NCw1MTM0NSw1MTM0Niw1MTM0Nyw1MTM0OSw1MTM1MCw1MTM1MSw1MTM1Miw1MTM1Myw1MTM1NCw1MTM1NSw1MTM1Niw1MTM1OCw1MTM2MCw1MTM2Miw1MTM2Myw1MTM2NCw1MTM2NSw1MTM2Niw1MTM2Nyw1MTM2OSw1MTM3MCw1MTM3MSw1MTM3Miw1MTM3Myw1MTM3NCw1MTM3NSw1MTM3Niw1MTM3Nyw1MTM3OCw1MTM3OSw1MTM4MCw1MTM4MSw1MTM4Miw1MTM4Myw1MTM4NCw1MTM4NSw1MTM4Niw1MTM4Nyw1MTM5MCw1MTM5MSw1MTM5Miw1MTM5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTM5NCw1MTM5NSw1MTM5Nyw1MTM5OCw1MTM5OSw1MTQwMSw1MTQwMiw1MTQwMyw1MTQwNSw1MTQwNiw1MTQwNyw1MTQwOCw1MTQwOSw1MTQxMCw1MTQxMSw1MTQxNCw1MTQxNiw1MTQxOCw1MTQxOSw1MTQyMCw1MTQyMSw1MTQyMiw1MTQyMyw1MTQyNiw1MTQyNyw1MTQyOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTQzMCw1MTQzMSw1MTQzMiw1MTQzMyw1MTQzNCw1MTQzNSw1MTQzNiw1MTQzNyw1MTQzOCw1MTQzOSw1MTQ0MCw1MTQ0MSw1MTQ0Miw1MTQ0Myw1MTQ0NCw1MTQ0Niw1MTQ0Nyw1MTQ0OCw1MTQ0OSw1MTQ1MCw1MTQ1MSw1MTQ1NCw1MTQ1NSw1MTQ1Nyw1MTQ1OCw1MTQ1OSw1MTQ2Myw1MTQ2NCw1MTQ2NSw1MTQ2Niw1MTQ2Nyw1MTQ3MCwxMjI4OCwxMjI4OSwxMjI5MCwxODMsODIyOSw4MjMwLDE2OCwxMjI5MSwxNzMsODIxMyw4NzQxLDY1MzQwLDg3NjQsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4ODAwLDg4MDQsODgwNSw4NzM0LDg3NTYsMTc2LDgyNDIsODI0Myw4NDUxLDg0OTEsNjU1MDQsNjU1MDUsNjU1MDksOTc5NCw5NzkyLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsMTY3LDgyNTEsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4NTk0LDg1OTIsODU5Myw4NTk1LDg1OTYsMTIzMDcsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSw4NzQzLDg3NDQsNjU1MDYsNTE0NzIsNTE0NzQsNTE0NzUsNTE0NzYsNTE0NzcsNTE0NzgsNTE0NzksNTE0ODEsNTE0ODIsNTE0ODMsNTE0ODQsNTE0ODUsNTE0ODYsNTE0ODcsNTE0ODgsNTE0ODksNTE0OTAsNTE0OTEsNTE0OTIsNTE0OTMsNTE0OTQsNTE0OTUsNTE0OTYsNTE0OTcsNTE0OTgsNTE0OTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1MDEsNTE1MDIsNTE1MDMsNTE1MDQsNTE1MDUsNTE1MDYsNTE1MDcsNTE1MDksNTE1MTAsNTE1MTEsNTE1MTIsNTE1MTMsNTE1MTQsNTE1MTUsNTE1MTYsNTE1MTcsNTE1MTgsNTE1MTksNTE1MjAsNTE1MjEsNTE1MjIsNTE1MjMsNTE1MjQsNTE1MjUsNTE1MjYsNTE1MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1MjgsNTE1MjksNTE1MzAsNTE1MzEsNTE1MzIsNTE1MzMsNTE1MzQsNTE1MzUsNTE1MzgsNTE1MzksNTE1NDEsNTE1NDIsNTE1NDMsNTE1NDUsNTE1NDYsNTE1NDcsNTE1NDgsNTE1NDksNTE1NTAsNTE1NTEsNTE1NTQsNTE1NTYsNTE1NTcsNTE1NTgsNTE1NTksNTE1NjAsNTE1NjEsNTE1NjIsNTE1NjMsNTE1NjUsNTE1NjYsNTE1NjcsODY1OCw4NjYwLDg3MDQsODcwNywxODAsNjUzNzQsNzExLDcyOCw3MzMsNzMwLDcyOSwxODQsNzMxLDE2MSwxOTEsNzIwLDg3NTAsODcyMSw4NzE5LDE2NCw4NDU3LDgyNDAsOTY2NSw5NjY0LDk2NTUsOTY1NCw5ODI4LDk4MjQsOTgyNSw5ODI5LDk4MzEsOTgyNyw4ODU3LDk2NzIsOTYzNSw5NjgwLDk2ODEsOTYxOCw5NjM2LDk2MzcsOTY0MCw5NjM5LDk2MzgsOTY0MSw5ODMyLDk3NDMsOTc0Miw5NzU2LDk3NTgsMTgyLDgyMjQsODIyNSw4NTk3LDg1OTksODYwMSw4NTk4LDg2MDAsOTgzNyw5ODMzLDk4MzQsOTgzNiwxMjkyNywxMjgyOCw4NDcwLDEzMjU1LDg0ODIsMTMyNTAsMTMyNzIsODQ4MSw4MzY0LDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1NjksNTE1NzAsNTE1NzEsNTE1NzMsNTE1NzQsNTE1NzUsNTE1NzYsNTE1NzcsNTE1NzgsNTE1NzksNTE1ODEsNTE1ODIsNTE1ODMsNTE1ODQsNTE1ODUsNTE1ODYsNTE1ODcsNTE1ODgsNTE1ODksNTE1OTAsNTE1OTEsNTE1OTQsNTE1OTUsNTE1OTcsNTE1OTgsNTE1OTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE2MDEsNTE2MDIsNTE2MDMsNTE2MDQsNTE2MDUsNTE2MDYsNTE2MDcsNTE2MTAsNTE2MTIsNTE2MTQsNTE2MTUsNTE2MTYsNTE2MTcsNTE2MTgsNTE2MTksNTE2MjAsNTE2MjEsNTE2MjIsNTE2MjMsNTE2MjQsNTE2MjUsNTE2MjYsNTE2MjcsNTE2MjgsNTE2MjksNTE2MzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE2MzEsNTE2MzIsNTE2MzMsNTE2MzQsNTE2MzUsNTE2MzYsNTE2MzcsNTE2MzgsNTE2MzksNTE2NDAsNTE2NDEsNTE2NDIsNTE2NDMsNTE2NDQsNTE2NDUsNTE2NDYsNTE2NDcsNTE2NTAsNTE2NTEsNTE2NTMsNTE2NTQsNTE2NTcsNTE2NTksNTE2NjAsNTE2NjEsNTE2NjIsNTE2NjMsNTE2NjYsNTE2NjgsNTE2NzEsNTE2NzIsNTE2NzUsNjUyODEsNjUyODIsNjUyODMsNjUyODQsNjUyODUsNjUyODYsNjUyODcsNjUyODgsNjUyODksNjUyOTAsNjUyOTEsNjUyOTIsNjUyOTMsNjUyOTQsNjUyOTUsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsNjUzMDYsNjUzMDcsNjUzMDgsNjUzMDksNjUzMTAsNjUzMTEsNjUzMTIsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzMzksNjU1MTAsNjUzNDEsNjUzNDIsNjUzNDMsNjUzNDQsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsNjUzNzEsNjUzNzIsNjUzNzMsNjU1MDcsNTE2NzgsNTE2NzksNTE2ODEsNTE2ODMsNTE2ODUsNTE2ODYsNTE2ODgsNTE2ODksNTE2OTAsNTE2OTEsNTE2OTQsNTE2OTgsNTE2OTksNTE3MDAsNTE3MDEsNTE3MDIsNTE3MDMsNTE3MDYsNTE3MDcsNTE3MDksNTE3MTAsNTE3MTEsNTE3MTMsNTE3MTQsNTE3MTUsNTE3MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE3MTcsNTE3MTgsNTE3MTksNTE3MjIsNTE3MjYsNTE3MjcsNTE3MjgsNTE3MjksNTE3MzAsNTE3MzEsNTE3MzMsNTE3MzQsNTE3MzUsNTE3MzcsNTE3MzgsNTE3MzksNTE3NDAsNTE3NDEsNTE3NDIsNTE3NDMsNTE3NDQsNTE3NDUsNTE3NDYsNTE3NDcsNTE3NDgsNTE3NDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE3NTAsNTE3NTEsNTE3NTIsNTE3NTQsNTE3NTUsNTE3NTYsNTE3NTcsNTE3NTgsNTE3NTksNTE3NjAsNTE3NjEsNTE3NjIsNTE3NjMsNTE3NjQsNTE3NjUsNTE3NjYsNTE3NjcsNTE3NjgsNTE3NjksNTE3NzAsNTE3NzEsNTE3NzIsNTE3NzMsNTE3NzQsNTE3NzUsNTE3NzYsNTE3NzcsNTE3NzgsNTE3NzksNTE3ODAsNTE3ODEsNTE3ODIsMTI1OTMsMTI1OTQsMTI1OTUsMTI1OTYsMTI1OTcsMTI1OTgsMTI1OTksMTI2MDAsMTI2MDEsMTI2MDIsMTI2MDMsMTI2MDQsMTI2MDUsMTI2MDYsMTI2MDcsMTI2MDgsMTI2MDksMTI2MTAsMTI2MTEsMTI2MTIsMTI2MTMsMTI2MTQsMTI2MTUsMTI2MTYsMTI2MTcsMTI2MTgsMTI2MTksMTI2MjAsMTI2MjEsMTI2MjIsMTI2MjMsMTI2MjQsMTI2MjUsMTI2MjYsMTI2MjcsMTI2MjgsMTI2MjksMTI2MzAsMTI2MzEsMTI2MzIsMTI2MzMsMTI2MzQsMTI2MzUsMTI2MzYsMTI2MzcsMTI2MzgsMTI2MzksMTI2NDAsMTI2NDEsMTI2NDIsMTI2NDMsMTI2NDQsMTI2NDUsMTI2NDYsMTI2NDcsMTI2NDgsMTI2NDksMTI2NTAsMTI2NTEsMTI2NTIsMTI2NTMsMTI2NTQsMTI2NTUsMTI2NTYsMTI2NTcsMTI2NTgsMTI2NTksMTI2NjAsMTI2NjEsMTI2NjIsMTI2NjMsMTI2NjQsMTI2NjUsMTI2NjYsMTI2NjcsMTI2NjgsMTI2NjksMTI2NzAsMTI2NzEsMTI2NzIsMTI2NzMsMTI2NzQsMTI2NzUsMTI2NzYsMTI2NzcsMTI2NzgsMTI2NzksMTI2ODAsMTI2ODEsMTI2ODIsMTI2ODMsMTI2ODQsMTI2ODUsMTI2ODYsNTE3ODMsNTE3ODQsNTE3ODUsNTE3ODYsNTE3ODcsNTE3OTAsNTE3OTEsNTE3OTMsNTE3OTQsNTE3OTUsNTE3OTcsNTE3OTgsNTE3OTksNTE4MDAsNTE4MDEsNTE4MDIsNTE4MDMsNTE4MDYsNTE4MTAsNTE4MTEsNTE4MTIsNTE4MTMsNTE4MTQsNTE4MTUsNTE4MTcsNTE4MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4MTksNTE4MjAsNTE4MjEsNTE4MjIsNTE4MjMsNTE4MjQsNTE4MjUsNTE4MjYsNTE4MjcsNTE4MjgsNTE4MjksNTE4MzAsNTE4MzEsNTE4MzIsNTE4MzMsNTE4MzQsNTE4MzUsNTE4MzYsNTE4MzgsNTE4MzksNTE4NDAsNTE4NDEsNTE4NDIsNTE4NDMsNTE4NDUsNTE4NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4NDcsNTE4NDgsNTE4NDksNTE4NTAsNTE4NTEsNTE4NTIsNTE4NTMsNTE4NTQsNTE4NTUsNTE4NTYsNTE4NTcsNTE4NTgsNTE4NTksNTE4NjAsNTE4NjEsNTE4NjIsNTE4NjMsNTE4NjUsNTE4NjYsNTE4NjcsNTE4NjgsNTE4NjksNTE4NzAsNTE4NzEsNTE4NzIsNTE4NzMsNTE4NzQsNTE4NzUsNTE4NzYsNTE4NzcsNTE4NzgsNTE4NzksODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg4MCw1MTg4MSw1MTg4Miw1MTg4Myw1MTg4NCw1MTg4NSw1MTg4Niw1MTg4Nyw1MTg4OCw1MTg4OSw1MTg5MCw1MTg5MSw1MTg5Miw1MTg5Myw1MTg5NCw1MTg5NSw1MTg5Niw1MTg5Nyw1MTg5OCw1MTg5OSw1MTkwMiw1MTkwMyw1MTkwNSw1MTkwNiw1MTkwNyw1MTkwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTkxMCw1MTkxMSw1MTkxMiw1MTkxMyw1MTkxNCw1MTkxNSw1MTkxOCw1MTkyMCw1MTkyMiw1MTkyNCw1MTkyNSw1MTkyNiw1MTkyNyw1MTkzMCw1MTkzMSw1MTkzMiw1MTkzMyw1MTkzNCw1MTkzNSw1MTkzNyw1MTkzOCw1MTkzOSw1MTk0MCw1MTk0MSw1MTk0Miw1MTk0MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk0NCw1MTk0NSw1MTk0Niw1MTk0Nyw1MTk0OSw1MTk1MCw1MTk1MSw1MTk1Miw1MTk1Myw1MTk1NCw1MTk1NSw1MTk1Nyw1MTk1OCw1MTk1OSw1MTk2MCw1MTk2MSw1MTk2Miw1MTk2Myw1MTk2NCw1MTk2NSw1MTk2Niw1MTk2Nyw1MTk2OCw1MTk2OSw1MTk3MCw1MTk3MSw1MTk3Miw1MTk3Myw1MTk3NCw1MTk3NSw1MTk3Nyw1MTk3OCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsOTQ5MCw5NDg5LDk0OTgsOTQ5Nyw5NDk0LDk0OTMsOTQ4Niw5NDg1LDk1MDIsOTUwMyw5NTA1LDk1MDYsOTUxMCw5NTExLDk1MTMsOTUxNCw5NTE3LDk1MTgsOTUyMSw5NTIyLDk1MjUsOTUyNiw5NTI5LDk1MzAsOTUzMyw5NTM0LDk1MzYsOTUzNyw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTc5LDUxOTgwLDUxOTgxLDUxOTgyLDUxOTgzLDUxOTg1LDUxOTg2LDUxOTg3LDUxOTg5LDUxOTkwLDUxOTkxLDUxOTkzLDUxOTk0LDUxOTk1LDUxOTk2LDUxOTk3LDUxOTk4LDUxOTk5LDUyMDAyLDUyMDAzLDUyMDA0LDUyMDA1LDUyMDA2LDUyMDA3LDUyMDA4LDUyMDA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDEwLDUyMDExLDUyMDEyLDUyMDEzLDUyMDE0LDUyMDE1LDUyMDE2LDUyMDE3LDUyMDE4LDUyMDE5LDUyMDIwLDUyMDIxLDUyMDIyLDUyMDIzLDUyMDI0LDUyMDI1LDUyMDI2LDUyMDI3LDUyMDI4LDUyMDI5LDUyMDMwLDUyMDMxLDUyMDMyLDUyMDM0LDUyMDM1LDUyMDM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDM3LDUyMDM4LDUyMDM5LDUyMDQyLDUyMDQzLDUyMDQ1LDUyMDQ2LDUyMDQ3LDUyMDQ5LDUyMDUwLDUyMDUxLDUyMDUyLDUyMDUzLDUyMDU0LDUyMDU1LDUyMDU4LDUyMDU5LDUyMDYwLDUyMDYyLDUyMDYzLDUyMDY0LDUyMDY1LDUyMDY2LDUyMDY3LDUyMDY5LDUyMDcwLDUyMDcxLDUyMDcyLDUyMDczLDUyMDc0LDUyMDc1LDUyMDc2LDEzMjA1LDEzMjA2LDEzMjA3LDg0NjcsMTMyMDgsMTMyNTIsMTMyMTksMTMyMjAsMTMyMjEsMTMyMjIsMTMyMDksMTMyMTAsMTMyMTEsMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTUsMTMyMTYsMTMyMTcsMTMyMTgsMTMyNTgsMTMxOTcsMTMxOTgsMTMxOTksMTMyNjMsMTMxOTIsMTMxOTMsMTMyNTYsMTMyMjMsMTMyMjQsMTMyMzIsMTMyMzMsMTMyMzQsMTMyMzUsMTMyMzYsMTMyMzcsMTMyMzgsMTMyMzksMTMyNDAsMTMyNDEsMTMxODQsMTMxODUsMTMxODYsMTMxODcsMTMxODgsMTMyNDIsMTMyNDMsMTMyNDQsMTMyNDUsMTMyNDYsMTMyNDcsMTMyMDAsMTMyMDEsMTMyMDIsMTMyMDMsMTMyMDQsODQ4NiwxMzI0OCwxMzI0OSwxMzE5NCwxMzE5NSwxMzE5NiwxMzI3MCwxMzI1MywxMzIyOSwxMzIzMCwxMzIzMSwxMzI3NSwxMzIyNSwxMzIyNiwxMzIyNywxMzIyOCwxMzI3NywxMzI2NCwxMzI2NywxMzI1MSwxMzI1NywxMzI3NiwxMzI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjA3Nyw1MjA3OCw1MjA3OSw1MjA4MCw1MjA4MSw1MjA4Miw1MjA4Myw1MjA4NCw1MjA4NSw1MjA4Niw1MjA4Nyw1MjA5MCw1MjA5MSw1MjA5Miw1MjA5Myw1MjA5NCw1MjA5NSw1MjA5Niw1MjA5Nyw1MjA5OCw1MjA5OSw1MjEwMCw1MjEwMSw1MjEwMiw1MjEwMyw1MjEwNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjEwNSw1MjEwNiw1MjEwNyw1MjEwOCw1MjEwOSw1MjExMCw1MjExMSw1MjExMiw1MjExMyw1MjExNCw1MjExNSw1MjExNiw1MjExNyw1MjExOCw1MjExOSw1MjEyMCw1MjEyMSw1MjEyMiw1MjEyMyw1MjEyNSw1MjEyNiw1MjEyNyw1MjEyOCw1MjEyOSw1MjEzMCw1MjEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjEzMiw1MjEzMyw1MjEzNCw1MjEzNSw1MjEzNiw1MjEzNyw1MjEzOCw1MjEzOSw1MjE0MCw1MjE0MSw1MjE0Miw1MjE0Myw1MjE0NCw1MjE0NSw1MjE0Niw1MjE0Nyw1MjE0OCw1MjE0OSw1MjE1MCw1MjE1MSw1MjE1Myw1MjE1NCw1MjE1NSw1MjE1Niw1MjE1Nyw1MjE1OCw1MjE1OSw1MjE2MCw1MjE2MSw1MjE2Miw1MjE2Myw1MjE2NCwxOTgsMjA4LDE3MCwyOTQsbnVsbCwzMDYsbnVsbCwzMTksMzIxLDIxNiwzMzgsMTg2LDIyMiwzNTgsMzMwLG51bGwsMTI4OTYsMTI4OTcsMTI4OTgsMTI4OTksMTI5MDAsMTI5MDEsMTI5MDIsMTI5MDMsMTI5MDQsMTI5MDUsMTI5MDYsMTI5MDcsMTI5MDgsMTI5MDksMTI5MTAsMTI5MTEsMTI5MTIsMTI5MTMsMTI5MTQsMTI5MTUsMTI5MTYsMTI5MTcsMTI5MTgsMTI5MTksMTI5MjAsMTI5MjEsMTI5MjIsMTI5MjMsOTQyNCw5NDI1LDk0MjYsOTQyNyw5NDI4LDk0MjksOTQzMCw5NDMxLDk0MzIsOTQzMyw5NDM0LDk0MzUsOTQzNiw5NDM3LDk0MzgsOTQzOSw5NDQwLDk0NDEsOTQ0Miw5NDQzLDk0NDQsOTQ0NSw5NDQ2LDk0NDcsOTQ0OCw5NDQ5LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkzMjQsOTMyNSw5MzI2LDE4OSw4NTMxLDg1MzIsMTg4LDE5MCw4NTM5LDg1NDAsODU0MSw4NTQyLDUyMTY1LDUyMTY2LDUyMTY3LDUyMTY4LDUyMTY5LDUyMTcwLDUyMTcxLDUyMTcyLDUyMTczLDUyMTc0LDUyMTc1LDUyMTc2LDUyMTc3LDUyMTc4LDUyMTc5LDUyMTgxLDUyMTgyLDUyMTgzLDUyMTg0LDUyMTg1LDUyMTg2LDUyMTg3LDUyMTg4LDUyMTg5LDUyMTkwLDUyMTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTkyLDUyMTkzLDUyMTk0LDUyMTk1LDUyMTk3LDUyMTk4LDUyMjAwLDUyMjAyLDUyMjAzLDUyMjA0LDUyMjA1LDUyMjA2LDUyMjA3LDUyMjA4LDUyMjA5LDUyMjEwLDUyMjExLDUyMjEyLDUyMjEzLDUyMjE0LDUyMjE1LDUyMjE2LDUyMjE3LDUyMjE4LDUyMjE5LDUyMjIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMjIxLDUyMjIyLDUyMjIzLDUyMjI0LDUyMjI1LDUyMjI2LDUyMjI3LDUyMjI4LDUyMjI5LDUyMjMwLDUyMjMxLDUyMjMyLDUyMjMzLDUyMjM0LDUyMjM1LDUyMjM4LDUyMjM5LDUyMjQxLDUyMjQyLDUyMjQzLDUyMjQ1LDUyMjQ2LDUyMjQ3LDUyMjQ4LDUyMjQ5LDUyMjUwLDUyMjUxLDUyMjU0LDUyMjU1LDUyMjU2LDUyMjU5LDUyMjYwLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjAsMzIyLDI0OCwzMzksMjIzLDI1NCwzNTksMzMxLDMyOSwxMjgwMCwxMjgwMSwxMjgwMiwxMjgwMywxMjgwNCwxMjgwNSwxMjgwNiwxMjgwNywxMjgwOCwxMjgwOSwxMjgxMCwxMjgxMSwxMjgxMiwxMjgxMywxMjgxNCwxMjgxNSwxMjgxNiwxMjgxNywxMjgxOCwxMjgxOSwxMjgyMCwxMjgyMSwxMjgyMiwxMjgyMywxMjgyNCwxMjgyNSwxMjgyNiwxMjgyNyw5MzcyLDkzNzMsOTM3NCw5Mzc1LDkzNzYsOTM3Nyw5Mzc4LDkzNzksOTM4MCw5MzgxLDkzODIsOTM4Myw5Mzg0LDkzODUsOTM4Niw5Mzg3LDkzODgsOTM4OSw5MzkwLDkzOTEsOTM5Miw5MzkzLDkzOTQsOTM5NSw5Mzk2LDkzOTcsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsMTg1LDE3OCwxNzksODMwOCw4MzE5LDgzMjEsODMyMiw4MzIzLDgzMjQsNTIyNjEsNTIyNjIsNTIyNjYsNTIyNjcsNTIyNjksNTIyNzEsNTIyNzMsNTIyNzQsNTIyNzUsNTIyNzYsNTIyNzcsNTIyNzgsNTIyNzksNTIyODIsNTIyODcsNTIyODgsNTIyODksNTIyOTAsNTIyOTEsNTIyOTQsNTIyOTUsNTIyOTcsNTIyOTgsNTIyOTksNTIzMDEsNTIzMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzMDMsNTIzMDQsNTIzMDUsNTIzMDYsNTIzMDcsNTIzMTAsNTIzMTQsNTIzMTUsNTIzMTYsNTIzMTcsNTIzMTgsNTIzMTksNTIzMjEsNTIzMjIsNTIzMjMsNTIzMjUsNTIzMjcsNTIzMjksNTIzMzAsNTIzMzEsNTIzMzIsNTIzMzMsNTIzMzQsNTIzMzUsNTIzMzcsNTIzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzMzksNTIzNDAsNTIzNDIsNTIzNDMsNTIzNDQsNTIzNDUsNTIzNDYsNTIzNDcsNTIzNDgsNTIzNDksNTIzNTAsNTIzNTEsNTIzNTIsNTIzNTMsNTIzNTQsNTIzNTUsNTIzNTYsNTIzNTcsNTIzNTgsNTIzNTksNTIzNjAsNTIzNjEsNTIzNjIsNTIzNjMsNTIzNjQsNTIzNjUsNTIzNjYsNTIzNjcsNTIzNjgsNTIzNjksNTIzNzAsNTIzNzEsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzcyLDUyMzczLDUyMzc0LDUyMzc1LDUyMzc4LDUyMzc5LDUyMzgxLDUyMzgyLDUyMzgzLDUyMzg1LDUyMzg2LDUyMzg3LDUyMzg4LDUyMzg5LDUyMzkwLDUyMzkxLDUyMzk0LDUyMzk4LDUyMzk5LDUyNDAwLDUyNDAxLDUyNDAyLDUyNDAzLDUyNDA2LDUyNDA3LDUyNDA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDEwLDUyNDExLDUyNDEzLDUyNDE0LDUyNDE1LDUyNDE2LDUyNDE3LDUyNDE4LDUyNDE5LDUyNDIyLDUyNDI0LDUyNDI2LDUyNDI3LDUyNDI4LDUyNDI5LDUyNDMwLDUyNDMxLDUyNDMzLDUyNDM0LDUyNDM1LDUyNDM3LDUyNDM4LDUyNDM5LDUyNDQwLDUyNDQxLDUyNDQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDQzLDUyNDQ0LDUyNDQ1LDUyNDQ2LDUyNDQ3LDUyNDQ4LDUyNDQ5LDUyNDUwLDUyNDUxLDUyNDUzLDUyNDU0LDUyNDU1LDUyNDU2LDUyNDU3LDUyNDU4LDUyNDU5LDUyNDYxLDUyNDYyLDUyNDYzLDUyNDY1LDUyNDY2LDUyNDY3LDUyNDY4LDUyNDY5LDUyNDcwLDUyNDcxLDUyNDcyLDUyNDczLDUyNDc0LDUyNDc1LDUyNDc2LDUyNDc3LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ3OCw1MjQ3OSw1MjQ4MCw1MjQ4Miw1MjQ4Myw1MjQ4NCw1MjQ4NSw1MjQ4Niw1MjQ4Nyw1MjQ5MCw1MjQ5MSw1MjQ5Myw1MjQ5NCw1MjQ5NSw1MjQ5Nyw1MjQ5OCw1MjQ5OSw1MjUwMCw1MjUwMSw1MjUwMiw1MjUwMyw1MjUwNiw1MjUwOCw1MjUxMCw1MjUxMSw1MjUxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjUxMyw1MjUxNCw1MjUxNSw1MjUxNyw1MjUxOCw1MjUxOSw1MjUyMSw1MjUyMiw1MjUyMyw1MjUyNSw1MjUyNiw1MjUyNyw1MjUyOCw1MjUyOSw1MjUzMCw1MjUzMSw1MjUzMiw1MjUzMyw1MjUzNCw1MjUzNSw1MjUzNiw1MjUzOCw1MjUzOSw1MjU0MCw1MjU0MSw1MjU0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU0Myw1MjU0NCw1MjU0NSw1MjU0Niw1MjU0Nyw1MjU0OCw1MjU0OSw1MjU1MCw1MjU1MSw1MjU1Miw1MjU1Myw1MjU1NCw1MjU1NSw1MjU1Niw1MjU1Nyw1MjU1OCw1MjU1OSw1MjU2MCw1MjU2MSw1MjU2Miw1MjU2Myw1MjU2NCw1MjU2NSw1MjU2Niw1MjU2Nyw1MjU2OCw1MjU2OSw1MjU3MCw1MjU3MSw1MjU3Myw1MjU3NCw1MjU3NSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTc3LDUyNTc4LDUyNTc5LDUyNTgxLDUyNTgyLDUyNTgzLDUyNTg0LDUyNTg1LDUyNTg2LDUyNTg3LDUyNTkwLDUyNTkyLDUyNTk0LDUyNTk1LDUyNTk2LDUyNTk3LDUyNTk4LDUyNTk5LDUyNjAxLDUyNjAyLDUyNjAzLDUyNjA0LDUyNjA1LDUyNjA2LDUyNjA3LDUyNjA4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjA5LDUyNjEwLDUyNjExLDUyNjEyLDUyNjEzLDUyNjE0LDUyNjE1LDUyNjE3LDUyNjE4LDUyNjE5LDUyNjIwLDUyNjIxLDUyNjIyLDUyNjIzLDUyNjI0LDUyNjI1LDUyNjI2LDUyNjI3LDUyNjMwLDUyNjMxLDUyNjMzLDUyNjM0LDUyNjM1LDUyNjM3LDUyNjM4LDUyNjM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjQwLDUyNjQxLDUyNjQyLDUyNjQzLDUyNjQ2LDUyNjQ4LDUyNjUwLDUyNjUxLDUyNjUyLDUyNjUzLDUyNjU0LDUyNjU1LDUyNjU3LDUyNjU4LDUyNjU5LDUyNjYwLDUyNjYxLDUyNjYyLDUyNjYzLDUyNjY0LDUyNjY1LDUyNjY2LDUyNjY3LDUyNjY4LDUyNjY5LDUyNjcwLDUyNjcxLDUyNjcyLDUyNjczLDUyNjc0LDUyNjc1LDUyNjc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NzgsNTI2NzksNTI2ODAsNTI2ODEsNTI2ODIsNTI2ODMsNTI2ODUsNTI2ODYsNTI2ODcsNTI2ODksNTI2OTAsNTI2OTEsNTI2OTIsNTI2OTMsNTI2OTQsNTI2OTUsNTI2OTYsNTI2OTcsNTI2OTgsNTI2OTksNTI3MDAsNTI3MDEsNTI3MDIsNTI3MDMsNTI3MDQsNTI3MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3MDYsNTI3MDcsNTI3MDgsNTI3MDksNTI3MTAsNTI3MTEsNTI3MTMsNTI3MTQsNTI3MTUsNTI3MTcsNTI3MTgsNTI3MTksNTI3MjEsNTI3MjIsNTI3MjMsNTI3MjQsNTI3MjUsNTI3MjYsNTI3MjcsNTI3MzAsNTI3MzIsNTI3MzQsNTI3MzUsNTI3MzYsNTI3MzcsNTI3MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3MzksNTI3NDEsNTI3NDIsNTI3NDMsNTI3NDUsNTI3NDYsNTI3NDcsNTI3NDksNTI3NTAsNTI3NTEsNTI3NTIsNTI3NTMsNTI3NTQsNTI3NTUsNTI3NTcsNTI3NTgsNTI3NTksNTI3NjAsNTI3NjIsNTI3NjMsNTI3NjQsNTI3NjUsNTI3NjYsNTI3NjcsNTI3NzAsNTI3NzEsNTI3NzMsNTI3NzQsNTI3NzUsNTI3NzcsNTI3NzgsNTI3NzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjc4MCw1Mjc4MSw1Mjc4Miw1Mjc4Myw1Mjc4Niw1Mjc4OCw1Mjc5MCw1Mjc5MSw1Mjc5Miw1Mjc5Myw1Mjc5NCw1Mjc5NSw1Mjc5Niw1Mjc5Nyw1Mjc5OCw1Mjc5OSw1MjgwMCw1MjgwMSw1MjgwMiw1MjgwMyw1MjgwNCw1MjgwNSw1MjgwNiw1MjgwNyw1MjgwOCw1MjgwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjgxMCw1MjgxMSw1MjgxMiw1MjgxMyw1MjgxNCw1MjgxNSw1MjgxNiw1MjgxNyw1MjgxOCw1MjgxOSw1MjgyMCw1MjgyMSw1MjgyMiw1MjgyMyw1MjgyNiw1MjgyNyw1MjgyOSw1MjgzMCw1MjgzNCw1MjgzNSw1MjgzNiw1MjgzNyw1MjgzOCw1MjgzOSw1Mjg0Miw1Mjg0NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg0Niw1Mjg0Nyw1Mjg0OCw1Mjg0OSw1Mjg1MCw1Mjg1MSw1Mjg1NCw1Mjg1NSw1Mjg1Nyw1Mjg1OCw1Mjg1OSw1Mjg2MSw1Mjg2Miw1Mjg2Myw1Mjg2NCw1Mjg2NSw1Mjg2Niw1Mjg2Nyw1Mjg3MCw1Mjg3Miw1Mjg3NCw1Mjg3NSw1Mjg3Niw1Mjg3Nyw1Mjg3OCw1Mjg3OSw1Mjg4Miw1Mjg4Myw1Mjg4NSw1Mjg4Niw1Mjg4Nyw1Mjg4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODkwLDUyODkxLDUyODkyLDUyODkzLDUyODk0LDUyODk1LDUyODk4LDUyOTAyLDUyOTAzLDUyOTA0LDUyOTA1LDUyOTA2LDUyOTA3LDUyOTEwLDUyOTExLDUyOTEyLDUyOTEzLDUyOTE0LDUyOTE1LDUyOTE2LDUyOTE3LDUyOTE4LDUyOTE5LDUyOTIwLDUyOTIxLDUyOTIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyOTIzLDUyOTI0LDUyOTI1LDUyOTI2LDUyOTI3LDUyOTI4LDUyOTMwLDUyOTMxLDUyOTMyLDUyOTMzLDUyOTM0LDUyOTM1LDUyOTM2LDUyOTM3LDUyOTM4LDUyOTM5LDUyOTQwLDUyOTQxLDUyOTQyLDUyOTQzLDUyOTQ0LDUyOTQ1LDUyOTQ2LDUyOTQ3LDUyOTQ4LDUyOTQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyOTUwLDUyOTUxLDUyOTUyLDUyOTUzLDUyOTU0LDUyOTU1LDUyOTU2LDUyOTU3LDUyOTU4LDUyOTU5LDUyOTYwLDUyOTYxLDUyOTYyLDUyOTYzLDUyOTY2LDUyOTY3LDUyOTY5LDUyOTcwLDUyOTczLDUyOTc0LDUyOTc1LDUyOTc2LDUyOTc3LDUyOTc4LDUyOTc5LDUyOTgyLDUyOTg2LDUyOTg3LDUyOTg4LDUyOTg5LDUyOTkwLDUyOTkxLDQ0MDMyLDQ0MDMzLDQ0MDM2LDQ0MDM5LDQ0MDQwLDQ0MDQxLDQ0MDQyLDQ0MDQ4LDQ0MDQ5LDQ0MDUwLDQ0MDUxLDQ0MDUyLDQ0MDUzLDQ0MDU0LDQ0MDU1LDQ0MDU3LDQ0MDU4LDQ0MDU5LDQ0MDYwLDQ0MDYxLDQ0MDY0LDQ0MDY4LDQ0MDc2LDQ0MDc3LDQ0MDc5LDQ0MDgwLDQ0MDgxLDQ0MDg4LDQ0MDg5LDQ0MDkyLDQ0MDk2LDQ0MTA3LDQ0MTA5LDQ0MTE2LDQ0MTIwLDQ0MTI0LDQ0MTQ0LDQ0MTQ1LDQ0MTQ4LDQ0MTUxLDQ0MTUyLDQ0MTU0LDQ0MTYwLDQ0MTYxLDQ0MTYzLDQ0MTY0LDQ0MTY1LDQ0MTY2LDQ0MTY5LDQ0MTcwLDQ0MTcxLDQ0MTcyLDQ0MTc2LDQ0MTgwLDQ0MTg4LDQ0MTg5LDQ0MTkxLDQ0MTkyLDQ0MTkzLDQ0MjAwLDQ0MjAxLDQ0MjAyLDQ0MjA0LDQ0MjA3LDQ0MjA4LDQ0MjE2LDQ0MjE3LDQ0MjE5LDQ0MjIwLDQ0MjIxLDQ0MjI1LDQ0MjI4LDQ0MjMyLDQ0MjM2LDQ0MjQ1LDQ0MjQ3LDQ0MjU2LDQ0MjU3LDQ0MjYwLDQ0MjYzLDQ0MjY0LDQ0MjY2LDQ0MjY4LDQ0MjcxLDQ0MjcyLDQ0MjczLDQ0Mjc1LDQ0Mjc3LDQ0Mjc4LDQ0Mjg0LDQ0Mjg1LDQ0Mjg4LDQ0MjkyLDQ0Mjk0LDUyOTk0LDUyOTk1LDUyOTk3LDUyOTk4LDUyOTk5LDUzMDAxLDUzMDAyLDUzMDAzLDUzMDA0LDUzMDA1LDUzMDA2LDUzMDA3LDUzMDEwLDUzMDEyLDUzMDE0LDUzMDE1LDUzMDE2LDUzMDE3LDUzMDE4LDUzMDE5LDUzMDIxLDUzMDIyLDUzMDIzLDUzMDI1LDUzMDI2LDUzMDI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMDI5LDUzMDMwLDUzMDMxLDUzMDMyLDUzMDMzLDUzMDM0LDUzMDM1LDUzMDM4LDUzMDQyLDUzMDQzLDUzMDQ0LDUzMDQ1LDUzMDQ2LDUzMDQ3LDUzMDQ5LDUzMDUwLDUzMDUxLDUzMDUyLDUzMDUzLDUzMDU0LDUzMDU1LDUzMDU2LDUzMDU3LDUzMDU4LDUzMDU5LDUzMDYwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMDYxLDUzMDYyLDUzMDYzLDUzMDY0LDUzMDY1LDUzMDY2LDUzMDY3LDUzMDY4LDUzMDY5LDUzMDcwLDUzMDcxLDUzMDcyLDUzMDczLDUzMDc0LDUzMDc1LDUzMDc4LDUzMDc5LDUzMDgxLDUzMDgyLDUzMDgzLDUzMDg1LDUzMDg2LDUzMDg3LDUzMDg4LDUzMDg5LDUzMDkwLDUzMDkxLDUzMDk0LDUzMDk2LDUzMDk4LDUzMDk5LDUzMTAwLDQ0MzAwLDQ0MzAxLDQ0MzAzLDQ0MzA1LDQ0MzEyLDQ0MzE2LDQ0MzIwLDQ0MzI5LDQ0MzMyLDQ0MzMzLDQ0MzQwLDQ0MzQxLDQ0MzQ0LDQ0MzQ4LDQ0MzU2LDQ0MzU3LDQ0MzU5LDQ0MzYxLDQ0MzY4LDQ0MzcyLDQ0Mzc2LDQ0Mzg1LDQ0Mzg3LDQ0Mzk2LDQ0Mzk3LDQ0NDAwLDQ0NDAzLDQ0NDA0LDQ0NDA1LDQ0NDA2LDQ0NDExLDQ0NDEyLDQ0NDEzLDQ0NDE1LDQ0NDE3LDQ0NDE4LDQ0NDI0LDQ0NDI1LDQ0NDI4LDQ0NDMyLDQ0NDQ0LDQ0NDQ1LDQ0NDUyLDQ0NDcxLDQ0NDgwLDQ0NDgxLDQ0NDg0LDQ0NDg4LDQ0NDk2LDQ0NDk3LDQ0NDk5LDQ0NTA4LDQ0NTEyLDQ0NTE2LDQ0NTM2LDQ0NTM3LDQ0NTQwLDQ0NTQzLDQ0NTQ0LDQ0NTQ1LDQ0NTUyLDQ0NTUzLDQ0NTU1LDQ0NTU3LDQ0NTY0LDQ0NTkyLDQ0NTkzLDQ0NTk2LDQ0NTk5LDQ0NjAwLDQ0NjAyLDQ0NjA4LDQ0NjA5LDQ0NjExLDQ0NjEzLDQ0NjE0LDQ0NjE4LDQ0NjIwLDQ0NjIxLDQ0NjIyLDQ0NjI0LDQ0NjI4LDQ0NjMwLDQ0NjM2LDQ0NjM3LDQ0NjM5LDQ0NjQwLDQ0NjQxLDQ0NjQ1LDQ0NjQ4LDQ0NjQ5LDQ0NjUyLDQ0NjU2LDQ0NjY0LDUzMTAxLDUzMTAyLDUzMTAzLDUzMTA2LDUzMTA3LDUzMTA5LDUzMTEwLDUzMTExLDUzMTEzLDUzMTE0LDUzMTE1LDUzMTE2LDUzMTE3LDUzMTE4LDUzMTE5LDUzMTIxLDUzMTIyLDUzMTIzLDUzMTI0LDUzMTI2LDUzMTI3LDUzMTI4LDUzMTI5LDUzMTMwLDUzMTMxLDUzMTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMTM0LDUzMTM1LDUzMTM2LDUzMTM3LDUzMTM4LDUzMTM5LDUzMTQwLDUzMTQxLDUzMTQyLDUzMTQzLDUzMTQ0LDUzMTQ1LDUzMTQ2LDUzMTQ3LDUzMTQ4LDUzMTQ5LDUzMTUwLDUzMTUxLDUzMTUyLDUzMTU0LDUzMTU1LDUzMTU2LDUzMTU3LDUzMTU4LDUzMTU5LDUzMTYxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMTYyLDUzMTYzLDUzMTY0LDUzMTY1LDUzMTY2LDUzMTY3LDUzMTY5LDUzMTcwLDUzMTcxLDUzMTcyLDUzMTczLDUzMTc0LDUzMTc1LDUzMTc2LDUzMTc3LDUzMTc4LDUzMTc5LDUzMTgwLDUzMTgxLDUzMTgyLDUzMTgzLDUzMTg0LDUzMTg1LDUzMTg2LDUzMTg3LDUzMTg5LDUzMTkwLDUzMTkxLDUzMTkyLDUzMTkzLDUzMTk0LDUzMTk1LDQ0NjY1LDQ0NjY3LDQ0NjY4LDQ0NjY5LDQ0Njc2LDQ0Njc3LDQ0Njg0LDQ0NzMyLDQ0NzMzLDQ0NzM0LDQ0NzM2LDQ0NzQwLDQ0NzQ4LDQ0NzQ5LDQ0NzUxLDQ0NzUyLDQ0NzUzLDQ0NzYwLDQ0NzYxLDQ0NzY0LDQ0Nzc2LDQ0Nzc5LDQ0NzgxLDQ0Nzg4LDQ0NzkyLDQ0Nzk2LDQ0ODA3LDQ0ODA4LDQ0ODEzLDQ0ODE2LDQ0ODQ0LDQ0ODQ1LDQ0ODQ4LDQ0ODUwLDQ0ODUyLDQ0ODYwLDQ0ODYxLDQ0ODYzLDQ0ODY1LDQ0ODY2LDQ0ODY3LDQ0ODcyLDQ0ODczLDQ0ODgwLDQ0ODkyLDQ0ODkzLDQ0OTAwLDQ0OTAxLDQ0OTIxLDQ0OTI4LDQ0OTMyLDQ0OTM2LDQ0OTQ0LDQ0OTQ1LDQ0OTQ5LDQ0OTU2LDQ0OTg0LDQ0OTg1LDQ0OTg4LDQ0OTkyLDQ0OTk5LDQ1MDAwLDQ1MDAxLDQ1MDAzLDQ1MDA1LDQ1MDA2LDQ1MDEyLDQ1MDIwLDQ1MDMyLDQ1MDMzLDQ1MDQwLDQ1MDQxLDQ1MDQ0LDQ1MDQ4LDQ1MDU2LDQ1MDU3LDQ1MDYwLDQ1MDY4LDQ1MDcyLDQ1MDc2LDQ1MDg0LDQ1MDg1LDQ1MDk2LDQ1MTI0LDQ1MTI1LDQ1MTI4LDQ1MTMwLDQ1MTMyLDQ1MTM0LDQ1MTM5LDQ1MTQwLDQ1MTQxLDQ1MTQzLDQ1MTQ1LDUzMTk2LDUzMTk3LDUzMTk4LDUzMTk5LDUzMjAwLDUzMjAxLDUzMjAyLDUzMjAzLDUzMjA0LDUzMjA1LDUzMjA2LDUzMjA3LDUzMjA4LDUzMjA5LDUzMjEwLDUzMjExLDUzMjEyLDUzMjEzLDUzMjE0LDUzMjE1LDUzMjE4LDUzMjE5LDUzMjIxLDUzMjIyLDUzMjIzLDUzMjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjI2LDUzMjI3LDUzMjI4LDUzMjI5LDUzMjMwLDUzMjMxLDUzMjM0LDUzMjM2LDUzMjM4LDUzMjM5LDUzMjQwLDUzMjQxLDUzMjQyLDUzMjQzLDUzMjQ1LDUzMjQ2LDUzMjQ3LDUzMjQ5LDUzMjUwLDUzMjUxLDUzMjUzLDUzMjU0LDUzMjU1LDUzMjU2LDUzMjU3LDUzMjU4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjU5LDUzMjYwLDUzMjYxLDUzMjYyLDUzMjYzLDUzMjY0LDUzMjY2LDUzMjY3LDUzMjY4LDUzMjY5LDUzMjcwLDUzMjcxLDUzMjczLDUzMjc0LDUzMjc1LDUzMjc2LDUzMjc3LDUzMjc4LDUzMjc5LDUzMjgwLDUzMjgxLDUzMjgyLDUzMjgzLDUzMjg0LDUzMjg1LDUzMjg2LDUzMjg3LDUzMjg4LDUzMjg5LDUzMjkwLDUzMjkxLDUzMjkyLDQ1MTQ5LDQ1MTgwLDQ1MTgxLDQ1MTg0LDQ1MTg4LDQ1MTk2LDQ1MTk3LDQ1MTk5LDQ1MjAxLDQ1MjA4LDQ1MjA5LDQ1MjEwLDQ1MjEyLDQ1MjE1LDQ1MjE2LDQ1MjE3LDQ1MjE4LDQ1MjI0LDQ1MjI1LDQ1MjI3LDQ1MjI4LDQ1MjI5LDQ1MjMwLDQ1MjMxLDQ1MjMzLDQ1MjM1LDQ1MjM2LDQ1MjM3LDQ1MjQwLDQ1MjQ0LDQ1MjUyLDQ1MjUzLDQ1MjU1LDQ1MjU2LDQ1MjU3LDQ1MjY0LDQ1MjY1LDQ1MjY4LDQ1MjcyLDQ1MjgwLDQ1Mjg1LDQ1MzIwLDQ1MzIxLDQ1MzIzLDQ1MzI0LDQ1MzI4LDQ1MzMwLDQ1MzMxLDQ1MzM2LDQ1MzM3LDQ1MzM5LDQ1MzQwLDQ1MzQxLDQ1MzQ3LDQ1MzQ4LDQ1MzQ5LDQ1MzUyLDQ1MzU2LDQ1MzY0LDQ1MzY1LDQ1MzY3LDQ1MzY4LDQ1MzY5LDQ1Mzc2LDQ1Mzc3LDQ1MzgwLDQ1Mzg0LDQ1MzkyLDQ1MzkzLDQ1Mzk2LDQ1Mzk3LDQ1NDAwLDQ1NDA0LDQ1NDA4LDQ1NDMyLDQ1NDMzLDQ1NDM2LDQ1NDQwLDQ1NDQyLDQ1NDQ4LDQ1NDQ5LDQ1NDUxLDQ1NDUzLDQ1NDU4LDQ1NDU5LDQ1NDYwLDQ1NDY0LDQ1NDY4LDQ1NDgwLDQ1NTE2LDQ1NTIwLDQ1NTI0LDQ1NTMyLDQ1NTMzLDUzMjk0LDUzMjk1LDUzMjk2LDUzMjk3LDUzMjk4LDUzMjk5LDUzMzAyLDUzMzAzLDUzMzA1LDUzMzA2LDUzMzA3LDUzMzA5LDUzMzEwLDUzMzExLDUzMzEyLDUzMzEzLDUzMzE0LDUzMzE1LDUzMzE4LDUzMzIwLDUzMzIyLDUzMzIzLDUzMzI0LDUzMzI1LDUzMzI2LDUzMzI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzI5LDUzMzMwLDUzMzMxLDUzMzMzLDUzMzM0LDUzMzM1LDUzMzM3LDUzMzM4LDUzMzM5LDUzMzQwLDUzMzQxLDUzMzQyLDUzMzQzLDUzMzQ1LDUzMzQ2LDUzMzQ3LDUzMzQ4LDUzMzQ5LDUzMzUwLDUzMzUxLDUzMzUyLDUzMzUzLDUzMzU0LDUzMzU1LDUzMzU4LDUzMzU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzYxLDUzMzYyLDUzMzYzLDUzMzY1LDUzMzY2LDUzMzY3LDUzMzY4LDUzMzY5LDUzMzcwLDUzMzcxLDUzMzc0LDUzMzc1LDUzMzc2LDUzMzc4LDUzMzc5LDUzMzgwLDUzMzgxLDUzMzgyLDUzMzgzLDUzMzg0LDUzMzg1LDUzMzg2LDUzMzg3LDUzMzg4LDUzMzg5LDUzMzkwLDUzMzkxLDUzMzkyLDUzMzkzLDUzMzk0LDUzMzk1LDUzMzk2LDQ1NTM1LDQ1NTQ0LDQ1NTQ1LDQ1NTQ4LDQ1NTUyLDQ1NTYxLDQ1NTYzLDQ1NTY1LDQ1NTcyLDQ1NTczLDQ1NTc2LDQ1NTc5LDQ1NTgwLDQ1NTg4LDQ1NTg5LDQ1NTkxLDQ1NTkzLDQ1NjAwLDQ1NjIwLDQ1NjI4LDQ1NjU2LDQ1NjYwLDQ1NjY0LDQ1NjcyLDQ1NjczLDQ1Njg0LDQ1Njg1LDQ1NjkyLDQ1NzAwLDQ1NzAxLDQ1NzA1LDQ1NzEyLDQ1NzEzLDQ1NzE2LDQ1NzIwLDQ1NzIxLDQ1NzIyLDQ1NzI4LDQ1NzI5LDQ1NzMxLDQ1NzMzLDQ1NzM0LDQ1NzM4LDQ1NzQwLDQ1NzQ0LDQ1NzQ4LDQ1NzY4LDQ1NzY5LDQ1NzcyLDQ1Nzc2LDQ1Nzc4LDQ1Nzg0LDQ1Nzg1LDQ1Nzg3LDQ1Nzg5LDQ1Nzk0LDQ1Nzk2LDQ1Nzk3LDQ1Nzk4LDQ1ODAwLDQ1ODAzLDQ1ODA0LDQ1ODA1LDQ1ODA2LDQ1ODA3LDQ1ODExLDQ1ODEyLDQ1ODEzLDQ1ODE1LDQ1ODE2LDQ1ODE3LDQ1ODE4LDQ1ODE5LDQ1ODIzLDQ1ODI0LDQ1ODI1LDQ1ODI4LDQ1ODMyLDQ1ODQwLDQ1ODQxLDQ1ODQzLDQ1ODQ0LDQ1ODQ1LDQ1ODUyLDQ1OTA4LDQ1OTA5LDQ1OTEwLDQ1OTEyLDQ1OTE1LDQ1OTE2LDQ1OTE4LDQ1OTE5LDQ1OTI0LDQ1OTI1LDUzMzk3LDUzMzk4LDUzMzk5LDUzNDAwLDUzNDAxLDUzNDAyLDUzNDAzLDUzNDA0LDUzNDA1LDUzNDA2LDUzNDA3LDUzNDA4LDUzNDA5LDUzNDEwLDUzNDExLDUzNDE0LDUzNDE1LDUzNDE3LDUzNDE4LDUzNDE5LDUzNDIxLDUzNDIyLDUzNDIzLDUzNDI0LDUzNDI1LDUzNDI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDI3LDUzNDMwLDUzNDMyLDUzNDM0LDUzNDM1LDUzNDM2LDUzNDM3LDUzNDM4LDUzNDM5LDUzNDQyLDUzNDQzLDUzNDQ1LDUzNDQ2LDUzNDQ3LDUzNDUwLDUzNDUxLDUzNDUyLDUzNDUzLDUzNDU0LDUzNDU1LDUzNDU4LDUzNDYyLDUzNDYzLDUzNDY0LDUzNDY1LDUzNDY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDY3LDUzNDcwLDUzNDcxLDUzNDczLDUzNDc0LDUzNDc1LDUzNDc3LDUzNDc4LDUzNDc5LDUzNDgwLDUzNDgxLDUzNDgyLDUzNDgzLDUzNDg2LDUzNDkwLDUzNDkxLDUzNDkyLDUzNDkzLDUzNDk0LDUzNDk1LDUzNDk3LDUzNDk4LDUzNDk5LDUzNTAwLDUzNTAxLDUzNTAyLDUzNTAzLDUzNTA0LDUzNTA1LDUzNTA2LDUzNTA3LDUzNTA4LDQ1OTI3LDQ1OTI5LDQ1OTMxLDQ1OTM0LDQ1OTM2LDQ1OTM3LDQ1OTQwLDQ1OTQ0LDQ1OTUyLDQ1OTUzLDQ1OTU1LDQ1OTU2LDQ1OTU3LDQ1OTY0LDQ1OTY4LDQ1OTcyLDQ1OTg0LDQ1OTg1LDQ1OTkyLDQ1OTk2LDQ2MDIwLDQ2MDIxLDQ2MDI0LDQ2MDI3LDQ2MDI4LDQ2MDMwLDQ2MDMyLDQ2MDM2LDQ2MDM3LDQ2MDM5LDQ2MDQxLDQ2MDQzLDQ2MDQ1LDQ2MDQ4LDQ2MDUyLDQ2MDU2LDQ2MDc2LDQ2MDk2LDQ2MTA0LDQ2MTA4LDQ2MTEyLDQ2MTIwLDQ2MTIxLDQ2MTIzLDQ2MTMyLDQ2MTYwLDQ2MTYxLDQ2MTY0LDQ2MTY4LDQ2MTc2LDQ2MTc3LDQ2MTc5LDQ2MTgxLDQ2MTg4LDQ2MjA4LDQ2MjE2LDQ2MjM3LDQ2MjQ0LDQ2MjQ4LDQ2MjUyLDQ2MjYxLDQ2MjYzLDQ2MjY1LDQ2MjcyLDQ2Mjc2LDQ2MjgwLDQ2Mjg4LDQ2MjkzLDQ2MzAwLDQ2MzAxLDQ2MzA0LDQ2MzA3LDQ2MzA4LDQ2MzEwLDQ2MzE2LDQ2MzE3LDQ2MzE5LDQ2MzIxLDQ2MzI4LDQ2MzU2LDQ2MzU3LDQ2MzYwLDQ2MzYzLDQ2MzY0LDQ2MzcyLDQ2MzczLDQ2Mzc1LDQ2Mzc2LDQ2Mzc3LDQ2Mzc4LDQ2Mzg0LDQ2Mzg1LDQ2Mzg4LDQ2MzkyLDUzNTA5LDUzNTEwLDUzNTExLDUzNTEyLDUzNTEzLDUzNTE0LDUzNTE1LDUzNTE2LDUzNTE4LDUzNTE5LDUzNTIwLDUzNTIxLDUzNTIyLDUzNTIzLDUzNTI0LDUzNTI1LDUzNTI2LDUzNTI3LDUzNTI4LDUzNTI5LDUzNTMwLDUzNTMxLDUzNTMyLDUzNTMzLDUzNTM0LDUzNTM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTM2LDUzNTM3LDUzNTM4LDUzNTM5LDUzNTQwLDUzNTQxLDUzNTQyLDUzNTQzLDUzNTQ0LDUzNTQ1LDUzNTQ2LDUzNTQ3LDUzNTQ4LDUzNTQ5LDUzNTUwLDUzNTUxLDUzNTU0LDUzNTU1LDUzNTU3LDUzNTU4LDUzNTU5LDUzNTYxLDUzNTYzLDUzNTY0LDUzNTY1LDUzNTY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTY3LDUzNTcwLDUzNTc0LDUzNTc1LDUzNTc2LDUzNTc3LDUzNTc4LDUzNTc5LDUzNTgyLDUzNTgzLDUzNTg1LDUzNTg2LDUzNTg3LDUzNTg5LDUzNTkwLDUzNTkxLDUzNTkyLDUzNTkzLDUzNTk0LDUzNTk1LDUzNTk4LDUzNjAwLDUzNjAyLDUzNjAzLDUzNjA0LDUzNjA1LDUzNjA2LDUzNjA3LDUzNjA5LDUzNjEwLDUzNjExLDUzNjEzLDQ2NDAwLDQ2NDAxLDQ2NDAzLDQ2NDA0LDQ2NDA1LDQ2NDExLDQ2NDEyLDQ2NDEzLDQ2NDE2LDQ2NDIwLDQ2NDI4LDQ2NDI5LDQ2NDMxLDQ2NDMyLDQ2NDMzLDQ2NDk2LDQ2NDk3LDQ2NTAwLDQ2NTA0LDQ2NTA2LDQ2NTA3LDQ2NTEyLDQ2NTEzLDQ2NTE1LDQ2NTE2LDQ2NTE3LDQ2NTIzLDQ2NTI0LDQ2NTI1LDQ2NTI4LDQ2NTMyLDQ2NTQwLDQ2NTQxLDQ2NTQzLDQ2NTQ0LDQ2NTQ1LDQ2NTUyLDQ2NTcyLDQ2NjA4LDQ2NjA5LDQ2NjEyLDQ2NjE2LDQ2NjI5LDQ2NjM2LDQ2NjQ0LDQ2NjY0LDQ2NjkyLDQ2Njk2LDQ2NzQ4LDQ2NzQ5LDQ2NzUyLDQ2NzU2LDQ2NzYzLDQ2NzY0LDQ2NzY5LDQ2ODA0LDQ2ODMyLDQ2ODM2LDQ2ODQwLDQ2ODQ4LDQ2ODQ5LDQ2ODUzLDQ2ODg4LDQ2ODg5LDQ2ODkyLDQ2ODk1LDQ2ODk2LDQ2OTA0LDQ2OTA1LDQ2OTA3LDQ2OTE2LDQ2OTIwLDQ2OTI0LDQ2OTMyLDQ2OTMzLDQ2OTQ0LDQ2OTQ4LDQ2OTUyLDQ2OTYwLDQ2OTYxLDQ2OTYzLDQ2OTY1LDQ2OTcyLDQ2OTczLDQ2OTc2LDQ2OTgwLDQ2OTg4LDQ2OTg5LDQ2OTkxLDQ2OTkyLDQ2OTkzLDQ2OTk0LDQ2OTk4LDQ2OTk5LDUzNjE0LDUzNjE1LDUzNjE2LDUzNjE3LDUzNjE4LDUzNjE5LDUzNjIwLDUzNjIxLDUzNjIyLDUzNjIzLDUzNjI0LDUzNjI1LDUzNjI2LDUzNjI3LDUzNjI5LDUzNjMwLDUzNjMxLDUzNjMyLDUzNjMzLDUzNjM0LDUzNjM1LDUzNjM3LDUzNjM4LDUzNjM5LDUzNjQxLDUzNjQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjQzLDUzNjQ0LDUzNjQ1LDUzNjQ2LDUzNjQ3LDUzNjQ4LDUzNjQ5LDUzNjUwLDUzNjUxLDUzNjUyLDUzNjUzLDUzNjU0LDUzNjU1LDUzNjU2LDUzNjU3LDUzNjU4LDUzNjU5LDUzNjYwLDUzNjYxLDUzNjYyLDUzNjYzLDUzNjY2LDUzNjY3LDUzNjY5LDUzNjcwLDUzNjcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjczLDUzNjc0LDUzNjc1LDUzNjc2LDUzNjc3LDUzNjc4LDUzNjc5LDUzNjgyLDUzNjg0LDUzNjg2LDUzNjg3LDUzNjg4LDUzNjg5LDUzNjkxLDUzNjkzLDUzNjk0LDUzNjk1LDUzNjk3LDUzNjk4LDUzNjk5LDUzNzAwLDUzNzAxLDUzNzAyLDUzNzAzLDUzNzA0LDUzNzA1LDUzNzA2LDUzNzA3LDUzNzA4LDUzNzA5LDUzNzEwLDUzNzExLDQ3MDAwLDQ3MDAxLDQ3MDA0LDQ3MDA4LDQ3MDE2LDQ3MDE3LDQ3MDE5LDQ3MDIwLDQ3MDIxLDQ3MDI4LDQ3MDI5LDQ3MDMyLDQ3MDQ3LDQ3MDQ5LDQ3MDg0LDQ3MDg1LDQ3MDg4LDQ3MDkyLDQ3MTAwLDQ3MTAxLDQ3MTAzLDQ3MTA0LDQ3MTA1LDQ3MTExLDQ3MTEyLDQ3MTEzLDQ3MTE2LDQ3MTIwLDQ3MTI4LDQ3MTI5LDQ3MTMxLDQ3MTMzLDQ3MTQwLDQ3MTQxLDQ3MTQ0LDQ3MTQ4LDQ3MTU2LDQ3MTU3LDQ3MTU5LDQ3MTYwLDQ3MTYxLDQ3MTY4LDQ3MTcyLDQ3MTg1LDQ3MTg3LDQ3MTk2LDQ3MTk3LDQ3MjAwLDQ3MjA0LDQ3MjEyLDQ3MjEzLDQ3MjE1LDQ3MjE3LDQ3MjI0LDQ3MjI4LDQ3MjQ1LDQ3MjcyLDQ3MjgwLDQ3Mjg0LDQ3Mjg4LDQ3Mjk2LDQ3Mjk3LDQ3Mjk5LDQ3MzAxLDQ3MzA4LDQ3MzEyLDQ3MzE2LDQ3MzI1LDQ3MzI3LDQ3MzI5LDQ3MzM2LDQ3MzM3LDQ3MzQwLDQ3MzQ0LDQ3MzUyLDQ3MzUzLDQ3MzU1LDQ3MzU3LDQ3MzY0LDQ3Mzg0LDQ3MzkyLDQ3NDIwLDQ3NDIxLDQ3NDI0LDQ3NDI4LDQ3NDM2LDQ3NDM5LDQ3NDQxLDQ3NDQ4LDQ3NDQ5LDQ3NDUyLDQ3NDU2LDQ3NDY0LDQ3NDY1LDUzNzEyLDUzNzEzLDUzNzE0LDUzNzE1LDUzNzE2LDUzNzE3LDUzNzE4LDUzNzE5LDUzNzIxLDUzNzIyLDUzNzIzLDUzNzI0LDUzNzI1LDUzNzI2LDUzNzI3LDUzNzI4LDUzNzI5LDUzNzMwLDUzNzMxLDUzNzMyLDUzNzMzLDUzNzM0LDUzNzM1LDUzNzM2LDUzNzM3LDUzNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzM5LDUzNzQwLDUzNzQxLDUzNzQyLDUzNzQzLDUzNzQ0LDUzNzQ1LDUzNzQ2LDUzNzQ3LDUzNzQ5LDUzNzUwLDUzNzUxLDUzNzUzLDUzNzU0LDUzNzU1LDUzNzU2LDUzNzU3LDUzNzU4LDUzNzU5LDUzNzYwLDUzNzYxLDUzNzYyLDUzNzYzLDUzNzY0LDUzNzY1LDUzNzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzY4LDUzNzcwLDUzNzcxLDUzNzcyLDUzNzczLDUzNzc0LDUzNzc1LDUzNzc3LDUzNzc4LDUzNzc5LDUzNzgwLDUzNzgxLDUzNzgyLDUzNzgzLDUzNzg0LDUzNzg1LDUzNzg2LDUzNzg3LDUzNzg4LDUzNzg5LDUzNzkwLDUzNzkxLDUzNzkyLDUzNzkzLDUzNzk0LDUzNzk1LDUzNzk2LDUzNzk3LDUzNzk4LDUzNzk5LDUzODAwLDUzODAxLDQ3NDY3LDQ3NDY5LDQ3NDc2LDQ3NDc3LDQ3NDgwLDQ3NDg0LDQ3NDkyLDQ3NDkzLDQ3NDk1LDQ3NDk3LDQ3NDk4LDQ3NTAxLDQ3NTAyLDQ3NTMyLDQ3NTMzLDQ3NTM2LDQ3NTQwLDQ3NTQ4LDQ3NTQ5LDQ3NTUxLDQ3NTUzLDQ3NTYwLDQ3NTYxLDQ3NTY0LDQ3NTY2LDQ3NTY3LDQ3NTY4LDQ3NTY5LDQ3NTcwLDQ3NTc2LDQ3NTc3LDQ3NTc5LDQ3NTgxLDQ3NTgyLDQ3NTg1LDQ3NTg3LDQ3NTg4LDQ3NTg5LDQ3NTkyLDQ3NTk2LDQ3NjA0LDQ3NjA1LDQ3NjA3LDQ3NjA4LDQ3NjA5LDQ3NjEwLDQ3NjE2LDQ3NjE3LDQ3NjI0LDQ3NjM3LDQ3NjcyLDQ3NjczLDQ3Njc2LDQ3NjgwLDQ3NjgyLDQ3Njg4LDQ3Njg5LDQ3NjkxLDQ3NjkzLDQ3Njk0LDQ3Njk5LDQ3NzAwLDQ3NzAxLDQ3NzA0LDQ3NzA4LDQ3NzE2LDQ3NzE3LDQ3NzE5LDQ3NzIwLDQ3NzIxLDQ3NzI4LDQ3NzI5LDQ3NzMyLDQ3NzM2LDQ3NzQ3LDQ3NzQ4LDQ3NzQ5LDQ3NzUxLDQ3NzU2LDQ3Nzg0LDQ3Nzg1LDQ3Nzg3LDQ3Nzg4LDQ3NzkyLDQ3Nzk0LDQ3ODAwLDQ3ODAxLDQ3ODAzLDQ3ODA1LDQ3ODEyLDQ3ODE2LDQ3ODMyLDQ3ODMzLDQ3ODY4LDUzODAyLDUzODAzLDUzODA2LDUzODA3LDUzODA5LDUzODEwLDUzODExLDUzODEzLDUzODE0LDUzODE1LDUzODE2LDUzODE3LDUzODE4LDUzODE5LDUzODIyLDUzODI0LDUzODI2LDUzODI3LDUzODI4LDUzODI5LDUzODMwLDUzODMxLDUzODMzLDUzODM0LDUzODM1LDUzODM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODM3LDUzODM4LDUzODM5LDUzODQwLDUzODQxLDUzODQyLDUzODQzLDUzODQ0LDUzODQ1LDUzODQ2LDUzODQ3LDUzODQ4LDUzODQ5LDUzODUwLDUzODUxLDUzODUzLDUzODU0LDUzODU1LDUzODU2LDUzODU3LDUzODU4LDUzODU5LDUzODYxLDUzODYyLDUzODYzLDUzODY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODY1LDUzODY2LDUzODY3LDUzODY4LDUzODY5LDUzODcwLDUzODcxLDUzODcyLDUzODczLDUzODc0LDUzODc1LDUzODc2LDUzODc3LDUzODc4LDUzODc5LDUzODgwLDUzODgxLDUzODgyLDUzODgzLDUzODg0LDUzODg1LDUzODg2LDUzODg3LDUzODkwLDUzODkxLDUzODkzLDUzODk0LDUzODk1LDUzODk3LDUzODk4LDUzODk5LDUzOTAwLDQ3ODcyLDQ3ODc2LDQ3ODg1LDQ3ODg3LDQ3ODg5LDQ3ODk2LDQ3OTAwLDQ3OTA0LDQ3OTEzLDQ3OTE1LDQ3OTI0LDQ3OTI1LDQ3OTI2LDQ3OTI4LDQ3OTMxLDQ3OTMyLDQ3OTMzLDQ3OTM0LDQ3OTQwLDQ3OTQxLDQ3OTQzLDQ3OTQ1LDQ3OTQ5LDQ3OTUxLDQ3OTUyLDQ3OTU2LDQ3OTYwLDQ3OTY5LDQ3OTcxLDQ3OTgwLDQ4MDA4LDQ4MDEyLDQ4MDE2LDQ4MDM2LDQ4MDQwLDQ4MDQ0LDQ4MDUyLDQ4MDU1LDQ4MDY0LDQ4MDY4LDQ4MDcyLDQ4MDgwLDQ4MDgzLDQ4MTIwLDQ4MTIxLDQ4MTI0LDQ4MTI3LDQ4MTI4LDQ4MTMwLDQ4MTM2LDQ4MTM3LDQ4MTM5LDQ4MTQwLDQ4MTQxLDQ4MTQzLDQ4MTQ1LDQ4MTQ4LDQ4MTQ5LDQ4MTUwLDQ4MTUxLDQ4MTUyLDQ4MTU1LDQ4MTU2LDQ4MTU3LDQ4MTU4LDQ4MTU5LDQ4MTY0LDQ4MTY1LDQ4MTY3LDQ4MTY5LDQ4MTczLDQ4MTc2LDQ4MTc3LDQ4MTgwLDQ4MTg0LDQ4MTkyLDQ4MTkzLDQ4MTk1LDQ4MTk2LDQ4MTk3LDQ4MjAxLDQ4MjA0LDQ4MjA1LDQ4MjA4LDQ4MjIxLDQ4MjYwLDQ4MjYxLDQ4MjY0LDQ4MjY3LDQ4MjY4LDQ4MjcwLDQ4Mjc2LDQ4Mjc3LDQ4Mjc5LDUzOTAxLDUzOTAyLDUzOTAzLDUzOTA2LDUzOTA3LDUzOTA4LDUzOTEwLDUzOTExLDUzOTEyLDUzOTEzLDUzOTE0LDUzOTE1LDUzOTE3LDUzOTE4LDUzOTE5LDUzOTIxLDUzOTIyLDUzOTIzLDUzOTI1LDUzOTI2LDUzOTI3LDUzOTI4LDUzOTI5LDUzOTMwLDUzOTMxLDUzOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTM0LDUzOTM1LDUzOTM2LDUzOTM4LDUzOTM5LDUzOTQwLDUzOTQxLDUzOTQyLDUzOTQzLDUzOTQ2LDUzOTQ3LDUzOTQ5LDUzOTUwLDUzOTUzLDUzOTU1LDUzOTU2LDUzOTU3LDUzOTU4LDUzOTU5LDUzOTYyLDUzOTY0LDUzOTY1LDUzOTY2LDUzOTY3LDUzOTY4LDUzOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTcwLDUzOTcxLDUzOTczLDUzOTc0LDUzOTc1LDUzOTc3LDUzOTc4LDUzOTc5LDUzOTgxLDUzOTgyLDUzOTgzLDUzOTg0LDUzOTg1LDUzOTg2LDUzOTg3LDUzOTkwLDUzOTkxLDUzOTkyLDUzOTkzLDUzOTk0LDUzOTk1LDUzOTk2LDUzOTk3LDUzOTk4LDUzOTk5LDU0MDAyLDU0MDAzLDU0MDA1LDU0MDA2LDU0MDA3LDU0MDA5LDU0MDEwLDQ4MjgxLDQ4MjgyLDQ4Mjg4LDQ4Mjg5LDQ4MjkyLDQ4Mjk1LDQ4Mjk2LDQ4MzA0LDQ4MzA1LDQ4MzA3LDQ4MzA4LDQ4MzA5LDQ4MzE2LDQ4MzE3LDQ4MzIwLDQ4MzI0LDQ4MzMzLDQ4MzM1LDQ4MzM2LDQ4MzM3LDQ4MzQxLDQ4MzQ0LDQ4MzQ4LDQ4MzcyLDQ4MzczLDQ4Mzc0LDQ4Mzc2LDQ4MzgwLDQ4Mzg4LDQ4Mzg5LDQ4MzkxLDQ4MzkzLDQ4NDAwLDQ4NDA0LDQ4NDIwLDQ4NDI4LDQ4NDQ4LDQ4NDU2LDQ4NDU3LDQ4NDYwLDQ4NDY0LDQ4NDcyLDQ4NDczLDQ4NDg0LDQ4NDg4LDQ4NTEyLDQ4NTEzLDQ4NTE2LDQ4NTE5LDQ4NTIwLDQ4NTIxLDQ4NTIyLDQ4NTI4LDQ4NTI5LDQ4NTMxLDQ4NTMzLDQ4NTM3LDQ4NTM4LDQ4NTQwLDQ4NTQ4LDQ4NTYwLDQ4NTY4LDQ4NTk2LDQ4NTk3LDQ4NjAwLDQ4NjA0LDQ4NjE3LDQ4NjI0LDQ4NjI4LDQ4NjMyLDQ4NjQwLDQ4NjQzLDQ4NjQ1LDQ4NjUyLDQ4NjUzLDQ4NjU2LDQ4NjYwLDQ4NjY4LDQ4NjY5LDQ4NjcxLDQ4NzA4LDQ4NzA5LDQ4NzEyLDQ4NzE2LDQ4NzE4LDQ4NzI0LDQ4NzI1LDQ4NzI3LDQ4NzI5LDQ4NzMwLDQ4NzMxLDQ4NzM2LDQ4NzM3LDQ4NzQwLDU0MDExLDU0MDEyLDU0MDEzLDU0MDE0LDU0MDE1LDU0MDE4LDU0MDIwLDU0MDIyLDU0MDIzLDU0MDI0LDU0MDI1LDU0MDI2LDU0MDI3LDU0MDMxLDU0MDMzLDU0MDM0LDU0MDM1LDU0MDM3LDU0MDM5LDU0MDQwLDU0MDQxLDU0MDQyLDU0MDQzLDU0MDQ2LDU0MDUwLDU0MDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDUyLDU0MDU0LDU0MDU1LDU0MDU4LDU0MDU5LDU0MDYxLDU0MDYyLDU0MDYzLDU0MDY1LDU0MDY2LDU0MDY3LDU0MDY4LDU0MDY5LDU0MDcwLDU0MDcxLDU0MDc0LDU0MDc4LDU0MDc5LDU0MDgwLDU0MDgxLDU0MDgyLDU0MDgzLDU0MDg2LDU0MDg3LDU0MDg4LDU0MDg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDkwLDU0MDkxLDU0MDkyLDU0MDkzLDU0MDk0LDU0MDk1LDU0MDk2LDU0MDk3LDU0MDk4LDU0MDk5LDU0MTAwLDU0MTAxLDU0MTAyLDU0MTAzLDU0MTA0LDU0MTA1LDU0MTA2LDU0MTA3LDU0MTA4LDU0MTA5LDU0MTEwLDU0MTExLDU0MTEyLDU0MTEzLDU0MTE0LDU0MTE1LDU0MTE2LDU0MTE3LDU0MTE4LDU0MTE5LDU0MTIwLDU0MTIxLDQ4NzQ0LDQ4NzQ2LDQ4NzUyLDQ4NzUzLDQ4NzU1LDQ4NzU2LDQ4NzU3LDQ4NzYzLDQ4NzY0LDQ4NzY1LDQ4NzY4LDQ4NzcyLDQ4NzgwLDQ4NzgxLDQ4NzgzLDQ4Nzg0LDQ4Nzg1LDQ4NzkyLDQ4NzkzLDQ4ODA4LDQ4ODQ4LDQ4ODQ5LDQ4ODUyLDQ4ODU1LDQ4ODU2LDQ4ODY0LDQ4ODY3LDQ4ODY4LDQ4ODY5LDQ4ODc2LDQ4ODk3LDQ4OTA0LDQ4OTA1LDQ4OTIwLDQ4OTIxLDQ4OTIzLDQ4OTI0LDQ4OTI1LDQ4OTYwLDQ4OTYxLDQ4OTY0LDQ4OTY4LDQ4OTc2LDQ4OTc3LDQ4OTgxLDQ5MDQ0LDQ5MDcyLDQ5MDkzLDQ5MTAwLDQ5MTAxLDQ5MTA0LDQ5MTA4LDQ5MTE2LDQ5MTE5LDQ5MTIxLDQ5MjEyLDQ5MjMzLDQ5MjQwLDQ5MjQ0LDQ5MjQ4LDQ5MjU2LDQ5MjU3LDQ5Mjk2LDQ5Mjk3LDQ5MzAwLDQ5MzA0LDQ5MzEyLDQ5MzEzLDQ5MzE1LDQ5MzE3LDQ5MzI0LDQ5MzI1LDQ5MzI3LDQ5MzI4LDQ5MzMxLDQ5MzMyLDQ5MzMzLDQ5MzM0LDQ5MzQwLDQ5MzQxLDQ5MzQzLDQ5MzQ0LDQ5MzQ1LDQ5MzQ5LDQ5MzUyLDQ5MzUzLDQ5MzU2LDQ5MzYwLDQ5MzY4LDQ5MzY5LDQ5MzcxLDQ5MzcyLDQ5MzczLDQ5MzgwLDU0MTIyLDU0MTIzLDU0MTI0LDU0MTI1LDU0MTI2LDU0MTI3LDU0MTI4LDU0MTI5LDU0MTMwLDU0MTMxLDU0MTMyLDU0MTMzLDU0MTM0LDU0MTM1LDU0MTM2LDU0MTM3LDU0MTM4LDU0MTM5LDU0MTQyLDU0MTQzLDU0MTQ1LDU0MTQ2LDU0MTQ3LDU0MTQ5LDU0MTUwLDU0MTUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTUyLDU0MTUzLDU0MTU0LDU0MTU1LDU0MTU4LDU0MTYyLDU0MTYzLDU0MTY0LDU0MTY1LDU0MTY2LDU0MTY3LDU0MTcwLDU0MTcxLDU0MTczLDU0MTc0LDU0MTc1LDU0MTc3LDU0MTc4LDU0MTc5LDU0MTgwLDU0MTgxLDU0MTgyLDU0MTgzLDU0MTg2LDU0MTg4LDU0MTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTkxLDU0MTkyLDU0MTkzLDU0MTk0LDU0MTk1LDU0MTk3LDU0MTk4LDU0MTk5LDU0MjAxLDU0MjAyLDU0MjAzLDU0MjA1LDU0MjA2LDU0MjA3LDU0MjA4LDU0MjA5LDU0MjEwLDU0MjExLDU0MjE0LDU0MjE1LDU0MjE4LDU0MjE5LDU0MjIwLDU0MjIxLDU0MjIyLDU0MjIzLDU0MjI1LDU0MjI2LDU0MjI3LDU0MjI4LDU0MjI5LDU0MjMwLDQ5MzgxLDQ5Mzg0LDQ5Mzg4LDQ5Mzk2LDQ5Mzk3LDQ5Mzk5LDQ5NDAxLDQ5NDA4LDQ5NDEyLDQ5NDE2LDQ5NDI0LDQ5NDI5LDQ5NDM2LDQ5NDM3LDQ5NDM4LDQ5NDM5LDQ5NDQwLDQ5NDQzLDQ5NDQ0LDQ5NDQ2LDQ5NDQ3LDQ5NDUyLDQ5NDUzLDQ5NDU1LDQ5NDU2LDQ5NDU3LDQ5NDYyLDQ5NDY0LDQ5NDY1LDQ5NDY4LDQ5NDcyLDQ5NDgwLDQ5NDgxLDQ5NDgzLDQ5NDg0LDQ5NDg1LDQ5NDkyLDQ5NDkzLDQ5NDk2LDQ5NTAwLDQ5NTA4LDQ5NTA5LDQ5NTExLDQ5NTEyLDQ5NTEzLDQ5NTIwLDQ5NTI0LDQ5NTI4LDQ5NTQxLDQ5NTQ4LDQ5NTQ5LDQ5NTUwLDQ5NTUyLDQ5NTU2LDQ5NTU4LDQ5NTY0LDQ5NTY1LDQ5NTY3LDQ5NTY5LDQ5NTczLDQ5NTc2LDQ5NTc3LDQ5NTgwLDQ5NTg0LDQ5NTk3LDQ5NjA0LDQ5NjA4LDQ5NjEyLDQ5NjIwLDQ5NjIzLDQ5NjI0LDQ5NjMyLDQ5NjM2LDQ5NjQwLDQ5NjQ4LDQ5NjQ5LDQ5NjUxLDQ5NjYwLDQ5NjYxLDQ5NjY0LDQ5NjY4LDQ5Njc2LDQ5Njc3LDQ5Njc5LDQ5NjgxLDQ5Njg4LDQ5Njg5LDQ5NjkyLDQ5Njk1LDQ5Njk2LDQ5NzA0LDQ5NzA1LDQ5NzA3LDQ5NzA5LDU0MjMxLDU0MjMzLDU0MjM0LDU0MjM1LDU0MjM2LDU0MjM3LDU0MjM4LDU0MjM5LDU0MjQwLDU0MjQyLDU0MjQ0LDU0MjQ1LDU0MjQ2LDU0MjQ3LDU0MjQ4LDU0MjQ5LDU0MjUwLDU0MjUxLDU0MjU0LDU0MjU1LDU0MjU3LDU0MjU4LDU0MjU5LDU0MjYxLDU0MjYyLDU0MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjY0LDU0MjY1LDU0MjY2LDU0MjY3LDU0MjcwLDU0MjcyLDU0Mjc0LDU0Mjc1LDU0Mjc2LDU0Mjc3LDU0Mjc4LDU0Mjc5LDU0MjgxLDU0MjgyLDU0MjgzLDU0Mjg0LDU0Mjg1LDU0Mjg2LDU0Mjg3LDU0Mjg4LDU0Mjg5LDU0MjkwLDU0MjkxLDU0MjkyLDU0MjkzLDU0Mjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mjk1LDU0Mjk2LDU0Mjk3LDU0Mjk4LDU0Mjk5LDU0MzAwLDU0MzAyLDU0MzAzLDU0MzA0LDU0MzA1LDU0MzA2LDU0MzA3LDU0MzA4LDU0MzA5LDU0MzEwLDU0MzExLDU0MzEyLDU0MzEzLDU0MzE0LDU0MzE1LDU0MzE2LDU0MzE3LDU0MzE4LDU0MzE5LDU0MzIwLDU0MzIxLDU0MzIyLDU0MzIzLDU0MzI0LDU0MzI1LDU0MzI2LDU0MzI3LDQ5NzExLDQ5NzEzLDQ5NzE0LDQ5NzE2LDQ5NzM2LDQ5NzQ0LDQ5NzQ1LDQ5NzQ4LDQ5NzUyLDQ5NzYwLDQ5NzY1LDQ5NzcyLDQ5NzczLDQ5Nzc2LDQ5NzgwLDQ5Nzg4LDQ5Nzg5LDQ5NzkxLDQ5NzkzLDQ5ODAwLDQ5ODAxLDQ5ODA4LDQ5ODE2LDQ5ODE5LDQ5ODIxLDQ5ODI4LDQ5ODI5LDQ5ODMyLDQ5ODM2LDQ5ODM3LDQ5ODQ0LDQ5ODQ1LDQ5ODQ3LDQ5ODQ5LDQ5ODg0LDQ5ODg1LDQ5ODg4LDQ5ODkxLDQ5ODkyLDQ5ODk5LDQ5OTAwLDQ5OTAxLDQ5OTAzLDQ5OTA1LDQ5OTEwLDQ5OTEyLDQ5OTEzLDQ5OTE1LDQ5OTE2LDQ5OTIwLDQ5OTI4LDQ5OTI5LDQ5OTMyLDQ5OTMzLDQ5OTM5LDQ5OTQwLDQ5OTQxLDQ5OTQ0LDQ5OTQ4LDQ5OTU2LDQ5OTU3LDQ5OTYwLDQ5OTYxLDQ5OTg5LDUwMDI0LDUwMDI1LDUwMDI4LDUwMDMyLDUwMDM0LDUwMDQwLDUwMDQxLDUwMDQ0LDUwMDQ1LDUwMDUyLDUwMDU2LDUwMDYwLDUwMTEyLDUwMTM2LDUwMTM3LDUwMTQwLDUwMTQzLDUwMTQ0LDUwMTQ2LDUwMTUyLDUwMTUzLDUwMTU3LDUwMTY0LDUwMTY1LDUwMTY4LDUwMTg0LDUwMTkyLDUwMjEyLDUwMjIwLDUwMjI0LDU0MzI4LDU0MzI5LDU0MzMwLDU0MzMxLDU0MzMyLDU0MzMzLDU0MzM0LDU0MzM1LDU0MzM3LDU0MzM4LDU0MzM5LDU0MzQxLDU0MzQyLDU0MzQzLDU0MzQ0LDU0MzQ1LDU0MzQ2LDU0MzQ3LDU0MzQ4LDU0MzQ5LDU0MzUwLDU0MzUxLDU0MzUyLDU0MzUzLDU0MzU0LDU0MzU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MzU2LDU0MzU3LDU0MzU4LDU0MzU5LDU0MzYwLDU0MzYxLDU0MzYyLDU0MzYzLDU0MzY1LDU0MzY2LDU0MzY3LDU0MzY5LDU0MzcwLDU0MzcxLDU0MzczLDU0Mzc0LDU0Mzc1LDU0Mzc2LDU0Mzc3LDU0Mzc4LDU0Mzc5LDU0MzgwLDU0MzgyLDU0Mzg0LDU0Mzg1LDU0Mzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mzg3LDU0Mzg4LDU0Mzg5LDU0MzkwLDU0MzkxLDU0Mzk0LDU0Mzk1LDU0Mzk3LDU0Mzk4LDU0NDAxLDU0NDAzLDU0NDA0LDU0NDA1LDU0NDA2LDU0NDA3LDU0NDEwLDU0NDEyLDU0NDE0LDU0NDE1LDU0NDE2LDU0NDE3LDU0NDE4LDU0NDE5LDU0NDIxLDU0NDIyLDU0NDIzLDU0NDI0LDU0NDI1LDU0NDI2LDU0NDI3LDU0NDI4LDU0NDI5LDUwMjI4LDUwMjM2LDUwMjM3LDUwMjQ4LDUwMjc2LDUwMjc3LDUwMjgwLDUwMjg0LDUwMjkyLDUwMjkzLDUwMjk3LDUwMzA0LDUwMzI0LDUwMzMyLDUwMzYwLDUwMzY0LDUwNDA5LDUwNDE2LDUwNDE3LDUwNDIwLDUwNDI0LDUwNDI2LDUwNDMxLDUwNDMyLDUwNDMzLDUwNDQ0LDUwNDQ4LDUwNDUyLDUwNDYwLDUwNDcyLDUwNDczLDUwNDc2LDUwNDgwLDUwNDg4LDUwNDg5LDUwNDkxLDUwNDkzLDUwNTAwLDUwNTAxLDUwNTA0LDUwNTA1LDUwNTA2LDUwNTA4LDUwNTA5LDUwNTEwLDUwNTE1LDUwNTE2LDUwNTE3LDUwNTE5LDUwNTIwLDUwNTIxLDUwNTI1LDUwNTI2LDUwNTI4LDUwNTI5LDUwNTMyLDUwNTM2LDUwNTQ0LDUwNTQ1LDUwNTQ3LDUwNTQ4LDUwNTQ5LDUwNTU2LDUwNTU3LDUwNTYwLDUwNTY0LDUwNTY3LDUwNTcyLDUwNTczLDUwNTc1LDUwNTc3LDUwNTgxLDUwNTgzLDUwNTg0LDUwNTg4LDUwNTkyLDUwNjAxLDUwNjEyLDUwNjEzLDUwNjE2LDUwNjE3LDUwNjE5LDUwNjIwLDUwNjIxLDUwNjIyLDUwNjI4LDUwNjI5LDUwNjMwLDUwNjMxLDUwNjMyLDUwNjMzLDUwNjM0LDUwNjM2LDUwNjM4LDU0NDMwLDU0NDMxLDU0NDMyLDU0NDMzLDU0NDM0LDU0NDM1LDU0NDM2LDU0NDM3LDU0NDM4LDU0NDM5LDU0NDQwLDU0NDQyLDU0NDQzLDU0NDQ0LDU0NDQ1LDU0NDQ2LDU0NDQ3LDU0NDQ4LDU0NDQ5LDU0NDUwLDU0NDUxLDU0NDUyLDU0NDUzLDU0NDU0LDU0NDU1LDU0NDU2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDU3LDU0NDU4LDU0NDU5LDU0NDYwLDU0NDYxLDU0NDYyLDU0NDYzLDU0NDY0LDU0NDY1LDU0NDY2LDU0NDY3LDU0NDY4LDU0NDY5LDU0NDcwLDU0NDcxLDU0NDcyLDU0NDczLDU0NDc0LDU0NDc1LDU0NDc3LDU0NDc4LDU0NDc5LDU0NDgxLDU0NDgyLDU0NDgzLDU0NDg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDg2LDU0NDg3LDU0NDg4LDU0NDg5LDU0NDkwLDU0NDkxLDU0NDkzLDU0NDk0LDU0NDk2LDU0NDk3LDU0NDk4LDU0NDk5LDU0NTAwLDU0NTAxLDU0NTAyLDU0NTAzLDU0NTA1LDU0NTA2LDU0NTA3LDU0NTA5LDU0NTEwLDU0NTExLDU0NTEzLDU0NTE0LDU0NTE1LDU0NTE2LDU0NTE3LDU0NTE4LDU0NTE5LDU0NTIxLDU0NTIyLDU0NTI0LDUwNjQwLDUwNjQxLDUwNjQ0LDUwNjQ4LDUwNjU2LDUwNjU3LDUwNjU5LDUwNjYxLDUwNjY4LDUwNjY5LDUwNjcwLDUwNjcyLDUwNjc2LDUwNjc4LDUwNjc5LDUwNjg0LDUwNjg1LDUwNjg2LDUwNjg3LDUwNjg4LDUwNjg5LDUwNjkzLDUwNjk0LDUwNjk1LDUwNjk2LDUwNzAwLDUwNzA0LDUwNzEyLDUwNzEzLDUwNzE1LDUwNzE2LDUwNzI0LDUwNzI1LDUwNzI4LDUwNzMyLDUwNzMzLDUwNzM0LDUwNzM2LDUwNzM5LDUwNzQwLDUwNzQxLDUwNzQzLDUwNzQ1LDUwNzQ3LDUwNzUyLDUwNzUzLDUwNzU2LDUwNzYwLDUwNzY4LDUwNzY5LDUwNzcxLDUwNzcyLDUwNzczLDUwNzgwLDUwNzgxLDUwNzg0LDUwNzk2LDUwNzk5LDUwODAxLDUwODA4LDUwODA5LDUwODEyLDUwODE2LDUwODI0LDUwODI1LDUwODI3LDUwODI5LDUwODM2LDUwODM3LDUwODQwLDUwODQ0LDUwODUyLDUwODUzLDUwODU1LDUwODU3LDUwODY0LDUwODY1LDUwODY4LDUwODcyLDUwODczLDUwODc0LDUwODgwLDUwODgxLDUwODgzLDUwODg1LDUwODkyLDUwODkzLDUwODk2LDUwOTAwLDUwOTA4LDUwOTA5LDUwOTEyLDUwOTEzLDUwOTIwLDU0NTI2LDU0NTI3LDU0NTI4LDU0NTI5LDU0NTMwLDU0NTMxLDU0NTMzLDU0NTM0LDU0NTM1LDU0NTM3LDU0NTM4LDU0NTM5LDU0NTQxLDU0NTQyLDU0NTQzLDU0NTQ0LDU0NTQ1LDU0NTQ2LDU0NTQ3LDU0NTUwLDU0NTUyLDU0NTUzLDU0NTU0LDU0NTU1LDU0NTU2LDU0NTU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTU4LDU0NTU5LDU0NTYwLDU0NTYxLDU0NTYyLDU0NTYzLDU0NTY0LDU0NTY1LDU0NTY2LDU0NTY3LDU0NTY4LDU0NTY5LDU0NTcwLDU0NTcxLDU0NTcyLDU0NTczLDU0NTc0LDU0NTc1LDU0NTc2LDU0NTc3LDU0NTc4LDU0NTc5LDU0NTgwLDU0NTgxLDU0NTgyLDU0NTgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTg0LDU0NTg1LDU0NTg2LDU0NTg3LDU0NTkwLDU0NTkxLDU0NTkzLDU0NTk0LDU0NTk1LDU0NTk3LDU0NTk4LDU0NTk5LDU0NjAwLDU0NjAxLDU0NjAyLDU0NjAzLDU0NjA2LDU0NjA4LDU0NjEwLDU0NjExLDU0NjEyLDU0NjEzLDU0NjE0LDU0NjE1LDU0NjE4LDU0NjE5LDU0NjIxLDU0NjIyLDU0NjIzLDU0NjI1LDU0NjI2LDU0NjI3LDUwOTIxLDUwOTI0LDUwOTI4LDUwOTM2LDUwOTM3LDUwOTQxLDUwOTQ4LDUwOTQ5LDUwOTUyLDUwOTU2LDUwOTY0LDUwOTY1LDUwOTY3LDUwOTY5LDUwOTc2LDUwOTc3LDUwOTgwLDUwOTg0LDUwOTkyLDUwOTkzLDUwOTk1LDUwOTk3LDUwOTk5LDUxMDA0LDUxMDA1LDUxMDA4LDUxMDEyLDUxMDE4LDUxMDIwLDUxMDIxLDUxMDIzLDUxMDI1LDUxMDI2LDUxMDI3LDUxMDI4LDUxMDI5LDUxMDMwLDUxMDMxLDUxMDMyLDUxMDM2LDUxMDQwLDUxMDQ4LDUxMDUxLDUxMDYwLDUxMDYxLDUxMDY0LDUxMDY4LDUxMDY5LDUxMDcwLDUxMDc1LDUxMDc2LDUxMDc3LDUxMDc5LDUxMDgwLDUxMDgxLDUxMDgyLDUxMDg2LDUxMDg4LDUxMDg5LDUxMDkyLDUxMDk0LDUxMDk1LDUxMDk2LDUxMDk4LDUxMTA0LDUxMTA1LDUxMTA3LDUxMTA4LDUxMTA5LDUxMTEwLDUxMTE2LDUxMTE3LDUxMTIwLDUxMTI0LDUxMTMyLDUxMTMzLDUxMTM1LDUxMTM2LDUxMTM3LDUxMTQ0LDUxMTQ1LDUxMTQ4LDUxMTUwLDUxMTUyLDUxMTYwLDUxMTY1LDUxMTcyLDUxMTc2LDUxMTgwLDUxMjAwLDUxMjAxLDUxMjA0LDUxMjA4LDUxMjEwLDU0NjI4LDU0NjMwLDU0NjMxLDU0NjM0LDU0NjM2LDU0NjM4LDU0NjM5LDU0NjQwLDU0NjQxLDU0NjQyLDU0NjQzLDU0NjQ2LDU0NjQ3LDU0NjQ5LDU0NjUwLDU0NjUxLDU0NjUzLDU0NjU0LDU0NjU1LDU0NjU2LDU0NjU3LDU0NjU4LDU0NjU5LDU0NjYyLDU0NjY2LDU0NjY3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NjY4LDU0NjY5LDU0NjcwLDU0NjcxLDU0NjczLDU0Njc0LDU0Njc1LDU0Njc2LDU0Njc3LDU0Njc4LDU0Njc5LDU0NjgwLDU0NjgxLDU0NjgyLDU0NjgzLDU0Njg0LDU0Njg1LDU0Njg2LDU0Njg3LDU0Njg4LDU0Njg5LDU0NjkwLDU0NjkxLDU0NjkyLDU0Njk0LDU0Njk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Njk2LDU0Njk3LDU0Njk4LDU0Njk5LDU0NzAwLDU0NzAxLDU0NzAyLDU0NzAzLDU0NzA0LDU0NzA1LDU0NzA2LDU0NzA3LDU0NzA4LDU0NzA5LDU0NzEwLDU0NzExLDU0NzEyLDU0NzEzLDU0NzE0LDU0NzE1LDU0NzE2LDU0NzE3LDU0NzE4LDU0NzE5LDU0NzIwLDU0NzIxLDU0NzIyLDU0NzIzLDU0NzI0LDU0NzI1LDU0NzI2LDU0NzI3LDUxMjE2LDUxMjE3LDUxMjE5LDUxMjIxLDUxMjIyLDUxMjI4LDUxMjI5LDUxMjMyLDUxMjM2LDUxMjQ0LDUxMjQ1LDUxMjQ3LDUxMjQ5LDUxMjU2LDUxMjYwLDUxMjY0LDUxMjcyLDUxMjczLDUxMjc2LDUxMjc3LDUxMjg0LDUxMzEyLDUxMzEzLDUxMzE2LDUxMzIwLDUxMzIyLDUxMzI4LDUxMzI5LDUxMzMxLDUxMzMzLDUxMzM0LDUxMzM1LDUxMzM5LDUxMzQwLDUxMzQxLDUxMzQ4LDUxMzU3LDUxMzU5LDUxMzYxLDUxMzY4LDUxMzg4LDUxMzg5LDUxMzk2LDUxNDAwLDUxNDA0LDUxNDEyLDUxNDEzLDUxNDE1LDUxNDE3LDUxNDI0LDUxNDI1LDUxNDI4LDUxNDQ1LDUxNDUyLDUxNDUzLDUxNDU2LDUxNDYwLDUxNDYxLDUxNDYyLDUxNDY4LDUxNDY5LDUxNDcxLDUxNDczLDUxNDgwLDUxNTAwLDUxNTA4LDUxNTM2LDUxNTM3LDUxNTQwLDUxNTQ0LDUxNTUyLDUxNTUzLDUxNTU1LDUxNTY0LDUxNTY4LDUxNTcyLDUxNTgwLDUxNTkyLDUxNTkzLDUxNTk2LDUxNjAwLDUxNjA4LDUxNjA5LDUxNjExLDUxNjEzLDUxNjQ4LDUxNjQ5LDUxNjUyLDUxNjU1LDUxNjU2LDUxNjU4LDUxNjY0LDUxNjY1LDUxNjY3LDU0NzMwLDU0NzMxLDU0NzMzLDU0NzM0LDU0NzM1LDU0NzM3LDU0NzM5LDU0NzQwLDU0NzQxLDU0NzQyLDU0NzQzLDU0NzQ2LDU0NzQ4LDU0NzUwLDU0NzUxLDU0NzUyLDU0NzUzLDU0NzU0LDU0NzU1LDU0NzU4LDU0NzU5LDU0NzYxLDU0NzYyLDU0NzYzLDU0NzY1LDU0NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NzY3LDU0NzY4LDU0NzY5LDU0NzcwLDU0NzcxLDU0Nzc0LDU0Nzc2LDU0Nzc4LDU0Nzc5LDU0NzgwLDU0NzgxLDU0NzgyLDU0NzgzLDU0Nzg2LDU0Nzg3LDU0Nzg5LDU0NzkwLDU0NzkxLDU0NzkzLDU0Nzk0LDU0Nzk1LDU0Nzk2LDU0Nzk3LDU0Nzk4LDU0Nzk5LDU0ODAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODA2LDU0ODA3LDU0ODA4LDU0ODA5LDU0ODEwLDU0ODExLDU0ODEzLDU0ODE0LDU0ODE1LDU0ODE3LDU0ODE4LDU0ODE5LDU0ODIxLDU0ODIyLDU0ODIzLDU0ODI0LDU0ODI1LDU0ODI2LDU0ODI3LDU0ODI4LDU0ODMwLDU0ODMxLDU0ODMyLDU0ODMzLDU0ODM0LDU0ODM1LDU0ODM2LDU0ODM3LDU0ODM4LDU0ODM5LDU0ODQyLDU0ODQzLDUxNjY5LDUxNjcwLDUxNjczLDUxNjc0LDUxNjc2LDUxNjc3LDUxNjgwLDUxNjgyLDUxNjg0LDUxNjg3LDUxNjkyLDUxNjkzLDUxNjk1LDUxNjk2LDUxNjk3LDUxNzA0LDUxNzA1LDUxNzA4LDUxNzEyLDUxNzIwLDUxNzIxLDUxNzIzLDUxNzI0LDUxNzI1LDUxNzMyLDUxNzM2LDUxNzUzLDUxNzg4LDUxNzg5LDUxNzkyLDUxNzk2LDUxODA0LDUxODA1LDUxODA3LDUxODA4LDUxODA5LDUxODE2LDUxODM3LDUxODQ0LDUxODY0LDUxOTAwLDUxOTAxLDUxOTA0LDUxOTA4LDUxOTE2LDUxOTE3LDUxOTE5LDUxOTIxLDUxOTIzLDUxOTI4LDUxOTI5LDUxOTM2LDUxOTQ4LDUxOTU2LDUxOTc2LDUxOTg0LDUxOTg4LDUxOTkyLDUyMDAwLDUyMDAxLDUyMDMzLDUyMDQwLDUyMDQxLDUyMDQ0LDUyMDQ4LDUyMDU2LDUyMDU3LDUyMDYxLDUyMDY4LDUyMDg4LDUyMDg5LDUyMTI0LDUyMTUyLDUyMTgwLDUyMTk2LDUyMTk5LDUyMjAxLDUyMjM2LDUyMjM3LDUyMjQwLDUyMjQ0LDUyMjUyLDUyMjUzLDUyMjU3LDUyMjU4LDUyMjYzLDUyMjY0LDUyMjY1LDUyMjY4LDUyMjcwLDUyMjcyLDUyMjgwLDUyMjgxLDUyMjgzLDU0ODQ1LDU0ODQ2LDU0ODQ3LDU0ODQ5LDU0ODUwLDU0ODUxLDU0ODUyLDU0ODU0LDU0ODU1LDU0ODU4LDU0ODYwLDU0ODYyLDU0ODYzLDU0ODY0LDU0ODY2LDU0ODY3LDU0ODcwLDU0ODcxLDU0ODczLDU0ODc0LDU0ODc1LDU0ODc3LDU0ODc4LDU0ODc5LDU0ODgwLDU0ODgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODgyLDU0ODgzLDU0ODg0LDU0ODg1LDU0ODg2LDU0ODg4LDU0ODkwLDU0ODkxLDU0ODkyLDU0ODkzLDU0ODk0LDU0ODk1LDU0ODk4LDU0ODk5LDU0OTAxLDU0OTAyLDU0OTAzLDU0OTA0LDU0OTA1LDU0OTA2LDU0OTA3LDU0OTA4LDU0OTA5LDU0OTEwLDU0OTExLDU0OTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0OTEzLDU0OTE0LDU0OTE2LDU0OTE4LDU0OTE5LDU0OTIwLDU0OTIxLDU0OTIyLDU0OTIzLDU0OTI2LDU0OTI3LDU0OTI5LDU0OTMwLDU0OTMxLDU0OTMzLDU0OTM0LDU0OTM1LDU0OTM2LDU0OTM3LDU0OTM4LDU0OTM5LDU0OTQwLDU0OTQyLDU0OTQ0LDU0OTQ2LDU0OTQ3LDU0OTQ4LDU0OTQ5LDU0OTUwLDU0OTUxLDU0OTUzLDU0OTU0LDUyMjg0LDUyMjg1LDUyMjg2LDUyMjkyLDUyMjkzLDUyMjk2LDUyMzAwLDUyMzA4LDUyMzA5LDUyMzExLDUyMzEyLDUyMzEzLDUyMzIwLDUyMzI0LDUyMzI2LDUyMzI4LDUyMzM2LDUyMzQxLDUyMzc2LDUyMzc3LDUyMzgwLDUyMzg0LDUyMzkyLDUyMzkzLDUyMzk1LDUyMzk2LDUyMzk3LDUyNDA0LDUyNDA1LDUyNDA4LDUyNDEyLDUyNDIwLDUyNDIxLDUyNDIzLDUyNDI1LDUyNDMyLDUyNDM2LDUyNDUyLDUyNDYwLDUyNDY0LDUyNDgxLDUyNDg4LDUyNDg5LDUyNDkyLDUyNDk2LDUyNTA0LDUyNTA1LDUyNTA3LDUyNTA5LDUyNTE2LDUyNTIwLDUyNTI0LDUyNTM3LDUyNTcyLDUyNTc2LDUyNTgwLDUyNTg4LDUyNTg5LDUyNTkxLDUyNTkzLDUyNjAwLDUyNjE2LDUyNjI4LDUyNjI5LDUyNjMyLDUyNjM2LDUyNjQ0LDUyNjQ1LDUyNjQ3LDUyNjQ5LDUyNjU2LDUyNjc2LDUyNjg0LDUyNjg4LDUyNzEyLDUyNzE2LDUyNzIwLDUyNzI4LDUyNzI5LDUyNzMxLDUyNzMzLDUyNzQwLDUyNzQ0LDUyNzQ4LDUyNzU2LDUyNzYxLDUyNzY4LDUyNzY5LDUyNzcyLDUyNzc2LDUyNzg0LDUyNzg1LDUyNzg3LDUyNzg5LDU0OTU1LDU0OTU3LDU0OTU4LDU0OTU5LDU0OTYxLDU0OTYyLDU0OTYzLDU0OTY0LDU0OTY1LDU0OTY2LDU0OTY3LDU0OTY4LDU0OTcwLDU0OTcyLDU0OTczLDU0OTc0LDU0OTc1LDU0OTc2LDU0OTc3LDU0OTc4LDU0OTc5LDU0OTgyLDU0OTgzLDU0OTg1LDU0OTg2LDU0OTg3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0OTg5LDU0OTkwLDU0OTkxLDU0OTkyLDU0OTk0LDU0OTk1LDU0OTk3LDU0OTk4LDU1MDAwLDU1MDAyLDU1MDAzLDU1MDA0LDU1MDA1LDU1MDA2LDU1MDA3LDU1MDA5LDU1MDEwLDU1MDExLDU1MDEzLDU1MDE0LDU1MDE1LDU1MDE3LDU1MDE4LDU1MDE5LDU1MDIwLDU1MDIxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDIyLDU1MDIzLDU1MDI1LDU1MDI2LDU1MDI3LDU1MDI4LDU1MDMwLDU1MDMxLDU1MDMyLDU1MDMzLDU1MDM0LDU1MDM1LDU1MDM4LDU1MDM5LDU1MDQxLDU1MDQyLDU1MDQzLDU1MDQ1LDU1MDQ2LDU1MDQ3LDU1MDQ4LDU1MDQ5LDU1MDUwLDU1MDUxLDU1MDUyLDU1MDUzLDU1MDU0LDU1MDU1LDU1MDU2LDU1MDU4LDU1MDU5LDU1MDYwLDUyODI0LDUyODI1LDUyODI4LDUyODMxLDUyODMyLDUyODMzLDUyODQwLDUyODQxLDUyODQzLDUyODQ1LDUyODUyLDUyODUzLDUyODU2LDUyODYwLDUyODY4LDUyODY5LDUyODcxLDUyODczLDUyODgwLDUyODgxLDUyODg0LDUyODg4LDUyODk2LDUyODk3LDUyODk5LDUyOTAwLDUyOTAxLDUyOTA4LDUyOTA5LDUyOTI5LDUyOTY0LDUyOTY1LDUyOTY4LDUyOTcxLDUyOTcyLDUyOTgwLDUyOTgxLDUyOTgzLDUyOTg0LDUyOTg1LDUyOTkyLDUyOTkzLDUyOTk2LDUzMDAwLDUzMDA4LDUzMDA5LDUzMDExLDUzMDEzLDUzMDIwLDUzMDI0LDUzMDI4LDUzMDM2LDUzMDM3LDUzMDM5LDUzMDQwLDUzMDQxLDUzMDQ4LDUzMDc2LDUzMDc3LDUzMDgwLDUzMDg0LDUzMDkyLDUzMDkzLDUzMDk1LDUzMDk3LDUzMTA0LDUzMTA1LDUzMTA4LDUzMTEyLDUzMTIwLDUzMTI1LDUzMTMyLDUzMTUzLDUzMTYwLDUzMTY4LDUzMTg4LDUzMjE2LDUzMjE3LDUzMjIwLDUzMjI0LDUzMjMyLDUzMjMzLDUzMjM1LDUzMjM3LDUzMjQ0LDUzMjQ4LDUzMjUyLDUzMjY1LDUzMjcyLDUzMjkzLDUzMzAwLDUzMzAxLDUzMzA0LDUzMzA4LDU1MDYxLDU1MDYyLDU1MDYzLDU1MDY2LDU1MDY3LDU1MDY5LDU1MDcwLDU1MDcxLDU1MDczLDU1MDc0LDU1MDc1LDU1MDc2LDU1MDc3LDU1MDc4LDU1MDc5LDU1MDgyLDU1MDg0LDU1MDg2LDU1MDg3LDU1MDg4LDU1MDg5LDU1MDkwLDU1MDkxLDU1MDk0LDU1MDk1LDU1MDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDk4LDU1MDk5LDU1MTAxLDU1MTAyLDU1MTAzLDU1MTA0LDU1MTA1LDU1MTA2LDU1MTA3LDU1MTA5LDU1MTEwLDU1MTEyLDU1MTE0LDU1MTE1LDU1MTE2LDU1MTE3LDU1MTE4LDU1MTE5LDU1MTIyLDU1MTIzLDU1MTI1LDU1MTMwLDU1MTMxLDU1MTMyLDU1MTMzLDU1MTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MTM1LDU1MTM4LDU1MTQwLDU1MTQyLDU1MTQzLDU1MTQ0LDU1MTQ2LDU1MTQ3LDU1MTQ5LDU1MTUwLDU1MTUxLDU1MTUzLDU1MTU0LDU1MTU1LDU1MTU3LDU1MTU4LDU1MTU5LDU1MTYwLDU1MTYxLDU1MTYyLDU1MTYzLDU1MTY2LDU1MTY3LDU1MTY4LDU1MTcwLDU1MTcxLDU1MTcyLDU1MTczLDU1MTc0LDU1MTc1LDU1MTc4LDU1MTc5LDUzMzE2LDUzMzE3LDUzMzE5LDUzMzIxLDUzMzI4LDUzMzMyLDUzMzM2LDUzMzQ0LDUzMzU2LDUzMzU3LDUzMzYwLDUzMzY0LDUzMzcyLDUzMzczLDUzMzc3LDUzNDEyLDUzNDEzLDUzNDE2LDUzNDIwLDUzNDI4LDUzNDI5LDUzNDMxLDUzNDMzLDUzNDQwLDUzNDQxLDUzNDQ0LDUzNDQ4LDUzNDQ5LDUzNDU2LDUzNDU3LDUzNDU5LDUzNDYwLDUzNDYxLDUzNDY4LDUzNDY5LDUzNDcyLDUzNDc2LDUzNDg0LDUzNDg1LDUzNDg3LDUzNDg4LDUzNDg5LDUzNDk2LDUzNTE3LDUzNTUyLDUzNTUzLDUzNTU2LDUzNTYwLDUzNTYyLDUzNTY4LDUzNTY5LDUzNTcxLDUzNTcyLDUzNTczLDUzNTgwLDUzNTgxLDUzNTg0LDUzNTg4LDUzNTk2LDUzNTk3LDUzNTk5LDUzNjAxLDUzNjA4LDUzNjEyLDUzNjI4LDUzNjM2LDUzNjQwLDUzNjY0LDUzNjY1LDUzNjY4LDUzNjcyLDUzNjgwLDUzNjgxLDUzNjgzLDUzNjg1LDUzNjkwLDUzNjkyLDUzNjk2LDUzNzIwLDUzNzQ4LDUzNzUyLDUzNzY3LDUzNzY5LDUzNzc2LDUzODA0LDUzODA1LDUzODA4LDUzODEyLDUzODIwLDUzODIxLDUzODIzLDUzODI1LDUzODMyLDUzODUyLDU1MTgxLDU1MTgyLDU1MTgzLDU1MTg1LDU1MTg2LDU1MTg3LDU1MTg4LDU1MTg5LDU1MTkwLDU1MTkxLDU1MTk0LDU1MTk2LDU1MTk4LDU1MTk5LDU1MjAwLDU1MjAxLDU1MjAyLDU1MjAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODYwLDUzODg4LDUzODg5LDUzODkyLDUzODk2LDUzOTA0LDUzOTA1LDUzOTA5LDUzOTE2LDUzOTIwLDUzOTI0LDUzOTMyLDUzOTM3LDUzOTQ0LDUzOTQ1LDUzOTQ4LDUzOTUxLDUzOTUyLDUzOTU0LDUzOTYwLDUzOTYxLDUzOTYzLDUzOTcyLDUzOTc2LDUzOTgwLDUzOTg4LDUzOTg5LDU0MDAwLDU0MDAxLDU0MDA0LDU0MDA4LDU0MDE2LDU0MDE3LDU0MDE5LDU0MDIxLDU0MDI4LDU0MDI5LDU0MDMwLDU0MDMyLDU0MDM2LDU0MDM4LDU0MDQ0LDU0MDQ1LDU0MDQ3LDU0MDQ4LDU0MDQ5LDU0MDUzLDU0MDU2LDU0MDU3LDU0MDYwLDU0MDY0LDU0MDcyLDU0MDczLDU0MDc1LDU0MDc2LDU0MDc3LDU0MDg0LDU0MDg1LDU0MTQwLDU0MTQxLDU0MTQ0LDU0MTQ4LDU0MTU2LDU0MTU3LDU0MTU5LDU0MTYwLDU0MTYxLDU0MTY4LDU0MTY5LDU0MTcyLDU0MTc2LDU0MTg0LDU0MTg1LDU0MTg3LDU0MTg5LDU0MTk2LDU0MjAwLDU0MjA0LDU0MjEyLDU0MjEzLDU0MjE2LDU0MjE3LDU0MjI0LDU0MjMyLDU0MjQxLDU0MjQzLDU0MjUyLDU0MjUzLDU0MjU2LDU0MjYwLDU0MjY4LDU0MjY5LDU0MjcxLDU0MjczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjgwLDU0MzAxLDU0MzM2LDU0MzQwLDU0MzY0LDU0MzY4LDU0MzcyLDU0MzgxLDU0MzgzLDU0MzkyLDU0MzkzLDU0Mzk2LDU0Mzk5LDU0NDAwLDU0NDAyLDU0NDA4LDU0NDA5LDU0NDExLDU0NDEzLDU0NDIwLDU0NDQxLDU0NDc2LDU0NDgwLDU0NDg0LDU0NDkyLDU0NDk1LDU0NTA0LDU0NTA4LDU0NTEyLDU0NTIwLDU0NTIzLDU0NTI1LDU0NTMyLDU0NTM2LDU0NTQwLDU0NTQ4LDU0NTQ5LDU0NTUxLDU0NTg4LDU0NTg5LDU0NTkyLDU0NTk2LDU0NjA0LDU0NjA1LDU0NjA3LDU0NjA5LDU0NjE2LDU0NjE3LDU0NjIwLDU0NjI0LDU0NjI5LDU0NjMyLDU0NjMzLDU0NjM1LDU0NjM3LDU0NjQ0LDU0NjQ1LDU0NjQ4LDU0NjUyLDU0NjYwLDU0NjYxLDU0NjYzLDU0NjY0LDU0NjY1LDU0NjcyLDU0NjkzLDU0NzI4LDU0NzI5LDU0NzMyLDU0NzM2LDU0NzM4LDU0NzQ0LDU0NzQ1LDU0NzQ3LDU0NzQ5LDU0NzU2LDU0NzU3LDU0NzYwLDU0NzY0LDU0NzcyLDU0NzczLDU0Nzc1LDU0Nzc3LDU0Nzg0LDU0Nzg1LDU0Nzg4LDU0NzkyLDU0ODAwLDU0ODAxLDU0ODAzLDU0ODA0LDU0ODA1LDU0ODEyLDU0ODE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODIwLDU0ODI5LDU0ODQwLDU0ODQxLDU0ODQ0LDU0ODQ4LDU0ODUzLDU0ODU2LDU0ODU3LDU0ODU5LDU0ODYxLDU0ODY1LDU0ODY4LDU0ODY5LDU0ODcyLDU0ODc2LDU0ODg3LDU0ODg5LDU0ODk2LDU0ODk3LDU0OTAwLDU0OTE1LDU0OTE3LDU0OTI0LDU0OTI1LDU0OTI4LDU0OTMyLDU0OTQxLDU0OTQzLDU0OTQ1LDU0OTUyLDU0OTU2LDU0OTYwLDU0OTY5LDU0OTcxLDU0OTgwLDU0OTgxLDU0OTg0LDU0OTg4LDU0OTkzLDU0OTk2LDU0OTk5LDU1MDAxLDU1MDA4LDU1MDEyLDU1MDE2LDU1MDI0LDU1MDI5LDU1MDM2LDU1MDM3LDU1MDQwLDU1MDQ0LDU1MDU3LDU1MDY0LDU1MDY1LDU1MDY4LDU1MDcyLDU1MDgwLDU1MDgxLDU1MDgzLDU1MDg1LDU1MDkyLDU1MDkzLDU1MDk2LDU1MTAwLDU1MTA4LDU1MTExLDU1MTEzLDU1MTIwLDU1MTIxLDU1MTI0LDU1MTI2LDU1MTI3LDU1MTI4LDU1MTI5LDU1MTM2LDU1MTM3LDU1MTM5LDU1MTQxLDU1MTQ1LDU1MTQ4LDU1MTUyLDU1MTU2LDU1MTY0LDU1MTY1LDU1MTY5LDU1MTc2LDU1MTc3LDU1MTgwLDU1MTg0LDU1MTkyLDU1MTkzLDU1MTk1LDU1MTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAyODUsMjAzMzksMjA1NTEsMjA3MjksMjExNTIsMjE0ODcsMjE2MjEsMjE3MzMsMjIwMjUsMjMyMzMsMjM0NzgsMjYyNDcsMjY1NTAsMjY1NTEsMjY2MDcsMjc0NjgsMjk2MzQsMzAxNDYsMzEyOTIsMzM0OTksMzM1NDAsMzQ5MDMsMzQ5NTIsMzUzODIsMzYwNDAsMzYzMDMsMzY2MDMsMzY4MzgsMzkzODEsMjEwNTEsMjEzNjQsMjE1MDgsMjQ2ODIsMjQ5MzIsMjc1ODAsMjk2NDcsMzMwNTAsMzUyNTgsMzUyODIsMzgzMDcsMjAzNTUsMjEwMDIsMjI3MTgsMjI5MDQsMjMwMTQsMjQxNzgsMjQxODUsMjUwMzEsMjU1MzYsMjY0MzgsMjY2MDQsMjY3NTEsMjg1NjcsMzAyODYsMzA0NzUsMzA5NjUsMzEyNDAsMzE0ODcsMzE3NzcsMzI5MjUsMzMzOTAsMzMzOTMsMzU1NjMsMzgyOTEsMjAwNzUsMjE5MTcsMjYzNTksMjgyMTIsMzA4ODMsMzE0NjksMzM4ODMsMzUwODgsMzQ2MzgsMzg4MjQsMjEyMDgsMjIzNTAsMjI1NzAsMjM4ODQsMjQ4NjMsMjUwMjIsMjUxMjEsMjU5NTQsMjY1NzcsMjcyMDQsMjgxODcsMjk5NzYsMzAxMzEsMzA0MzUsMzA2NDAsMzIwNTgsMzcwMzksMzc5NjksMzc5NzAsNDA4NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjEyODMsMjM3MjQsMzAwMDIsMzI5ODcsMzc0NDAsMzgyOTYsMjEwODMsMjI1MzYsMjMwMDQsMjM3MTMsMjM4MzEsMjQyNDcsMjQzNzgsMjQzOTQsMjQ5NTEsMjc3NDMsMzAwNzQsMzAwODYsMzE5NjgsMzIxMTUsMzIxNzcsMzI2NTIsMzMxMDgsMzMzMTMsMzQxOTMsMzUxMzcsMzU2MTEsMzc2MjgsMzg0NzcsNDAwMDcsMjAxNzEsMjAyMTUsMjA0OTEsMjA5NzcsMjI2MDcsMjQ4ODcsMjQ4OTQsMjQ5MzYsMjU5MTMsMjcxMTQsMjg0MzMsMzAxMTcsMzAzNDIsMzA0MjIsMzE2MjMsMzM0NDUsMzM5OTUsNjM3NDQsMzc3OTksMzgyODMsMjE4ODgsMjM0NTgsMjIzNTMsNjM3NDUsMzE5MjMsMzI2OTcsMzczMDEsMjA1MjAsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjU0NTQsMjU4MTgsMjU4MzEsMjgxOTIsMjg4NDQsMzEwNjcsMzYzMTcsMzYzODIsNjM3NDYsMzY5ODksMzc0NDUsMzc2MjQsMjAwOTQsMjAyMTQsMjA1ODEsMjQwNjIsMjQzMTQsMjQ4MzgsMjY5NjcsMzMxMzcsMzQzODgsMzY0MjMsMzc3NDksMzk0NjcsMjAwNjIsMjA2MjUsMjY0ODAsMjY2ODgsMjA3NDUsMjExMzMsMjExMzgsMjcyOTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA2NTIsMzczOTIsNDA2NjAsMjExNjMsMjQ2MjMsMzY4NTAsMjA1NTIsMjUwMDEsMjU1ODEsMjU4MDIsMjY2ODQsMjcyNjgsMjg2MDgsMzMxNjAsMzUyMzMsMzg1NDgsMjI1MzMsMjkzMDksMjkzNTYsMjk5NTYsMzIxMjEsMzIzNjUsMzI5MzcsMzUyMTEsMzU3MDAsMzY5NjMsNDAyNzMsMjUyMjUsMjc3NzAsMjg1MDAsMzIwODAsMzI1NzAsMzUzNjMsMjA4NjAsMjQ5MDYsMzE2NDUsMzU2MDksMzc0NjMsMzc3NzIsMjAxNDAsMjA0MzUsMjA1MTAsMjA2NzAsMjA3NDIsMjExODUsMjExOTcsMjEzNzUsMjIzODQsMjI2NTksMjQyMTgsMjQ0NjUsMjQ5NTAsMjUwMDQsMjU4MDYsMjU5NjQsMjYyMjMsMjYyOTksMjYzNTYsMjY3NzUsMjgwMzksMjg4MDUsMjg5MTMsMjk4NTUsMjk4NjEsMjk4OTgsMzAxNjksMzA4MjgsMzA5NTYsMzE0NTUsMzE0NzgsMzIwNjksMzIxNDcsMzI3ODksMzI4MzEsMzMwNTEsMzM2ODYsMzU2ODYsMzY2MjksMzY4ODUsMzc4NTcsMzg5MTUsMzg5NjgsMzk1MTQsMzk5MTIsMjA0MTgsMjE4NDMsMjI1ODYsMjI4NjUsMjMzOTUsMjM2MjIsMjQ3NjAsMjUxMDYsMjY2OTAsMjY4MDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4NTYsMjgzMzAsMzAwMjgsMzAzMjgsMzA5MjYsMzEyOTMsMzE5OTUsMzIzNjMsMzIzODAsMzUzMzYsMzU0ODksMzU5MDMsMzg1NDIsNDAzODgsMjE0NzYsMjE0ODEsMjE1NzgsMjE2MTcsMjIyNjYsMjI5OTMsMjMzOTYsMjM2MTEsMjQyMzUsMjUzMzUsMjU5MTEsMjU5MjUsMjU5NzAsMjYyNzIsMjY1NDMsMjcwNzMsMjc4MzcsMzAyMDQsMzAzNTIsMzA1OTAsMzEyOTUsMzI2NjAsMzI3NzEsMzI5MjksMzMxNjcsMzM1MTAsMzM1MzMsMzM3NzYsMzQyNDEsMzQ4NjUsMzQ5OTYsMzU0OTMsNjM3NDcsMzY3NjQsMzc2NzgsMzg1OTksMzkwMTUsMzk2NDAsNDA3MjMsMjE3NDEsMjYwMTEsMjYzNTQsMjY3NjcsMzEyOTYsMzU4OTUsNDAyODgsMjIyNTYsMjIzNzIsMjM4MjUsMjYxMTgsMjY4MDEsMjY4MjksMjg0MTQsMjk3MzYsMzQ5NzQsMzk5MDgsMjc3NTIsNjM3NDgsMzk1OTIsMjAzNzksMjA4NDQsMjA4NDksMjExNTEsMjMzODAsMjQwMzcsMjQ2NTYsMjQ2ODUsMjUzMjksMjU1MTEsMjU5MTUsMjk2NTcsMzEzNTQsMzQ0NjcsMzYwMDIsMzg3OTksMjAwMTgsMjM1MjEsMjUwOTYsMjY1MjQsMjk5MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzExODUsMzM3NDcsMzU0NjMsMzU1MDYsMzYzMjgsMzY5NDIsMzc3MDcsMzg5ODIsMjQyNzUsMjcxMTIsMzQzMDMsMzcxMDEsNjM3NDksMjA4OTYsMjM0NDgsMjM1MzIsMjQ5MzEsMjY4NzQsMjc0NTQsMjg3NDgsMjk3NDMsMjk5MTIsMzE2NDksMzI1OTIsMzM3MzMsMzUyNjQsMzYwMTEsMzgzNjQsMzkyMDgsMjEwMzgsMjQ2NjksMjUzMjQsMzY4NjYsMjAzNjIsMjA4MDksMjEyODEsMjI3NDUsMjQyOTEsMjYzMzYsMjc5NjAsMjg4MjYsMjkzNzgsMjk2NTQsMzE1NjgsMzMwMDksMzc5NzksMjEzNTAsMjU0OTksMzI2MTksMjAwNTQsMjA2MDgsMjI2MDIsMjI3NTAsMjQ2MTgsMjQ4NzEsMjUyOTYsMjcwODgsMzk3NDUsMjM0MzksMzIwMjQsMzI5NDUsMzY3MDMsMjAxMzIsMjA2ODksMjE2NzYsMjE5MzIsMjMzMDgsMjM5NjgsMjQwMzksMjU4OTgsMjU5MzQsMjY2NTcsMjcyMTEsMjk0MDksMzAzNTAsMzA3MDMsMzIwOTQsMzI3NjEsMzMxODQsMzQxMjYsMzQ1MjcsMzY2MTEsMzY2ODYsMzcwNjYsMzkxNzEsMzk1MDksMzk4NTEsMTk5OTIsMjAwMzcsMjAwNjEsMjAxNjcsMjA0NjUsMjA4NTUsMjEyNDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjEzMTIsMjE0NzUsMjE0NzcsMjE2NDYsMjIwMzYsMjIzODksMjI0MzQsMjM0OTUsMjM5NDMsMjQyNzIsMjUwODQsMjUzMDQsMjU5MzcsMjY1NTIsMjY2MDEsMjcwODMsMjc0NzIsMjc1OTAsMjc2MjgsMjc3MTQsMjgzMTcsMjg3OTIsMjkzOTksMjk1OTAsMjk2OTksMzA2NTUsMzA2OTcsMzEzNTAsMzIxMjcsMzI3NzcsMzMyNzYsMzMyODUsMzMyOTAsMzM1MDMsMzQ5MTQsMzU2MzUsMzYwOTIsMzY1NDQsMzY4ODEsMzcwNDEsMzc0NzYsMzc1NTgsMzkzNzgsMzk0OTMsNDAxNjksNDA0MDcsNDA4NjAsMjIyODMsMjM2MTYsMzM3MzgsMzg4MTYsMzg4MjcsNDA2MjgsMjE1MzEsMzEzODQsMzI2NzYsMzUwMzMsMzY1NTcsMzcwODksMjI1MjgsMjM2MjQsMjU0OTYsMzEzOTEsMjM0NzAsMjQzMzksMzEzNTMsMzE0MDYsMzM0MjIsMzY1MjQsMjA1MTgsMjEwNDgsMjEyNDAsMjEzNjcsMjIyODAsMjUzMzEsMjU0NTgsMjc0MDIsMjgwOTksMzA1MTksMjE0MTMsMjk1MjcsMzQxNTIsMzY0NzAsMzgzNTcsMjY0MjYsMjczMzEsMjg1MjgsMzU0MzcsMzY1NTYsMzkyNDMsNjM3NTAsMjYyMzEsMjc1MTIsMzYwMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzk3NDAsNjM3NTEsMjE0ODMsMjIzMTcsMjI4NjIsMjU1NDIsMjcxMzEsMjk2NzQsMzA3ODksMzE0MTgsMzE0MjksMzE5OTgsMzM5MDksMzUyMTUsMzYyMTEsMzY5MTcsMzgzMTIsMjEyNDMsMjIzNDMsMzAwMjMsMzE1ODQsMzM3NDAsMzc0MDYsNjM3NTIsMjcyMjQsMjA4MTEsMjEwNjcsMjExMjcsMjUxMTksMjY4NDAsMjY5OTcsMzg1NTMsMjA2NzcsMjExNTYsMjEyMjAsMjUwMjcsMjYwMjAsMjY2ODEsMjcxMzUsMjk4MjIsMzE1NjMsMzM0NjUsMzM3NzEsMzUyNTAsMzU2NDEsMzY4MTcsMzkyNDEsNjM3NTMsMjAxNzAsMjI5MzUsMjU4MTAsMjYxMjksMjcyNzgsMjk3NDgsMzExMDUsMzExNjUsMzM0NDksMzQ5NDIsMzQ5NDMsMzUxNjcsNjM3NTQsMzc2NzAsMjAyMzUsMjE0NTAsMjQ2MTMsMjUyMDEsMjc3NjIsMzIwMjYsMzIxMDIsMjAxMjAsMjA4MzQsMzA2ODQsMzI5NDMsMjAyMjUsMjAyMzgsMjA4NTQsMjA4NjQsMjE5ODAsMjIxMjAsMjIzMzEsMjI1MjIsMjI1MjQsMjI4MDQsMjI4NTUsMjI5MzEsMjM0OTIsMjM2OTYsMjM4MjIsMjQwNDksMjQxOTAsMjQ1MjQsMjUyMTYsMjYwNzEsMjYwODMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjYzOTgsMjYzOTksMjY0NjIsMjY4MjcsMjY4MjAsMjcyMzEsMjc0NTAsMjc2ODMsMjc3NzMsMjc3NzgsMjgxMDMsMjk1OTIsMjk3MzQsMjk3MzgsMjk4MjYsMjk4NTksMzAwNzIsMzAwNzksMzA4NDksMzA5NTksMzEwNDEsMzEwNDcsMzEwNDgsMzEwOTgsMzE2MzcsMzIwMDAsMzIxODYsMzI2NDgsMzI3NzQsMzI4MTMsMzI5MDgsMzUzNTIsMzU2NjMsMzU5MTIsMzYyMTUsMzc2NjUsMzc2NjgsMzkxMzgsMzkyNDksMzk0MzgsMzk0MzksMzk1MjUsNDA1OTQsMzIyMDIsMjAzNDIsMjE1MTMsMjUzMjYsMjY3MDgsMzczMjksMjE5MzEsMjA3OTQsNjM3NTUsNjM3NTYsMjMwNjgsMjUwNjIsNjM3NTcsMjUyOTUsMjUzNDMsNjM3NTgsNjM3NTksNjM3NjAsNjM3NjEsNjM3NjIsNjM3NjMsMzcwMjcsNjM3NjQsNjM3NjUsNjM3NjYsNjM3NjcsNjM3NjgsMzU1ODIsNjM3NjksNjM3NzAsNjM3NzEsNjM3NzIsMjYyNjIsNjM3NzMsMjkwMTQsNjM3NzQsNjM3NzUsMzg2MjcsNjM3NzYsMjU0MjMsMjU0NjYsMjEzMzUsNjM3NzcsMjY1MTEsMjY5NzYsMjgyNzUsNjM3NzgsMzAwMDcsNjM3NzksNjM3ODAsNjM3ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzIwMTMsNjM3ODIsNjM3ODMsMzQ5MzAsMjIyMTgsMjMwNjQsNjM3ODQsNjM3ODUsNjM3ODYsNjM3ODcsNjM3ODgsMjAwMzUsNjM3ODksMjA4MzksMjI4NTYsMjY2MDgsMzI3ODQsNjM3OTAsMjI4OTksMjQxODAsMjU3NTQsMzExNzgsMjQ1NjUsMjQ2ODQsMjUyODgsMjU0NjcsMjM1MjcsMjM1MTEsMjExNjIsNjM3OTEsMjI5MDAsMjQzNjEsMjQ1OTQsNjM3OTIsNjM3OTMsNjM3OTQsMjk3ODUsNjM3OTUsNjM3OTYsNjM3OTcsNjM3OTgsNjM3OTksNjM4MDAsMzkzNzcsNjM4MDEsNjM4MDIsNjM4MDMsNjM4MDQsNjM4MDUsNjM4MDYsNjM4MDcsNjM4MDgsNjM4MDksNjM4MTAsNjM4MTEsMjg2MTEsNjM4MTIsNjM4MTMsMzMyMTUsMzY3ODYsMjQ4MTcsNjM4MTQsNjM4MTUsMzMxMjYsNjM4MTYsNjM4MTcsMjM2MTUsNjM4MTgsNjM4MTksNjM4MjAsNjM4MjEsNjM4MjIsNjM4MjMsNjM4MjQsNjM4MjUsMjMyNzMsMzUzNjUsMjY0OTEsMzIwMTYsNjM4MjYsNjM4MjcsNjM4MjgsNjM4MjksNjM4MzAsNjM4MzEsMzMwMjEsNjM4MzIsNjM4MzMsMjM2MTIsMjc4NzcsMjEzMTEsMjgzNDYsMjI4MTAsMzM1OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAwMjUsMjAxNTAsMjAyOTQsMjE5MzQsMjIyOTYsMjI3MjcsMjQ0MDYsMjYwMzksMjYwODYsMjcyNjQsMjc1NzMsMjgyMzcsMzA3MDEsMzE0NzEsMzE3NzQsMzIyMjIsMzQ1MDcsMzQ5NjIsMzcxNzAsMzc3MjMsMjU3ODcsMjg2MDYsMjk1NjIsMzAxMzYsMzY5NDgsMjE4NDYsMjIzNDksMjUwMTgsMjU4MTIsMjYzMTEsMjgxMjksMjgyNTEsMjg1MjUsMjg2MDEsMzAxOTIsMzI4MzUsMzMyMTMsMzQxMTMsMzUyMDMsMzU1MjcsMzU2NzQsMzc2NjMsMjc3OTUsMzAwMzUsMzE1NzIsMzYzNjcsMzY5NTcsMjE3NzYsMjI1MzAsMjI2MTYsMjQxNjIsMjUwOTUsMjU3NTgsMjY4NDgsMzAwNzAsMzE5NTgsMzQ3MzksNDA2ODAsMjAxOTUsMjI0MDgsMjIzODIsMjI4MjMsMjM1NjUsMjM3MjksMjQxMTgsMjQ0NTMsMjUxNDAsMjU4MjUsMjk2MTksMzMyNzQsMzQ5NTUsMzYwMjQsMzg1MzgsNDA2NjcsMjM0MjksMjQ1MDMsMjQ3NTUsMjA0OTgsMjA5OTIsMjEwNDAsMjIyOTQsMjI1ODEsMjI2MTUsMjM1NjYsMjM2NDgsMjM3OTgsMjM5NDcsMjQyMzAsMjQ0NjYsMjQ3NjQsMjUzNjEsMjU0ODEsMjU2MjMsMjY2OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4NzMsMjczMzAsMjgxMjAsMjgxOTMsMjgzNzIsMjg2NDQsMjkxODIsMzA0MjgsMzA1ODUsMzExNTMsMzEyOTEsMzM3OTYsMzUyNDEsMzYwNzcsMzYzMzksMzY0MjQsMzY4NjcsMzY4ODQsMzY5NDcsMzcxMTcsMzc3MDksMzg1MTgsMzg4NzYsMjc2MDIsMjg2NzgsMjkyNzIsMjkzNDYsMjk1NDQsMzA1NjMsMzExNjcsMzE3MTYsMzI0MTEsMzU3MTIsMjI2OTcsMjQ3NzUsMjU5NTgsMjYxMDksMjYzMDIsMjc3ODgsMjg5NTgsMjkxMjksMzU5MzAsMzg5MzEsMjAwNzcsMzEzNjEsMjAxODksMjA5MDgsMjA5NDEsMjEyMDUsMjE1MTYsMjQ5OTksMjY0ODEsMjY3MDQsMjY4NDcsMjc5MzQsMjg1NDAsMzAxNDAsMzA2NDMsMzE0NjEsMzMwMTIsMzM4OTEsMzc1MDksMjA4MjgsMjYwMDcsMjY0NjAsMjY1MTUsMzAxNjgsMzE0MzEsMzM2NTEsNjM4MzQsMzU5MTAsMzY4ODcsMzg5NTcsMjM2NjMsMzMyMTYsMzM0MzQsMzY5MjksMzY5NzUsMzczODksMjQ0NzEsMjM5NjUsMjcyMjUsMjkxMjgsMzAzMzEsMzE1NjEsMzQyNzYsMzU1ODgsMzcxNTksMzk0NzIsMjE4OTUsMjUwNzgsNjM4MzUsMzAzMTMsMzI2NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQzNjcsMzQ3NDYsMzUwNjQsMzcwMDcsNjM4MzYsMjc5MzEsMjg4ODksMjk2NjIsMzIwOTcsMzM4NTMsNjM4MzcsMzcyMjYsMzk0MDksNjM4MzgsMjAwOTgsMjEzNjUsMjczOTYsMjc0MTAsMjg3MzQsMjkyMTEsMzQzNDksNDA0NzgsMjEwNjgsMzY3NzEsMjM4ODgsMjU4MjksMjU5MDAsMjc0MTQsMjg2NTEsMzE4MTEsMzI0MTIsMzQyNTMsMzUxNzIsMzUyNjEsMjUyODksMzMyNDAsMzQ4NDcsMjQyNjYsMjYzOTEsMjgwMTAsMjk0MzYsMjk3MDEsMjk4MDcsMzQ2OTAsMzcwODYsMjAzNTgsMjM4MjEsMjQ0ODAsMzM4MDIsMjA5MTksMjU1MDQsMzAwNTMsMjAxNDIsMjA0ODYsMjA4NDEsMjA5MzcsMjY3NTMsMjcxNTMsMzE5MTgsMzE5MjEsMzE5NzUsMzMzOTEsMzU1MzgsMzY2MzUsMzczMjcsMjA0MDYsMjA3OTEsMjEyMzcsMjE1NzAsMjQzMDAsMjQ5NDIsMjUxNTAsMjYwNTMsMjczNTQsMjg2NzAsMzEwMTgsMzQyNjgsMzQ4NTEsMzgzMTcsMzk1MjIsMzk1MzAsNDA1OTksNDA2NTQsMjExNDcsMjYzMTAsMjc1MTEsMjg3MDEsMzEwMTksMzY3MDYsMzg3MjIsMjQ5NzYsMjUwODgsMjU4OTEsMjg0NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDEsMjk4MzMsMzIyNDQsMzI4NzksMzQwMzAsMzY2NDYsMzY4OTksMzc3MDYsMjA5MjUsMjEwMTUsMjExNTUsMjc5MTYsMjg4NzIsMzUwMTAsMjQyNjUsMjU5ODYsMjc1NjYsMjg2MTAsMzE4MDYsMjk1NTcsMjAxOTYsMjAyNzgsMjIyNjUsNjM4MzksMjM3MzgsMjM5OTQsMjQ2MDQsMjk2MTgsMzE1MzMsMzI2NjYsMzI3MTgsMzI4MzgsMzY4OTQsMzc0MjgsMzg2NDYsMzg3MjgsMzg5MzYsNDA4MDEsMjAzNjMsMjg1ODMsMzExNTAsMzczMDAsMzg1ODMsMjEyMTQsNjM4NDAsMjU3MzYsMjU3OTYsMjczNDcsMjg1MTAsMjg2OTYsMjkyMDAsMzA0MzksMzI3NjksMzQzMTAsMzQzOTYsMzYzMzUsMzY2MTMsMzg3MDYsMzk3OTEsNDA0NDIsNDA1NjUsMzA4NjAsMzExMDMsMzIxNjAsMzM3MzcsMzc2MzYsNDA1NzUsNDA1OTUsMzU1NDIsMjI3NTEsMjQzMjQsMjY0MDcsMjg3MTEsMjk5MDMsMzE4NDAsMzI4OTQsMjA3NjksMjg3MTIsMjkyODIsMzA5MjIsMzYwMzQsMzYwNTgsMzYwODQsMzg2NDcsMjAxMDIsMjA2OTgsMjM1MzQsMjQyNzgsMjYwMDksMjkxMzQsMzAyNzQsMzA2MzcsMzI4NDIsMzQwNDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5ODgsMzk3MTksNDA4NDUsMjI3NDQsMjMxMDUsMjM2NTAsMjcxNTUsMjgxMjIsMjg0MzEsMzAyNjcsMzIwNDcsMzIzMTEsMzQwNzgsMzUxMjgsMzc4NjAsMzg0NzUsMjExMjksMjYwNjYsMjY2MTEsMjcwNjAsMjc5NjksMjgzMTYsMjg2ODcsMjk3MDUsMjk3OTIsMzAwNDEsMzAyNDQsMzA4MjcsMzU2MjgsMzkwMDYsMjA4NDUsMjUxMzQsMzg1MjAsMjAzNzQsMjA1MjMsMjM4MzMsMjgxMzgsMzIxODQsMzY2NTAsMjQ0NTksMjQ5MDAsMjY2NDcsNjM4NDEsMzg1MzQsMjEyMDIsMzI5MDcsMjA5NTYsMjA5NDAsMjY5NzQsMzEyNjAsMzIxOTAsMzM3NzcsMzg1MTcsMjA0NDIsMjEwMzMsMjE0MDAsMjE1MTksMjE3NzQsMjM2NTMsMjQ3NDMsMjY0NDYsMjY3OTIsMjgwMTIsMjkzMTMsMjk0MzIsMjk3MDIsMjk4MjcsNjM4NDIsMzAxNzgsMzE4NTIsMzI2MzMsMzI2OTYsMzM2NzMsMzUwMjMsMzUwNDEsMzczMjQsMzczMjgsMzg2MjYsMzk4ODEsMjE1MzMsMjg1NDIsMjkxMzYsMjk4NDgsMzQyOTgsMzY1MjIsMzg1NjMsNDAwMjMsNDA2MDcsMjY1MTksMjgxMDcsMjk3NDcsMzMyNTYsMzg2NzgsMzA3NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzE0MzUsMzE1MjAsMzE4OTAsMjU3MDUsMjk4MDIsMzAxOTQsMzA5MDgsMzA5NTIsMzkzNDAsMzk3NjQsNDA2MzUsMjM1MTgsMjQxNDksMjg0NDgsMzMxODAsMzM3MDcsMzcwMDAsMTk5NzUsMjEzMjUsMjMwODEsMjQwMTgsMjQzOTgsMjQ5MzAsMjU0MDUsMjYyMTcsMjYzNjQsMjg0MTUsMjg0NTksMjg3NzEsMzA2MjIsMzM4MzYsMzQwNjcsMzQ4NzUsMzY2MjcsMzkyMzcsMzk5OTUsMjE3ODgsMjUyNzMsMjY0MTEsMjc4MTksMzM1NDUsMzUxNzgsMzg3NzgsMjAxMjksMjI5MTYsMjQ1MzYsMjQ1MzcsMjYzOTUsMzIxNzgsMzI1OTYsMzM0MjYsMzM1NzksMzM3MjUsMzY2MzgsMzcwMTcsMjI0NzUsMjI5NjksMjMxODYsMjM1MDQsMjYxNTEsMjY1MjIsMjY3NTcsMjc1OTksMjkwMjgsMzI2MjksMzYwMjMsMzYwNjcsMzY5OTMsMzk3NDksMzMwMzIsMzU5NzgsMzg0NzYsMzk0ODgsNDA2MTMsMjMzOTEsMjc2NjcsMjk0NjcsMzA0NTAsMzA0MzEsMzM4MDQsMjA5MDYsMzUyMTksMjA4MTMsMjA4ODUsMjExOTMsMjY4MjUsMjc3OTYsMzA0NjgsMzA0OTYsMzIxOTEsMzIyMzYsMzg3NTQsNDA2MjksMjgzNTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQwNjUsMjA5MDEsMjE1MTcsMjE2MjksMjYxMjYsMjYyNjksMjY5MTksMjgzMTksMzAzOTksMzA2MDksMzM1NTksMzM5ODYsMzQ3MTksMzcyMjUsMzc1MjgsNDAxODAsMzQ5NDYsMjAzOTgsMjA4ODIsMjEyMTUsMjI5ODIsMjQxMjUsMjQ5MTcsMjU3MjAsMjU3MjEsMjYyODYsMjY1NzYsMjcxNjksMjc1OTcsMjc2MTEsMjkyNzksMjkyODEsMjk3NjEsMzA1MjAsMzA2ODMsMzI3OTEsMzM0NjgsMzM1NDEsMzU1ODQsMzU2MjQsMzU5ODAsMjY0MDgsMjc3OTIsMjkyODcsMzA0NDYsMzA1NjYsMzEzMDIsNDAzNjEsMjc1MTksMjc3OTQsMjI4MTgsMjY0MDYsMzM5NDUsMjEzNTksMjI2NzUsMjI5MzcsMjQyODcsMjU1NTEsMjYxNjQsMjY0ODMsMjgyMTgsMjk0ODMsMzE0NDcsMzM0OTUsMzc2NzIsMjEyMDksMjQwNDMsMjUwMDYsMjUwMzUsMjUwOTgsMjUyODcsMjU3NzEsMjYwODAsMjY5NjksMjc0OTQsMjc1OTUsMjg5NjEsMjk2ODcsMzAwNDUsMzIzMjYsMzMzMTAsMzM1MzgsMzQxNTQsMzU0OTEsMzYwMzEsMzg2OTUsNDAyODksMjI2OTYsNDA2NjQsMjA0OTcsMjEwMDYsMjE1NjMsMjE4MzksMjU5OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjc3NjYsMzIwMTAsMzIwMTEsMzI4NjIsMzQ0NDIsMzgyNzIsMzg2MzksMjEyNDcsMjc3OTcsMjkyODksMjE2MTksMjMxOTQsMjM2MTQsMjM4ODMsMjQzOTYsMjQ0OTQsMjY0MTAsMjY4MDYsMjY5NzksMjgyMjAsMjgyMjgsMzA0NzMsMzE4NTksMzI2NTQsMzQxODMsMzU1OTgsMzY4NTUsMzg3NTMsNDA2OTIsMjM3MzUsMjQ3NTgsMjQ4NDUsMjUwMDMsMjU5MzUsMjYxMDcsMjYxMDgsMjc2NjUsMjc4ODcsMjk1OTksMjk2NDEsMzIyMjUsMzgyOTIsMjM0OTQsMzQ1ODgsMzU2MDAsMjEwODUsMjEzMzgsMjUyOTMsMjU2MTUsMjU3NzgsMjY0MjAsMjcxOTIsMjc4NTAsMjk2MzIsMjk4NTQsMzE2MzYsMzE4OTMsMzIyODMsMzMxNjIsMzMzMzQsMzQxODAsMzY4NDMsMzg2NDksMzkzNjEsMjAyNzYsMjEzMjIsMjE0NTMsMjE0NjcsMjUyOTIsMjU2NDQsMjU4NTYsMjYwMDEsMjcwNzUsMjc4ODYsMjg1MDQsMjk2NzcsMzAwMzYsMzAyNDIsMzA0MzYsMzA0NjAsMzA5MjgsMzA5NzEsMzEwMjAsMzIwNzAsMzMzMjQsMzQ3ODQsMzY4MjAsMzg5MzAsMzkxNTEsMjExODcsMjUzMDAsMjU3NjUsMjgxOTYsMjg0OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzAzMzIsMzYyOTksMzcyOTcsMzc0NzQsMzk2NjIsMzk3NDcsMjA1MTUsMjA2MjEsMjIzNDYsMjI5NTIsMjM1OTIsMjQxMzUsMjQ0MzksMjUxNTEsMjU5MTgsMjYwNDEsMjYwNDksMjYxMjEsMjY1MDcsMjcwMzYsMjgzNTQsMzA5MTcsMzIwMzMsMzI5MzgsMzMxNTIsMzMzMjMsMzM0NTksMzM5NTMsMzQ0NDQsMzUzNzAsMzU2MDcsMzcwMzAsMzg0NTAsNDA4NDgsMjA0OTMsMjA0NjcsNjM4NDMsMjI1MjEsMjQ0NzIsMjUzMDgsMjU0OTAsMjY0NzksMjgyMjcsMjg5NTMsMzA0MDMsMzI5NzIsMzI5ODYsMzUwNjAsMzUwNjEsMzUwOTcsMzYwNjQsMzY2NDksMzcxOTcsMzg1MDYsMjAyNzEsMjAzMzYsMjQwOTEsMjY1NzUsMjY2NTgsMzAzMzMsMzAzMzQsMzk3NDgsMjQxNjEsMjcxNDYsMjkwMzMsMjkxNDAsMzAwNTgsNjM4NDQsMzIzMjEsMzQxMTUsMzQyODEsMzkxMzIsMjAyNDAsMzE1NjcsMzI2MjQsMzgzMDksMjA5NjEsMjQwNzAsMjY4MDUsMjc3MTAsMjc3MjYsMjc4NjcsMjkzNTksMzE2ODQsMzM1MzksMjc4NjEsMjk3NTQsMjA3MzEsMjExMjgsMjI3MjEsMjU4MTYsMjcyODcsMjk4NjMsMzAyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA4ODcsMzQzMjcsMzgzNzAsMzg3MTMsNjM4NDUsMjEzNDIsMjQzMjEsMzU3MjIsMzY3NzYsMzY3ODMsMzcwMDIsMjEwMjksMzA2MjksNDAwMDksNDA3MTIsMTk5OTMsMjA0ODIsMjA4NTMsMjM2NDMsMjQxODMsMjYxNDIsMjYxNzAsMjY1NjQsMjY4MjEsMjg4NTEsMjk5NTMsMzAxNDksMzExNzcsMzE0NTMsMzY2NDcsMzkyMDAsMzk0MzIsMjA0NDUsMjI1NjEsMjI1NzcsMjM1NDIsMjYyMjIsMjc0OTMsMjc5MjEsMjgyODIsMjg1NDEsMjk2NjgsMjk5OTUsMzM3NjksMzUwMzYsMzUwOTEsMzU2NzYsMzY2MjgsMjAyMzksMjA2OTMsMjEyNjQsMjEzNDAsMjM0NDMsMjQ0ODksMjYzODEsMzExMTksMzMxNDUsMzM1ODMsMzQwNjgsMzUwNzksMzUyMDYsMzY2NjUsMzY2NjcsMzkzMzMsMzk5NTQsMjY0MTIsMjAwODYsMjA0NzIsMjI4NTcsMjM1NTMsMjM3OTEsMjM3OTIsMjU0NDcsMjY4MzQsMjg5MjUsMjkwOTAsMjk3MzksMzIyOTksMzQwMjgsMzQ1NjIsMzY4OTgsMzc1ODYsNDAxNzksMTk5ODEsMjAxODQsMjA0NjMsMjA2MTMsMjEwNzgsMjExMDMsMjE1NDIsMjE2NDgsMjI0OTYsMjI4MjcsMjMxNDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMzODYsMjM0MTMsMjM1MDAsMjQyMjAsNjM4NDYsMjUyMDYsMjU5NzUsMjYwMjMsMjgwMTQsMjgzMjUsMjkyMzgsMzE1MjYsMzE4MDcsMzI1NjYsMzMxMDQsMzMxMDUsMzMxNzgsMzMzNDQsMzM0MzMsMzM3MDUsMzUzMzEsMzYwMDAsMzYwNzAsMzYwOTEsMzYyMTIsMzYyODIsMzcwOTYsMzczNDAsMzg0MjgsMzg0NjgsMzkzODUsNDAxNjcsMjEyNzEsMjA5OTgsMjE1NDUsMjIxMzIsMjI3MDcsMjI4NjgsMjI4OTQsMjQ1NzUsMjQ5OTYsMjUxOTgsMjYxMjgsMjc3NzQsMjg5NTQsMzA0MDYsMzE4ODEsMzE5NjYsMzIwMjcsMzM0NTIsMzYwMzMsMzg2NDAsNjM4NDcsMjAzMTUsMjQzNDMsMjQ0NDcsMjUyODIsMjM4NDksMjYzNzksMjY4NDIsMzA4NDQsMzIzMjMsNDAzMDAsMTk5ODksMjA2MzMsMjEyNjksMjEyOTAsMjEzMjksMjI5MTUsMjMxMzgsMjQxOTksMjQ3NTQsMjQ5NzAsMjUxNjEsMjUyMDksMjYwMDAsMjY1MDMsMjcwNDcsMjc2MDQsMjc2MDYsMjc2MDcsMjc2MDgsMjc4MzIsNjM4NDgsMjk3NDksMzAyMDIsMzA3MzgsMzA4NjUsMzExODksMzExOTIsMzE4NzUsMzIyMDMsMzI3MzcsMzI5MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzMwODYsMzMyMTgsMzM3NzgsMzQ1ODYsMzUwNDgsMzU1MTMsMzU2OTIsMzYwMjcsMzcxNDUsMzg3NTAsMzkxMzEsNDA3NjMsMjIxODgsMjMzMzgsMjQ0MjgsMjU5OTYsMjczMTUsMjc1NjcsMjc5OTYsMjg2NTcsMjg2OTMsMjkyNzcsMjk2MTMsMzYwMDcsMzYwNTEsMzg5NzEsMjQ5NzcsMjc3MDMsMzI4NTYsMzk0MjUsMjAwNDUsMjAxMDcsMjAxMjMsMjAxODEsMjAyODIsMjAyODQsMjAzNTEsMjA0NDcsMjA3MzUsMjE0OTAsMjE0OTYsMjE3NjYsMjE5ODcsMjIyMzUsMjI3NjMsMjI4ODIsMjMwNTcsMjM1MzEsMjM1NDYsMjM1NTYsMjQwNTEsMjQxMDcsMjQ0NzMsMjQ2MDUsMjU0NDgsMjYwMTIsMjYwMzEsMjY2MTQsMjY2MTksMjY3OTcsMjc1MTUsMjc4MDEsMjc4NjMsMjgxOTUsMjg2ODEsMjk1MDksMzA3MjIsMzEwMzgsMzEwNDAsMzEwNzIsMzExNjksMzE3MjEsMzIwMjMsMzIxMTQsMzI5MDIsMzMyOTMsMzM2NzgsMzQwMDEsMzQ1MDMsMzUwMzksMzU0MDgsMzU0MjIsMzU2MTMsMzYwNjAsMzYxOTgsMzY3ODEsMzcwMzQsMzkxNjQsMzkzOTEsNDA2MDUsMjEwNjYsNjM4NDksMjYzODgsNjM4NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjA2MzIsMjEwMzQsMjM2NjUsMjU5NTUsMjc3MzMsMjk2NDIsMjk5ODcsMzAxMDksMzE2MzksMzM5NDgsMzcyNDAsMzg3MDQsMjAwODcsMjU3NDYsMjc1NzgsMjkwMjIsMzQyMTcsMTk5NzcsNjM4NTEsMjY0NDEsMjY4NjIsMjgxODMsMzM0MzksMzQwNzIsMzQ5MjMsMjU1OTEsMjg1NDUsMzczOTQsMzkwODcsMTk5NzgsMjA2NjMsMjA2ODcsMjA3NjcsMjE4MzAsMjE5MzAsMjIwMzksMjMzNjAsMjM1NzcsMjM3NzYsMjQxMjAsMjQyMDIsMjQyMjQsMjQyNTgsMjQ4MTksMjY3MDUsMjcyMzMsMjgyNDgsMjkyNDUsMjkyNDgsMjkzNzYsMzA0NTYsMzEwNzcsMzE2NjUsMzI3MjQsMzUwNTksMzUzMTYsMzU0NDMsMzU5MzcsMzYwNjIsMzg2ODQsMjI2MjIsMjk4ODUsMzYwOTMsMjE5NTksNjM4NTIsMzEzMjksMzIwMzQsMzMzOTQsMjkyOTgsMjk5ODMsMjk5ODksNjM4NTMsMzE1MTMsMjI2NjEsMjI3NzksMjM5OTYsMjQyMDcsMjQyNDYsMjQ0NjQsMjQ2NjEsMjUyMzQsMjU0NzEsMjU5MzMsMjYyNTcsMjYzMjksMjYzNjAsMjY2NDYsMjY4NjYsMjkzMTIsMjk3OTAsMzE1OTgsMzIxMTAsMzIyMTQsMzI2MjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI5OTcsMzMyOTgsMzQyMjMsMzUxOTksMzU0NzUsMzY4OTMsMzc2MDQsNDA2NTMsNDA3MzYsMjI4MDUsMjI4OTMsMjQxMDksMjQ3OTYsMjYxMzIsMjYyMjcsMjY1MTIsMjc3MjgsMjgxMDEsMjg1MTEsMzA3MDcsMzA4ODksMzM5OTAsMzczMjMsMzc2NzUsMjAxODUsMjA2ODIsMjA4MDgsMjE4OTIsMjMzMDcsMjM0NTksMjUxNTksMjU5ODIsMjYwNTksMjgyMTAsMjkwNTMsMjk2OTcsMjk3NjQsMjk4MzEsMjk4ODcsMzAzMTYsMzExNDYsMzIyMTgsMzIzNDEsMzI2ODAsMzMxNDYsMzMyMDMsMzMzMzcsMzQzMzAsMzQ3OTYsMzU0NDUsMzYzMjMsMzY5ODQsMzc1MjEsMzc5MjUsMzkyNDUsMzk4NTQsMjEzNTIsMjM2MzMsMjY5NjQsMjc4NDQsMjc5NDUsMjgyMDMsMzMyOTIsMzQyMDMsMzUxMzEsMzUzNzMsMzU0OTgsMzg2MzQsNDA4MDcsMjEwODksMjYyOTcsMjc1NzAsMzI0MDYsMzQ4MTQsMzYxMDksMzgyNzUsMzg0OTMsMjU4ODUsMjgwNDEsMjkxNjYsNjM4NTQsMjI0NzgsMjI5OTUsMjM0NjgsMjQ2MTUsMjQ4MjYsMjUxMDQsMjYxNDMsMjYyMDcsMjk0ODEsMjk2ODksMzA0MjcsMzA0NjUsMzE1OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI4NTQsMzI4ODIsMzMxMjUsMzU0ODgsMzcyNjYsMTk5OTAsMjEyMTgsMjc1MDYsMjc5MjcsMzEyMzcsMzE1NDUsMzIwNDgsNjM4NTUsMzYwMTYsMjE0ODQsMjIwNjMsMjI2MDksMjM0NzcsMjM1NjcsMjM1NjksMjQwMzQsMjUxNTIsMjU0NzUsMjU2MjAsMjYxNTcsMjY4MDMsMjc4MzYsMjgwNDAsMjgzMzUsMjg3MDMsMjg4MzYsMjkxMzgsMjk5OTAsMzAwOTUsMzAwOTQsMzAyMzMsMzE1MDUsMzE3MTIsMzE3ODcsMzIwMzIsMzIwNTcsMzQwOTIsMzQxNTcsMzQzMTEsMzUzODAsMzY4NzcsMzY5NjEsMzcwNDUsMzc1NTksMzg5MDIsMzk0NzksMjA0MzksMjM2NjAsMjY0NjMsMjgwNDksMzE5MDMsMzIzOTYsMzU2MDYsMzYxMTgsMzY4OTUsMjM0MDMsMjQwNjEsMjU2MTMsMzM5ODQsMzY5NTYsMzkxMzcsMjk1NzUsMjM0MzUsMjQ3MzAsMjY0OTQsMjgxMjYsMzUzNTksMzU0OTQsMzY4NjUsMzg5MjQsMjEwNDcsNjM4NTYsMjg3NTMsMzA4NjIsMzc3ODIsMzQ5MjgsMzczMzUsMjA0NjIsMjE0NjMsMjIwMTMsMjIyMzQsMjI0MDIsMjI3ODEsMjMyMzQsMjM0MzIsMjM3MjMsMjM3NDQsMjQxMDEsMjQ4MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjUxMDEsMjUxNjMsMjU0ODAsMjU2MjgsMjU5MTAsMjU5NzYsMjcxOTMsMjc1MzAsMjc3MDAsMjc5MjksMjg0NjUsMjkxNTksMjk0MTcsMjk1NjAsMjk3MDMsMjk4NzQsMzAyNDYsMzA1NjEsMzExNjgsMzEzMTksMzE0NjYsMzE5MjksMzIxNDMsMzIxNzIsMzIzNTMsMzI2NzAsMzMwNjUsMzM1ODUsMzM5MzYsMzQwMTAsMzQyODIsMzQ5NjYsMzU1MDQsMzU3MjgsMzY2NjQsMzY5MzAsMzY5OTUsMzcyMjgsMzc1MjYsMzc1NjEsMzg1MzksMzg1NjcsMzg1NjgsMzg2MTQsMzg2NTYsMzg5MjAsMzkzMTgsMzk2MzUsMzk3MDYsMjE0NjAsMjI2NTQsMjI4MDksMjM0MDgsMjM0ODcsMjgxMTMsMjg1MDYsMjkwODcsMjk3MjksMjk4ODEsMzI5MDEsMzM3ODksMjQwMzMsMjQ0NTUsMjQ0OTAsMjQ2NDIsMjYwOTIsMjY2NDIsMjY5OTEsMjcyMTksMjc1MjksMjc5NTcsMjgxNDcsMjk2NjcsMzA0NjIsMzA2MzYsMzE1NjUsMzIwMjAsMzMwNTksMzMzMDgsMzM2MDAsMzQwMzYsMzQxNDcsMzU0MjYsMzU1MjQsMzcyNTUsMzc2NjIsMzg5MTgsMzkzNDgsMjUxMDAsMzQ4OTksMzY4NDgsMzc0NzcsMjM4MTUsMjM4NDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjM5MTMsMjk3OTEsMzMxODEsMzQ2NjQsMjg2MjksMjUzNDIsMzI3MjIsMzUxMjYsMzUxODYsMTk5OTgsMjAwNTYsMjA3MTEsMjEyMTMsMjEzMTksMjUyMTUsMjYxMTksMzIzNjEsMzQ4MjEsMzg0OTQsMjAzNjUsMjEyNzMsMjIwNzAsMjI5ODcsMjMyMDQsMjM2MDgsMjM2MzAsMjM2MjksMjQwNjYsMjQzMzcsMjQ2NDMsMjYwNDUsMjYxNTksMjYxNzgsMjY1NTgsMjY2MTIsMjk0NjgsMzA2OTAsMzEwMzQsMzI3MDksMzM5NDAsMzM5OTcsMzUyMjIsMzU0MzAsMzU0MzMsMzU1NTMsMzU5MjUsMzU5NjIsMjI1MTYsMjM1MDgsMjQzMzUsMjQ2ODcsMjUzMjUsMjY4OTMsMjc1NDIsMjgyNTIsMjkwNjAsMzE2OTgsMzQ2NDUsMzU2NzIsMzY2MDYsMzkxMzUsMzkxNjYsMjAyODAsMjAzNTMsMjA0NDksMjE2MjcsMjMwNzIsMjM0ODAsMjQ4OTIsMjYwMzIsMjYyMTYsMjkxODAsMzAwMDMsMzEwNzAsMzIwNTEsMzMxMDIsMzMyNTEsMzM2ODgsMzQyMTgsMzQyNTQsMzQ1NjMsMzUzMzgsMzY1MjMsMzY3NjMsNjM4NTcsMzY4MDUsMjI4MzMsMjM0NjAsMjM1MjYsMjQ3MTMsMjM1MjksMjM1NjMsMjQ1MTUsMjc3NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NTgsMjgxNDUsMjg2ODMsMjk5NzgsMzM0NTUsMzU1NzQsMjAxNjAsMjEzMTMsNjM4NTksMzg2MTcsMjc2NjMsMjAxMjYsMjA0MjAsMjA4MTgsMjE4NTQsMjMwNzcsMjM3ODQsMjUxMDUsMjkyNzMsMzM0NjksMzM3MDYsMzQ1NTgsMzQ5MDUsMzUzNTcsMzg0NjMsMzg1OTcsMzkxODcsNDAyMDEsNDAyODUsMjI1MzgsMjM3MzEsMjM5OTcsMjQxMzIsMjQ4MDEsMjQ4NTMsMjU1NjksMjcxMzgsMjgxOTcsMzcxMjIsMzc3MTYsMzg5OTAsMzk5NTIsNDA4MjMsMjM0MzMsMjM3MzYsMjUzNTMsMjYxOTEsMjY2OTYsMzA1MjQsMzg1OTMsMzg3OTcsMzg5OTYsMzk4MzksMjYwMTcsMzU1ODUsMzY1NTUsMzgzMzIsMjE4MTMsMjM3MjEsMjQwMjIsMjQyNDUsMjYyNjMsMzAyODQsMzM3ODAsMzgzNDMsMjI3MzksMjUyNzYsMjkzOTAsNDAyMzIsMjAyMDgsMjI4MzAsMjQ1OTEsMjYxNzEsMjc1MjMsMzEyMDcsNDAyMzAsMjEzOTUsMjE2OTYsMjI0NjcsMjM4MzAsMjQ4NTksMjYzMjYsMjgwNzksMzA4NjEsMzM0MDYsMzg1NTIsMzg3MjQsMjEzODAsMjUyMTIsMjU0OTQsMjgwODIsMzIyNjYsMzMwOTksMzg5ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjczODcsMzI1ODgsNDAzNjcsNDA0NzQsMjAwNjMsMjA1MzksMjA5MTgsMjI4MTIsMjQ4MjUsMjU1OTAsMjY5MjgsMjkyNDIsMzI4MjIsNjM4NjAsMzczMjYsMjQzNjksNjM4NjEsNjM4NjIsMzIwMDQsMzM1MDksMzM5MDMsMzM5NzksMzQyNzcsMzY0OTMsNjM4NjMsMjAzMzUsNjM4NjQsNjM4NjUsMjI3NTYsMjMzNjMsMjQ2NjUsMjU1NjIsMjU4ODAsMjU5NjUsMjYyNjQsNjM4NjYsMjY5NTQsMjcxNzEsMjc5MTUsMjg2NzMsMjkwMzYsMzAxNjIsMzAyMjEsMzExNTUsMzEzNDQsNjM4NjcsMzI2NTAsNjM4NjgsMzUxNDAsNjM4NjksMzU3MzEsMzczMTIsMzg1MjUsNjM4NzAsMzkxNzgsMjIyNzYsMjQ0ODEsMjYwNDQsMjg0MTcsMzAyMDgsMzExNDIsMzU0ODYsMzkzNDEsMzk3NzAsNDA4MTIsMjA3NDAsMjUwMTQsMjUyMzMsMjcyNzcsMzMyMjIsMjA1NDcsMjI1NzYsMjQ0MjIsMjg5MzcsMzUzMjgsMzU1NzgsMjM0MjAsMzQzMjYsMjA0NzQsMjA3OTYsMjIxOTYsMjI4NTIsMjU1MTMsMjgxNTMsMjM5NzgsMjY5ODksMjA4NzAsMjAxMDQsMjAzMTMsNjM4NzEsNjM4NzIsNjM4NzMsMjI5MTQsNjM4NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NzUsMjc0ODcsMjc3NDEsNjM4NzYsMjk4NzcsMzA5OTgsNjM4NzcsMzMyODcsMzMzNDksMzM1OTMsMzY2NzEsMzY3MDEsNjM4NzgsMzkxOTIsNjM4NzksNjM4ODAsNjM4ODEsMjAxMzQsNjM4ODIsMjI0OTUsMjQ0NDEsMjYxMzEsNjM4ODMsNjM4ODQsMzAxMjMsMzIzNzcsMzU2OTUsNjM4ODUsMzY4NzAsMzk1MTUsMjIxODEsMjI1NjcsMjMwMzIsMjMwNzEsMjM0NzYsNjM4ODYsMjQzMTAsNjM4ODcsNjM4ODgsMjU0MjQsMjU0MDMsNjM4ODksMjY5NDEsMjc3ODMsMjc4MzksMjgwNDYsMjgwNTEsMjgxNDksMjg0MzYsNjM4OTAsMjg4OTUsMjg5ODIsMjkwMTcsNjM4OTEsMjkxMjMsMjkxNDEsNjM4OTIsMzA3OTksMzA4MzEsNjM4OTMsMzE2MDUsMzIyMjcsNjM4OTQsMzIzMDMsNjM4OTUsMzQ4OTMsMzY1NzUsNjM4OTYsNjM4OTcsNjM4OTgsMzc0NjcsNjM4OTksNDAxODIsNjM5MDAsNjM5MDEsNjM5MDIsMjQ3MDksMjgwMzcsNjM5MDMsMjkxMDUsNjM5MDQsNjM5MDUsMzgzMjEsMjE0MjEsNjM5MDYsNjM5MDcsNjM5MDgsMjY1NzksNjM5MDksMjg4MTQsMjg5NzYsMjk3NDQsMzMzOTgsMzM0OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5MTAsMzgzMzEsMzk2NTMsNDA1NzMsMjYzMDgsNjM5MTEsMjkxMjEsMzM4NjUsNjM5MTIsNjM5MTMsMjI2MDMsNjM5MTQsNjM5MTUsMjM5OTIsMjQ0MzMsNjM5MTYsMjYxNDQsMjYyNTQsMjcwMDEsMjcwNTQsMjc3MDQsMjc4OTEsMjgyMTQsMjg0ODEsMjg2MzQsMjg2OTksMjg3MTksMjkwMDgsMjkxNTEsMjk1NTIsNjM5MTcsMjk3ODcsNjM5MTgsMjk5MDgsMzA0MDgsMzEzMTAsMzI0MDMsNjM5MTksNjM5MjAsMzM1MjEsMzU0MjQsMzY4MTQsNjM5MjEsMzc3MDQsNjM5MjIsMzg2ODEsNjM5MjMsNjM5MjQsMjAwMzQsMjA1MjIsNjM5MjUsMjEwMDAsMjE0NzMsMjYzNTUsMjc3NTcsMjg2MTgsMjk0NTAsMzA1OTEsMzEzMzAsMzM0NTQsMzQyNjksMzQzMDYsNjM5MjYsMzUwMjgsMzU0MjcsMzU3MDksMzU5NDcsNjM5MjcsMzc1NTUsNjM5MjgsMzg2NzUsMzg5MjgsMjAxMTYsMjAyMzcsMjA0MjUsMjA2NTgsMjEzMjAsMjE1NjYsMjE1NTUsMjE5NzgsMjI2MjYsMjI3MTQsMjI4ODcsMjMwNjcsMjM1MjQsMjQ3MzUsNjM5MjksMjUwMzQsMjU5NDIsMjYxMTEsMjYyMTIsMjY3OTEsMjc3MzgsMjg1OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg4NzksMjkxMDAsMjk1MjIsMzE2MTMsMzQ1NjgsMzU0OTIsMzk5ODYsNDA3MTEsMjM2MjcsMjc3NzksMjk1MDgsMjk1NzcsMzc0MzQsMjgzMzEsMjk3OTcsMzAyMzksMzEzMzcsMzIyNzcsMzQzMTQsMjA4MDAsMjI3MjUsMjU3OTMsMjk5MzQsMjk5NzMsMzAzMjAsMzI3MDUsMzcwMTMsMzg2MDUsMzkyNTIsMjgxOTgsMjk5MjYsMzE0MDEsMzE0MDIsMzMyNTMsMzQ1MjEsMzQ2ODAsMzUzNTUsMjMxMTMsMjM0MzYsMjM0NTEsMjY3ODUsMjY4ODAsMjgwMDMsMjk2MDksMjk3MTUsMjk3NDAsMzA4NzEsMzIyMzMsMzI3NDcsMzMwNDgsMzMxMDksMzM2OTQsMzU5MTYsMzg0NDYsMzg5MjksMjYzNTIsMjQ0NDgsMjYxMDYsMjY1MDUsMjc3NTQsMjk1NzksMjA1MjUsMjMwNDMsMjc0OTgsMzA3MDIsMjI4MDYsMjM5MTYsMjQwMTMsMjk0NzcsMzAwMzEsNjM5MzAsNjM5MzEsMjA3MDksMjA5ODUsMjI1NzUsMjI4MjksMjI5MzQsMjMwMDIsMjM1MjUsNjM5MzIsNjM5MzMsMjM5NzAsMjUzMDMsMjU2MjIsMjU3NDcsMjU4NTQsNjM5MzQsMjYzMzIsNjM5MzUsMjcyMDgsNjM5MzYsMjkxODMsMjk3OTYsNjM5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzEzNjgsMzE0MDcsMzIzMjcsMzIzNTAsMzI3NjgsMzMxMzYsNjM5MzgsMzQ3OTksMzUyMDEsMzU2MTYsMzY5NTMsNjM5MzksMzY5OTIsMzkyNTAsMjQ5NTgsMjc0NDIsMjgwMjAsMzIyODcsMzUxMDksMzY3ODUsMjA0MzMsMjA2NTMsMjA4ODcsMjExOTEsMjI0NzEsMjI2NjUsMjM0ODEsMjQyNDgsMjQ4OTgsMjcwMjksMjgwNDQsMjgyNjMsMjgzNDIsMjkwNzYsMjk3OTQsMjk5OTIsMjk5OTYsMzI4ODMsMzM1OTIsMzM5OTMsMzYzNjIsMzc3ODAsMzc4NTQsNjM5NDAsMjAxMTAsMjAzMDUsMjA1OTgsMjA3NzgsMjE0NDgsMjE0NTEsMjE0OTEsMjM0MzEsMjM1MDcsMjM1ODgsMjQ4NTgsMjQ5NjIsMjYxMDAsMjkyNzUsMjk1OTEsMjk3NjAsMzA0MDIsMzEwNTYsMzExMjEsMzExNjEsMzIwMDYsMzI3MDEsMzM0MTksMzQyNjEsMzQzOTgsMzY4MDIsMzY5MzUsMzcxMDksMzczNTQsMzg1MzMsMzg2MzIsMzg2MzMsMjEyMDYsMjQ0MjMsMjYwOTMsMjYxNjEsMjY2NzEsMjkwMjAsMzEyODYsMzcwNTcsMzg5MjIsMjAxMTMsNjM5NDEsMjcyMTgsMjc1NTAsMjg1NjAsMjkwNjUsMzI3OTIsMzM0NjQsMzQxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5MzksMzg1NDksMzg2NDIsMzg5MDcsMzQwNzQsMzk3MjksMjAxMTIsMjkwNjYsMzg1OTYsMjA4MDMsMjE0MDcsMjE3MjksMjIyOTEsMjIyOTAsMjI0MzUsMjMxOTUsMjMyMzYsMjM0OTEsMjQ2MTYsMjQ4OTUsMjU1ODgsMjc3ODEsMjc5NjEsMjgyNzQsMjgzMDQsMjkyMzIsMjk1MDMsMjk3ODMsMzM0ODksMzQ5NDUsMzY2NzcsMzY5NjAsNjM5NDIsMzg0OTgsMzkwMDAsNDAyMTksMjYzNzYsMzYyMzQsMzc0NzAsMjAzMDEsMjA1NTMsMjA3MDIsMjEzNjEsMjIyODUsMjI5OTYsMjMwNDEsMjM1NjEsMjQ5NDQsMjYyNTYsMjgyMDUsMjkyMzQsMjk3NzEsMzIyMzksMzI5NjMsMzM4MDYsMzM4OTQsMzQxMTEsMzQ2NTUsMzQ5MDcsMzUwOTYsMzU1ODYsMzY5NDksMzg4NTksMzk3NTksMjAwODMsMjAzNjksMjA3NTQsMjA4NDIsNjM5NDMsMjE4MDcsMjE5MjksMjM0MTgsMjM0NjEsMjQxODgsMjQxODksMjQyNTQsMjQ3MzYsMjQ3OTksMjQ4NDAsMjQ4NDEsMjU1NDAsMjU5MTIsMjYzNzcsNjM5NDQsMjY1ODAsMjY1ODYsNjM5NDUsMjY5NzcsMjY5NzgsMjc4MzMsMjc5NDMsNjM5NDYsMjgyMTYsNjM5NDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg2NDEsMjk0OTQsMjk0OTUsNjM5NDgsMjk3ODgsMzAwMDEsNjM5NDksMzAyOTAsNjM5NTAsNjM5NTEsMzIxNzMsMzMyNzgsMzM4NDgsMzUwMjksMzU0ODAsMzU1NDcsMzU1NjUsMzY0MDAsMzY0MTgsMzY5MzgsMzY5MjYsMzY5ODYsMzcxOTMsMzczMjEsMzc3NDIsNjM5NTIsNjM5NTMsMjI1MzcsNjM5NTQsMjc2MDMsMzI5MDUsMzI5NDYsNjM5NTUsNjM5NTYsMjA4MDEsMjI4OTEsMjM2MDksNjM5NTcsNjM5NTgsMjg1MTYsMjk2MDcsMzI5OTYsMzYxMDMsNjM5NTksMzczOTksMzgyODcsNjM5NjAsNjM5NjEsNjM5NjIsNjM5NjMsMzI4OTUsMjUxMDIsMjg3MDAsMzIxMDQsMzQ3MDEsNjM5NjQsMjI0MzIsMjQ2ODEsMjQ5MDMsMjc1NzUsMzU1MTgsMzc1MDQsMzg1NzcsMjAwNTcsMjE1MzUsMjgxMzksMzQwOTMsMzg1MTIsMzg4OTksMzkxNTAsMjU1NTgsMjc4NzUsMzcwMDksMjA5NTcsMjUwMzMsMzMyMTAsNDA0NDEsMjAzODEsMjA1MDYsMjA3MzYsMjM0NTIsMjQ4NDcsMjUwODcsMjU4MzYsMjY4ODUsMjc1ODksMzAwOTcsMzA2OTEsMzI2ODEsMzMzODAsMzQxOTEsMzQ4MTEsMzQ5MTUsMzU1MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzU2OTYsMzcyOTEsMjAxMDgsMjAxOTcsMjAyMzQsNjM5NjUsNjM5NjYsMjI4MzksMjMwMTYsNjM5NjcsMjQwNTAsMjQzNDcsMjQ0MTEsMjQ2MDksNjM5NjgsNjM5NjksNjM5NzAsNjM5NzEsMjkyNDYsMjk2NjksNjM5NzIsMzAwNjQsMzAxNTcsNjM5NzMsMzEyMjcsNjM5NzQsMzI3ODAsMzI4MTksMzI5MDAsMzM1MDUsMzM2MTcsNjM5NzUsNjM5NzYsMzYwMjksMzYwMTksMzY5OTksNjM5NzcsNjM5NzgsMzkxNTYsMzkxODAsNjM5NzksNjM5ODAsMjg3MjcsMzA0MTAsMzI3MTQsMzI3MTYsMzI3NjQsMzU2MTAsMjAxNTQsMjAxNjEsMjA5OTUsMjEzNjAsNjM5ODEsMjE2OTMsMjIyNDAsMjMwMzUsMjM0OTMsMjQzNDEsMjQ1MjUsMjgyNzAsNjM5ODIsNjM5ODMsMzIxMDYsMzM1ODksNjM5ODQsMzQ0NTEsMzU0NjksNjM5ODUsMzg3NjUsMzg3NzUsNjM5ODYsNjM5ODcsMTk5NjgsMjAzMTQsMjAzNTAsMjI3NzcsMjYwODUsMjgzMjIsMzY5MjAsMzc4MDgsMzkzNTMsMjAyMTksMjI3NjQsMjI5MjIsMjMwMDEsMjQ2NDEsNjM5ODgsNjM5ODksMzEyNTIsNjM5OTAsMzM2MTUsMzYwMzUsMjA4MzcsMjEzMTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5OTEsNjM5OTIsNjM5OTMsMjAxNzMsMjEwOTcsMjMzODEsMzM0NzEsMjAxODAsMjEwNTAsMjE2NzIsMjI5ODUsMjMwMzksMjMzNzYsMjMzODMsMjMzODgsMjQ2NzUsMjQ5MDQsMjgzNjMsMjg4MjUsMjkwMzgsMjk1NzQsMjk5NDMsMzAxMzMsMzA5MTMsMzIwNDMsMzI3NzMsMzMyNTgsMzM1NzYsMzQwNzEsMzQyNDksMzU1NjYsMzYwMzksMzg2MDQsMjAzMTYsMjEyNDIsMjIyMDQsMjYwMjcsMjYxNTIsMjg3OTYsMjg4NTYsMjkyMzcsMzIxODksMzM0MjEsMzcxOTYsMzg1OTIsNDAzMDYsMjM0MDksMjY4NTUsMjc1NDQsMjg1MzgsMzA0MzAsMjM2OTcsMjYyODMsMjg1MDcsMzE2NjgsMzE3ODYsMzQ4NzAsMzg2MjAsMTk5NzYsMjAxODMsMjEyODAsMjI1ODAsMjI3MTUsMjI3NjcsMjI4OTIsMjM1NTksMjQxMTUsMjQxOTYsMjQzNzMsMjU0ODQsMjYyOTAsMjY0NTQsMjcxNjcsMjcyOTksMjc0MDQsMjg0NzksMjkyNTQsNjM5OTQsMjk1MjAsMjk4MzUsMzE0NTYsMzE5MTEsMzMxNDQsMzMyNDcsMzMyNTUsMzM2NzQsMzM5MDAsMzQwODMsMzQxOTYsMzQyNTUsMzUwMzcsMzYxMTUsMzcyOTIsMzgyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg1NTYsMjA4NzcsMjE3MDUsMjIzMTIsMjM0NzIsMjUxNjUsMjY0NDgsMjY2ODUsMjY3NzEsMjgyMjEsMjgzNzEsMjg3OTcsMzIyODksMzUwMDksMzYwMDEsMzY2MTcsNDA3NzksNDA3ODIsMjkyMjksMzE2MzEsMzU1MzMsMzc2NTgsMjAyOTUsMjAzMDIsMjA3ODYsMjE2MzIsMjI5OTIsMjQyMTMsMjUyNjksMjY0ODUsMjY5OTAsMjcxNTksMjc4MjIsMjgxODYsMjk0MDEsMjk0ODIsMzAxNDEsMzE2NzIsMzIwNTMsMzM1MTEsMzM3ODUsMzM4NzksMzQyOTUsMzU0MTksMzYwMTUsMzY0ODcsMzY4ODksMzcwNDgsMzg2MDYsNDA3OTksMjEyMTksMjE1MTQsMjMyNjUsMjM0OTAsMjU2ODgsMjU5NzMsMjg0MDQsMjkzODAsNjM5OTUsMzAzNDAsMzEzMDksMzE1MTUsMzE4MjEsMzIzMTgsMzI3MzUsMzM2NTksMzU2MjcsMzYwNDIsMzYxOTYsMzYzMjEsMzY0NDcsMzY4NDIsMzY4NTcsMzY5NjksMzc4NDEsMjAyOTEsMjAzNDYsMjA2NTksMjA4NDAsMjA4NTYsMjEwNjksMjEwOTgsMjI2MjUsMjI2NTIsMjI4ODAsMjM1NjAsMjM2MzcsMjQyODMsMjQ3MzEsMjUxMzYsMjY2NDMsMjc1ODMsMjc2NTYsMjg1OTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDYsMjk3MjgsMzAwMDAsMzAwMDgsMzAwMzMsMzAzMjIsMzE1NjQsMzE2MjcsMzE2NjEsMzE2ODYsMzIzOTksMzU0MzgsMzY2NzAsMzY2ODEsMzc0MzksMzc1MjMsMzc2NjYsMzc5MzEsMzg2NTEsMzkwMDIsMzkwMTksMzkxOTgsMjA5OTksMjUxMzAsMjUyNDAsMjc5OTMsMzAzMDgsMzE0MzQsMzE2ODAsMzIxMTgsMjEzNDQsMjM3NDIsMjQyMTUsMjg0NzIsMjg4NTcsMzE4OTYsMzg2NzMsMzk4MjIsNDA2NzAsMjU1MDksMjU3MjIsMzQ2NzgsMTk5NjksMjAxMTcsMjAxNDEsMjA1NzIsMjA1OTcsMjE1NzYsMjI5NzksMjM0NTAsMjQxMjgsMjQyMzcsMjQzMTEsMjQ0NDksMjQ3NzMsMjU0MDIsMjU5MTksMjU5NzIsMjYwNjAsMjYyMzAsMjYyMzIsMjY2MjIsMjY5ODQsMjcyNzMsMjc0OTEsMjc3MTIsMjgwOTYsMjgxMzYsMjgxOTEsMjgyNTQsMjg3MDIsMjg4MzMsMjk1ODIsMjk2OTMsMzAwMTAsMzA1NTUsMzA4NTUsMzExMTgsMzEyNDMsMzEzNTcsMzE5MzQsMzIxNDIsMzMzNTEsMzUzMzAsMzU1NjIsMzU5OTgsMzcxNjUsMzcxOTQsMzczMzYsMzc0NzgsMzc1ODAsMzc2NjQsMzg2NjIsMzg3NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg3NDgsMzg5MTQsNDA3MTgsMjEwNDYsMjExMzcsMjE4ODQsMjI1NjQsMjQwOTMsMjQzNTEsMjQ3MTYsMjU1NTIsMjY3OTksMjg2MzksMzEwODUsMzE1MzIsMzMyMjksMzQyMzQsMzUwNjksMzU1NzYsMzY0MjAsMzcyNjEsMzg1MDAsMzg1NTUsMzg3MTcsMzg5ODgsNDA3NzgsMjA0MzAsMjA4MDYsMjA5MzksMjExNjEsMjIwNjYsMjQzNDAsMjQ0MjcsMjU1MTQsMjU4MDUsMjYwODksMjYxNzcsMjYzNjIsMjYzNjEsMjYzOTcsMjY3ODEsMjY4MzksMjcxMzMsMjg0MzcsMjg1MjYsMjkwMzEsMjkxNTcsMjkyMjYsMjk4NjYsMzA1MjIsMzEwNjIsMzEwNjYsMzExOTksMzEyNjQsMzEzODEsMzE4OTUsMzE5NjcsMzIwNjgsMzIzNjgsMzI5MDMsMzQyOTksMzQ0NjgsMzU0MTIsMzU1MTksMzYyNDksMzY0ODEsMzY4OTYsMzY5NzMsMzczNDcsMzg0NTksMzg2MTMsNDAxNjUsMjYwNjMsMzE3NTEsMzYyNzUsMzc4MjcsMjMzODQsMjM1NjIsMjEzMzAsMjUzMDUsMjk0NjksMjA1MTksMjM0NDcsMjQ0NzgsMjQ3NTIsMjQ5MzksMjY4MzcsMjgxMjEsMjk3NDIsMzEyNzgsMzIwNjYsMzIxNTYsMzIzMDUsMzMxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYzOTQsMzY0MDUsMzc3NTgsMzc5MTIsMjAzMDQsMjIzNTIsMjQwMzgsMjQyMzEsMjUzODcsMzI2MTgsMjAwMjcsMjAzMDMsMjAzNjcsMjA1NzAsMjMwMDUsMzI5NjQsMjE2MTAsMjE2MDgsMjIwMTQsMjI4NjMsMjM0NDksMjQwMzAsMjQyODIsMjYyMDUsMjY0MTcsMjY2MDksMjY2NjYsMjc4ODAsMjc5NTQsMjgyMzQsMjg1NTcsMjg4NTUsMjk2NjQsMzAwODcsMzE4MjAsMzIwMDIsMzIwNDQsMzIxNjIsMzMzMTEsMzQ1MjMsMzUzODcsMzU0NjEsMzYyMDgsMzY0OTAsMzY2NTksMzY5MTMsMzcxOTgsMzcyMDIsMzc5NTYsMzkzNzYsMzE0ODEsMzE5MDksMjA0MjYsMjA3MzcsMjA5MzQsMjI0NzIsMjM1MzUsMjM4MDMsMjYyMDEsMjcxOTcsMjc5OTQsMjgzMTAsMjg2NTIsMjg5NDAsMzAwNjMsMzE0NTksMzQ4NTAsMzY4OTcsMzY5ODEsMzg2MDMsMzk0MjMsMzM1MzcsMjAwMTMsMjAyMTAsMzQ4ODYsMzczMjUsMjEzNzMsMjczNTUsMjY5ODcsMjc3MTMsMzM5MTQsMjI2ODYsMjQ5NzQsMjYzNjYsMjUzMjcsMjg4OTMsMjk5NjksMzAxNTEsMzIzMzgsMzM5NzYsMzU2NTcsMzYxMDQsMjAwNDMsMjE0ODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2NzUsMjIzMjAsMjIzMzYsMjQ1MzUsMjUzNDUsMjUzNTEsMjU3MTEsMjU5MDMsMjYwODgsMjYyMzQsMjY1MjUsMjY1NDcsMjc0OTAsMjc3NDQsMjc4MDIsMjg0NjAsMzA2OTMsMzA3NTcsMzEwNDksMzEwNjMsMzIwMjUsMzI5MzAsMzMwMjYsMzMyNjcsMzM0MzcsMzM0NjMsMzQ1ODQsMzU0NjgsNjM5OTYsMzYxMDAsMzYyODYsMzY5NzgsMzA0NTIsMzEyNTcsMzEyODcsMzIzNDAsMzI4ODcsMjE3NjcsMjE5NzIsMjI2NDUsMjUzOTEsMjU2MzQsMjYxODUsMjYxODcsMjY3MzMsMjcwMzUsMjc1MjQsMjc5NDEsMjgzMzcsMjk2NDUsMjk4MDAsMjk4NTcsMzAwNDMsMzAxMzcsMzA0MzMsMzA0OTQsMzA2MDMsMzEyMDYsMzIyNjUsMzIyODUsMzMyNzUsMzQwOTUsMzQ5NjcsMzUzODYsMzYwNDksMzY1ODcsMzY3ODQsMzY5MTQsMzc4MDUsMzg0OTksMzg1MTUsMzg2NjMsMjAzNTYsMjE0ODksMjMwMTgsMjMyNDEsMjQwODksMjY3MDIsMjk4OTQsMzAxNDIsMzEyMDksMzEzNzgsMzMxODcsMzQ1NDEsMzYwNzQsMzYzMDAsMzY4NDUsMjYwMTUsMjYzODksNjM5OTcsMjI1MTksMjg1MDMsMzIyMjEsMzY2NTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc4NzgsMzg1OTgsMjQ1MDEsMjUwNzQsMjg1NDgsMTk5ODgsMjAzNzYsMjA1MTEsMjE0NDksMjE5ODMsMjM5MTksMjQwNDYsMjc0MjUsMjc0OTIsMzA5MjMsMzE2NDIsNjM5OTgsMzY0MjUsMzY1NTQsMzY5NzQsMjU0MTcsMjU2NjIsMzA1MjgsMzEzNjQsMzc2NzksMzgwMTUsNDA4MTAsMjU3NzYsMjg1OTEsMjkxNTgsMjk4NjQsMjk5MTQsMzE0MjgsMzE3NjIsMzIzODYsMzE5MjIsMzI0MDgsMzU3MzgsMzYxMDYsMzgwMTMsMzkxODQsMzkyNDQsMjEwNDksMjM1MTksMjU4MzAsMjY0MTMsMzIwNDYsMjA3MTcsMjE0NDMsMjI2NDksMjQ5MjAsMjQ5MjEsMjUwODIsMjYwMjgsMzE0NDksMzU3MzAsMzU3MzQsMjA0ODksMjA1MTMsMjExMDksMjE4MDksMjMxMDAsMjQyODgsMjQ0MzIsMjQ4ODQsMjU5NTAsMjYxMjQsMjYxNjYsMjYyNzQsMjcwODUsMjgzNTYsMjg0NjYsMjk0NjIsMzAyNDEsMzEzNzksMzMwODEsMzMzNjksMzM3NTAsMzM5ODAsMjA2NjEsMjI1MTIsMjM0ODgsMjM1MjgsMjQ0MjUsMjU1MDUsMzA3NTgsMzIxODEsMzM3NTYsMzQwODEsMzczMTksMzczNjUsMjA4NzQsMjY2MTMsMzE1NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYwMTIsMjA5MzIsMjI5NzEsMjQ3NjUsMzQzODksMjA1MDgsNjM5OTksMjEwNzYsMjM2MTAsMjQ5NTcsMjUxMTQsMjUyOTksMjU4NDIsMjYwMjEsMjgzNjQsMzAyNDAsMzMwMzQsMzY0NDgsMzg0OTUsMzg1ODcsMjAxOTEsMjEzMTUsMjE5MTIsMjI4MjUsMjQwMjksMjU3OTcsMjc4NDksMjgxNTQsMjk1ODgsMzEzNTksMzMzMDcsMzQyMTQsMzYwNjgsMzYzNjgsMzY5ODMsMzczNTEsMzgzNjksMzg0MzMsMzg4NTQsMjA5ODQsMjE3NDYsMjE4OTQsMjQ1MDUsMjU3NjQsMjg1NTIsMzIxODAsMzY2MzksMzY2ODUsMzc5NDEsMjA2ODEsMjM1NzQsMjc4MzgsMjgxNTUsMjk5NzksMzA2NTEsMzE4MDUsMzE4NDQsMzU0NDksMzU1MjIsMjI1NTgsMjI5NzQsMjQwODYsMjU0NjMsMjkyNjYsMzAwOTAsMzA1NzEsMzU1NDgsMzYwMjgsMzY2MjYsMjQzMDcsMjYyMjgsMjgxNTIsMzI4OTMsMzM3MjksMzU1MzEsMzg3MzcsMzk4OTQsNjQwMDAsMjEwNTksMjYzNjcsMjgwNTMsMjgzOTksMzIyMjQsMzU1NTgsMzY5MTAsMzY5NTgsMzk2MzYsMjEwMjEsMjExMTksMjE3MzYsMjQ5ODAsMjUyMjAsMjUzMDcsMjY3ODYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4OTgsMjY5NzAsMjcxODksMjg4MTgsMjg5NjYsMzA4MTMsMzA5NzcsMzA5OTAsMzExODYsMzEyNDUsMzI5MTgsMzM0MDAsMzM0OTMsMzM2MDksMzQxMjEsMzU5NzAsMzYyMjksMzcyMTgsMzcyNTksMzcyOTQsMjA0MTksMjIyMjUsMjkxNjUsMzA2NzksMzQ1NjAsMzUzMjAsMjM1NDQsMjQ1MzQsMjY0NDksMzcwMzIsMjE0NzQsMjI2MTgsMjM1NDEsMjQ3NDAsMjQ5NjEsMjU2OTYsMzIzMTcsMzI4ODAsMzQwODUsMzc1MDcsMjU3NzQsMjA2NTIsMjM4MjgsMjYzNjgsMjI2ODQsMjUyNzcsMjU1MTIsMjY4OTQsMjcwMDAsMjcxNjYsMjgyNjcsMzAzOTQsMzExNzksMzM0NjcsMzM4MzMsMzU1MzUsMzYyNjQsMzY4NjEsMzcxMzgsMzcxOTUsMzcyNzYsMzc2NDgsMzc2NTYsMzc3ODYsMzg2MTksMzk0NzgsMzk5NDksMTk5ODUsMzAwNDQsMzEwNjksMzE0ODIsMzE1NjksMzE2ODksMzIzMDIsMzM5ODgsMzY0NDEsMzY0NjgsMzY2MDAsMzY4ODAsMjYxNDksMjY5NDMsMjk3NjMsMjA5ODYsMjY0MTQsNDA2NjgsMjA4MDUsMjQ1NDQsMjc3OTgsMzQ4MDIsMzQ5MDksMzQ5MzUsMjQ3NTYsMzMyMDUsMzM3OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYxMDEsMjE0NjIsMjE1NjEsMjIwNjgsMjMwOTQsMjM2MDEsMjg4MTAsMzI3MzYsMzI4NTgsMzMwMzAsMzMyNjEsMzYyNTksMzcyNTcsMzk1MTksNDA0MzQsMjA1OTYsMjAxNjQsMjE0MDgsMjQ4MjcsMjgyMDQsMjM2NTIsMjAzNjAsMjA1MTYsMjE5ODgsMjM3NjksMjQxNTksMjQ2NzcsMjY3NzIsMjc4MzUsMjgxMDAsMjkxMTgsMzAxNjQsMzAxOTYsMzAzMDUsMzEyNTgsMzEzMDUsMzIxOTksMzIyNTEsMzI2MjIsMzMyNjgsMzQ0NzMsMzY2MzYsMzg2MDEsMzkzNDcsNDA3ODYsMjEwNjMsMjExODksMzkxNDksMzUyNDIsMTk5NzEsMjY1NzgsMjg0MjIsMjA0MDUsMjM1MjIsMjY1MTcsMjc3ODQsMjgwMjQsMjk3MjMsMzA3NTksMzczNDEsMzc3NTYsMzQ3NTYsMzEyMDQsMzEyODEsMjQ1NTUsMjAxODIsMjE2NjgsMjE4MjIsMjI3MDIsMjI5NDksMjQ4MTYsMjUxNzEsMjUzMDIsMjY0MjIsMjY5NjUsMzMzMzMsMzg0NjQsMzkzNDUsMzkzODksMjA1MjQsMjEzMzEsMjE4MjgsMjIzOTYsNjQwMDEsMjUxNzYsNjQwMDIsMjU4MjYsMjYyMTksMjY1ODksMjg2MDksMjg2NTUsMjk3MzAsMjk3NTIsMzUzNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc5NDQsMjE1ODUsMjIwMjIsMjIzNzQsMjQzOTIsMjQ5ODYsMjc0NzAsMjg3NjAsMjg4NDUsMzIxODcsMzU0NzcsMjI4OTAsMzMwNjcsMjU1MDYsMzA0NzIsMzI4MjksMzYwMTAsMjI2MTIsMjU2NDUsMjcwNjcsMjM0NDUsMjQwODEsMjgyNzEsNjQwMDMsMzQxNTMsMjA4MTIsMjE0ODgsMjI4MjYsMjQ2MDgsMjQ5MDcsMjc1MjYsMjc3NjAsMjc4ODgsMzE1MTgsMzI5NzQsMzM0OTIsMzYyOTQsMzcwNDAsMzkwODksNjQwMDQsMjU3OTksMjg1ODAsMjU3NDUsMjU4NjAsMjA4MTQsMjE1MjAsMjIzMDMsMzUzNDIsMjQ5MjcsMjY3NDIsNjQwMDUsMzAxNzEsMzE1NzAsMzIxMTMsMzY4OTAsMjI1MzQsMjcwODQsMzMxNTEsMzUxMTQsMzY4NjQsMzg5NjksMjA2MDAsMjI4NzEsMjI5NTYsMjUyMzcsMzY4NzksMzk3MjIsMjQ5MjUsMjkzMDUsMzgzNTgsMjIzNjksMjMxMTAsMjQwNTIsMjUyMjYsMjU3NzMsMjU4NTAsMjY0ODcsMjc4NzQsMjc5NjYsMjkyMjgsMjk3NTAsMzA3NzIsMzI2MzEsMzM0NTMsMzYzMTUsMzg5MzUsMjEwMjgsMjIzMzgsMjY0OTUsMjkyNTYsMjk5MjMsMzYwMDksMzY3NzQsMzczOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg0NDIsMjA4NDMsMjE0ODUsMjU0MjAsMjAzMjksMjE3NjQsMjQ3MjYsMjU5NDMsMjc4MDMsMjgwMzEsMjkyNjAsMjk0MzcsMzEyNTUsMzUyMDcsMzU5OTcsMjQ0MjksMjg1NTgsMjg5MjEsMzMxOTIsMjQ4NDYsMjA0MTUsMjA1NTksMjUxNTMsMjkyNTUsMzE2ODcsMzIyMzIsMzI3NDUsMzY5NDEsMzg4MjksMzk0NDksMzYwMjIsMjIzNzgsMjQxNzksMjY1NDQsMzM4MDUsMzU0MTMsMjE1MzYsMjMzMTgsMjQxNjMsMjQyOTAsMjQzMzAsMjU5ODcsMzI5NTQsMzQxMDksMzgyODEsMzg0OTEsMjAyOTYsMjEyNTMsMjEyNjEsMjEyNjMsMjE2MzgsMjE3NTQsMjIyNzUsMjQwNjcsMjQ1OTgsMjUyNDMsMjUyNjUsMjU0MjksNjQwMDYsMjc4NzMsMjgwMDYsMzAxMjksMzA3NzAsMzI5OTAsMzMwNzEsMzM1MDIsMzM4ODksMzM5NzAsMzQ5NTcsMzUwOTAsMzY4NzUsMzc2MTAsMzkxNjUsMzk4MjUsMjQxMzMsMjYyOTIsMjYzMzMsMjg2ODksMjkxOTAsNjQwMDcsMjA0NjksMjExMTcsMjQ0MjYsMjQ5MTUsMjY0NTEsMjcxNjEsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU5NjEsMzkxMTEsMzkxMDgsMzk0OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2OTcsMzEyNjMsMjY5NjMsMzU1NzUsMzU5MTQsMzkwODAsMzkzNDIsMjQ0NDQsMjUyNTksMzAxMzAsMzAzODIsMzQ5ODcsMzY5OTEsMzg0NjYsMjEzMDUsMjQzODAsMjQ1MTcsMjc4NTIsMjk2NDQsMzAwNTAsMzAwOTEsMzE1NTgsMzM1MzQsMzkzMjUsMjAwNDcsMzY5MjQsMTk5NzksMjAzMDksMjE0MTQsMjI3OTksMjQyNjQsMjYxNjAsMjc4MjcsMjk3ODEsMzM2NTUsMzQ2NjIsMzYwMzIsMzY5NDQsMzg2ODYsMzk5NTcsMjI3MzcsMjM0MTYsMzQzODQsMzU2MDQsNDAzNzIsMjM1MDYsMjQ2ODAsMjQ3MTcsMjYwOTcsMjc3MzUsMjg0NTAsMjg1NzksMjg2OTgsMzI1OTcsMzI3NTIsMzgyODksMzgyOTAsMzg0ODAsMzg4NjcsMjExMDYsMzY2NzYsMjA5ODksMjE1NDcsMjE2ODgsMjE4NTksMjE4OTgsMjczMjMsMjgwODUsMzIyMTYsMzMzODIsMzc1MzIsMzg1MTksNDA1NjksMjE1MTIsMjE3MDQsMzA0MTgsMzQ1MzIsMzgzMDgsMzgzNTYsMzg0OTIsMjAxMzAsMjAyMzMsMjMwMjIsMjMyNzAsMjQwNTUsMjQ2NTgsMjUyMzksMjY0NzcsMjY2ODksMjc3ODIsMjgyMDcsMzI1NjgsMzI5MjMsMzMzMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjQwMDgsNjQwMDksMzg5MTcsMjAxMzMsMjA1NjUsMjE2ODMsMjI0MTksMjI4NzQsMjM0MDEsMjM0NzUsMjUwMzIsMjY5OTksMjgwMjMsMjg3MDcsMzQ4MDksMzUyOTksMzU0NDIsMzU1NTksMzY5OTQsMzk0MDUsMzk2MDgsMjExODIsMjY2ODAsMjA1MDIsMjQxODQsMjY0NDcsMzM2MDcsMzQ4OTIsMjAxMzksMjE1MjEsMjIxOTAsMjk2NzAsMzcxNDEsMzg5MTEsMzkxNzcsMzkyNTUsMzkzMjEsMjIwOTksMjI2ODcsMzQzOTUsMzUzNzcsMjUwMTAsMjczODIsMjk1NjMsMzY1NjIsMjc0NjMsMzg1NzAsMzk1MTEsMjI4NjksMjkxODQsMzYyMDMsMzg3NjEsMjA0MzYsMjM3OTYsMjQzNTgsMjUwODAsMjYyMDMsMjc4ODMsMjg4NDMsMjk1NzIsMjk2MjUsMjk2OTQsMzA1MDUsMzA1NDEsMzIwNjcsMzIwOTgsMzIyOTEsMzMzMzUsMzQ4OTgsNjQwMTAsMzYwNjYsMzc0NDksMzkwMjMsMjMzNzcsMzEzNDgsMzQ4ODAsMzg5MTMsMjMyNDQsMjA0NDgsMjEzMzIsMjI4NDYsMjM4MDUsMjU0MDYsMjgwMjUsMjk0MzMsMzMwMjksMzMwMzEsMzM2OTgsMzc1ODMsMzg5NjAsMjAxMzYsMjA4MDQsMjEwMDksMjI0MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQ0MTgsMjc4NDIsMjgzNjYsMjg2NzcsMjg3NTIsMjg4NDcsMjkwNzQsMjk2NzMsMjk4MDEsMzM2MTAsMzQ3MjIsMzQ5MTMsMzY4NzIsMzcwMjYsMzc3OTUsMzkzMzYsMjA4NDYsMjQ0MDcsMjQ4MDAsMjQ5MzUsMjYyOTEsMzQxMzcsMzY0MjYsMzcyOTUsMzg3OTUsMjAwNDYsMjAxMTQsMjE2MjgsMjI3NDEsMjI3NzgsMjI5MDksMjM3MzMsMjQzNTksMjUxNDIsMjUxNjAsMjYxMjIsMjYyMTUsMjc2MjcsMjgwMDksMjgxMTEsMjgyNDYsMjg0MDgsMjg1NjQsMjg2NDAsMjg2NDksMjg3NjUsMjkzOTIsMjk3MzMsMjk3ODYsMjk5MjAsMzAzNTUsMzEwNjgsMzE5NDYsMzIyODYsMzI5OTMsMzM0NDYsMzM4OTksMzM5ODMsMzQzODIsMzQzOTksMzQ2NzYsMzU3MDMsMzU5NDYsMzc4MDQsMzg5MTIsMzkwMTMsMjQ3ODUsMjUxMTAsMzcyMzksMjMxMzAsMjYxMjcsMjgxNTEsMjgyMjIsMjk3NTksMzk3NDYsMjQ1NzMsMjQ3OTQsMzE1MDMsMjE3MDAsMjQzNDQsMjc3NDIsMjc4NTksMjc5NDYsMjg4ODgsMzIwMDUsMzQ0MjUsMzUzNDAsNDAyNTEsMjEyNzAsMjE2NDQsMjMzMDEsMjcxOTQsMjg3NzksMzAwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzExMTcsMzExNjYsMzM0NTcsMzM3NzUsMzU0NDEsMzU2NDksMzYwMDgsMzg3NzIsNjQwMTEsMjU4NDQsMjU4OTksMzA5MDYsMzA5MDcsMzEzMzksMjAwMjQsMjE5MTQsMjI4NjQsMjM0NjIsMjQxODcsMjQ3MzksMjU1NjMsMjc0ODksMjYyMTMsMjY3MDcsMjgxODUsMjkwMjksMjk4NzIsMzIwMDgsMzY5OTYsMzk1MjksMzk5NzMsMjc5NjMsMjgzNjksMjk1MDIsMzU5MDUsMzgzNDYsMjA5NzYsMjQxNDAsMjQ0ODgsMjQ2NTMsMjQ4MjIsMjQ4ODAsMjQ5MDgsMjYxNzksMjYxODAsMjcwNDUsMjc4NDEsMjgyNTUsMjgzNjEsMjg1MTQsMjkwMDQsMjk4NTIsMzAzNDMsMzE2ODEsMzE3ODMsMzM2MTgsMzQ2NDcsMzY5NDUsMzg1NDEsNDA2NDMsMjEyOTUsMjIyMzgsMjQzMTUsMjQ0NTgsMjQ2NzQsMjQ3MjQsMjUwNzksMjYyMTQsMjYzNzEsMjcyOTIsMjgxNDIsMjg1OTAsMjg3ODQsMjk1NDYsMzIzNjIsMzMyMTQsMzM1ODgsMzQ1MTYsMzU0OTYsMzYwMzYsMjExMjMsMjk1NTQsMjM0NDYsMjcyNDMsMzc4OTIsMjE3NDIsMjIxNTAsMjMzODksMjU5MjgsMjU5ODksMjYzMTMsMjY3ODMsMjgwNDUsMjgxMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkyNDMsMzI5NDgsMzcyMzcsMzk1MDEsMjAzOTksMjA1MDUsMjE0MDIsMjE1MTgsMjE1NjQsMjE4OTcsMjE5NTcsMjQxMjcsMjQ0NjAsMjY0MjksMjkwMzAsMjk2NjEsMzY4NjksMjEyMTEsMjEyMzUsMjI2MjgsMjI3MzQsMjg5MzIsMjkwNzEsMjkxNzksMzQyMjQsMzUzNDcsMjYyNDgsMzQyMTYsMjE5MjcsMjYyNDQsMjkwMDIsMzM4NDEsMjEzMjEsMjE5MTMsMjc1ODUsMjQ0MDksMjQ1MDksMjU1ODIsMjYyNDksMjg5OTksMzU1NjksMzY2MzcsNDA2MzgsMjAyNDEsMjU2NTgsMjg4NzUsMzAwNTQsMzQ0MDcsMjQ2NzYsMzU2NjIsNDA0NDAsMjA4MDcsMjA5ODIsMjEyNTYsMjc5NTgsMzMwMTYsNDA2NTcsMjYxMzMsMjc0MjcsMjg4MjQsMzAxNjUsMjE1MDcsMjM2NzMsMzIwMDcsMzUzNTAsMjc0MjQsMjc0NTMsMjc0NjIsMjE1NjAsMjQ2ODgsMjc5NjUsMzI3MjUsMzMyODgsMjA2OTQsMjA5NTgsMjE5MTYsMjIxMjMsMjIyMjEsMjMwMjAsMjMzMDUsMjQwNzYsMjQ5ODUsMjQ5ODQsMjUxMzcsMjYyMDYsMjYzNDIsMjkwODEsMjkxMTMsMjkxMTQsMjkzNTEsMzExNDMsMzEyMzIsMzI2OTAsMzU0NDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiZ2IxODAzMFwiOlsxOTk3MCwxOTk3MiwxOTk3MywxOTk3NCwxOTk4MywxOTk4NiwxOTk5MSwxOTk5OSwyMDAwMCwyMDAwMSwyMDAwMywyMDAwNiwyMDAwOSwyMDAxNCwyMDAxNSwyMDAxNywyMDAxOSwyMDAyMSwyMDAyMywyMDAyOCwyMDAzMiwyMDAzMywyMDAzNCwyMDAzNiwyMDAzOCwyMDA0MiwyMDA0OSwyMDA1MywyMDA1NSwyMDA1OCwyMDA1OSwyMDA2NiwyMDA2NywyMDA2OCwyMDA2OSwyMDA3MSwyMDA3MiwyMDA3NCwyMDA3NSwyMDA3NiwyMDA3NywyMDA3OCwyMDA3OSwyMDA4MiwyMDA4NCwyMDA4NSwyMDA4NiwyMDA4NywyMDA4OCwyMDA4OSwyMDA5MCwyMDA5MSwyMDA5MiwyMDA5MywyMDA5NSwyMDA5NiwyMDA5NywyMDA5OCwyMDA5OSwyMDEwMCwyMDEwMSwyMDEwMywyMDEwNiwyMDExMiwyMDExOCwyMDExOSwyMDEyMSwyMDEyNCwyMDEyNSwyMDEyNiwyMDEzMSwyMDEzOCwyMDE0MywyMDE0NCwyMDE0NSwyMDE0OCwyMDE1MCwyMDE1MSwyMDE1MiwyMDE1MywyMDE1NiwyMDE1NywyMDE1OCwyMDE2OCwyMDE3MiwyMDE3NSwyMDE3NiwyMDE3OCwyMDE4NiwyMDE4NywyMDE4OCwyMDE5MiwyMDE5NCwyMDE5OCwyMDE5OSwyMDIwMSwyMDIwNSwyMDIwNiwyMDIwNywyMDIwOSwyMDIxMiwyMDIxNiwyMDIxNywyMDIxOCwyMDIyMCwyMDIyMiwyMDIyNCwyMDIyNiwyMDIyNywyMDIyOCwyMDIyOSwyMDIzMCwyMDIzMSwyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0MywyMDI0NCwyMDI0NSwyMDI0NiwyMDI1MiwyMDI1MywyMDI1NywyMDI1OSwyMDI2NCwyMDI2NSwyMDI2OCwyMDI2OSwyMDI3MCwyMDI3MywyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4NywyMDI4OCwyMDI4OSwyMDI5MCwyMDI5MiwyMDI5MywyMDI5NSwyMDI5NiwyMDI5NywyMDI5OCwyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMyMSwyMDMyMiwyMDMyNiwyMDMyOCwyMDMzMCwyMDMzMSwyMDMzMywyMDMzNCwyMDMzNywyMDMzOCwyMDM0MSwyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MiwyMDM1MywyMDM1NCwyMDM1NywyMDM1OCwyMDM1OSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MywyMDM3NCwyMDM3NiwyMDM3NywyMDM3OCwyMDM4MCwyMDM4MiwyMDM4MywyMDM4NSwyMDM4NiwyMDM4OCwyMDM5NSwyMDM5NywyMDQwMCwyMDQwMSwyMDQwMiwyMDQwMywyMDQwNCwyMDQwNiwyMDQwNywyMDQwOCwyMDQwOSwyMDQxMCwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQxOCwyMDQyMiwyMDQyMywyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzNCwyMDQzNSwyMDQzNiwyMDQzNywyMDQzOCwyMDQ0MSwyMDQ0MywyMDQ0OCwyMDQ1MCwyMDQ1MiwyMDQ1MywyMDQ1NSwyMDQ1OSwyMDQ2MCwyMDQ2NCwyMDQ2NiwyMDQ2OCwyMDQ2OSwyMDQ3MCwyMDQ3MSwyMDQ3MywyMDQ3NSwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4MiwyMDQ4MywyMDQ4NCwyMDQ4NSwyMDQ4NiwyMDQ4NywyMDQ4OCwyMDQ4OSwyMDQ5MCwyMDQ5MSwyMDQ5NCwyMDQ5NiwyMDQ5NywyMDQ5OSwyMDUwMSwyMDUwMiwyMDUwMywyMDUwNywyMDUwOSwyMDUxMCwyMDUxMiwyMDUxNCwyMDUxNSwyMDUxNiwyMDUxOSwyMDUyMywyMDUyNywyMDUyOCwyMDUyOSwyMDUzMCwyMDUzMSwyMDUzMiwyMDUzMywyMDUzNCwyMDUzNSwyMDUzNiwyMDUzNywyMDUzOSwyMDU0MSwyMDU0MywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OCwyMDU0OSwyMDU1MCwyMDU1MywyMDU1NCwyMDU1NSwyMDU1NywyMDU2MCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NCwyMDU2NiwyMDU2NywyMDU2OCwyMDU2OSwyMDU3MSwyMDU3MywyMDU3NCwyMDU3NSwyMDU3NiwyMDU3NywyMDU3OCwyMDU3OSwyMDU4MCwyMDU4MiwyMDU4MywyMDU4NCwyMDU4NSwyMDU4NiwyMDU4NywyMDU4OSwyMDU5MCwyMDU5MSwyMDU5MiwyMDU5MywyMDU5NCwyMDU5NSwyMDU5NiwyMDU5NywyMDYwMCwyMDYwMSwyMDYwMiwyMDYwNCwyMDYwNSwyMDYwOSwyMDYxMCwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxNSwyMDYxNywyMDYxOCwyMDYxOSwyMDYyMCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNSwyMDYyNiwyMDYyNywyMDYyOCwyMDYyOSwyMDYzMCwyMDYzMSwyMDYzMiwyMDYzMywyMDYzNCwyMDYzNSwyMDYzNiwyMDYzNywyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY0NCwyMDY0NiwyMDY1MCwyMDY1MSwyMDY1MywyMDY1NCwyMDY1NSwyMDY1NiwyMDY1NywyMDY1OSwyMDY2MCwyMDY2MSwyMDY2MiwyMDY2MywyMDY2NCwyMDY2NSwyMDY2OCwyMDY2OSwyMDY3MCwyMDY3MSwyMDY3MiwyMDY3MywyMDY3NCwyMDY3NSwyMDY3NiwyMDY3NywyMDY3OCwyMDY3OSwyMDY4MCwyMDY4MSwyMDY4MiwyMDY4MywyMDY4NCwyMDY4NSwyMDY4NiwyMDY4OCwyMDY4OSwyMDY5MCwyMDY5MSwyMDY5MiwyMDY5MywyMDY5NSwyMDY5NiwyMDY5NywyMDY5OSwyMDcwMCwyMDcwMSwyMDcwMiwyMDcwMywyMDcwNCwyMDcwNSwyMDcwNiwyMDcwNywyMDcwOCwyMDcwOSwyMDcxMiwyMDcxMywyMDcxNCwyMDcxNSwyMDcxOSwyMDcyMCwyMDcyMSwyMDcyMiwyMDcyNCwyMDcyNiwyMDcyNywyMDcyOCwyMDcyOSwyMDczMCwyMDczMiwyMDczMywyMDczNCwyMDczNSwyMDczNiwyMDczNywyMDczOCwyMDczOSwyMDc0MCwyMDc0MSwyMDc0NCwyMDc0NSwyMDc0NiwyMDc0OCwyMDc0OSwyMDc1MCwyMDc1MSwyMDc1MiwyMDc1MywyMDc1NSwyMDc1NiwyMDc1NywyMDc1OCwyMDc1OSwyMDc2MCwyMDc2MSwyMDc2MiwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc2NywyMDc2OCwyMDc3MCwyMDc3MSwyMDc3MiwyMDc3MywyMDc3NCwyMDc3NSwyMDc3NiwyMDc3NywyMDc3OCwyMDc3OSwyMDc4MCwyMDc4MSwyMDc4MiwyMDc4MywyMDc4NCwyMDc4NSwyMDc4NiwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MCwyMDc5MSwyMDc5MiwyMDc5MywyMDc5NCwyMDc5NSwyMDc5NiwyMDc5NywyMDc5OCwyMDgwMiwyMDgwNywyMDgxMCwyMDgxMiwyMDgxNCwyMDgxNSwyMDgxNiwyMDgxOCwyMDgxOSwyMDgyMywyMDgyNCwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyMDgzMSwyMDgzMiwyMDgzMywyMDgzNSwyMDgzNiwyMDgzOCwyMDgzOSwyMDg0MSwyMDg0MiwyMDg0NywyMDg1MCwyMDg1OCwyMDg2MiwyMDg2MywyMDg2NywyMDg2OCwyMDg3MCwyMDg3MSwyMDg3NCwyMDg3NSwyMDg3OCwyMDg3OSwyMDg4MCwyMDg4MSwyMDg4MywyMDg4NCwyMDg4OCwyMDg5MCwyMDg5MywyMDg5NCwyMDg5NSwyMDg5NywyMDg5OSwyMDkwMiwyMDkwMywyMDkwNCwyMDkwNSwyMDkwNiwyMDkwOSwyMDkxMCwyMDkxNiwyMDkyMCwyMDkyMSwyMDkyMiwyMDkyNiwyMDkyNywyMDkyOSwyMDkzMCwyMDkzMSwyMDkzMywyMDkzNiwyMDkzOCwyMDk0MSwyMDk0MiwyMDk0NCwyMDk0NiwyMDk0NywyMDk0OCwyMDk0OSwyMDk1MCwyMDk1MSwyMDk1MiwyMDk1MywyMDk1NCwyMDk1NiwyMDk1OCwyMDk1OSwyMDk2MiwyMDk2MywyMDk2NSwyMDk2NiwyMDk2NywyMDk2OCwyMDk2OSwyMDk3MCwyMDk3MiwyMDk3NCwyMDk3NywyMDk3OCwyMDk4MCwyMDk4MywyMDk5MCwyMDk5NiwyMDk5NywyMTAwMSwyMTAwMywyMTAwNCwyMTAwNywyMTAwOCwyMTAxMSwyMTAxMiwyMTAxMywyMTAyMCwyMTAyMiwyMTAyMywyMTAyNSwyMTAyNiwyMTAyNywyMTAyOSwyMTAzMCwyMTAzMSwyMTAzNCwyMTAzNiwyMTAzOSwyMTA0MSwyMTA0MiwyMTA0NCwyMTA0NSwyMTA1MiwyMTA1NCwyMTA2MCwyMTA2MSwyMTA2MiwyMTA2MywyMTA2NCwyMTA2NSwyMTA2NywyMTA3MCwyMTA3MSwyMTA3NCwyMTA3NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MSwyMTA4MiwyMTA4MywyMTA4NSwyMTA4NywyMTA4OCwyMTA5MCwyMTA5MSwyMTA5MiwyMTA5NCwyMTA5NiwyMTA5OSwyMTEwMCwyMTEwMSwyMTEwMiwyMTEwNCwyMTEwNSwyMTEwNywyMTEwOCwyMTEwOSwyMTExMCwyMTExMSwyMTExMiwyMTExMywyMTExNCwyMTExNSwyMTExNiwyMTExOCwyMTEyMCwyMTEyMywyMTEyNCwyMTEyNSwyMTEyNiwyMTEyNywyMTEyOSwyMTEzMCwyMTEzMSwyMTEzMiwyMTEzMywyMTEzNCwyMTEzNSwyMTEzNywyMTEzOCwyMTE0MCwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NSwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NiwyMTE2NywyMTE2OCwyMTE3MiwyMTE3MywyMTE3NCwyMTE3NSwyMTE3NiwyMTE3NywyMTE3OCwyMTE3OSwyMTE4MCwyMTE4MSwyMTE4NCwyMTE4NSwyMTE4NiwyMTE4OCwyMTE4OSwyMTE5MCwyMTE5MiwyMTE5NCwyMTE5NiwyMTE5NywyMTE5OCwyMTE5OSwyMTIwMSwyMTIwMywyMTIwNCwyMTIwNSwyMTIwNywyMTIwOSwyMTIxMCwyMTIxMSwyMTIxMiwyMTIxMywyMTIxNCwyMTIxNiwyMTIxNywyMTIxOCwyMTIxOSwyMTIyMSwyMTIyMiwyMTIyMywyMTIyNCwyMTIyNSwyMTIyNiwyMTIyNywyMTIyOCwyMTIyOSwyMTIzMCwyMTIzMSwyMTIzMywyMTIzNCwyMTIzNSwyMTIzNiwyMTIzNywyMTIzOCwyMTIzOSwyMTI0MCwyMTI0MywyMTI0NCwyMTI0NSwyMTI0OSwyMTI1MCwyMTI1MSwyMTI1MiwyMTI1NSwyMTI1NywyMTI1OCwyMTI1OSwyMTI2MCwyMTI2MiwyMTI2NSwyMTI2NiwyMTI2NywyMTI2OCwyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4MiwyMTI4NCwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NSwyMTI5NiwyMTI5NywyMTI5OCwyMTI5OSwyMTMwMCwyMTMwMSwyMTMwMiwyMTMwMywyMTMwNCwyMTMwOCwyMTMwOSwyMTMxMiwyMTMxNCwyMTMxNiwyMTMxOCwyMTMyMywyMTMyNCwyMTMyNSwyMTMyOCwyMTMzMiwyMTMzNiwyMTMzNywyMTMzOSwyMTM0MSwyMTM0OSwyMTM1MiwyMTM1NCwyMTM1NiwyMTM1NywyMTM2MiwyMTM2NiwyMTM2OSwyMTM3MSwyMTM3MiwyMTM3MywyMTM3NCwyMTM3NiwyMTM3NywyMTM3OSwyMTM4MywyMTM4NCwyMTM4NiwyMTM5MCwyMTM5MSwyMTM5MiwyMTM5MywyMTM5NCwyMTM5NSwyMTM5NiwyMTM5OCwyMTM5OSwyMTQwMSwyMTQwMywyMTQwNCwyMTQwNiwyMTQwOCwyMTQwOSwyMTQxMiwyMTQxNSwyMTQxOCwyMTQxOSwyMTQyMCwyMTQyMSwyMTQyMywyMTQyNCwyMTQyNSwyMTQyNiwyMTQyNywyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzMywyMTQzNCwyMTQzNiwyMTQzNywyMTQzOCwyMTQ0MCwyMTQ0MywyMTQ0NCwyMTQ0NSwyMTQ0NiwyMTQ0NywyMTQ1NCwyMTQ1NSwyMTQ1NiwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OCwyMTQ2OSwyMTQ3MCwyMTQ3MywyMTQ3NCwyMTQ3OSwyMTQ5MiwyMTQ5OCwyMTUwMiwyMTUwMywyMTUwNCwyMTUwNiwyMTUwOSwyMTUxMSwyMTUxNSwyMTUyNCwyMTUyOCwyMTUyOSwyMTUzMCwyMTUzMiwyMTUzOCwyMTU0MCwyMTU0MSwyMTU0NiwyMTU1MiwyMTU1NSwyMTU1OCwyMTU1OSwyMTU2MiwyMTU2NSwyMTU2NywyMTU2OSwyMTU3MCwyMTU3MiwyMTU3MywyMTU3NSwyMTU3NywyMTU4MCwyMTU4MSwyMTU4MiwyMTU4MywyMTU4NSwyMTU5NCwyMTU5NywyMTU5OCwyMTU5OSwyMTYwMCwyMTYwMSwyMTYwMywyMTYwNSwyMTYwNywyMTYwOSwyMTYxMCwyMTYxMSwyMTYxMiwyMTYxMywyMTYxNCwyMTYxNSwyMTYxNiwyMTYyMCwyMTYyNSwyMTYyNiwyMTYzMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTYzOSwyMTY0MCwyMTY0MSwyMTY0MiwyMTY0NSwyMTY0OSwyMTY1MSwyMTY1NSwyMTY1NiwyMTY2MCwyMTY2MiwyMTY2MywyMTY2NCwyMTY2NSwyMTY2NiwyMTY2OSwyMTY3OCwyMTY4MCwyMTY4MiwyMTY4NSwyMTY4NiwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MiwyMTY5NCwyMTY5OSwyMTcwMSwyMTcwNiwyMTcwNywyMTcxOCwyMTcyMCwyMTcyMywyMTcyOCwyMTcyOSwyMTczMCwyMTczMSwyMTczMiwyMTczOSwyMTc0MCwyMTc0MywyMTc0NCwyMTc0NSwyMTc0OCwyMTc0OSwyMTc1MCwyMTc1MSwyMTc1MiwyMTc1MywyMTc1NSwyMTc1OCwyMTc2MCwyMTc2MiwyMTc2MywyMTc2NCwyMTc2NSwyMTc2OCwyMTc3MCwyMTc3MSwyMTc3MiwyMTc3MywyMTc3NCwyMTc3OCwyMTc3OSwyMTc4MSwyMTc4MiwyMTc4MywyMTc4NCwyMTc4NSwyMTc4NiwyMTc4OCwyMTc4OSwyMTc5MCwyMTc5MSwyMTc5MywyMTc5NywyMTc5OCwyMTgwMCwyMTgwMSwyMTgwMywyMTgwNSwyMTgxMCwyMTgxMiwyMTgxMywyMTgxNCwyMTgxNiwyMTgxNywyMTgxOCwyMTgxOSwyMTgyMSwyMTgyNCwyMTgyNiwyMTgyOSwyMTgzMSwyMTgzMiwyMTgzNSwyMTgzNiwyMTgzNywyMTgzOCwyMTgzOSwyMTg0MSwyMTg0MiwyMTg0MywyMTg0NCwyMTg0NywyMTg0OCwyMTg0OSwyMTg1MCwyMTg1MSwyMTg1MywyMTg1NCwyMTg1NSwyMTg1NiwyMTg1OCwyMTg1OSwyMTg2NCwyMTg2NSwyMTg2NywyMTg3MSwyMTg3MiwyMTg3MywyMTg3NCwyMTg3NSwyMTg3NiwyMTg4MSwyMTg4MiwyMTg4NSwyMTg4NywyMTg5MywyMTg5NCwyMTkwMCwyMTkwMSwyMTkwMiwyMTkwNCwyMTkwNiwyMTkwNywyMTkwOSwyMTkxMCwyMTkxMSwyMTkxNCwyMTkxNSwyMTkxOCwyMTkyMCwyMTkyMSwyMTkyMiwyMTkyMywyMTkyNCwyMTkyNSwyMTkyNiwyMTkyOCwyMTkyOSwyMTkzMCwyMTkzMSwyMTkzMiwyMTkzMywyMTkzNCwyMTkzNSwyMTkzNiwyMTkzOCwyMTk0MCwyMTk0MiwyMTk0NCwyMTk0NiwyMTk0OCwyMTk1MSwyMTk1MiwyMTk1MywyMTk1NCwyMTk1NSwyMTk1OCwyMTk1OSwyMTk2MCwyMTk2MiwyMTk2MywyMTk2NiwyMTk2NywyMTk2OCwyMTk3MywyMTk3NSwyMTk3NiwyMTk3NywyMTk3OCwyMTk3OSwyMTk4MiwyMTk4NCwyMTk4NiwyMTk5MSwyMTk5MywyMTk5NywyMTk5OCwyMjAwMCwyMjAwMSwyMjAwNCwyMjAwNiwyMjAwOCwyMjAwOSwyMjAxMCwyMjAxMSwyMjAxMiwyMjAxNSwyMjAxOCwyMjAxOSwyMjAyMCwyMjAyMSwyMjAyMiwyMjAyMywyMjAyNiwyMjAyNywyMjAyOSwyMjAzMiwyMjAzMywyMjAzNCwyMjAzNSwyMjAzNiwyMjAzNywyMjAzOCwyMjAzOSwyMjA0MSwyMjA0MiwyMjA0NCwyMjA0NSwyMjA0OCwyMjA0OSwyMjA1MCwyMjA1MywyMjA1NCwyMjA1NiwyMjA1NywyMjA1OCwyMjA1OSwyMjA2MiwyMjA2MywyMjA2NCwyMjA2NywyMjA2OSwyMjA3MSwyMjA3MiwyMjA3NCwyMjA3NiwyMjA3NywyMjA3OCwyMjA4MCwyMjA4MSwyMjA4MiwyMjA4MywyMjA4NCwyMjA4NSwyMjA4NiwyMjA4NywyMjA4OCwyMjA4OSwyMjA5MCwyMjA5MSwyMjA5NSwyMjA5NiwyMjA5NywyMjA5OCwyMjA5OSwyMjEwMSwyMjEwMiwyMjEwNiwyMjEwNywyMjEwOSwyMjExMCwyMjExMSwyMjExMiwyMjExMywyMjExNSwyMjExNywyMjExOCwyMjExOSwyMjEyNSwyMjEyNiwyMjEyNywyMjEyOCwyMjEzMCwyMjEzMSwyMjEzMiwyMjEzMywyMjEzNSwyMjEzNiwyMjEzNywyMjEzOCwyMjE0MSwyMjE0MiwyMjE0MywyMjE0NCwyMjE0NSwyMjE0NiwyMjE0NywyMjE0OCwyMjE1MSwyMjE1MiwyMjE1MywyMjE1NCwyMjE1NSwyMjE1NiwyMjE1NywyMjE2MCwyMjE2MSwyMjE2MiwyMjE2NCwyMjE2NSwyMjE2NiwyMjE2NywyMjE2OCwyMjE2OSwyMjE3MCwyMjE3MSwyMjE3MiwyMjE3MywyMjE3NCwyMjE3NSwyMjE3NiwyMjE3NywyMjE3OCwyMjE4MCwyMjE4MSwyMjE4MiwyMjE4MywyMjE4NCwyMjE4NSwyMjE4NiwyMjE4NywyMjE4OCwyMjE4OSwyMjE5MCwyMjE5MiwyMjE5MywyMjE5NCwyMjE5NSwyMjE5NiwyMjE5NywyMjE5OCwyMjIwMCwyMjIwMSwyMjIwMiwyMjIwMywyMjIwNSwyMjIwNiwyMjIwNywyMjIwOCwyMjIwOSwyMjIxMCwyMjIxMSwyMjIxMiwyMjIxMywyMjIxNCwyMjIxNSwyMjIxNiwyMjIxNywyMjIxOSwyMjIyMCwyMjIyMSwyMjIyMiwyMjIyMywyMjIyNCwyMjIyNSwyMjIyNiwyMjIyNywyMjIyOSwyMjIzMCwyMjIzMiwyMjIzMywyMjIzNiwyMjI0MywyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI0OSwyMjI1MCwyMjI1MiwyMjI1NCwyMjI1NSwyMjI1OCwyMjI1OSwyMjI2MiwyMjI2MywyMjI2NCwyMjI2NywyMjI2OCwyMjI3MiwyMjI3MywyMjI3NCwyMjI3NywyMjI3OSwyMjI4MywyMjI4NCwyMjI4NSwyMjI4NiwyMjI4NywyMjI4OCwyMjI4OSwyMjI5MCwyMjI5MSwyMjI5MiwyMjI5MywyMjI5NCwyMjI5NSwyMjI5NiwyMjI5NywyMjI5OCwyMjI5OSwyMjMwMSwyMjMwMiwyMjMwNCwyMjMwNSwyMjMwNiwyMjMwOCwyMjMwOSwyMjMxMCwyMjMxMSwyMjMxNSwyMjMyMSwyMjMyMiwyMjMyNCwyMjMyNSwyMjMyNiwyMjMyNywyMjMyOCwyMjMzMiwyMjMzMywyMjMzNSwyMjMzNywyMjMzOSwyMjM0MCwyMjM0MSwyMjM0MiwyMjM0NCwyMjM0NSwyMjM0NywyMjM1NCwyMjM1NSwyMjM1NiwyMjM1NywyMjM1OCwyMjM2MCwyMjM2MSwyMjM3MCwyMjM3MSwyMjM3MywyMjM3NSwyMjM4MCwyMjM4MiwyMjM4NCwyMjM4NSwyMjM4NiwyMjM4OCwyMjM4OSwyMjM5MiwyMjM5MywyMjM5NCwyMjM5NywyMjM5OCwyMjM5OSwyMjQwMCwyMjQwMSwyMjQwNywyMjQwOCwyMjQwOSwyMjQxMCwyMjQxMywyMjQxNCwyMjQxNSwyMjQxNiwyMjQxNywyMjQyMCwyMjQyMSwyMjQyMiwyMjQyMywyMjQyNCwyMjQyNSwyMjQyNiwyMjQyOCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzNywyMjQ0MCwyMjQ0MiwyMjQ0NCwyMjQ0NywyMjQ0OCwyMjQ0OSwyMjQ1MSwyMjQ1MywyMjQ1NCwyMjQ1NSwyMjQ1NywyMjQ1OCwyMjQ1OSwyMjQ2MCwyMjQ2MSwyMjQ2MiwyMjQ2MywyMjQ2NCwyMjQ2NSwyMjQ2OCwyMjQ2OSwyMjQ3MCwyMjQ3MSwyMjQ3MiwyMjQ3MywyMjQ3NCwyMjQ3NiwyMjQ3NywyMjQ4MCwyMjQ4MSwyMjQ4MywyMjQ4NiwyMjQ4NywyMjQ5MSwyMjQ5MiwyMjQ5NCwyMjQ5NywyMjQ5OCwyMjQ5OSwyMjUwMSwyMjUwMiwyMjUwMywyMjUwNCwyMjUwNSwyMjUwNiwyMjUwNywyMjUwOCwyMjUxMCwyMjUxMiwyMjUxMywyMjUxNCwyMjUxNSwyMjUxNywyMjUxOCwyMjUxOSwyMjUyMywyMjUyNCwyMjUyNiwyMjUyNywyMjUyOSwyMjUzMSwyMjUzMiwyMjUzMywyMjUzNiwyMjUzNywyMjUzOCwyMjU0MCwyMjU0MiwyMjU0MywyMjU0NCwyMjU0NiwyMjU0NywyMjU0OCwyMjU1MCwyMjU1MSwyMjU1MiwyMjU1NCwyMjU1NSwyMjU1NiwyMjU1NywyMjU1OSwyMjU2MiwyMjU2MywyMjU2NSwyMjU2NiwyMjU2NywyMjU2OCwyMjU2OSwyMjU3MSwyMjU3MiwyMjU3MywyMjU3NCwyMjU3NSwyMjU3NywyMjU3OCwyMjU3OSwyMjU4MCwyMjU4MiwyMjU4MywyMjU4NCwyMjU4NSwyMjU4NiwyMjU4NywyMjU4OCwyMjU4OSwyMjU5MCwyMjU5MSwyMjU5MiwyMjU5MywyMjU5NCwyMjU5NSwyMjU5NywyMjU5OCwyMjU5OSwyMjYwMCwyMjYwMSwyMjYwMiwyMjYwMywyMjYwNiwyMjYwNywyMjYwOCwyMjYxMCwyMjYxMSwyMjYxMywyMjYxNCwyMjYxNSwyMjYxNywyMjYxOCwyMjYxOSwyMjYyMCwyMjYyMSwyMjYyMywyMjYyNCwyMjYyNSwyMjYyNiwyMjYyNywyMjYyOCwyMjYzMCwyMjYzMSwyMjYzMiwyMjYzMywyMjYzNCwyMjYzNywyMjYzOCwyMjYzOSwyMjY0MCwyMjY0MSwyMjY0MiwyMjY0MywyMjY0NCwyMjY0NSwyMjY0NiwyMjY0NywyMjY0OCwyMjY0OSwyMjY1MCwyMjY1MSwyMjY1MiwyMjY1MywyMjY1NSwyMjY1OCwyMjY2MCwyMjY2MiwyMjY2MywyMjY2NCwyMjY2NiwyMjY2NywyMjY2OCwyMjY2OSwyMjY3MCwyMjY3MSwyMjY3MiwyMjY3MywyMjY3NiwyMjY3NywyMjY3OCwyMjY3OSwyMjY4MCwyMjY4MywyMjY4NCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwyMjY5MSwyMjY5MiwyMjY5MywyMjY5NCwyMjY5NSwyMjY5OCwyMjY5OSwyMjcwMCwyMjcwMSwyMjcwMiwyMjcwMywyMjcwNCwyMjcwNSwyMjcwNiwyMjcwNywyMjcwOCwyMjcwOSwyMjcxMCwyMjcxMSwyMjcxMiwyMjcxMywyMjcxNCwyMjcxNSwyMjcxNywyMjcxOCwyMjcxOSwyMjcyMCwyMjcyMiwyMjcyMywyMjcyNCwyMjcyNiwyMjcyNywyMjcyOCwyMjcyOSwyMjczMCwyMjczMSwyMjczMiwyMjczMywyMjczNCwyMjczNSwyMjczNiwyMjczOCwyMjczOSwyMjc0MCwyMjc0MiwyMjc0MywyMjc0NCwyMjc0NSwyMjc0NiwyMjc0NywyMjc0OCwyMjc0OSwyMjc1MCwyMjc1MSwyMjc1MiwyMjc1MywyMjc1NCwyMjc1NSwyMjc1NywyMjc1OCwyMjc1OSwyMjc2MCwyMjc2MSwyMjc2MiwyMjc2NSwyMjc2NywyMjc2OSwyMjc3MCwyMjc3MiwyMjc3MywyMjc3NSwyMjc3NiwyMjc3OCwyMjc3OSwyMjc4MCwyMjc4MSwyMjc4MiwyMjc4MywyMjc4NCwyMjc4NSwyMjc4NywyMjc4OSwyMjc5MCwyMjc5MiwyMjc5MywyMjc5NCwyMjc5NSwyMjc5NiwyMjc5OCwyMjgwMCwyMjgwMSwyMjgwMiwyMjgwMywyMjgwNywyMjgwOCwyMjgxMSwyMjgxMywyMjgxNCwyMjgxNiwyMjgxNywyMjgxOCwyMjgxOSwyMjgyMiwyMjgyNCwyMjgyOCwyMjgzMiwyMjgzNCwyMjgzNSwyMjgzNywyMjgzOCwyMjg0MywyMjg0NSwyMjg0NiwyMjg0NywyMjg0OCwyMjg1MSwyMjg1MywyMjg1NCwyMjg1OCwyMjg2MCwyMjg2MSwyMjg2NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NiwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg4NCwyMjg4NiwyMjg4NywyMjg4OCwyMjg4OSwyMjg5MCwyMjg5MSwyMjg5MiwyMjg5MywyMjg5NCwyMjg5NSwyMjg5NiwyMjg5NywyMjg5OCwyMjkwMSwyMjkwMywyMjkwNiwyMjkwNywyMjkwOCwyMjkxMCwyMjkxMSwyMjkxMiwyMjkxNywyMjkyMSwyMjkyMywyMjkyNCwyMjkyNiwyMjkyNywyMjkyOCwyMjkyOSwyMjkzMiwyMjkzMywyMjkzNiwyMjkzOCwyMjkzOSwyMjk0MCwyMjk0MSwyMjk0MywyMjk0NCwyMjk0NSwyMjk0NiwyMjk1MCwyMjk1MSwyMjk1NiwyMjk1NywyMjk2MCwyMjk2MSwyMjk2MywyMjk2NCwyMjk2NSwyMjk2NiwyMjk2NywyMjk2OCwyMjk3MCwyMjk3MiwyMjk3MywyMjk3NSwyMjk3NiwyMjk3NywyMjk3OCwyMjk3OSwyMjk4MCwyMjk4MSwyMjk4MywyMjk4NCwyMjk4NSwyMjk4OCwyMjk4OSwyMjk5MCwyMjk5MSwyMjk5NywyMjk5OCwyMzAwMSwyMzAwMywyMzAwNiwyMzAwNywyMzAwOCwyMzAwOSwyMzAxMCwyMzAxMiwyMzAxNCwyMzAxNSwyMzAxNywyMzAxOCwyMzAxOSwyMzAyMSwyMzAyMiwyMzAyMywyMzAyNCwyMzAyNSwyMzAyNiwyMzAyNywyMzAyOCwyMzAyOSwyMzAzMCwyMzAzMSwyMzAzMiwyMzAzNCwyMzAzNiwyMzAzNywyMzAzOCwyMzA0MCwyMzA0MiwyMzA1MCwyMzA1MSwyMzA1MywyMzA1NCwyMzA1NSwyMzA1NiwyMzA1OCwyMzA2MCwyMzA2MSwyMzA2MiwyMzA2MywyMzA2NSwyMzA2NiwyMzA2NywyMzA2OSwyMzA3MCwyMzA3MywyMzA3NCwyMzA3NiwyMzA3OCwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4MywyMzA4NCwyMzA4NSwyMzA4NiwyMzA4NywyMzA4OCwyMzA5MSwyMzA5MywyMzA5NSwyMzA5NiwyMzA5NywyMzA5OCwyMzA5OSwyMzEwMSwyMzEwMiwyMzEwMywyMzEwNSwyMzEwNiwyMzEwNywyMzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNSwyMzExNiwyMzExNywyMzExOCwyMzExOSwyMzEyMCwyMzEyMSwyMzEyMiwyMzEyMywyMzEyNCwyMzEyNiwyMzEyNywyMzEyOCwyMzEyOSwyMzEzMSwyMzEzMiwyMzEzMywyMzEzNCwyMzEzNSwyMzEzNiwyMzEzNywyMzEzOSwyMzE0MCwyMzE0MSwyMzE0MiwyMzE0NCwyMzE0NSwyMzE0NywyMzE0OCwyMzE0OSwyMzE1MCwyMzE1MSwyMzE1MiwyMzE1MywyMzE1NCwyMzE1NSwyMzE2MCwyMzE2MSwyMzE2MywyMzE2NCwyMzE2NSwyMzE2NiwyMzE2OCwyMzE2OSwyMzE3MCwyMzE3MSwyMzE3MiwyMzE3MywyMzE3NCwyMzE3NSwyMzE3NiwyMzE3NywyMzE3OCwyMzE3OSwyMzE4MCwyMzE4MSwyMzE4MiwyMzE4MywyMzE4NCwyMzE4NSwyMzE4NywyMzE4OCwyMzE4OSwyMzE5MCwyMzE5MSwyMzE5MiwyMzE5MywyMzE5NiwyMzE5NywyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMSwyMzIwMiwyMzIwMywyMzIwNCwyMzIwNSwyMzIwNiwyMzIwNywyMzIwOCwyMzIwOSwyMzIxMSwyMzIxMiwyMzIxMywyMzIxNCwyMzIxNSwyMzIxNiwyMzIxNywyMzIyMCwyMzIyMiwyMzIyMywyMzIyNSwyMzIyNiwyMzIyNywyMzIyOCwyMzIyOSwyMzIzMSwyMzIzMiwyMzIzNSwyMzIzNiwyMzIzNywyMzIzOCwyMzIzOSwyMzI0MCwyMzI0MiwyMzI0MywyMzI0NSwyMzI0NiwyMzI0NywyMzI0OCwyMzI0OSwyMzI1MSwyMzI1MywyMzI1NSwyMzI1NywyMzI1OCwyMzI1OSwyMzI2MSwyMzI2MiwyMzI2MywyMzI2NiwyMzI2OCwyMzI2OSwyMzI3MSwyMzI3MiwyMzI3NCwyMzI3NiwyMzI3NywyMzI3OCwyMzI3OSwyMzI4MCwyMzI4MiwyMzI4MywyMzI4NCwyMzI4NSwyMzI4NiwyMzI4NywyMzI4OCwyMzI4OSwyMzI5MCwyMzI5MSwyMzI5MiwyMzI5MywyMzI5NCwyMzI5NSwyMzI5NiwyMzI5NywyMzI5OCwyMzI5OSwyMzMwMCwyMzMwMSwyMzMwMiwyMzMwMywyMzMwNCwyMzMwNiwyMzMwNywyMzMwOCwyMzMwOSwyMzMxMCwyMzMxMSwyMzMxMiwyMzMxMywyMzMxNCwyMzMxNSwyMzMxNiwyMzMxNywyMzMyMCwyMzMyMSwyMzMyMiwyMzMyMywyMzMyNCwyMzMyNSwyMzMyNiwyMzMyNywyMzMyOCwyMzMyOSwyMzMzMCwyMzMzMSwyMzMzMiwyMzMzMywyMzMzNCwyMzMzNSwyMzMzNiwyMzMzNywyMzMzOCwyMzMzOSwyMzM0MCwyMzM0MSwyMzM0MiwyMzM0MywyMzM0NCwyMzM0NSwyMzM0NywyMzM0OSwyMzM1MCwyMzM1MiwyMzM1MywyMzM1NCwyMzM1NSwyMzM1NiwyMzM1NywyMzM1OCwyMzM1OSwyMzM2MSwyMzM2MiwyMzM2MywyMzM2NCwyMzM2NSwyMzM2NiwyMzM2NywyMzM2OCwyMzM2OSwyMzM3MCwyMzM3MSwyMzM3MiwyMzM3MywyMzM3NCwyMzM3NSwyMzM3OCwyMzM4MiwyMzM5MCwyMzM5MiwyMzM5MywyMzM5OSwyMzQwMCwyMzQwMywyMzQwNSwyMzQwNiwyMzQwNywyMzQxMCwyMzQxMiwyMzQxNCwyMzQxNSwyMzQxNiwyMzQxNywyMzQxOSwyMzQyMCwyMzQyMiwyMzQyMywyMzQyNiwyMzQzMCwyMzQzNCwyMzQzNywyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MiwyMzQ0NCwyMzQ0NiwyMzQ1NSwyMzQ2MywyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2OSwyMzQ3MCwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4MywyMzQ4NCwyMzQ4OCwyMzQ4OSwyMzQ5MSwyMzQ5NiwyMzQ5NywyMzQ5OCwyMzQ5OSwyMzUwMSwyMzUwMiwyMzUwMywyMzUwNSwyMzUwOCwyMzUwOSwyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUxNSwyMzUxNiwyMzUyMCwyMzUyMiwyMzUyMywyMzUyNiwyMzUyNywyMzUyOSwyMzUzMCwyMzUzMSwyMzUzMiwyMzUzMywyMzUzNSwyMzUzNywyMzUzOCwyMzUzOSwyMzU0MCwyMzU0MSwyMzU0MiwyMzU0MywyMzU0OSwyMzU1MCwyMzU1MiwyMzU1NCwyMzU1NSwyMzU1NywyMzU1OSwyMzU2MCwyMzU2MywyMzU2NCwyMzU2NSwyMzU2NiwyMzU2OCwyMzU3MCwyMzU3MSwyMzU3NSwyMzU3NywyMzU3OSwyMzU4MiwyMzU4MywyMzU4NCwyMzU4NSwyMzU4NywyMzU5MCwyMzU5MiwyMzU5MywyMzU5NCwyMzU5NSwyMzU5NywyMzU5OCwyMzU5OSwyMzYwMCwyMzYwMiwyMzYwMywyMzYwNSwyMzYwNiwyMzYwNywyMzYxOSwyMzYyMCwyMzYyMiwyMzYyMywyMzYyOCwyMzYyOSwyMzYzNCwyMzYzNSwyMzYzNiwyMzYzOCwyMzYzOSwyMzY0MCwyMzY0MiwyMzY0MywyMzY0NCwyMzY0NSwyMzY0NywyMzY1MCwyMzY1MiwyMzY1NSwyMzY1NiwyMzY1NywyMzY1OCwyMzY1OSwyMzY2MCwyMzY2MSwyMzY2NCwyMzY2NiwyMzY2NywyMzY2OCwyMzY2OSwyMzY3MCwyMzY3MSwyMzY3MiwyMzY3NSwyMzY3NiwyMzY3NywyMzY3OCwyMzY4MCwyMzY4MywyMzY4NCwyMzY4NSwyMzY4NiwyMzY4NywyMzY4OSwyMzY5MCwyMzY5MSwyMzY5NCwyMzY5NSwyMzY5OCwyMzY5OSwyMzcwMSwyMzcwOSwyMzcxMCwyMzcxMSwyMzcxMiwyMzcxMywyMzcxNiwyMzcxNywyMzcxOCwyMzcxOSwyMzcyMCwyMzcyMiwyMzcyNiwyMzcyNywyMzcyOCwyMzczMCwyMzczMiwyMzczNCwyMzczNywyMzczOCwyMzczOSwyMzc0MCwyMzc0MiwyMzc0NCwyMzc0NiwyMzc0NywyMzc0OSwyMzc1MCwyMzc1MSwyMzc1MiwyMzc1MywyMzc1NCwyMzc1NiwyMzc1NywyMzc1OCwyMzc1OSwyMzc2MCwyMzc2MSwyMzc2MywyMzc2NCwyMzc2NSwyMzc2NiwyMzc2NywyMzc2OCwyMzc3MCwyMzc3MSwyMzc3MiwyMzc3MywyMzc3NCwyMzc3NSwyMzc3NiwyMzc3OCwyMzc3OSwyMzc4MywyMzc4NSwyMzc4NywyMzc4OCwyMzc5MCwyMzc5MSwyMzc5MywyMzc5NCwyMzc5NSwyMzc5NiwyMzc5NywyMzc5OCwyMzc5OSwyMzgwMCwyMzgwMSwyMzgwMiwyMzgwNCwyMzgwNSwyMzgwNiwyMzgwNywyMzgwOCwyMzgwOSwyMzgxMiwyMzgxMywyMzgxNiwyMzgxNywyMzgxOCwyMzgxOSwyMzgyMCwyMzgyMSwyMzgyMywyMzgyNCwyMzgyNSwyMzgyNiwyMzgyNywyMzgyOSwyMzgzMSwyMzgzMiwyMzgzMywyMzgzNCwyMzgzNiwyMzgzNywyMzgzOSwyMzg0MCwyMzg0MSwyMzg0MiwyMzg0MywyMzg0NSwyMzg0OCwyMzg1MCwyMzg1MSwyMzg1MiwyMzg1NSwyMzg1NiwyMzg1NywyMzg1OCwyMzg1OSwyMzg2MSwyMzg2MiwyMzg2MywyMzg2NCwyMzg2NSwyMzg2NiwyMzg2NywyMzg2OCwyMzg3MSwyMzg3MiwyMzg3MywyMzg3NCwyMzg3NSwyMzg3NiwyMzg3NywyMzg3OCwyMzg4MCwyMzg4MSwyMzg4NSwyMzg4NiwyMzg4NywyMzg4OCwyMzg4OSwyMzg5MCwyMzg5MSwyMzg5MiwyMzg5MywyMzg5NCwyMzg5NSwyMzg5NywyMzg5OCwyMzkwMCwyMzkwMiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwNywyMzkwOCwyMzkwOSwyMzkxMCwyMzkxMSwyMzkxMiwyMzkxNCwyMzkxNywyMzkxOCwyMzkyMCwyMzkyMSwyMzkyMiwyMzkyMywyMzkyNSwyMzkyNiwyMzkyNywyMzkyOCwyMzkyOSwyMzkzMCwyMzkzMSwyMzkzMiwyMzkzMywyMzkzNCwyMzkzNSwyMzkzNiwyMzkzNywyMzkzOSwyMzk0MCwyMzk0MSwyMzk0MiwyMzk0MywyMzk0NCwyMzk0NSwyMzk0NiwyMzk0NywyMzk0OCwyMzk0OSwyMzk1MCwyMzk1MSwyMzk1MiwyMzk1MywyMzk1NCwyMzk1NSwyMzk1NiwyMzk1NywyMzk1OCwyMzk1OSwyMzk2MCwyMzk2MiwyMzk2MywyMzk2NCwyMzk2NiwyMzk2NywyMzk2OCwyMzk2OSwyMzk3MCwyMzk3MSwyMzk3MiwyMzk3MywyMzk3NCwyMzk3NSwyMzk3NiwyMzk3NywyMzk3OCwyMzk3OSwyMzk4MCwyMzk4MSwyMzk4MiwyMzk4MywyMzk4NCwyMzk4NSwyMzk4NiwyMzk4NywyMzk4OCwyMzk4OSwyMzk5MCwyMzk5MiwyMzk5MywyMzk5NCwyMzk5NSwyMzk5NiwyMzk5NywyMzk5OCwyMzk5OSwyNDAwMCwyNDAwMSwyNDAwMiwyNDAwMywyNDAwNCwyNDAwNiwyNDAwNywyNDAwOCwyNDAwOSwyNDAxMCwyNDAxMSwyNDAxMiwyNDAxNCwyNDAxNSwyNDAxNiwyNDAxNywyNDAxOCwyNDAxOSwyNDAyMCwyNDAyMSwyNDAyMiwyNDAyMywyNDAyNCwyNDAyNSwyNDAyNiwyNDAyOCwyNDAzMSwyNDAzMiwyNDAzNSwyNDAzNiwyNDA0MiwyNDA0NCwyNDA0NSwyNDA0OCwyNDA1MywyNDA1NCwyNDA1NiwyNDA1NywyNDA1OCwyNDA1OSwyNDA2MCwyNDA2MywyNDA2NCwyNDA2OCwyNDA3MSwyNDA3MywyNDA3NCwyNDA3NSwyNDA3NywyNDA3OCwyNDA4MiwyNDA4MywyNDA4NywyNDA5NCwyNDA5NSwyNDA5NiwyNDA5NywyNDA5OCwyNDA5OSwyNDEwMCwyNDEwMSwyNDEwNCwyNDEwNSwyNDEwNiwyNDEwNywyNDEwOCwyNDExMSwyNDExMiwyNDExNCwyNDExNSwyNDExNiwyNDExNywyNDExOCwyNDEyMSwyNDEyMiwyNDEyNiwyNDEyNywyNDEyOCwyNDEyOSwyNDEzMSwyNDEzNCwyNDEzNSwyNDEzNiwyNDEzNywyNDEzOCwyNDEzOSwyNDE0MSwyNDE0MiwyNDE0MywyNDE0NCwyNDE0NSwyNDE0NiwyNDE0NywyNDE1MCwyNDE1MSwyNDE1MiwyNDE1MywyNDE1NCwyNDE1NiwyNDE1NywyNDE1OSwyNDE2MCwyNDE2MywyNDE2NCwyNDE2NSwyNDE2NiwyNDE2NywyNDE2OCwyNDE2OSwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NSwyNDE3NiwyNDE3NywyNDE4MSwyNDE4MywyNDE4NSwyNDE5MCwyNDE5MywyNDE5NCwyNDE5NSwyNDE5NywyNDIwMCwyNDIwMSwyNDIwNCwyNDIwNSwyNDIwNiwyNDIxMCwyNDIxNiwyNDIxOSwyNDIyMSwyNDIyNSwyNDIyNiwyNDIyNywyNDIyOCwyNDIzMiwyNDIzMywyNDIzNCwyNDIzNSwyNDIzNiwyNDIzOCwyNDIzOSwyNDI0MCwyNDI0MSwyNDI0MiwyNDI0NCwyNDI1MCwyNDI1MSwyNDI1MiwyNDI1MywyNDI1NSwyNDI1NiwyNDI1NywyNDI1OCwyNDI1OSwyNDI2MCwyNDI2MSwyNDI2MiwyNDI2MywyNDI2NCwyNDI2NywyNDI2OCwyNDI2OSwyNDI3MCwyNDI3MSwyNDI3MiwyNDI3NiwyNDI3NywyNDI3OSwyNDI4MCwyNDI4MSwyNDI4MiwyNDI4NCwyNDI4NSwyNDI4NiwyNDI4NywyNDI4OCwyNDI4OSwyNDI5MCwyNDI5MSwyNDI5MiwyNDI5MywyNDI5NCwyNDI5NSwyNDI5NywyNDI5OSwyNDMwMCwyNDMwMSwyNDMwMiwyNDMwMywyNDMwNCwyNDMwNSwyNDMwNiwyNDMwNywyNDMwOSwyNDMxMiwyNDMxMywyNDMxNSwyNDMxNiwyNDMxNywyNDMyNSwyNDMyNiwyNDMyNywyNDMyOSwyNDMzMiwyNDMzMywyNDMzNCwyNDMzNiwyNDMzOCwyNDM0MCwyNDM0MiwyNDM0NSwyNDM0NiwyNDM0OCwyNDM0OSwyNDM1MCwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MCwyNDM3MSwyNDM3MiwyNDM3MywyNDM3NCwyNDM3NSwyNDM3NiwyNDM3OSwyNDM4MSwyNDM4MiwyNDM4MywyNDM4NSwyNDM4NiwyNDM4NywyNDM4OCwyNDM4OSwyNDM5MCwyNDM5MSwyNDM5MiwyNDM5MywyNDM5NCwyNDM5NSwyNDM5NiwyNDM5NywyNDM5OCwyNDM5OSwyNDQwMSwyNDQwNCwyNDQwOSwyNDQxMCwyNDQxMSwyNDQxMiwyNDQxNCwyNDQxNSwyNDQxNiwyNDQxOSwyNDQyMSwyNDQyMywyNDQyNCwyNDQyNywyNDQzMCwyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQzOCwyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ0NywyNDQ1MSwyNDQ1NCwyNDQ2MSwyNDQ2MiwyNDQ2MywyNDQ2NSwyNDQ2NywyNDQ2OCwyNDQ3MCwyNDQ3NCwyNDQ3NSwyNDQ3NywyNDQ3OCwyNDQ3OSwyNDQ4MCwyNDQ4MiwyNDQ4MywyNDQ4NCwyNDQ4NSwyNDQ4NiwyNDQ4NywyNDQ4OSwyNDQ5MSwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDQ5OCwyNDQ5OSwyNDUwMCwyNDUwMiwyNDUwNCwyNDUwNSwyNDUwNiwyNDUwNywyNDUxMCwyNDUxMSwyNDUxMiwyNDUxMywyNDUxNCwyNDUxOSwyNDUyMCwyNDUyMiwyNDUyMywyNDUyNiwyNDUzMSwyNDUzMiwyNDUzMywyNDUzOCwyNDUzOSwyNDU0MCwyNDU0MiwyNDU0MywyNDU0NiwyNDU0NywyNDU0OSwyNDU1MCwyNDU1MiwyNDU1MywyNDU1NiwyNDU1OSwyNDU2MCwyNDU2MiwyNDU2MywyNDU2NCwyNDU2NiwyNDU2NywyNDU2OSwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NCwyNDU4NSwyNDU4NywyNDU4OCwyNDU5MiwyNDU5MywyNDU5NSwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNiwyNDYwNywyNDYxMCwyNDYxMSwyNDYxMiwyNDYyMCwyNDYyMSwyNDYyMiwyNDYyNCwyNDYyNSwyNDYyNiwyNDYyNywyNDYyOCwyNDYzMCwyNDYzMSwyNDYzMiwyNDYzMywyNDYzNCwyNDYzNywyNDYzOCwyNDY0MCwyNDY0NCwyNDY0NSwyNDY0NiwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MCwyNDY1MiwyNDY1NCwyNDY1NSwyNDY1NywyNDY1OSwyNDY2MCwyNDY2MiwyNDY2MywyNDY2NCwyNDY2NywyNDY2OCwyNDY3MCwyNDY3MSwyNDY3MiwyNDY3MywyNDY3NywyNDY3OCwyNDY4NiwyNDY4OSwyNDY5MCwyNDY5MiwyNDY5MywyNDY5NSwyNDcwMiwyNDcwNCwyNDcwNSwyNDcwNiwyNDcwOSwyNDcxMCwyNDcxMSwyNDcxMiwyNDcxNCwyNDcxNSwyNDcxOCwyNDcxOSwyNDcyMCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyNywyNDcyOCwyNDcyOSwyNDczMiwyNDczNCwyNDczNywyNDczOCwyNDc0MCwyNDc0MSwyNDc0MywyNDc0NSwyNDc0NiwyNDc1MCwyNDc1MiwyNDc1NSwyNDc1NywyNDc1OCwyNDc1OSwyNDc2MSwyNDc2MiwyNDc2NSwyNDc2NiwyNDc2NywyNDc2OCwyNDc2OSwyNDc3MCwyNDc3MSwyNDc3MiwyNDc3NSwyNDc3NiwyNDc3NywyNDc4MCwyNDc4MSwyNDc4MiwyNDc4MywyNDc4NCwyNDc4NiwyNDc4NywyNDc4OCwyNDc5MCwyNDc5MSwyNDc5MywyNDc5NSwyNDc5OCwyNDgwMSwyNDgwMiwyNDgwMywyNDgwNCwyNDgwNSwyNDgxMCwyNDgxNywyNDgxOCwyNDgyMSwyNDgyMywyNDgyNCwyNDgyNywyNDgyOCwyNDgyOSwyNDgzMCwyNDgzMSwyNDgzNCwyNDgzNSwyNDgzNiwyNDgzNywyNDgzOSwyNDg0MiwyNDg0MywyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NiwyNDg1NywyNDg1OSwyNDg2MCwyNDg2MSwyNDg2MiwyNDg2NSwyNDg2NiwyNDg2OSwyNDg3MiwyNDg3MywyNDg3NCwyNDg3NiwyNDg3NywyNDg3OCwyNDg3OSwyNDg4MCwyNDg4MSwyNDg4MiwyNDg4MywyNDg4NCwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OCwyNDg4OSwyNDg5MCwyNDg5MSwyNDg5MiwyNDg5MywyNDg5NCwyNDg5NiwyNDg5NywyNDg5OCwyNDg5OSwyNDkwMCwyNDkwMSwyNDkwMiwyNDkwMywyNDkwNSwyNDkwNywyNDkwOSwyNDkxMSwyNDkxMiwyNDkxNCwyNDkxNSwyNDkxNiwyNDkxOCwyNDkxOSwyNDkyMCwyNDkyMSwyNDkyMiwyNDkyMywyNDkyNCwyNDkyNiwyNDkyNywyNDkyOCwyNDkyOSwyNDkzMSwyNDkzMiwyNDkzMywyNDkzNCwyNDkzNywyNDkzOCwyNDkzOSwyNDk0MCwyNDk0MSwyNDk0MiwyNDk0MywyNDk0NSwyNDk0NiwyNDk0NywyNDk0OCwyNDk1MCwyNDk1MiwyNDk1MywyNDk1NCwyNDk1NSwyNDk1NiwyNDk1NywyNDk1OCwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MiwyNDk2MywyNDk2NCwyNDk2NSwyNDk2NiwyNDk2NywyNDk2OCwyNDk2OSwyNDk3MCwyNDk3MiwyNDk3MywyNDk3NSwyNDk3NiwyNDk3NywyNDk3OCwyNDk3OSwyNDk4MSwyNDk4MiwyNDk4MywyNDk4NCwyNDk4NSwyNDk4NiwyNDk4NywyNDk4OCwyNDk5MCwyNDk5MSwyNDk5MiwyNDk5MywyNDk5NCwyNDk5NSwyNDk5NiwyNDk5NywyNDk5OCwyNTAwMiwyNTAwMywyNTAwNSwyNTAwNiwyNTAwNywyNTAwOCwyNTAwOSwyNTAxMCwyNTAxMSwyNTAxMiwyNTAxMywyNTAxNCwyNTAxNiwyNTAxNywyNTAxOCwyNTAxOSwyNTAyMCwyNTAyMSwyNTAyMywyNTAyNCwyNTAyNSwyNTAyNywyNTAyOCwyNTAyOSwyNTAzMCwyNTAzMSwyNTAzMywyNTAzNiwyNTAzNywyNTAzOCwyNTAzOSwyNTA0MCwyNTA0MywyNTA0NSwyNTA0NiwyNTA0NywyNTA0OCwyNTA0OSwyNTA1MCwyNTA1MSwyNTA1MiwyNTA1MywyNTA1NCwyNTA1NSwyNTA1NiwyNTA1NywyNTA1OCwyNTA1OSwyNTA2MCwyNTA2MSwyNTA2MywyNTA2NCwyNTA2NSwyNTA2NiwyNTA2NywyNTA2OCwyNTA2OSwyNTA3MCwyNTA3MSwyNTA3MiwyNTA3MywyNTA3NCwyNTA3NSwyNTA3NiwyNTA3OCwyNTA3OSwyNTA4MCwyNTA4MSwyNTA4MiwyNTA4MywyNTA4NCwyNTA4NSwyNTA4NiwyNTA4OCwyNTA4OSwyNTA5MCwyNTA5MSwyNTA5MiwyNTA5MywyNTA5NSwyNTA5NywyNTEwNywyNTEwOCwyNTExMywyNTExNiwyNTExNywyNTExOCwyNTEyMCwyNTEyMywyNTEyNiwyNTEyNywyNTEyOCwyNTEyOSwyNTEzMSwyNTEzMywyNTEzNSwyNTEzNiwyNTEzNywyNTEzOCwyNTE0MSwyNTE0MiwyNTE0NCwyNTE0NSwyNTE0NiwyNTE0NywyNTE0OCwyNTE1NCwyNTE1NiwyNTE1NywyNTE1OCwyNTE2MiwyNTE2NywyNTE2OCwyNTE3MywyNTE3NCwyNTE3NSwyNTE3NywyNTE3OCwyNTE4MCwyNTE4MSwyNTE4MiwyNTE4MywyNTE4NCwyNTE4NSwyNTE4NiwyNTE4OCwyNTE4OSwyNTE5MiwyNTIwMSwyNTIwMiwyNTIwNCwyNTIwNSwyNTIwNywyNTIwOCwyNTIxMCwyNTIxMSwyNTIxMywyNTIxNywyNTIxOCwyNTIxOSwyNTIyMSwyNTIyMiwyNTIyMywyNTIyNCwyNTIyNywyNTIyOCwyNTIyOSwyNTIzMCwyNTIzMSwyNTIzMiwyNTIzNiwyNTI0MSwyNTI0NCwyNTI0NSwyNTI0NiwyNTI1MSwyNTI1NCwyNTI1NSwyNTI1NywyNTI1OCwyNTI2MSwyNTI2MiwyNTI2MywyNTI2NCwyNTI2NiwyNTI2NywyNTI2OCwyNTI3MCwyNTI3MSwyNTI3MiwyNTI3NCwyNTI3OCwyNTI4MCwyNTI4MSwyNTI4MywyNTI5MSwyNTI5NSwyNTI5NywyNTMwMSwyNTMwOSwyNTMxMCwyNTMxMiwyNTMxMywyNTMxNiwyNTMyMiwyNTMyMywyNTMyOCwyNTMzMCwyNTMzMywyNTMzNiwyNTMzNywyNTMzOCwyNTMzOSwyNTM0NCwyNTM0NywyNTM0OCwyNTM0OSwyNTM1MCwyNTM1NCwyNTM1NSwyNTM1NiwyNTM1NywyNTM1OSwyNTM2MCwyNTM2MiwyNTM2MywyNTM2NCwyNTM2NSwyNTM2NywyNTM2OCwyNTM2OSwyNTM3MiwyNTM4MiwyNTM4MywyNTM4NSwyNTM4OCwyNTM4OSwyNTM5MCwyNTM5MiwyNTM5MywyNTM5NSwyNTM5NiwyNTM5NywyNTM5OCwyNTM5OSwyNTQwMCwyNTQwMywyNTQwNCwyNTQwNiwyNTQwNywyNTQwOCwyNTQwOSwyNTQxMiwyNTQxNSwyNTQxNiwyNTQxOCwyNTQyNSwyNTQyNiwyNTQyNywyNTQyOCwyNTQzMCwyNTQzMSwyNTQzMiwyNTQzMywyNTQzNCwyNTQzNSwyNTQzNiwyNTQzNywyNTQ0MCwyNTQ0NCwyNTQ0NSwyNTQ0NiwyNTQ0OCwyNTQ1MCwyNTQ1MSwyNTQ1MiwyNTQ1NSwyNTQ1NiwyNTQ1OCwyNTQ1OSwyNTQ2MCwyNTQ2MSwyNTQ2NCwyNTQ2NSwyNTQ2OCwyNTQ2OSwyNTQ3MCwyNTQ3MSwyNTQ3MywyNTQ3NSwyNTQ3NiwyNTQ3NywyNTQ3OCwyNTQ4MywyNTQ4NSwyNTQ4OSwyNTQ5MSwyNTQ5MiwyNTQ5MywyNTQ5NSwyNTQ5NywyNTQ5OCwyNTQ5OSwyNTUwMCwyNTUwMSwyNTUwMiwyNTUwMywyNTUwNSwyNTUwOCwyNTUxMCwyNTUxNSwyNTUxOSwyNTUyMSwyNTUyMiwyNTUyNSwyNTUyNiwyNTUyOSwyNTUzMSwyNTUzMywyNTUzNSwyNTUzNiwyNTUzNywyNTUzOCwyNTUzOSwyNTU0MSwyNTU0MywyNTU0NCwyNTU0NiwyNTU0NywyNTU0OCwyNTU1MywyNTU1NSwyNTU1NiwyNTU1NywyNTU1OSwyNTU2MCwyNTU2MSwyNTU2MiwyNTU2MywyNTU2NCwyNTU2NSwyNTU2NywyNTU3MCwyNTU3MiwyNTU3MywyNTU3NCwyNTU3NSwyNTU3NiwyNTU3OSwyNTU4MCwyNTU4MiwyNTU4MywyNTU4NCwyNTU4NSwyNTU4NywyNTU4OSwyNTU5MSwyNTU5MywyNTU5NCwyNTU5NSwyNTU5NiwyNTU5OCwyNTYwMywyNTYwNCwyNTYwNiwyNTYwNywyNTYwOCwyNTYwOSwyNTYxMCwyNTYxMywyNTYxNCwyNTYxNywyNTYxOCwyNTYyMSwyNTYyMiwyNTYyMywyNTYyNCwyNTYyNSwyNTYyNiwyNTYyOSwyNTYzMSwyNTYzNCwyNTYzNSwyNTYzNiwyNTYzNywyNTYzOSwyNTY0MCwyNTY0MSwyNTY0MywyNTY0NiwyNTY0NywyNTY0OCwyNTY0OSwyNTY1MCwyNTY1MSwyNTY1MywyNTY1NCwyNTY1NSwyNTY1NiwyNTY1NywyNTY1OSwyNTY2MCwyNTY2MiwyNTY2NCwyNTY2NiwyNTY2NywyNTY3MywyNTY3NSwyNTY3NiwyNTY3NywyNTY3OCwyNTY3OSwyNTY4MCwyNTY4MSwyNTY4MywyNTY4NSwyNTY4NiwyNTY4NywyNTY4OSwyNTY5MCwyNTY5MSwyNTY5MiwyNTY5MywyNTY5NSwyNTY5NiwyNTY5NywyNTY5OCwyNTY5OSwyNTcwMCwyNTcwMSwyNTcwMiwyNTcwNCwyNTcwNiwyNTcwNywyNTcwOCwyNTcxMCwyNTcxMSwyNTcxMiwyNTcxMywyNTcxNCwyNTcxNSwyNTcxNiwyNTcxNywyNTcxOCwyNTcxOSwyNTcyMywyNTcyNCwyNTcyNSwyNTcyNiwyNTcyNywyNTcyOCwyNTcyOSwyNTczMSwyNTczNCwyNTczNiwyNTczNywyNTczOCwyNTczOSwyNTc0MCwyNTc0MSwyNTc0MiwyNTc0MywyNTc0NCwyNTc0NywyNTc0OCwyNTc1MSwyNTc1MiwyNTc1NCwyNTc1NSwyNTc1NiwyNTc1NywyNTc1OSwyNTc2MCwyNTc2MSwyNTc2MiwyNTc2MywyNTc2NSwyNTc2NiwyNTc2NywyNTc2OCwyNTc3MCwyNTc3MSwyNTc3NSwyNTc3NywyNTc3OCwyNTc3OSwyNTc4MCwyNTc4MiwyNTc4NSwyNTc4NywyNTc4OSwyNTc5MCwyNTc5MSwyNTc5MywyNTc5NSwyNTc5NiwyNTc5OCwyNTc5OSwyNTgwMCwyNTgwMSwyNTgwMiwyNTgwMywyNTgwNCwyNTgwNywyNTgwOSwyNTgxMSwyNTgxMiwyNTgxMywyNTgxNCwyNTgxNywyNTgxOCwyNTgxOSwyNTgyMCwyNTgyMSwyNTgyMywyNTgyNCwyNTgyNSwyNTgyNywyNTgyOSwyNTgzMSwyNTgzMiwyNTgzMywyNTgzNCwyNTgzNSwyNTgzNiwyNTgzNywyNTgzOCwyNTgzOSwyNTg0MCwyNTg0MSwyNTg0MiwyNTg0MywyNTg0NCwyNTg0NSwyNTg0NiwyNTg0NywyNTg0OCwyNTg0OSwyNTg1MCwyNTg1MSwyNTg1MiwyNTg1MywyNTg1NCwyNTg1NSwyNTg1NywyNTg1OCwyNTg1OSwyNTg2MCwyNTg2MSwyNTg2MiwyNTg2MywyNTg2NCwyNTg2NiwyNTg2NywyNTg2OCwyNTg2OSwyNTg3MCwyNTg3MSwyNTg3MiwyNTg3MywyNTg3NSwyNTg3NiwyNTg3NywyNTg3OCwyNTg3OSwyNTg4MSwyNTg4MiwyNTg4MywyNTg4NCwyNTg4NSwyNTg4NiwyNTg4NywyNTg4OCwyNTg4OSwyNTg5MCwyNTg5MSwyNTg5MiwyNTg5NCwyNTg5NSwyNTg5NiwyNTg5NywyNTg5OCwyNTkwMCwyNTkwMSwyNTkwNCwyNTkwNSwyNTkwNiwyNTkwNywyNTkxMSwyNTkxNCwyNTkxNiwyNTkxNywyNTkyMCwyNTkyMSwyNTkyMiwyNTkyMywyNTkyNCwyNTkyNiwyNTkyNywyNTkzMCwyNTkzMSwyNTkzMywyNTkzNCwyNTkzNiwyNTkzOCwyNTkzOSwyNTk0MCwyNTk0MywyNTk0NCwyNTk0NiwyNTk0OCwyNTk1MSwyNTk1MiwyNTk1MywyNTk1NiwyNTk1NywyNTk1OSwyNTk2MCwyNTk2MSwyNTk2MiwyNTk2NSwyNTk2NiwyNTk2NywyNTk2OSwyNTk3MSwyNTk3MywyNTk3NCwyNTk3NiwyNTk3NywyNTk3OCwyNTk3OSwyNTk4MCwyNTk4MSwyNTk4MiwyNTk4MywyNTk4NCwyNTk4NSwyNTk4NiwyNTk4NywyNTk4OCwyNTk4OSwyNTk5MCwyNTk5MiwyNTk5MywyNTk5NCwyNTk5NywyNTk5OCwyNTk5OSwyNjAwMiwyNjAwNCwyNjAwNSwyNjAwNiwyNjAwOCwyNjAxMCwyNjAxMywyNjAxNCwyNjAxNiwyNjAxOCwyNjAxOSwyNjAyMiwyNjAyNCwyNjAyNiwyNjAyOCwyNjAzMCwyNjAzMywyNjAzNCwyNjAzNSwyNjAzNiwyNjAzNywyNjAzOCwyNjAzOSwyNjA0MCwyNjA0MiwyNjA0MywyNjA0NiwyNjA0NywyNjA0OCwyNjA1MCwyNjA1NSwyNjA1NiwyNjA1NywyNjA1OCwyNjA2MSwyNjA2NCwyNjA2NSwyNjA2NywyNjA2OCwyNjA2OSwyNjA3MiwyNjA3MywyNjA3NCwyNjA3NSwyNjA3NiwyNjA3NywyNjA3OCwyNjA3OSwyNjA4MSwyNjA4MywyNjA4NCwyNjA5MCwyNjA5MSwyNjA5OCwyNjA5OSwyNjEwMCwyNjEwMSwyNjEwNCwyNjEwNSwyNjEwNywyNjEwOCwyNjEwOSwyNjExMCwyNjExMSwyNjExMywyNjExNiwyNjExNywyNjExOSwyNjEyMCwyNjEyMSwyNjEyMywyNjEyNSwyNjEyOCwyNjEyOSwyNjEzMCwyNjEzNCwyNjEzNSwyNjEzNiwyNjEzOCwyNjEzOSwyNjE0MCwyNjE0MiwyNjE0NSwyNjE0NiwyNjE0NywyNjE0OCwyNjE1MCwyNjE1MywyNjE1NCwyNjE1NSwyNjE1NiwyNjE1OCwyNjE2MCwyNjE2MiwyNjE2MywyNjE2NywyNjE2OCwyNjE2OSwyNjE3MCwyNjE3MSwyNjE3MywyNjE3NSwyNjE3NiwyNjE3OCwyNjE4MCwyNjE4MSwyNjE4MiwyNjE4MywyNjE4NCwyNjE4NSwyNjE4NiwyNjE4OSwyNjE5MCwyNjE5MiwyNjE5MywyNjIwMCwyNjIwMSwyNjIwMywyNjIwNCwyNjIwNSwyNjIwNiwyNjIwOCwyNjIxMCwyNjIxMSwyNjIxMywyNjIxNSwyNjIxNywyNjIxOCwyNjIxOSwyNjIyMCwyNjIyMSwyNjIyNSwyNjIyNiwyNjIyNywyNjIyOSwyNjIzMiwyNjIzMywyNjIzNSwyNjIzNiwyNjIzNywyNjIzOSwyNjI0MCwyNjI0MSwyNjI0MywyNjI0NSwyNjI0NiwyNjI0OCwyNjI0OSwyNjI1MCwyNjI1MSwyNjI1MywyNjI1NCwyNjI1NSwyNjI1NiwyNjI1OCwyNjI1OSwyNjI2MCwyNjI2MSwyNjI2NCwyNjI2NSwyNjI2NiwyNjI2NywyNjI2OCwyNjI3MCwyNjI3MSwyNjI3MiwyNjI3MywyNjI3NCwyNjI3NSwyNjI3NiwyNjI3NywyNjI3OCwyNjI4MSwyNjI4MiwyNjI4MywyNjI4NCwyNjI4NSwyNjI4NywyNjI4OCwyNjI4OSwyNjI5MCwyNjI5MSwyNjI5MywyNjI5NCwyNjI5NSwyNjI5NiwyNjI5OCwyNjI5OSwyNjMwMCwyNjMwMSwyNjMwMywyNjMwNCwyNjMwNSwyNjMwNiwyNjMwNywyNjMwOCwyNjMwOSwyNjMxMCwyNjMxMSwyNjMxMiwyNjMxMywyNjMxNCwyNjMxNSwyNjMxNiwyNjMxNywyNjMxOCwyNjMxOSwyNjMyMCwyNjMyMSwyNjMyMiwyNjMyMywyNjMyNCwyNjMyNSwyNjMyNiwyNjMyNywyNjMyOCwyNjMzMCwyNjMzNCwyNjMzNSwyNjMzNiwyNjMzNywyNjMzOCwyNjMzOSwyNjM0MCwyNjM0MSwyNjM0MywyNjM0NCwyNjM0NiwyNjM0NywyNjM0OCwyNjM0OSwyNjM1MCwyNjM1MSwyNjM1MywyNjM1NywyNjM1OCwyNjM2MCwyNjM2MiwyNjM2MywyNjM2NSwyNjM2OSwyNjM3MCwyNjM3MSwyNjM3MiwyNjM3MywyNjM3NCwyNjM3NSwyNjM4MCwyNjM4MiwyNjM4MywyNjM4NSwyNjM4NiwyNjM4NywyNjM5MCwyNjM5MiwyNjM5MywyNjM5NCwyNjM5NiwyNjM5OCwyNjQwMCwyNjQwMSwyNjQwMiwyNjQwMywyNjQwNCwyNjQwNSwyNjQwNywyNjQwOSwyNjQxNCwyNjQxNiwyNjQxOCwyNjQxOSwyNjQyMiwyNjQyMywyNjQyNCwyNjQyNSwyNjQyNywyNjQyOCwyNjQzMCwyNjQzMSwyNjQzMywyNjQzNiwyNjQzNywyNjQzOSwyNjQ0MiwyNjQ0MywyNjQ0NSwyNjQ1MCwyNjQ1MiwyNjQ1MywyNjQ1NSwyNjQ1NiwyNjQ1NywyNjQ1OCwyNjQ1OSwyNjQ2MSwyNjQ2NiwyNjQ2NywyNjQ2OCwyNjQ3MCwyNjQ3MSwyNjQ3NSwyNjQ3NiwyNjQ3OCwyNjQ4MSwyNjQ4NCwyNjQ4NiwyNjQ4OCwyNjQ4OSwyNjQ5MCwyNjQ5MSwyNjQ5MywyNjQ5NiwyNjQ5OCwyNjQ5OSwyNjUwMSwyNjUwMiwyNjUwNCwyNjUwNiwyNjUwOCwyNjUwOSwyNjUxMCwyNjUxMSwyNjUxMywyNjUxNCwyNjUxNSwyNjUxNiwyNjUxOCwyNjUyMSwyNjUyMywyNjUyNywyNjUyOCwyNjUyOSwyNjUzMiwyNjUzNCwyNjUzNywyNjU0MCwyNjU0MiwyNjU0NSwyNjU0NiwyNjU0OCwyNjU1MywyNjU1NCwyNjU1NSwyNjU1NiwyNjU1NywyNjU1OCwyNjU1OSwyNjU2MCwyNjU2MiwyNjU2NSwyNjU2NiwyNjU2NywyNjU2OCwyNjU2OSwyNjU3MCwyNjU3MSwyNjU3MiwyNjU3MywyNjU3NCwyNjU4MSwyNjU4MiwyNjU4MywyNjU4NywyNjU5MSwyNjU5MywyNjU5NSwyNjU5NiwyNjU5OCwyNjU5OSwyNjYwMCwyNjYwMiwyNjYwMywyNjYwNSwyNjYwNiwyNjYxMCwyNjYxMywyNjYxNCwyNjYxNSwyNjYxNiwyNjYxNywyNjYxOCwyNjYxOSwyNjYyMCwyNjYyMiwyNjYyNSwyNjYyNiwyNjYyNywyNjYyOCwyNjYzMCwyNjYzNywyNjY0MCwyNjY0MiwyNjY0NCwyNjY0NSwyNjY0OCwyNjY0OSwyNjY1MCwyNjY1MSwyNjY1MiwyNjY1NCwyNjY1NSwyNjY1NiwyNjY1OCwyNjY1OSwyNjY2MCwyNjY2MSwyNjY2MiwyNjY2MywyNjY2NCwyNjY2NywyNjY2OCwyNjY2OSwyNjY3MCwyNjY3MSwyNjY3MiwyNjY3MywyNjY3NiwyNjY3NywyNjY3OCwyNjY4MiwyNjY4MywyNjY4NywyNjY5NSwyNjY5OSwyNjcwMSwyNjcwMywyNjcwNiwyNjcxMCwyNjcxMSwyNjcxMiwyNjcxMywyNjcxNCwyNjcxNSwyNjcxNiwyNjcxNywyNjcxOCwyNjcxOSwyNjczMCwyNjczMiwyNjczMywyNjczNCwyNjczNSwyNjczNiwyNjczNywyNjczOCwyNjczOSwyNjc0MSwyNjc0NCwyNjc0NSwyNjc0NiwyNjc0NywyNjc0OCwyNjc0OSwyNjc1MCwyNjc1MSwyNjc1MiwyNjc1NCwyNjc1NiwyNjc1OSwyNjc2MCwyNjc2MSwyNjc2MiwyNjc2MywyNjc2NCwyNjc2NSwyNjc2NiwyNjc2OCwyNjc2OSwyNjc3MCwyNjc3MiwyNjc3MywyNjc3NCwyNjc3NiwyNjc3NywyNjc3OCwyNjc3OSwyNjc4MCwyNjc4MSwyNjc4MiwyNjc4MywyNjc4NCwyNjc4NSwyNjc4NywyNjc4OCwyNjc4OSwyNjc5MywyNjc5NCwyNjc5NSwyNjc5NiwyNjc5OCwyNjgwMSwyNjgwMiwyNjgwNCwyNjgwNiwyNjgwNywyNjgwOCwyNjgwOSwyNjgxMCwyNjgxMSwyNjgxMiwyNjgxMywyNjgxNCwyNjgxNSwyNjgxNywyNjgxOSwyNjgyMCwyNjgyMSwyNjgyMiwyNjgyMywyNjgyNCwyNjgyNiwyNjgyOCwyNjgzMCwyNjgzMSwyNjgzMiwyNjgzMywyNjgzNSwyNjgzNiwyNjgzOCwyNjgzOSwyNjg0MSwyNjg0MywyNjg0NCwyNjg0NSwyNjg0NiwyNjg0NywyNjg0OSwyNjg1MCwyNjg1MiwyNjg1MywyNjg1NCwyNjg1NSwyNjg1NiwyNjg1NywyNjg1OCwyNjg1OSwyNjg2MCwyNjg2MSwyNjg2MywyNjg2NiwyNjg2NywyNjg2OCwyNjg3MCwyNjg3MSwyNjg3MiwyNjg3NSwyNjg3NywyNjg3OCwyNjg3OSwyNjg4MCwyNjg4MiwyNjg4MywyNjg4NCwyNjg4NiwyNjg4NywyNjg4OCwyNjg4OSwyNjg5MCwyNjg5MiwyNjg5NSwyNjg5NywyNjg5OSwyNjkwMCwyNjkwMSwyNjkwMiwyNjkwMywyNjkwNCwyNjkwNSwyNjkwNiwyNjkwNywyNjkwOCwyNjkwOSwyNjkxMCwyNjkxMywyNjkxNCwyNjkxNSwyNjkxNywyNjkxOCwyNjkxOSwyNjkyMCwyNjkyMSwyNjkyMiwyNjkyMywyNjkyNCwyNjkyNiwyNjkyNywyNjkyOSwyNjkzMCwyNjkzMSwyNjkzMywyNjkzNCwyNjkzNSwyNjkzNiwyNjkzOCwyNjkzOSwyNjk0MCwyNjk0MiwyNjk0NCwyNjk0NSwyNjk0NywyNjk0OCwyNjk0OSwyNjk1MCwyNjk1MSwyNjk1MiwyNjk1MywyNjk1NCwyNjk1NSwyNjk1NiwyNjk1NywyNjk1OCwyNjk1OSwyNjk2MCwyNjk2MSwyNjk2MiwyNjk2MywyNjk2NSwyNjk2NiwyNjk2OCwyNjk2OSwyNjk3MSwyNjk3MiwyNjk3NSwyNjk3NywyNjk3OCwyNjk4MCwyNjk4MSwyNjk4MywyNjk4NCwyNjk4NSwyNjk4NiwyNjk4OCwyNjk4OSwyNjk5MSwyNjk5MiwyNjk5NCwyNjk5NSwyNjk5NiwyNjk5NywyNjk5OCwyNzAwMiwyNzAwMywyNzAwNSwyNzAwNiwyNzAwNywyNzAwOSwyNzAxMSwyNzAxMywyNzAxOCwyNzAxOSwyNzAyMCwyNzAyMiwyNzAyMywyNzAyNCwyNzAyNSwyNzAyNiwyNzAyNywyNzAzMCwyNzAzMSwyNzAzMywyNzAzNCwyNzAzNywyNzAzOCwyNzAzOSwyNzA0MCwyNzA0MSwyNzA0MiwyNzA0MywyNzA0NCwyNzA0NSwyNzA0NiwyNzA0OSwyNzA1MCwyNzA1MiwyNzA1NCwyNzA1NSwyNzA1NiwyNzA1OCwyNzA1OSwyNzA2MSwyNzA2MiwyNzA2NCwyNzA2NSwyNzA2NiwyNzA2OCwyNzA2OSwyNzA3MCwyNzA3MSwyNzA3MiwyNzA3NCwyNzA3NSwyNzA3NiwyNzA3NywyNzA3OCwyNzA3OSwyNzA4MCwyNzA4MSwyNzA4MywyNzA4NSwyNzA4NywyNzA4OSwyNzA5MCwyNzA5MSwyNzA5MywyNzA5NCwyNzA5NSwyNzA5NiwyNzA5NywyNzA5OCwyNzEwMCwyNzEwMSwyNzEwMiwyNzEwNSwyNzEwNiwyNzEwNywyNzEwOCwyNzEwOSwyNzExMCwyNzExMSwyNzExMiwyNzExMywyNzExNCwyNzExNSwyNzExNiwyNzExOCwyNzExOSwyNzEyMCwyNzEyMSwyNzEyMywyNzEyNCwyNzEyNSwyNzEyNiwyNzEyNywyNzEyOCwyNzEyOSwyNzEzMCwyNzEzMSwyNzEzMiwyNzEzNCwyNzEzNiwyNzEzNywyNzEzOCwyNzEzOSwyNzE0MCwyNzE0MSwyNzE0MiwyNzE0MywyNzE0NCwyNzE0NSwyNzE0NywyNzE0OCwyNzE0OSwyNzE1MCwyNzE1MSwyNzE1MiwyNzE1MywyNzE1NCwyNzE1NSwyNzE1NiwyNzE1NywyNzE1OCwyNzE2MSwyNzE2MiwyNzE2MywyNzE2NCwyNzE2NSwyNzE2NiwyNzE2OCwyNzE3MCwyNzE3MSwyNzE3MiwyNzE3MywyNzE3NCwyNzE3NSwyNzE3NywyNzE3OSwyNzE4MCwyNzE4MSwyNzE4MiwyNzE4NCwyNzE4NiwyNzE4NywyNzE4OCwyNzE5MCwyNzE5MSwyNzE5MiwyNzE5MywyNzE5NCwyNzE5NSwyNzE5NiwyNzE5OSwyNzIwMCwyNzIwMSwyNzIwMiwyNzIwMywyNzIwNSwyNzIwNiwyNzIwOCwyNzIwOSwyNzIxMCwyNzIxMSwyNzIxMiwyNzIxMywyNzIxNCwyNzIxNSwyNzIxNywyNzIxOCwyNzIxOSwyNzIyMCwyNzIyMSwyNzIyMiwyNzIyMywyNzIyNiwyNzIyOCwyNzIyOSwyNzIzMCwyNzIzMSwyNzIzMiwyNzIzNCwyNzIzNSwyNzIzNiwyNzIzOCwyNzIzOSwyNzI0MCwyNzI0MSwyNzI0MiwyNzI0MywyNzI0NCwyNzI0NSwyNzI0NiwyNzI0NywyNzI0OCwyNzI1MCwyNzI1MSwyNzI1MiwyNzI1MywyNzI1NCwyNzI1NSwyNzI1NiwyNzI1OCwyNzI1OSwyNzI2MSwyNzI2MiwyNzI2MywyNzI2NSwyNzI2NiwyNzI2NywyNzI2OSwyNzI3MCwyNzI3MSwyNzI3MiwyNzI3MywyNzI3NCwyNzI3NSwyNzI3NiwyNzI3NywyNzI3OSwyNzI4MiwyNzI4MywyNzI4NCwyNzI4NSwyNzI4NiwyNzI4OCwyNzI4OSwyNzI5MCwyNzI5MSwyNzI5MiwyNzI5MywyNzI5NCwyNzI5NSwyNzI5NywyNzI5OCwyNzI5OSwyNzMwMCwyNzMwMSwyNzMwMiwyNzMwMywyNzMwNCwyNzMwNiwyNzMwOSwyNzMxMCwyNzMxMSwyNzMxMiwyNzMxMywyNzMxNCwyNzMxNSwyNzMxNiwyNzMxNywyNzMxOCwyNzMxOSwyNzMyMCwyNzMyMSwyNzMyMiwyNzMyMywyNzMyNCwyNzMyNSwyNzMyNiwyNzMyNywyNzMyOCwyNzMyOSwyNzMzMCwyNzMzMSwyNzMzMiwyNzMzMywyNzMzNCwyNzMzNSwyNzMzNiwyNzMzNywyNzMzOCwyNzMzOSwyNzM0MCwyNzM0MSwyNzM0MiwyNzM0MywyNzM0NCwyNzM0NSwyNzM0NiwyNzM0NywyNzM0OCwyNzM0OSwyNzM1MCwyNzM1MSwyNzM1MiwyNzM1MywyNzM1NCwyNzM1NSwyNzM1NiwyNzM1NywyNzM1OCwyNzM1OSwyNzM2MCwyNzM2MSwyNzM2MiwyNzM2MywyNzM2NCwyNzM2NSwyNzM2NiwyNzM2NywyNzM2OCwyNzM2OSwyNzM3MCwyNzM3MSwyNzM3MiwyNzM3MywyNzM3NCwyNzM3NSwyNzM3NiwyNzM3NywyNzM3OCwyNzM3OSwyNzM4MCwyNzM4MSwyNzM4MiwyNzM4MywyNzM4NCwyNzM4NSwyNzM4NiwyNzM4NywyNzM4OCwyNzM4OSwyNzM5MCwyNzM5MSwyNzM5MiwyNzM5MywyNzM5NCwyNzM5NSwyNzM5NiwyNzM5NywyNzM5OCwyNzM5OSwyNzQwMCwyNzQwMSwyNzQwMiwyNzQwMywyNzQwNCwyNzQwNSwyNzQwNiwyNzQwNywyNzQwOCwyNzQwOSwyNzQxMCwyNzQxMSwyNzQxMiwyNzQxMywyNzQxNCwyNzQxNSwyNzQxNiwyNzQxNywyNzQxOCwyNzQxOSwyNzQyMCwyNzQyMSwyNzQyMiwyNzQyMywyNzQyOSwyNzQzMCwyNzQzMiwyNzQzMywyNzQzNCwyNzQzNSwyNzQzNiwyNzQzNywyNzQzOCwyNzQzOSwyNzQ0MCwyNzQ0MSwyNzQ0MywyNzQ0NCwyNzQ0NSwyNzQ0NiwyNzQ0OCwyNzQ1MSwyNzQ1MiwyNzQ1MywyNzQ1NSwyNzQ1NiwyNzQ1NywyNzQ1OCwyNzQ2MCwyNzQ2MSwyNzQ2NCwyNzQ2NiwyNzQ2NywyNzQ2OSwyNzQ3MCwyNzQ3MSwyNzQ3MiwyNzQ3MywyNzQ3NCwyNzQ3NSwyNzQ3NiwyNzQ3NywyNzQ3OCwyNzQ3OSwyNzQ4MCwyNzQ4MiwyNzQ4MywyNzQ4NCwyNzQ4NSwyNzQ4NiwyNzQ4NywyNzQ4OCwyNzQ4OSwyNzQ5NiwyNzQ5NywyNzQ5OSwyNzUwMCwyNzUwMSwyNzUwMiwyNzUwMywyNzUwNCwyNzUwNSwyNzUwNiwyNzUwNywyNzUwOCwyNzUwOSwyNzUxMCwyNzUxMSwyNzUxMiwyNzUxNCwyNzUxNywyNzUxOCwyNzUxOSwyNzUyMCwyNzUyNSwyNzUyOCwyNzUzMiwyNzUzNCwyNzUzNSwyNzUzNiwyNzUzNywyNzU0MCwyNzU0MSwyNzU0MywyNzU0NCwyNzU0NSwyNzU0OCwyNzU0OSwyNzU1MCwyNzU1MSwyNzU1MiwyNzU1NCwyNzU1NSwyNzU1NiwyNzU1NywyNzU1OCwyNzU1OSwyNzU2MCwyNzU2MSwyNzU2MywyNzU2NCwyNzU2NSwyNzU2NiwyNzU2NywyNzU2OCwyNzU2OSwyNzU3MCwyNzU3NCwyNzU3NiwyNzU3NywyNzU3OCwyNzU3OSwyNzU4MCwyNzU4MSwyNzU4MiwyNzU4NCwyNzU4NywyNzU4OCwyNzU5MCwyNzU5MSwyNzU5MiwyNzU5MywyNzU5NCwyNzU5NiwyNzU5OCwyNzYwMCwyNzYwMSwyNzYwOCwyNzYxMCwyNzYxMiwyNzYxMywyNzYxNCwyNzYxNSwyNzYxNiwyNzYxOCwyNzYxOSwyNzYyMCwyNzYyMSwyNzYyMiwyNzYyMywyNzYyNCwyNzYyNSwyNzYyOCwyNzYyOSwyNzYzMCwyNzYzMiwyNzYzMywyNzYzNCwyNzYzNiwyNzYzOCwyNzYzOSwyNzY0MCwyNzY0MiwyNzY0MywyNzY0NCwyNzY0NiwyNzY0NywyNzY0OCwyNzY0OSwyNzY1MCwyNzY1MSwyNzY1MiwyNzY1NiwyNzY1NywyNzY1OCwyNzY1OSwyNzY2MCwyNzY2MiwyNzY2NiwyNzY3MSwyNzY3NiwyNzY3NywyNzY3OCwyNzY4MCwyNzY4MywyNzY4NSwyNzY5MSwyNzY5MiwyNzY5MywyNzY5NywyNzY5OSwyNzcwMiwyNzcwMywyNzcwNSwyNzcwNiwyNzcwNywyNzcwOCwyNzcxMCwyNzcxMSwyNzcxNSwyNzcxNiwyNzcxNywyNzcyMCwyNzcyMywyNzcyNCwyNzcyNSwyNzcyNiwyNzcyNywyNzcyOSwyNzczMCwyNzczMSwyNzczNCwyNzczNiwyNzczNywyNzczOCwyNzc0NiwyNzc0NywyNzc0OSwyNzc1MCwyNzc1MSwyNzc1NSwyNzc1NiwyNzc1NywyNzc1OCwyNzc1OSwyNzc2MSwyNzc2MywyNzc2NSwyNzc2NywyNzc2OCwyNzc3MCwyNzc3MSwyNzc3MiwyNzc3NSwyNzc3NiwyNzc4MCwyNzc4MywyNzc4NiwyNzc4NywyNzc4OSwyNzc5MCwyNzc5MywyNzc5NCwyNzc5NywyNzc5OCwyNzc5OSwyNzgwMCwyNzgwMiwyNzgwNCwyNzgwNSwyNzgwNiwyNzgwOCwyNzgxMCwyNzgxNiwyNzgyMCwyNzgyMywyNzgyNCwyNzgyOCwyNzgyOSwyNzgzMCwyNzgzMSwyNzgzNCwyNzg0MCwyNzg0MSwyNzg0MiwyNzg0MywyNzg0NiwyNzg0NywyNzg0OCwyNzg1MSwyNzg1MywyNzg1NCwyNzg1NSwyNzg1NywyNzg1OCwyNzg2NCwyNzg2NSwyNzg2NiwyNzg2OCwyNzg2OSwyNzg3MSwyNzg3NiwyNzg3OCwyNzg3OSwyNzg4MSwyNzg4NCwyNzg4NSwyNzg5MCwyNzg5MiwyNzg5NywyNzkwMywyNzkwNCwyNzkwNiwyNzkwNywyNzkwOSwyNzkxMCwyNzkxMiwyNzkxMywyNzkxNCwyNzkxNywyNzkxOSwyNzkyMCwyNzkyMSwyNzkyMywyNzkyNCwyNzkyNSwyNzkyNiwyNzkyOCwyNzkzMiwyNzkzMywyNzkzNSwyNzkzNiwyNzkzNywyNzkzOCwyNzkzOSwyNzk0MCwyNzk0MiwyNzk0NCwyNzk0NSwyNzk0OCwyNzk0OSwyNzk1MSwyNzk1MiwyNzk1NiwyNzk1OCwyNzk1OSwyNzk2MCwyNzk2MiwyNzk2NywyNzk2OCwyNzk3MCwyNzk3MiwyNzk3NywyNzk4MCwyNzk4NCwyNzk4OSwyNzk5MCwyNzk5MSwyNzk5MiwyNzk5NSwyNzk5NywyNzk5OSwyODAwMSwyODAwMiwyODAwNCwyODAwNSwyODAwNywyODAwOCwyODAxMSwyODAxMiwyODAxMywyODAxNiwyODAxNywyODAxOCwyODAxOSwyODAyMSwyODAyMiwyODAyNSwyODAyNiwyODAyNywyODAyOSwyODAzMCwyODAzMSwyODAzMiwyODAzMywyODAzNSwyODAzNiwyODAzOCwyODAzOSwyODA0MiwyODA0MywyODA0NSwyODA0NywyODA0OCwyODA1MCwyODA1NCwyODA1NSwyODA1NiwyODA1NywyODA1OCwyODA2MCwyODA2NiwyODA2OSwyODA3NiwyODA3NywyODA4MCwyODA4MSwyODA4MywyODA4NCwyODA4NiwyODA4NywyODA4OSwyODA5MCwyODA5MSwyODA5MiwyODA5MywyODA5NCwyODA5NywyODA5OCwyODA5OSwyODEwNCwyODEwNSwyODEwNiwyODEwOSwyODExMCwyODExMSwyODExMiwyODExNCwyODExNSwyODExNiwyODExNywyODExOSwyODEyMiwyODEyMywyODEyNCwyODEyNywyODEzMCwyODEzMSwyODEzMywyODEzNSwyODEzNiwyODEzNywyODEzOCwyODE0MSwyODE0MywyODE0NCwyODE0NiwyODE0OCwyODE0OSwyODE1MCwyODE1MiwyODE1NCwyODE1NywyODE1OCwyODE1OSwyODE2MCwyODE2MSwyODE2MiwyODE2MywyODE2NCwyODE2NiwyODE2NywyODE2OCwyODE2OSwyODE3MSwyODE3NSwyODE3OCwyODE3OSwyODE4MSwyODE4NCwyODE4NSwyODE4NywyODE4OCwyODE5MCwyODE5MSwyODE5NCwyODE5OCwyODE5OSwyODIwMCwyODIwMiwyODIwNCwyODIwNiwyODIwOCwyODIwOSwyODIxMSwyODIxMywyODIxNCwyODIxNSwyODIxNywyODIxOSwyODIyMCwyODIyMSwyODIyMiwyODIyMywyODIyNCwyODIyNSwyODIyNiwyODIyOSwyODIzMCwyODIzMSwyODIzMiwyODIzMywyODIzNCwyODIzNSwyODIzNiwyODIzOSwyODI0MCwyODI0MSwyODI0MiwyODI0NSwyODI0NywyODI0OSwyODI1MCwyODI1MiwyODI1MywyODI1NCwyODI1NiwyODI1NywyODI1OCwyODI1OSwyODI2MCwyODI2MSwyODI2MiwyODI2MywyODI2NCwyODI2NSwyODI2NiwyODI2OCwyODI2OSwyODI3MSwyODI3MiwyODI3MywyODI3NCwyODI3NSwyODI3NiwyODI3NywyODI3OCwyODI3OSwyODI4MCwyODI4MSwyODI4MiwyODI4MywyODI4NCwyODI4NSwyODI4OCwyODI4OSwyODI5MCwyODI5MiwyODI5NSwyODI5NiwyODI5OCwyODI5OSwyODMwMCwyODMwMSwyODMwMiwyODMwNSwyODMwNiwyODMwNywyODMwOCwyODMwOSwyODMxMCwyODMxMSwyODMxMywyODMxNCwyODMxNSwyODMxNywyODMxOCwyODMyMCwyODMyMSwyODMyMywyODMyNCwyODMyNiwyODMyOCwyODMyOSwyODMzMSwyODMzMiwyODMzMywyODMzNCwyODMzNiwyODMzOSwyODM0MSwyODM0NCwyODM0NSwyODM0OCwyODM1MCwyODM1MSwyODM1MiwyODM1NSwyODM1NiwyODM1NywyODM1OCwyODM2MCwyODM2MSwyODM2MiwyODM2NCwyODM2NSwyODM2NiwyODM2OCwyODM3MCwyODM3NCwyODM3NiwyODM3NywyODM3OSwyODM4MCwyODM4MSwyODM4NywyODM5MSwyODM5NCwyODM5NSwyODM5NiwyODM5NywyODM5OCwyODM5OSwyODQwMCwyODQwMSwyODQwMiwyODQwMywyODQwNSwyODQwNiwyODQwNywyODQwOCwyODQxMCwyODQxMSwyODQxMiwyODQxMywyODQxNCwyODQxNSwyODQxNiwyODQxNywyODQxOSwyODQyMCwyODQyMSwyODQyMywyODQyNCwyODQyNiwyODQyNywyODQyOCwyODQyOSwyODQzMCwyODQzMiwyODQzMywyODQzNCwyODQzOCwyODQzOSwyODQ0MCwyODQ0MSwyODQ0MiwyODQ0MywyODQ0NCwyODQ0NSwyODQ0NiwyODQ0NywyODQ0OSwyODQ1MCwyODQ1MSwyODQ1MywyODQ1NCwyODQ1NSwyODQ1NiwyODQ2MCwyODQ2MiwyODQ2NCwyODQ2NiwyODQ2OCwyODQ2OSwyODQ3MSwyODQ3MiwyODQ3MywyODQ3NCwyODQ3NSwyODQ3NiwyODQ3NywyODQ3OSwyODQ4MCwyODQ4MSwyODQ4MiwyODQ4MywyODQ4NCwyODQ4NSwyODQ4OCwyODQ4OSwyODQ5MCwyODQ5MiwyODQ5NCwyODQ5NSwyODQ5NiwyODQ5NywyODQ5OCwyODQ5OSwyODUwMCwyODUwMSwyODUwMiwyODUwMywyODUwNSwyODUwNiwyODUwNywyODUwOSwyODUxMSwyODUxMiwyODUxMywyODUxNSwyODUxNiwyODUxNywyODUxOSwyODUyMCwyODUyMSwyODUyMiwyODUyMywyODUyNCwyODUyNywyODUyOCwyODUyOSwyODUzMSwyODUzMywyODUzNCwyODUzNSwyODUzNywyODUzOSwyODU0MSwyODU0MiwyODU0MywyODU0NCwyODU0NSwyODU0NiwyODU0NywyODU0OSwyODU1MCwyODU1MSwyODU1NCwyODU1NSwyODU1OSwyODU2MCwyODU2MSwyODU2MiwyODU2MywyODU2NCwyODU2NSwyODU2NiwyODU2NywyODU2OCwyODU2OSwyODU3MCwyODU3MSwyODU3MywyODU3NCwyODU3NSwyODU3NiwyODU3OCwyODU3OSwyODU4MCwyODU4MSwyODU4MiwyODU4NCwyODU4NSwyODU4NiwyODU4NywyODU4OCwyODU4OSwyODU5MCwyODU5MSwyODU5MiwyODU5MywyODU5NCwyODU5NiwyODU5NywyODU5OSwyODYwMCwyODYwMiwyODYwMywyODYwNCwyODYwNSwyODYwNiwyODYwNywyODYwOSwyODYxMSwyODYxMiwyODYxMywyODYxNCwyODYxNSwyODYxNiwyODYxOCwyODYxOSwyODYyMCwyODYyMSwyODYyMiwyODYyMywyODYyNCwyODYyNywyODYyOCwyODYyOSwyODYzMCwyODYzMSwyODYzMiwyODYzMywyODYzNCwyODYzNSwyODYzNiwyODYzNywyODYzOSwyODY0MiwyODY0MywyODY0NCwyODY0NSwyODY0NiwyODY0NywyODY0OCwyODY0OSwyODY1MCwyODY1MSwyODY1MiwyODY1MywyODY1NiwyODY1NywyODY1OCwyODY1OSwyODY2MCwyODY2MSwyODY2MiwyODY2MywyODY2NCwyODY2NSwyODY2NiwyODY2NywyODY2OCwyODY2OSwyODY3MCwyODY3MSwyODY3MiwyODY3MywyODY3NCwyODY3NSwyODY3NiwyODY3NywyODY3OCwyODY3OSwyODY4MCwyODY4MSwyODY4MiwyODY4MywyODY4NCwyODY4NSwyODY4NiwyODY4NywyODY4OCwyODY5MCwyODY5MSwyODY5MiwyODY5MywyODY5NCwyODY5NSwyODY5NiwyODY5NywyODcwMCwyODcwMSwyODcwMiwyODcwMywyODcwNCwyODcwNSwyODcwNiwyODcwOCwyODcwOSwyODcxMCwyODcxMSwyODcxMiwyODcxMywyODcxNCwyODcxNSwyODcxNiwyODcxNywyODcxOCwyODcxOSwyODcyMCwyODcyMSwyODcyMiwyODcyMywyODcyNCwyODcyNiwyODcyNywyODcyOCwyODczMCwyODczMSwyODczMiwyODczMywyODczNCwyODczNSwyODczNiwyODczNywyODczOCwyODczOSwyODc0MCwyODc0MSwyODc0MiwyODc0MywyODc0NCwyODc0NSwyODc0NiwyODc0NywyODc0OSwyODc1MCwyODc1MiwyODc1MywyODc1NCwyODc1NSwyODc1NiwyODc1NywyODc1OCwyODc1OSwyODc2MCwyODc2MSwyODc2MiwyODc2MywyODc2NCwyODc2NSwyODc2NywyODc2OCwyODc2OSwyODc3MCwyODc3MSwyODc3MiwyODc3MywyODc3NCwyODc3NSwyODc3NiwyODc3NywyODc3OCwyODc4MiwyODc4NSwyODc4NiwyODc4NywyODc4OCwyODc5MSwyODc5MywyODc5NCwyODc5NSwyODc5NywyODgwMSwyODgwMiwyODgwMywyODgwNCwyODgwNiwyODgwNywyODgwOCwyODgxMSwyODgxMiwyODgxMywyODgxNSwyODgxNiwyODgxNywyODgxOSwyODgyMywyODgyNCwyODgyNiwyODgyNywyODgzMCwyODgzMSwyODgzMiwyODgzMywyODgzNCwyODgzNSwyODgzNiwyODgzNywyODgzOCwyODgzOSwyODg0MCwyODg0MSwyODg0MiwyODg0OCwyODg1MCwyODg1MiwyODg1MywyODg1NCwyODg1OCwyODg2MiwyODg2MywyODg2OCwyODg2OSwyODg3MCwyODg3MSwyODg3MywyODg3NSwyODg3NiwyODg3NywyODg3OCwyODg3OSwyODg4MCwyODg4MSwyODg4MiwyODg4MywyODg4NCwyODg4NSwyODg4NiwyODg4NywyODg5MCwyODg5MiwyODg5MywyODg5NCwyODg5NiwyODg5NywyODg5OCwyODg5OSwyODkwMSwyODkwNiwyODkxMCwyODkxMiwyODkxMywyODkxNCwyODkxNSwyODkxNiwyODkxNywyODkxOCwyODkyMCwyODkyMiwyODkyMywyODkyNCwyODkyNiwyODkyNywyODkyOCwyODkyOSwyODkzMCwyODkzMSwyODkzMiwyODkzMywyODkzNCwyODkzNSwyODkzNiwyODkzOSwyODk0MCwyODk0MSwyODk0MiwyODk0MywyODk0NSwyODk0NiwyODk0OCwyODk1MSwyODk1NSwyODk1NiwyODk1NywyODk1OCwyODk1OSwyODk2MCwyODk2MSwyODk2MiwyODk2MywyODk2NCwyODk2NSwyODk2NywyODk2OCwyODk2OSwyODk3MCwyODk3MSwyODk3MiwyODk3MywyODk3NCwyODk3OCwyODk3OSwyODk4MCwyODk4MSwyODk4MywyODk4NCwyODk4NSwyODk4NiwyODk4NywyODk4OCwyODk4OSwyODk5MCwyODk5MSwyODk5MiwyODk5MywyODk5NCwyODk5NSwyODk5NiwyODk5OCwyODk5OSwyOTAwMCwyOTAwMSwyOTAwMywyOTAwNSwyOTAwNywyOTAwOCwyOTAwOSwyOTAxMCwyOTAxMSwyOTAxMiwyOTAxMywyOTAxNCwyOTAxNSwyOTAxNiwyOTAxNywyOTAxOCwyOTAxOSwyOTAyMSwyOTAyMywyOTAyNCwyOTAyNSwyOTAyNiwyOTAyNywyOTAyOSwyOTAzMywyOTAzNCwyOTAzNSwyOTAzNiwyOTAzNywyOTAzOSwyOTA0MCwyOTA0MSwyOTA0NCwyOTA0NSwyOTA0NiwyOTA0NywyOTA0OSwyOTA1MSwyOTA1MiwyOTA1NCwyOTA1NSwyOTA1NiwyOTA1NywyOTA1OCwyOTA1OSwyOTA2MSwyOTA2MiwyOTA2MywyOTA2NCwyOTA2NSwyOTA2NywyOTA2OCwyOTA2OSwyOTA3MCwyOTA3MiwyOTA3MywyOTA3NCwyOTA3NSwyOTA3NywyOTA3OCwyOTA3OSwyOTA4MiwyOTA4MywyOTA4NCwyOTA4NSwyOTA4NiwyOTA4OSwyOTA5MCwyOTA5MSwyOTA5MiwyOTA5MywyOTA5NCwyOTA5NSwyOTA5NywyOTA5OCwyOTA5OSwyOTEwMSwyOTEwMiwyOTEwMywyOTEwNCwyOTEwNSwyOTEwNiwyOTEwOCwyOTExMCwyOTExMSwyOTExMiwyOTExNCwyOTExNSwyOTExNiwyOTExNywyOTExOCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyMiwyOTEyNCwyOTEyNSwyOTEyNiwyOTEyNywyOTEyOCwyOTEyOSwyOTEzMCwyOTEzMSwyOTEzMiwyOTEzMywyOTEzNSwyOTEzNiwyOTEzNywyOTEzOCwyOTEzOSwyOTE0MiwyOTE0MywyOTE0NCwyOTE0NSwyOTE0NiwyOTE0NywyOTE0OCwyOTE0OSwyOTE1MCwyOTE1MSwyOTE1MywyOTE1NCwyOTE1NSwyOTE1NiwyOTE1OCwyOTE2MCwyOTE2MSwyOTE2MiwyOTE2MywyOTE2NCwyOTE2NSwyOTE2NywyOTE2OCwyOTE2OSwyOTE3MCwyOTE3MSwyOTE3MiwyOTE3MywyOTE3NCwyOTE3NSwyOTE3NiwyOTE3OCwyOTE3OSwyOTE4MCwyOTE4MSwyOTE4MiwyOTE4MywyOTE4NCwyOTE4NSwyOTE4NiwyOTE4NywyOTE4OCwyOTE4OSwyOTE5MSwyOTE5MiwyOTE5MywyOTE5NCwyOTE5NSwyOTE5NiwyOTE5NywyOTE5OCwyOTE5OSwyOTIwMCwyOTIwMSwyOTIwMiwyOTIwMywyOTIwNCwyOTIwNSwyOTIwNiwyOTIwNywyOTIwOCwyOTIwOSwyOTIxMCwyOTIxMSwyOTIxMiwyOTIxNCwyOTIxNSwyOTIxNiwyOTIxNywyOTIxOCwyOTIxOSwyOTIyMCwyOTIyMSwyOTIyMiwyOTIyMywyOTIyNSwyOTIyNywyOTIyOSwyOTIzMCwyOTIzMSwyOTIzNCwyOTIzNSwyOTIzNiwyOTI0MiwyOTI0NCwyOTI0NiwyOTI0OCwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MiwyOTI1MywyOTI1NCwyOTI1NywyOTI1OCwyOTI1OSwyOTI2MiwyOTI2MywyOTI2NCwyOTI2NSwyOTI2NywyOTI2OCwyOTI2OSwyOTI3MSwyOTI3MiwyOTI3NCwyOTI3NiwyOTI3OCwyOTI4MCwyOTI4MywyOTI4NCwyOTI4NSwyOTI4OCwyOTI5MCwyOTI5MSwyOTI5MiwyOTI5MywyOTI5NiwyOTI5NywyOTI5OSwyOTMwMCwyOTMwMiwyOTMwMywyOTMwNCwyOTMwNywyOTMwOCwyOTMwOSwyOTMxNCwyOTMxNSwyOTMxNywyOTMxOCwyOTMxOSwyOTMyMCwyOTMyMSwyOTMyNCwyOTMyNiwyOTMyOCwyOTMyOSwyOTMzMSwyOTMzMiwyOTMzMywyOTMzNCwyOTMzNSwyOTMzNiwyOTMzNywyOTMzOCwyOTMzOSwyOTM0MCwyOTM0MSwyOTM0MiwyOTM0NCwyOTM0NSwyOTM0NiwyOTM0NywyOTM0OCwyOTM0OSwyOTM1MCwyOTM1MSwyOTM1MiwyOTM1MywyOTM1NCwyOTM1NSwyOTM1OCwyOTM2MSwyOTM2MiwyOTM2MywyOTM2NSwyOTM3MCwyOTM3MSwyOTM3MiwyOTM3MywyOTM3NCwyOTM3NSwyOTM3NiwyOTM4MSwyOTM4MiwyOTM4MywyOTM4NSwyOTM4NiwyOTM4NywyOTM4OCwyOTM5MSwyOTM5MywyOTM5NSwyOTM5NiwyOTM5NywyOTM5OCwyOTQwMCwyOTQwMiwyOTQwMyw1ODU2Niw1ODU2Nyw1ODU2OCw1ODU2OSw1ODU3MCw1ODU3MSw1ODU3Miw1ODU3Myw1ODU3NCw1ODU3NSw1ODU3Niw1ODU3Nyw1ODU3OCw1ODU3OSw1ODU4MCw1ODU4MSw1ODU4Miw1ODU4Myw1ODU4NCw1ODU4NSw1ODU4Niw1ODU4Nyw1ODU4OCw1ODU4OSw1ODU5MCw1ODU5MSw1ODU5Miw1ODU5Myw1ODU5NCw1ODU5NSw1ODU5Niw1ODU5Nyw1ODU5OCw1ODU5OSw1ODYwMCw1ODYwMSw1ODYwMiw1ODYwMyw1ODYwNCw1ODYwNSw1ODYwNiw1ODYwNyw1ODYwOCw1ODYwOSw1ODYxMCw1ODYxMSw1ODYxMiw1ODYxMyw1ODYxNCw1ODYxNSw1ODYxNiw1ODYxNyw1ODYxOCw1ODYxOSw1ODYyMCw1ODYyMSw1ODYyMiw1ODYyMyw1ODYyNCw1ODYyNSw1ODYyNiw1ODYyNyw1ODYyOCw1ODYyOSw1ODYzMCw1ODYzMSw1ODYzMiw1ODYzMyw1ODYzNCw1ODYzNSw1ODYzNiw1ODYzNyw1ODYzOCw1ODYzOSw1ODY0MCw1ODY0MSw1ODY0Miw1ODY0Myw1ODY0NCw1ODY0NSw1ODY0Niw1ODY0Nyw1ODY0OCw1ODY0OSw1ODY1MCw1ODY1MSw1ODY1Miw1ODY1Myw1ODY1NCw1ODY1NSw1ODY1Niw1ODY1Nyw1ODY1OCw1ODY1OSw1ODY2MCw1ODY2MSwxMjI4OCwxMjI4OSwxMjI5MCwxODMsNzEzLDcxMSwxNjgsMTIyOTEsMTIyOTMsODIxMiw2NTM3NCw4MjE0LDgyMzAsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMxMCwxMjMxMSwxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4NzU4LDg3NDMsODc0NCw4NzIxLDg3MTksODc0Niw4NzQ1LDg3MTIsODc1OSw4NzMwLDg4NjksODc0MSw4NzM2LDg5NzgsODg1Nyw4NzQ3LDg3NTAsODgwMSw4NzgwLDg3NzYsODc2NSw4NzMzLDg4MDAsODgxNCw4ODE1LDg4MDQsODgwNSw4NzM0LDg3NTcsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1Mjg0LDE2NCw2NTUwNCw2NTUwNSw4MjQwLDE2Nyw4NDcwLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw4MjUxLDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsNTg2NjIsNTg2NjMsNTg2NjQsNTg2NjUsNTg2NjYsNTg2NjcsNTg2NjgsNTg2NjksNTg2NzAsNTg2NzEsNTg2NzIsNTg2NzMsNTg2NzQsNTg2NzUsNTg2NzYsNTg2NzcsNTg2NzgsNTg2NzksNTg2ODAsNTg2ODEsNTg2ODIsNTg2ODMsNTg2ODQsNTg2ODUsNTg2ODYsNTg2ODcsNTg2ODgsNTg2ODksNTg2OTAsNTg2OTEsNTg2OTIsNTg2OTMsNTg2OTQsNTg2OTUsNTg2OTYsNTg2OTcsNTg2OTgsNTg2OTksNTg3MDAsNTg3MDEsNTg3MDIsNTg3MDMsNTg3MDQsNTg3MDUsNTg3MDYsNTg3MDcsNTg3MDgsNTg3MDksNTg3MTAsNTg3MTEsNTg3MTIsNTg3MTMsNTg3MTQsNTg3MTUsNTg3MTYsNTg3MTcsNTg3MTgsNTg3MTksNTg3MjAsNTg3MjEsNTg3MjIsNTg3MjMsNTg3MjQsNTg3MjUsNTg3MjYsNTg3MjcsNTg3MjgsNTg3MjksNTg3MzAsNTg3MzEsNTg3MzIsNTg3MzMsNTg3MzQsNTg3MzUsNTg3MzYsNTg3MzcsNTg3MzgsNTg3MzksNTg3NDAsNTg3NDEsNTg3NDIsNTg3NDMsNTg3NDQsNTg3NDUsNTg3NDYsNTg3NDcsNTg3NDgsNTg3NDksNTg3NTAsNTg3NTEsNTg3NTIsNTg3NTMsNTg3NTQsNTg3NTUsNTg3NTYsNTg3NTcsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw1OTIzOCw1OTIzOSw1OTI0MCw1OTI0MSw1OTI0Miw1OTI0Myw5MzUyLDkzNTMsOTM1NCw5MzU1LDkzNTYsOTM1Nyw5MzU4LDkzNTksOTM2MCw5MzYxLDkzNjIsOTM2Myw5MzY0LDkzNjUsOTM2Niw5MzY3LDkzNjgsOTM2OSw5MzcwLDkzNzEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsOTM0Nyw5MzQ4LDkzNDksOTM1MCw5MzUxLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsODM2NCw1OTI0NSwxMjgzMiwxMjgzMywxMjgzNCwxMjgzNSwxMjgzNiwxMjgzNywxMjgzOCwxMjgzOSwxMjg0MCwxMjg0MSw1OTI0Niw1OTI0Nyw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDg1NTQsODU1NSw1OTI0OCw1OTI0OSw1ODc1OCw1ODc1OSw1ODc2MCw1ODc2MSw1ODc2Miw1ODc2Myw1ODc2NCw1ODc2NSw1ODc2Niw1ODc2Nyw1ODc2OCw1ODc2OSw1ODc3MCw1ODc3MSw1ODc3Miw1ODc3Myw1ODc3NCw1ODc3NSw1ODc3Niw1ODc3Nyw1ODc3OCw1ODc3OSw1ODc4MCw1ODc4MSw1ODc4Miw1ODc4Myw1ODc4NCw1ODc4NSw1ODc4Niw1ODc4Nyw1ODc4OCw1ODc4OSw1ODc5MCw1ODc5MSw1ODc5Miw1ODc5Myw1ODc5NCw1ODc5NSw1ODc5Niw1ODc5Nyw1ODc5OCw1ODc5OSw1ODgwMCw1ODgwMSw1ODgwMiw1ODgwMyw1ODgwNCw1ODgwNSw1ODgwNiw1ODgwNyw1ODgwOCw1ODgwOSw1ODgxMCw1ODgxMSw1ODgxMiw1ODgxMyw1ODgxNCw1ODgxNSw1ODgxNiw1ODgxNyw1ODgxOCw1ODgxOSw1ODgyMCw1ODgyMSw1ODgyMiw1ODgyMyw1ODgyNCw1ODgyNSw1ODgyNiw1ODgyNyw1ODgyOCw1ODgyOSw1ODgzMCw1ODgzMSw1ODgzMiw1ODgzMyw1ODgzNCw1ODgzNSw1ODgzNiw1ODgzNyw1ODgzOCw1ODgzOSw1ODg0MCw1ODg0MSw1ODg0Miw1ODg0Myw1ODg0NCw1ODg0NSw1ODg0Niw1ODg0Nyw1ODg0OCw1ODg0OSw1ODg1MCw1ODg1MSw1ODg1MiwxMjI4OCw2NTI4MSw2NTI4Miw2NTI4Myw2NTUwOSw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTM0MCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1ODg1NCw1ODg1NSw1ODg1Niw1ODg1Nyw1ODg1OCw1ODg1OSw1ODg2MCw1ODg2MSw1ODg2Miw1ODg2Myw1ODg2NCw1ODg2NSw1ODg2Niw1ODg2Nyw1ODg2OCw1ODg2OSw1ODg3MCw1ODg3MSw1ODg3Miw1ODg3Myw1ODg3NCw1ODg3NSw1ODg3Niw1ODg3Nyw1ODg3OCw1ODg3OSw1ODg4MCw1ODg4MSw1ODg4Miw1ODg4Myw1ODg4NCw1ODg4NSw1ODg4Niw1ODg4Nyw1ODg4OCw1ODg4OSw1ODg5MCw1ODg5MSw1ODg5Miw1ODg5Myw1ODg5NCw1ODg5NSw1ODg5Niw1ODg5Nyw1ODg5OCw1ODg5OSw1ODkwMCw1ODkwMSw1ODkwMiw1ODkwMyw1ODkwNCw1ODkwNSw1ODkwNiw1ODkwNyw1ODkwOCw1ODkwOSw1ODkxMCw1ODkxMSw1ODkxMiw1ODkxMyw1ODkxNCw1ODkxNSw1ODkxNiw1ODkxNyw1ODkxOCw1ODkxOSw1ODkyMCw1ODkyMSw1ODkyMiw1ODkyMyw1ODkyNCw1ODkyNSw1ODkyNiw1ODkyNyw1ODkyOCw1ODkyOSw1ODkzMCw1ODkzMSw1ODkzMiw1ODkzMyw1ODkzNCw1ODkzNSw1ODkzNiw1ODkzNyw1ODkzOCw1ODkzOSw1ODk0MCw1ODk0MSw1ODk0Miw1ODk0Myw1ODk0NCw1ODk0NSw1ODk0Niw1ODk0Nyw1ODk0OCw1ODk0OSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSw1OTI1MCw1OTI1MSw1OTI1Miw1OTI1Myw1OTI1NCw1OTI1NSw1OTI1Niw1OTI1Nyw1OTI1OCw1OTI1OSw1OTI2MCw1ODk1MCw1ODk1MSw1ODk1Miw1ODk1Myw1ODk1NCw1ODk1NSw1ODk1Niw1ODk1Nyw1ODk1OCw1ODk1OSw1ODk2MCw1ODk2MSw1ODk2Miw1ODk2Myw1ODk2NCw1ODk2NSw1ODk2Niw1ODk2Nyw1ODk2OCw1ODk2OSw1ODk3MCw1ODk3MSw1ODk3Miw1ODk3Myw1ODk3NCw1ODk3NSw1ODk3Niw1ODk3Nyw1ODk3OCw1ODk3OSw1ODk4MCw1ODk4MSw1ODk4Miw1ODk4Myw1ODk4NCw1ODk4NSw1ODk4Niw1ODk4Nyw1ODk4OCw1ODk4OSw1ODk5MCw1ODk5MSw1ODk5Miw1ODk5Myw1ODk5NCw1ODk5NSw1ODk5Niw1ODk5Nyw1ODk5OCw1ODk5OSw1OTAwMCw1OTAwMSw1OTAwMiw1OTAwMyw1OTAwNCw1OTAwNSw1OTAwNiw1OTAwNyw1OTAwOCw1OTAwOSw1OTAxMCw1OTAxMSw1OTAxMiw1OTAxMyw1OTAxNCw1OTAxNSw1OTAxNiw1OTAxNyw1OTAxOCw1OTAxOSw1OTAyMCw1OTAyMSw1OTAyMiw1OTAyMyw1OTAyNCw1OTAyNSw1OTAyNiw1OTAyNyw1OTAyOCw1OTAyOSw1OTAzMCw1OTAzMSw1OTAzMiw1OTAzMyw1OTAzNCw1OTAzNSw1OTAzNiw1OTAzNyw1OTAzOCw1OTAzOSw1OTA0MCw1OTA0MSw1OTA0Miw1OTA0Myw1OTA0NCw1OTA0NSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCw1OTI2MSw1OTI2Miw1OTI2Myw1OTI2NCw1OTI2NSw1OTI2Niw1OTI2Nyw1OTI2OCw1OTA0Niw1OTA0Nyw1OTA0OCw1OTA0OSw1OTA1MCw1OTA1MSw1OTA1Miw1OTA1Myw1OTA1NCw1OTA1NSw1OTA1Niw1OTA1Nyw1OTA1OCw1OTA1OSw1OTA2MCw1OTA2MSw1OTA2Miw1OTA2Myw1OTA2NCw1OTA2NSw1OTA2Niw1OTA2Nyw1OTA2OCw1OTA2OSw1OTA3MCw1OTA3MSw1OTA3Miw1OTA3Myw1OTA3NCw1OTA3NSw1OTA3Niw1OTA3Nyw1OTA3OCw1OTA3OSw1OTA4MCw1OTA4MSw1OTA4Miw1OTA4Myw1OTA4NCw1OTA4NSw1OTA4Niw1OTA4Nyw1OTA4OCw1OTA4OSw1OTA5MCw1OTA5MSw1OTA5Miw1OTA5Myw1OTA5NCw1OTA5NSw1OTA5Niw1OTA5Nyw1OTA5OCw1OTA5OSw1OTEwMCw1OTEwMSw1OTEwMiw1OTEwMyw1OTEwNCw1OTEwNSw1OTEwNiw1OTEwNyw1OTEwOCw1OTEwOSw1OTExMCw1OTExMSw1OTExMiw1OTExMyw1OTExNCw1OTExNSw1OTExNiw1OTExNyw1OTExOCw1OTExOSw1OTEyMCw1OTEyMSw1OTEyMiw1OTEyMyw1OTEyNCw1OTEyNSw1OTEyNiw1OTEyNyw1OTEyOCw1OTEyOSw1OTEzMCw1OTEzMSw1OTEzMiw1OTEzMyw1OTEzNCw1OTEzNSw1OTEzNiw1OTEzNyw1OTEzOCw1OTEzOSw1OTE0MCw1OTE0MSw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw1OTI2OSw1OTI3MCw1OTI3MSw1OTI3Miw1OTI3Myw1OTI3NCw1OTI3NSw1OTI3Niw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw1OTI3Nyw1OTI3OCw1OTI3OSw1OTI4MCw1OTI4MSw1OTI4Miw1OTI4Myw2NTA3Nyw2NTA3OCw2NTA4MSw2NTA4Miw2NTA4Nyw2NTA4OCw2NTA4NSw2NTA4Niw2NTA4OSw2NTA5MCw2NTA5MSw2NTA5Miw1OTI4NCw1OTI4NSw2NTA4Myw2NTA4NCw2NTA3OSw2NTA4MCw2NTA3Myw1OTI4Niw2NTA3NSw2NTA3Niw1OTI4Nyw1OTI4OCw1OTI4OSw1OTI5MCw1OTI5MSw1OTI5Miw1OTI5Myw1OTI5NCw1OTI5NSw1OTE0Miw1OTE0Myw1OTE0NCw1OTE0NSw1OTE0Niw1OTE0Nyw1OTE0OCw1OTE0OSw1OTE1MCw1OTE1MSw1OTE1Miw1OTE1Myw1OTE1NCw1OTE1NSw1OTE1Niw1OTE1Nyw1OTE1OCw1OTE1OSw1OTE2MCw1OTE2MSw1OTE2Miw1OTE2Myw1OTE2NCw1OTE2NSw1OTE2Niw1OTE2Nyw1OTE2OCw1OTE2OSw1OTE3MCw1OTE3MSw1OTE3Miw1OTE3Myw1OTE3NCw1OTE3NSw1OTE3Niw1OTE3Nyw1OTE3OCw1OTE3OSw1OTE4MCw1OTE4MSw1OTE4Miw1OTE4Myw1OTE4NCw1OTE4NSw1OTE4Niw1OTE4Nyw1OTE4OCw1OTE4OSw1OTE5MCw1OTE5MSw1OTE5Miw1OTE5Myw1OTE5NCw1OTE5NSw1OTE5Niw1OTE5Nyw1OTE5OCw1OTE5OSw1OTIwMCw1OTIwMSw1OTIwMiw1OTIwMyw1OTIwNCw1OTIwNSw1OTIwNiw1OTIwNyw1OTIwOCw1OTIwOSw1OTIxMCw1OTIxMSw1OTIxMiw1OTIxMyw1OTIxNCw1OTIxNSw1OTIxNiw1OTIxNyw1OTIxOCw1OTIxOSw1OTIyMCw1OTIyMSw1OTIyMiw1OTIyMyw1OTIyNCw1OTIyNSw1OTIyNiw1OTIyNyw1OTIyOCw1OTIyOSw1OTIzMCw1OTIzMSw1OTIzMiw1OTIzMyw1OTIzNCw1OTIzNSw1OTIzNiw1OTIzNywxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSw1OTI5Niw1OTI5Nyw1OTI5OCw1OTI5OSw1OTMwMCw1OTMwMSw1OTMwMiw1OTMwMyw1OTMwNCw1OTMwNSw1OTMwNiw1OTMwNyw1OTMwOCw1OTMwOSw1OTMxMCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw1OTMxMSw1OTMxMiw1OTMxMyw1OTMxNCw1OTMxNSw1OTMxNiw1OTMxNyw1OTMxOCw1OTMxOSw1OTMyMCw1OTMyMSw1OTMyMiw1OTMyMyw3MTQsNzE1LDcyOSw4MjExLDgyMTMsODIyOSw4MjQ1LDg0NTMsODQ1Nyw4NTk4LDg1OTksODYwMCw4NjAxLDg3MjUsODczNSw4NzM5LDg3ODYsODgwNiw4ODA3LDg4OTUsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk1ODEsOTU4Miw5NTgzLDk1ODQsOTU4NSw5NTg2LDk1ODcsOTYwMSw5NjAyLDk2MDMsOTYwNCw5NjA1LDk2MDYsOTYwNyw5NjA4LDk2MDksOTYxMCw5NjExLDk2MTIsOTYxMyw5NjE0LDk2MTUsOTYxOSw5NjIwLDk2MjEsOTY2MCw5NjYxLDk2OTgsOTY5OSw5NzAwLDk3MDEsOTczNyw4ODUzLDEyMzA2LDEyMzE3LDEyMzE4LDU5MzI0LDU5MzI1LDU5MzI2LDU5MzI3LDU5MzI4LDU5MzI5LDU5MzMwLDU5MzMxLDU5MzMyLDU5MzMzLDU5MzM0LDI1NywyMjUsNDYyLDIyNCwyNzUsMjMzLDI4MywyMzIsMjk5LDIzNyw0NjQsMjM2LDMzMywyNDMsNDY2LDI0MiwzNjMsMjUwLDQ2OCwyNDksNDcwLDQ3Miw0NzQsNDc2LDI1MiwyMzQsNTkzLDU5MzM1LDMyNCwzMjgsNTA1LDYwOSw1OTMzNyw1OTMzOCw1OTMzOSw1OTM0MCwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw1OTM0MSw1OTM0Miw1OTM0Myw1OTM0NCw1OTM0NSw1OTM0Niw1OTM0Nyw1OTM0OCw1OTM0OSw1OTM1MCw1OTM1MSw1OTM1Miw1OTM1Myw1OTM1NCw1OTM1NSw1OTM1Niw1OTM1Nyw1OTM1OCw1OTM1OSw1OTM2MCw1OTM2MSwxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwxMjk2MywxMzE5OCwxMzE5OSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNywxMzI1MiwxMzI2MiwxMzI2NSwxMzI2NiwxMzI2OSw2NTA3Miw2NTUwNiw2NTUwOCw1OTM2Miw4NDgxLDEyODQ5LDU5MzYzLDgyMDgsNTkzNjQsNTkzNjUsNTkzNjYsMTI1NDAsMTI0NDMsMTI0NDQsMTI1NDEsMTI1NDIsMTIyOTQsMTI0NDUsMTI0NDYsNjUwOTcsNjUwOTgsNjUwOTksNjUxMDAsNjUxMDEsNjUxMDIsNjUxMDMsNjUxMDQsNjUxMDUsNjUxMDYsNjUxMDgsNjUxMDksNjUxMTAsNjUxMTEsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsNjUxMTksNjUxMjAsNjUxMjEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUxMjgsNjUxMjksNjUxMzAsNjUxMzEsMTIzNTAsMTIyNzIsMTIyNzMsMTIyNzQsMTIyNzUsMTIyNzYsMTIyNzcsMTIyNzgsMTIyNzksMTIyODAsMTIyODEsMTIyODIsMTIyODMsMTIyOTUsNTkzODAsNTkzODEsNTkzODIsNTkzODMsNTkzODQsNTkzODUsNTkzODYsNTkzODcsNTkzODgsNTkzODksNTkzOTAsNTkzOTEsNTkzOTIsOTQ3Miw5NDczLDk0NzQsOTQ3NSw5NDc2LDk0NzcsOTQ3OCw5NDc5LDk0ODAsOTQ4MSw5NDgyLDk0ODMsOTQ4NCw5NDg1LDk0ODYsOTQ4Nyw5NDg4LDk0ODksOTQ5MCw5NDkxLDk0OTIsOTQ5Myw5NDk0LDk0OTUsOTQ5Niw5NDk3LDk0OTgsOTQ5OSw5NTAwLDk1MDEsOTUwMiw5NTAzLDk1MDQsOTUwNSw5NTA2LDk1MDcsOTUwOCw5NTA5LDk1MTAsOTUxMSw5NTEyLDk1MTMsOTUxNCw5NTE1LDk1MTYsOTUxNyw5NTE4LDk1MTksOTUyMCw5NTIxLDk1MjIsOTUyMyw5NTI0LDk1MjUsOTUyNiw5NTI3LDk1MjgsOTUyOSw5NTMwLDk1MzEsOTUzMiw5NTMzLDk1MzQsOTUzNSw5NTM2LDk1MzcsOTUzOCw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsOTU0Nyw1OTM5Myw1OTM5NCw1OTM5NSw1OTM5Niw1OTM5Nyw1OTM5OCw1OTM5OSw1OTQwMCw1OTQwMSw1OTQwMiw1OTQwMyw1OTQwNCw1OTQwNSw1OTQwNiw1OTQwNywyOTQwNCwyOTQwNSwyOTQwNywyOTQxMCwyOTQxMSwyOTQxMiwyOTQxMywyOTQxNCwyOTQxNSwyOTQxOCwyOTQxOSwyOTQyOSwyOTQzMCwyOTQzMywyOTQzNywyOTQzOCwyOTQzOSwyOTQ0MCwyOTQ0MiwyOTQ0NCwyOTQ0NSwyOTQ0NiwyOTQ0NywyOTQ0OCwyOTQ0OSwyOTQ1MSwyOTQ1MiwyOTQ1MywyOTQ1NSwyOTQ1NiwyOTQ1NywyOTQ1OCwyOTQ2MCwyOTQ2NCwyOTQ2NSwyOTQ2NiwyOTQ3MSwyOTQ3MiwyOTQ3NSwyOTQ3NiwyOTQ3OCwyOTQ3OSwyOTQ4MCwyOTQ4NSwyOTQ4NywyOTQ4OCwyOTQ5MCwyOTQ5MSwyOTQ5MywyOTQ5NCwyOTQ5OCwyOTQ5OSwyOTUwMCwyOTUwMSwyOTUwNCwyOTUwNSwyOTUwNiwyOTUwNywyOTUwOCwyOTUwOSwyOTUxMCwyOTUxMSwyOTUxMiwyOTUxMywyOTUxNCwyOTUxNSwyOTUxNiwyOTUxOCwyOTUxOSwyOTUyMSwyOTUyMywyOTUyNCwyOTUyNSwyOTUyNiwyOTUyOCwyOTUyOSwyOTUzMCwyOTUzMSwyOTUzMiwyOTUzMywyOTUzNCwyOTUzNSwyOTUzNywyOTUzOCwyOTUzOSwyOTU0MCwyOTU0MSwyOTU0MiwyOTU0MywyOTU0NCwyOTU0NSwyOTU0NiwyOTU0NywyOTU1MCwyOTU1MiwyOTU1Myw1NzM0NCw1NzM0NSw1NzM0Niw1NzM0Nyw1NzM0OCw1NzM0OSw1NzM1MCw1NzM1MSw1NzM1Miw1NzM1Myw1NzM1NCw1NzM1NSw1NzM1Niw1NzM1Nyw1NzM1OCw1NzM1OSw1NzM2MCw1NzM2MSw1NzM2Miw1NzM2Myw1NzM2NCw1NzM2NSw1NzM2Niw1NzM2Nyw1NzM2OCw1NzM2OSw1NzM3MCw1NzM3MSw1NzM3Miw1NzM3Myw1NzM3NCw1NzM3NSw1NzM3Niw1NzM3Nyw1NzM3OCw1NzM3OSw1NzM4MCw1NzM4MSw1NzM4Miw1NzM4Myw1NzM4NCw1NzM4NSw1NzM4Niw1NzM4Nyw1NzM4OCw1NzM4OSw1NzM5MCw1NzM5MSw1NzM5Miw1NzM5Myw1NzM5NCw1NzM5NSw1NzM5Niw1NzM5Nyw1NzM5OCw1NzM5OSw1NzQwMCw1NzQwMSw1NzQwMiw1NzQwMyw1NzQwNCw1NzQwNSw1NzQwNiw1NzQwNyw1NzQwOCw1NzQwOSw1NzQxMCw1NzQxMSw1NzQxMiw1NzQxMyw1NzQxNCw1NzQxNSw1NzQxNiw1NzQxNyw1NzQxOCw1NzQxOSw1NzQyMCw1NzQyMSw1NzQyMiw1NzQyMyw1NzQyNCw1NzQyNSw1NzQyNiw1NzQyNyw1NzQyOCw1NzQyOSw1NzQzMCw1NzQzMSw1NzQzMiw1NzQzMyw1NzQzNCw1NzQzNSw1NzQzNiw1NzQzNywyOTU1NCwyOTU1NSwyOTU1NiwyOTU1NywyOTU1OCwyOTU1OSwyOTU2MCwyOTU2MSwyOTU2MiwyOTU2MywyOTU2NCwyOTU2NSwyOTU2NywyOTU2OCwyOTU2OSwyOTU3MCwyOTU3MSwyOTU3MywyOTU3NCwyOTU3NiwyOTU3OCwyOTU4MCwyOTU4MSwyOTU4MywyOTU4NCwyOTU4NiwyOTU4NywyOTU4OCwyOTU4OSwyOTU5MSwyOTU5MiwyOTU5MywyOTU5NCwyOTU5NiwyOTU5NywyOTU5OCwyOTYwMCwyOTYwMSwyOTYwMywyOTYwNCwyOTYwNSwyOTYwNiwyOTYwNywyOTYwOCwyOTYxMCwyOTYxMiwyOTYxMywyOTYxNywyOTYyMCwyOTYyMSwyOTYyMiwyOTYyNCwyOTYyNSwyOTYyOCwyOTYyOSwyOTYzMCwyOTYzMSwyOTYzMywyOTYzNSwyOTYzNiwyOTYzNywyOTYzOCwyOTYzOSwyOTY0MywyOTY0NCwyOTY0NiwyOTY1MCwyOTY1MSwyOTY1MiwyOTY1MywyOTY1NCwyOTY1NSwyOTY1NiwyOTY1OCwyOTY1OSwyOTY2MCwyOTY2MSwyOTY2MywyOTY2NSwyOTY2NiwyOTY2NywyOTY2OCwyOTY3MCwyOTY3MiwyOTY3NCwyOTY3NSwyOTY3NiwyOTY3OCwyOTY3OSwyOTY4MCwyOTY4MSwyOTY4MywyOTY4NCwyOTY4NSwyOTY4NiwyOTY4Nyw1NzQzOCw1NzQzOSw1NzQ0MCw1NzQ0MSw1NzQ0Miw1NzQ0Myw1NzQ0NCw1NzQ0NSw1NzQ0Niw1NzQ0Nyw1NzQ0OCw1NzQ0OSw1NzQ1MCw1NzQ1MSw1NzQ1Miw1NzQ1Myw1NzQ1NCw1NzQ1NSw1NzQ1Niw1NzQ1Nyw1NzQ1OCw1NzQ1OSw1NzQ2MCw1NzQ2MSw1NzQ2Miw1NzQ2Myw1NzQ2NCw1NzQ2NSw1NzQ2Niw1NzQ2Nyw1NzQ2OCw1NzQ2OSw1NzQ3MCw1NzQ3MSw1NzQ3Miw1NzQ3Myw1NzQ3NCw1NzQ3NSw1NzQ3Niw1NzQ3Nyw1NzQ3OCw1NzQ3OSw1NzQ4MCw1NzQ4MSw1NzQ4Miw1NzQ4Myw1NzQ4NCw1NzQ4NSw1NzQ4Niw1NzQ4Nyw1NzQ4OCw1NzQ4OSw1NzQ5MCw1NzQ5MSw1NzQ5Miw1NzQ5Myw1NzQ5NCw1NzQ5NSw1NzQ5Niw1NzQ5Nyw1NzQ5OCw1NzQ5OSw1NzUwMCw1NzUwMSw1NzUwMiw1NzUwMyw1NzUwNCw1NzUwNSw1NzUwNiw1NzUwNyw1NzUwOCw1NzUwOSw1NzUxMCw1NzUxMSw1NzUxMiw1NzUxMyw1NzUxNCw1NzUxNSw1NzUxNiw1NzUxNyw1NzUxOCw1NzUxOSw1NzUyMCw1NzUyMSw1NzUyMiw1NzUyMyw1NzUyNCw1NzUyNSw1NzUyNiw1NzUyNyw1NzUyOCw1NzUyOSw1NzUzMCw1NzUzMSwyOTY4OCwyOTY4OSwyOTY5MCwyOTY5MSwyOTY5MiwyOTY5MywyOTY5NCwyOTY5NSwyOTY5NiwyOTY5NywyOTY5OCwyOTcwMCwyOTcwMywyOTcwNCwyOTcwNywyOTcwOCwyOTcwOSwyOTcxMCwyOTcxMywyOTcxNCwyOTcxNSwyOTcxNiwyOTcxNywyOTcxOCwyOTcxOSwyOTcyMCwyOTcyMSwyOTcyNCwyOTcyNSwyOTcyNiwyOTcyNywyOTcyOCwyOTcyOSwyOTczMSwyOTczMiwyOTczNSwyOTczNywyOTczOSwyOTc0MSwyOTc0MywyOTc0NSwyOTc0NiwyOTc1MSwyOTc1MiwyOTc1MywyOTc1NCwyOTc1NSwyOTc1NywyOTc1OCwyOTc1OSwyOTc2MCwyOTc2MiwyOTc2MywyOTc2NCwyOTc2NSwyOTc2NiwyOTc2NywyOTc2OCwyOTc2OSwyOTc3MCwyOTc3MSwyOTc3MiwyOTc3MywyOTc3NCwyOTc3NSwyOTc3NiwyOTc3NywyOTc3OCwyOTc3OSwyOTc4MCwyOTc4MiwyOTc4NCwyOTc4OSwyOTc5MiwyOTc5MywyOTc5NCwyOTc5NSwyOTc5NiwyOTc5NywyOTc5OCwyOTc5OSwyOTgwMCwyOTgwMSwyOTgwMiwyOTgwMywyOTgwNCwyOTgwNiwyOTgwNywyOTgwOSwyOTgxMCwyOTgxMSwyOTgxMiwyOTgxMywyOTgxNiwyOTgxNywyOTgxOCw1NzUzMiw1NzUzMyw1NzUzNCw1NzUzNSw1NzUzNiw1NzUzNyw1NzUzOCw1NzUzOSw1NzU0MCw1NzU0MSw1NzU0Miw1NzU0Myw1NzU0NCw1NzU0NSw1NzU0Niw1NzU0Nyw1NzU0OCw1NzU0OSw1NzU1MCw1NzU1MSw1NzU1Miw1NzU1Myw1NzU1NCw1NzU1NSw1NzU1Niw1NzU1Nyw1NzU1OCw1NzU1OSw1NzU2MCw1NzU2MSw1NzU2Miw1NzU2Myw1NzU2NCw1NzU2NSw1NzU2Niw1NzU2Nyw1NzU2OCw1NzU2OSw1NzU3MCw1NzU3MSw1NzU3Miw1NzU3Myw1NzU3NCw1NzU3NSw1NzU3Niw1NzU3Nyw1NzU3OCw1NzU3OSw1NzU4MCw1NzU4MSw1NzU4Miw1NzU4Myw1NzU4NCw1NzU4NSw1NzU4Niw1NzU4Nyw1NzU4OCw1NzU4OSw1NzU5MCw1NzU5MSw1NzU5Miw1NzU5Myw1NzU5NCw1NzU5NSw1NzU5Niw1NzU5Nyw1NzU5OCw1NzU5OSw1NzYwMCw1NzYwMSw1NzYwMiw1NzYwMyw1NzYwNCw1NzYwNSw1NzYwNiw1NzYwNyw1NzYwOCw1NzYwOSw1NzYxMCw1NzYxMSw1NzYxMiw1NzYxMyw1NzYxNCw1NzYxNSw1NzYxNiw1NzYxNyw1NzYxOCw1NzYxOSw1NzYyMCw1NzYyMSw1NzYyMiw1NzYyMyw1NzYyNCw1NzYyNSwyOTgxOSwyOTgyMCwyOTgyMSwyOTgyMywyOTgyNiwyOTgyOCwyOTgyOSwyOTgzMCwyOTgzMiwyOTgzMywyOTgzNCwyOTgzNiwyOTgzNywyOTgzOSwyOTg0MSwyOTg0MiwyOTg0MywyOTg0NCwyOTg0NSwyOTg0NiwyOTg0NywyOTg0OCwyOTg0OSwyOTg1MCwyOTg1MSwyOTg1MywyOTg1NSwyOTg1NiwyOTg1NywyOTg1OCwyOTg1OSwyOTg2MCwyOTg2MSwyOTg2MiwyOTg2NiwyOTg2NywyOTg2OCwyOTg2OSwyOTg3MCwyOTg3MSwyOTg3MiwyOTg3MywyOTg3NCwyOTg3NSwyOTg3NiwyOTg3NywyOTg3OCwyOTg3OSwyOTg4MCwyOTg4MSwyOTg4MywyOTg4NCwyOTg4NSwyOTg4NiwyOTg4NywyOTg4OCwyOTg4OSwyOTg5MCwyOTg5MSwyOTg5MiwyOTg5MywyOTg5NCwyOTg5NSwyOTg5NiwyOTg5NywyOTg5OCwyOTg5OSwyOTkwMCwyOTkwMSwyOTkwMiwyOTkwMywyOTkwNCwyOTkwNSwyOTkwNywyOTkwOCwyOTkwOSwyOTkxMCwyOTkxMSwyOTkxMiwyOTkxMywyOTkxNCwyOTkxNSwyOTkxNywyOTkxOSwyOTkyMSwyOTkyNSwyOTkyNywyOTkyOCwyOTkyOSwyOTkzMCwyOTkzMSwyOTkzMiwyOTkzMywyOTkzNiwyOTkzNywyOTkzOCw1NzYyNiw1NzYyNyw1NzYyOCw1NzYyOSw1NzYzMCw1NzYzMSw1NzYzMiw1NzYzMyw1NzYzNCw1NzYzNSw1NzYzNiw1NzYzNyw1NzYzOCw1NzYzOSw1NzY0MCw1NzY0MSw1NzY0Miw1NzY0Myw1NzY0NCw1NzY0NSw1NzY0Niw1NzY0Nyw1NzY0OCw1NzY0OSw1NzY1MCw1NzY1MSw1NzY1Miw1NzY1Myw1NzY1NCw1NzY1NSw1NzY1Niw1NzY1Nyw1NzY1OCw1NzY1OSw1NzY2MCw1NzY2MSw1NzY2Miw1NzY2Myw1NzY2NCw1NzY2NSw1NzY2Niw1NzY2Nyw1NzY2OCw1NzY2OSw1NzY3MCw1NzY3MSw1NzY3Miw1NzY3Myw1NzY3NCw1NzY3NSw1NzY3Niw1NzY3Nyw1NzY3OCw1NzY3OSw1NzY4MCw1NzY4MSw1NzY4Miw1NzY4Myw1NzY4NCw1NzY4NSw1NzY4Niw1NzY4Nyw1NzY4OCw1NzY4OSw1NzY5MCw1NzY5MSw1NzY5Miw1NzY5Myw1NzY5NCw1NzY5NSw1NzY5Niw1NzY5Nyw1NzY5OCw1NzY5OSw1NzcwMCw1NzcwMSw1NzcwMiw1NzcwMyw1NzcwNCw1NzcwNSw1NzcwNiw1NzcwNyw1NzcwOCw1NzcwOSw1NzcxMCw1NzcxMSw1NzcxMiw1NzcxMyw1NzcxNCw1NzcxNSw1NzcxNiw1NzcxNyw1NzcxOCw1NzcxOSwyOTkzOSwyOTk0MSwyOTk0NCwyOTk0NSwyOTk0NiwyOTk0NywyOTk0OCwyOTk0OSwyOTk1MCwyOTk1MiwyOTk1MywyOTk1NCwyOTk1NSwyOTk1NywyOTk1OCwyOTk1OSwyOTk2MCwyOTk2MSwyOTk2MiwyOTk2MywyOTk2NCwyOTk2NiwyOTk2OCwyOTk3MCwyOTk3MiwyOTk3MywyOTk3NCwyOTk3NSwyOTk3OSwyOTk4MSwyOTk4MiwyOTk4NCwyOTk4NSwyOTk4NiwyOTk4NywyOTk4OCwyOTk5MCwyOTk5MSwyOTk5NCwyOTk5OCwzMDAwNCwzMDAwNiwzMDAwOSwzMDAxMiwzMDAxMywzMDAxNSwzMDAxNywzMDAxOCwzMDAxOSwzMDAyMCwzMDAyMiwzMDAyMywzMDAyNSwzMDAyNiwzMDAyOSwzMDAzMiwzMDAzMywzMDAzNCwzMDAzNSwzMDAzNywzMDAzOCwzMDAzOSwzMDA0MCwzMDA0NSwzMDA0NiwzMDA0NywzMDA0OCwzMDA0OSwzMDA1MCwzMDA1MSwzMDA1MiwzMDA1NSwzMDA1NiwzMDA1NywzMDA1OSwzMDA2MCwzMDA2MSwzMDA2MiwzMDA2MywzMDA2NCwzMDA2NSwzMDA2NywzMDA2OSwzMDA3MCwzMDA3MSwzMDA3NCwzMDA3NSwzMDA3NiwzMDA3NywzMDA3OCwzMDA4MCwzMDA4MSwzMDA4MiwzMDA4NCwzMDA4NSwzMDA4Nyw1NzcyMCw1NzcyMSw1NzcyMiw1NzcyMyw1NzcyNCw1NzcyNSw1NzcyNiw1NzcyNyw1NzcyOCw1NzcyOSw1NzczMCw1NzczMSw1NzczMiw1NzczMyw1NzczNCw1NzczNSw1NzczNiw1NzczNyw1NzczOCw1NzczOSw1Nzc0MCw1Nzc0MSw1Nzc0Miw1Nzc0Myw1Nzc0NCw1Nzc0NSw1Nzc0Niw1Nzc0Nyw1Nzc0OCw1Nzc0OSw1Nzc1MCw1Nzc1MSw1Nzc1Miw1Nzc1Myw1Nzc1NCw1Nzc1NSw1Nzc1Niw1Nzc1Nyw1Nzc1OCw1Nzc1OSw1Nzc2MCw1Nzc2MSw1Nzc2Miw1Nzc2Myw1Nzc2NCw1Nzc2NSw1Nzc2Niw1Nzc2Nyw1Nzc2OCw1Nzc2OSw1Nzc3MCw1Nzc3MSw1Nzc3Miw1Nzc3Myw1Nzc3NCw1Nzc3NSw1Nzc3Niw1Nzc3Nyw1Nzc3OCw1Nzc3OSw1Nzc4MCw1Nzc4MSw1Nzc4Miw1Nzc4Myw1Nzc4NCw1Nzc4NSw1Nzc4Niw1Nzc4Nyw1Nzc4OCw1Nzc4OSw1Nzc5MCw1Nzc5MSw1Nzc5Miw1Nzc5Myw1Nzc5NCw1Nzc5NSw1Nzc5Niw1Nzc5Nyw1Nzc5OCw1Nzc5OSw1NzgwMCw1NzgwMSw1NzgwMiw1NzgwMyw1NzgwNCw1NzgwNSw1NzgwNiw1NzgwNyw1NzgwOCw1NzgwOSw1NzgxMCw1NzgxMSw1NzgxMiw1NzgxMywzMDA4OCwzMDA4OSwzMDA5MCwzMDA5MiwzMDA5MywzMDA5NCwzMDA5NiwzMDA5OSwzMDEwMSwzMDEwNCwzMDEwNywzMDEwOCwzMDExMCwzMDExNCwzMDExOCwzMDExOSwzMDEyMCwzMDEyMSwzMDEyMiwzMDEyNSwzMDEzNCwzMDEzNSwzMDEzOCwzMDEzOSwzMDE0MywzMDE0NCwzMDE0NSwzMDE1MCwzMDE1NSwzMDE1NiwzMDE1OCwzMDE1OSwzMDE2MCwzMDE2MSwzMDE2MywzMDE2NywzMDE2OSwzMDE3MCwzMDE3MiwzMDE3MywzMDE3NSwzMDE3NiwzMDE3NywzMDE4MSwzMDE4NSwzMDE4OCwzMDE4OSwzMDE5MCwzMDE5MSwzMDE5NCwzMDE5NSwzMDE5NywzMDE5OCwzMDE5OSwzMDIwMCwzMDIwMiwzMDIwMywzMDIwNSwzMDIwNiwzMDIxMCwzMDIxMiwzMDIxNCwzMDIxNSwzMDIxNiwzMDIxNywzMDIxOSwzMDIyMSwzMDIyMiwzMDIyMywzMDIyNSwzMDIyNiwzMDIyNywzMDIyOCwzMDIzMCwzMDIzNCwzMDIzNiwzMDIzNywzMDIzOCwzMDI0MSwzMDI0MywzMDI0NywzMDI0OCwzMDI1MiwzMDI1NCwzMDI1NSwzMDI1NywzMDI1OCwzMDI2MiwzMDI2MywzMDI2NSwzMDI2NiwzMDI2NywzMDI2OSwzMDI3MywzMDI3NCwzMDI3Niw1NzgxNCw1NzgxNSw1NzgxNiw1NzgxNyw1NzgxOCw1NzgxOSw1NzgyMCw1NzgyMSw1NzgyMiw1NzgyMyw1NzgyNCw1NzgyNSw1NzgyNiw1NzgyNyw1NzgyOCw1NzgyOSw1NzgzMCw1NzgzMSw1NzgzMiw1NzgzMyw1NzgzNCw1NzgzNSw1NzgzNiw1NzgzNyw1NzgzOCw1NzgzOSw1Nzg0MCw1Nzg0MSw1Nzg0Miw1Nzg0Myw1Nzg0NCw1Nzg0NSw1Nzg0Niw1Nzg0Nyw1Nzg0OCw1Nzg0OSw1Nzg1MCw1Nzg1MSw1Nzg1Miw1Nzg1Myw1Nzg1NCw1Nzg1NSw1Nzg1Niw1Nzg1Nyw1Nzg1OCw1Nzg1OSw1Nzg2MCw1Nzg2MSw1Nzg2Miw1Nzg2Myw1Nzg2NCw1Nzg2NSw1Nzg2Niw1Nzg2Nyw1Nzg2OCw1Nzg2OSw1Nzg3MCw1Nzg3MSw1Nzg3Miw1Nzg3Myw1Nzg3NCw1Nzg3NSw1Nzg3Niw1Nzg3Nyw1Nzg3OCw1Nzg3OSw1Nzg4MCw1Nzg4MSw1Nzg4Miw1Nzg4Myw1Nzg4NCw1Nzg4NSw1Nzg4Niw1Nzg4Nyw1Nzg4OCw1Nzg4OSw1Nzg5MCw1Nzg5MSw1Nzg5Miw1Nzg5Myw1Nzg5NCw1Nzg5NSw1Nzg5Niw1Nzg5Nyw1Nzg5OCw1Nzg5OSw1NzkwMCw1NzkwMSw1NzkwMiw1NzkwMyw1NzkwNCw1NzkwNSw1NzkwNiw1NzkwNywzMDI3NywzMDI3OCwzMDI3OSwzMDI4MCwzMDI4MSwzMDI4MiwzMDI4MywzMDI4NiwzMDI4NywzMDI4OCwzMDI4OSwzMDI5MCwzMDI5MSwzMDI5MywzMDI5NSwzMDI5NiwzMDI5NywzMDI5OCwzMDI5OSwzMDMwMSwzMDMwMywzMDMwNCwzMDMwNSwzMDMwNiwzMDMwOCwzMDMwOSwzMDMxMCwzMDMxMSwzMDMxMiwzMDMxMywzMDMxNCwzMDMxNiwzMDMxNywzMDMxOCwzMDMyMCwzMDMyMSwzMDMyMiwzMDMyMywzMDMyNCwzMDMyNSwzMDMyNiwzMDMyNywzMDMyOSwzMDMzMCwzMDMzMiwzMDMzNSwzMDMzNiwzMDMzNywzMDMzOSwzMDM0MSwzMDM0NSwzMDM0NiwzMDM0OCwzMDM0OSwzMDM1MSwzMDM1MiwzMDM1NCwzMDM1NiwzMDM1NywzMDM1OSwzMDM2MCwzMDM2MiwzMDM2MywzMDM2NCwzMDM2NSwzMDM2NiwzMDM2NywzMDM2OCwzMDM2OSwzMDM3MCwzMDM3MSwzMDM3MywzMDM3NCwzMDM3NSwzMDM3NiwzMDM3NywzMDM3OCwzMDM3OSwzMDM4MCwzMDM4MSwzMDM4MywzMDM4NCwzMDM4NywzMDM4OSwzMDM5MCwzMDM5MSwzMDM5MiwzMDM5MywzMDM5NCwzMDM5NSwzMDM5NiwzMDM5NywzMDM5OCwzMDQwMCwzMDQwMSwzMDQwMywyMTgzNCwzODQ2MywyMjQ2NywyNTM4NCwyMTcxMCwyMTc2OSwyMTY5NiwzMDM1MywzMDI4NCwzNDEwOCwzMDcwMiwzMzQwNiwzMDg2MSwyOTIzMywzODU1MiwzODc5NywyNzY4OCwyMzQzMywyMDQ3NCwyNTM1MywyNjI2MywyMzczNiwzMzAxOCwyNjY5NiwzMjk0MiwyNjExNCwzMDQxNCwyMDk4NSwyNTk0MiwyOTEwMCwzMjc1MywzNDk0OCwyMDY1OCwyMjg4NSwyNTAzNCwyODU5NSwzMzQ1MywyNTQyMCwyNTE3MCwyMTQ4NSwyMTU0MywzMTQ5NCwyMDg0MywzMDExNiwyNDA1MiwyNTMwMCwzNjI5OSwzODc3NCwyNTIyNiwzMjc5MywyMjM2NSwzODcxMiwzMjYxMCwyOTI0MCwzMDMzMywyNjU3NSwzMDMzNCwyNTY3MCwyMDMzNiwzNjEzMywyNTMwOCwzMTI1NSwyNjAwMSwyOTY3NywyNTY0NCwyNTIwMywzMzMyNCwzOTA0MSwyNjQ5NSwyOTI1NiwyNTE5OCwyNTI5MiwyMDI3NiwyOTkyMywyMTMyMiwyMTE1MCwzMjQ1OCwzNzAzMCwyNDExMCwyNjc1OCwyNzAzNiwzMzE1MiwzMjQ2NSwyNjgzNCwzMDkxNywzNDQ0NCwzODIyNSwyMDYyMSwzNTg3NiwzMzUwMiwzMjk5MCwyMTI1MywzNTA5MCwyMTA5MywzMDQwNCwzMDQwNywzMDQwOSwzMDQxMSwzMDQxMiwzMDQxOSwzMDQyMSwzMDQyNSwzMDQyNiwzMDQyOCwzMDQyOSwzMDQzMCwzMDQzMiwzMDQzMywzMDQzNCwzMDQzNSwzMDQzNiwzMDQzOCwzMDQzOSwzMDQ0MCwzMDQ0MSwzMDQ0MiwzMDQ0MywzMDQ0NCwzMDQ0NSwzMDQ0OCwzMDQ1MSwzMDQ1MywzMDQ1NCwzMDQ1NSwzMDQ1OCwzMDQ1OSwzMDQ2MSwzMDQ2MywzMDQ2NCwzMDQ2NiwzMDQ2NywzMDQ2OSwzMDQ3MCwzMDQ3NCwzMDQ3NiwzMDQ3OCwzMDQ3OSwzMDQ4MCwzMDQ4MSwzMDQ4MiwzMDQ4MywzMDQ4NCwzMDQ4NSwzMDQ4NiwzMDQ4NywzMDQ4OCwzMDQ5MSwzMDQ5MiwzMDQ5MywzMDQ5NCwzMDQ5NywzMDQ5OSwzMDUwMCwzMDUwMSwzMDUwMywzMDUwNiwzMDUwNywzMDUwOCwzMDUxMCwzMDUxMiwzMDUxMywzMDUxNCwzMDUxNSwzMDUxNiwzMDUyMSwzMDUyMywzMDUyNSwzMDUyNiwzMDUyNywzMDUzMCwzMDUzMiwzMDUzMywzMDUzNCwzMDUzNiwzMDUzNywzMDUzOCwzMDUzOSwzMDU0MCwzMDU0MSwzMDU0MiwzMDU0MywzMDU0NiwzMDU0NywzMDU0OCwzMDU0OSwzMDU1MCwzMDU1MSwzMDU1MiwzMDU1MywzMDU1NiwzNDE4MCwzODY0OSwyMDQ0NSwyMjU2MSwzOTI4MSwyMzQ1MywyNTI2NSwyNTI1MywyNjI5MiwzNTk2MSw0MDA3NywyOTE5MCwyNjQ3OSwzMDg2NSwyNDc1NCwyMTMyOSwyMTI3MSwzNjc0NCwzMjk3MiwzNjEyNSwzODA0OSwyMDQ5MywyOTM4NCwyMjc5MSwyNDgxMSwyODk1MywzNDk4NywyMjg2OCwzMzUxOSwyNjQxMiwzMTUyOCwyMzg0OSwzMjUwMywyOTk5NywyNzg5MywzNjQ1NCwzNjg1NiwzNjkyNCw0MDc2MywyNzYwNCwzNzE0NSwzMTUwOCwyNDQ0NCwzMDg4NywzNDAwNiwzNDEwOSwyNzYwNSwyNzYwOSwyNzYwNiwyNDA2NSwyNDE5OSwzMDIwMSwzODM4MSwyNTk0OSwyNDMzMCwyNDUxNywzNjc2NywyMjcyMSwzMzIxOCwzNjk5MSwzODQ5MSwzODgyOSwzNjc5MywzMjUzNCwzNjE0MCwyNTE1MywyMDQxNSwyMTQ2NCwyMTM0MiwzNjc3NiwzNjc3NywzNjc3OSwzNjk0MSwyNjYzMSwyNDQyNiwzMzE3NiwzNDkyMCw0MDE1MCwyNDk3MSwyMTAzNSwzMDI1MCwyNDQyOCwyNTk5NiwyODYyNiwyODM5MiwyMzQ4NiwyNTY3MiwyMDg1MywyMDkxMiwyNjU2NCwxOTk5MywzMTE3NywzOTI5MiwyODg1MSwzMDU1NywzMDU1OCwzMDU1OSwzMDU2MCwzMDU2NCwzMDU2NywzMDU2OSwzMDU3MCwzMDU3MywzMDU3NCwzMDU3NSwzMDU3NiwzMDU3NywzMDU3OCwzMDU3OSwzMDU4MCwzMDU4MSwzMDU4MiwzMDU4MywzMDU4NCwzMDU4NiwzMDU4NywzMDU4OCwzMDU5MywzMDU5NCwzMDU5NSwzMDU5OCwzMDU5OSwzMDYwMCwzMDYwMSwzMDYwMiwzMDYwMywzMDYwNywzMDYwOCwzMDYxMSwzMDYxMiwzMDYxMywzMDYxNCwzMDYxNSwzMDYxNiwzMDYxNywzMDYxOCwzMDYxOSwzMDYyMCwzMDYyMSwzMDYyMiwzMDYyNSwzMDYyNywzMDYyOCwzMDYzMCwzMDYzMiwzMDYzNSwzMDYzNywzMDYzOCwzMDYzOSwzMDY0MSwzMDY0MiwzMDY0NCwzMDY0NiwzMDY0NywzMDY0OCwzMDY0OSwzMDY1MCwzMDY1MiwzMDY1NCwzMDY1NiwzMDY1NywzMDY1OCwzMDY1OSwzMDY2MCwzMDY2MSwzMDY2MiwzMDY2MywzMDY2NCwzMDY2NSwzMDY2NiwzMDY2NywzMDY2OCwzMDY3MCwzMDY3MSwzMDY3MiwzMDY3MywzMDY3NCwzMDY3NSwzMDY3NiwzMDY3NywzMDY3OCwzMDY4MCwzMDY4MSwzMDY4MiwzMDY4NSwzMDY4NiwzMDY4NywzMDY4OCwzMDY4OSwzMDY5MiwzMDE0OSwyNDE4MiwyOTYyNywzMzc2MCwyNTc3MywyNTMyMCwzODA2OSwyNzg3NCwyMTMzOCwyMTE4NywyNTYxNSwzODA4MiwzMTYzNiwyMDI3MSwyNDA5MSwzMzMzNCwzMzA0NiwzMzE2MiwyODE5NiwyNzg1MCwzOTUzOSwyNTQyOSwyMTM0MCwyMTc1NCwzNDkxNywyMjQ5NiwxOTk4MSwyNDA2NywyNzQ5MywzMTgwNywzNzA5NiwyNDU5OCwyNTgzMCwyOTQ2OCwzNTAwOSwyNjQ0OCwyNTE2NSwzNjEzMCwzMDU3MiwzNjM5MywzNzMxOSwyNDQyNSwzMzc1NiwzNDA4MSwzOTE4NCwyMTQ0MiwzNDQ1MywyNzUzMSwyNDgxMywyNDgwOCwyODc5OSwzMzQ4NSwzMzMyOSwyMDE3OSwyNzgxNSwzNDI1NSwyNTgwNSwzMTk2MSwyNzEzMywyNjM2MSwzMzYwOSwyMTM5NywzMTU3NCwyMDM5MSwyMDg3NiwyNzk3OSwyMzYxOCwzNjQ2MSwyNTU1NCwyMTQ0OSwzMzU4MCwzMzU5MCwyNjU5NywzMDkwMCwyNTY2MSwyMzUxOSwyMzcwMCwyNDA0NiwzNTgxNSwyNTI4NiwyNjYxMiwzNTk2MiwyNTYwMCwyNTUzMCwzNDYzMywzOTMwNywzNTg2MywzMjU0NCwzODEzMCwyMDEzNSwzODQxNiwzOTA3NiwyNjEyNCwyOTQ2MiwzMDY5NCwzMDY5NiwzMDY5OCwzMDcwMywzMDcwNCwzMDcwNSwzMDcwNiwzMDcwOCwzMDcwOSwzMDcxMSwzMDcxMywzMDcxNCwzMDcxNSwzMDcxNiwzMDcyMywzMDcyNCwzMDcyNSwzMDcyNiwzMDcyNywzMDcyOCwzMDczMCwzMDczMSwzMDczNCwzMDczNSwzMDczNiwzMDczOSwzMDc0MSwzMDc0NSwzMDc0NywzMDc1MCwzMDc1MiwzMDc1MywzMDc1NCwzMDc1NiwzMDc2MCwzMDc2MiwzMDc2MywzMDc2NiwzMDc2NywzMDc2OSwzMDc3MCwzMDc3MSwzMDc3MywzMDc3NCwzMDc4MSwzMDc4MywzMDc4NSwzMDc4NiwzMDc4NywzMDc4OCwzMDc5MCwzMDc5MiwzMDc5MywzMDc5NCwzMDc5NSwzMDc5NywzMDc5OSwzMDgwMSwzMDgwMywzMDgwNCwzMDgwOCwzMDgwOSwzMDgxMCwzMDgxMSwzMDgxMiwzMDgxNCwzMDgxNSwzMDgxNiwzMDgxNywzMDgxOCwzMDgxOSwzMDgyMCwzMDgyMSwzMDgyMiwzMDgyMywzMDgyNCwzMDgyNSwzMDgzMSwzMDgzMiwzMDgzMywzMDgzNCwzMDgzNSwzMDgzNiwzMDgzNywzMDgzOCwzMDg0MCwzMDg0MSwzMDg0MiwzMDg0MywzMDg0NSwzMDg0NiwzMDg0NywzMDg0OCwzMDg0OSwzMDg1MCwzMDg1MSwyMjMzMCwyMzU4MSwyNDEyMCwzODI3MSwyMDYwNywzMjkyOCwyMTM3OCwyNTk1MCwzMDAyMSwyMTgwOSwyMDUxMywzNjIyOSwyNTIyMCwzODA0NiwyNjM5NywyMjA2NiwyODUyNiwyNDAzNCwyMTU1NywyODgxOCwzNjcxMCwyNTE5OSwyNTc2NCwyNTUwNywyNDQ0MywyODU1MiwzNzEwOCwzMzI1MSwzNjc4NCwyMzU3NiwyNjIxNiwyNDU2MSwyNzc4NSwzODQ3MiwzNjIyNSwzNDkyNCwyNTc0NSwzMTIxNiwyMjQ3OCwyNzIyNSwyNTEwNCwyMTU3NiwyMDA1NiwzMTI0MywyNDgwOSwyODU0OCwzNTgwMiwyNTIxNSwzNjg5NCwzOTU2MywzMTIwNCwyMTUwNywzMDE5NiwyNTM0NSwyMTI3MywyNzc0NCwzNjgzMSwyNDM0NywzOTUzNiwzMjgyNyw0MDgzMSwyMDM2MCwyMzYxMCwzNjE5NiwzMjcwOSwyNjAyMSwyODg2MSwyMDgwNSwyMDkxNCwzNDQxMSwyMzgxNSwyMzQ1NiwyNTI3NywzNzIyOCwzMDA2OCwzNjM2NCwzMTI2NCwyNDgzMywzMTYwOSwyMDE2NywzMjUwNCwzMDU5NywxOTk4NSwzMzI2MSwyMTAyMSwyMDk4NiwyNzI0OSwyMTQxNiwzNjQ4NywzODE0OCwzODYwNywyODM1MywzODUwMCwyNjk3MCwzMDg1MiwzMDg1MywzMDg1NCwzMDg1NiwzMDg1OCwzMDg1OSwzMDg2MywzMDg2NCwzMDg2NiwzMDg2OCwzMDg2OSwzMDg3MCwzMDg3MywzMDg3NywzMDg3OCwzMDg4MCwzMDg4MiwzMDg4NCwzMDg4NiwzMDg4OCwzMDg4OSwzMDg5MCwzMDg5MSwzMDg5MiwzMDg5MywzMDg5NCwzMDg5NSwzMDkwMSwzMDkwMiwzMDkwMywzMDkwNCwzMDkwNiwzMDkwNywzMDkwOCwzMDkwOSwzMDkxMSwzMDkxMiwzMDkxNCwzMDkxNSwzMDkxNiwzMDkxOCwzMDkxOSwzMDkyMCwzMDkyNCwzMDkyNSwzMDkyNiwzMDkyNywzMDkyOSwzMDkzMCwzMDkzMSwzMDkzNCwzMDkzNSwzMDkzNiwzMDkzOCwzMDkzOSwzMDk0MCwzMDk0MSwzMDk0MiwzMDk0MywzMDk0NCwzMDk0NSwzMDk0NiwzMDk0NywzMDk0OCwzMDk0OSwzMDk1MCwzMDk1MSwzMDk1MywzMDk1NCwzMDk1NSwzMDk1NywzMDk1OCwzMDk1OSwzMDk2MCwzMDk2MSwzMDk2MywzMDk2NSwzMDk2NiwzMDk2OCwzMDk2OSwzMDk3MSwzMDk3MiwzMDk3MywzMDk3NCwzMDk3NSwzMDk3NiwzMDk3OCwzMDk3OSwzMDk4MCwzMDk4MiwzMDk4MywzMDk4NCwzMDk4NSwzMDk4NiwzMDk4NywzMDk4OCwzMDc4NCwyMDY0OCwzMDY3OSwyNTYxNiwzNTMwMiwyMjc4OCwyNTU3MSwyNDAyOSwzMTM1OSwyNjk0MSwyMDI1NiwzMzMzNywyMTkxMiwyMDAxOCwzMDEyNiwzMTM4MywyNDE2MiwyNDIwMiwzODM4MywyMTAxOSwyMTU2MSwyODgxMCwyNTQ2MiwzODE4MCwyMjQwMiwyNjE0OSwyNjk0MywzNzI1NSwyMTc2NywyODE0NywzMjQzMSwzNDg1MCwyNTEzOSwzMjQ5NiwzMDEzMywzMzU3NiwzMDkxMywzODYwNCwzNjc2NiwyNDkwNCwyOTk0MywzNTc4OSwyNzQ5MiwyMTA1MCwzNjE3NiwyNzQyNSwzMjg3NCwzMzkwNSwyMjI1NywyMTI1NCwyMDE3NCwxOTk5NSwyMDk0NSwzMTg5NSwzNzI1OSwzMTc1MSwyMDQxOSwzNjQ3OSwzMTcxMywzMTM4OCwyNTcwMywyMzgyOCwyMDY1MiwzMzAzMCwzMDIwOSwzMTkyOSwyODE0MCwzMjczNiwyNjQ0OSwyMzM4NCwyMzU0NCwzMDkyMywyNTc3NCwyNTYxOSwyNTUxNCwyNTM4NywzODE2OSwyNTY0NSwzNjc5OCwzMTU3MiwzMDI0OSwyNTE3MSwyMjgyMywyMTU3NCwyNzUxMywyMDY0MywyNTE0MCwyNDEwMiwyNzUyNiwyMDE5NSwzNjE1MSwzNDk1NSwyNDQ1MywzNjkxMCwzMDk4OSwzMDk5MCwzMDk5MSwzMDk5MiwzMDk5MywzMDk5NCwzMDk5NiwzMDk5NywzMDk5OCwzMDk5OSwzMTAwMCwzMTAwMSwzMTAwMiwzMTAwMywzMTAwNCwzMTAwNSwzMTAwNywzMTAwOCwzMTAwOSwzMTAxMCwzMTAxMSwzMTAxMywzMTAxNCwzMTAxNSwzMTAxNiwzMTAxNywzMTAxOCwzMTAxOSwzMTAyMCwzMTAyMSwzMTAyMiwzMTAyMywzMTAyNCwzMTAyNSwzMTAyNiwzMTAyNywzMTAyOSwzMTAzMCwzMTAzMSwzMTAzMiwzMTAzMywzMTAzNywzMTAzOSwzMTA0MiwzMTA0MywzMTA0NCwzMTA0NSwzMTA0NywzMTA1MCwzMTA1MSwzMTA1MiwzMTA1MywzMTA1NCwzMTA1NSwzMTA1NiwzMTA1NywzMTA1OCwzMTA2MCwzMTA2MSwzMTA2NCwzMTA2NSwzMTA3MywzMTA3NSwzMTA3NiwzMTA3OCwzMTA4MSwzMTA4MiwzMTA4MywzMTA4NCwzMTA4NiwzMTA4OCwzMTA4OSwzMTA5MCwzMTA5MSwzMTA5MiwzMTA5MywzMTA5NCwzMTA5NywzMTA5OSwzMTEwMCwzMTEwMSwzMTEwMiwzMTEwMywzMTEwNiwzMTEwNywzMTExMCwzMTExMSwzMTExMiwzMTExMywzMTExNSwzMTExNiwzMTExNywzMTExOCwzMTEyMCwzMTEyMSwzMTEyMiwyNDYwOCwzMjgyOSwyNTI4NSwyMDAyNSwyMTMzMywzNzExMiwyNTUyOCwzMjk2NiwyNjA4NiwyNzY5NCwyMDI5NCwyNDgxNCwyODEyOSwzNTgwNiwyNDM3NywzNDUwNywyNDQwMywyNTM3NywyMDgyNiwzMzYzMywyNjcyMywyMDk5MiwyNTQ0MywzNjQyNCwyMDQ5OCwyMzcwNywzMTA5NSwyMzU0OCwyMTA0MCwzMTI5MSwyNDc2NCwzNjk0NywzMDQyMywyNDUwMywyNDQ3MSwzMDM0MCwzNjQ2MCwyODc4MywzMDMzMSwzMTU2MSwzMDYzNCwyMDk3OSwzNzAxMSwyMjU2NCwyMDMwMiwyODQwNCwzNjg0MiwyNTkzMiwzMTUxNSwyOTM4MCwyODA2OCwzMjczNSwyMzI2NSwyNTI2OSwyNDIxMywyMjMyMCwzMzkyMiwzMTUzMiwyNDA5MywyNDM1MSwzNjg4MiwzMjUzMiwzOTA3MiwyNTQ3NCwyODM1OSwzMDg3MiwyODg1NywyMDg1NiwzODc0NywyMjQ0MywzMDAwNSwyMDI5MSwzMDAwOCwyNDIxNSwyNDgwNiwyMjg4MCwyODA5NiwyNzU4MywzMDg1NywyMTUwMCwzODYxMywyMDkzOSwyMDk5MywyNTQ4MSwyMTUxNCwzODAzNSwzNTg0MywzNjMwMCwyOTI0MSwzMDg3OSwzNDY3OCwzNjg0NSwzNTg1MywyMTQ3MiwzMTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyNywzMTEyOCwzMTEyOSwzMTEzMSwzMTEzMiwzMTEzMywzMTEzNCwzMTEzNSwzMTEzNiwzMTEzNywzMTEzOCwzMTEzOSwzMTE0MCwzMTE0MSwzMTE0MiwzMTE0NCwzMTE0NSwzMTE0NiwzMTE0NywzMTE0OCwzMTE0OSwzMTE1MCwzMTE1MSwzMTE1MiwzMTE1MywzMTE1NCwzMTE1NiwzMTE1NywzMTE1OCwzMTE1OSwzMTE2MCwzMTE2NCwzMTE2NywzMTE3MCwzMTE3MiwzMTE3MywzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MCwzMTE4MiwzMTE4MywzMTE4NCwzMTE4NywzMTE4OCwzMTE5MCwzMTE5MSwzMTE5MywzMTE5NCwzMTE5NSwzMTE5NiwzMTE5NywzMTE5OCwzMTIwMCwzMTIwMSwzMTIwMiwzMTIwNSwzMTIwOCwzMTIxMCwzMTIxMiwzMTIxNCwzMTIxNywzMTIxOCwzMTIxOSwzMTIyMCwzMTIyMSwzMTIyMiwzMTIyMywzMTIyNSwzMTIyNiwzMTIyOCwzMTIzMCwzMTIzMSwzMTIzMywzMTIzNiwzMTIzNywzMTIzOSwzMTI0MCwzMTI0MSwzMTI0MiwzMTI0NCwzMTI0NywzMTI0OCwzMTI0OSwzMTI1MCwzMTI1MSwzMTI1MywzMTI1NCwzMTI1NiwzMTI1NywzMTI1OSwzMTI2MCwxOTk2OSwzMDQ0NywyMTQ4NiwzODAyNSwzOTAzMCw0MDcxOCwzODE4OSwyMzQ1MCwzNTc0NiwyMDAwMiwxOTk5NiwyMDkwOCwzMzg5MSwyNTAyNiwyMTE2MCwyNjYzNSwyMDM3NSwyNDY4MywyMDkyMywyNzkzNCwyMDgyOCwyNTIzOCwyNjAwNywzODQ5NywzNTkxMCwzNjg4NywzMDE2OCwzNzExNywzMDU2MywyNzYwMiwyOTMyMiwyOTQyMCwzNTgzNSwyMjU4MSwzMDU4NSwzNjE3MiwyNjQ2MCwzODIwOCwzMjkyMiwyNDIzMCwyODE5MywyMjkzMCwzMTQ3MSwzMDcwMSwzODIwMywyNzU3MywyNjAyOSwzMjUyNiwyMjUzNCwyMDgxNywzODQzMSwyMzU0NSwyMjY5NywyMTU0NCwzNjQ2NiwyNTk1OCwzOTAzOSwyMjI0NCwzODA0NSwzMDQ2MiwzNjkyOSwyNTQ3OSwyMTcwMiwyMjgxMCwyMjg0MiwyMjQyNywzNjUzMCwyNjQyMSwzNjM0NiwzMzMzMywyMTA1NywyNDgxNiwyMjU0OSwzNDU1OCwyMzc4NCw0MDUxNywyMDQyMCwzOTA2OSwzNTc2OSwyMzA3NywyNDY5NCwyMTM4MCwyNTIxMiwzNjk0MywzNzEyMiwzOTI5NSwyNDY4MSwzMjc4MCwyMDc5OSwzMjgxOSwyMzU3MiwzOTI4NSwyNzk1MywyMDEwOCwzMTI2MSwzMTI2MywzMTI2NSwzMTI2NiwzMTI2OCwzMTI2OSwzMTI3MCwzMTI3MSwzMTI3MiwzMTI3MywzMTI3NCwzMTI3NSwzMTI3NiwzMTI3NywzMTI3OCwzMTI3OSwzMTI4MCwzMTI4MSwzMTI4MiwzMTI4NCwzMTI4NSwzMTI4NiwzMTI4OCwzMTI5MCwzMTI5NCwzMTI5NiwzMTI5NywzMTI5OCwzMTI5OSwzMTMwMCwzMTMwMSwzMTMwMywzMTMwNCwzMTMwNSwzMTMwNiwzMTMwNywzMTMwOCwzMTMwOSwzMTMxMCwzMTMxMSwzMTMxMiwzMTMxNCwzMTMxNSwzMTMxNiwzMTMxNywzMTMxOCwzMTMyMCwzMTMyMSwzMTMyMiwzMTMyMywzMTMyNCwzMTMyNSwzMTMyNiwzMTMyNywzMTMyOCwzMTMyOSwzMTMzMCwzMTMzMSwzMTMzMiwzMTMzMywzMTMzNCwzMTMzNSwzMTMzNiwzMTMzNywzMTMzOCwzMTMzOSwzMTM0MCwzMTM0MSwzMTM0MiwzMTM0MywzMTM0NSwzMTM0NiwzMTM0NywzMTM0OSwzMTM1NSwzMTM1NiwzMTM1NywzMTM1OCwzMTM2MiwzMTM2NSwzMTM2NywzMTM2OSwzMTM3MCwzMTM3MSwzMTM3MiwzMTM3NCwzMTM3NSwzMTM3NiwzMTM3OSwzMTM4MCwzMTM4NSwzMTM4NiwzMTM4NywzMTM5MCwzMTM5MywzMTM5NCwzNjE0NCwyMTQ1NywzMjYwMiwzMTU2NywyMDI0MCwyMDA0NywzODQwMCwyNzg2MSwyOTY0OCwzNDI4MSwyNDA3MCwzMDA1OCwzMjc2MywyNzE0NiwzMDcxOCwzODAzNCwzMjMyMSwyMDk2MSwyODkwMiwyMTQ1MywzNjgyMCwzMzUzOSwzNjEzNywyOTM1OSwzOTI3NywyNzg2NywyMjM0NiwzMzQ1OSwyNjA0MSwzMjkzOCwyNTE1MSwzODQ1MCwyMjk1MiwyMDIyMywzNTc3NSwzMjQ0MiwyNTkxOCwzMzc3OCwzODc1MCwyMTg1NywzOTEzNCwzMjkzMywyMTI5MCwzNTgzNywyMTUzNiwzMjk1NCwyNDIyMywyNzgzMiwzNjE1MywzMzQ1MiwzNzIxMCwyMTU0NSwyNzY3NSwyMDk5OCwzMjQzOSwyMjM2NywyODk1NCwyNzc3NCwzMTg4MSwyMjg1OSwyMDIyMSwyNDU3NSwyNDg2OCwzMTkxNCwyMDAxNiwyMzU1MywyNjUzOSwzNDU2MiwyMzc5MiwzODE1NSwzOTExOCwzMDEyNywyODkyNSwzNjg5OCwyMDkxMSwzMjU0MSwzNTc3MywyMjg1NywyMDk2NCwyMDMxNSwyMTU0MiwyMjgyNywyNTk3NSwzMjkzMiwyMzQxMywyNTIwNiwyNTI4MiwzNjc1MiwyNDEzMywyNzY3OSwzMTUyNiwyMDIzOSwyMDQ0MCwyNjM4MSwzMTM5NSwzMTM5NiwzMTM5OSwzMTQwMSwzMTQwMiwzMTQwMywzMTQwNiwzMTQwNywzMTQwOCwzMTQwOSwzMTQxMCwzMTQxMiwzMTQxMywzMTQxNCwzMTQxNSwzMTQxNiwzMTQxNywzMTQxOCwzMTQxOSwzMTQyMCwzMTQyMSwzMTQyMiwzMTQyNCwzMTQyNSwzMTQyNiwzMTQyNywzMTQyOCwzMTQyOSwzMTQzMCwzMTQzMSwzMTQzMiwzMTQzMywzMTQzNCwzMTQzNiwzMTQzNywzMTQzOCwzMTQzOSwzMTQ0MCwzMTQ0MSwzMTQ0MiwzMTQ0MywzMTQ0NCwzMTQ0NSwzMTQ0NywzMTQ0OCwzMTQ1MCwzMTQ1MSwzMTQ1MiwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MCwzMTQ2MywzMTQ2NCwzMTQ2NSwzMTQ2NiwzMTQ2NywzMTQ2OCwzMTQ3MCwzMTQ3MiwzMTQ3MywzMTQ3NCwzMTQ3NSwzMTQ3NiwzMTQ3NywzMTQ3OCwzMTQ3OSwzMTQ4MCwzMTQ4MywzMTQ4NCwzMTQ4NiwzMTQ4OCwzMTQ4OSwzMTQ5MCwzMTQ5MywzMTQ5NSwzMTQ5NywzMTUwMCwzMTUwMSwzMTUwMiwzMTUwNCwzMTUwNiwzMTUwNywzMTUxMCwzMTUxMSwzMTUxMiwzMTUxNCwzMTUxNiwzMTUxNywzMTUxOSwzMTUyMSwzMTUyMiwzMTUyMywzMTUyNywzMTUyOSwzMTUzMywyODAxNCwyODA3NCwzMTExOSwzNDk5MywyNDM0MywyOTk5NSwyNTI0MiwzNjc0MSwyMDQ2MywzNzM0MCwyNjAyMywzMzA3MSwzMzEwNSwyNDIyMCwzMzEwNCwzNjIxMiwyMTEwMywzNTIwNiwzNjE3MSwyMjc5NywyMDYxMywyMDE4NCwzODQyOCwyOTIzOCwzMzE0NSwzNjEyNywyMzUwMCwzNTc0NywzODQ2OCwyMjkxOSwzMjUzOCwyMTY0OCwyMjEzNCwyMjAzMCwzNTgxMywyNTkxMywyNzAxMCwzODA0MSwzMDQyMiwyODI5NywyNDE3OCwyOTk3NiwyNjQzOCwyNjU3NywzMTQ4NywzMjkyNSwzNjIxNCwyNDg2MywzMTE3NCwyNTk1NCwzNjE5NSwyMDg3MiwyMTAxOCwzODA1MCwzMjU2OCwzMjkyMywzMjQzNCwyMzcwMywyODIwNywyNjQ2NCwzMTcwNSwzMDM0NywzOTY0MCwzMzE2NywzMjY2MCwzMTk1NywyNTYzMCwzODIyNCwzMTI5NSwyMTU3OCwyMTczMywyNzQ2OCwyNTYwMSwyNTA5Niw0MDUwOSwzMzAxMSwzMDEwNSwyMTEwNiwzODc2MSwzMzg4MywyNjY4NCwzNDUzMiwzODQwMSwzODU0OCwzODEyNCwyMDAxMCwyMTUwOCwzMjQ3MywyNjY4MSwzNjMxOSwzMjc4OSwyNjM1NiwyNDIxOCwzMjY5NywzMTUzNSwzMTUzNiwzMTUzOCwzMTU0MCwzMTU0MSwzMTU0MiwzMTU0MywzMTU0NSwzMTU0NywzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1NCwzMTU1NSwzMTU1NiwzMTU1OCwzMTU2MCwzMTU2MiwzMTU2NSwzMTU2NiwzMTU3MSwzMTU3MywzMTU3NSwzMTU3NywzMTU4MCwzMTU4MiwzMTU4MywzMTU4NSwzMTU4NywzMTU4OCwzMTU4OSwzMTU5MCwzMTU5MSwzMTU5MiwzMTU5MywzMTU5NCwzMTU5NSwzMTU5NiwzMTU5NywzMTU5OSwzMTYwMCwzMTYwMywzMTYwNCwzMTYwNiwzMTYwOCwzMTYxMCwzMTYxMiwzMTYxMywzMTYxNSwzMTYxNywzMTYxOCwzMTYxOSwzMTYyMCwzMTYyMiwzMTYyMywzMTYyNCwzMTYyNSwzMTYyNiwzMTYyNywzMTYyOCwzMTYzMCwzMTYzMSwzMTYzMywzMTYzNCwzMTYzNSwzMTYzOCwzMTY0MCwzMTY0MSwzMTY0MiwzMTY0MywzMTY0NiwzMTY0NywzMTY0OCwzMTY1MSwzMTY1MiwzMTY1MywzMTY2MiwzMTY2MywzMTY2NCwzMTY2NiwzMTY2NywzMTY2OSwzMTY3MCwzMTY3MSwzMTY3MywzMTY3NCwzMTY3NSwzMTY3NiwzMTY3NywzMTY3OCwzMTY3OSwzMTY4MCwzMTY4MiwzMTY4MywzMTY4NCwyMjQ2NiwzMjgzMSwyNjc3NSwyNDAzNywyNTkxNSwyMTE1MSwyNDY4NSw0MDg1OCwyMDM3OSwzNjUyNCwyMDg0NCwyMzQ2NywyNDMzOSwyNDA0MSwyNzc0MiwyNTMyOSwzNjEyOSwyMDg0OSwzODA1NywyMTI0NiwyNzgwNywzMzUwMywyOTM5OSwyMjQzNCwyNjUwMCwzNjE0MSwyMjgxNSwzNjc2NCwzMzczNSwyMTY1MywzMTYyOSwyMDI3MiwyNzgzNywyMzM5NiwyMjk5Myw0MDcyMywyMTQ3NiwzNDUwNiwzOTU5MiwzNTg5NSwzMjkyOSwyNTkyNSwzOTAzOCwyMjI2NiwzODU5OSwyMTAzOCwyOTkxNiwyMTA3MiwyMzUyMSwyNTM0NiwzNTA3NCwyMDA1NCwyNTI5NiwyNDYxOCwyNjg3NCwyMDg1MSwyMzQ0OCwyMDg5NiwzNTI2NiwzMTY0OSwzOTMwMiwzMjU5MiwyNDgxNSwyODc0OCwzNjE0MywyMDgwOSwyNDE5MSwzNjg5MSwyOTgwOCwzNTI2OCwyMjMxNywzMDc4OSwyNDQwMiw0MDg2MywzODM5NCwzNjcxMiwzOTc0MCwzNTgwOSwzMDMyOCwyNjY5MCwyNjU4OCwzNjMzMCwzNjE0OSwyMTA1MywzNjc0NiwyODM3OCwyNjgyOSwzODE0OSwzNzEwMSwyMjI2OSwyNjUyNCwzNTA2NSwzNjgwNywyMTcwNCwzMTY4NSwzMTY4OCwzMTY4OSwzMTY5MCwzMTY5MSwzMTY5MywzMTY5NCwzMTY5NSwzMTY5NiwzMTY5OCwzMTcwMCwzMTcwMSwzMTcwMiwzMTcwMywzMTcwNCwzMTcwNywzMTcwOCwzMTcxMCwzMTcxMSwzMTcxMiwzMTcxNCwzMTcxNSwzMTcxNiwzMTcxOSwzMTcyMCwzMTcyMSwzMTcyMywzMTcyNCwzMTcyNSwzMTcyNywzMTcyOCwzMTczMCwzMTczMSwzMTczMiwzMTczMywzMTczNCwzMTczNiwzMTczNywzMTczOCwzMTczOSwzMTc0MSwzMTc0MywzMTc0NCwzMTc0NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc0OSwzMTc1MCwzMTc1MiwzMTc1MywzMTc1NCwzMTc1NywzMTc1OCwzMTc2MCwzMTc2MSwzMTc2MiwzMTc2MywzMTc2NCwzMTc2NSwzMTc2NywzMTc2OCwzMTc2OSwzMTc3MCwzMTc3MSwzMTc3MiwzMTc3MywzMTc3NCwzMTc3NiwzMTc3NywzMTc3OCwzMTc3OSwzMTc4MCwzMTc4MSwzMTc4NCwzMTc4NSwzMTc4NywzMTc4OCwzMTc4OSwzMTc5MCwzMTc5MSwzMTc5MiwzMTc5MywzMTc5NCwzMTc5NSwzMTc5NiwzMTc5NywzMTc5OCwzMTc5OSwzMTgwMSwzMTgwMiwzMTgwMywzMTgwNCwzMTgwNSwzMTgwNiwzMTgxMCwzOTYwOCwyMzQwMSwyODAyMywyNzY4NiwyMDEzMywyMzQ3NSwzOTU1OSwzNzIxOSwyNTAwMCwzNzAzOSwzODg4OSwyMTU0NywyODA4NSwyMzUwNiwyMDk4OSwyMTg5OCwzMjU5NywzMjc1MiwyNTc4OCwyNTQyMSwyNjA5NywyNTAyMiwyNDcxNywyODkzOCwyNzczNSwyNzcyMSwyMjgzMSwyNjQ3NywzMzMyMiwyMjc0MSwyMjE1OCwzNTk0NiwyNzYyNywzNzA4NSwyMjkwOSwzMjc5MSwyMTQ5NSwyODAwOSwyMTYyMSwyMTkxNywzMzY1NSwzMzc0MywyNjY4MCwzMTE2NiwyMTY0NCwyMDMwOSwyMTUxMiwzMDQxOCwzNTk3NywzODQwMiwyNzgyNywyODA4OCwzNjIwMywzNTA4OCw0MDU0OCwzNjE1NCwyMjA3OSw0MDY1NywzMDE2NSwyNDQ1NiwyOTQwOCwyNDY4MCwyMTc1NiwyMDEzNiwyNzE3OCwzNDkxMywyNDY1OCwzNjcyMCwyMTcwMCwyODg4OCwzNDQyNSw0MDUxMSwyNzk0NiwyMzQzOSwyNDM0NCwzMjQxOCwyMTg5NywyMDM5OSwyOTQ5MiwyMTU2NCwyMTQwMiwyMDUwNSwyMTUxOCwyMTYyOCwyMDA0NiwyNDU3MywyOTc4NiwyMjc3NCwzMzg5OSwzMjk5MywzNDY3NiwyOTM5MiwzMTk0NiwyODI0NiwzMTgxMSwzMTgxMiwzMTgxMywzMTgxNCwzMTgxNSwzMTgxNiwzMTgxNywzMTgxOCwzMTgxOSwzMTgyMCwzMTgyMiwzMTgyMywzMTgyNCwzMTgyNSwzMTgyNiwzMTgyNywzMTgyOCwzMTgyOSwzMTgzMCwzMTgzMSwzMTgzMiwzMTgzMywzMTgzNCwzMTgzNSwzMTgzNiwzMTgzNywzMTgzOCwzMTgzOSwzMTg0MCwzMTg0MSwzMTg0MiwzMTg0MywzMTg0NCwzMTg0NSwzMTg0NiwzMTg0NywzMTg0OCwzMTg0OSwzMTg1MCwzMTg1MSwzMTg1MiwzMTg1MywzMTg1NCwzMTg1NSwzMTg1NiwzMTg1NywzMTg1OCwzMTg2MSwzMTg2MiwzMTg2MywzMTg2NCwzMTg2NSwzMTg2NiwzMTg3MCwzMTg3MSwzMTg3MiwzMTg3MywzMTg3NCwzMTg3NSwzMTg3NiwzMTg3NywzMTg3OCwzMTg3OSwzMTg4MCwzMTg4MiwzMTg4MywzMTg4NCwzMTg4NSwzMTg4NiwzMTg4NywzMTg4OCwzMTg5MSwzMTg5MiwzMTg5NCwzMTg5NywzMTg5OCwzMTg5OSwzMTkwNCwzMTkwNSwzMTkwNywzMTkxMCwzMTkxMSwzMTkxMiwzMTkxMywzMTkxNSwzMTkxNiwzMTkxNywzMTkxOSwzMTkyMCwzMTkyNCwzMTkyNSwzMTkyNiwzMTkyNywzMTkyOCwzMTkzMCwzMTkzMSwyNDM1OSwzNDM4MiwyMTgwNCwyNTI1MiwyMDExNCwyNzgxOCwyNTE0MywzMzQ1NywyMTcxOSwyMTMyNiwyOTUwMiwyODM2OSwzMDAxMSwyMTAxMCwyMTI3MCwzNTgwNSwyNzA4OCwyNDQ1OCwyNDU3NiwyODE0MiwyMjM1MSwyNzQyNiwyOTYxNSwyNjcwNywzNjgyNCwzMjUzMSwyNTQ0MiwyNDczOSwyMTc5NiwzMDE4NiwzNTkzOCwyODk0OSwyODA2NywyMzQ2MiwyNDE4NywzMzYxOCwyNDkwOCw0MDY0NCwzMDk3MCwzNDY0NywzMTc4MywzMDM0MywyMDk3NiwyNDgyMiwyOTAwNCwyNjE3OSwyNDE0MCwyNDY1MywzNTg1NCwyODc4NCwyNTM4MSwzNjc0NSwyNDUwOSwyNDY3NCwzNDUxNiwyMjIzOCwyNzU4NSwyNDcyNCwyNDkzNSwyMTMyMSwyNDgwMCwyNjIxNCwzNjE1OSwzMTIyOSwyMDI1MCwyODkwNSwyNzcxOSwzNTc2MywzNTgyNiwzMjQ3MiwzMzYzNiwyNjEyNywyMzEzMCwzOTc0NiwyNzk4NSwyODE1MSwzNTkwNSwyNzk2MywyMDI0OSwyODc3OSwzMzcxOSwyNTExMCwyNDc4NSwzODY2OSwzNjEzNSwzMTA5NiwyMDk4NywyMjMzNCwyMjUyMiwyNjQyNiwzMDA3MiwzMTI5MywzMTIxNSwzMTYzNywzMTkzNSwzMTkzNiwzMTkzOCwzMTkzOSwzMTk0MCwzMTk0MiwzMTk0NSwzMTk0NywzMTk1MCwzMTk1MSwzMTk1MiwzMTk1MywzMTk1NCwzMTk1NSwzMTk1NiwzMTk2MCwzMTk2MiwzMTk2MywzMTk2NSwzMTk2NiwzMTk2OSwzMTk3MCwzMTk3MSwzMTk3MiwzMTk3MywzMTk3NCwzMTk3NSwzMTk3NywzMTk3OCwzMTk3OSwzMTk4MCwzMTk4MSwzMTk4MiwzMTk4NCwzMTk4NSwzMTk4NiwzMTk4NywzMTk4OCwzMTk4OSwzMTk5MCwzMTk5MSwzMTk5MywzMTk5NCwzMTk5NiwzMTk5NywzMTk5OCwzMTk5OSwzMjAwMCwzMjAwMSwzMjAwMiwzMjAwMywzMjAwNCwzMjAwNSwzMjAwNiwzMjAwNywzMjAwOCwzMjAwOSwzMjAxMSwzMjAxMiwzMjAxMywzMjAxNCwzMjAxNSwzMjAxNiwzMjAxNywzMjAxOCwzMjAxOSwzMjAyMCwzMjAyMSwzMjAyMiwzMjAyMywzMjAyNCwzMjAyNSwzMjAyNiwzMjAyNywzMjAyOCwzMjAyOSwzMjAzMCwzMjAzMSwzMjAzMywzMjAzNSwzMjAzNiwzMjAzNywzMjAzOCwzMjA0MCwzMjA0MSwzMjA0MiwzMjA0NCwzMjA0NSwzMjA0NiwzMjA0OCwzMjA0OSwzMjA1MCwzMjA1MSwzMjA1MiwzMjA1MywzMjA1NCwzMjkwOCwzOTI2OSwzNjg1NywyODYwOCwzNTc0OSw0MDQ4MSwyMzAyMCwzMjQ4OSwzMjUyMSwyMTUxMywyNjQ5NywyNjg0MCwzNjc1MywzMTgyMSwzODU5OCwyMTQ1MCwyNDYxMywzMDE0MiwyNzc2MiwyMTM2MywyMzI0MSwzMjQyMywyNTM4MCwyMDk2MCwzMzAzNCwyNDA0OSwzNDAxNSwyNTIxNiwyMDg2NCwyMzM5NSwyMDIzOCwzMTA4NSwyMTA1OCwyNDc2MCwyNzk4MiwyMzQ5MiwyMzQ5MCwzNTc0NSwzNTc2MCwyNjA4MiwyNDUyNCwzODQ2OSwyMjkzMSwzMjQ4NywzMjQyNiwyMjAyNSwyNjU1MSwyMjg0MSwyMDMzOSwyMzQ3OCwyMTE1MiwzMzYyNiwzOTA1MCwzNjE1OCwzMDAwMiwzODA3OCwyMDU1MSwzMTI5MiwyMDIxNSwyNjU1MCwzOTU1MCwyMzIzMywyNzUxNiwzMDQxNywyMjM2MiwyMzU3NCwzMTU0NiwzODM4OCwyOTAwNiwyMDg2MCwzMjkzNywzMzM5MiwyMjkwNCwzMjUxNiwzMzU3NSwyNjgxNiwyNjYwNCwzMDg5NywzMDgzOSwyNTMxNSwyNTQ0MSwzMTYxNiwyMDQ2MSwyMTA5OCwyMDk0MywzMzYxNiwyNzA5OSwzNzQ5MiwzNjM0MSwzNjE0NSwzNTI2NSwzODE5MCwzMTY2MSwyMDIxNCwzMjA1NSwzMjA1NiwzMjA1NywzMjA1OCwzMjA1OSwzMjA2MCwzMjA2MSwzMjA2MiwzMjA2MywzMjA2NCwzMjA2NSwzMjA2NiwzMjA2NywzMjA2OCwzMjA2OSwzMjA3MCwzMjA3MSwzMjA3MiwzMjA3MywzMjA3NCwzMjA3NSwzMjA3NiwzMjA3NywzMjA3OCwzMjA3OSwzMjA4MCwzMjA4MSwzMjA4MiwzMjA4MywzMjA4NCwzMjA4NSwzMjA4NiwzMjA4NywzMjA4OCwzMjA4OSwzMjA5MCwzMjA5MSwzMjA5MiwzMjA5MywzMjA5NCwzMjA5NSwzMjA5NiwzMjA5NywzMjA5OCwzMjA5OSwzMjEwMCwzMjEwMSwzMjEwMiwzMjEwMywzMjEwNCwzMjEwNSwzMjEwNiwzMjEwNywzMjEwOCwzMjEwOSwzMjExMSwzMjExMiwzMjExMywzMjExNCwzMjExNSwzMjExNiwzMjExNywzMjExOCwzMjEyMCwzMjEyMSwzMjEyMiwzMjEyMywzMjEyNCwzMjEyNSwzMjEyNiwzMjEyNywzMjEyOCwzMjEyOSwzMjEzMCwzMjEzMSwzMjEzMiwzMjEzMywzMjEzNCwzMjEzNSwzMjEzNiwzMjEzNywzMjEzOCwzMjEzOSwzMjE0MCwzMjE0MSwzMjE0MiwzMjE0MywzMjE0NCwzMjE0NSwzMjE0NiwzMjE0NywzMjE0OCwzMjE0OSwzMjE1MCwzMjE1MSwzMjE1MiwyMDU4MSwzMzMyOCwyMTA3MywzOTI3OSwyODE3NiwyODI5MywyODA3MSwyNDMxNCwyMDcyNSwyMzAwNCwyMzU1OCwyNzk3NCwyNzc0MywzMDA4NiwzMzkzMSwyNjcyOCwyMjg3MCwzNTc2MiwyMTI4MCwzNzIzMywzODQ3NywzNDEyMSwyNjg5OCwzMDk3NywyODk2NiwzMzAxNCwyMDEzMiwzNzA2NiwyNzk3NSwzOTU1NiwyMzA0NywyMjIwNCwyNTYwNSwzODEyOCwzMDY5OSwyMDM4OSwzMzA1MCwyOTQwOSwzNTI4MiwzOTI5MCwzMjU2NCwzMjQ3OCwyMTExOSwyNTk0NSwzNzIzNywzNjczNSwzNjczOSwyMTQ4MywzMTM4MiwyNTU4MSwyNTUwOSwzMDM0MiwzMTIyNCwzNDkwMywzODQ1NCwyNTEzMCwyMTE2MywzMzQxMCwyNjcwOCwyNjQ4MCwyNTQ2MywzMDU3MSwzMTQ2OSwyNzkwNSwzMjQ2NywzNTI5OSwyMjk5MiwyNTEwNiwzNDI0OSwzMzQ0NSwzMDAyOCwyMDUxMSwyMDE3MSwzMDExNywzNTgxOSwyMzYyNiwyNDA2MiwzMTU2MywyNjAyMCwzNzMyOSwyMDE3MCwyNzk0MSwzNTE2NywzMjAzOSwzODE4MiwyMDE2NSwzNTg4MCwzNjgyNywzODc3MSwyNjE4NywzMTEwNSwzNjgxNywyODkwOCwyODAyNCwzMjE1MywzMjE1NCwzMjE1NSwzMjE1NiwzMjE1NywzMjE1OCwzMjE1OSwzMjE2MCwzMjE2MSwzMjE2MiwzMjE2MywzMjE2NCwzMjE2NSwzMjE2NywzMjE2OCwzMjE2OSwzMjE3MCwzMjE3MSwzMjE3MiwzMjE3MywzMjE3NSwzMjE3NiwzMjE3NywzMjE3OCwzMjE3OSwzMjE4MCwzMjE4MSwzMjE4MiwzMjE4MywzMjE4NCwzMjE4NSwzMjE4NiwzMjE4NywzMjE4OCwzMjE4OSwzMjE5MCwzMjE5MSwzMjE5MiwzMjE5MywzMjE5NCwzMjE5NSwzMjE5NiwzMjE5NywzMjE5OCwzMjE5OSwzMjIwMCwzMjIwMSwzMjIwMiwzMjIwMywzMjIwNCwzMjIwNSwzMjIwNiwzMjIwNywzMjIwOCwzMjIwOSwzMjIxMCwzMjIxMSwzMjIxMiwzMjIxMywzMjIxNCwzMjIxNSwzMjIxNiwzMjIxNywzMjIxOCwzMjIxOSwzMjIyMCwzMjIyMSwzMjIyMiwzMjIyMywzMjIyNCwzMjIyNSwzMjIyNiwzMjIyNywzMjIyOCwzMjIyOSwzMjIzMCwzMjIzMSwzMjIzMiwzMjIzMywzMjIzNCwzMjIzNSwzMjIzNiwzMjIzNywzMjIzOCwzMjIzOSwzMjI0MCwzMjI0MSwzMjI0MiwzMjI0MywzMjI0NCwzMjI0NSwzMjI0NiwzMjI0NywzMjI0OCwzMjI0OSwzMjI1MCwyMzYxMywyMTE3MCwzMzYwNiwyMDgzNCwzMzU1MCwzMDU1NSwyNjIzMCw0MDEyMCwyMDE0MCwyNDc3OCwzMTkzNCwzMTkyMywzMjQ2MywyMDExNywzNTY4NiwyNjIyMywzOTA0OCwzODc0NSwyMjY1OSwyNTk2NCwzODIzNiwyNDQ1MiwzMDE1MywzODc0MiwzMTQ1NSwzMTQ1NCwyMDkyOCwyODg0NywzMTM4NCwyNTU3OCwzMTM1MCwzMjQxNiwyOTU5MCwzODg5MywyMDAzNywyODc5MiwyMDA2MSwzNzIwMiwyMTQxNywyNTkzNywyNjA4NywzMzI3NiwzMzI4NSwyMTY0NiwyMzYwMSwzMDEwNiwzODgxNiwyNTMwNCwyOTQwMSwzMDE0MSwyMzYyMSwzOTU0NSwzMzczOCwyMzYxNiwyMTYzMiwzMDY5NywyMDAzMCwyNzgyMiwzMjg1OCwyNTI5OCwyNTQ1NCwyNDA0MCwyMDg1NSwzNjMxNywzNjM4MiwzODE5MSwyMDQ2NSwyMTQ3NywyNDgwNywyODg0NCwyMTA5NSwyNTQyNCw0MDUxNSwyMzA3MSwyMDUxOCwzMDUxOSwyMTM2NywzMjQ4MiwyNTczMywyNTg5OSwyNTIyNSwyNTQ5NiwyMDUwMCwyOTIzNywzNTI3MywyMDkxNSwzNTc3NiwzMjQ3NywyMjM0MywzMzc0MCwzODA1NSwyMDg5MSwyMTUzMSwyMzgwMywzMjI1MSwzMjI1MiwzMjI1MywzMjI1NCwzMjI1NSwzMjI1NiwzMjI1NywzMjI1OCwzMjI1OSwzMjI2MCwzMjI2MSwzMjI2MiwzMjI2MywzMjI2NCwzMjI2NSwzMjI2NiwzMjI2NywzMjI2OCwzMjI2OSwzMjI3MCwzMjI3MSwzMjI3MiwzMjI3MywzMjI3NCwzMjI3NSwzMjI3NiwzMjI3NywzMjI3OCwzMjI3OSwzMjI4MCwzMjI4MSwzMjI4MiwzMjI4MywzMjI4NCwzMjI4NSwzMjI4NiwzMjI4NywzMjI4OCwzMjI4OSwzMjI5MCwzMjI5MSwzMjI5MiwzMjI5MywzMjI5NCwzMjI5NSwzMjI5NiwzMjI5NywzMjI5OCwzMjI5OSwzMjMwMCwzMjMwMSwzMjMwMiwzMjMwMywzMjMwNCwzMjMwNSwzMjMwNiwzMjMwNywzMjMwOCwzMjMwOSwzMjMxMCwzMjMxMSwzMjMxMiwzMjMxMywzMjMxNCwzMjMxNiwzMjMxNywzMjMxOCwzMjMxOSwzMjMyMCwzMjMyMiwzMjMyMywzMjMyNCwzMjMyNSwzMjMyNiwzMjMyOCwzMjMyOSwzMjMzMCwzMjMzMSwzMjMzMiwzMjMzMywzMjMzNCwzMjMzNSwzMjMzNiwzMjMzNywzMjMzOCwzMjMzOSwzMjM0MCwzMjM0MSwzMjM0MiwzMjM0MywzMjM0NCwzMjM0NSwzMjM0NiwzMjM0NywzMjM0OCwzMjM0OSwyMDQyNiwzMTQ1OSwyNzk5NCwzNzA4OSwzOTU2NywyMTg4OCwyMTY1NCwyMTM0NSwyMTY3OSwyNDMyMCwyNTU3NywyNjk5OSwyMDk3NSwyNDkzNiwyMTAwMiwyMjU3MCwyMTIwOCwyMjM1MCwzMDczMywzMDQ3NSwyNDI0NywyNDk1MSwzMTk2OCwyNTE3OSwyNTIzOSwyMDEzMCwyODgyMSwzMjc3MSwyNTMzNSwyODkwMCwzODc1MiwyMjM5MSwzMzQ5OSwyNjYwNywyNjg2OSwzMDkzMywzOTA2MywzMTE4NSwyMjc3MSwyMTY4MywyMTQ4NywyODIxMiwyMDgxMSwyMTA1MSwyMzQ1OCwzNTgzOCwzMjk0MywyMTgyNywyMjQzOCwyNDY5MSwyMjM1MywyMTU0OSwzMTM1NCwyNDY1NiwyMzM4MCwyNTUxMSwyNTI0OCwyMTQ3NSwyNTE4NywyMzQ5NSwyNjU0MywyMTc0MSwzMTM5MSwzMzUxMCwzNzIzOSwyNDIxMSwzNTA0NCwyMjg0MCwyMjQ0NiwyNTM1OCwzNjMyOCwzMzAwNywyMjM1OSwzMTYwNywyMDM5MywyNDU1NSwyMzQ4NSwyNzQ1NCwyMTI4MSwzMTU2OCwyOTM3OCwyNjY5NCwzMDcxOSwzMDUxOCwyNjEwMywyMDkxNywyMDExMSwzMDQyMCwyMzc0MywzMTM5NywzMzkwOSwyMjg2MiwzOTc0NSwyMDYwOCwzMjM1MCwzMjM1MSwzMjM1MiwzMjM1MywzMjM1NCwzMjM1NSwzMjM1NiwzMjM1NywzMjM1OCwzMjM1OSwzMjM2MCwzMjM2MSwzMjM2MiwzMjM2MywzMjM2NCwzMjM2NSwzMjM2NiwzMjM2NywzMjM2OCwzMjM2OSwzMjM3MCwzMjM3MSwzMjM3MiwzMjM3MywzMjM3NCwzMjM3NSwzMjM3NiwzMjM3NywzMjM3OCwzMjM3OSwzMjM4MCwzMjM4MSwzMjM4MiwzMjM4MywzMjM4NCwzMjM4NSwzMjM4NywzMjM4OCwzMjM4OSwzMjM5MCwzMjM5MSwzMjM5MiwzMjM5MywzMjM5NCwzMjM5NSwzMjM5NiwzMjM5NywzMjM5OCwzMjM5OSwzMjQwMCwzMjQwMSwzMjQwMiwzMjQwMywzMjQwNCwzMjQwNSwzMjQwNiwzMjQwNywzMjQwOCwzMjQwOSwzMjQxMCwzMjQxMiwzMjQxMywzMjQxNCwzMjQzMCwzMjQzNiwzMjQ0MywzMjQ0NCwzMjQ3MCwzMjQ4NCwzMjQ5MiwzMjUwNSwzMjUyMiwzMjUyOCwzMjU0MiwzMjU2NywzMjU2OSwzMjU3MSwzMjU3MiwzMjU3MywzMjU3NCwzMjU3NSwzMjU3NiwzMjU3NywzMjU3OSwzMjU4MiwzMjU4MywzMjU4NCwzMjU4NSwzMjU4NiwzMjU4NywzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MSwzMjU5NCwzMjU5NSwzOTMwNCwyNDg3MSwyODI5MSwyMjM3MiwyNjExOCwyNTQxNCwyMjI1NiwyNTMyNCwyNTE5MywyNDI3NSwzODQyMCwyMjQwMywyNTI4OSwyMTg5NSwzNDU5MywzMzA5OCwzNjc3MSwyMTg2MiwzMzcxMywyNjQ2OSwzNjE4MiwzNDAxMywyMzE0NiwyNjYzOSwyNTMxOCwzMTcyNiwzODQxNywyMDg0OCwyODU3MiwzNTg4OCwyNTU5NywzNTI3MiwyNTA0MiwzMjUxOCwyODg2NiwyODM4OSwyOTcwMSwyNzAyOCwyOTQzNiwyNDI2NiwzNzA3MCwyNjM5MSwyODAxMCwyNTQzOCwyMTE3MSwyOTI4MiwzMjc2OSwyMDMzMiwyMzAxMywzNzIyNiwyODg4OSwyODA2MSwyMTIwMiwyMDA0OCwzODY0NywzODI1MywzNDE3NCwzMDkyMiwzMjA0NywyMDc2OSwyMjQxOCwyNTc5NCwzMjkwNywzMTg2NywyNzg4MiwyNjg2NSwyNjk3NCwyMDkxOSwyMTQwMCwyNjc5MiwyOTMxMyw0MDY1NCwzMTcyOSwyOTQzMiwzMTE2MywyODQzNSwyOTcwMiwyNjQ0NiwzNzMyNCw0MDEwMCwzMTAzNiwzMzY3MywzMzYyMCwyMTUxOSwyNjY0NywyMDAyOSwyMTM4NSwyMTE2OSwzMDc4MiwyMTM4MiwyMTAzMywyMDYxNiwyMDM2MywyMDQzMiwzMjU5OCwzMjYwMSwzMjYwMywzMjYwNCwzMjYwNSwzMjYwNiwzMjYwOCwzMjYxMSwzMjYxMiwzMjYxMywzMjYxNCwzMjYxNSwzMjYxOSwzMjYyMCwzMjYyMSwzMjYyMywzMjYyNCwzMjYyNywzMjYyOSwzMjYzMCwzMjYzMSwzMjYzMiwzMjYzNCwzMjYzNSwzMjYzNiwzMjYzNywzMjYzOSwzMjY0MCwzMjY0MiwzMjY0MywzMjY0NCwzMjY0NSwzMjY0NiwzMjY0NywzMjY0OCwzMjY0OSwzMjY1MSwzMjY1MywzMjY1NSwzMjY1NiwzMjY1NywzMjY1OCwzMjY1OSwzMjY2MSwzMjY2MiwzMjY2MywzMjY2NCwzMjY2NSwzMjY2NywzMjY2OCwzMjY3MiwzMjY3NCwzMjY3NSwzMjY3NywzMjY3OCwzMjY4MCwzMjY4MSwzMjY4MiwzMjY4MywzMjY4NCwzMjY4NSwzMjY4NiwzMjY4OSwzMjY5MSwzMjY5MiwzMjY5MywzMjY5NCwzMjY5NSwzMjY5OCwzMjY5OSwzMjcwMiwzMjcwNCwzMjcwNiwzMjcwNywzMjcwOCwzMjcxMCwzMjcxMSwzMjcxMiwzMjcxMywzMjcxNSwzMjcxNywzMjcxOSwzMjcyMCwzMjcyMSwzMjcyMiwzMjcyMywzMjcyNiwzMjcyNywzMjcyOSwzMjczMCwzMjczMSwzMjczMiwzMjczMywzMjczNCwzMjczOCwzMjczOSwzMDE3OCwzMTQzNSwzMTg5MCwyNzgxMywzODU4MiwyMTE0NywyOTgyNywyMTczNywyMDQ1NywzMjg1MiwzMzcxNCwzNjgzMCwzODI1NiwyNDI2NSwyNDYwNCwyODA2MywyNDA4OCwyNTk0NywzMzA4MCwzODE0MiwyNDY1MSwyODg2MCwzMjQ1MSwzMTkxOCwyMDkzNywyNjc1MywzMTkyMSwzMzM5MSwyMDAwNCwzNjc0MiwzNzMyNywyNjIzOCwyMDE0MiwzNTg0NSwyNTc2OSwzMjg0MiwyMDY5OCwzMDEwMywyOTEzNCwyMzUyNSwzNjc5NywyODUxOCwyMDEwMiwyNTczMCwzODI0MywyNDI3OCwyNjAwOSwyMTAxNSwzNTAxMCwyODg3MiwyMTE1NSwyOTQ1NCwyOTc0NywyNjUxOSwzMDk2NywzODY3OCwyMDAyMCwzNzA1MSw0MDE1OCwyODEwNywyMDk1NSwzNjE2MSwyMTUzMywyNTI5NCwyOTYxOCwzMzc3NywzODY0Niw0MDgzNiwzODA4MywyMDI3OCwzMjY2NiwyMDk0MCwyODc4OSwzODUxNywyMzcyNSwzOTA0NiwyMTQ3OCwyMDE5NiwyODMxNiwyOTcwNSwyNzA2MCwzMDgyNywzOTMxMSwzMDA0MSwyMTAxNiwzMDI0NCwyNzk2OSwyNjYxMSwyMDg0NSw0MDg1NywzMjg0MywyMTY1NywzMTU0OCwzMTQyMywzMjc0MCwzMjc0MywzMjc0NCwzMjc0NiwzMjc0NywzMjc0OCwzMjc0OSwzMjc1MSwzMjc1NCwzMjc1NiwzMjc1NywzMjc1OCwzMjc1OSwzMjc2MCwzMjc2MSwzMjc2MiwzMjc2NSwzMjc2NiwzMjc2NywzMjc3MCwzMjc3NSwzMjc3NiwzMjc3NywzMjc3OCwzMjc4MiwzMjc4MywzMjc4NSwzMjc4NywzMjc5NCwzMjc5NSwzMjc5NywzMjc5OCwzMjc5OSwzMjgwMSwzMjgwMywzMjgwNCwzMjgxMSwzMjgxMiwzMjgxMywzMjgxNCwzMjgxNSwzMjgxNiwzMjgxOCwzMjgyMCwzMjgyNSwzMjgyNiwzMjgyOCwzMjgzMCwzMjgzMiwzMjgzMywzMjgzNiwzMjgzNywzMjgzOSwzMjg0MCwzMjg0MSwzMjg0NiwzMjg0NywzMjg0OCwzMjg0OSwzMjg1MSwzMjg1MywzMjg1NCwzMjg1NSwzMjg1NywzMjg1OSwzMjg2MCwzMjg2MSwzMjg2MiwzMjg2MywzMjg2NCwzMjg2NSwzMjg2NiwzMjg2NywzMjg2OCwzMjg2OSwzMjg3MCwzMjg3MSwzMjg3MiwzMjg3NSwzMjg3NiwzMjg3NywzMjg3OCwzMjg3OSwzMjg4MCwzMjg4MiwzMjg4MywzMjg4NCwzMjg4NSwzMjg4NiwzMjg4NywzMjg4OCwzMjg4OSwzMjg5MCwzMjg5MSwzMjg5MiwzMjg5MywzODUzNCwyMjQwNCwyNTMxNCwzODQ3MSwyNzAwNCwyMzA0NCwyNTYwMiwzMTY5OSwyODQzMSwzODQ3NSwzMzQ0NiwyMTM0NiwzOTA0NSwyNDIwOCwyODgwOSwyNTUyMywyMTM0OCwzNDM4Myw0MDA2NSw0MDU5NSwzMDg2MCwzODcwNiwzNjMzNSwzNjE2Miw0MDU3NSwyODUxMCwzMTEwOCwyNDQwNSwzODQ3MCwyNTEzNCwzOTU0MCwyMTUyNSwzODEwOSwyMDM4NywyNjA1MywyMzY1MywyMzY0OSwzMjUzMywzNDM4NSwyNzY5NSwyNDQ1OSwyOTU3NSwyODM4OCwzMjUxMSwyMzc4MiwyNTM3MSwyMzQwMiwyODM5MCwyMTM2NSwyMDA4MSwyNTUwNCwzMDA1MywyNTI0OSwzNjcxOCwyMDI2MiwyMDE3NywyNzgxNCwzMjQzOCwzNTc3MCwzMzgyMSwzNDc0NiwzMjU5OSwzNjkyMywzODE3OSwzMTY1NywzOTU4NSwzNTA2NCwzMzg1MywyNzkzMSwzOTU1OCwzMjQ3NiwyMjkyMCw0MDYzNSwyOTU5NSwzMDcyMSwzNDQzNCwzOTUzMiwzOTU1NCwyMjA0MywyMTUyNywyMjQ3NSwyMDA4MCw0MDYxNCwyMTMzNCwzNjgwOCwzMzAzMywzMDYxMCwzOTMxNCwzNDU0MiwyODM4NSwzNDA2NywyNjM2NCwyNDkzMCwyODQ1OSwzMjg5NCwzMjg5NywzMjg5OCwzMjkwMSwzMjkwNCwzMjkwNiwzMjkwOSwzMjkxMCwzMjkxMSwzMjkxMiwzMjkxMywzMjkxNCwzMjkxNiwzMjkxNywzMjkxOSwzMjkyMSwzMjkyNiwzMjkzMSwzMjkzNCwzMjkzNSwzMjkzNiwzMjk0MCwzMjk0NCwzMjk0NywzMjk0OSwzMjk1MCwzMjk1MiwzMjk1MywzMjk1NSwzMjk2NSwzMjk2NywzMjk2OCwzMjk2OSwzMjk3MCwzMjk3MSwzMjk3NSwzMjk3NiwzMjk3NywzMjk3OCwzMjk3OSwzMjk4MCwzMjk4MSwzMjk4NCwzMjk5MSwzMjk5MiwzMjk5NCwzMjk5NSwzMjk5OCwzMzAwNiwzMzAxMywzMzAxNSwzMzAxNywzMzAxOSwzMzAyMiwzMzAyMywzMzAyNCwzMzAyNSwzMzAyNywzMzAyOCwzMzAyOSwzMzAzMSwzMzAzMiwzMzAzNSwzMzAzNiwzMzA0NSwzMzA0NywzMzA0OSwzMzA1MSwzMzA1MiwzMzA1MywzMzA1NSwzMzA1NiwzMzA1NywzMzA1OCwzMzA1OSwzMzA2MCwzMzA2MSwzMzA2MiwzMzA2MywzMzA2NCwzMzA2NSwzMzA2NiwzMzA2NywzMzA2OSwzMzA3MCwzMzA3MiwzMzA3NSwzMzA3NiwzMzA3NywzMzA3OSwzMzA4MSwzMzA4MiwzMzA4MywzMzA4NCwzMzA4NSwzMzA4NywzNTg4MSwzMzQyNiwzMzU3OSwzMDQ1MCwyNzY2NywyNDUzNywzMzcyNSwyOTQ4MywzMzU0MSwzODE3MCwyNzYxMSwzMDY4MywzODA4NiwyMTM1OSwzMzUzOCwyMDg4MiwyNDEyNSwzNTk4MCwzNjE1MiwyMDA0MCwyOTYxMSwyNjUyMiwyNjc1NywzNzIzOCwzODY2NSwyOTAyOCwyNzgwOSwzMDQ3MywyMzE4NiwzODIwOSwyNzU5OSwzMjY1NCwyNjE1MSwyMzUwNCwyMjk2OSwyMzE5NCwzODM3NiwzODM5MSwyMDIwNCwzMzgwNCwzMzk0NSwyNzMwOCwzMDQzMSwzODE5MiwyOTQ2NywyNjc5MCwyMzM5MSwzMDUxMSwzNzI3NCwzODc1MywzMTk2NCwzNjg1NSwzNTg2OCwyNDM1NywzMTg1OSwzMTE5MiwzNTI2OSwyNzg1MiwzNDU4OCwyMzQ5NCwyNDEzMCwyNjgyNSwzMDQ5NiwzMjUwMSwyMDg4NSwyMDgxMywyMTE5MywyMzA4MSwzMjUxNywzODc1NCwzMzQ5NSwyNTU1MSwzMDU5NiwzNDI1NiwzMTE4NiwyODIxOCwyNDIxNywyMjkzNywzNDA2NSwyODc4MSwyNzY2NSwyNTI3OSwzMDM5OSwyNTkzNSwyNDc1MSwzODM5NywyNjEyNiwzNDcxOSw0MDQ4MywzODEyNSwyMTUxNywyMTYyOSwzNTg4NCwyNTcyMCwzMzA4OCwzMzA4OSwzMzA5MCwzMzA5MSwzMzA5MiwzMzA5MywzMzA5NSwzMzA5NywzMzEwMSwzMzEwMiwzMzEwMywzMzEwNiwzMzExMCwzMzExMSwzMzExMiwzMzExNSwzMzExNiwzMzExNywzMzExOCwzMzExOSwzMzEyMSwzMzEyMiwzMzEyMywzMzEyNCwzMzEyNiwzMzEyOCwzMzEzMCwzMzEzMSwzMzEzMiwzMzEzNSwzMzEzOCwzMzEzOSwzMzE0MSwzMzE0MiwzMzE0MywzMzE0NCwzMzE1MywzMzE1NSwzMzE1NiwzMzE1NywzMzE1OCwzMzE1OSwzMzE2MSwzMzE2MywzMzE2NCwzMzE2NSwzMzE2NiwzMzE2OCwzMzE3MCwzMzE3MSwzMzE3MiwzMzE3MywzMzE3NCwzMzE3NSwzMzE3NywzMzE3OCwzMzE4MiwzMzE4MywzMzE4NCwzMzE4NSwzMzE4NiwzMzE4OCwzMzE4OSwzMzE5MSwzMzE5MywzMzE5NSwzMzE5NiwzMzE5NywzMzE5OCwzMzE5OSwzMzIwMCwzMzIwMSwzMzIwMiwzMzIwNCwzMzIwNSwzMzIwNiwzMzIwNywzMzIwOCwzMzIwOSwzMzIxMiwzMzIxMywzMzIxNCwzMzIxNSwzMzIyMCwzMzIyMSwzMzIyMywzMzIyNCwzMzIyNSwzMzIyNywzMzIyOSwzMzIzMCwzMzIzMSwzMzIzMiwzMzIzMywzMzIzNCwzMzIzNSwyNTcyMSwzNDMyMSwyNzE2OSwzMzE4MCwzMDk1MiwyNTcwNSwzOTc2NCwyNTI3MywyNjQxMSwzMzcwNywyMjY5Niw0MDY2NCwyNzgxOSwyODQ0OCwyMzUxOCwzODQ3NiwzNTg1MSwyOTI3OSwyNjU3NiwyNTI4NywyOTI4MSwyMDEzNywyMjk4MiwyNzU5NywyMjY3NSwyNjI4NiwyNDE0OSwyMTIxNSwyNDkxNywyNjQwOCwzMDQ0NiwzMDU2NiwyOTI4NywzMTMwMiwyNTM0MywyMTczOCwyMTU4NCwzODA0OCwzNzAyNywyMzA2OCwzMjQzNSwyNzY3MCwyMDAzNSwyMjkwMiwzMjc4NCwyMjg1NiwyMTMzNSwzMDAwNywzODU5MCwyMjIxOCwyNTM3NiwzMzA0MSwyNDcwMCwzODM5MywyODExOCwyMTYwMiwzOTI5NywyMDg2OSwyMzI3MywzMzAyMSwyMjk1OCwzODY3NSwyMDUyMiwyNzg3NywyMzYxMiwyNTMxMSwyMDMyMCwyMTMxMSwzMzE0NywzNjg3MCwyODM0NiwzNDA5MSwyNTI4OCwyNDE4MCwzMDkxMCwyNTc4MSwyNTQ2NywyNDU2NSwyMzA2NCwzNzI0Nyw0MDQ3OSwyMzYxNSwyNTQyMywzMjgzNCwyMzQyMSwyMTg3MCwzODIxOCwzODIyMSwyODAzNywyNDc0NCwyNjU5MiwyOTQwNiwyMDk1NywyMzQyNSwzMzIzNiwzMzIzNywzMzIzOCwzMzIzOSwzMzI0MCwzMzI0MSwzMzI0MiwzMzI0MywzMzI0NCwzMzI0NSwzMzI0NiwzMzI0NywzMzI0OCwzMzI0OSwzMzI1MCwzMzI1MiwzMzI1MywzMzI1NCwzMzI1NiwzMzI1NywzMzI1OSwzMzI2MiwzMzI2MywzMzI2NCwzMzI2NSwzMzI2NiwzMzI2OSwzMzI3MCwzMzI3MSwzMzI3MiwzMzI3MywzMzI3NCwzMzI3NywzMzI3OSwzMzI4MywzMzI4NywzMzI4OCwzMzI4OSwzMzI5MCwzMzI5MSwzMzI5NCwzMzI5NSwzMzI5NywzMzI5OSwzMzMwMSwzMzMwMiwzMzMwMywzMzMwNCwzMzMwNSwzMzMwNiwzMzMwOSwzMzMxMiwzMzMxNiwzMzMxNywzMzMxOCwzMzMxOSwzMzMyMSwzMzMyNiwzMzMzMCwzMzMzOCwzMzM0MCwzMzM0MSwzMzM0MywzMzM0NCwzMzM0NSwzMzM0NiwzMzM0NywzMzM0OSwzMzM1MCwzMzM1MiwzMzM1NCwzMzM1NiwzMzM1NywzMzM1OCwzMzM2MCwzMzM2MSwzMzM2MiwzMzM2MywzMzM2NCwzMzM2NSwzMzM2NiwzMzM2NywzMzM2OSwzMzM3MSwzMzM3MiwzMzM3MywzMzM3NCwzMzM3NiwzMzM3NywzMzM3OCwzMzM3OSwzMzM4MCwzMzM4MSwzMzM4MiwzMzM4MywzMzM4NSwyNTMxOSwyNzg3MCwyOTI3NSwyNTE5NywzODA2MiwzMjQ0NSwzMzA0MywyNzk4NywyMDg5MiwyNDMyNCwyMjkwMCwyMTE2MiwyNDU5NCwyMjg5OSwyNjI2MiwzNDM4NCwzMDExMSwyNTM4NiwyNTA2MiwzMTk4MywzNTgzNCwyMTczNCwyNzQzMSw0MDQ4NSwyNzU3MiwzNDI2MSwyMTU4OSwyMDU5OCwyNzgxMiwyMTg2NiwzNjI3NiwyOTIyOCwyNDA4NSwyNDU5NywyOTc1MCwyNTI5MywyNTQ5MCwyOTI2MCwyNDQ3MiwyODIyNywyNzk2NiwyNTg1NiwyODUwNCwzMDQyNCwzMDkyOCwzMDQ2MCwzMDAzNiwyMTAyOCwyMTQ2NywyMDA1MSwyNDIyMiwyNjA0OSwzMjgxMCwzMjk4MiwyNTI0MywyMTYzOCwyMTAzMiwyODg0NiwzNDk1NywzNjMwNSwyNzg3MywyMTYyNCwzMjk4NiwyMjUyMSwzNTA2MCwzNjE4MCwzODUwNiwzNzE5NywyMDMyOSwyNzgwMywyMTk0MywzMDQwNiwzMDc2OCwyNTI1NiwyODkyMSwyODU1OCwyNDQyOSwzNDAyOCwyNjg0MiwzMDg0NCwzMTczNSwzMzE5MiwyNjM3OSw0MDUyNywyNTQ0NywzMDg5NiwyMjM4MywzMDczOCwzODcxMywyNTIwOSwyNTI1OSwyMTEyOCwyOTc0OSwyNzYwNywzMzM4NiwzMzM4NywzMzM4OCwzMzM4OSwzMzM5MywzMzM5NywzMzM5OCwzMzM5OSwzMzQwMCwzMzQwMywzMzQwNCwzMzQwOCwzMzQwOSwzMzQxMSwzMzQxMywzMzQxNCwzMzQxNSwzMzQxNywzMzQyMCwzMzQyNCwzMzQyNywzMzQyOCwzMzQyOSwzMzQzMCwzMzQzNCwzMzQzNSwzMzQzOCwzMzQ0MCwzMzQ0MiwzMzQ0MywzMzQ0NywzMzQ1OCwzMzQ2MSwzMzQ2MiwzMzQ2NiwzMzQ2NywzMzQ2OCwzMzQ3MSwzMzQ3MiwzMzQ3NCwzMzQ3NSwzMzQ3NywzMzQ3OCwzMzQ4MSwzMzQ4OCwzMzQ5NCwzMzQ5NywzMzQ5OCwzMzUwMSwzMzUwNiwzMzUxMSwzMzUxMiwzMzUxMywzMzUxNCwzMzUxNiwzMzUxNywzMzUxOCwzMzUyMCwzMzUyMiwzMzUyMywzMzUyNSwzMzUyNiwzMzUyOCwzMzUzMCwzMzUzMiwzMzUzMywzMzUzNCwzMzUzNSwzMzUzNiwzMzU0NiwzMzU0NywzMzU0OSwzMzU1MiwzMzU1NCwzMzU1NSwzMzU1OCwzMzU2MCwzMzU2MSwzMzU2NSwzMzU2NiwzMzU2NywzMzU2OCwzMzU2OSwzMzU3MCwzMzU3MSwzMzU3MiwzMzU3MywzMzU3NCwzMzU3NywzMzU3OCwzMzU4MiwzMzU4NCwzMzU4NiwzMzU5MSwzMzU5NSwzMzU5NywyMTg2MCwzMzA4NiwzMDEzMCwzMDM4MiwyMTMwNSwzMDE3NCwyMDczMSwyMzYxNywzNTY5MiwzMTY4NywyMDU1OSwyOTI1NSwzOTU3NSwzOTEyOCwyODQxOCwyOTkyMiwzMTA4MCwyNTczNSwzMDYyOSwyNTM0MCwzOTA1NywzNjEzOSwyMTY5NywzMjg1NiwyMDA1MCwyMjM3OCwzMzUyOSwzMzgwNSwyNDE3OSwyMDk3MywyOTk0MiwzNTc4MCwyMzYzMSwyMjM2OSwyNzkwMCwzOTA0NywyMzExMCwzMDc3MiwzOTc0OCwzNjg0MywzMTg5MywyMTA3OCwyNTE2OSwzODEzOCwyMDE2NiwzMzY3MCwzMzg4OSwzMzc2OSwzMzk3MCwyMjQ4NCwyNjQyMCwyMjI3NSwyNjIyMiwyODAwNiwzNTg4OSwyNjMzMywyODY4OSwyNjM5OSwyNzQ1MCwyNjY0NiwyNTExNCwyMjk3MSwxOTk3MSwyMDkzMiwyODQyMiwyNjU3OCwyNzc5MSwyMDg1NCwyNjgyNywyMjg1NSwyNzQ5NSwzMDA1NCwyMzgyMiwzMzA0MCw0MDc4NCwyNjA3MSwzMTA0OCwzMTA0MSwzOTU2OSwzNjIxNSwyMzY4MiwyMDA2MiwyMDIyNSwyMTU1MSwyMjg2NSwzMDczMiwyMjEyMCwyNzY2OCwzNjgwNCwyNDMyMywyNzc3MywyNzg3NSwzNTc1NSwyNTQ4OCwzMzU5OCwzMzU5OSwzMzYwMSwzMzYwMiwzMzYwNCwzMzYwNSwzMzYwOCwzMzYxMCwzMzYxMSwzMzYxMiwzMzYxMywzMzYxNCwzMzYxOSwzMzYyMSwzMzYyMiwzMzYyMywzMzYyNCwzMzYyNSwzMzYyOSwzMzYzNCwzMzY0OCwzMzY0OSwzMzY1MCwzMzY1MSwzMzY1MiwzMzY1MywzMzY1NCwzMzY1NywzMzY1OCwzMzY2MiwzMzY2MywzMzY2NCwzMzY2NSwzMzY2NiwzMzY2NywzMzY2OCwzMzY3MSwzMzY3MiwzMzY3NCwzMzY3NSwzMzY3NiwzMzY3NywzMzY3OSwzMzY4MCwzMzY4MSwzMzY4NCwzMzY4NSwzMzY4NiwzMzY4NywzMzY4OSwzMzY5MCwzMzY5MywzMzY5NSwzMzY5NywzMzY5OCwzMzY5OSwzMzcwMCwzMzcwMSwzMzcwMiwzMzcwMywzMzcwOCwzMzcwOSwzMzcxMCwzMzcxMSwzMzcxNywzMzcyMywzMzcyNiwzMzcyNywzMzczMCwzMzczMSwzMzczMiwzMzczNCwzMzczNiwzMzczNywzMzczOSwzMzc0MSwzMzc0MiwzMzc0NCwzMzc0NSwzMzc0NiwzMzc0NywzMzc0OSwzMzc1MSwzMzc1MywzMzc1NCwzMzc1NSwzMzc1OCwzMzc2MiwzMzc2MywzMzc2NCwzMzc2NiwzMzc2NywzMzc2OCwzMzc3MSwzMzc3MiwzMzc3MywyNDY4OCwyNzk2NSwyOTMwMSwyNTE5MCwzODAzMCwzODA4NSwyMTMxNSwzNjgwMSwzMTYxNCwyMDE5MSwzNTg3OCwyMDA5NCw0MDY2MCwzODA2NSwzODA2NywyMTA2OSwyODUwOCwzNjk2MywyNzk3MywzNTg5MiwyMjU0NSwyMzg4NCwyNzQyNCwyNzQ2NSwyNjUzOCwyMTU5NSwzMzEwOCwzMjY1MiwyMjY4MSwzNDEwMywyNDM3OCwyNTI1MCwyNzIwNywzODIwMSwyNTk3MCwyNDcwOCwyNjcyNSwzMDYzMSwyMDA1MiwyMDM5MiwyNDAzOSwzODgwOCwyNTc3MiwzMjcyOCwyMzc4OSwyMDQzMSwzMTM3MywyMDk5OSwzMzU0MCwxOTk4OCwyNDYyMywzMTM2MywzODA1NCwyMDQwNSwyMDE0NiwzMTIwNiwyOTc0OCwyMTIyMCwzMzQ2NSwyNTgxMCwzMTE2NSwyMzUxNywyNzc3NywzODczOCwzNjczMSwyNzY4MiwyMDU0MiwyMTM3NSwyODE2NSwyNTgwNiwyNjIyOCwyNzY5NiwyNDc3MywzOTAzMSwzNTgzMSwyNDE5OCwyOTc1NiwzMTM1MSwzMTE3OSwxOTk5MiwzNzA0MSwyOTY5OSwyNzcxNCwyMjIzNCwzNzE5NSwyNzg0NSwzNjIzNSwyMTMwNiwzNDUwMiwyNjM1NCwzNjUyNywyMzYyNCwzOTUzNywyODE5MiwzMzc3NCwzMzc3NSwzMzc3OSwzMzc4MCwzMzc4MSwzMzc4MiwzMzc4MywzMzc4NiwzMzc4NywzMzc4OCwzMzc5MCwzMzc5MSwzMzc5MiwzMzc5NCwzMzc5NywzMzc5OSwzMzgwMCwzMzgwMSwzMzgwMiwzMzgwOCwzMzgxMCwzMzgxMSwzMzgxMiwzMzgxMywzMzgxNCwzMzgxNSwzMzgxNywzMzgxOCwzMzgxOSwzMzgyMiwzMzgyMywzMzgyNCwzMzgyNSwzMzgyNiwzMzgyNywzMzgzMywzMzgzNCwzMzgzNSwzMzgzNiwzMzgzNywzMzgzOCwzMzgzOSwzMzg0MCwzMzg0MiwzMzg0MywzMzg0NCwzMzg0NSwzMzg0NiwzMzg0NywzMzg0OSwzMzg1MCwzMzg1MSwzMzg1NCwzMzg1NSwzMzg1NiwzMzg1NywzMzg1OCwzMzg1OSwzMzg2MCwzMzg2MSwzMzg2MywzMzg2NCwzMzg2NSwzMzg2NiwzMzg2NywzMzg2OCwzMzg2OSwzMzg3MCwzMzg3MSwzMzg3MiwzMzg3NCwzMzg3NSwzMzg3NiwzMzg3NywzMzg3OCwzMzg4MCwzMzg4NSwzMzg4NiwzMzg4NywzMzg4OCwzMzg5MCwzMzg5MiwzMzg5MywzMzg5NCwzMzg5NSwzMzg5NiwzMzg5OCwzMzkwMiwzMzkwMywzMzkwNCwzMzkwNiwzMzkwOCwzMzkxMSwzMzkxMywzMzkxNSwzMzkxNiwyMTQ2MiwyMzA5NCw0MDg0MywzNjI1OSwyMTQzNSwyMjI4MCwzOTA3OSwyNjQzNSwzNzI3NSwyNzg0OSwyMDg0MCwzMDE1NCwyNTMzMSwyOTM1NiwyMTA0OCwyMTE0OSwzMjU3MCwyODgyMCwzMDI2NCwyMTM2NCw0MDUyMiwyNzA2MywzMDgzMCwzODU5MiwzNTAzMywzMjY3NiwyODk4MiwyOTEyMywyMDg3MywyNjU3OSwyOTkyNCwyMjc1NiwyNTg4MCwyMjE5OSwzNTc1MywzOTI4NiwyNTIwMCwzMjQ2OSwyNDgyNSwyODkwOSwyMjc2NCwyMDE2MSwyMDE1NCwyNDUyNSwzODg4NywyMDIxOSwzNTc0OCwyMDk5NSwyMjkyMiwzMjQyNywyNTE3MiwyMDE3MywyNjA4NSwyNTEwMiwzMzU5MiwzMzk5MywzMzYzNSwzNDcwMSwyOTA3NiwyODM0MiwyMzQ4MSwzMjQ2NiwyMDg4NywyNTU0NSwyNjU4MCwzMjkwNSwzMzU5MywzNDgzNywyMDc1NCwyMzQxOCwyMjkxNCwzNjc4NSwyMDA4MywyNzc0MSwyMDgzNywzNTEwOSwzNjcxOSwzODQ0NiwzNDEyMiwyOTc5MCwzODE2MCwzODM4NCwyODA3MCwzMzUwOSwyNDM2OSwyNTc0NiwyNzkyMiwzMzgzMiwzMzEzNCw0MDEzMSwyMjYyMiwzNjE4NywxOTk3NywyMTQ0MSwzMzkxNywzMzkxOCwzMzkxOSwzMzkyMCwzMzkyMSwzMzkyMywzMzkyNCwzMzkyNSwzMzkyNiwzMzkzMCwzMzkzMywzMzkzNSwzMzkzNiwzMzkzNywzMzkzOCwzMzkzOSwzMzk0MCwzMzk0MSwzMzk0MiwzMzk0NCwzMzk0NiwzMzk0NywzMzk0OSwzMzk1MCwzMzk1MSwzMzk1MiwzMzk1NCwzMzk1NSwzMzk1NiwzMzk1NywzMzk1OCwzMzk1OSwzMzk2MCwzMzk2MSwzMzk2MiwzMzk2MywzMzk2NCwzMzk2NSwzMzk2NiwzMzk2OCwzMzk2OSwzMzk3MSwzMzk3MywzMzk3NCwzMzk3NSwzMzk3OSwzMzk4MCwzMzk4MiwzMzk4NCwzMzk4NiwzMzk4NywzMzk4OSwzMzk5MCwzMzk5MSwzMzk5MiwzMzk5NSwzMzk5NiwzMzk5OCwzMzk5OSwzNDAwMiwzNDAwNCwzNDAwNSwzNDAwNywzNDAwOCwzNDAwOSwzNDAxMCwzNDAxMSwzNDAxMiwzNDAxNCwzNDAxNywzNDAxOCwzNDAyMCwzNDAyMywzNDAyNCwzNDAyNSwzNDAyNiwzNDAyNywzNDAyOSwzNDAzMCwzNDAzMSwzNDAzMywzNDAzNCwzNDAzNSwzNDAzNiwzNDAzNywzNDAzOCwzNDAzOSwzNDA0MCwzNDA0MSwzNDA0MiwzNDA0MywzNDA0NSwzNDA0NiwzNDA0OCwzNDA0OSwzNDA1MCwyMDI1NCwyNTk1NSwyNjcwNSwyMTk3MSwyMDAwNywyNTYyMCwzOTU3OCwyNTE5NSwyMzIzNCwyOTc5MSwzMzM5NCwyODA3MywyNjg2MiwyMDcxMSwzMzY3OCwzMDcyMiwyNjQzMiwyMTA0OSwyNzgwMSwzMjQzMywyMDY2NywyMTg2MSwyOTAyMiwzMTU3OSwyNjE5NCwyOTY0MiwzMzUxNSwyNjQ0MSwyMzY2NSwyMTAyNCwyOTA1MywzNDkyMywzODM3OCwzODQ4NSwyNTc5NywzNjE5MywzMzIwMywyMTg5MiwyNzczMywyNTE1OSwzMjU1OCwyMjY3NCwyMDI2MCwyMTgzMCwzNjE3NSwyNjE4OCwxOTk3OCwyMzU3OCwzNTA1OSwyNjc4NiwyNTQyMiwzMTI0NSwyODkwMywzMzQyMSwyMTI0MiwzODkwMiwyMzU2OSwyMTczNiwzNzA0NSwzMjQ2MSwyMjg4MiwzNjE3MCwzNDUwMywzMzI5MiwzMzI5MywzNjE5OCwyNTY2OCwyMzU1NiwyNDkxMywyODA0MSwzMTAzOCwzNTc3NCwzMDc3NSwzMDAwMywyMTYyNywyMDI4MCwzNjUyMywyODE0NSwyMzA3MiwzMjQ1MywzMTA3MCwyNzc4NCwyMzQ1NywyMzE1OCwyOTk3OCwzMjk1OCwyNDkxMCwyODE4MywyMjc2OCwyOTk4MywyOTk4OSwyOTI5OCwyMTMxOSwzMjQ5OSwzNDA1MSwzNDA1MiwzNDA1MywzNDA1NCwzNDA1NSwzNDA1NiwzNDA1NywzNDA1OCwzNDA1OSwzNDA2MSwzNDA2MiwzNDA2MywzNDA2NCwzNDA2NiwzNDA2OCwzNDA2OSwzNDA3MCwzNDA3MiwzNDA3MywzNDA3NSwzNDA3NiwzNDA3NywzNDA3OCwzNDA4MCwzNDA4MiwzNDA4MywzNDA4NCwzNDA4NSwzNDA4NiwzNDA4NywzNDA4OCwzNDA4OSwzNDA5MCwzNDA5MywzNDA5NCwzNDA5NSwzNDA5NiwzNDA5NywzNDA5OCwzNDA5OSwzNDEwMCwzNDEwMSwzNDEwMiwzNDExMCwzNDExMSwzNDExMiwzNDExMywzNDExNCwzNDExNiwzNDExNywzNDExOCwzNDExOSwzNDEyMywzNDEyNCwzNDEyNSwzNDEyNiwzNDEyNywzNDEyOCwzNDEyOSwzNDEzMCwzNDEzMSwzNDEzMiwzNDEzMywzNDEzNSwzNDEzNiwzNDEzOCwzNDEzOSwzNDE0MCwzNDE0MSwzNDE0MywzNDE0NCwzNDE0NSwzNDE0NiwzNDE0NywzNDE0OSwzNDE1MCwzNDE1MSwzNDE1MywzNDE1NCwzNDE1NSwzNDE1NiwzNDE1NywzNDE1OCwzNDE1OSwzNDE2MCwzNDE2MSwzNDE2MywzNDE2NSwzNDE2NiwzNDE2NywzNDE2OCwzNDE3MiwzNDE3MywzNDE3NSwzNDE3NiwzNDE3NywzMDQ2NSwzMDQyNywyMTA5NywzMjk4OCwyMjMwNywyNDA3MiwyMjgzMywyOTQyMiwyNjA0NSwyODI4NywzNTc5OSwyMzYwOCwzNDQxNywyMTMxMywzMDcwNywyNTM0MiwyNjEwMiwyMDE2MCwzOTEzNSwzNDQzMiwyMzQ1NCwzNTc4MiwyMTQ5MCwzMDY5MCwyMDM1MSwyMzYzMCwzOTU0MiwyMjk4NywyNDMzNSwzMTAzNCwyMjc2MywxOTk5MCwyNjYyMywyMDEwNywyNTMyNSwzNTQ3NSwzNjg5MywyMTE4MywyNjE1OSwyMTk4MCwyMjEyNCwzNjg2NiwyMDE4MSwyMDM2NSwzNzMyMiwzOTI4MCwyNzY2MywyNDA2NiwyNDY0MywyMzQ2MCwzNTI3MCwzNTc5NywyNTkxMCwyNTE2MywzOTMxOCwyMzQzMiwyMzU1MSwyNTQ4MCwyMTgwNiwyMTQ2MywzMDI0NiwyMDg2MSwzNDA5MiwyNjUzMCwyNjgwMywyNzUzMCwyNTIzNCwzNjc1NSwyMTQ2MCwzMzI5OCwyODExMywzMDA5NSwyMDA3MCwzNjE3NCwyMzQwOCwyOTA4NywzNDIyMywyNjI1NywyNjMyOSwzMjYyNiwzNDU2MCw0MDY1Myw0MDczNiwyMzY0NiwyNjQxNSwzNjg0OCwyNjY0MSwyNjQ2MywyNTEwMSwzMTQ0NiwyMjY2MSwyNDI0NiwyNTk2OCwyODQ2NSwzNDE3OCwzNDE3OSwzNDE4MiwzNDE4NCwzNDE4NSwzNDE4NiwzNDE4NywzNDE4OCwzNDE4OSwzNDE5MCwzNDE5MiwzNDE5MywzNDE5NCwzNDE5NSwzNDE5NiwzNDE5NywzNDE5OCwzNDE5OSwzNDIwMCwzNDIwMSwzNDIwMiwzNDIwNSwzNDIwNiwzNDIwNywzNDIwOCwzNDIwOSwzNDIxMCwzNDIxMSwzNDIxMywzNDIxNCwzNDIxNSwzNDIxNywzNDIxOSwzNDIyMCwzNDIyMSwzNDIyNSwzNDIyNiwzNDIyNywzNDIyOCwzNDIyOSwzNDIzMCwzNDIzMiwzNDIzNCwzNDIzNSwzNDIzNiwzNDIzNywzNDIzOCwzNDIzOSwzNDI0MCwzNDI0MiwzNDI0MywzNDI0NCwzNDI0NSwzNDI0NiwzNDI0NywzNDI0OCwzNDI1MCwzNDI1MSwzNDI1MiwzNDI1MywzNDI1NCwzNDI1NywzNDI1OCwzNDI2MCwzNDI2MiwzNDI2MywzNDI2NCwzNDI2NSwzNDI2NiwzNDI2NywzNDI2OSwzNDI3MCwzNDI3MSwzNDI3MiwzNDI3MywzNDI3NCwzNDI3NSwzNDI3NywzNDI3OCwzNDI3OSwzNDI4MCwzNDI4MiwzNDI4MywzNDI4NCwzNDI4NSwzNDI4NiwzNDI4NywzNDI4OCwzNDI4OSwzNDI5MCwzNDI5MSwzNDI5MiwzNDI5MywzNDI5NCwzNDI5NSwzNDI5NiwyNDY2MSwyMTA0NywzMjc4MSwyNTY4NCwzNDkyOCwyOTk5MywyNDA2OSwyNjY0MywyNTMzMiwzODY4NCwyMTQ1MiwyOTI0NSwzNTg0MSwyNzcwMCwzMDU2MSwzMTI0NiwyMTU1MCwzMDYzNiwzOTAzNCwzMzMwOCwzNTgyOCwzMDgwNSwyNjM4OCwyODg2NSwyNjAzMSwyNTc0OSwyMjA3MCwyNDYwNSwzMTE2OSwyMTQ5NiwxOTk5NywyNzUxNSwzMjkwMiwyMzU0NiwyMTk4NywyMjIzNSwyMDI4MiwyMDI4NCwzOTI4MiwyNDA1MSwyNjQ5NCwzMjgyNCwyNDU3OCwzOTA0MiwzNjg2NSwyMzQzNSwzNTc3MiwzNTgyOSwyNTYyOCwzMzM2OCwyNTgyMiwyMjAxMywzMzQ4NywzNzIyMSwyMDQzOSwzMjAzMiwzNjg5NSwzMTkwMywyMDcyMywyMjYwOSwyODMzNSwyMzQ4NywzNTc4NSwzMjg5OSwzNzI0MCwzMzk0OCwzMTYzOSwzNDQyOSwzODUzOSwzODU0MywzMjQ4NSwzOTYzNSwzMDg2MiwyMzY4MSwzMTMxOSwzNjkzMCwzODU2NywzMTA3MSwyMzM4NSwyNTQzOSwzMTQ5OSwzNDAwMSwyNjc5NywyMTc2NiwzMjU1MywyOTcxMiwzMjAzNCwzODE0NSwyNTE1MiwyMjYwNCwyMDE4MiwyMzQyNywyMjkwNSwyMjYxMiwzNDI5NywzNDI5OCwzNDMwMCwzNDMwMSwzNDMwMiwzNDMwNCwzNDMwNSwzNDMwNiwzNDMwNywzNDMwOCwzNDMxMCwzNDMxMSwzNDMxMiwzNDMxMywzNDMxNCwzNDMxNSwzNDMxNiwzNDMxNywzNDMxOCwzNDMxOSwzNDMyMCwzNDMyMiwzNDMyMywzNDMyNCwzNDMyNSwzNDMyNywzNDMyOCwzNDMyOSwzNDMzMCwzNDMzMSwzNDMzMiwzNDMzMywzNDMzNCwzNDMzNSwzNDMzNiwzNDMzNywzNDMzOCwzNDMzOSwzNDM0MCwzNDM0MSwzNDM0MiwzNDM0NCwzNDM0NiwzNDM0NywzNDM0OCwzNDM0OSwzNDM1MCwzNDM1MSwzNDM1MiwzNDM1MywzNDM1NCwzNDM1NSwzNDM1NiwzNDM1NywzNDM1OCwzNDM1OSwzNDM2MSwzNDM2MiwzNDM2MywzNDM2NSwzNDM2NiwzNDM2NywzNDM2OCwzNDM2OSwzNDM3MCwzNDM3MSwzNDM3MiwzNDM3MywzNDM3NCwzNDM3NSwzNDM3NiwzNDM3NywzNDM3OCwzNDM3OSwzNDM4MCwzNDM4NiwzNDM4NywzNDM4OSwzNDM5MCwzNDM5MSwzNDM5MiwzNDM5MywzNDM5NSwzNDM5NiwzNDM5NywzNDM5OSwzNDQwMCwzNDQwMSwzNDQwMywzNDQwNCwzNDQwNSwzNDQwNiwzNDQwNywzNDQwOCwzNDQwOSwzNDQxMCwyOTU0OSwyNTM3NCwzNjQyNywzNjM2NywzMjk3NCwzMzQ5MiwyNTI2MCwyMTQ4OCwyNzg4OCwzNzIxNCwyMjgyNiwyNDU3NywyNzc2MCwyMjM0OSwyNTY3NCwzNjEzOCwzMDI1MSwyODM5MywyMjM2MywyNzI2NCwzMDE5MiwyODUyNSwzNTg4NSwzNTg0OCwyMjM3NCwyNzYzMSwzNDk2MiwzMDg5OSwyNTUwNiwyMTQ5NywyODg0NSwyNzc0OCwyMjYxNiwyNTY0MiwyMjUzMCwyNjg0OCwzMzE3OSwyMTc3NiwzMTk1OCwyMDUwNCwzNjUzOCwyODEwOCwzNjI1NSwyODkwNywyNTQ4NywyODA1OSwyODM3MiwzMjQ4NiwzMzc5NiwyNjY5MSwzNjg2NywyODEyMCwzODUxOCwzNTc1MiwyMjg3MSwyOTMwNSwzNDI3NiwzMzE1MCwzMDE0MCwzNTQ2NiwyNjc5OSwyMTA3NiwzNjM4NiwzODE2MSwyNTU1MiwzOTA2NCwzNjQyMCwyMTg4NCwyMDMwNywyNjM2NywyMjE1OSwyNDc4OSwyODA1MywyMTA1OSwyMzYyNSwyMjgyNSwyODE1NSwyMjYzNSwzMDAwMCwyOTk4MCwyNDY4NCwzMzMwMCwzMzA5NCwyNTM2MSwyNjQ2NSwzNjgzNCwzMDUyMiwzNjMzOSwzNjE0OCwzODA4MSwyNDA4NiwyMTM4MSwyMTU0OCwyODg2NywzNDQxMywzNDQxNSwzNDQxNiwzNDQxOCwzNDQxOSwzNDQyMCwzNDQyMSwzNDQyMiwzNDQyMywzNDQyNCwzNDQzNSwzNDQzNiwzNDQzNywzNDQzOCwzNDQzOSwzNDQ0MCwzNDQ0MSwzNDQ0NiwzNDQ0NywzNDQ0OCwzNDQ0OSwzNDQ1MCwzNDQ1MiwzNDQ1NCwzNDQ1NSwzNDQ1NiwzNDQ1NywzNDQ1OCwzNDQ1OSwzNDQ2MiwzNDQ2MywzNDQ2NCwzNDQ2NSwzNDQ2NiwzNDQ2OSwzNDQ3MCwzNDQ3NSwzNDQ3NywzNDQ3OCwzNDQ4MiwzNDQ4MywzNDQ4NywzNDQ4OCwzNDQ4OSwzNDQ5MSwzNDQ5MiwzNDQ5MywzNDQ5NCwzNDQ5NSwzNDQ5NywzNDQ5OCwzNDQ5OSwzNDUwMSwzNDUwNCwzNDUwOCwzNDUwOSwzNDUxNCwzNDUxNSwzNDUxNywzNDUxOCwzNDUxOSwzNDUyMiwzNDUyNCwzNDUyNSwzNDUyOCwzNDUyOSwzNDUzMCwzNDUzMSwzNDUzMywzNDUzNCwzNDUzNSwzNDUzNiwzNDUzOCwzNDUzOSwzNDU0MCwzNDU0MywzNDU0OSwzNDU1MCwzNDU1MSwzNDU1NCwzNDU1NSwzNDU1NiwzNDU1NywzNDU1OSwzNDU2MSwzNDU2NCwzNDU2NSwzNDU2NiwzNDU3MSwzNDU3MiwzNDU3NCwzNDU3NSwzNDU3NiwzNDU3NywzNDU4MCwzNDU4MiwyNzcxMiwyNDMxMSwyMDU3MiwyMDE0MSwyNDIzNywyNTQwMiwzMzM1MSwzNjg5MCwyNjcwNCwzNzIzMCwzMDY0MywyMTUxNiwzODEwOCwyNDQyMCwzMTQ2MSwyNjc0MiwyNTQxMywzMTU3MCwzMjQ3OSwzMDE3MSwyMDU5OSwyNTIzNywyMjgzNiwzNjg3OSwyMDk4NCwzMTE3MSwzMTM2MSwyMjI3MCwyNDQ2NiwzNjg4NCwyODAzNCwyMzY0OCwyMjMwMywyMTUyMCwyMDgyMCwyODIzNywyMjI0MiwyNTUxMiwzOTA1OSwzMzE1MSwzNDU4MSwzNTExNCwzNjg2NCwyMTUzNCwyMzY2MywzMzIxNiwyNTMwMiwyNTE3NiwzMzA3Myw0MDUwMSwzODQ2NCwzOTUzNCwzOTU0OCwyNjkyNSwyMjk0OSwyNTI5OSwyMTgyMiwyNTM2NiwyMTcwMywzNDUyMSwyNzk2NCwyMzA0MywyOTkyNiwzNDk3MiwyNzQ5OCwyMjgwNiwzNTkxNiwyNDM2NywyODI4NiwyOTYwOSwzOTAzNywyMDAyNCwyODkxOSwyMzQzNiwzMDg3MSwyNTQwNSwyNjIwMiwzMDM1OCwyNDc3OSwyMzQ1MSwyMzExMywxOTk3NSwzMzEwOSwyNzc1NCwyOTU3OSwyMDEyOSwyNjUwNSwzMjU5MywyNDQ0OCwyNjEwNiwyNjM5NSwyNDUzNiwyMjkxNiwyMzA0MSwzNDU4NSwzNDU4NywzNDU4OSwzNDU5MSwzNDU5MiwzNDU5NiwzNDU5OCwzNDU5OSwzNDYwMCwzNDYwMiwzNDYwMywzNDYwNCwzNDYwNSwzNDYwNywzNDYwOCwzNDYxMCwzNDYxMSwzNDYxMywzNDYxNCwzNDYxNiwzNDYxNywzNDYxOCwzNDYyMCwzNDYyMSwzNDYyNCwzNDYyNSwzNDYyNiwzNDYyNywzNDYyOCwzNDYyOSwzNDYzMCwzNDYzNCwzNDYzNSwzNDYzNywzNDYzOSwzNDY0MCwzNDY0MSwzNDY0MiwzNDY0NCwzNDY0NSwzNDY0NiwzNDY0OCwzNDY1MCwzNDY1MSwzNDY1MiwzNDY1MywzNDY1NCwzNDY1NSwzNDY1NywzNDY1OCwzNDY2MiwzNDY2MywzNDY2NCwzNDY2NSwzNDY2NiwzNDY2NywzNDY2OCwzNDY2OSwzNDY3MSwzNDY3MywzNDY3NCwzNDY3NSwzNDY3NywzNDY3OSwzNDY4MCwzNDY4MSwzNDY4MiwzNDY4NywzNDY4OCwzNDY4OSwzNDY5MiwzNDY5NCwzNDY5NSwzNDY5NywzNDY5OCwzNDcwMCwzNDcwMiwzNDcwMywzNDcwNCwzNDcwNSwzNDcwNiwzNDcwOCwzNDcwOSwzNDcxMCwzNDcxMiwzNDcxMywzNDcxNCwzNDcxNSwzNDcxNiwzNDcxNywzNDcxOCwzNDcyMCwzNDcyMSwzNDcyMiwzNDcyMywzNDcyNCwyNDAxMywyNDQ5NCwyMTM2MSwzODg4NiwzNjgyOSwyNjY5MywyMjI2MCwyMTgwNywyNDc5OSwyMDAyNiwyODQ5MywzMjUwMCwzMzQ3OSwzMzgwNiwyMjk5NiwyMDI1NSwyMDI2NiwyMzYxNCwzMjQyOCwyNjQxMCwzNDA3NCwyMTYxOSwzMDAzMSwzMjk2MywyMTg5MCwzOTc1OSwyMDMwMSwyODIwNSwzNTg1OSwyMzU2MSwyNDk0NCwyMTM1NSwzMDIzOSwyODIwMSwzNDQ0MiwyNTk5MSwzODM5NSwzMjQ0MSwyMTU2MywzMTI4MywzMjAxMCwzODM4MiwyMTk4NSwzMjcwNSwyOTkzNCwyNTM3MywzNDU4MywyODA2NSwzMTM4OSwyNTEwNSwyNjAxNywyMTM1MSwyNTU2OSwyNzc3OSwyNDA0MywyMTU5NiwzODA1NiwyMDA0NCwyNzc0NSwzNTgyMCwyMzYyNywyNjA4MCwzMzQzNiwyNjc5MSwyMTU2NiwyMTU1NiwyNzU5NSwyNzQ5NCwyMDExNiwyNTQxMCwyMTMyMCwzMzMxMCwyMDIzNywyMDM5OCwyMjM2NiwyNTA5OCwzODY1NCwyNjIxMiwyOTI4OSwyMTI0NywyMTE1MywyNDczNSwzNTgyMywyNjEzMiwyOTA4MSwyNjUxMiwzNTE5OSwzMDgwMiwzMDcxNywyNjIyNCwyMjA3NSwyMTU2MCwzODE3NywyOTMwNiwzNDcyNSwzNDcyNiwzNDcyNywzNDcyOSwzNDczMCwzNDczNCwzNDczNiwzNDczNywzNDczOCwzNDc0MCwzNDc0MiwzNDc0MywzNDc0NCwzNDc0NSwzNDc0NywzNDc0OCwzNDc1MCwzNDc1MSwzNDc1MywzNDc1NCwzNDc1NSwzNDc1NiwzNDc1NywzNDc1OSwzNDc2MCwzNDc2MSwzNDc2NCwzNDc2NSwzNDc2NiwzNDc2NywzNDc2OCwzNDc3MiwzNDc3MywzNDc3NCwzNDc3NSwzNDc3NiwzNDc3NywzNDc3OCwzNDc4MCwzNDc4MSwzNDc4MiwzNDc4MywzNDc4NSwzNDc4NiwzNDc4NywzNDc4OCwzNDc5MCwzNDc5MSwzNDc5MiwzNDc5MywzNDc5NSwzNDc5NiwzNDc5NywzNDc5OSwzNDgwMCwzNDgwMSwzNDgwMiwzNDgwMywzNDgwNCwzNDgwNSwzNDgwNiwzNDgwNywzNDgwOCwzNDgxMCwzNDgxMSwzNDgxMiwzNDgxMywzNDgxNSwzNDgxNiwzNDgxNywzNDgxOCwzNDgyMCwzNDgyMSwzNDgyMiwzNDgyMywzNDgyNCwzNDgyNSwzNDgyNywzNDgyOCwzNDgyOSwzNDgzMCwzNDgzMSwzNDgzMiwzNDgzMywzNDgzNCwzNDgzNiwzNDgzOSwzNDg0MCwzNDg0MSwzNDg0MiwzNDg0NCwzNDg0NSwzNDg0NiwzNDg0NywzNDg0OCwzNDg1MSwzMTIzMiwyNDY4NywyNDA3NiwyNDcxMywzMzE4MSwyMjgwNSwyNDc5NiwyOTA2MCwyODkxMSwyODMzMCwyNzcyOCwyOTMxMiwyNzI2OCwzNDk4OSwyNDEwOSwyMDA2NCwyMzIxOSwyMTkxNiwzODExNSwyNzkyNywzMTk5NSwzODU1MywyNTEwMywzMjQ1NCwzMDYwNiwzNDQzMCwyMTI4MywzODY4NiwzNjc1OCwyNjI0NywyMzc3NywyMDM4NCwyOTQyMSwxOTk3OSwyMTQxNCwyMjc5OSwyMTUyMywyNTQ3MiwzODE4NCwyMDgwOCwyMDE4NSw0MDA5MiwzMjQyMCwyMTY4OCwzNjEzMiwzNDkwMCwzMzMzNSwzODM4NiwyODA0NiwyNDM1OCwyMzI0NCwyNjE3NCwzODUwNSwyOTYxNiwyOTQ4NiwyMTQzOSwzMzE0NiwzOTMwMSwzMjY3MywyMzQ2NiwzODUxOSwzODQ4MCwzMjQ0NywzMDQ1NiwyMTQxMCwzODI2MiwzOTMyMSwzMTY2NSwzNTE0MCwyODI0OCwyMDA2NSwzMjcyNCwzMTA3NywzNTgxNCwyNDgxOSwyMTcwOSwyMDEzOSwzOTAzMywyNDA1NSwyNzIzMywyMDY4NywyMTUyMSwzNTkzNywzMzgzMSwzMDgxMywzODY2MCwyMTA2NiwyMTc0MiwyMjE3OSwzODE0NCwyODA0MCwyMzQ3NywyODEwMiwyNjE5NSwzNDg1MiwzNDg1MywzNDg1NCwzNDg1NSwzNDg1NiwzNDg1NywzNDg1OCwzNDg1OSwzNDg2MCwzNDg2MSwzNDg2MiwzNDg2MywzNDg2NCwzNDg2NSwzNDg2NywzNDg2OCwzNDg2OSwzNDg3MCwzNDg3MSwzNDg3MiwzNDg3NCwzNDg3NSwzNDg3NywzNDg3OCwzNDg3OSwzNDg4MSwzNDg4MiwzNDg4MywzNDg4NiwzNDg4NywzNDg4OCwzNDg4OSwzNDg5MCwzNDg5MSwzNDg5NCwzNDg5NSwzNDg5NiwzNDg5NywzNDg5OCwzNDg5OSwzNDkwMSwzNDkwMiwzNDkwNCwzNDkwNiwzNDkwNywzNDkwOCwzNDkwOSwzNDkxMCwzNDkxMSwzNDkxMiwzNDkxOCwzNDkxOSwzNDkyMiwzNDkyNSwzNDkyNywzNDkyOSwzNDkzMSwzNDkzMiwzNDkzMywzNDkzNCwzNDkzNiwzNDkzNywzNDkzOCwzNDkzOSwzNDk0MCwzNDk0NCwzNDk0NywzNDk1MCwzNDk1MSwzNDk1MywzNDk1NCwzNDk1NiwzNDk1OCwzNDk1OSwzNDk2MCwzNDk2MSwzNDk2MywzNDk2NCwzNDk2NSwzNDk2NywzNDk2OCwzNDk2OSwzNDk3MCwzNDk3MSwzNDk3MywzNDk3NCwzNDk3NSwzNDk3NiwzNDk3NywzNDk3OSwzNDk4MSwzNDk4MiwzNDk4MywzNDk4NCwzNDk4NSwzNDk4NiwyMzU2NywyMzM4OSwyNjY1NywzMjkxOCwyMTg4MCwzMTUwNSwyNTkyOCwyNjk2NCwyMDEyMywyNzQ2MywzNDYzOCwzODc5NSwyMTMyNywyNTM3NSwyNTY1OCwzNzAzNCwyNjAxMiwzMjk2MSwzNTg1NiwyMDg4OSwyNjgwMCwyMTM2OCwzNDgwOSwyNTAzMiwyNzg0NCwyNzg5OSwzNTg3NCwyMzYzMywzNDIxOCwzMzQ1NSwzODE1NiwyNzQyNywzNjc2MywyNjAzMiwyNDU3MSwyNDUxNSwyMDQ0OSwzNDg4NSwyNjE0MywzMzEyNSwyOTQ4MSwyNDgyNiwyMDg1MiwyMTAwOSwyMjQxMSwyNDQxOCwzNzAyNiwzNDg5MiwzNzI2NiwyNDE4NCwyNjQ0NywyNDYxNSwyMjk5NSwyMDgwNCwyMDk4MiwzMzAxNiwyMTI1NiwyNzc2OSwzODU5NiwyOTA2NiwyMDI0MSwyMDQ2MiwzMjY3MCwyNjQyOSwyMTk1NywzODE1MiwzMTE2OCwzNDk2NiwzMjQ4MywyMjY4NywyNTEwMCwzODY1NiwzNDM5NCwyMjA0MCwzOTAzNSwyNDQ2NCwzNTc2OCwzMzk4OCwzNzIwNywyMTQ2NSwyNjA5MywyNDIwNywzMDA0NCwyNDY3NiwzMjExMCwyMzE2NywzMjQ5MCwzMjQ5MywzNjcxMywyMTkyNywyMzQ1OSwyNDc0OCwyNjA1OSwyOTU3MiwzNDk4OCwzNDk5MCwzNDk5MSwzNDk5MiwzNDk5NCwzNDk5NSwzNDk5NiwzNDk5NywzNDk5OCwzNTAwMCwzNTAwMSwzNTAwMiwzNTAwMywzNTAwNSwzNTAwNiwzNTAwNywzNTAwOCwzNTAxMSwzNTAxMiwzNTAxNSwzNTAxNiwzNTAxOCwzNTAxOSwzNTAyMCwzNTAyMSwzNTAyMywzNTAyNCwzNTAyNSwzNTAyNywzNTAzMCwzNTAzMSwzNTAzNCwzNTAzNSwzNTAzNiwzNTAzNywzNTAzOCwzNTA0MCwzNTA0MSwzNTA0NiwzNTA0NywzNTA0OSwzNTA1MCwzNTA1MSwzNTA1MiwzNTA1MywzNTA1NCwzNTA1NSwzNTA1OCwzNTA2MSwzNTA2MiwzNTA2MywzNTA2NiwzNTA2NywzNTA2OSwzNTA3MSwzNTA3MiwzNTA3MywzNTA3NSwzNTA3NiwzNTA3NywzNTA3OCwzNTA3OSwzNTA4MCwzNTA4MSwzNTA4MywzNTA4NCwzNTA4NSwzNTA4NiwzNTA4NywzNTA4OSwzNTA5MiwzNTA5MywzNTA5NCwzNTA5NSwzNTA5NiwzNTEwMCwzNTEwMSwzNTEwMiwzNTEwMywzNTEwNCwzNTEwNiwzNTEwNywzNTEwOCwzNTExMCwzNTExMSwzNTExMiwzNTExMywzNTExNiwzNTExNywzNTExOCwzNTExOSwzNTEyMSwzNTEyMiwzNTEyMywzNTEyNSwzNTEyNywzNjg3MywzMDMwNywzMDUwNSwzMjQ3NCwzODc3MiwzNDIwMywyMzM5OCwzMTM0OCwzODYzNCwzNDg4MCwyMTE5NSwyOTA3MSwyNDQ5MCwyNjA5MiwzNTgxMCwyMzU0NywzOTUzNSwyNDAzMywyNzUyOSwyNzczOSwzNTc1NywzNTc1OSwzNjg3NCwzNjgwNSwyMTM4NywyNTI3Niw0MDQ4Niw0MDQ5MywyMTU2OCwyMDAxMSwzMzQ2OSwyOTI3MywzNDQ2MCwyMzgzMCwzNDkwNSwyODA3OSwzODU5NywyMTcxMywyMDEyMiwzNTc2NiwyODkzNywyMTY5MywzODQwOSwyODg5NSwyODE1MywzMDQxNiwyMDAwNSwzMDc0MCwzNDU3OCwyMzcyMSwyNDMxMCwzNTMyOCwzOTA2OCwzODQxNCwyODgxNCwyNzgzOSwyMjg1MiwyNTUxMywzMDUyNCwzNDg5MywyODQzNiwzMzM5NSwyMjU3NiwyOTE0MSwyMTM4OCwzMDc0NiwzODU5MywyMTc2MSwyNDQyMiwyODk3NiwyMzQ3NiwzNTg2NiwzOTU2NCwyNzUyMywyMjgzMCw0MDQ5NSwzMTIwNywyNjQ3MiwyNTE5NiwyMDMzNSwzMDExMywzMjY1MCwyNzkxNSwzODQ1MSwyNzY4NywyMDIwOCwzMDE2MiwyMDg1OSwyNjY3OSwyODQ3OCwzNjk5MiwzMzEzNiwyMjkzNCwyOTgxNCwzNTEyOCwzNTEyOSwzNTEzMCwzNTEzMSwzNTEzMiwzNTEzMywzNTEzNCwzNTEzNSwzNTEzNiwzNTEzOCwzNTEzOSwzNTE0MSwzNTE0MiwzNTE0MywzNTE0NCwzNTE0NSwzNTE0NiwzNTE0NywzNTE0OCwzNTE0OSwzNTE1MCwzNTE1MSwzNTE1MiwzNTE1MywzNTE1NCwzNTE1NSwzNTE1NiwzNTE1NywzNTE1OCwzNTE1OSwzNTE2MCwzNTE2MSwzNTE2MiwzNTE2MywzNTE2NCwzNTE2NSwzNTE2OCwzNTE2OSwzNTE3MCwzNTE3MSwzNTE3MiwzNTE3MywzNTE3NSwzNTE3NiwzNTE3NywzNTE3OCwzNTE3OSwzNTE4MCwzNTE4MSwzNTE4MiwzNTE4MywzNTE4NCwzNTE4NSwzNTE4NiwzNTE4NywzNTE4OCwzNTE4OSwzNTE5MCwzNTE5MSwzNTE5MiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NywzNTE5OCwzNTIwMCwzNTIwMiwzNTIwNCwzNTIwNSwzNTIwNywzNTIwOCwzNTIwOSwzNTIxMCwzNTIxMSwzNTIxMiwzNTIxMywzNTIxNCwzNTIxNSwzNTIxNiwzNTIxNywzNTIxOCwzNTIxOSwzNTIyMCwzNTIyMSwzNTIyMiwzNTIyMywzNTIyNCwzNTIyNSwzNTIyNiwzNTIyNywzNTIyOCwzNTIyOSwzNTIzMCwzNTIzMSwzNTIzMiwzNTIzMywyNTY3MSwyMzU5MSwzNjk2NSwzMTM3NywzNTg3NSwyMzAwMiwyMTY3NiwzMzI4MCwzMzY0NywzNTIwMSwzMjc2OCwyNjkyOCwyMjA5NCwzMjgyMiwyOTIzOSwzNzMyNiwyMDkxOCwyMDA2MywzOTAyOSwyNTQ5NCwxOTk5NCwyMTQ5NCwyNjM1NSwzMzA5OSwyMjgxMiwyODA4MiwxOTk2OCwyMjc3NywyMTMwNywyNTU1OCwzODEyOSwyMDM4MSwyMDIzNCwzNDkxNSwzOTA1NiwyMjgzOSwzNjk1MSwzMTIyNywyMDIwMiwzMzAwOCwzMDA5NywyNzc3OCwyMzQ1MiwyMzAxNiwyNDQxMywyNjg4NSwzNDQzMywyMDUwNiwyNDA1MCwyMDA1NywzMDY5MSwyMDE5NywzMzQwMiwyNTIzMywyNjEzMSwzNzAwOSwyMzY3MywyMDE1OSwyNDQ0MSwzMzIyMiwzNjkyMCwzMjkwMCwzMDEyMywyMDEzNCwzNTAyOCwyNDg0NywyNzU4OSwyNDUxOCwyMDA0MSwzMDQxMCwyODMyMiwzNTgxMSwzNTc1OCwzNTg1MCwzNTc5MywyNDMyMiwzMjc2NCwzMjcxNiwzMjQ2MiwzMzU4OSwzMzY0MywyMjI0MCwyNzU3NSwzODg5OSwzODQ1MiwyMzAzNSwyMTUzNSwzODEzNCwyODEzOSwyMzQ5MywzOTI3OCwyMzYwOSwyNDM0MSwzODU0NCwzNTIzNCwzNTIzNSwzNTIzNiwzNTIzNywzNTIzOCwzNTIzOSwzNTI0MCwzNTI0MSwzNTI0MiwzNTI0MywzNTI0NCwzNTI0NSwzNTI0NiwzNTI0NywzNTI0OCwzNTI0OSwzNTI1MCwzNTI1MSwzNTI1MiwzNTI1MywzNTI1NCwzNTI1NSwzNTI1NiwzNTI1NywzNTI1OCwzNTI1OSwzNTI2MCwzNTI2MSwzNTI2MiwzNTI2MywzNTI2NCwzNTI2NywzNTI3NywzNTI4MywzNTI4NCwzNTI4NSwzNTI4NywzNTI4OCwzNTI4OSwzNTI5MSwzNTI5MywzNTI5NSwzNTI5NiwzNTI5NywzNTI5OCwzNTMwMCwzNTMwMywzNTMwNCwzNTMwNSwzNTMwNiwzNTMwOCwzNTMwOSwzNTMxMCwzNTMxMiwzNTMxMywzNTMxNCwzNTMxNiwzNTMxNywzNTMxOCwzNTMxOSwzNTMyMCwzNTMyMSwzNTMyMiwzNTMyMywzNTMyNCwzNTMyNSwzNTMyNiwzNTMyNywzNTMyOSwzNTMzMCwzNTMzMSwzNTMzMiwzNTMzMywzNTMzNCwzNTMzNiwzNTMzNywzNTMzOCwzNTMzOSwzNTM0MCwzNTM0MSwzNTM0MiwzNTM0MywzNTM0NCwzNTM0NSwzNTM0NiwzNTM0NywzNTM0OCwzNTM0OSwzNTM1MCwzNTM1MSwzNTM1MiwzNTM1MywzNTM1NCwzNTM1NSwzNTM1NiwzNTM1NywyMTM2MCwzMzUyMSwyNzE4NSwyMzE1Niw0MDU2MCwyNDIxMiwzMjU1MiwzMzcyMSwzMzgyOCwzMzgyOSwzMzYzOSwzNDYzMSwzNjgxNCwzNjE5NCwzMDQwOCwyNDQzMywzOTA2MiwzMDgyOCwyNjE0NCwyMTcyNywyNTMxNywyMDMyMywzMzIxOSwzMDE1MiwyNDI0OCwzODYwNSwzNjM2MiwzNDU1MywyMTY0NywyNzg5MSwyODA0NCwyNzcwNCwyNDcwMywyMTE5MSwyOTk5MiwyNDE4OSwyMDI0OCwyNDczNiwyNDU1MSwyMzU4OCwzMDAwMSwzNzAzOCwzODA4MCwyOTM2OSwyNzgzMywyODIxNiwzNzE5MywyNjM3NywyMTQ1MSwyMTQ5MSwyMDMwNSwzNzMyMSwzNTgyNSwyMTQ0OCwyNDE4OCwzNjgwMiwyODEzMiwyMDExMCwzMDQwMiwyNzAxNCwzNDM5OCwyNDg1OCwzMzI4NiwyMDMxMywyMDQ0NiwzNjkyNiw0MDA2MCwyNDg0MSwyODE4OSwyODE4MCwzODUzMywyMDEwNCwyMzA4OSwzODYzMiwxOTk4MiwyMzY3OSwzMTE2MSwyMzQzMSwzNTgyMSwzMjcwMSwyOTU3NywyMjQ5NSwzMzQxOSwzNzA1NywyMTUwNSwzNjkzNSwyMTk0NywyMzc4NiwyNDQ4MSwyNDg0MCwyNzQ0MiwyOTQyNSwzMjk0NiwzNTQ2NSwzNTM1OCwzNTM1OSwzNTM2MCwzNTM2MSwzNTM2MiwzNTM2MywzNTM2NCwzNTM2NSwzNTM2NiwzNTM2NywzNTM2OCwzNTM2OSwzNTM3MCwzNTM3MSwzNTM3MiwzNTM3MywzNTM3NCwzNTM3NSwzNTM3NiwzNTM3NywzNTM3OCwzNTM3OSwzNTM4MCwzNTM4MSwzNTM4MiwzNTM4MywzNTM4NCwzNTM4NSwzNTM4NiwzNTM4NywzNTM4OCwzNTM4OSwzNTM5MSwzNTM5MiwzNTM5MywzNTM5NCwzNTM5NSwzNTM5NiwzNTM5NywzNTM5OCwzNTM5OSwzNTQwMSwzNTQwMiwzNTQwMywzNTQwNCwzNTQwNSwzNTQwNiwzNTQwNywzNTQwOCwzNTQwOSwzNTQxMCwzNTQxMSwzNTQxMiwzNTQxMywzNTQxNCwzNTQxNSwzNTQxNiwzNTQxNywzNTQxOCwzNTQxOSwzNTQyMCwzNTQyMSwzNTQyMiwzNTQyMywzNTQyNCwzNTQyNSwzNTQyNiwzNTQyNywzNTQyOCwzNTQyOSwzNTQzMCwzNTQzMSwzNTQzMiwzNTQzMywzNTQzNCwzNTQzNSwzNTQzNiwzNTQzNywzNTQzOCwzNTQzOSwzNTQ0MCwzNTQ0MSwzNTQ0MiwzNTQ0MywzNTQ0NCwzNTQ0NSwzNTQ0NiwzNTQ0NywzNTQ0OCwzNTQ1MCwzNTQ1MSwzNTQ1MiwzNTQ1MywzNTQ1NCwzNTQ1NSwzNTQ1NiwyODAyMCwyMzUwNywzNTAyOSwzOTA0NCwzNTk0NywzOTUzMyw0MDQ5OSwyODE3MCwyMDkwMCwyMDgwMywyMjQzNSwzNDk0NSwyMTQwNywyNTU4OCwzNjc1NywyMjI1MywyMTU5MiwyMjI3OCwyOTUwMywyODMwNCwzMjUzNiwzNjgyOCwzMzQ4OSwyNDg5NSwyNDYxNiwzODQ5OCwyNjM1MiwzMjQyMiwzNjIzNCwzNjI5MSwzODA1MywyMzczMSwzMTkwOCwyNjM3NiwyNDc0MiwzODQwNSwzMjc5MiwyMDExMywzNzA5NSwyMTI0OCwzODUwNCwyMDgwMSwzNjgxNiwzNDE2NCwzNzIxMywyNjE5NywzODkwMSwyMzM4MSwyMTI3NywzMDc3NiwyNjQzNCwyNjY4NSwyMTcwNSwyODc5OCwyMzQ3MiwzNjczMywyMDg3NywyMjMxMiwyMTY4MSwyNTg3NCwyNjI0MiwzNjE5MCwzNjE2MywzMzAzOSwzMzkwMCwzNjk3MywzMTk2NywyMDk5MSwzNDI5OSwyNjUzMSwyNjA4OSwyODU3NywzNDQ2OCwzNjQ4MSwyMjEyMiwzNjg5NiwzMDMzOCwyODc5MCwyOTE1NywzNjEzMSwyNTMyMSwyMTAxNywyNzkwMSwzNjE1NiwyNDU5MCwyMjY4NiwyNDk3NCwyNjM2NiwzNjE5MiwyNTE2NiwyMTkzOSwyODE5NSwyNjQxMywzNjcxMSwzNTQ1NywzNTQ1OCwzNTQ1OSwzNTQ2MCwzNTQ2MSwzNTQ2MiwzNTQ2MywzNTQ2NCwzNTQ2NywzNTQ2OCwzNTQ2OSwzNTQ3MCwzNTQ3MSwzNTQ3MiwzNTQ3MywzNTQ3NCwzNTQ3NiwzNTQ3NywzNTQ3OCwzNTQ3OSwzNTQ4MCwzNTQ4MSwzNTQ4MiwzNTQ4MywzNTQ4NCwzNTQ4NSwzNTQ4NiwzNTQ4NywzNTQ4OCwzNTQ4OSwzNTQ5MCwzNTQ5MSwzNTQ5MiwzNTQ5MywzNTQ5NCwzNTQ5NSwzNTQ5NiwzNTQ5NywzNTQ5OCwzNTQ5OSwzNTUwMCwzNTUwMSwzNTUwMiwzNTUwMywzNTUwNCwzNTUwNSwzNTUwNiwzNTUwNywzNTUwOCwzNTUwOSwzNTUxMCwzNTUxMSwzNTUxMiwzNTUxMywzNTUxNCwzNTUxNSwzNTUxNiwzNTUxNywzNTUxOCwzNTUxOSwzNTUyMCwzNTUyMSwzNTUyMiwzNTUyMywzNTUyNCwzNTUyNSwzNTUyNiwzNTUyNywzNTUyOCwzNTUyOSwzNTUzMCwzNTUzMSwzNTUzMiwzNTUzMywzNTUzNCwzNTUzNSwzNTUzNiwzNTUzNywzNTUzOCwzNTUzOSwzNTU0MCwzNTU0MSwzNTU0MiwzNTU0MywzNTU0NCwzNTU0NSwzNTU0NiwzNTU0NywzNTU0OCwzNTU0OSwzNTU1MCwzNTU1MSwzNTU1MiwzNTU1MywzNTU1NCwzNTU1NSwzODExMywzODM5MiwzMDUwNCwyNjYyOSwyNzA0OCwyMTY0MywyMDA0NSwyODg1NiwzNTc4NCwyNTY4OCwyNTk5NSwyMzQyOSwzMTM2NCwyMDUzOCwyMzUyOCwzMDY1MSwyNzYxNywzNTQ0OSwzMTg5NiwyNzgzOCwzMDQxNSwyNjAyNSwzNjc1OSwyMzg1MywyMzYzNywzNDM2MCwyNjYzMiwyMTM0NCwyNTExMiwzMTQ0OSwyODI1MSwzMjUwOSwyNzE2NywzMTQ1NiwyNDQzMiwyODQ2NywyNDM1MiwyNTQ4NCwyODA3MiwyNjQ1NCwxOTk3NiwyNDA4MCwzNjEzNCwyMDE4MywzMjk2MCwzMDI2MCwzODU1NiwyNTMwNywyNjE1NywyNTIxNCwyNzgzNiwzNjIxMywyOTAzMSwzMjYxNywyMDgwNiwzMjkwMywyMTQ4NCwzNjk3NCwyNTI0MCwyMTc0NiwzNDU0NCwzNjc2MSwzMjc3MywzODE2NywzNDA3MSwzNjgyNSwyNzk5MywyOTY0NSwyNjAxNSwzMDQ5NSwyOTk1NiwzMDc1OSwzMzI3NSwzNjEyNiwzODAyNCwyMDM5MCwyNjUxNywzMDEzNywzNTc4NiwzODY2MywyNTM5MSwzODIxNSwzODQ1MywzMzk3NiwyNTM3OSwzMDUyOSwyNDQ0OSwyOTQyNCwyMDEwNSwyNDU5NiwyNTk3MiwyNTMyNywyNzQ5MSwyNTkxOSwzNTU1NiwzNTU1NywzNTU1OCwzNTU1OSwzNTU2MCwzNTU2MSwzNTU2MiwzNTU2MywzNTU2NCwzNTU2NSwzNTU2NiwzNTU2NywzNTU2OCwzNTU2OSwzNTU3MCwzNTU3MSwzNTU3MiwzNTU3MywzNTU3NCwzNTU3NSwzNTU3NiwzNTU3NywzNTU3OCwzNTU3OSwzNTU4MCwzNTU4MSwzNTU4MiwzNTU4MywzNTU4NCwzNTU4NSwzNTU4NiwzNTU4NywzNTU4OCwzNTU4OSwzNTU5MCwzNTU5MiwzNTU5MywzNTU5NCwzNTU5NSwzNTU5NiwzNTU5NywzNTU5OCwzNTU5OSwzNTYwMCwzNTYwMSwzNTYwMiwzNTYwMywzNTYwNCwzNTYwNSwzNTYwNiwzNTYwNywzNTYwOCwzNTYwOSwzNTYxMCwzNTYxMSwzNTYxMiwzNTYxMywzNTYxNCwzNTYxNSwzNTYxNiwzNTYxNywzNTYxOCwzNTYxOSwzNTYyMCwzNTYyMSwzNTYyMywzNTYyNCwzNTYyNSwzNTYyNiwzNTYyNywzNTYyOCwzNTYyOSwzNTYzMCwzNTYzMSwzNTYzMiwzNTYzMywzNTYzNCwzNTYzNSwzNTYzNiwzNTYzNywzNTYzOCwzNTYzOSwzNTY0MCwzNTY0MSwzNTY0MiwzNTY0MywzNTY0NCwzNTY0NSwzNTY0NiwzNTY0NywzNTY0OCwzNTY0OSwzNTY1MCwzNTY1MSwzNTY1MiwzNTY1MywyNDEwMywzMDE1MSwzNzA3MywzNTc3NywzMzQzNywyNjUyNSwyNTkwMywyMTU1MywzNDU4NCwzMDY5MywzMjkzMCwzMzAyNiwyNzcxMywyMDA0MywzMjQ1NSwzMjg0NCwzMDQ1MiwyNjg5MywyNzU0MiwyNTE5MSwyMDU0MCwyMDM1NiwyMjMzNiwyNTM1MSwyNzQ5MCwzNjI4NiwyMTQ4MiwyNjA4OCwzMjQ0MCwyNDUzNSwyNTM3MCwyNTUyNywzMzI2NywzMzI2OCwzMjYyMiwyNDA5MiwyMzc2OSwyMTA0NiwyNjIzNCwzMTIwOSwzMTI1OCwzNjEzNiwyODgyNSwzMDE2NCwyODM4MiwyNzgzNSwzMTM3OCwyMDAxMywzMDQwNSwyNDU0NCwzODA0NywzNDkzNSwzMjQ1NiwzMTE4MSwzMjk1OSwzNzMyNSwyMDIxMCwyMDI0NywzMzMxMSwyMTYwOCwyNDAzMCwyNzk1NCwzNTc4OCwzMTkwOSwzNjcyNCwzMjkyMCwyNDA5MCwyMTY1MCwzMDM4NSwyMzQ0OSwyNjE3MiwzOTU4OCwyOTY2NCwyNjY2NiwzNDUyMywyNjQxNywyOTQ4MiwzNTgzMiwzNTgwMywzNjg4MCwzMTQ4MSwyODg5MSwyOTAzOCwyNTI4NCwzMDYzMywyMjA2NSwyMDAyNywzMzg3OSwyNjYwOSwyMTE2MSwzNDQ5NiwzNjE0MiwzODEzNiwzMTU2OSwzNTY1NCwzNTY1NSwzNTY1NiwzNTY1NywzNTY1OCwzNTY1OSwzNTY2MCwzNTY2MSwzNTY2MiwzNTY2MywzNTY2NCwzNTY2NSwzNTY2NiwzNTY2NywzNTY2OCwzNTY2OSwzNTY3MCwzNTY3MSwzNTY3MiwzNTY3MywzNTY3NCwzNTY3NSwzNTY3NiwzNTY3NywzNTY3OCwzNTY3OSwzNTY4MCwzNTY4MSwzNTY4MiwzNTY4MywzNTY4NCwzNTY4NSwzNTY4NywzNTY4OCwzNTY4OSwzNTY5MCwzNTY5MSwzNTY5MywzNTY5NCwzNTY5NSwzNTY5NiwzNTY5NywzNTY5OCwzNTY5OSwzNTcwMCwzNTcwMSwzNTcwMiwzNTcwMywzNTcwNCwzNTcwNSwzNTcwNiwzNTcwNywzNTcwOCwzNTcwOSwzNTcxMCwzNTcxMSwzNTcxMiwzNTcxMywzNTcxNCwzNTcxNSwzNTcxNiwzNTcxNywzNTcxOCwzNTcxOSwzNTcyMCwzNTcyMSwzNTcyMiwzNTcyMywzNTcyNCwzNTcyNSwzNTcyNiwzNTcyNywzNTcyOCwzNTcyOSwzNTczMCwzNTczMSwzNTczMiwzNTczMywzNTczNCwzNTczNSwzNTczNiwzNTczNywzNTczOCwzNTczOSwzNTc0MCwzNTc0MSwzNTc0MiwzNTc0MywzNTc1NiwzNTc2MSwzNTc3MSwzNTc4MywzNTc5MiwzNTgxOCwzNTg0OSwzNTg3MCwyMDMwMywyNzg4MCwzMTA2OSwzOTU0NywyNTIzNSwyOTIyNiwyNTM0MSwxOTk4NywzMDc0MiwzNjcxNiwyNTc3NiwzNjE4NiwzMTY4NiwyNjcyOSwyNDE5NiwzNTAxMywyMjkxOCwyNTc1OCwyMjc2NiwyOTM2NiwyNjg5NCwzODE4MSwzNjg2MSwzNjE4NCwyMjM2OCwzMjUxMiwzNTg0NiwyMDkzNCwyNTQxNywyNTMwNSwyMTMzMSwyNjcwMCwyOTczMCwzMzUzNywzNzE5NiwyMTgyOCwzMDUyOCwyODc5NiwyNzk3OCwyMDg1NywyMTY3MiwzNjE2NCwyMzAzOSwyODM2MywyODEwMCwyMzM4OCwzMjA0MywyMDE4MCwzMTg2OSwyODM3MSwyMzM3NiwzMzI1OCwyODE3MywyMzM4MywzOTY4MywyNjgzNywzNjM5NCwyMzQ0NywzMjUwOCwyNDYzNSwzMjQzNywzNzA0OSwzNjIwOCwyMjg2MywyNTU0OSwzMTE5OSwzNjI3NSwyMTMzMCwyNjA2MywzMTA2MiwzNTc4MSwzODQ1OSwzMjQ1MiwzODA3NSwzMjM4NiwyMjA2OCwzNzI1NywyNjM2OCwzMjYxOCwyMzU2MiwzNjk4MSwyNjE1MiwyNDAzOCwyMDMwNCwyNjU5MCwyMDU3MCwyMDMxNiwyMjM1MiwyNDIzMSw1OTQwOCw1OTQwOSw1OTQxMCw1OTQxMSw1OTQxMiwzNTg5NiwzNTg5NywzNTg5OCwzNTg5OSwzNTkwMCwzNTkwMSwzNTkwMiwzNTkwMywzNTkwNCwzNTkwNiwzNTkwNywzNTkwOCwzNTkwOSwzNTkxMiwzNTkxNCwzNTkxNSwzNTkxNywzNTkxOCwzNTkxOSwzNTkyMCwzNTkyMSwzNTkyMiwzNTkyMywzNTkyNCwzNTkyNiwzNTkyNywzNTkyOCwzNTkyOSwzNTkzMSwzNTkzMiwzNTkzMywzNTkzNCwzNTkzNSwzNTkzNiwzNTkzOSwzNTk0MCwzNTk0MSwzNTk0MiwzNTk0MywzNTk0NCwzNTk0NSwzNTk0OCwzNTk0OSwzNTk1MCwzNTk1MSwzNTk1MiwzNTk1MywzNTk1NCwzNTk1NiwzNTk1NywzNTk1OCwzNTk1OSwzNTk2MywzNTk2NCwzNTk2NSwzNTk2NiwzNTk2NywzNTk2OCwzNTk2OSwzNTk3MSwzNTk3MiwzNTk3NCwzNTk3NSwzNTk3NiwzNTk3OSwzNTk4MSwzNTk4MiwzNTk4MywzNTk4NCwzNTk4NSwzNTk4NiwzNTk4NywzNTk4OSwzNTk5MCwzNTk5MSwzNTk5MywzNTk5NCwzNTk5NSwzNTk5NiwzNTk5NywzNTk5OCwzNTk5OSwzNjAwMCwzNjAwMSwzNjAwMiwzNjAwMywzNjAwNCwzNjAwNSwzNjAwNiwzNjAwNywzNjAwOCwzNjAwOSwzNjAxMCwzNjAxMSwzNjAxMiwzNjAxMywyMDEwOSwxOTk4MCwyMDgwMCwxOTk4NCwyNDMxOSwyMTMxNywxOTk4OSwyMDEyMCwxOTk5OCwzOTczMCwyMzQwNCwyMjEyMSwyMDAwOCwzMTE2MiwyMDAzMSwyMTI2OSwyMDAzOSwyMjgyOSwyOTI0MywyMTM1OCwyNzY2NCwyMjIzOSwzMjk5NiwzOTMxOSwyNzYwMywzMDU5MCw0MDcyNywyMDAyMiwyMDEyNyw0MDcyMCwyMDA2MCwyMDA3MywyMDExNSwzMzQxNiwyMzM4NywyMTg2OCwyMjAzMSwyMDE2NCwyMTM4OSwyMTQwNSwyMTQxMSwyMTQxMywyMTQyMiwzODc1NywzNjE4OSwyMTI3NCwyMTQ5MywyMTI4NiwyMTI5NCwyMTMxMCwzNjE4OCwyMTM1MCwyMTM0NywyMDk5NCwyMTAwMCwyMTAwNiwyMTAzNywyMTA0MywyMTA1NSwyMTA1NiwyMTA2OCwyMTA4NiwyMTA4OSwyMTA4NCwzMzk2NywyMTExNywyMTEyMiwyMTEyMSwyMTEzNiwyMTEzOSwyMDg2NiwzMjU5NiwyMDE1NSwyMDE2MywyMDE2OSwyMDE2MiwyMDIwMCwyMDE5MywyMDIwMywyMDE5MCwyMDI1MSwyMDIxMSwyMDI1OCwyMDMyNCwyMDIxMywyMDI2MSwyMDI2MywyMDIzMywyMDI2NywyMDMxOCwyMDMyNywyNTkxMiwyMDMxNCwyMDMxNywzNjAxNCwzNjAxNSwzNjAxNiwzNjAxNywzNjAxOCwzNjAxOSwzNjAyMCwzNjAyMSwzNjAyMiwzNjAyMywzNjAyNCwzNjAyNSwzNjAyNiwzNjAyNywzNjAyOCwzNjAyOSwzNjAzMCwzNjAzMSwzNjAzMiwzNjAzMywzNjAzNCwzNjAzNSwzNjAzNiwzNjAzNywzNjAzOCwzNjAzOSwzNjA0MCwzNjA0MSwzNjA0MiwzNjA0MywzNjA0NCwzNjA0NSwzNjA0NiwzNjA0NywzNjA0OCwzNjA0OSwzNjA1MCwzNjA1MSwzNjA1MiwzNjA1MywzNjA1NCwzNjA1NSwzNjA1NiwzNjA1NywzNjA1OCwzNjA1OSwzNjA2MCwzNjA2MSwzNjA2MiwzNjA2MywzNjA2NCwzNjA2NSwzNjA2NiwzNjA2NywzNjA2OCwzNjA2OSwzNjA3MCwzNjA3MSwzNjA3MiwzNjA3MywzNjA3NCwzNjA3NSwzNjA3NiwzNjA3NywzNjA3OCwzNjA3OSwzNjA4MCwzNjA4MSwzNjA4MiwzNjA4MywzNjA4NCwzNjA4NSwzNjA4NiwzNjA4NywzNjA4OCwzNjA4OSwzNjA5MCwzNjA5MSwzNjA5MiwzNjA5MywzNjA5NCwzNjA5NSwzNjA5NiwzNjA5NywzNjA5OCwzNjA5OSwzNjEwMCwzNjEwMSwzNjEwMiwzNjEwMywzNjEwNCwzNjEwNSwzNjEwNiwzNjEwNywzNjEwOCwzNjEwOSwyMDMxOSwyMDMxMSwyMDI3NCwyMDI4NSwyMDM0MiwyMDM0MCwyMDM2OSwyMDM2MSwyMDM1NSwyMDM2NywyMDM1MCwyMDM0NywyMDM5NCwyMDM0OCwyMDM5NiwyMDM3MiwyMDQ1NCwyMDQ1NiwyMDQ1OCwyMDQyMSwyMDQ0MiwyMDQ1MSwyMDQ0NCwyMDQzMywyMDQ0NywyMDQ3MiwyMDUyMSwyMDU1NiwyMDQ2NywyMDUyNCwyMDQ5NSwyMDUyNiwyMDUyNSwyMDQ3OCwyMDUwOCwyMDQ5MiwyMDUxNywyMDUyMCwyMDYwNiwyMDU0NywyMDU2NSwyMDU1MiwyMDU1OCwyMDU4OCwyMDYwMywyMDY0NSwyMDY0NywyMDY0OSwyMDY2NiwyMDY5NCwyMDc0MiwyMDcxNywyMDcxNiwyMDcxMCwyMDcxOCwyMDc0MywyMDc0NywyMDE4OSwyNzcwOSwyMDMxMiwyMDMyNSwyMDQzMCw0MDg2NCwyNzcxOCwzMTg2MCwyMDg0NiwyNDA2MSw0MDY0OSwzOTMyMCwyMDg2NSwyMjgwNCwyMTI0MSwyMTI2MSwzNTMzNSwyMTI2NCwyMDk3MSwyMjgwOSwyMDgyMSwyMDEyOCwyMDgyMiwyMDE0NywzNDkyNiwzNDk4MCwyMDE0OSwzMzA0NCwzNTAyNiwzMTEwNCwyMzM0OCwzNDgxOSwzMjY5NiwyMDkwNywyMDkxMywyMDkyNSwyMDkyNCwzNjExMCwzNjExMSwzNjExMiwzNjExMywzNjExNCwzNjExNSwzNjExNiwzNjExNywzNjExOCwzNjExOSwzNjEyMCwzNjEyMSwzNjEyMiwzNjEyMywzNjEyNCwzNjEyOCwzNjE3NywzNjE3OCwzNjE4MywzNjE5MSwzNjE5NywzNjIwMCwzNjIwMSwzNjIwMiwzNjIwNCwzNjIwNiwzNjIwNywzNjIwOSwzNjIxMCwzNjIxNiwzNjIxNywzNjIxOCwzNjIxOSwzNjIyMCwzNjIyMSwzNjIyMiwzNjIyMywzNjIyNCwzNjIyNiwzNjIyNywzNjIzMCwzNjIzMSwzNjIzMiwzNjIzMywzNjIzNiwzNjIzNywzNjIzOCwzNjIzOSwzNjI0MCwzNjI0MiwzNjI0MywzNjI0NSwzNjI0NiwzNjI0NywzNjI0OCwzNjI0OSwzNjI1MCwzNjI1MSwzNjI1MiwzNjI1MywzNjI1NCwzNjI1NiwzNjI1NywzNjI1OCwzNjI2MCwzNjI2MSwzNjI2MiwzNjI2MywzNjI2NCwzNjI2NSwzNjI2NiwzNjI2NywzNjI2OCwzNjI2OSwzNjI3MCwzNjI3MSwzNjI3MiwzNjI3NCwzNjI3OCwzNjI3OSwzNjI4MSwzNjI4MywzNjI4NSwzNjI4OCwzNjI4OSwzNjI5MCwzNjI5MywzNjI5NSwzNjI5NiwzNjI5NywzNjI5OCwzNjMwMSwzNjMwNCwzNjMwNiwzNjMwNywzNjMwOCwyMDkzNSwyMDg4NiwyMDg5OCwyMDkwMSwzNTc0NCwzNTc1MCwzNTc1MSwzNTc1NCwzNTc2NCwzNTc2NSwzNTc2NywzNTc3OCwzNTc3OSwzNTc4NywzNTc5MSwzNTc5MCwzNTc5NCwzNTc5NSwzNTc5NiwzNTc5OCwzNTgwMCwzNTgwMSwzNTgwNCwzNTgwNywzNTgwOCwzNTgxMiwzNTgxNiwzNTgxNywzNTgyMiwzNTgyNCwzNTgyNywzNTgzMCwzNTgzMywzNTgzNiwzNTgzOSwzNTg0MCwzNTg0MiwzNTg0NCwzNTg0NywzNTg1MiwzNTg1NSwzNTg1NywzNTg1OCwzNTg2MCwzNTg2MSwzNTg2MiwzNTg2NSwzNTg2NywzNTg2NCwzNTg2OSwzNTg3MSwzNTg3MiwzNTg3MywzNTg3NywzNTg3OSwzNTg4MiwzNTg4MywzNTg4NiwzNTg4NywzNTg5MCwzNTg5MSwzNTg5MywzNTg5NCwyMTM1MywyMTM3MCwzODQyOSwzODQzNCwzODQzMywzODQ0OSwzODQ0MiwzODQ2MSwzODQ2MCwzODQ2NiwzODQ3MywzODQ4NCwzODQ5NSwzODUwMywzODUwOCwzODUxNCwzODUxNiwzODUzNiwzODU0MSwzODU1MSwzODU3NiwzNzAxNSwzNzAxOSwzNzAyMSwzNzAxNywzNzAzNiwzNzAyNSwzNzA0NCwzNzA0MywzNzA0NiwzNzA1MCwzNjMwOSwzNjMxMiwzNjMxMywzNjMxNiwzNjMyMCwzNjMyMSwzNjMyMiwzNjMyNSwzNjMyNiwzNjMyNywzNjMyOSwzNjMzMywzNjMzNCwzNjMzNiwzNjMzNywzNjMzOCwzNjM0MCwzNjM0MiwzNjM0OCwzNjM1MCwzNjM1MSwzNjM1MiwzNjM1MywzNjM1NCwzNjM1NSwzNjM1NiwzNjM1OCwzNjM1OSwzNjM2MCwzNjM2MywzNjM2NSwzNjM2NiwzNjM2OCwzNjM2OSwzNjM3MCwzNjM3MSwzNjM3MywzNjM3NCwzNjM3NSwzNjM3NiwzNjM3NywzNjM3OCwzNjM3OSwzNjM4MCwzNjM4NCwzNjM4NSwzNjM4OCwzNjM4OSwzNjM5MCwzNjM5MSwzNjM5MiwzNjM5NSwzNjM5NywzNjQwMCwzNjQwMiwzNjQwMywzNjQwNCwzNjQwNiwzNjQwNywzNjQwOCwzNjQxMSwzNjQxMiwzNjQxNCwzNjQxNSwzNjQxOSwzNjQyMSwzNjQyMiwzNjQyOCwzNjQyOSwzNjQzMCwzNjQzMSwzNjQzMiwzNjQzNSwzNjQzNiwzNjQzNywzNjQzOCwzNjQzOSwzNjQ0MCwzNjQ0MiwzNjQ0MywzNjQ0NCwzNjQ0NSwzNjQ0NiwzNjQ0NywzNjQ0OCwzNjQ0OSwzNjQ1MCwzNjQ1MSwzNjQ1MiwzNjQ1MywzNjQ1NSwzNjQ1NiwzNjQ1OCwzNjQ1OSwzNjQ2MiwzNjQ2NSwzNzA0OCwzNzA0MCwzNzA3MSwzNzA2MSwzNzA1NCwzNzA3MiwzNzA2MCwzNzA2MywzNzA3NSwzNzA5NCwzNzA5MCwzNzA4NCwzNzA3OSwzNzA4MywzNzA5OSwzNzEwMywzNzExOCwzNzEyNCwzNzE1NCwzNzE1MCwzNzE1NSwzNzE2OSwzNzE2NywzNzE3NywzNzE4NywzNzE5MCwyMTAwNSwyMjg1MCwyMTE1NCwyMTE2NCwyMTE2NSwyMTE4MiwyMTc1OSwyMTIwMCwyMTIwNiwyMTIzMiwyMTQ3MSwyOTE2NiwzMDY2OSwyNDMwOCwyMDk4MSwyMDk4OCwzOTcyNywyMTQzMCwyNDMyMSwzMDA0MiwyNDA0NywyMjM0OCwyMjQ0MSwyMjQzMywyMjY1NCwyMjcxNiwyMjcyNSwyMjczNywyMjMxMywyMjMxNiwyMjMxNCwyMjMyMywyMjMyOSwyMjMxOCwyMjMxOSwyMjM2NCwyMjMzMSwyMjMzOCwyMjM3NywyMjQwNSwyMjM3OSwyMjQwNiwyMjM5NiwyMjM5NSwyMjM3NiwyMjM4MSwyMjM5MCwyMjM4NywyMjQ0NSwyMjQzNiwyMjQxMiwyMjQ1MCwyMjQ3OSwyMjQzOSwyMjQ1MiwyMjQxOSwyMjQzMiwyMjQ4NSwyMjQ4OCwyMjQ5MCwyMjQ4OSwyMjQ4MiwyMjQ1NiwyMjUxNiwyMjUxMSwyMjUyMCwyMjUwMCwyMjQ5MywzNjQ2NywzNjQ2OSwzNjQ3MSwzNjQ3MiwzNjQ3MywzNjQ3NCwzNjQ3NSwzNjQ3NywzNjQ3OCwzNjQ4MCwzNjQ4MiwzNjQ4MywzNjQ4NCwzNjQ4NiwzNjQ4OCwzNjQ4OSwzNjQ5MCwzNjQ5MSwzNjQ5MiwzNjQ5MywzNjQ5NCwzNjQ5NywzNjQ5OCwzNjQ5OSwzNjUwMSwzNjUwMiwzNjUwMywzNjUwNCwzNjUwNSwzNjUwNiwzNjUwNywzNjUwOSwzNjUxMSwzNjUxMiwzNjUxMywzNjUxNCwzNjUxNSwzNjUxNiwzNjUxNywzNjUxOCwzNjUxOSwzNjUyMCwzNjUyMSwzNjUyMiwzNjUyNSwzNjUyNiwzNjUyOCwzNjUyOSwzNjUzMSwzNjUzMiwzNjUzMywzNjUzNCwzNjUzNSwzNjUzNiwzNjUzNywzNjUzOSwzNjU0MCwzNjU0MSwzNjU0MiwzNjU0MywzNjU0NCwzNjU0NSwzNjU0NiwzNjU0NywzNjU0OCwzNjU0OSwzNjU1MCwzNjU1MSwzNjU1MiwzNjU1MywzNjU1NCwzNjU1NSwzNjU1NiwzNjU1NywzNjU1OSwzNjU2MCwzNjU2MSwzNjU2MiwzNjU2MywzNjU2NCwzNjU2NSwzNjU2NiwzNjU2NywzNjU2OCwzNjU2OSwzNjU3MCwzNjU3MSwzNjU3MiwzNjU3MywzNjU3NCwzNjU3NSwzNjU3NiwzNjU3NywzNjU3OCwzNjU3OSwzNjU4MCwyMjUzOSwyMjU0MSwyMjUyNSwyMjUwOSwyMjUyOCwyMjU1OCwyMjU1MywyMjU5NiwyMjU2MCwyMjYyOSwyMjYzNiwyMjY1NywyMjY2NSwyMjY4MiwyMjY1NiwzOTMzNiw0MDcyOSwyNTA4NywzMzQwMSwzMzQwNSwzMzQwNywzMzQyMywzMzQxOCwzMzQ0OCwzMzQxMiwzMzQyMiwzMzQyNSwzMzQzMSwzMzQzMywzMzQ1MSwzMzQ2NCwzMzQ3MCwzMzQ1NiwzMzQ4MCwzMzQ4MiwzMzUwNywzMzQzMiwzMzQ2MywzMzQ1NCwzMzQ4MywzMzQ4NCwzMzQ3MywzMzQ0OSwzMzQ2MCwzMzQ0MSwzMzQ1MCwzMzQzOSwzMzQ3NiwzMzQ4NiwzMzQ0NCwzMzUwNSwzMzU0NSwzMzUyNywzMzUwOCwzMzU1MSwzMzU0MywzMzUwMCwzMzUyNCwzMzQ5MCwzMzQ5NiwzMzU0OCwzMzUzMSwzMzQ5MSwzMzU1MywzMzU2MiwzMzU0MiwzMzU1NiwzMzU1NywzMzUwNCwzMzQ5MywzMzU2NCwzMzYxNywzMzYyNywzMzYyOCwzMzU0NCwzMzY4MiwzMzU5NiwzMzU4OCwzMzU4NSwzMzY5MSwzMzYzMCwzMzU4MywzMzYxNSwzMzYwNywzMzYwMywzMzYzMSwzMzYwMCwzMzU1OSwzMzYzMiwzMzU4MSwzMzU5NCwzMzU4NywzMzYzOCwzMzYzNywzNjU4MSwzNjU4MiwzNjU4MywzNjU4NCwzNjU4NSwzNjU4NiwzNjU4NywzNjU4OCwzNjU4OSwzNjU5MCwzNjU5MSwzNjU5MiwzNjU5MywzNjU5NCwzNjU5NSwzNjU5NiwzNjU5NywzNjU5OCwzNjU5OSwzNjYwMCwzNjYwMSwzNjYwMiwzNjYwMywzNjYwNCwzNjYwNSwzNjYwNiwzNjYwNywzNjYwOCwzNjYwOSwzNjYxMCwzNjYxMSwzNjYxMiwzNjYxMywzNjYxNCwzNjYxNSwzNjYxNiwzNjYxNywzNjYxOCwzNjYxOSwzNjYyMCwzNjYyMSwzNjYyMiwzNjYyMywzNjYyNCwzNjYyNSwzNjYyNiwzNjYyNywzNjYyOCwzNjYyOSwzNjYzMCwzNjYzMSwzNjYzMiwzNjYzMywzNjYzNCwzNjYzNSwzNjYzNiwzNjYzNywzNjYzOCwzNjYzOSwzNjY0MCwzNjY0MSwzNjY0MiwzNjY0MywzNjY0NCwzNjY0NSwzNjY0NiwzNjY0NywzNjY0OCwzNjY0OSwzNjY1MCwzNjY1MSwzNjY1MiwzNjY1MywzNjY1NCwzNjY1NSwzNjY1NiwzNjY1NywzNjY1OCwzNjY1OSwzNjY2MCwzNjY2MSwzNjY2MiwzNjY2MywzNjY2NCwzNjY2NSwzNjY2NiwzNjY2NywzNjY2OCwzNjY2OSwzNjY3MCwzNjY3MSwzNjY3MiwzNjY3MywzNjY3NCwzNjY3NSwzNjY3NiwzMzY0MCwzMzU2MywzMzY0MSwzMzY0NCwzMzY0MiwzMzY0NSwzMzY0NiwzMzcxMiwzMzY1NiwzMzcxNSwzMzcxNiwzMzY5NiwzMzcwNiwzMzY4MywzMzY5MiwzMzY2OSwzMzY2MCwzMzcxOCwzMzcwNSwzMzY2MSwzMzcyMCwzMzY1OSwzMzY4OCwzMzY5NCwzMzcwNCwzMzcyMiwzMzcyNCwzMzcyOSwzMzc5MywzMzc2NSwzMzc1MiwyMjUzNSwzMzgxNiwzMzgwMywzMzc1NywzMzc4OSwzMzc1MCwzMzgyMCwzMzg0OCwzMzgwOSwzMzc5OCwzMzc0OCwzMzc1OSwzMzgwNywzMzc5NSwzMzc4NCwzMzc4NSwzMzc3MCwzMzczMywzMzcyOCwzMzgzMCwzMzc3NiwzMzc2MSwzMzg4NCwzMzg3MywzMzg4MiwzMzg4MSwzMzkwNywzMzkyNywzMzkyOCwzMzkxNCwzMzkyOSwzMzkxMiwzMzg1MiwzMzg2MiwzMzg5NywzMzkxMCwzMzkzMiwzMzkzNCwzMzg0MSwzMzkwMSwzMzk4NSwzMzk5NywzNDAwMCwzNDAyMiwzMzk4MSwzNDAwMywzMzk5NCwzMzk4MywzMzk3OCwzNDAxNiwzMzk1MywzMzk3NywzMzk3MiwzMzk0MywzNDAyMSwzNDAxOSwzNDA2MCwyOTk2NSwzNDEwNCwzNDAzMiwzNDEwNSwzNDA3OSwzNDEwNiwzNjY3NywzNjY3OCwzNjY3OSwzNjY4MCwzNjY4MSwzNjY4MiwzNjY4MywzNjY4NCwzNjY4NSwzNjY4NiwzNjY4NywzNjY4OCwzNjY4OSwzNjY5MCwzNjY5MSwzNjY5MiwzNjY5MywzNjY5NCwzNjY5NSwzNjY5NiwzNjY5NywzNjY5OCwzNjY5OSwzNjcwMCwzNjcwMSwzNjcwMiwzNjcwMywzNjcwNCwzNjcwNSwzNjcwNiwzNjcwNywzNjcwOCwzNjcwOSwzNjcxNCwzNjczNiwzNjc0OCwzNjc1NCwzNjc2NSwzNjc2OCwzNjc2OSwzNjc3MCwzNjc3MiwzNjc3MywzNjc3NCwzNjc3NSwzNjc3OCwzNjc4MCwzNjc4MSwzNjc4MiwzNjc4MywzNjc4NiwzNjc4NywzNjc4OCwzNjc4OSwzNjc5MSwzNjc5MiwzNjc5NCwzNjc5NSwzNjc5NiwzNjc5OSwzNjgwMCwzNjgwMywzNjgwNiwzNjgwOSwzNjgxMCwzNjgxMSwzNjgxMiwzNjgxMywzNjgxNSwzNjgxOCwzNjgyMiwzNjgyMywzNjgyNiwzNjgzMiwzNjgzMywzNjgzNSwzNjgzOSwzNjg0NCwzNjg0NywzNjg0OSwzNjg1MCwzNjg1MiwzNjg1MywzNjg1NCwzNjg1OCwzNjg1OSwzNjg2MCwzNjg2MiwzNjg2MywzNjg3MSwzNjg3MiwzNjg3NiwzNjg3OCwzNjg4MywzNjg4NSwzNjg4OCwzNDEzNCwzNDEwNywzNDA0NywzNDA0NCwzNDEzNywzNDEyMCwzNDE1MiwzNDE0OCwzNDE0MiwzNDE3MCwzMDYyNiwzNDExNSwzNDE2MiwzNDE3MSwzNDIxMiwzNDIxNiwzNDE4MywzNDE5MSwzNDE2OSwzNDIyMiwzNDIwNCwzNDE4MSwzNDIzMywzNDIzMSwzNDIyNCwzNDI1OSwzNDI0MSwzNDI2OCwzNDMwMywzNDM0MywzNDMwOSwzNDM0NSwzNDMyNiwzNDM2NCwyNDMxOCwyNDMyOCwyMjg0NCwyMjg0OSwzMjgyMywyMjg2OSwyMjg3NCwyMjg3MiwyMTI2MywyMzU4NiwyMzU4OSwyMzU5NiwyMzYwNCwyNTE2NCwyNTE5NCwyNTI0NywyNTI3NSwyNTI5MCwyNTMwNiwyNTMwMywyNTMyNiwyNTM3OCwyNTMzNCwyNTQwMSwyNTQxOSwyNTQxMSwyNTUxNywyNTU5MCwyNTQ1NywyNTQ2NiwyNTQ4NiwyNTUyNCwyNTQ1MywyNTUxNiwyNTQ4MiwyNTQ0OSwyNTUxOCwyNTUzMiwyNTU4NiwyNTU5MiwyNTU2OCwyNTU5OSwyNTU0MCwyNTU2NiwyNTU1MCwyNTY4MiwyNTU0MiwyNTUzNCwyNTY2OSwyNTY2NSwyNTYxMSwyNTYyNywyNTYzMiwyNTYxMiwyNTYzOCwyNTYzMywyNTY5NCwyNTczMiwyNTcwOSwyNTc1MCwzNjg4OSwzNjg5MiwzNjg5OSwzNjkwMCwzNjkwMSwzNjkwMywzNjkwNCwzNjkwNSwzNjkwNiwzNjkwNywzNjkwOCwzNjkxMiwzNjkxMywzNjkxNCwzNjkxNSwzNjkxNiwzNjkxOSwzNjkyMSwzNjkyMiwzNjkyNSwzNjkyNywzNjkyOCwzNjkzMSwzNjkzMywzNjkzNCwzNjkzNiwzNjkzNywzNjkzOCwzNjkzOSwzNjk0MCwzNjk0MiwzNjk0OCwzNjk0OSwzNjk1MCwzNjk1MywzNjk1NCwzNjk1NiwzNjk1NywzNjk1OCwzNjk1OSwzNjk2MCwzNjk2MSwzNjk2NCwzNjk2NiwzNjk2NywzNjk2OSwzNjk3MCwzNjk3MSwzNjk3MiwzNjk3NSwzNjk3NiwzNjk3NywzNjk3OCwzNjk3OSwzNjk4MiwzNjk4MywzNjk4NCwzNjk4NSwzNjk4NiwzNjk4NywzNjk4OCwzNjk5MCwzNjk5MywzNjk5NiwzNjk5NywzNjk5OCwzNjk5OSwzNzAwMSwzNzAwMiwzNzAwNCwzNzAwNSwzNzAwNiwzNzAwNywzNzAwOCwzNzAxMCwzNzAxMiwzNzAxNCwzNzAxNiwzNzAxOCwzNzAyMCwzNzAyMiwzNzAyMywzNzAyNCwzNzAyOCwzNzAyOSwzNzAzMSwzNzAzMiwzNzAzMywzNzAzNSwzNzAzNywzNzA0MiwzNzA0NywzNzA1MiwzNzA1MywzNzA1NSwzNzA1NiwyNTcyMiwyNTc4MywyNTc4NCwyNTc1MywyNTc4NiwyNTc5MiwyNTgwOCwyNTgxNSwyNTgyOCwyNTgyNiwyNTg2NSwyNTg5MywyNTkwMiwyNDMzMSwyNDUzMCwyOTk3NywyNDMzNywyMTM0MywyMTQ4OSwyMTUwMSwyMTQ4MSwyMTQ4MCwyMTQ5OSwyMTUyMiwyMTUyNiwyMTUxMCwyMTU3OSwyMTU4NiwyMTU4NywyMTU4OCwyMTU5MCwyMTU3MSwyMTUzNywyMTU5MSwyMTU5MywyMTUzOSwyMTU1NCwyMTYzNCwyMTY1MiwyMTYyMywyMTYxNywyMTYwNCwyMTY1OCwyMTY1OSwyMTYzNiwyMTYyMiwyMTYwNiwyMTY2MSwyMTcxMiwyMTY3NywyMTY5OCwyMTY4NCwyMTcxNCwyMTY3MSwyMTY3MCwyMTcxNSwyMTcxNiwyMTYxOCwyMTY2NywyMTcxNywyMTY5MSwyMTY5NSwyMTcwOCwyMTcyMSwyMTcyMiwyMTcyNCwyMTY3MywyMTY3NCwyMTY2OCwyMTcyNSwyMTcxMSwyMTcyNiwyMTc4NywyMTczNSwyMTc5MiwyMTc1NywyMTc4MCwyMTc0NywyMTc5NCwyMTc5NSwyMTc3NSwyMTc3NywyMTc5OSwyMTgwMiwyMTg2MywyMTkwMywyMTk0MSwyMTgzMywyMTg2OSwyMTgyNSwyMTg0NSwyMTgyMywyMTg0MCwyMTgyMCwzNzA1OCwzNzA1OSwzNzA2MiwzNzA2NCwzNzA2NSwzNzA2NywzNzA2OCwzNzA2OSwzNzA3NCwzNzA3NiwzNzA3NywzNzA3OCwzNzA4MCwzNzA4MSwzNzA4MiwzNzA4NiwzNzA4NywzNzA4OCwzNzA5MSwzNzA5MiwzNzA5MywzNzA5NywzNzA5OCwzNzEwMCwzNzEwMiwzNzEwNCwzNzEwNSwzNzEwNiwzNzEwNywzNzEwOSwzNzExMCwzNzExMSwzNzExMywzNzExNCwzNzExNSwzNzExNiwzNzExOSwzNzEyMCwzNzEyMSwzNzEyMywzNzEyNSwzNzEyNiwzNzEyNywzNzEyOCwzNzEyOSwzNzEzMCwzNzEzMSwzNzEzMiwzNzEzMywzNzEzNCwzNzEzNSwzNzEzNiwzNzEzNywzNzEzOCwzNzEzOSwzNzE0MCwzNzE0MSwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0NywzNzE0OCwzNzE0OSwzNzE1MSwzNzE1MiwzNzE1MywzNzE1NiwzNzE1NywzNzE1OCwzNzE1OSwzNzE2MCwzNzE2MSwzNzE2MiwzNzE2MywzNzE2NCwzNzE2NSwzNzE2NiwzNzE2OCwzNzE3MCwzNzE3MSwzNzE3MiwzNzE3MywzNzE3NCwzNzE3NSwzNzE3NiwzNzE3OCwzNzE3OSwzNzE4MCwzNzE4MSwzNzE4MiwzNzE4MywzNzE4NCwzNzE4NSwzNzE4NiwzNzE4OCwyMTgxNSwyMTg0NiwyMTg3NywyMTg3OCwyMTg3OSwyMTgxMSwyMTgwOCwyMTg1MiwyMTg5OSwyMTk3MCwyMTg5MSwyMTkzNywyMTk0NSwyMTg5NiwyMTg4OSwyMTkxOSwyMTg4NiwyMTk3NCwyMTkwNSwyMTg4MywyMTk4MywyMTk0OSwyMTk1MCwyMTkwOCwyMTkxMywyMTk5NCwyMjAwNywyMTk2MSwyMjA0NywyMTk2OSwyMTk5NSwyMTk5NiwyMTk3MiwyMTk5MCwyMTk4MSwyMTk1NiwyMTk5OSwyMTk4OSwyMjAwMiwyMjAwMywyMTk2NCwyMTk2NSwyMTk5MiwyMjAwNSwyMTk4OCwzNjc1NiwyMjA0NiwyMjAyNCwyMjAyOCwyMjAxNywyMjA1MiwyMjA1MSwyMjAxNCwyMjAxNiwyMjA1NSwyMjA2MSwyMjEwNCwyMjA3MywyMjEwMywyMjA2MCwyMjA5MywyMjExNCwyMjEwNSwyMjEwOCwyMjA5MiwyMjEwMCwyMjE1MCwyMjExNiwyMjEyOSwyMjEyMywyMjEzOSwyMjE0MCwyMjE0OSwyMjE2MywyMjE5MSwyMjIyOCwyMjIzMSwyMjIzNywyMjI0MSwyMjI2MSwyMjI1MSwyMjI2NSwyMjI3MSwyMjI3NiwyMjI4MiwyMjI4MSwyMjMwMCwyNDA3OSwyNDA4OSwyNDA4NCwyNDA4MSwyNDExMywyNDEyMywyNDEyNCwzNzE4OSwzNzE5MSwzNzE5MiwzNzIwMSwzNzIwMywzNzIwNCwzNzIwNSwzNzIwNiwzNzIwOCwzNzIwOSwzNzIxMSwzNzIxMiwzNzIxNSwzNzIxNiwzNzIyMiwzNzIyMywzNzIyNCwzNzIyNywzNzIyOSwzNzIzNSwzNzI0MiwzNzI0MywzNzI0NCwzNzI0OCwzNzI0OSwzNzI1MCwzNzI1MSwzNzI1MiwzNzI1NCwzNzI1NiwzNzI1OCwzNzI2MiwzNzI2MywzNzI2NywzNzI2OCwzNzI2OSwzNzI3MCwzNzI3MSwzNzI3MiwzNzI3MywzNzI3NiwzNzI3NywzNzI3OCwzNzI3OSwzNzI4MCwzNzI4MSwzNzI4NCwzNzI4NSwzNzI4NiwzNzI4NywzNzI4OCwzNzI4OSwzNzI5MSwzNzI5MiwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwMywzNzMwNCwzNzMwNSwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMCwzNzMxMSwzNzMxMiwzNzMxMywzNzMxNCwzNzMxNSwzNzMxNiwzNzMxNywzNzMxOCwzNzMyMCwzNzMyMywzNzMyOCwzNzMzMCwzNzMzMSwzNzMzMiwzNzMzMywzNzMzNCwzNzMzNSwzNzMzNiwzNzMzNywzNzMzOCwzNzMzOSwzNzM0MSwzNzM0MiwzNzM0MywzNzM0NCwzNzM0NSwzNzM0NiwzNzM0NywzNzM0OCwzNzM0OSwyNDExOSwyNDEzMiwyNDE0OCwyNDE1NSwyNDE1OCwyNDE2MSwyMzY5MiwyMzY3NCwyMzY5MywyMzY5NiwyMzcwMiwyMzY4OCwyMzcwNCwyMzcwNSwyMzY5NywyMzcwNiwyMzcwOCwyMzczMywyMzcxNCwyMzc0MSwyMzcyNCwyMzcyMywyMzcyOSwyMzcxNSwyMzc0NSwyMzczNSwyMzc0OCwyMzc2MiwyMzc4MCwyMzc1NSwyMzc4MSwyMzgxMCwyMzgxMSwyMzg0NywyMzg0NiwyMzg1NCwyMzg0NCwyMzgzOCwyMzgxNCwyMzgzNSwyMzg5NiwyMzg3MCwyMzg2MCwyMzg2OSwyMzkxNiwyMzg5OSwyMzkxOSwyMzkwMSwyMzkxNSwyMzg4MywyMzg4MiwyMzkxMywyMzkyNCwyMzkzOCwyMzk2MSwyMzk2NSwzNTk1NSwyMzk5MSwyNDAwNSwyNDQzNSwyNDQzOSwyNDQ1MCwyNDQ1NSwyNDQ1NywyNDQ2MCwyNDQ2OSwyNDQ3MywyNDQ3NiwyNDQ4OCwyNDQ5MywyNDUwMSwyNDUwOCwzNDkxNCwyNDQxNywyOTM1NywyOTM2MCwyOTM2NCwyOTM2NywyOTM2OCwyOTM3OSwyOTM3NywyOTM5MCwyOTM4OSwyOTM5NCwyOTQxNiwyOTQyMywyOTQxNywyOTQyNiwyOTQyOCwyOTQzMSwyOTQ0MSwyOTQyNywyOTQ0MywyOTQzNCwzNzM1MCwzNzM1MSwzNzM1MiwzNzM1MywzNzM1NCwzNzM1NSwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2MiwzNzM2MywzNzM2NCwzNzM2NSwzNzM2NiwzNzM2NywzNzM2OCwzNzM2OSwzNzM3MCwzNzM3MSwzNzM3MiwzNzM3MywzNzM3NCwzNzM3NSwzNzM3NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM4NywzNzM4OCwzNzM4OSwzNzM5MCwzNzM5MSwzNzM5MiwzNzM5MywzNzM5NCwzNzM5NSwzNzM5NiwzNzM5NywzNzM5OCwzNzM5OSwzNzQwMCwzNzQwMSwzNzQwMiwzNzQwMywzNzQwNCwzNzQwNSwzNzQwNiwzNzQwNywzNzQwOCwzNzQwOSwzNzQxMCwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNSwzNzQxNiwzNzQxNywzNzQxOCwzNzQxOSwzNzQyMCwzNzQyMSwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNSwzNzQyNiwzNzQyNywzNzQyOCwzNzQyOSwzNzQzMCwzNzQzMSwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNSwzNzQzNiwzNzQzNywzNzQzOCwzNzQzOSwzNzQ0MCwzNzQ0MSwzNzQ0MiwzNzQ0MywzNzQ0NCwzNzQ0NSwyOTQzNSwyOTQ2MywyOTQ1OSwyOTQ3MywyOTQ1MCwyOTQ3MCwyOTQ2OSwyOTQ2MSwyOTQ3NCwyOTQ5NywyOTQ3NywyOTQ4NCwyOTQ5NiwyOTQ4OSwyOTUyMCwyOTUxNywyOTUyNywyOTUzNiwyOTU0OCwyOTU1MSwyOTU2NiwzMzMwNywyMjgyMSwzOTE0MywyMjgyMCwyMjc4NiwzOTI2NywzOTI3MSwzOTI3MiwzOTI3MywzOTI3NCwzOTI3NSwzOTI3NiwzOTI4NCwzOTI4NywzOTI5MywzOTI5NiwzOTMwMCwzOTMwMywzOTMwNiwzOTMwOSwzOTMxMiwzOTMxMywzOTMxNSwzOTMxNiwzOTMxNywyNDE5MiwyNDIwOSwyNDIwMywyNDIxNCwyNDIyOSwyNDIyNCwyNDI0OSwyNDI0NSwyNDI1NCwyNDI0MywzNjE3OSwyNDI3NCwyNDI3MywyNDI4MywyNDI5NiwyNDI5OCwzMzIxMCwyNDUxNiwyNDUyMSwyNDUzNCwyNDUyNywyNDU3OSwyNDU1OCwyNDU4MCwyNDU0NSwyNDU0OCwyNDU3NCwyNDU4MSwyNDU4MiwyNDU1NCwyNDU1NywyNDU2OCwyNDYwMSwyNDYyOSwyNDYxNCwyNDYwMywyNDU5MSwyNDU4OSwyNDYxNywyNDYxOSwyNDU4NiwyNDYzOSwyNDYwOSwyNDY5NiwyNDY5NywyNDY5OSwyNDY5OCwyNDY0MiwzNzQ0NiwzNzQ0NywzNzQ0OCwzNzQ0OSwzNzQ1MCwzNzQ1MSwzNzQ1MiwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NiwzNzQ1NywzNzQ1OCwzNzQ1OSwzNzQ2MCwzNzQ2MSwzNzQ2MiwzNzQ2MywzNzQ2NCwzNzQ2NSwzNzQ2NiwzNzQ2NywzNzQ2OCwzNzQ2OSwzNzQ3MCwzNzQ3MSwzNzQ3MiwzNzQ3MywzNzQ3NCwzNzQ3NSwzNzQ3NiwzNzQ3NywzNzQ3OCwzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4MiwzNzQ4MywzNzQ4NCwzNzQ4NSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ4OSwzNzQ5MCwzNzQ5MSwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OCwzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMiwzNzUwMywzNzUwNCwzNzUwNSwzNzUwNiwzNzUwNywzNzUwOCwzNzUwOSwzNzUxMCwzNzUxMSwzNzUxMiwzNzUxMywzNzUxNCwzNzUxNSwzNzUxNiwzNzUxNywzNzUxOSwzNzUyMCwzNzUyMSwzNzUyMiwzNzUyMywzNzUyNCwzNzUyNSwzNzUyNiwzNzUyNywzNzUyOCwzNzUyOSwzNzUzMCwzNzUzMSwzNzUzMiwzNzUzMywzNzUzNCwzNzUzNSwzNzUzNiwzNzUzNywzNzUzOCwzNzUzOSwzNzU0MCwzNzU0MSwzNzU0MiwzNzU0MywyNDY4MiwyNDcwMSwyNDcyNiwyNDczMCwyNDc0OSwyNDczMywyNDcwNywyNDcyMiwyNDcxNiwyNDczMSwyNDgxMiwyNDc2MywyNDc1MywyNDc5NywyNDc5MiwyNDc3NCwyNDc5NCwyNDc1NiwyNDg2NCwyNDg3MCwyNDg1MywyNDg2NywyNDgyMCwyNDgzMiwyNDg0NiwyNDg3NSwyNDkwNiwyNDk0OSwyNTAwNCwyNDk4MCwyNDk5OSwyNTAxNSwyNTA0NCwyNTA3NywyNDU0MSwzODU3OSwzODM3NywzODM3OSwzODM4NSwzODM4NywzODM4OSwzODM5MCwzODM5NiwzODM5OCwzODQwMywzODQwNCwzODQwNiwzODQwOCwzODQxMCwzODQxMSwzODQxMiwzODQxMywzODQxNSwzODQxOCwzODQyMSwzODQyMiwzODQyMywzODQyNSwzODQyNiwyMDAxMiwyOTI0NywyNTEwOSwyNzcwMSwyNzczMiwyNzc0MCwyNzcyMiwyNzgxMSwyNzc4MSwyNzc5MiwyNzc5NiwyNzc4OCwyNzc1MiwyNzc1MywyNzc2NCwyNzc2NiwyNzc4MiwyNzgxNywyNzg1NiwyNzg2MCwyNzgyMSwyNzg5NSwyNzg5NiwyNzg4OSwyNzg2MywyNzgyNiwyNzg3MiwyNzg2MiwyNzg5OCwyNzg4MywyNzg4NiwyNzgyNSwyNzg1OSwyNzg4NywyNzkwMiwzNzU0NCwzNzU0NSwzNzU0NiwzNzU0NywzNzU0OCwzNzU0OSwzNzU1MSwzNzU1MiwzNzU1MywzNzU1NCwzNzU1NSwzNzU1NiwzNzU1NywzNzU1OCwzNzU1OSwzNzU2MCwzNzU2MSwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NiwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MiwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NywzNzU3OCwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4MywzNzU4NCwzNzU4NSwzNzU4NiwzNzU4NywzNzU4OCwzNzU4OSwzNzU5MCwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NCwzNzU5NSwzNzU5NiwzNzU5NywzNzU5OCwzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMiwzNzYwMywzNzYwNCwzNzYwNSwzNzYwNiwzNzYwNywzNzYwOCwzNzYwOSwzNzYxMCwzNzYxMSwzNzYxMiwzNzYxMywzNzYxNCwzNzYxNSwzNzYxNiwzNzYxNywzNzYxOCwzNzYxOSwzNzYyMCwzNzYyMSwzNzYyMiwzNzYyMywzNzYyNCwzNzYyNSwzNzYyNiwzNzYyNywzNzYyOCwzNzYyOSwzNzYzMCwzNzYzMSwzNzYzMiwzNzYzMywzNzYzNCwzNzYzNSwzNzYzNiwzNzYzNywzNzYzOCwzNzYzOSwzNzY0MCwzNzY0MSwyNzk2MSwyNzk0MywyNzkxNiwyNzk3MSwyNzk3NiwyNzkxMSwyNzkwOCwyNzkyOSwyNzkxOCwyNzk0NywyNzk4MSwyNzk1MCwyNzk1NywyNzkzMCwyNzk4MywyNzk4NiwyNzk4OCwyNzk1NSwyODA0OSwyODAxNSwyODA2MiwyODA2NCwyNzk5OCwyODA1MSwyODA1MiwyNzk5NiwyODAwMCwyODAyOCwyODAwMywyODE4NiwyODEwMywyODEwMSwyODEyNiwyODE3NCwyODA5NSwyODEyOCwyODE3NywyODEzNCwyODEyNSwyODEyMSwyODE4MiwyODA3NSwyODE3MiwyODA3OCwyODIwMywyODI3MCwyODIzOCwyODI2NywyODMzOCwyODI1NSwyODI5NCwyODI0MywyODI0NCwyODIxMCwyODE5NywyODIyOCwyODM4MywyODMzNywyODMxMiwyODM4NCwyODQ2MSwyODM4NiwyODMyNSwyODMyNywyODM0OSwyODM0NywyODM0MywyODM3NSwyODM0MCwyODM2NywyODMwMywyODM1NCwyODMxOSwyODUxNCwyODQ4NiwyODQ4NywyODQ1MiwyODQzNywyODQwOSwyODQ2MywyODQ3MCwyODQ5MSwyODUzMiwyODQ1OCwyODQyNSwyODQ1NywyODU1MywyODU1NywyODU1NiwyODUzNiwyODUzMCwyODU0MCwyODUzOCwyODYyNSwzNzY0MiwzNzY0MywzNzY0NCwzNzY0NSwzNzY0NiwzNzY0NywzNzY0OCwzNzY0OSwzNzY1MCwzNzY1MSwzNzY1MiwzNzY1MywzNzY1NCwzNzY1NSwzNzY1NiwzNzY1NywzNzY1OCwzNzY1OSwzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NCwzNzY2NSwzNzY2NiwzNzY2NywzNzY2OCwzNzY2OSwzNzY3MCwzNzY3MSwzNzY3MiwzNzY3MywzNzY3NCwzNzY3NSwzNzY3NiwzNzY3NywzNzY3OCwzNzY3OSwzNzY4MCwzNzY4MSwzNzY4MiwzNzY4MywzNzY4NCwzNzY4NSwzNzY4NiwzNzY4NywzNzY4OCwzNzY4OSwzNzY5MCwzNzY5MSwzNzY5MiwzNzY5MywzNzY5NSwzNzY5NiwzNzY5NywzNzY5OCwzNzY5OSwzNzcwMCwzNzcwMSwzNzcwMiwzNzcwMywzNzcwNCwzNzcwNSwzNzcwNiwzNzcwNywzNzcwOCwzNzcwOSwzNzcxMCwzNzcxMSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNSwzNzcxNiwzNzcxNywzNzcxOCwzNzcxOSwzNzcyMCwzNzcyMSwzNzcyMiwzNzcyMywzNzcyNCwzNzcyNSwzNzcyNiwzNzcyNywzNzcyOCwzNzcyOSwzNzczMCwzNzczMSwzNzczMiwzNzczMywzNzczNCwzNzczNSwzNzczNiwzNzczNywzNzczOSwyODYxNywyODU4MywyODYwMSwyODU5OCwyODYxMCwyODY0MSwyODY1NCwyODYzOCwyODY0MCwyODY1NSwyODY5OCwyODcwNywyODY5OSwyODcyOSwyODcyNSwyODc1MSwyODc2NiwyMzQyNCwyMzQyOCwyMzQ0NSwyMzQ0MywyMzQ2MSwyMzQ4MCwyOTk5OSwzOTU4MiwyNTY1MiwyMzUyNCwyMzUzNCwzNTEyMCwyMzUzNiwzNjQyMywzNTU5MSwzNjc5MCwzNjgxOSwzNjgyMSwzNjgzNywzNjg0NiwzNjgzNiwzNjg0MSwzNjgzOCwzNjg1MSwzNjg0MCwzNjg2OSwzNjg2OCwzNjg3NSwzNjkwMiwzNjg4MSwzNjg3NywzNjg4NiwzNjg5NywzNjkxNywzNjkxOCwzNjkwOSwzNjkxMSwzNjkzMiwzNjk0NSwzNjk0NiwzNjk0NCwzNjk2OCwzNjk1MiwzNjk2MiwzNjk1NSwyNjI5NywzNjk4MCwzNjk4OSwzNjk5NCwzNzAwMCwzNjk5NSwzNzAwMywyNDQwMCwyNDQwNywyNDQwNiwyNDQwOCwyMzYxMSwyMTY3NSwyMzYzMiwyMzY0MSwyMzQwOSwyMzY1MSwyMzY1NCwzMjcwMCwyNDM2MiwyNDM2MSwyNDM2NSwzMzM5NiwyNDM4MCwzOTczOSwyMzY2MiwyMjkxMywyMjkxNSwyMjkyNSwyMjk1MywyMjk1NCwyMjk0NywzNzc0MCwzNzc0MSwzNzc0MiwzNzc0MywzNzc0NCwzNzc0NSwzNzc0NiwzNzc0NywzNzc0OCwzNzc0OSwzNzc1MCwzNzc1MSwzNzc1MiwzNzc1MywzNzc1NCwzNzc1NSwzNzc1NiwzNzc1NywzNzc1OCwzNzc1OSwzNzc2MCwzNzc2MSwzNzc2MiwzNzc2MywzNzc2NCwzNzc2NSwzNzc2NiwzNzc2NywzNzc2OCwzNzc2OSwzNzc3MCwzNzc3MSwzNzc3MiwzNzc3MywzNzc3NCwzNzc3NiwzNzc3NywzNzc3OCwzNzc3OSwzNzc4MCwzNzc4MSwzNzc4MiwzNzc4MywzNzc4NCwzNzc4NSwzNzc4NiwzNzc4NywzNzc4OCwzNzc4OSwzNzc5MCwzNzc5MSwzNzc5MiwzNzc5MywzNzc5NCwzNzc5NSwzNzc5NiwzNzc5NywzNzc5OCwzNzc5OSwzNzgwMCwzNzgwMSwzNzgwMiwzNzgwMywzNzgwNCwzNzgwNSwzNzgwNiwzNzgwNywzNzgwOCwzNzgwOSwzNzgxMCwzNzgxMSwzNzgxMiwzNzgxMywzNzgxNCwzNzgxNSwzNzgxNiwzNzgxNywzNzgxOCwzNzgxOSwzNzgyMCwzNzgyMSwzNzgyMiwzNzgyMywzNzgyNCwzNzgyNSwzNzgyNiwzNzgyNywzNzgyOCwzNzgyOSwzNzgzMCwzNzgzMSwzNzgzMiwzNzgzMywzNzgzNSwzNzgzNiwzNzgzNywyMjkzNSwyMjk4NiwyMjk1NSwyMjk0MiwyMjk0OCwyMjk5NCwyMjk2MiwyMjk1OSwyMjk5OSwyMjk3NCwyMzA0NSwyMzA0NiwyMzAwNSwyMzA0OCwyMzAxMSwyMzAwMCwyMzAzMywyMzA1MiwyMzA0OSwyMzA5MCwyMzA5MiwyMzA1NywyMzA3NSwyMzA1OSwyMzEwNCwyMzE0MywyMzExNCwyMzEyNSwyMzEwMCwyMzEzOCwyMzE1NywzMzAwNCwyMzIxMCwyMzE5NSwyMzE1OSwyMzE2MiwyMzIzMCwyMzI3NSwyMzIxOCwyMzI1MCwyMzI1MiwyMzIyNCwyMzI2NCwyMzI2NywyMzI4MSwyMzI1NCwyMzI3MCwyMzI1NiwyMzI2MCwyMzMwNSwyMzMxOSwyMzMxOCwyMzM0NiwyMzM1MSwyMzM2MCwyMzU3MywyMzU4MCwyMzM4NiwyMzM5NywyMzQxMSwyMzM3NywyMzM3OSwyMzM5NCwzOTU0MSwzOTU0MywzOTU0NCwzOTU0NiwzOTU1MSwzOTU0OSwzOTU1MiwzOTU1MywzOTU1NywzOTU2MCwzOTU2MiwzOTU2OCwzOTU3MCwzOTU3MSwzOTU3NCwzOTU3NiwzOTU3OSwzOTU4MCwzOTU4MSwzOTU4MywzOTU4NCwzOTU4NiwzOTU4NywzOTU4OSwzOTU5MSwzMjQxNSwzMjQxNywzMjQxOSwzMjQyMSwzMjQyNCwzMjQyNSwzNzgzOCwzNzgzOSwzNzg0MCwzNzg0MSwzNzg0MiwzNzg0MywzNzg0NCwzNzg0NSwzNzg0NywzNzg0OCwzNzg0OSwzNzg1MCwzNzg1MSwzNzg1MiwzNzg1MywzNzg1NCwzNzg1NSwzNzg1NiwzNzg1NywzNzg1OCwzNzg1OSwzNzg2MCwzNzg2MSwzNzg2MiwzNzg2MywzNzg2NCwzNzg2NSwzNzg2NiwzNzg2NywzNzg2OCwzNzg2OSwzNzg3MCwzNzg3MSwzNzg3MiwzNzg3MywzNzg3NCwzNzg3NSwzNzg3NiwzNzg3NywzNzg3OCwzNzg3OSwzNzg4MCwzNzg4MSwzNzg4MiwzNzg4MywzNzg4NCwzNzg4NSwzNzg4NiwzNzg4NywzNzg4OCwzNzg4OSwzNzg5MCwzNzg5MSwzNzg5MiwzNzg5MywzNzg5NCwzNzg5NSwzNzg5NiwzNzg5NywzNzg5OCwzNzg5OSwzNzkwMCwzNzkwMSwzNzkwMiwzNzkwMywzNzkwNCwzNzkwNSwzNzkwNiwzNzkwNywzNzkwOCwzNzkwOSwzNzkxMCwzNzkxMSwzNzkxMiwzNzkxMywzNzkxNCwzNzkxNSwzNzkxNiwzNzkxNywzNzkxOCwzNzkxOSwzNzkyMCwzNzkyMSwzNzkyMiwzNzkyMywzNzkyNCwzNzkyNSwzNzkyNiwzNzkyNywzNzkyOCwzNzkyOSwzNzkzMCwzNzkzMSwzNzkzMiwzNzkzMywzNzkzNCwzMjQyOSwzMjQzMiwzMjQ0NiwzMjQ0OCwzMjQ0OSwzMjQ1MCwzMjQ1NywzMjQ1OSwzMjQ2MCwzMjQ2NCwzMjQ2OCwzMjQ3MSwzMjQ3NSwzMjQ4MCwzMjQ4MSwzMjQ4OCwzMjQ5MSwzMjQ5NCwzMjQ5NSwzMjQ5NywzMjQ5OCwzMjUyNSwzMjUwMiwzMjUwNiwzMjUwNywzMjUxMCwzMjUxMywzMjUxNCwzMjUxNSwzMjUxOSwzMjUyMCwzMjUyMywzMjUyNCwzMjUyNywzMjUyOSwzMjUzMCwzMjUzNSwzMjUzNywzMjU0MCwzMjUzOSwzMjU0MywzMjU0NSwzMjU0NiwzMjU0NywzMjU0OCwzMjU0OSwzMjU1MCwzMjU1MSwzMjU1NCwzMjU1NSwzMjU1NiwzMjU1NywzMjU1OSwzMjU2MCwzMjU2MSwzMjU2MiwzMjU2MywzMjU2NSwyNDE4NiwzMDA3OSwyNDAyNywzMDAxNCwzNzAxMywyOTU4MiwyOTU4NSwyOTYxNCwyOTYwMiwyOTU5OSwyOTY0NywyOTYzNCwyOTY0OSwyOTYyMywyOTYxOSwyOTYzMiwyOTY0MSwyOTY0MCwyOTY2OSwyOTY1NywzOTAzNiwyOTcwNiwyOTY3MywyOTY3MSwyOTY2MiwyOTYyNiwyOTY4MiwyOTcxMSwyOTczOCwyOTc4NywyOTczNCwyOTczMywyOTczNiwyOTc0NCwyOTc0MiwyOTc0MCwzNzkzNSwzNzkzNiwzNzkzNywzNzkzOCwzNzkzOSwzNzk0MCwzNzk0MSwzNzk0MiwzNzk0MywzNzk0NCwzNzk0NSwzNzk0NiwzNzk0NywzNzk0OCwzNzk0OSwzNzk1MSwzNzk1MiwzNzk1MywzNzk1NCwzNzk1NSwzNzk1NiwzNzk1NywzNzk1OCwzNzk1OSwzNzk2MCwzNzk2MSwzNzk2MiwzNzk2MywzNzk2NCwzNzk2NSwzNzk2NiwzNzk2NywzNzk2OCwzNzk2OSwzNzk3MCwzNzk3MSwzNzk3MiwzNzk3MywzNzk3NCwzNzk3NSwzNzk3NiwzNzk3NywzNzk3OCwzNzk3OSwzNzk4MCwzNzk4MSwzNzk4MiwzNzk4MywzNzk4NCwzNzk4NSwzNzk4NiwzNzk4NywzNzk4OCwzNzk4OSwzNzk5MCwzNzk5MSwzNzk5MiwzNzk5MywzNzk5NCwzNzk5NiwzNzk5NywzNzk5OCwzNzk5OSwzODAwMCwzODAwMSwzODAwMiwzODAwMywzODAwNCwzODAwNSwzODAwNiwzODAwNywzODAwOCwzODAwOSwzODAxMCwzODAxMSwzODAxMiwzODAxMywzODAxNCwzODAxNSwzODAxNiwzODAxNywzODAxOCwzODAxOSwzODAyMCwzODAzMywzODAzOCwzODA0MCwzODA4NywzODA5NSwzODA5OSwzODEwMCwzODEwNiwzODExOCwzODEzOSwzODE3MiwzODE3NiwyOTcyMywyOTcyMiwyOTc2MSwyOTc4OCwyOTc4MywyOTc4MSwyOTc4NSwyOTgxNSwyOTgwNSwyOTgyMiwyOTg1MiwyOTgzOCwyOTgyNCwyOTgyNSwyOTgzMSwyOTgzNSwyOTg1NCwyOTg2NCwyOTg2NSwyOTg0MCwyOTg2MywyOTkwNiwyOTg4MiwzODg5MCwzODg5MSwzODg5MiwyNjQ0NCwyNjQ1MSwyNjQ2MiwyNjQ0MCwyNjQ3MywyNjUzMywyNjUwMywyNjQ3NCwyNjQ4MywyNjUyMCwyNjUzNSwyNjQ4NSwyNjUzNiwyNjUyNiwyNjU0MSwyNjUwNywyNjQ4NywyNjQ5MiwyNjYwOCwyNjYzMywyNjU4NCwyNjYzNCwyNjYwMSwyNjU0NCwyNjYzNiwyNjU4NSwyNjU0OSwyNjU4NiwyNjU0NywyNjU4OSwyNjYyNCwyNjU2MywyNjU1MiwyNjU5NCwyNjYzOCwyNjU2MSwyNjYyMSwyNjY3NCwyNjY3NSwyNjcyMCwyNjcyMSwyNjcwMiwyNjcyMiwyNjY5MiwyNjcyNCwyNjc1NSwyNjY1MywyNjcwOSwyNjcyNiwyNjY4OSwyNjcyNywyNjY4OCwyNjY4NiwyNjY5OCwyNjY5NywyNjY2NSwyNjgwNSwyNjc2NywyNjc0MCwyNjc0MywyNjc3MSwyNjczMSwyNjgxOCwyNjk5MCwyNjg3NiwyNjkxMSwyNjkxMiwyNjg3MywzODE4MywzODE5NSwzODIwNSwzODIxMSwzODIxNiwzODIxOSwzODIyOSwzODIzNCwzODI0MCwzODI1NCwzODI2MCwzODI2MSwzODI2MywzODI2NCwzODI2NSwzODI2NiwzODI2NywzODI2OCwzODI2OSwzODI3MCwzODI3MiwzODI3MywzODI3NCwzODI3NSwzODI3NiwzODI3NywzODI3OCwzODI3OSwzODI4MCwzODI4MSwzODI4MiwzODI4MywzODI4NCwzODI4NSwzODI4NiwzODI4NywzODI4OCwzODI4OSwzODI5MCwzODI5MSwzODI5MiwzODI5MywzODI5NCwzODI5NSwzODI5NiwzODI5NywzODI5OCwzODI5OSwzODMwMCwzODMwMSwzODMwMiwzODMwMywzODMwNCwzODMwNSwzODMwNiwzODMwNywzODMwOCwzODMwOSwzODMxMCwzODMxMSwzODMxMiwzODMxMywzODMxNCwzODMxNSwzODMxNiwzODMxNywzODMxOCwzODMxOSwzODMyMCwzODMyMSwzODMyMiwzODMyMywzODMyNCwzODMyNSwzODMyNiwzODMyNywzODMyOCwzODMyOSwzODMzMCwzODMzMSwzODMzMiwzODMzMywzODMzNCwzODMzNSwzODMzNiwzODMzNywzODMzOCwzODMzOSwzODM0MCwzODM0MSwzODM0MiwzODM0MywzODM0NCwzODM0NSwzODM0NiwzODM0NywyNjkxNiwyNjg2NCwyNjg5MSwyNjg4MSwyNjk2NywyNjg1MSwyNjg5NiwyNjk5MywyNjkzNywyNjk3NiwyNjk0NiwyNjk3MywyNzAxMiwyNjk4NywyNzAwOCwyNzAzMiwyNzAwMCwyNjkzMiwyNzA4NCwyNzAxNSwyNzAxNiwyNzA4NiwyNzAxNywyNjk4MiwyNjk3OSwyNzAwMSwyNzAzNSwyNzA0NywyNzA2NywyNzA1MSwyNzA1MywyNzA5MiwyNzA1NywyNzA3MywyNzA4MiwyNzEwMywyNzAyOSwyNzEwNCwyNzAyMSwyNzEzNSwyNzE4MywyNzExNywyNzE1OSwyNzE2MCwyNzIzNywyNzEyMiwyNzIwNCwyNzE5OCwyNzI5NiwyNzIxNiwyNzIyNywyNzE4OSwyNzI3OCwyNzI1NywyNzE5NywyNzE3NiwyNzIyNCwyNzI2MCwyNzI4MSwyNzI4MCwyNzMwNSwyNzI4NywyNzMwNywyOTQ5NSwyOTUyMiwyNzUyMSwyNzUyMiwyNzUyNywyNzUyNCwyNzUzOCwyNzUzOSwyNzUzMywyNzU0NiwyNzU0NywyNzU1MywyNzU2MiwzNjcxNSwzNjcxNywzNjcyMSwzNjcyMiwzNjcyMywzNjcyNSwzNjcyNiwzNjcyOCwzNjcyNywzNjcyOSwzNjczMCwzNjczMiwzNjczNCwzNjczNywzNjczOCwzNjc0MCwzNjc0MywzNjc0NywzODM0OCwzODM0OSwzODM1MCwzODM1MSwzODM1MiwzODM1MywzODM1NCwzODM1NSwzODM1NiwzODM1NywzODM1OCwzODM1OSwzODM2MCwzODM2MSwzODM2MiwzODM2MywzODM2NCwzODM2NSwzODM2NiwzODM2NywzODM2OCwzODM2OSwzODM3MCwzODM3MSwzODM3MiwzODM3MywzODM3NCwzODM3NSwzODM4MCwzODM5OSwzODQwNywzODQxOSwzODQyNCwzODQyNywzODQzMCwzODQzMiwzODQzNSwzODQzNiwzODQzNywzODQzOCwzODQzOSwzODQ0MCwzODQ0MSwzODQ0MywzODQ0NCwzODQ0NSwzODQ0NywzODQ0OCwzODQ1NSwzODQ1NiwzODQ1NywzODQ1OCwzODQ2MiwzODQ2NSwzODQ2NywzODQ3NCwzODQ3OCwzODQ3OSwzODQ4MSwzODQ4MiwzODQ4MywzODQ4NiwzODQ4NywzODQ4OCwzODQ4OSwzODQ5MCwzODQ5MiwzODQ5MywzODQ5NCwzODQ5NiwzODQ5OSwzODUwMSwzODUwMiwzODUwNywzODUwOSwzODUxMCwzODUxMSwzODUxMiwzODUxMywzODUxNSwzODUyMCwzODUyMSwzODUyMiwzODUyMywzODUyNCwzODUyNSwzODUyNiwzODUyNywzODUyOCwzODUyOSwzODUzMCwzODUzMSwzODUzMiwzODUzNSwzODUzNywzODUzOCwzNjc0OSwzNjc1MCwzNjc1MSwzNjc2MCwzNjc2MiwzNjU1OCwyNTA5OSwyNTExMSwyNTExNSwyNTExOSwyNTEyMiwyNTEyMSwyNTEyNSwyNTEyNCwyNTEzMiwzMzI1NSwyOTkzNSwyOTk0MCwyOTk1MSwyOTk2NywyOTk2OSwyOTk3MSwyNTkwOCwyNjA5NCwyNjA5NSwyNjA5NiwyNjEyMiwyNjEzNywyNjQ4MiwyNjExNSwyNjEzMywyNjExMiwyODgwNSwyNjM1OSwyNjE0MSwyNjE2NCwyNjE2MSwyNjE2NiwyNjE2NSwzMjc3NCwyNjIwNywyNjE5NiwyNjE3NywyNjE5MSwyNjE5OCwyNjIwOSwyNjE5OSwyNjIzMSwyNjI0NCwyNjI1MiwyNjI3OSwyNjI2OSwyNjMwMiwyNjMzMSwyNjMzMiwyNjM0MiwyNjM0NSwzNjE0NiwzNjE0NywzNjE1MCwzNjE1NSwzNjE1NywzNjE2MCwzNjE2NSwzNjE2NiwzNjE2OCwzNjE2OSwzNjE2NywzNjE3MywzNjE4MSwzNjE4NSwzNTI3MSwzNTI3NCwzNTI3NSwzNTI3NiwzNTI3OCwzNTI3OSwzNTI4MCwzNTI4MSwyOTI5NCwyOTM0MywyOTI3NywyOTI4NiwyOTI5NSwyOTMxMCwyOTMxMSwyOTMxNiwyOTMyMywyOTMyNSwyOTMyNywyOTMzMCwyNTM1MiwyNTM5NCwyNTUyMCwzODU0MCwzODU0MiwzODU0NSwzODU0NiwzODU0NywzODU0OSwzODU1MCwzODU1NCwzODU1NSwzODU1NywzODU1OCwzODU1OSwzODU2MCwzODU2MSwzODU2MiwzODU2MywzODU2NCwzODU2NSwzODU2NiwzODU2OCwzODU2OSwzODU3MCwzODU3MSwzODU3MiwzODU3MywzODU3NCwzODU3NSwzODU3NywzODU3OCwzODU4MCwzODU4MSwzODU4MywzODU4NCwzODU4NiwzODU4NywzODU5MSwzODU5NCwzODU5NSwzODYwMCwzODYwMiwzODYwMywzODYwOCwzODYwOSwzODYxMSwzODYxMiwzODYxNCwzODYxNSwzODYxNiwzODYxNywzODYxOCwzODYxOSwzODYyMCwzODYyMSwzODYyMiwzODYyMywzODYyNSwzODYyNiwzODYyNywzODYyOCwzODYyOSwzODYzMCwzODYzMSwzODYzNSwzODYzNiwzODYzNywzODYzOCwzODY0MCwzODY0MSwzODY0MiwzODY0NCwzODY0NSwzODY0OCwzODY1MCwzODY1MSwzODY1MiwzODY1MywzODY1NSwzODY1OCwzODY1OSwzODY2MSwzODY2NiwzODY2NywzODY2OCwzODY3MiwzODY3MywzODY3NCwzODY3NiwzODY3NywzODY3OSwzODY4MCwzODY4MSwzODY4MiwzODY4MywzODY4NSwzODY4NywzODY4OCwyNTY2MywyNTgxNiwzMjc3MiwyNzYyNiwyNzYzNSwyNzY0NSwyNzYzNywyNzY0MSwyNzY1MywyNzY1NSwyNzY1NCwyNzY2MSwyNzY2OSwyNzY3MiwyNzY3MywyNzY3NCwyNzY4MSwyNzY4OSwyNzY4NCwyNzY5MCwyNzY5OCwyNTkwOSwyNTk0MSwyNTk2MywyOTI2MSwyOTI2NiwyOTI3MCwyOTIzMiwzNDQwMiwyMTAxNCwzMjkyNywzMjkyNCwzMjkxNSwzMjk1NiwyNjM3OCwzMjk1NywzMjk0NSwzMjkzOSwzMjk0MSwzMjk0OCwzMjk1MSwzMjk5OSwzMzAwMCwzMzAwMSwzMzAwMiwzMjk4NywzMjk2MiwzMjk2NCwzMjk4NSwzMjk3MywzMjk4MywyNjM4NCwzMjk4OSwzMzAwMywzMzAwOSwzMzAxMiwzMzAwNSwzMzAzNywzMzAzOCwzMzAxMCwzMzAyMCwyNjM4OSwzMzA0MiwzNTkzMCwzMzA3OCwzMzA1NCwzMzA2OCwzMzA0OCwzMzA3NCwzMzA5NiwzMzEwMCwzMzEwNywzMzE0MCwzMzExMywzMzExNCwzMzEzNywzMzEyMCwzMzEyOSwzMzE0OCwzMzE0OSwzMzEzMywzMzEyNywyMjYwNSwyMzIyMSwzMzE2MCwzMzE1NCwzMzE2OSwyODM3MywzMzE4NywzMzE5NCwzMzIyOCwyNjQwNiwzMzIyNiwzMzIxMSwzODY4OSwzODY5MCwzODY5MSwzODY5MiwzODY5MywzODY5NCwzODY5NSwzODY5NiwzODY5NywzODY5OSwzODcwMCwzODcwMiwzODcwMywzODcwNSwzODcwNywzODcwOCwzODcwOSwzODcxMCwzODcxMSwzODcxNCwzODcxNSwzODcxNiwzODcxNywzODcxOSwzODcyMCwzODcyMSwzODcyMiwzODcyMywzODcyNCwzODcyNSwzODcyNiwzODcyNywzODcyOCwzODcyOSwzODczMCwzODczMSwzODczMiwzODczMywzODczNCwzODczNSwzODczNiwzODczNywzODc0MCwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0OCwzODc0OSwzODc1MSwzODc1NSwzODc1NiwzODc1OCwzODc1OSwzODc2MCwzODc2MiwzODc2MywzODc2NCwzODc2NSwzODc2NiwzODc2NywzODc2OCwzODc2OSwzODc3MCwzODc3MywzODc3NSwzODc3NiwzODc3NywzODc3OCwzODc3OSwzODc4MSwzODc4MiwzODc4MywzODc4NCwzODc4NSwzODc4NiwzODc4NywzODc4OCwzODc5MCwzODc5MSwzODc5MiwzODc5MywzODc5NCwzODc5NiwzODc5OCwzODc5OSwzODgwMCwzODgwMywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxMSwzODgxMiwzODgxMywzMzIxNywzMzE5MCwyNzQyOCwyNzQ0NywyNzQ0OSwyNzQ1OSwyNzQ2MiwyNzQ4MSwzOTEyMSwzOTEyMiwzOTEyMywzOTEyNSwzOTEyOSwzOTEzMCwyNzU3MSwyNDM4NCwyNzU4NiwzNTMxNSwyNjAwMCw0MDc4NSwyNjAwMywyNjA0NCwyNjA1NCwyNjA1MiwyNjA1MSwyNjA2MCwyNjA2MiwyNjA2NiwyNjA3MCwyODgwMCwyODgyOCwyODgyMiwyODgyOSwyODg1OSwyODg2NCwyODg1NSwyODg0MywyODg0OSwyODkwNCwyODg3NCwyODk0NCwyODk0NywyODk1MCwyODk3NSwyODk3NywyOTA0MywyOTAyMCwyOTAzMiwyODk5NywyOTA0MiwyOTAwMiwyOTA0OCwyOTA1MCwyOTA4MCwyOTEwNywyOTEwOSwyOTA5NiwyOTA4OCwyOTE1MiwyOTE0MCwyOTE1OSwyOTE3NywyOTIxMywyOTIyNCwyODc4MCwyODk1MiwyOTAzMCwyOTExMywyNTE1MCwyNTE0OSwyNTE1NSwyNTE2MCwyNTE2MSwzMTAzNSwzMTA0MCwzMTA0NiwzMTA0OSwzMTA2NywzMTA2OCwzMTA1OSwzMTA2NiwzMTA3NCwzMTA2MywzMTA3MiwzMTA4NywzMTA3OSwzMTA5OCwzMTEwOSwzMTExNCwzMTEzMCwzMTE0MywzMTE1NSwyNDUyOSwyNDUyOCwzODgxNCwzODgxNSwzODgxNywzODgxOCwzODgyMCwzODgyMSwzODgyMiwzODgyMywzODgyNCwzODgyNSwzODgyNiwzODgyOCwzODgzMCwzODgzMiwzODgzMywzODgzNSwzODgzNywzODgzOCwzODgzOSwzODg0MCwzODg0MSwzODg0MiwzODg0MywzODg0NCwzODg0NSwzODg0NiwzODg0NywzODg0OCwzODg0OSwzODg1MCwzODg1MSwzODg1MiwzODg1MywzODg1NCwzODg1NSwzODg1NiwzODg1NywzODg1OCwzODg1OSwzODg2MCwzODg2MSwzODg2MiwzODg2MywzODg2NCwzODg2NSwzODg2NiwzODg2NywzODg2OCwzODg2OSwzODg3MCwzODg3MSwzODg3MiwzODg3MywzODg3NCwzODg3NSwzODg3NiwzODg3NywzODg3OCwzODg3OSwzODg4MCwzODg4MSwzODg4MiwzODg4MywzODg4NCwzODg4NSwzODg4OCwzODg5NCwzODg5NSwzODg5NiwzODg5NywzODg5OCwzODkwMCwzODkwMywzODkwNCwzODkwNSwzODkwNiwzODkwNywzODkwOCwzODkwOSwzODkxMCwzODkxMSwzODkxMiwzODkxMywzODkxNCwzODkxNSwzODkxNiwzODkxNywzODkxOCwzODkxOSwzODkyMCwzODkyMSwzODkyMiwzODkyMywzODkyNCwzODkyNSwzODkyNiwyNDYzNiwyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDY2NSwyNDY3NSwyNDc0NywyNDgzOCwyNDg0NSwyNDkyNSwyNTAwMSwyNDk4OSwyNTAzNSwyNTA0MSwyNTA5NCwzMjg5NiwzMjg5NSwyNzc5NSwyNzg5NCwyODE1NiwzMDcxMCwzMDcxMiwzMDcyMCwzMDcyOSwzMDc0MywzMDc0NCwzMDczNywyNjAyNywzMDc2NSwzMDc0OCwzMDc0OSwzMDc3NywzMDc3OCwzMDc3OSwzMDc1MSwzMDc4MCwzMDc1NywzMDc2NCwzMDc1NSwzMDc2MSwzMDc5OCwzMDgyOSwzMDgwNiwzMDgwNywzMDc1OCwzMDgwMCwzMDc5MSwzMDc5NiwzMDgyNiwzMDg3NSwzMDg2NywzMDg3NCwzMDg1NSwzMDg3NiwzMDg4MSwzMDg4MywzMDg5OCwzMDkwNSwzMDg4NSwzMDkzMiwzMDkzNywzMDkyMSwzMDk1NiwzMDk2MiwzMDk4MSwzMDk2NCwzMDk5NSwzMTAxMiwzMTAwNiwzMTAyOCw0MDg1OSw0MDY5Nyw0MDY5OSw0MDcwMCwzMDQ0OSwzMDQ2OCwzMDQ3NywzMDQ1NywzMDQ3MSwzMDQ3MiwzMDQ5MCwzMDQ5OCwzMDQ4OSwzMDUwOSwzMDUwMiwzMDUxNywzMDUyMCwzMDU0NCwzMDU0NSwzMDUzNSwzMDUzMSwzMDU1NCwzMDU2OCwzODkyNywzODkyOCwzODkyOSwzODkzMCwzODkzMSwzODkzMiwzODkzMywzODkzNCwzODkzNSwzODkzNiwzODkzNywzODkzOCwzODkzOSwzODk0MCwzODk0MSwzODk0MiwzODk0MywzODk0NCwzODk0NSwzODk0NiwzODk0NywzODk0OCwzODk0OSwzODk1MCwzODk1MSwzODk1MiwzODk1MywzODk1NCwzODk1NSwzODk1NiwzODk1NywzODk1OCwzODk1OSwzODk2MCwzODk2MSwzODk2MiwzODk2MywzODk2NCwzODk2NSwzODk2NiwzODk2NywzODk2OCwzODk2OSwzODk3MCwzODk3MSwzODk3MiwzODk3MywzODk3NCwzODk3NSwzODk3NiwzODk3NywzODk3OCwzODk3OSwzODk4MCwzODk4MSwzODk4MiwzODk4MywzODk4NCwzODk4NSwzODk4NiwzODk4NywzODk4OCwzODk4OSwzODk5MCwzODk5MSwzODk5MiwzODk5MywzODk5NCwzODk5NSwzODk5NiwzODk5NywzODk5OCwzODk5OSwzOTAwMCwzOTAwMSwzOTAwMiwzOTAwMywzOTAwNCwzOTAwNSwzOTAwNiwzOTAwNywzOTAwOCwzOTAwOSwzOTAxMCwzOTAxMSwzOTAxMiwzOTAxMywzOTAxNCwzOTAxNSwzOTAxNiwzOTAxNywzOTAxOCwzOTAxOSwzOTAyMCwzOTAyMSwzOTAyMiwzMDU2MiwzMDU2NSwzMDU5MSwzMDYwNSwzMDU4OSwzMDU5MiwzMDYwNCwzMDYwOSwzMDYyMywzMDYyNCwzMDY0MCwzMDY0NSwzMDY1MywzMDAxMCwzMDAxNiwzMDAzMCwzMDAyNywzMDAyNCwzMDA0MywzMDA2NiwzMDA3MywzMDA4MywzMjYwMCwzMjYwOSwzMjYwNywzNTQwMCwzMjYxNiwzMjYyOCwzMjYyNSwzMjYzMywzMjY0MSwzMjYzOCwzMDQxMywzMDQzNywzNDg2NiwzODAyMSwzODAyMiwzODAyMywzODAyNywzODAyNiwzODAyOCwzODAyOSwzODAzMSwzODAzMiwzODAzNiwzODAzOSwzODAzNywzODA0MiwzODA0MywzODA0NCwzODA1MSwzODA1MiwzODA1OSwzODA1OCwzODA2MSwzODA2MCwzODA2MywzODA2NCwzODA2NiwzODA2OCwzODA3MCwzODA3MSwzODA3MiwzODA3MywzODA3NCwzODA3NiwzODA3NywzODA3OSwzODA4NCwzODA4OCwzODA4OSwzODA5MCwzODA5MSwzODA5MiwzODA5MywzODA5NCwzODA5NiwzODA5NywzODA5OCwzODEwMSwzODEwMiwzODEwMywzODEwNSwzODEwNCwzODEwNywzODExMCwzODExMSwzODExMiwzODExNCwzODExNiwzODExNywzODExOSwzODEyMCwzODEyMiwzOTAyMywzOTAyNCwzOTAyNSwzOTAyNiwzOTAyNywzOTAyOCwzOTA1MSwzOTA1NCwzOTA1OCwzOTA2MSwzOTA2NSwzOTA3NSwzOTA4MCwzOTA4MSwzOTA4MiwzOTA4MywzOTA4NCwzOTA4NSwzOTA4NiwzOTA4NywzOTA4OCwzOTA4OSwzOTA5MCwzOTA5MSwzOTA5MiwzOTA5MywzOTA5NCwzOTA5NSwzOTA5NiwzOTA5NywzOTA5OCwzOTA5OSwzOTEwMCwzOTEwMSwzOTEwMiwzOTEwMywzOTEwNCwzOTEwNSwzOTEwNiwzOTEwNywzOTEwOCwzOTEwOSwzOTExMCwzOTExMSwzOTExMiwzOTExMywzOTExNCwzOTExNSwzOTExNiwzOTExNywzOTExOSwzOTEyMCwzOTEyNCwzOTEyNiwzOTEyNywzOTEzMSwzOTEzMiwzOTEzMywzOTEzNiwzOTEzNywzOTEzOCwzOTEzOSwzOTE0MCwzOTE0MSwzOTE0MiwzOTE0NSwzOTE0NiwzOTE0NywzOTE0OCwzOTE0OSwzOTE1MCwzOTE1MSwzOTE1MiwzOTE1MywzOTE1NCwzOTE1NSwzOTE1NiwzOTE1NywzOTE1OCwzOTE1OSwzOTE2MCwzOTE2MSwzOTE2MiwzOTE2MywzOTE2NCwzOTE2NSwzOTE2NiwzOTE2NywzOTE2OCwzOTE2OSwzOTE3MCwzOTE3MSwzOTE3MiwzOTE3MywzOTE3NCwzOTE3NSwzODEyMSwzODEyMywzODEyNiwzODEyNywzODEzMSwzODEzMiwzODEzMywzODEzNSwzODEzNywzODE0MCwzODE0MSwzODE0MywzODE0NywzODE0NiwzODE1MCwzODE1MSwzODE1MywzODE1NCwzODE1NywzODE1OCwzODE1OSwzODE2MiwzODE2MywzODE2NCwzODE2NSwzODE2NiwzODE2OCwzODE3MSwzODE3MywzODE3NCwzODE3NSwzODE3OCwzODE4NiwzODE4NywzODE4NSwzODE4OCwzODE5MywzODE5NCwzODE5NiwzODE5OCwzODE5OSwzODIwMCwzODIwNCwzODIwNiwzODIwNywzODIxMCwzODE5NywzODIxMiwzODIxMywzODIxNCwzODIxNywzODIyMCwzODIyMiwzODIyMywzODIyNiwzODIyNywzODIyOCwzODIzMCwzODIzMSwzODIzMiwzODIzMywzODIzNSwzODIzOCwzODIzOSwzODIzNywzODI0MSwzODI0MiwzODI0NCwzODI0NSwzODI0NiwzODI0NywzODI0OCwzODI0OSwzODI1MCwzODI1MSwzODI1MiwzODI1NSwzODI1NywzODI1OCwzODI1OSwzODIwMiwzMDY5NSwzMDcwMCwzODYwMSwzMTE4OSwzMTIxMywzMTIwMywzMTIxMSwzMTIzOCwyMzg3OSwzMTIzNSwzMTIzNCwzMTI2MiwzMTI1MiwzOTE3NiwzOTE3NywzOTE3OCwzOTE3OSwzOTE4MCwzOTE4MiwzOTE4MywzOTE4NSwzOTE4NiwzOTE4NywzOTE4OCwzOTE4OSwzOTE5MCwzOTE5MSwzOTE5MiwzOTE5MywzOTE5NCwzOTE5NSwzOTE5NiwzOTE5NywzOTE5OCwzOTE5OSwzOTIwMCwzOTIwMSwzOTIwMiwzOTIwMywzOTIwNCwzOTIwNSwzOTIwNiwzOTIwNywzOTIwOCwzOTIwOSwzOTIxMCwzOTIxMSwzOTIxMiwzOTIxMywzOTIxNSwzOTIxNiwzOTIxNywzOTIxOCwzOTIxOSwzOTIyMCwzOTIyMSwzOTIyMiwzOTIyMywzOTIyNCwzOTIyNSwzOTIyNiwzOTIyNywzOTIyOCwzOTIyOSwzOTIzMCwzOTIzMSwzOTIzMiwzOTIzMywzOTIzNCwzOTIzNSwzOTIzNiwzOTIzNywzOTIzOCwzOTIzOSwzOTI0MCwzOTI0MSwzOTI0MiwzOTI0MywzOTI0NCwzOTI0NSwzOTI0NiwzOTI0NywzOTI0OCwzOTI0OSwzOTI1MCwzOTI1MSwzOTI1NCwzOTI1NSwzOTI1NiwzOTI1NywzOTI1OCwzOTI1OSwzOTI2MCwzOTI2MSwzOTI2MiwzOTI2MywzOTI2NCwzOTI2NSwzOTI2NiwzOTI2OCwzOTI3MCwzOTI4MywzOTI4OCwzOTI4OSwzOTI5MSwzOTI5NCwzOTI5OCwzOTI5OSwzOTMwNSwzMTI4OSwzMTI4NywzMTMxMyw0MDY1NSwzOTMzMywzMTM0NCwzMDM0NCwzMDM1MCwzMDM1NSwzMDM2MSwzMDM3MiwyOTkxOCwyOTkyMCwyOTk5Niw0MDQ4MCw0MDQ4Miw0MDQ4OCw0MDQ4OSw0MDQ5MCw0MDQ5MSw0MDQ5Miw0MDQ5OCw0MDQ5Nyw0MDUwMiw0MDUwNCw0MDUwMyw0MDUwNSw0MDUwNiw0MDUxMCw0MDUxMyw0MDUxNCw0MDUxNiw0MDUxOCw0MDUxOSw0MDUyMCw0MDUyMSw0MDUyMyw0MDUyNCw0MDUyNiw0MDUyOSw0MDUzMyw0MDUzNSw0MDUzOCw0MDUzOSw0MDU0MCw0MDU0Miw0MDU0Nyw0MDU1MCw0MDU1MSw0MDU1Miw0MDU1Myw0MDU1NCw0MDU1NSw0MDU1Niw0MDU2MSw0MDU1Nyw0MDU2MywzMDA5OCwzMDEwMCwzMDEwMiwzMDExMiwzMDEwOSwzMDEyNCwzMDExNSwzMDEzMSwzMDEzMiwzMDEzNiwzMDE0OCwzMDEyOSwzMDEyOCwzMDE0NywzMDE0NiwzMDE2NiwzMDE1NywzMDE3OSwzMDE4NCwzMDE4MiwzMDE4MCwzMDE4NywzMDE4MywzMDIxMSwzMDE5MywzMDIwNCwzMDIwNywzMDIyNCwzMDIwOCwzMDIxMywzMDIyMCwzMDIzMSwzMDIxOCwzMDI0NSwzMDIzMiwzMDIyOSwzMDIzMywzOTMwOCwzOTMxMCwzOTMyMiwzOTMyMywzOTMyNCwzOTMyNSwzOTMyNiwzOTMyNywzOTMyOCwzOTMyOSwzOTMzMCwzOTMzMSwzOTMzMiwzOTMzNCwzOTMzNSwzOTMzNywzOTMzOCwzOTMzOSwzOTM0MCwzOTM0MSwzOTM0MiwzOTM0MywzOTM0NCwzOTM0NSwzOTM0NiwzOTM0NywzOTM0OCwzOTM0OSwzOTM1MCwzOTM1MSwzOTM1MiwzOTM1MywzOTM1NCwzOTM1NSwzOTM1NiwzOTM1NywzOTM1OCwzOTM1OSwzOTM2MCwzOTM2MSwzOTM2MiwzOTM2MywzOTM2NCwzOTM2NSwzOTM2NiwzOTM2NywzOTM2OCwzOTM2OSwzOTM3MCwzOTM3MSwzOTM3MiwzOTM3MywzOTM3NCwzOTM3NSwzOTM3NiwzOTM3NywzOTM3OCwzOTM3OSwzOTM4MCwzOTM4MSwzOTM4MiwzOTM4MywzOTM4NCwzOTM4NSwzOTM4NiwzOTM4NywzOTM4OCwzOTM4OSwzOTM5MCwzOTM5MSwzOTM5MiwzOTM5MywzOTM5NCwzOTM5NSwzOTM5NiwzOTM5NywzOTM5OCwzOTM5OSwzOTQwMCwzOTQwMSwzOTQwMiwzOTQwMywzOTQwNCwzOTQwNSwzOTQwNiwzOTQwNywzOTQwOCwzOTQwOSwzOTQxMCwzOTQxMSwzOTQxMiwzOTQxMywzOTQxNCwzOTQxNSwzOTQxNiwzOTQxNywzMDIzNSwzMDI2OCwzMDI0MiwzMDI0MCwzMDI3MiwzMDI1MywzMDI1NiwzMDI3MSwzMDI2MSwzMDI3NSwzMDI3MCwzMDI1OSwzMDI4NSwzMDMwMiwzMDI5MiwzMDMwMCwzMDI5NCwzMDMxNSwzMDMxOSwzMjcxNCwzMTQ2MiwzMTM1MiwzMTM1MywzMTM2MCwzMTM2NiwzMTM2OCwzMTM4MSwzMTM5OCwzMTM5MiwzMTQwNCwzMTQwMCwzMTQwNSwzMTQxMSwzNDkxNiwzNDkyMSwzNDkzMCwzNDk0MSwzNDk0MywzNDk0NiwzNDk3OCwzNTAxNCwzNDk5OSwzNTAwNCwzNTAxNywzNTA0MiwzNTAyMiwzNTA0MywzNTA0NSwzNTA1NywzNTA5OCwzNTA2OCwzNTA0OCwzNTA3MCwzNTA1NiwzNTEwNSwzNTA5NywzNTA5MSwzNTA5OSwzNTA4MiwzNTEyNCwzNTExNSwzNTEyNiwzNTEzNywzNTE3NCwzNTE5NSwzMDA5MSwzMjk5NywzMDM4NiwzMDM4OCwzMDY4NCwzMjc4NiwzMjc4OCwzMjc5MCwzMjc5NiwzMjgwMCwzMjgwMiwzMjgwNSwzMjgwNiwzMjgwNywzMjgwOSwzMjgwOCwzMjgxNywzMjc3OSwzMjgyMSwzMjgzNSwzMjgzOCwzMjg0NSwzMjg1MCwzMjg3MywzMjg4MSwzNTIwMywzOTAzMiwzOTA0MCwzOTA0MywzOTQxOCwzOTQxOSwzOTQyMCwzOTQyMSwzOTQyMiwzOTQyMywzOTQyNCwzOTQyNSwzOTQyNiwzOTQyNywzOTQyOCwzOTQyOSwzOTQzMCwzOTQzMSwzOTQzMiwzOTQzMywzOTQzNCwzOTQzNSwzOTQzNiwzOTQzNywzOTQzOCwzOTQzOSwzOTQ0MCwzOTQ0MSwzOTQ0MiwzOTQ0MywzOTQ0NCwzOTQ0NSwzOTQ0NiwzOTQ0NywzOTQ0OCwzOTQ0OSwzOTQ1MCwzOTQ1MSwzOTQ1MiwzOTQ1MywzOTQ1NCwzOTQ1NSwzOTQ1NiwzOTQ1NywzOTQ1OCwzOTQ1OSwzOTQ2MCwzOTQ2MSwzOTQ2MiwzOTQ2MywzOTQ2NCwzOTQ2NSwzOTQ2NiwzOTQ2NywzOTQ2OCwzOTQ2OSwzOTQ3MCwzOTQ3MSwzOTQ3MiwzOTQ3MywzOTQ3NCwzOTQ3NSwzOTQ3NiwzOTQ3NywzOTQ3OCwzOTQ3OSwzOTQ4MCwzOTQ4MSwzOTQ4MiwzOTQ4MywzOTQ4NCwzOTQ4NSwzOTQ4NiwzOTQ4NywzOTQ4OCwzOTQ4OSwzOTQ5MCwzOTQ5MSwzOTQ5MiwzOTQ5MywzOTQ5NCwzOTQ5NSwzOTQ5NiwzOTQ5NywzOTQ5OCwzOTQ5OSwzOTUwMCwzOTUwMSwzOTUwMiwzOTUwMywzOTUwNCwzOTUwNSwzOTUwNiwzOTUwNywzOTUwOCwzOTUwOSwzOTUxMCwzOTUxMSwzOTUxMiwzOTUxMywzOTA0OSwzOTA1MiwzOTA1MywzOTA1NSwzOTA2MCwzOTA2NiwzOTA2NywzOTA3MCwzOTA3MSwzOTA3MywzOTA3NCwzOTA3NywzOTA3OCwzNDM4MSwzNDM4OCwzNDQxMiwzNDQxNCwzNDQzMSwzNDQyNiwzNDQyOCwzNDQyNywzNDQ3MiwzNDQ0NSwzNDQ0MywzNDQ3NiwzNDQ2MSwzNDQ3MSwzNDQ2NywzNDQ3NCwzNDQ1MSwzNDQ3MywzNDQ4NiwzNDUwMCwzNDQ4NSwzNDUxMCwzNDQ4MCwzNDQ5MCwzNDQ4MSwzNDQ3OSwzNDUwNSwzNDUxMSwzNDQ4NCwzNDUzNywzNDU0NSwzNDU0NiwzNDU0MSwzNDU0NywzNDUxMiwzNDU3OSwzNDUyNiwzNDU0OCwzNDUyNywzNDUyMCwzNDUxMywzNDU2MywzNDU2NywzNDU1MiwzNDU2OCwzNDU3MCwzNDU3MywzNDU2OSwzNDU5NSwzNDYxOSwzNDU5MCwzNDU5NywzNDYwNiwzNDU4NiwzNDYyMiwzNDYzMiwzNDYxMiwzNDYwOSwzNDYwMSwzNDYxNSwzNDYyMywzNDY5MCwzNDU5NCwzNDY4NSwzNDY4NiwzNDY4MywzNDY1NiwzNDY3MiwzNDYzNiwzNDY3MCwzNDY5OSwzNDY0MywzNDY1OSwzNDY4NCwzNDY2MCwzNDY0OSwzNDY2MSwzNDcwNywzNDczNSwzNDcyOCwzNDc3MCwzOTUxNCwzOTUxNSwzOTUxNiwzOTUxNywzOTUxOCwzOTUxOSwzOTUyMCwzOTUyMSwzOTUyMiwzOTUyMywzOTUyNCwzOTUyNSwzOTUyNiwzOTUyNywzOTUyOCwzOTUyOSwzOTUzMCwzOTUzMSwzOTUzOCwzOTU1NSwzOTU2MSwzOTU2NSwzOTU2NiwzOTU3MiwzOTU3MywzOTU3NywzOTU5MCwzOTU5MywzOTU5NCwzOTU5NSwzOTU5NiwzOTU5NywzOTU5OCwzOTU5OSwzOTYwMiwzOTYwMywzOTYwNCwzOTYwNSwzOTYwOSwzOTYxMSwzOTYxMywzOTYxNCwzOTYxNSwzOTYxOSwzOTYyMCwzOTYyMiwzOTYyMywzOTYyNCwzOTYyNSwzOTYyNiwzOTYyOSwzOTYzMCwzOTYzMSwzOTYzMiwzOTYzNCwzOTYzNiwzOTYzNywzOTYzOCwzOTYzOSwzOTY0MSwzOTY0MiwzOTY0MywzOTY0NCwzOTY0NSwzOTY0NiwzOTY0OCwzOTY1MCwzOTY1MSwzOTY1MiwzOTY1MywzOTY1NSwzOTY1NiwzOTY1NywzOTY1OCwzOTY2MCwzOTY2MiwzOTY2NCwzOTY2NSwzOTY2NiwzOTY2NywzOTY2OCwzOTY2OSwzOTY3MCwzOTY3MSwzOTY3MiwzOTY3NCwzOTY3NiwzOTY3NywzOTY3OCwzOTY3OSwzOTY4MCwzOTY4MSwzOTY4MiwzOTY4NCwzOTY4NSwzOTY4NiwzNDc1OCwzNDY5NiwzNDY5MywzNDczMywzNDcxMSwzNDY5MSwzNDczMSwzNDc4OSwzNDczMiwzNDc0MSwzNDczOSwzNDc2MywzNDc3MSwzNDc0OSwzNDc2OSwzNDc1MiwzNDc2MiwzNDc3OSwzNDc5NCwzNDc4NCwzNDc5OCwzNDgzOCwzNDgzNSwzNDgxNCwzNDgyNiwzNDg0MywzNDg0OSwzNDg3MywzNDg3NiwzMjU2NiwzMjU3OCwzMjU4MCwzMjU4MSwzMzI5NiwzMTQ4MiwzMTQ4NSwzMTQ5NiwzMTQ5MSwzMTQ5MiwzMTUwOSwzMTQ5OCwzMTUzMSwzMTUwMywzMTU1OSwzMTU0NCwzMTUzMCwzMTUxMywzMTUzNCwzMTUzNywzMTUyMCwzMTUyNSwzMTUyNCwzMTUzOSwzMTU1MCwzMTUxOCwzMTU3NiwzMTU3OCwzMTU1NywzMTYwNSwzMTU2NCwzMTU4MSwzMTU4NCwzMTU5OCwzMTYxMSwzMTU4NiwzMTYwMiwzMTYwMSwzMTYzMiwzMTY1NCwzMTY1NSwzMTY3MiwzMTY2MCwzMTY0NSwzMTY1NiwzMTYyMSwzMTY1OCwzMTY0NCwzMTY1MCwzMTY1OSwzMTY2OCwzMTY5NywzMTY4MSwzMTY5MiwzMTcwOSwzMTcwNiwzMTcxNywzMTcxOCwzMTcyMiwzMTc1NiwzMTc0MiwzMTc0MCwzMTc1OSwzMTc2NiwzMTc1NSwzOTY4NywzOTY4OSwzOTY5MCwzOTY5MSwzOTY5MiwzOTY5MywzOTY5NCwzOTY5NiwzOTY5NywzOTY5OCwzOTcwMCwzOTcwMSwzOTcwMiwzOTcwMywzOTcwNCwzOTcwNSwzOTcwNiwzOTcwNywzOTcwOCwzOTcwOSwzOTcxMCwzOTcxMiwzOTcxMywzOTcxNCwzOTcxNiwzOTcxNywzOTcxOCwzOTcxOSwzOTcyMCwzOTcyMSwzOTcyMiwzOTcyMywzOTcyNCwzOTcyNSwzOTcyNiwzOTcyOCwzOTcyOSwzOTczMSwzOTczMiwzOTczMywzOTczNCwzOTczNSwzOTczNiwzOTczNywzOTczOCwzOTc0MSwzOTc0MiwzOTc0MywzOTc0NCwzOTc1MCwzOTc1NCwzOTc1NSwzOTc1NiwzOTc1OCwzOTc2MCwzOTc2MiwzOTc2MywzOTc2NSwzOTc2NiwzOTc2NywzOTc2OCwzOTc2OSwzOTc3MCwzOTc3MSwzOTc3MiwzOTc3MywzOTc3NCwzOTc3NSwzOTc3NiwzOTc3NywzOTc3OCwzOTc3OSwzOTc4MCwzOTc4MSwzOTc4MiwzOTc4MywzOTc4NCwzOTc4NSwzOTc4NiwzOTc4NywzOTc4OCwzOTc4OSwzOTc5MCwzOTc5MSwzOTc5MiwzOTc5MywzOTc5NCwzOTc5NSwzOTc5NiwzOTc5NywzOTc5OCwzOTc5OSwzOTgwMCwzOTgwMSwzOTgwMiwzOTgwMywzMTc3NSwzMTc4NiwzMTc4MiwzMTgwMCwzMTgwOSwzMTgwOCwzMzI3OCwzMzI4MSwzMzI4MiwzMzI4NCwzMzI2MCwzNDg4NCwzMzMxMywzMzMxNCwzMzMxNSwzMzMyNSwzMzMyNywzMzMyMCwzMzMyMywzMzMzNiwzMzMzOSwzMzMzMSwzMzMzMiwzMzM0MiwzMzM0OCwzMzM1MywzMzM1NSwzMzM1OSwzMzM3MCwzMzM3NSwzMzM4NCwzNDk0MiwzNDk0OSwzNDk1MiwzNTAzMiwzNTAzOSwzNTE2NiwzMjY2OSwzMjY3MSwzMjY3OSwzMjY4NywzMjY4OCwzMjY5MCwzMTg2OCwyNTkyOSwzMTg4OSwzMTkwMSwzMTkwMCwzMTkwMiwzMTkwNiwzMTkyMiwzMTkzMiwzMTkzMywzMTkzNywzMTk0MywzMTk0OCwzMTk0OSwzMTk0NCwzMTk0MSwzMTk1OSwzMTk3NiwzMzM5MCwyNjI4MCwzMjcwMywzMjcxOCwzMjcyNSwzMjc0MSwzMjczNywzMjc0MiwzMjc0NSwzMjc1MCwzMjc1NSwzMTk5MiwzMjExOSwzMjE2NiwzMjE3NCwzMjMyNywzMjQxMSw0MDYzMiw0MDYyOCwzNjIxMSwzNjIyOCwzNjI0NCwzNjI0MSwzNjI3MywzNjE5OSwzNjIwNSwzNTkxMSwzNTkxMywzNzE5NCwzNzIwMCwzNzE5OCwzNzE5OSwzNzIyMCwzOTgwNCwzOTgwNSwzOTgwNiwzOTgwNywzOTgwOCwzOTgwOSwzOTgxMCwzOTgxMSwzOTgxMiwzOTgxMywzOTgxNCwzOTgxNSwzOTgxNiwzOTgxNywzOTgxOCwzOTgxOSwzOTgyMCwzOTgyMSwzOTgyMiwzOTgyMywzOTgyNCwzOTgyNSwzOTgyNiwzOTgyNywzOTgyOCwzOTgyOSwzOTgzMCwzOTgzMSwzOTgzMiwzOTgzMywzOTgzNCwzOTgzNSwzOTgzNiwzOTgzNywzOTgzOCwzOTgzOSwzOTg0MCwzOTg0MSwzOTg0MiwzOTg0MywzOTg0NCwzOTg0NSwzOTg0NiwzOTg0NywzOTg0OCwzOTg0OSwzOTg1MCwzOTg1MSwzOTg1MiwzOTg1MywzOTg1NCwzOTg1NSwzOTg1NiwzOTg1NywzOTg1OCwzOTg1OSwzOTg2MCwzOTg2MSwzOTg2MiwzOTg2MywzOTg2NCwzOTg2NSwzOTg2NiwzOTg2NywzOTg2OCwzOTg2OSwzOTg3MCwzOTg3MSwzOTg3MiwzOTg3MywzOTg3NCwzOTg3NSwzOTg3NiwzOTg3NywzOTg3OCwzOTg3OSwzOTg4MCwzOTg4MSwzOTg4MiwzOTg4MywzOTg4NCwzOTg4NSwzOTg4NiwzOTg4NywzOTg4OCwzOTg4OSwzOTg5MCwzOTg5MSwzOTg5MiwzOTg5MywzOTg5NCwzOTg5NSwzOTg5NiwzOTg5NywzOTg5OCwzOTg5OSwzNzIxOCwzNzIxNywzNzIzMiwzNzIyNSwzNzIzMSwzNzI0NSwzNzI0NiwzNzIzNCwzNzIzNiwzNzI0MSwzNzI2MCwzNzI1MywzNzI2NCwzNzI2MSwzNzI2NSwzNzI4MiwzNzI4MywzNzI5MCwzNzI5MywzNzI5NCwzNzI5NSwzNzMwMSwzNzMwMCwzNzMwNiwzNTkyNSw0MDU3NCwzNjI4MCwzNjMzMSwzNjM1NywzNjQ0MSwzNjQ1NywzNjI3NywzNjI4NywzNjI4NCwzNjI4MiwzNjI5MiwzNjMxMCwzNjMxMSwzNjMxNCwzNjMxOCwzNjMwMiwzNjMwMywzNjMxNSwzNjI5NCwzNjMzMiwzNjM0MywzNjM0NCwzNjMyMywzNjM0NSwzNjM0NywzNjMyNCwzNjM2MSwzNjM0OSwzNjM3MiwzNjM4MSwzNjM4MywzNjM5NiwzNjM5OCwzNjM4NywzNjM5OSwzNjQxMCwzNjQxNiwzNjQwOSwzNjQwNSwzNjQxMywzNjQwMSwzNjQyNSwzNjQxNywzNjQxOCwzNjQzMywzNjQzNCwzNjQyNiwzNjQ2NCwzNjQ3MCwzNjQ3NiwzNjQ2MywzNjQ2OCwzNjQ4NSwzNjQ5NSwzNjUwMCwzNjQ5NiwzNjUwOCwzNjUxMCwzNTk2MCwzNTk3MCwzNTk3OCwzNTk3MywzNTk5MiwzNTk4OCwyNjAxMSwzNTI4NiwzNTI5NCwzNTI5MCwzNTI5MiwzOTkwMCwzOTkwMSwzOTkwMiwzOTkwMywzOTkwNCwzOTkwNSwzOTkwNiwzOTkwNywzOTkwOCwzOTkwOSwzOTkxMCwzOTkxMSwzOTkxMiwzOTkxMywzOTkxNCwzOTkxNSwzOTkxNiwzOTkxNywzOTkxOCwzOTkxOSwzOTkyMCwzOTkyMSwzOTkyMiwzOTkyMywzOTkyNCwzOTkyNSwzOTkyNiwzOTkyNywzOTkyOCwzOTkyOSwzOTkzMCwzOTkzMSwzOTkzMiwzOTkzMywzOTkzNCwzOTkzNSwzOTkzNiwzOTkzNywzOTkzOCwzOTkzOSwzOTk0MCwzOTk0MSwzOTk0MiwzOTk0MywzOTk0NCwzOTk0NSwzOTk0NiwzOTk0NywzOTk0OCwzOTk0OSwzOTk1MCwzOTk1MSwzOTk1MiwzOTk1MywzOTk1NCwzOTk1NSwzOTk1NiwzOTk1NywzOTk1OCwzOTk1OSwzOTk2MCwzOTk2MSwzOTk2MiwzOTk2MywzOTk2NCwzOTk2NSwzOTk2NiwzOTk2NywzOTk2OCwzOTk2OSwzOTk3MCwzOTk3MSwzOTk3MiwzOTk3MywzOTk3NCwzOTk3NSwzOTk3NiwzOTk3NywzOTk3OCwzOTk3OSwzOTk4MCwzOTk4MSwzOTk4MiwzOTk4MywzOTk4NCwzOTk4NSwzOTk4NiwzOTk4NywzOTk4OCwzOTk4OSwzOTk5MCwzOTk5MSwzOTk5MiwzOTk5MywzOTk5NCwzOTk5NSwzNTMwMSwzNTMwNywzNTMxMSwzNTM5MCwzNTYyMiwzODczOSwzODYzMywzODY0MywzODYzOSwzODY2MiwzODY1NywzODY2NCwzODY3MSwzODY3MCwzODY5OCwzODcwMSwzODcwNCwzODcxOCw0MDgzMiw0MDgzNSw0MDgzNyw0MDgzOCw0MDgzOSw0MDg0MCw0MDg0MSw0MDg0Miw0MDg0NCw0MDcwMiw0MDcxNSw0MDcxNywzODU4NSwzODU4OCwzODU4OSwzODYwNiwzODYxMCwzMDY1NSwzODYyNCwzNzUxOCwzNzU1MCwzNzU3NiwzNzY5NCwzNzczOCwzNzgzNCwzNzc3NSwzNzk1MCwzNzk5NSw0MDA2Myw0MDA2Niw0MDA2OSw0MDA3MCw0MDA3MSw0MDA3MiwzMTI2Nyw0MDA3NSw0MDA3OCw0MDA4MCw0MDA4MSw0MDA4Miw0MDA4NCw0MDA4NSw0MDA5MCw0MDA5MSw0MDA5NCw0MDA5NSw0MDA5Niw0MDA5Nyw0MDA5OCw0MDA5OSw0MDEwMSw0MDEwMiw0MDEwMyw0MDEwNCw0MDEwNSw0MDEwNyw0MDEwOSw0MDExMCw0MDExMiw0MDExMyw0MDExNCw0MDExNSw0MDExNiw0MDExNyw0MDExOCw0MDExOSw0MDEyMiw0MDEyMyw0MDEyNCw0MDEyNSw0MDEzMiw0MDEzMyw0MDEzNCw0MDEzNSw0MDEzOCw0MDEzOSwzOTk5NiwzOTk5NywzOTk5OCwzOTk5OSw0MDAwMCw0MDAwMSw0MDAwMiw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwNiw0MDAwNyw0MDAwOCw0MDAwOSw0MDAxMCw0MDAxMSw0MDAxMiw0MDAxMyw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxNyw0MDAxOCw0MDAxOSw0MDAyMCw0MDAyMSw0MDAyMiw0MDAyMyw0MDAyNCw0MDAyNSw0MDAyNiw0MDAyNyw0MDAyOCw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzMiw0MDAzMyw0MDAzNCw0MDAzNSw0MDAzNiw0MDAzNyw0MDAzOCw0MDAzOSw0MDA0MCw0MDA0MSw0MDA0Miw0MDA0Myw0MDA0NCw0MDA0NSw0MDA0Niw0MDA0Nyw0MDA0OCw0MDA0OSw0MDA1MCw0MDA1MSw0MDA1Miw0MDA1Myw0MDA1NCw0MDA1NSw0MDA1Niw0MDA1Nyw0MDA1OCw0MDA1OSw0MDA2MSw0MDA2Miw0MDA2NCw0MDA2Nyw0MDA2OCw0MDA3Myw0MDA3NCw0MDA3Niw0MDA3OSw0MDA4Myw0MDA4Niw0MDA4Nyw0MDA4OCw0MDA4OSw0MDA5Myw0MDEwNiw0MDEwOCw0MDExMSw0MDEyMSw0MDEyNiw0MDEyNyw0MDEyOCw0MDEyOSw0MDEzMCw0MDEzNiw0MDEzNyw0MDE0NSw0MDE0Niw0MDE1NCw0MDE1NSw0MDE2MCw0MDE2MSw0MDE0MCw0MDE0MSw0MDE0Miw0MDE0Myw0MDE0NCw0MDE0Nyw0MDE0OCw0MDE0OSw0MDE1MSw0MDE1Miw0MDE1Myw0MDE1Niw0MDE1Nyw0MDE1OSw0MDE2MiwzODc4MCwzODc4OSwzODgwMSwzODgwMiwzODgwNCwzODgzMSwzODgyNywzODgxOSwzODgzNCwzODgzNiwzOTYwMSwzOTYwMCwzOTYwNyw0MDUzNiwzOTYwNiwzOTYxMCwzOTYxMiwzOTYxNywzOTYxNiwzOTYyMSwzOTYxOCwzOTYyNywzOTYyOCwzOTYzMywzOTc0OSwzOTc0NywzOTc1MSwzOTc1MywzOTc1MiwzOTc1NywzOTc2MSwzOTE0NCwzOTE4MSwzOTIxNCwzOTI1MywzOTI1MiwzOTY0NywzOTY0OSwzOTY1NCwzOTY2MywzOTY1OSwzOTY3NSwzOTY2MSwzOTY3MywzOTY4OCwzOTY5NSwzOTY5OSwzOTcxMSwzOTcxNSw0MDYzNyw0MDYzOCwzMjMxNSw0MDU3OCw0MDU4Myw0MDU4NCw0MDU4Nyw0MDU5NCwzNzg0Niw0MDYwNSw0MDYwNyw0MDY2Nyw0MDY2OCw0MDY2OSw0MDY3Miw0MDY3MSw0MDY3NCw0MDY4MSw0MDY3OSw0MDY3Nyw0MDY4Miw0MDY4Nyw0MDczOCw0MDc0OCw0MDc1MSw0MDc2MSw0MDc1OSw0MDc2NSw0MDc2Niw0MDc3Miw0MDE2Myw0MDE2NCw0MDE2NSw0MDE2Niw0MDE2Nyw0MDE2OCw0MDE2OSw0MDE3MCw0MDE3MSw0MDE3Miw0MDE3Myw0MDE3NCw0MDE3NSw0MDE3Niw0MDE3Nyw0MDE3OCw0MDE3OSw0MDE4MCw0MDE4MSw0MDE4Miw0MDE4Myw0MDE4NCw0MDE4NSw0MDE4Niw0MDE4Nyw0MDE4OCw0MDE4OSw0MDE5MCw0MDE5MSw0MDE5Miw0MDE5Myw0MDE5NCw0MDE5NSw0MDE5Niw0MDE5Nyw0MDE5OCw0MDE5OSw0MDIwMCw0MDIwMSw0MDIwMiw0MDIwMyw0MDIwNCw0MDIwNSw0MDIwNiw0MDIwNyw0MDIwOCw0MDIwOSw0MDIxMCw0MDIxMSw0MDIxMiw0MDIxMyw0MDIxNCw0MDIxNSw0MDIxNiw0MDIxNyw0MDIxOCw0MDIxOSw0MDIyMCw0MDIyMSw0MDIyMiw0MDIyMyw0MDIyNCw0MDIyNSw0MDIyNiw0MDIyNyw0MDIyOCw0MDIyOSw0MDIzMCw0MDIzMSw0MDIzMiw0MDIzMyw0MDIzNCw0MDIzNSw0MDIzNiw0MDIzNyw0MDIzOCw0MDIzOSw0MDI0MCw0MDI0MSw0MDI0Miw0MDI0Myw0MDI0NCw0MDI0NSw0MDI0Niw0MDI0Nyw0MDI0OCw0MDI0OSw0MDI1MCw0MDI1MSw0MDI1Miw0MDI1Myw0MDI1NCw0MDI1NSw0MDI1Niw0MDI1Nyw0MDI1OCw1NzkwOCw1NzkwOSw1NzkxMCw1NzkxMSw1NzkxMiw1NzkxMyw1NzkxNCw1NzkxNSw1NzkxNiw1NzkxNyw1NzkxOCw1NzkxOSw1NzkyMCw1NzkyMSw1NzkyMiw1NzkyMyw1NzkyNCw1NzkyNSw1NzkyNiw1NzkyNyw1NzkyOCw1NzkyOSw1NzkzMCw1NzkzMSw1NzkzMiw1NzkzMyw1NzkzNCw1NzkzNSw1NzkzNiw1NzkzNyw1NzkzOCw1NzkzOSw1Nzk0MCw1Nzk0MSw1Nzk0Miw1Nzk0Myw1Nzk0NCw1Nzk0NSw1Nzk0Niw1Nzk0Nyw1Nzk0OCw1Nzk0OSw1Nzk1MCw1Nzk1MSw1Nzk1Miw1Nzk1Myw1Nzk1NCw1Nzk1NSw1Nzk1Niw1Nzk1Nyw1Nzk1OCw1Nzk1OSw1Nzk2MCw1Nzk2MSw1Nzk2Miw1Nzk2Myw1Nzk2NCw1Nzk2NSw1Nzk2Niw1Nzk2Nyw1Nzk2OCw1Nzk2OSw1Nzk3MCw1Nzk3MSw1Nzk3Miw1Nzk3Myw1Nzk3NCw1Nzk3NSw1Nzk3Niw1Nzk3Nyw1Nzk3OCw1Nzk3OSw1Nzk4MCw1Nzk4MSw1Nzk4Miw1Nzk4Myw1Nzk4NCw1Nzk4NSw1Nzk4Niw1Nzk4Nyw1Nzk4OCw1Nzk4OSw1Nzk5MCw1Nzk5MSw1Nzk5Miw1Nzk5Myw1Nzk5NCw1Nzk5NSw1Nzk5Niw1Nzk5Nyw1Nzk5OCw1Nzk5OSw1ODAwMCw1ODAwMSw0MDI1OSw0MDI2MCw0MDI2MSw0MDI2Miw0MDI2Myw0MDI2NCw0MDI2NSw0MDI2Niw0MDI2Nyw0MDI2OCw0MDI2OSw0MDI3MCw0MDI3MSw0MDI3Miw0MDI3Myw0MDI3NCw0MDI3NSw0MDI3Niw0MDI3Nyw0MDI3OCw0MDI3OSw0MDI4MCw0MDI4MSw0MDI4Miw0MDI4Myw0MDI4NCw0MDI4NSw0MDI4Niw0MDI4Nyw0MDI4OCw0MDI4OSw0MDI5MCw0MDI5MSw0MDI5Miw0MDI5Myw0MDI5NCw0MDI5NSw0MDI5Niw0MDI5Nyw0MDI5OCw0MDI5OSw0MDMwMCw0MDMwMSw0MDMwMiw0MDMwMyw0MDMwNCw0MDMwNSw0MDMwNiw0MDMwNyw0MDMwOCw0MDMwOSw0MDMxMCw0MDMxMSw0MDMxMiw0MDMxMyw0MDMxNCw0MDMxNSw0MDMxNiw0MDMxNyw0MDMxOCw0MDMxOSw0MDMyMCw0MDMyMSw0MDMyMiw0MDMyMyw0MDMyNCw0MDMyNSw0MDMyNiw0MDMyNyw0MDMyOCw0MDMyOSw0MDMzMCw0MDMzMSw0MDMzMiw0MDMzMyw0MDMzNCw0MDMzNSw0MDMzNiw0MDMzNyw0MDMzOCw0MDMzOSw0MDM0MCw0MDM0MSw0MDM0Miw0MDM0Myw0MDM0NCw0MDM0NSw0MDM0Niw0MDM0Nyw0MDM0OCw0MDM0OSw0MDM1MCw0MDM1MSw0MDM1Miw0MDM1Myw0MDM1NCw1ODAwMiw1ODAwMyw1ODAwNCw1ODAwNSw1ODAwNiw1ODAwNyw1ODAwOCw1ODAwOSw1ODAxMCw1ODAxMSw1ODAxMiw1ODAxMyw1ODAxNCw1ODAxNSw1ODAxNiw1ODAxNyw1ODAxOCw1ODAxOSw1ODAyMCw1ODAyMSw1ODAyMiw1ODAyMyw1ODAyNCw1ODAyNSw1ODAyNiw1ODAyNyw1ODAyOCw1ODAyOSw1ODAzMCw1ODAzMSw1ODAzMiw1ODAzMyw1ODAzNCw1ODAzNSw1ODAzNiw1ODAzNyw1ODAzOCw1ODAzOSw1ODA0MCw1ODA0MSw1ODA0Miw1ODA0Myw1ODA0NCw1ODA0NSw1ODA0Niw1ODA0Nyw1ODA0OCw1ODA0OSw1ODA1MCw1ODA1MSw1ODA1Miw1ODA1Myw1ODA1NCw1ODA1NSw1ODA1Niw1ODA1Nyw1ODA1OCw1ODA1OSw1ODA2MCw1ODA2MSw1ODA2Miw1ODA2Myw1ODA2NCw1ODA2NSw1ODA2Niw1ODA2Nyw1ODA2OCw1ODA2OSw1ODA3MCw1ODA3MSw1ODA3Miw1ODA3Myw1ODA3NCw1ODA3NSw1ODA3Niw1ODA3Nyw1ODA3OCw1ODA3OSw1ODA4MCw1ODA4MSw1ODA4Miw1ODA4Myw1ODA4NCw1ODA4NSw1ODA4Niw1ODA4Nyw1ODA4OCw1ODA4OSw1ODA5MCw1ODA5MSw1ODA5Miw1ODA5Myw1ODA5NCw1ODA5NSw0MDM1NSw0MDM1Niw0MDM1Nyw0MDM1OCw0MDM1OSw0MDM2MCw0MDM2MSw0MDM2Miw0MDM2Myw0MDM2NCw0MDM2NSw0MDM2Niw0MDM2Nyw0MDM2OCw0MDM2OSw0MDM3MCw0MDM3MSw0MDM3Miw0MDM3Myw0MDM3NCw0MDM3NSw0MDM3Niw0MDM3Nyw0MDM3OCw0MDM3OSw0MDM4MCw0MDM4MSw0MDM4Miw0MDM4Myw0MDM4NCw0MDM4NSw0MDM4Niw0MDM4Nyw0MDM4OCw0MDM4OSw0MDM5MCw0MDM5MSw0MDM5Miw0MDM5Myw0MDM5NCw0MDM5NSw0MDM5Niw0MDM5Nyw0MDM5OCw0MDM5OSw0MDQwMCw0MDQwMSw0MDQwMiw0MDQwMyw0MDQwNCw0MDQwNSw0MDQwNiw0MDQwNyw0MDQwOCw0MDQwOSw0MDQxMCw0MDQxMSw0MDQxMiw0MDQxMyw0MDQxNCw0MDQxNSw0MDQxNiw0MDQxNyw0MDQxOCw0MDQxOSw0MDQyMCw0MDQyMSw0MDQyMiw0MDQyMyw0MDQyNCw0MDQyNSw0MDQyNiw0MDQyNyw0MDQyOCw0MDQyOSw0MDQzMCw0MDQzMSw0MDQzMiw0MDQzMyw0MDQzNCw0MDQzNSw0MDQzNiw0MDQzNyw0MDQzOCw0MDQzOSw0MDQ0MCw0MDQ0MSw0MDQ0Miw0MDQ0Myw0MDQ0NCw0MDQ0NSw0MDQ0Niw0MDQ0Nyw0MDQ0OCw0MDQ0OSw0MDQ1MCw1ODA5Niw1ODA5Nyw1ODA5OCw1ODA5OSw1ODEwMCw1ODEwMSw1ODEwMiw1ODEwMyw1ODEwNCw1ODEwNSw1ODEwNiw1ODEwNyw1ODEwOCw1ODEwOSw1ODExMCw1ODExMSw1ODExMiw1ODExMyw1ODExNCw1ODExNSw1ODExNiw1ODExNyw1ODExOCw1ODExOSw1ODEyMCw1ODEyMSw1ODEyMiw1ODEyMyw1ODEyNCw1ODEyNSw1ODEyNiw1ODEyNyw1ODEyOCw1ODEyOSw1ODEzMCw1ODEzMSw1ODEzMiw1ODEzMyw1ODEzNCw1ODEzNSw1ODEzNiw1ODEzNyw1ODEzOCw1ODEzOSw1ODE0MCw1ODE0MSw1ODE0Miw1ODE0Myw1ODE0NCw1ODE0NSw1ODE0Niw1ODE0Nyw1ODE0OCw1ODE0OSw1ODE1MCw1ODE1MSw1ODE1Miw1ODE1Myw1ODE1NCw1ODE1NSw1ODE1Niw1ODE1Nyw1ODE1OCw1ODE1OSw1ODE2MCw1ODE2MSw1ODE2Miw1ODE2Myw1ODE2NCw1ODE2NSw1ODE2Niw1ODE2Nyw1ODE2OCw1ODE2OSw1ODE3MCw1ODE3MSw1ODE3Miw1ODE3Myw1ODE3NCw1ODE3NSw1ODE3Niw1ODE3Nyw1ODE3OCw1ODE3OSw1ODE4MCw1ODE4MSw1ODE4Miw1ODE4Myw1ODE4NCw1ODE4NSw1ODE4Niw1ODE4Nyw1ODE4OCw1ODE4OSw0MDQ1MSw0MDQ1Miw0MDQ1Myw0MDQ1NCw0MDQ1NSw0MDQ1Niw0MDQ1Nyw0MDQ1OCw0MDQ1OSw0MDQ2MCw0MDQ2MSw0MDQ2Miw0MDQ2Myw0MDQ2NCw0MDQ2NSw0MDQ2Niw0MDQ2Nyw0MDQ2OCw0MDQ2OSw0MDQ3MCw0MDQ3MSw0MDQ3Miw0MDQ3Myw0MDQ3NCw0MDQ3NSw0MDQ3Niw0MDQ3Nyw0MDQ3OCw0MDQ4NCw0MDQ4Nyw0MDQ5NCw0MDQ5Niw0MDUwMCw0MDUwNyw0MDUwOCw0MDUxMiw0MDUyNSw0MDUyOCw0MDUzMCw0MDUzMSw0MDUzMiw0MDUzNCw0MDUzNyw0MDU0MSw0MDU0Myw0MDU0NCw0MDU0NSw0MDU0Niw0MDU0OSw0MDU1OCw0MDU1OSw0MDU2Miw0MDU2NCw0MDU2NSw0MDU2Niw0MDU2Nyw0MDU2OCw0MDU2OSw0MDU3MCw0MDU3MSw0MDU3Miw0MDU3Myw0MDU3Niw0MDU3Nyw0MDU3OSw0MDU4MCw0MDU4MSw0MDU4Miw0MDU4NSw0MDU4Niw0MDU4OCw0MDU4OSw0MDU5MCw0MDU5MSw0MDU5Miw0MDU5Myw0MDU5Niw0MDU5Nyw0MDU5OCw0MDU5OSw0MDYwMCw0MDYwMSw0MDYwMiw0MDYwMyw0MDYwNCw0MDYwNiw0MDYwOCw0MDYwOSw0MDYxMCw0MDYxMSw0MDYxMiw0MDYxMyw0MDYxNSw0MDYxNiw0MDYxNyw0MDYxOCw1ODE5MCw1ODE5MSw1ODE5Miw1ODE5Myw1ODE5NCw1ODE5NSw1ODE5Niw1ODE5Nyw1ODE5OCw1ODE5OSw1ODIwMCw1ODIwMSw1ODIwMiw1ODIwMyw1ODIwNCw1ODIwNSw1ODIwNiw1ODIwNyw1ODIwOCw1ODIwOSw1ODIxMCw1ODIxMSw1ODIxMiw1ODIxMyw1ODIxNCw1ODIxNSw1ODIxNiw1ODIxNyw1ODIxOCw1ODIxOSw1ODIyMCw1ODIyMSw1ODIyMiw1ODIyMyw1ODIyNCw1ODIyNSw1ODIyNiw1ODIyNyw1ODIyOCw1ODIyOSw1ODIzMCw1ODIzMSw1ODIzMiw1ODIzMyw1ODIzNCw1ODIzNSw1ODIzNiw1ODIzNyw1ODIzOCw1ODIzOSw1ODI0MCw1ODI0MSw1ODI0Miw1ODI0Myw1ODI0NCw1ODI0NSw1ODI0Niw1ODI0Nyw1ODI0OCw1ODI0OSw1ODI1MCw1ODI1MSw1ODI1Miw1ODI1Myw1ODI1NCw1ODI1NSw1ODI1Niw1ODI1Nyw1ODI1OCw1ODI1OSw1ODI2MCw1ODI2MSw1ODI2Miw1ODI2Myw1ODI2NCw1ODI2NSw1ODI2Niw1ODI2Nyw1ODI2OCw1ODI2OSw1ODI3MCw1ODI3MSw1ODI3Miw1ODI3Myw1ODI3NCw1ODI3NSw1ODI3Niw1ODI3Nyw1ODI3OCw1ODI3OSw1ODI4MCw1ODI4MSw1ODI4Miw1ODI4Myw0MDYxOSw0MDYyMCw0MDYyMSw0MDYyMiw0MDYyMyw0MDYyNCw0MDYyNSw0MDYyNiw0MDYyNyw0MDYyOSw0MDYzMCw0MDYzMSw0MDYzMyw0MDYzNCw0MDYzNiw0MDYzOSw0MDY0MCw0MDY0MSw0MDY0Miw0MDY0Myw0MDY0NSw0MDY0Niw0MDY0Nyw0MDY0OCw0MDY1MCw0MDY1MSw0MDY1Miw0MDY1Niw0MDY1OCw0MDY1OSw0MDY2MSw0MDY2Miw0MDY2Myw0MDY2NSw0MDY2Niw0MDY3MCw0MDY3Myw0MDY3NSw0MDY3Niw0MDY3OCw0MDY4MCw0MDY4Myw0MDY4NCw0MDY4NSw0MDY4Niw0MDY4OCw0MDY4OSw0MDY5MCw0MDY5MSw0MDY5Miw0MDY5Myw0MDY5NCw0MDY5NSw0MDY5Niw0MDY5OCw0MDcwMSw0MDcwMyw0MDcwNCw0MDcwNSw0MDcwNiw0MDcwNyw0MDcwOCw0MDcwOSw0MDcxMCw0MDcxMSw0MDcxMiw0MDcxMyw0MDcxNCw0MDcxNiw0MDcxOSw0MDcyMSw0MDcyMiw0MDcyNCw0MDcyNSw0MDcyNiw0MDcyOCw0MDczMCw0MDczMSw0MDczMiw0MDczMyw0MDczNCw0MDczNSw0MDczNyw0MDczOSw0MDc0MCw0MDc0MSw0MDc0Miw0MDc0Myw0MDc0NCw0MDc0NSw0MDc0Niw0MDc0Nyw0MDc0OSw0MDc1MCw0MDc1Miw0MDc1Myw1ODI4NCw1ODI4NSw1ODI4Niw1ODI4Nyw1ODI4OCw1ODI4OSw1ODI5MCw1ODI5MSw1ODI5Miw1ODI5Myw1ODI5NCw1ODI5NSw1ODI5Niw1ODI5Nyw1ODI5OCw1ODI5OSw1ODMwMCw1ODMwMSw1ODMwMiw1ODMwMyw1ODMwNCw1ODMwNSw1ODMwNiw1ODMwNyw1ODMwOCw1ODMwOSw1ODMxMCw1ODMxMSw1ODMxMiw1ODMxMyw1ODMxNCw1ODMxNSw1ODMxNiw1ODMxNyw1ODMxOCw1ODMxOSw1ODMyMCw1ODMyMSw1ODMyMiw1ODMyMyw1ODMyNCw1ODMyNSw1ODMyNiw1ODMyNyw1ODMyOCw1ODMyOSw1ODMzMCw1ODMzMSw1ODMzMiw1ODMzMyw1ODMzNCw1ODMzNSw1ODMzNiw1ODMzNyw1ODMzOCw1ODMzOSw1ODM0MCw1ODM0MSw1ODM0Miw1ODM0Myw1ODM0NCw1ODM0NSw1ODM0Niw1ODM0Nyw1ODM0OCw1ODM0OSw1ODM1MCw1ODM1MSw1ODM1Miw1ODM1Myw1ODM1NCw1ODM1NSw1ODM1Niw1ODM1Nyw1ODM1OCw1ODM1OSw1ODM2MCw1ODM2MSw1ODM2Miw1ODM2Myw1ODM2NCw1ODM2NSw1ODM2Niw1ODM2Nyw1ODM2OCw1ODM2OSw1ODM3MCw1ODM3MSw1ODM3Miw1ODM3Myw1ODM3NCw1ODM3NSw1ODM3Niw1ODM3Nyw0MDc1NCw0MDc1NSw0MDc1Niw0MDc1Nyw0MDc1OCw0MDc2MCw0MDc2Miw0MDc2NCw0MDc2Nyw0MDc2OCw0MDc2OSw0MDc3MCw0MDc3MSw0MDc3Myw0MDc3NCw0MDc3NSw0MDc3Niw0MDc3Nyw0MDc3OCw0MDc3OSw0MDc4MCw0MDc4MSw0MDc4Miw0MDc4Myw0MDc4Niw0MDc4Nyw0MDc4OCw0MDc4OSw0MDc5MCw0MDc5MSw0MDc5Miw0MDc5Myw0MDc5NCw0MDc5NSw0MDc5Niw0MDc5Nyw0MDc5OCw0MDc5OSw0MDgwMCw0MDgwMSw0MDgwMiw0MDgwMyw0MDgwNCw0MDgwNSw0MDgwNiw0MDgwNyw0MDgwOCw0MDgwOSw0MDgxMCw0MDgxMSw0MDgxMiw0MDgxMyw0MDgxNCw0MDgxNSw0MDgxNiw0MDgxNyw0MDgxOCw0MDgxOSw0MDgyMCw0MDgyMSw0MDgyMiw0MDgyMyw0MDgyNCw0MDgyNSw0MDgyNiw0MDgyNyw0MDgyOCw0MDgyOSw0MDgzMCw0MDgzMyw0MDgzNCw0MDg0NSw0MDg0Niw0MDg0Nyw0MDg0OCw0MDg0OSw0MDg1MCw0MDg1MSw0MDg1Miw0MDg1Myw0MDg1NCw0MDg1NSw0MDg1Niw0MDg2MCw0MDg2MSw0MDg2Miw0MDg2NSw0MDg2Niw0MDg2Nyw0MDg2OCw0MDg2OSw2Mzc4OCw2Mzg2NSw2Mzg5Myw2Mzk3NSw2Mzk4NSw1ODM3OCw1ODM3OSw1ODM4MCw1ODM4MSw1ODM4Miw1ODM4Myw1ODM4NCw1ODM4NSw1ODM4Niw1ODM4Nyw1ODM4OCw1ODM4OSw1ODM5MCw1ODM5MSw1ODM5Miw1ODM5Myw1ODM5NCw1ODM5NSw1ODM5Niw1ODM5Nyw1ODM5OCw1ODM5OSw1ODQwMCw1ODQwMSw1ODQwMiw1ODQwMyw1ODQwNCw1ODQwNSw1ODQwNiw1ODQwNyw1ODQwOCw1ODQwOSw1ODQxMCw1ODQxMSw1ODQxMiw1ODQxMyw1ODQxNCw1ODQxNSw1ODQxNiw1ODQxNyw1ODQxOCw1ODQxOSw1ODQyMCw1ODQyMSw1ODQyMiw1ODQyMyw1ODQyNCw1ODQyNSw1ODQyNiw1ODQyNyw1ODQyOCw1ODQyOSw1ODQzMCw1ODQzMSw1ODQzMiw1ODQzMyw1ODQzNCw1ODQzNSw1ODQzNiw1ODQzNyw1ODQzOCw1ODQzOSw1ODQ0MCw1ODQ0MSw1ODQ0Miw1ODQ0Myw1ODQ0NCw1ODQ0NSw1ODQ0Niw1ODQ0Nyw1ODQ0OCw1ODQ0OSw1ODQ1MCw1ODQ1MSw1ODQ1Miw1ODQ1Myw1ODQ1NCw1ODQ1NSw1ODQ1Niw1ODQ1Nyw1ODQ1OCw1ODQ1OSw1ODQ2MCw1ODQ2MSw1ODQ2Miw1ODQ2Myw1ODQ2NCw1ODQ2NSw1ODQ2Niw1ODQ2Nyw1ODQ2OCw1ODQ2OSw1ODQ3MCw1ODQ3MSw2NDAxMiw2NDAxMyw2NDAxNCw2NDAxNSw2NDAxNyw2NDAxOSw2NDAyMCw2NDAyNCw2NDAzMSw2NDAzMiw2NDAzMyw2NDAzNSw2NDAzNiw2NDAzOSw2NDA0MCw2NDA0MSwxMTkwNSw1OTQxNCw1OTQxNSw1OTQxNiwxMTkwOCwxMzQyNywxMzM4MywxMTkxMiwxMTkxNSw1OTQyMiwxMzcyNiwxMzg1MCwxMzgzOCwxMTkxNiwxMTkyNywxNDcwMiwxNDYxNiw1OTQzMCwxNDc5OSwxNDgxNSwxNDk2MywxNDgwMCw1OTQzNSw1OTQzNiwxNTE4MiwxNTQ3MCwxNTU4NCwxMTk0Myw1OTQ0MSw1OTQ0MiwxMTk0NiwxNjQ3MCwxNjczNSwxMTk1MCwxNzIwNywxMTk1NSwxMTk1OCwxMTk1OSw1OTQ1MSwxNzMyOSwxNzMyNCwxMTk2MywxNzM3MywxNzYyMiwxODAxNywxNzk5Niw1OTQ1OSwxODIxMSwxODIxNywxODMwMCwxODMxNywxMTk3OCwxODc1OSwxODgxMCwxODgxMywxODgxOCwxODgxOSwxODgyMSwxODgyMiwxODg0NywxODg0MywxODg3MSwxODg3MCw1OTQ3Niw1OTQ3NywxOTYxOSwxOTYxNSwxOTYxNiwxOTYxNywxOTU3NSwxOTYxOCwxOTczMSwxOTczMiwxOTczMywxOTczNCwxOTczNSwxOTczNiwxOTczNywxOTg4Niw1OTQ5Miw1ODQ3Miw1ODQ3Myw1ODQ3NCw1ODQ3NSw1ODQ3Niw1ODQ3Nyw1ODQ3OCw1ODQ3OSw1ODQ4MCw1ODQ4MSw1ODQ4Miw1ODQ4Myw1ODQ4NCw1ODQ4NSw1ODQ4Niw1ODQ4Nyw1ODQ4OCw1ODQ4OSw1ODQ5MCw1ODQ5MSw1ODQ5Miw1ODQ5Myw1ODQ5NCw1ODQ5NSw1ODQ5Niw1ODQ5Nyw1ODQ5OCw1ODQ5OSw1ODUwMCw1ODUwMSw1ODUwMiw1ODUwMyw1ODUwNCw1ODUwNSw1ODUwNiw1ODUwNyw1ODUwOCw1ODUwOSw1ODUxMCw1ODUxMSw1ODUxMiw1ODUxMyw1ODUxNCw1ODUxNSw1ODUxNiw1ODUxNyw1ODUxOCw1ODUxOSw1ODUyMCw1ODUyMSw1ODUyMiw1ODUyMyw1ODUyNCw1ODUyNSw1ODUyNiw1ODUyNyw1ODUyOCw1ODUyOSw1ODUzMCw1ODUzMSw1ODUzMiw1ODUzMyw1ODUzNCw1ODUzNSw1ODUzNiw1ODUzNyw1ODUzOCw1ODUzOSw1ODU0MCw1ODU0MSw1ODU0Miw1ODU0Myw1ODU0NCw1ODU0NSw1ODU0Niw1ODU0Nyw1ODU0OCw1ODU0OSw1ODU1MCw1ODU1MSw1ODU1Miw1ODU1Myw1ODU1NCw1ODU1NSw1ODU1Niw1ODU1Nyw1ODU1OCw1ODU1OSw1ODU2MCw1ODU2MSw1ODU2Miw1ODU2Myw1ODU2NCw1ODU2NV0sXG4gIFwiZ2IxODAzMC1yYW5nZXNcIjpbWzAsMTI4XSxbMzYsMTY1XSxbMzgsMTY5XSxbNDUsMTc4XSxbNTAsMTg0XSxbODEsMjE2XSxbODksMjI2XSxbOTUsMjM1XSxbOTYsMjM4XSxbMTAwLDI0NF0sWzEwMywyNDhdLFsxMDQsMjUxXSxbMTA1LDI1M10sWzEwOSwyNThdLFsxMjYsMjc2XSxbMTMzLDI4NF0sWzE0OCwzMDBdLFsxNzIsMzI1XSxbMTc1LDMyOV0sWzE3OSwzMzRdLFsyMDgsMzY0XSxbMzA2LDQ2M10sWzMwNyw0NjVdLFszMDgsNDY3XSxbMzA5LDQ2OV0sWzMxMCw0NzFdLFszMTEsNDczXSxbMzEyLDQ3NV0sWzMxMyw0NzddLFszNDEsNTA2XSxbNDI4LDU5NF0sWzQ0Myw2MTBdLFs1NDQsNzEyXSxbNTQ1LDcxNl0sWzU1OCw3MzBdLFs3NDEsOTMwXSxbNzQyLDkzOF0sWzc0OSw5NjJdLFs3NTAsOTcwXSxbODA1LDEwMjZdLFs4MTksMTEwNF0sWzgyMCwxMTA2XSxbNzkyMiw4MjA5XSxbNzkyNCw4MjE1XSxbNzkyNSw4MjE4XSxbNzkyNyw4MjIyXSxbNzkzNCw4MjMxXSxbNzk0Myw4MjQxXSxbNzk0NCw4MjQ0XSxbNzk0NSw4MjQ2XSxbNzk1MCw4MjUyXSxbODA2Miw4MzY1XSxbODE0OCw4NDUyXSxbODE0OSw4NDU0XSxbODE1Miw4NDU4XSxbODE2NCw4NDcxXSxbODE3NCw4NDgyXSxbODIzNiw4NTU2XSxbODI0MCw4NTcwXSxbODI2Miw4NTk2XSxbODI2NCw4NjAyXSxbODM3NCw4NzEzXSxbODM4MCw4NzIwXSxbODM4MSw4NzIyXSxbODM4NCw4NzI2XSxbODM4OCw4NzMxXSxbODM5MCw4NzM3XSxbODM5Miw4NzQwXSxbODM5Myw4NzQyXSxbODM5NCw4NzQ4XSxbODM5Niw4NzUxXSxbODQwMSw4NzYwXSxbODQwNiw4NzY2XSxbODQxNiw4Nzc3XSxbODQxOSw4NzgxXSxbODQyNCw4Nzg3XSxbODQzNyw4ODAyXSxbODQzOSw4ODA4XSxbODQ0NSw4ODE2XSxbODQ4Miw4ODU0XSxbODQ4NSw4ODU4XSxbODQ5Niw4ODcwXSxbODUyMSw4ODk2XSxbODYwMyw4OTc5XSxbODkzNiw5MzIyXSxbODk0Niw5MzcyXSxbOTA0Niw5NTQ4XSxbOTA1MCw5NTg4XSxbOTA2Myw5NjE2XSxbOTA2Niw5NjIyXSxbOTA3Niw5NjM0XSxbOTA5Miw5NjUyXSxbOTEwMCw5NjYyXSxbOTEwOCw5NjcyXSxbOTExMSw5Njc2XSxbOTExMyw5NjgwXSxbOTEzMSw5NzAyXSxbOTE2Miw5NzM1XSxbOTE2NCw5NzM4XSxbOTIxOCw5NzkzXSxbOTIxOSw5Nzk1XSxbMTEzMjksMTE5MDZdLFsxMTMzMSwxMTkwOV0sWzExMzM0LDExOTEzXSxbMTEzMzYsMTE5MTddLFsxMTM0NiwxMTkyOF0sWzExMzYxLDExOTQ0XSxbMTEzNjMsMTE5NDddLFsxMTM2NiwxMTk1MV0sWzExMzcwLDExOTU2XSxbMTEzNzIsMTE5NjBdLFsxMTM3NSwxMTk2NF0sWzExMzg5LDExOTc5XSxbMTE2ODIsMTIyODRdLFsxMTY4NiwxMjI5Ml0sWzExNjg3LDEyMzEyXSxbMTE2OTIsMTIzMTldLFsxMTY5NCwxMjMzMF0sWzExNzE0LDEyMzUxXSxbMTE3MTYsMTI0MzZdLFsxMTcyMywxMjQ0N10sWzExNzI1LDEyNTM1XSxbMTE3MzAsMTI1NDNdLFsxMTczNiwxMjU4Nl0sWzExOTgyLDEyODQyXSxbMTE5ODksMTI4NTBdLFsxMjEwMiwxMjk2NF0sWzEyMzM2LDEzMjAwXSxbMTIzNDgsMTMyMTVdLFsxMjM1MCwxMzIxOF0sWzEyMzg0LDEzMjUzXSxbMTIzOTMsMTMyNjNdLFsxMjM5NSwxMzI2N10sWzEyMzk3LDEzMjcwXSxbMTI1MTAsMTMzODRdLFsxMjU1MywxMzQyOF0sWzEyODUxLDEzNzI3XSxbMTI5NjIsMTM4MzldLFsxMjk3MywxMzg1MV0sWzEzNzM4LDE0NjE3XSxbMTM4MjMsMTQ3MDNdLFsxMzkxOSwxNDgwMV0sWzEzOTMzLDE0ODE2XSxbMTQwODAsMTQ5NjRdLFsxNDI5OCwxNTE4M10sWzE0NTg1LDE1NDcxXSxbMTQ2OTgsMTU1ODVdLFsxNTU4MywxNjQ3MV0sWzE1ODQ3LDE2NzM2XSxbMTYzMTgsMTcyMDhdLFsxNjQzNCwxNzMyNV0sWzE2NDM4LDE3MzMwXSxbMTY0ODEsMTczNzRdLFsxNjcyOSwxNzYyM10sWzE3MTAyLDE3OTk3XSxbMTcxMjIsMTgwMThdLFsxNzMxNSwxODIxMl0sWzE3MzIwLDE4MjE4XSxbMTc0MDIsMTgzMDFdLFsxNzQxOCwxODMxOF0sWzE3ODU5LDE4NzYwXSxbMTc5MDksMTg4MTFdLFsxNzkxMSwxODgxNF0sWzE3OTE1LDE4ODIwXSxbMTc5MTYsMTg4MjNdLFsxNzkzNiwxODg0NF0sWzE3OTM5LDE4ODQ4XSxbMTc5NjEsMTg4NzJdLFsxODY2NCwxOTU3Nl0sWzE4NzAzLDE5NjIwXSxbMTg4MTQsMTk3MzhdLFsxODk2MiwxOTg4N10sWzE5MDQzLDQwODcwXSxbMzM0NjksNTkyNDRdLFszMzQ3MCw1OTMzNl0sWzMzNDcxLDU5MzY3XSxbMzM0ODQsNTk0MTNdLFszMzQ4NSw1OTQxN10sWzMzNDkwLDU5NDIzXSxbMzM0OTcsNTk0MzFdLFszMzUwMSw1OTQzN10sWzMzNTA1LDU5NDQzXSxbMzM1MTMsNTk0NTJdLFszMzUyMCw1OTQ2MF0sWzMzNTM2LDU5NDc4XSxbMzM1NTAsNTk0OTNdLFszNzg0NSw2Mzc4OV0sWzM3OTIxLDYzODY2XSxbMzc5NDgsNjM4OTRdLFszODAyOSw2Mzk3Nl0sWzM4MDM4LDYzOTg2XSxbMzgwNjQsNjQwMTZdLFszODA2NSw2NDAxOF0sWzM4MDY2LDY0MDIxXSxbMzgwNjksNjQwMjVdLFszODA3NSw2NDAzNF0sWzM4MDc2LDY0MDM3XSxbMzgwNzgsNjQwNDJdLFszOTEwOCw2NTA3NF0sWzM5MTA5LDY1MDkzXSxbMzkxMTMsNjUxMDddLFszOTExNCw2NTExMl0sWzM5MTE1LDY1MTI3XSxbMzkxMTYsNjUxMzJdLFszOTI2NSw2NTM3NV0sWzM5Mzk0LDY1NTEwXSxbMTg5MDAwLDY1NTM2XV0sXG4gIFwiamlzMDIwOFwiOlsxMjI4OCwxMjI4OSwxMjI5MCw2NTI5Miw2NTI5NCwxMjUzOSw2NTMwNiw2NTMwNyw2NTMxMSw2NTI4MSwxMjQ0MywxMjQ0NCwxODAsNjUzNDQsMTY4LDY1MzQyLDY1NTA3LDY1MzQzLDEyNTQxLDEyNTQyLDEyNDQ1LDEyNDQ2LDEyMjkxLDIwMTg5LDEyMjkzLDEyMjk0LDEyMjk1LDEyNTQwLDgyMTMsODIwOCw2NTI5NSw2NTM0MCw2NTM3NCw4NzQxLDY1MzcyLDgyMzAsODIyOSw4MjE2LDgyMTcsODIyMCw4MjIxLDY1Mjg4LDY1Mjg5LDEyMzA4LDEyMzA5LDY1MzM5LDY1MzQxLDY1MzcxLDY1MzczLDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEyMzA1LDY1MjkxLDY1MjkzLDE3NywyMTUsMjQ3LDY1MzA5LDg4MDAsNjUzMDgsNjUzMTAsODgwNiw4ODA3LDg3MzQsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1NTA5LDY1Mjg0LDY1NTA0LDY1NTA1LDY1Mjg1LDY1MjgzLDY1Mjg2LDY1MjkwLDY1MzEyLDE2Nyw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYwLDgyNTEsMTIzMDYsODU5NCw4NTkyLDg1OTMsODU5NSwxMjMwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4MzUsODc0Niw4NzQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzQzLDg3NDQsNjU1MDYsODY1OCw4NjYwLDg3MDQsODcwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4Niw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NDkxLDgyNDAsOTgzOSw5ODM3LDk4MzQsODIyNCw4MjI1LDE4MixudWxsLG51bGwsbnVsbCxudWxsLDk3MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCxudWxsLG51bGwsbnVsbCxudWxsLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1MjgsOTUzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiw5MzI3LDkzMjgsOTMyOSw5MzMwLDkzMzEsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MyxudWxsLDEzMTI5LDEzMDc2LDEzMDkwLDEzMTMzLDEzMDgwLDEzMDk1LDEzMDU5LDEzMTEwLDEzMTM3LDEzMTQzLDEzMDY5LDEzMDk0LDEzMDkxLDEzMDk5LDEzMTMwLDEzMTE1LDEzMjEyLDEzMjEzLDEzMjE0LDEzMTk4LDEzMTk5LDEzMjUyLDEzMjE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMzE3OSwxMjMxNywxMjMxOSw4NDcwLDEzMjYxLDg0ODEsMTI5NjQsMTI5NjUsMTI5NjYsMTI5NjcsMTI5NjgsMTI4NDksMTI4NTAsMTI4NTcsMTMxODIsMTMxODEsMTMxODAsODc4Niw4ODAxLDg3NDcsODc1MCw4NzIxLDg3MzAsODg2OSw4NzM2LDg3MzUsODg5NSw4NzU3LDg3NDUsODc0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMTI0LDIxNzgyLDIzMDQzLDM4NDYzLDIxNjk2LDI0ODU5LDI1Mzg0LDIzMDMwLDM2ODk4LDMzOTA5LDMzNTY0LDMxMzEyLDI0NzQ2LDI1NTY5LDI4MTk3LDI2MDkzLDMzODk0LDMzNDQ2LDM5OTI1LDI2NzcxLDIyMzExLDI2MDE3LDI1MjAxLDIzNDUxLDIyOTkyLDM0NDI3LDM5MTU2LDMyMDk4LDMyMTkwLDM5ODIyLDI1MTEwLDMxOTAzLDM0OTk5LDIzNDMzLDI0MjQ1LDI1MzUzLDI2MjYzLDI2Njk2LDM4MzQzLDM4Nzk3LDI2NDQ3LDIwMTk3LDIwMjM0LDIwMzAxLDIwMzgxLDIwNTUzLDIyMjU4LDIyODM5LDIyOTk2LDIzMDQxLDIzNTYxLDI0Nzk5LDI0ODQ3LDI0OTQ0LDI2MTMxLDI2ODg1LDI4ODU4LDMwMDMxLDMwMDY0LDMxMjI3LDMyMTczLDMyMjM5LDMyOTYzLDMzODA2LDM0OTE1LDM1NTg2LDM2OTQ5LDM2OTg2LDIxMzA3LDIwMTE3LDIwMTMzLDIyNDk1LDMyOTQ2LDM3MDU3LDMwOTU5LDE5OTY4LDIyNzY5LDI4MzIyLDM2OTIwLDMxMjgyLDMzNTc2LDMzNDE5LDM5OTgzLDIwODAxLDIxMzYwLDIxNjkzLDIxNzI5LDIyMjQwLDIzMDM1LDI0MzQxLDM5MTU0LDI4MTM5LDMyOTk2LDM0MDkzLDM4NDk4LDM4NTEyLDM4NTYwLDM4OTA3LDIxNTE1LDIxNDkxLDIzNDMxLDI4ODc5LDMyNzAxLDM2ODAyLDM4NjMyLDIxMzU5LDQwMjg0LDMxNDE4LDE5OTg1LDMwODY3LDMzMjc2LDI4MTk4LDIyMDQwLDIxNzY0LDI3NDIxLDM0MDc0LDM5OTk1LDIzMDEzLDIxNDE3LDI4MDA2LDI5OTE2LDM4Mjg3LDIyMDgyLDIwMTEzLDM2OTM5LDM4NjQyLDMzNjE1LDM5MTgwLDIxNDczLDIxOTQyLDIzMzQ0LDI0NDMzLDI2MTQ0LDI2MzU1LDI2NjI4LDI3NzA0LDI3ODkxLDI3OTQ1LDI5Nzg3LDMwNDA4LDMxMzEwLDM4OTY0LDMzNTIxLDM0OTA3LDM1NDI0LDM3NjEzLDI4MDgyLDMwMTIzLDMwNDEwLDM5MzY1LDI0NzQyLDM1NTg1LDM2MjM0LDM4MzIyLDI3MDIyLDIxNDIxLDIwODcwLDIyMjkwLDIyNTc2LDIyODUyLDIzNDc2LDI0MzEwLDI0NjE2LDI1NTEzLDI1NTg4LDI3ODM5LDI4NDM2LDI4ODE0LDI4OTQ4LDI5MDE3LDI5MTQxLDI5NTAzLDMyMjU3LDMzMzk4LDMzNDg5LDM0MTk5LDM2OTYwLDM3NDY3LDQwMjE5LDIyNjMzLDI2MDQ0LDI3NzM4LDI5OTg5LDIwOTg1LDIyODMwLDIyODg1LDI0NDQ4LDI0NTQwLDI1Mjc2LDI2MTA2LDI3MTc4LDI3NDMxLDI3NTcyLDI5NTc5LDMyNzA1LDM1MTU4LDQwMjM2LDQwMjA2LDQwNjQ0LDIzNzEzLDI3Nzk4LDMzNjU5LDIwNzQwLDIzNjI3LDI1MDE0LDMzMjIyLDI2NzQyLDI5MjgxLDIwMDU3LDIwNDc0LDIxMzY4LDI0NjgxLDI4MjAxLDMxMzExLDM4ODk5LDE5OTc5LDIxMjcwLDIwMjA2LDIwMzA5LDIwMjg1LDIwMzg1LDIwMzM5LDIxMTUyLDIxNDg3LDIyMDI1LDIyNzk5LDIzMjMzLDIzNDc4LDIzNTIxLDMxMTg1LDI2MjQ3LDI2NTI0LDI2NTUwLDI3NDY4LDI3ODI3LDI4Nzc5LDI5NjM0LDMxMTE3LDMxMTY2LDMxMjkyLDMxNjIzLDMzNDU3LDMzNDk5LDMzNTQwLDMzNjU1LDMzNzc1LDMzNzQ3LDM0NjYyLDM1NTA2LDIyMDU3LDM2MDA4LDM2ODM4LDM2OTQyLDM4Njg2LDM0NDQyLDIwNDIwLDIzNzg0LDI1MTA1LDI5MjczLDMwMDExLDMzMjUzLDMzNDY5LDM0NTU4LDM2MDMyLDM4NTk3LDM5MTg3LDM5MzgxLDIwMTcxLDIwMjUwLDM1Mjk5LDIyMjM4LDIyNjAyLDIyNzMwLDI0MzE1LDI0NTU1LDI0NjE4LDI0NzI0LDI0Njc0LDI1MDQwLDI1MTA2LDI1Mjk2LDI1OTEzLDM5NzQ1LDI2MjE0LDI2ODAwLDI4MDIzLDI4Nzg0LDMwMDI4LDMwMzQyLDMyMTE3LDMzNDQ1LDM0ODA5LDM4MjgzLDM4NTQyLDM1OTk3LDIwOTc3LDIxMTgyLDIyODA2LDIxNjgzLDIzNDc1LDIzODMwLDI0OTM2LDI3MDEwLDI4MDc5LDMwODYxLDMzOTk1LDM0OTAzLDM1NDQyLDM3Nzk5LDM5NjA4LDI4MDEyLDM5MzM2LDM0NTIxLDIyNDM1LDI2NjIzLDM0NTEwLDM3MzkwLDIxMTIzLDIyMTUxLDIxNTA4LDI0Mjc1LDI1MzEzLDI1Nzg1LDI2Njg0LDI2NjgwLDI3NTc5LDI5NTU0LDMwOTA2LDMxMzM5LDM1MjI2LDM1MjgyLDM2MjAzLDM2NjExLDM3MTAxLDM4MzA3LDM4NTQ4LDM4NzYxLDIzMzk4LDIzNzMxLDI3MDA1LDM4OTg5LDM4OTkwLDI1NDk5LDMxNTIwLDI3MTc5LDI3MjYzLDI2ODA2LDM5OTQ5LDI4NTExLDIxMTA2LDIxOTE3LDI0Njg4LDI1MzI0LDI3OTYzLDI4MTY3LDI4MzY5LDMzODgzLDM1MDg4LDM2Njc2LDE5OTg4LDM5OTkzLDIxNDk0LDI2OTA3LDI3MTk0LDM4Nzg4LDI2NjY2LDIwODI4LDMxNDI3LDMzOTcwLDM3MzQwLDM3NzcyLDIyMTA3LDQwMjMyLDI2NjU4LDMzNTQxLDMzODQxLDMxOTA5LDIxMDAwLDMzNDc3LDI5OTI2LDIwMDk0LDIwMzU1LDIwODk2LDIzNTA2LDIxMDAyLDIxMjA4LDIxMjIzLDI0MDU5LDIxOTE0LDIyNTcwLDIzMDE0LDIzNDM2LDIzNDQ4LDIzNTE1LDI0MTc4LDI0MTg1LDI0NzM5LDI0ODYzLDI0OTMxLDI1MDIyLDI1NTYzLDI1OTU0LDI2NTc3LDI2NzA3LDI2ODc0LDI3NDU0LDI3NDc1LDI3NzM1LDI4NDUwLDI4NTY3LDI4NDg1LDI5ODcyLDI5OTc2LDMwNDM1LDMwNDc1LDMxNDg3LDMxNjQ5LDMxNzc3LDMyMjMzLDMyNTY2LDMyNzUyLDMyOTI1LDMzMzgyLDMzNjk0LDM1MjUxLDM1NTMyLDM2MDExLDM2OTk2LDM3OTY5LDM4MjkxLDM4Mjg5LDM4MzA2LDM4NTAxLDM4ODY3LDM5MjA4LDMzMzA0LDIwMDI0LDIxNTQ3LDIzNzM2LDI0MDEyLDI5NjA5LDMwMjg0LDMwNTI0LDIzNzIxLDMyNzQ3LDM2MTA3LDM4NTkzLDM4OTI5LDM4OTk2LDM5MDAwLDIwMjI1LDIwMjM4LDIxMzYxLDIxOTE2LDIyMTIwLDIyNTIyLDIyODU1LDIzMzA1LDIzNDkyLDIzNjk2LDI0MDc2LDI0MTkwLDI0NTI0LDI1NTgyLDI2NDI2LDI2MDcxLDI2MDgyLDI2Mzk5LDI2ODI3LDI2ODIwLDI3MjMxLDI0MTEyLDI3NTg5LDI3NjcxLDI3NzczLDMwMDc5LDMxMDQ4LDIzMzk1LDMxMjMyLDMyMDAwLDI0NTA5LDM1MjE1LDM1MzUyLDM2MDIwLDM2MjE1LDM2NTU2LDM2NjM3LDM5MTM4LDM5NDM4LDM5NzQwLDIwMDk2LDIwNjA1LDIwNzM2LDIyOTMxLDIzNDUyLDI1MTM1LDI1MjE2LDI1ODM2LDI3NDUwLDI5MzQ0LDMwMDk3LDMxMDQ3LDMyNjgxLDM0ODExLDM1NTE2LDM1Njk2LDI1NTE2LDMzNzM4LDM4ODE2LDIxNTEzLDIxNTA3LDIxOTMxLDI2NzA4LDI3MjI0LDM1NDQwLDMwNzU5LDI2NDg1LDQwNjUzLDIxMzY0LDIzNDU4LDMzMDUwLDM0Mzg0LDM2ODcwLDE5OTkyLDIwMDM3LDIwMTY3LDIwMjQxLDIxNDUwLDIxNTYwLDIzNDcwLDI0MzM5LDI0NjEzLDI1OTM3LDI2NDI5LDI3NzE0LDI3NzYyLDI3ODc1LDI4NzkyLDI5Njk5LDMxMzUwLDMxNDA2LDMxNDk2LDMyMDI2LDMxOTk4LDMyMTAyLDI2MDg3LDI5Mjc1LDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1MzEyLDI1MzY5LDI4MTkyLDM0Mzk0LDM1Mzc3LDM2MzE3LDM3NjI0LDI4NDE3LDMxMTQyLDM5NzcwLDIwMTM2LDIwMTM5LDIwMTQwLDIwMzc5LDIwMzg0LDIwNjg5LDIwODA3LDMxNDc4LDIwODQ5LDIwOTgyLDIxMzMyLDIxMjgxLDIxMzc1LDIxNDgzLDIxOTMyLDIyNjU5LDIzNzc3LDI0Mzc1LDI0Mzk0LDI0NjIzLDI0NjU2LDI0Njg1LDI1Mzc1LDI1OTQ1LDI3MjExLDI3ODQxLDI5Mzc4LDI5NDIxLDMwNzAzLDMzMDE2LDMzMDI5LDMzMjg4LDM0MTI2LDM3MTExLDM3ODU3LDM4OTExLDM5MjU1LDM5NTE0LDIwMjA4LDIwOTU3LDIzNTk3LDI2MjQxLDI2OTg5LDIzNjE2LDI2MzU0LDI2OTk3LDI5NTc3LDI2NzA0LDMxODczLDIwNjc3LDIxMjIwLDIyMzQzLDI0MDYyLDM3NjcwLDI2MDIwLDI3NDI3LDI3NDUzLDI5NzQ4LDMxMTA1LDMxMTY1LDMxNTYzLDMyMjAyLDMzNDY1LDMzNzQwLDM0OTQzLDM1MTY3LDM1NjQxLDM2ODE3LDM3MzI5LDIxNTM1LDM3NTA0LDIwMDYxLDIwNTM0LDIxNDc3LDIxMzA2LDI5Mzk5LDI5NTkwLDMwNjk3LDMzNTEwLDM2NTI3LDM5MzY2LDM5MzY4LDM5Mzc4LDIwODU1LDI0ODU4LDM0Mzk4LDIxOTM2LDMxMzU0LDIwNTk4LDIzNTA3LDM2OTM1LDM4NTMzLDIwMDE4LDI3MzU1LDM3MzUxLDIzNjMzLDIzNjI0LDI1NDk2LDMxMzkxLDI3Nzk1LDM4NzcyLDM2NzA1LDMxNDAyLDI5MDY2LDM4NTM2LDMxODc0LDI2NjQ3LDMyMzY4LDI2NzA1LDM3NzQwLDIxMjM0LDIxNTMxLDM0MjE5LDM1MzQ3LDMyNjc2LDM2NTU3LDM3MDg5LDIxMzUwLDM0OTUyLDMxMDQxLDIwNDE4LDIwNjcwLDIxMDA5LDIwODA0LDIxODQzLDIyMzE3LDI5Njc0LDIyNDExLDIyODY1LDI0NDE4LDI0NDUyLDI0NjkzLDI0OTUwLDI0OTM1LDI1MDAxLDI1NTIyLDI1NjU4LDI1OTY0LDI2MjIzLDI2NjkwLDI4MTc5LDMwMDU0LDMxMjkzLDMxOTk1LDMyMDc2LDMyMTUzLDMyMzMxLDMyNjE5LDMzNTUwLDMzNjEwLDM0NTA5LDM1MzM2LDM1NDI3LDM1Njg2LDM2NjA1LDM4OTM4LDQwMzM1LDMzNDY0LDM2ODE0LDM5OTEyLDIxMTI3LDI1MTE5LDI1NzMxLDI4NjA4LDM4NTUzLDI2Njg5LDIwNjI1LDI3NDI0LDI3NzcwLDI4NTAwLDMxMzQ4LDMyMDgwLDM0ODgwLDM1MzYzLDI2Mzc2LDIwMjE0LDIwNTM3LDIwNTE4LDIwNTgxLDIwODYwLDIxMDQ4LDIxMDkxLDIxOTI3LDIyMjg3LDIyNTMzLDIzMjQ0LDI0MzE0LDI1MDEwLDI1MDgwLDI1MzMxLDI1NDU4LDI2OTA4LDI3MTc3LDI5MzA5LDI5MzU2LDI5NDg2LDMwNzQwLDMwODMxLDMyMTIxLDMwNDc2LDMyOTM3LDM1MjExLDM1NjA5LDM2MDY2LDM2NTYyLDM2OTYzLDM3NzQ5LDM4NTIyLDM4OTk3LDM5NDQzLDQwNTY4LDIwODAzLDIxNDA3LDIxNDI3LDI0MTg3LDI0MzU4LDI4MTg3LDI4MzA0LDI5NTcyLDI5Njk0LDMyMDY3LDMzMzM1LDM1MzI4LDM1NTc4LDM4NDgwLDIwMDQ2LDIwNDkxLDIxNDc2LDIxNjI4LDIyMjY2LDIyOTkzLDIzMzk2LDI0MDQ5LDI0MjM1LDI0MzU5LDI1MTQ0LDI1OTI1LDI2NTQzLDI4MjQ2LDI5MzkyLDMxOTQ2LDM0OTk2LDMyOTI5LDMyOTkzLDMzNzc2LDM0MzgyLDM1NDYzLDM2MzI4LDM3NDMxLDM4NTk5LDM5MDE1LDQwNzIzLDIwMTE2LDIwMTE0LDIwMjM3LDIxMzIwLDIxNTc3LDIxNTY2LDIzMDg3LDI0NDYwLDI0NDgxLDI0NzM1LDI2NzkxLDI3Mjc4LDI5Nzg2LDMwODQ5LDM1NDg2LDM1NDkyLDM1NzAzLDM3MjY0LDIwMDYyLDM5ODgxLDIwMTMyLDIwMzQ4LDIwMzk5LDIwNTA1LDIwNTAyLDIwODA5LDIwODQ0LDIxMTUxLDIxMTc3LDIxMjQ2LDIxNDAyLDIxNDc1LDIxNTIxLDIxNTE4LDIxODk3LDIyMzUzLDIyNDM0LDIyOTA5LDIzMzgwLDIzMzg5LDIzNDM5LDI0MDM3LDI0MDM5LDI0MDU1LDI0MTg0LDI0MTk1LDI0MjE4LDI0MjQ3LDI0MzQ0LDI0NjU4LDI0OTA4LDI1MjM5LDI1MzA0LDI1NTExLDI1OTE1LDI2MTE0LDI2MTc5LDI2MzU2LDI2NDc3LDI2NjU3LDI2Nzc1LDI3MDgzLDI3NzQzLDI3OTQ2LDI4MDA5LDI4MjA3LDI4MzE3LDMwMDAyLDMwMzQzLDMwODI4LDMxMjk1LDMxOTY4LDMyMDA1LDMyMDI0LDMyMDk0LDMyMTc3LDMyNzg5LDMyNzcxLDMyOTQzLDMyOTQ1LDMzMTA4LDMzMTY3LDMzMzIyLDMzNjE4LDM0ODkyLDM0OTEzLDM1NjExLDM2MDAyLDM2MDkyLDM3MDY2LDM3MjM3LDM3NDg5LDMwNzgzLDM3NjI4LDM4MzA4LDM4NDc3LDM4OTE3LDM5MzIxLDM5NjQwLDQwMjUxLDIxMDgzLDIxMTYzLDIxNDk1LDIxNTEyLDIyNzQxLDI1MzM1LDI4NjQwLDM1OTQ2LDM2NzAzLDQwNjMzLDIwODExLDIxMDUxLDIxNTc4LDIyMjY5LDMxMjk2LDM3MjM5LDQwMjg4LDQwNjU4LDI5NTA4LDI4NDI1LDMzMTM2LDI5OTY5LDI0NTczLDI0Nzk0LDM5NTkyLDI5NDAzLDM2Nzk2LDI3NDkyLDM4OTE1LDIwMTcwLDIyMjU2LDIyMzcyLDIyNzE4LDIzMTMwLDI0NjgwLDI1MDMxLDI2MTI3LDI2MTE4LDI2NjgxLDI2ODAxLDI4MTUxLDMwMTY1LDMyMDU4LDMzMzkwLDM5NzQ2LDIwMTIzLDIwMzA0LDIxNDQ5LDIxNzY2LDIzOTE5LDI0MDM4LDI0MDQ2LDI2NjE5LDI3ODAxLDI5ODExLDMwNzIyLDM1NDA4LDM3NzgyLDM1MDM5LDIyMzUyLDI0MjMxLDI1Mzg3LDIwNjYxLDIwNjUyLDIwODc3LDI2MzY4LDIxNzA1LDIyNjIyLDIyOTcxLDIzNDcyLDI0NDI1LDI1MTY1LDI1NTA1LDI2Njg1LDI3NTA3LDI4MTY4LDI4Nzk3LDM3MzE5LDI5MzEyLDMwNzQxLDMwNzU4LDMxMDg1LDI1OTk4LDMyMDQ4LDMzNzU2LDM1MDA5LDM2NjE3LDM4NTU1LDIxMDkyLDIyMzEyLDI2NDQ4LDMyNjE4LDM2MDAxLDIwOTE2LDIyMzM4LDM4NDQyLDIyNTg2LDI3MDE4LDMyOTQ4LDIxNjgyLDIzODIyLDIyNTI0LDMwODY5LDQwNDQyLDIwMzE2LDIxMDY2LDIxNjQzLDI1NjYyLDI2MTUyLDI2Mzg4LDI2NjEzLDMxMzY0LDMxNTc0LDMyMDM0LDM3Njc5LDI2NzE2LDM5ODUzLDMxNTQ1LDIxMjczLDIwODc0LDIxMDQ3LDIzNTE5LDI1MzM0LDI1Nzc0LDI1ODMwLDI2NDEzLDI3NTc4LDM0MjE3LDM4NjA5LDMwMzUyLDM5ODk0LDI1NDIwLDM3NjM4LDM5ODUxLDMwMzk5LDI2MTk0LDE5OTc3LDIwNjMyLDIxNDQyLDIzNjY1LDI0ODA4LDI1NzQ2LDI1OTU1LDI2NzE5LDI5MTU4LDI5NjQyLDI5OTg3LDMxNjM5LDMyMzg2LDM0NDUzLDM1NzE1LDM2MDU5LDM3MjQwLDM5MTg0LDI2MDI4LDI2MjgzLDI3NTMxLDIwMTgxLDIwMTgwLDIwMjgyLDIwMzUxLDIxMDUwLDIxNDk2LDIxNDkwLDIxOTg3LDIyMjM1LDIyNzYzLDIyOTg3LDIyOTg1LDIzMDM5LDIzMzc2LDIzNjI5LDI0MDY2LDI0MTA3LDI0NTM1LDI0NjA1LDI1MzUxLDI1OTAzLDIzMzg4LDI2MDMxLDI2MDQ1LDI2MDg4LDI2NTI1LDI3NDkwLDI3NTE1LDI3NjYzLDI5NTA5LDMxMDQ5LDMxMTY5LDMxOTkyLDMyMDI1LDMyMDQzLDMyOTMwLDMzMDI2LDMzMjY3LDM1MjIyLDM1NDIyLDM1NDMzLDM1NDMwLDM1NDY4LDM1NTY2LDM2MDM5LDM2MDYwLDM4NjA0LDM5MTY0LDI3NTAzLDIwMTA3LDIwMjg0LDIwMzY1LDIwODE2LDIzMzgzLDIzNTQ2LDI0OTA0LDI1MzQ1LDI2MTc4LDI3NDI1LDI4MzYzLDI3ODM1LDI5MjQ2LDI5ODg1LDMwMTY0LDMwOTEzLDMxMDM0LDMyNzgwLDMyODE5LDMzMjU4LDMzOTQwLDM2NzY2LDI3NzI4LDQwNTc1LDI0MzM1LDM1NjcyLDQwMjM1LDMxNDgyLDM2NjAwLDIzNDM3LDM4NjM1LDE5OTcxLDIxNDg5LDIyNTE5LDIyODMzLDIzMjQxLDIzNDYwLDI0NzEzLDI4Mjg3LDI4NDIyLDMwMTQyLDM2MDc0LDIzNDU1LDM0MDQ4LDMxNzEyLDIwNTk0LDI2NjEyLDMzNDM3LDIzNjQ5LDM0MTIyLDMyMjg2LDMzMjk0LDIwODg5LDIzNTU2LDI1NDQ4LDM2MTk4LDI2MDEyLDI5MDM4LDMxMDM4LDMyMDIzLDMyNzczLDM1NjEzLDM2NTU0LDM2OTc0LDM0NTAzLDM3MDM0LDIwNTExLDIxMjQyLDIzNjEwLDI2NDUxLDI4Nzk2LDI5MjM3LDM3MTk2LDM3MzIwLDM3Njc1LDMzNTA5LDIzNDkwLDI0MzY5LDI0ODI1LDIwMDI3LDIxNDYyLDIzNDMyLDI1MTYzLDI2NDE3LDI3NTMwLDI5NDE3LDI5NjY0LDMxMjc4LDMzMTMxLDM2MjU5LDM3MjAyLDM5MzE4LDIwNzU0LDIxNDYzLDIxNjEwLDIzNTUxLDI1NDgwLDI3MTkzLDMyMTcyLDM4NjU2LDIyMjM0LDIxNDU0LDIxNjA4LDIzNDQ3LDIzNjAxLDI0MDMwLDIwNDYyLDI0ODMzLDI1MzQyLDI3OTU0LDMxMTY4LDMxMTc5LDMyMDY2LDMyMzMzLDMyNzIyLDMzMjYxLDMzMzExLDMzOTM2LDM0ODg2LDM1MTg2LDM1NzI4LDM2NDY4LDM2NjU1LDM2OTEzLDM3MTk1LDM3MjI4LDM4NTk4LDM3Mjc2LDIwMTYwLDIwMzAzLDIwODA1LDIxMzEzLDI0NDY3LDI1MTAyLDI2NTgwLDI3NzEzLDI4MTcxLDI5NTM5LDMyMjk0LDM3MzI1LDM3NTA3LDIxNDYwLDIyODA5LDIzNDg3LDI4MTEzLDMxMDY5LDMyMzAyLDMxODk5LDIyNjU0LDI5MDg3LDIwOTg2LDM0ODk5LDM2ODQ4LDIwNDI2LDIzODAzLDI2MTQ5LDMwNjM2LDMxNDU5LDMzMzA4LDM5NDIzLDIwOTM0LDI0NDkwLDI2MDkyLDI2OTkxLDI3NTI5LDI4MTQ3LDI4MzEwLDI4NTE2LDMwNDYyLDMyMDIwLDI0MDMzLDM2OTgxLDM3MjU1LDM4OTE4LDIwOTY2LDIxMDIxLDI1MTUyLDI2MjU3LDI2MzI5LDI4MTg2LDI0MjQ2LDMyMjEwLDMyNjI2LDI2MzYwLDM0MjIzLDM0Mjk1LDM1NTc2LDIxMTYxLDIxNDY1LDIyODk5LDI0MjA3LDI0NDY0LDI0NjYxLDM3NjA0LDM4NTAwLDIwNjYzLDIwNzY3LDIxMjEzLDIxMjgwLDIxMzE5LDIxNDg0LDIxNzM2LDIxODMwLDIxODA5LDIyMDM5LDIyODg4LDIyOTc0LDIzMTAwLDIzNDc3LDIzNTU4LDIzNTY3LDIzNTY5LDIzNTc4LDI0MTk2LDI0MjAyLDI0Mjg4LDI0NDMyLDI1MjE1LDI1MjIwLDI1MzA3LDI1NDg0LDI1NDYzLDI2MTE5LDI2MTI0LDI2MTU3LDI2MjMwLDI2NDk0LDI2Nzg2LDI3MTY3LDI3MTg5LDI3ODM2LDI4MDQwLDI4MTY5LDI4MjQ4LDI4OTg4LDI4OTY2LDI5MDMxLDMwMTUxLDMwNDY1LDMwODEzLDMwOTc3LDMxMDc3LDMxMjE2LDMxNDU2LDMxNTA1LDMxOTExLDMyMDU3LDMyOTE4LDMzNzUwLDMzOTMxLDM0MTIxLDM0OTA5LDM1MDU5LDM1MzU5LDM1Mzg4LDM1NDEyLDM1NDQzLDM1OTM3LDM2MDYyLDM3Mjg0LDM3NDc4LDM3NzU4LDM3OTEyLDM4NTU2LDM4ODA4LDE5OTc4LDE5OTc2LDE5OTk4LDIwMDU1LDIwODg3LDIxMTA0LDIyNDc4LDIyNTgwLDIyNzMyLDIzMzMwLDI0MTIwLDI0NzczLDI1ODU0LDI2NDY1LDI2NDU0LDI3OTcyLDI5MzY2LDMwMDY3LDMxMzMxLDMzOTc2LDM1Njk4LDM3MzA0LDM3NjY0LDIyMDY1LDIyNTE2LDM5MTY2LDI1MzI1LDI2ODkzLDI3NTQyLDI5MTY1LDMyMzQwLDMyODg3LDMzMzk0LDM1MzAyLDM5MTM1LDM0NjQ1LDM2Nzg1LDIzNjExLDIwMjgwLDIwNDQ5LDIwNDA1LDIxNzY3LDIzMDcyLDIzNTE3LDIzNTI5LDI0NTE1LDI0OTEwLDI1MzkxLDI2MDMyLDI2MTg3LDI2ODYyLDI3MDM1LDI4MDI0LDI4MTQ1LDMwMDAzLDMwMTM3LDMwNDk1LDMxMDcwLDMxMjA2LDMyMDUxLDMzMjUxLDMzNDU1LDM0MjE4LDM1MjQyLDM1Mzg2LDM2NTIzLDM2NzYzLDM2OTE0LDM3MzQxLDM4NjYzLDIwMTU0LDIwMTYxLDIwOTk1LDIyNjQ1LDIyNzY0LDIzNTYzLDI5OTc4LDIzNjEzLDMzMTAyLDM1MzM4LDM2ODA1LDM4NDk5LDM4NzY1LDMxNTI1LDM1NTM1LDM4OTIwLDM3MjE4LDIyMjU5LDIxNDE2LDM2ODg3LDIxNTYxLDIyNDAyLDI0MTAxLDI1NTEyLDI3NzAwLDI4ODEwLDMwNTYxLDMxODgzLDMyNzM2LDM0OTI4LDM2OTMwLDM3MjA0LDM3NjQ4LDM3NjU2LDM4NTQzLDI5NzkwLDM5NjIwLDIzODE1LDIzOTEzLDI1OTY4LDI2NTMwLDM2MjY0LDM4NjE5LDI1NDU0LDI2NDQxLDI2OTA1LDMzNzMzLDM4OTM1LDM4NTkyLDM1MDcwLDI4NTQ4LDI1NzIyLDIzNTQ0LDE5OTkwLDI4NzE2LDMwMDQ1LDI2MTU5LDIwOTMyLDIxMDQ2LDIxMjE4LDIyOTk1LDI0NDQ5LDI0NjE1LDI1MTA0LDI1OTE5LDI1OTcyLDI2MTQzLDI2MjI4LDI2ODY2LDI2NjQ2LDI3NDkxLDI4MTY1LDI5Mjk4LDI5OTgzLDMwNDI3LDMxOTM0LDMyODU0LDIyNzY4LDM1MDY5LDM1MTk5LDM1NDg4LDM1NDc1LDM1NTMxLDM2ODkzLDM3MjY2LDM4NzM4LDM4NzQ1LDI1OTkzLDMxMjQ2LDMzMDMwLDM4NTg3LDI0MTA5LDI0Nzk2LDI1MTE0LDI2MDIxLDI2MTMyLDI2NTEyLDMwNzA3LDMxMzA5LDMxODIxLDMyMzE4LDMzMDM0LDM2MDEyLDM2MTk2LDM2MzIxLDM2NDQ3LDMwODg5LDIwOTk5LDI1MzA1LDI1NTA5LDI1NjY2LDI1MjQwLDM1MzczLDMxMzYzLDMxNjgwLDM1NTAwLDM4NjM0LDMyMTE4LDMzMjkyLDM0NjMzLDIwMTg1LDIwODA4LDIxMzE1LDIxMzQ0LDIzNDU5LDIzNTU0LDIzNTc0LDI0MDI5LDI1MTI2LDI1MTU5LDI1Nzc2LDI2NjQzLDI2Njc2LDI3ODQ5LDI3OTczLDI3OTI3LDI2NTc5LDI4NTA4LDI5MDA2LDI5MDUzLDI2MDU5LDMxMzU5LDMxNjYxLDMyMjE4LDMyMzMwLDMyNjgwLDMzMTQ2LDMzMzA3LDMzMzM3LDM0MjE0LDM1NDM4LDM2MDQ2LDM2MzQxLDM2OTg0LDM2OTgzLDM3NTQ5LDM3NTIxLDM4Mjc1LDM5ODU0LDIxMDY5LDIxODkyLDI4NDcyLDI4OTgyLDIwODQwLDMxMTA5LDMyMzQxLDMzMjAzLDMxOTUwLDIyMDkyLDIyNjA5LDIzNzIwLDI1NTE0LDI2MzY2LDI2MzY1LDI2OTcwLDI5NDAxLDMwMDk1LDMwMDk0LDMwOTkwLDMxMDYyLDMxMTk5LDMxODk1LDMyMDMyLDMyMDY4LDM0MzExLDM1MzgwLDM4NDU5LDM2OTYxLDQwNzM2LDIwNzExLDIxMTA5LDIxNDUyLDIxNDc0LDIwNDg5LDIxOTMwLDIyNzY2LDIyODYzLDI5MjQ1LDIzNDM1LDIzNjUyLDIxMjc3LDI0ODAzLDI0ODE5LDI1NDM2LDI1NDc1LDI1NDA3LDI1NTMxLDI1ODA1LDI2MDg5LDI2MzYxLDI0MDM1LDI3MDg1LDI3MTMzLDI4NDM3LDI5MTU3LDIwMTA1LDMwMTg1LDMwNDU2LDMxMzc5LDMxOTY3LDMyMjA3LDMyMTU2LDMyODY1LDMzNjA5LDMzNjI0LDMzOTAwLDMzOTgwLDM0Mjk5LDM1MDEzLDM2MjA4LDM2ODY1LDM2OTczLDM3NzgzLDM4Njg0LDM5NDQyLDIwNjg3LDIyNjc5LDI0OTc0LDMzMjM1LDM0MTAxLDM2MTA0LDM2ODk2LDIwNDE5LDIwNTk2LDIxMDYzLDIxMzYzLDI0Njg3LDI1NDE3LDI2NDYzLDI4MjA0LDM2Mjc1LDM2ODk1LDIwNDM5LDIzNjQ2LDM2MDQyLDI2MDYzLDMyMTU0LDIxMzMwLDM0OTY2LDIwODU0LDI1NTM5LDIzMzg0LDIzNDAzLDIzNTYyLDI1NjEzLDI2NDQ5LDM2OTU2LDIwMTgyLDIyODEwLDIyODI2LDI3NzYwLDM1NDA5LDIxODIyLDIyNTQ5LDIyOTQ5LDI0ODE2LDI1MTcxLDI2NTYxLDMzMzMzLDI2OTY1LDM4NDY0LDM5MzY0LDM5NDY0LDIwMzA3LDIyNTM0LDIzNTUwLDMyNzg0LDIzNzI5LDI0MTExLDI0NDUzLDI0NjA4LDI0OTA3LDI1MTQwLDI2MzY3LDI3ODg4LDI4MzgyLDMyOTc0LDMzMTUxLDMzNDkyLDM0OTU1LDM2MDI0LDM2ODY0LDM2OTEwLDM4NTM4LDQwNjY3LDM5ODk5LDIwMTk1LDIxNDg4LDIyODIzLDMxNTMyLDM3MjYxLDM4OTg4LDQwNDQxLDI4MzgxLDI4NzExLDIxMzMxLDIxODI4LDIzNDI5LDI1MTc2LDI1MjQ2LDI1Mjk5LDI3ODEwLDI4NjU1LDI5NzMwLDM1MzUxLDM3OTQ0LDI4NjA5LDM1NTgyLDMzNTkyLDIwOTY3LDM0NTUyLDIxNDgyLDIxNDgxLDIwMjk0LDM2OTQ4LDM2Nzg0LDIyODkwLDMzMDczLDI0MDYxLDMxNDY2LDM2Nzk5LDI2ODQyLDM1ODk1LDI5NDMyLDQwMDA4LDI3MTk3LDM1NTA0LDIwMDI1LDIxMzM2LDIyMDIyLDIyMzc0LDI1Mjg1LDI1NTA2LDI2MDg2LDI3NDcwLDI4MTI5LDI4MjUxLDI4ODQ1LDMwNzAxLDMxNDcxLDMxNjU4LDMyMTg3LDMyODI5LDMyOTY2LDM0NTA3LDM1NDc3LDM3NzIzLDIyMjQzLDIyNzI3LDI0MzgyLDI2MDI5LDI2MjYyLDI3MjY0LDI3NTczLDMwMDA3LDM1NTI3LDIwNTE2LDMwNjkzLDIyMzIwLDI0MzQ3LDI0Njc3LDI2MjM0LDI3NzQ0LDMwMTk2LDMxMjU4LDMyNjIyLDMzMjY4LDM0NTg0LDM2OTMzLDM5MzQ3LDMxNjg5LDMwMDQ0LDMxNDgxLDMxNTY5LDMzOTg4LDM2ODgwLDMxMjA5LDMxMzc4LDMzNTkwLDIzMjY1LDMwNTI4LDIwMDEzLDIwMjEwLDIzNDQ5LDI0NTQ0LDI1Mjc3LDI2MTcyLDI2NjA5LDI3ODgwLDM0NDExLDM0OTM1LDM1Mzg3LDM3MTk4LDM3NjE5LDM5Mzc2LDI3MTU5LDI4NzEwLDI5NDgyLDMzNTExLDMzODc5LDM2MDE1LDE5OTY5LDIwODA2LDIwOTM5LDIxODk5LDIzNTQxLDI0MDg2LDI0MTE1LDI0MTkzLDI0MzQwLDI0MzczLDI0NDI3LDI0NTAwLDI1MDc0LDI1MzYxLDI2Mjc0LDI2Mzk3LDI4NTI2LDI5MjY2LDMwMDEwLDMwNTIyLDMyODg0LDMzMDgxLDMzMTQ0LDM0Njc4LDM1NTE5LDM1NTQ4LDM2MjI5LDM2MzM5LDM3NTMwLDM4MjYzLDM4OTE0LDQwMTY1LDIxMTg5LDI1NDMxLDMwNDUyLDI2Mzg5LDI3Nzg0LDI5NjQ1LDM2MDM1LDM3ODA2LDM4NTE1LDI3OTQxLDIyNjg0LDI2ODk0LDI3MDg0LDM2ODYxLDM3Nzg2LDMwMTcxLDM2ODkwLDIyNjE4LDI2NjI2LDI1NTI0LDI3MTMxLDIwMjkxLDI4NDYwLDI2NTg0LDM2Nzk1LDM0MDg2LDMyMTgwLDM3NzE2LDI2OTQzLDI4NTI4LDIyMzc4LDIyNzc1LDIzMzQwLDMyMDQ0LDI5MjI2LDIxNTE0LDM3MzQ3LDQwMzcyLDIwMTQxLDIwMzAyLDIwNTcyLDIwNTk3LDIxMDU5LDM1OTk4LDIxNTc2LDIyNTY0LDIzNDUwLDI0MDkzLDI0MjEzLDI0MjM3LDI0MzExLDI0MzUxLDI0NzE2LDI1MjY5LDI1NDAyLDI1NTUyLDI2Nzk5LDI3NzEyLDMwODU1LDMxMTE4LDMxMjQzLDMyMjI0LDMzMzUxLDM1MzMwLDM1NTU4LDM2NDIwLDM2ODgzLDM3MDQ4LDM3MTY1LDM3MzM2LDQwNzE4LDI3ODc3LDI1Njg4LDI1ODI2LDI1OTczLDI4NDA0LDMwMzQwLDMxNTE1LDM2OTY5LDM3ODQxLDI4MzQ2LDIxNzQ2LDI0NTA1LDI1NzY0LDM2Njg1LDM2ODQ1LDM3NDQ0LDIwODU2LDIyNjM1LDIyODI1LDIzNjM3LDI0MjE1LDI4MTU1LDMyMzk5LDI5OTgwLDM2MDI4LDM2NTc4LDM5MDAzLDI4ODU3LDIwMjUzLDI3NTgzLDI4NTkzLDMwMDAwLDM4NjUxLDIwODE0LDIxNTIwLDIyNTgxLDIyNjE1LDIyOTU2LDIzNjQ4LDI0NDY2LDI2MDA3LDI2NDYwLDI4MTkzLDMwMzMxLDMzNzU5LDM2MDc3LDM2ODg0LDM3MTE3LDM3NzA5LDMwNzU3LDMwNzc4LDIxMTYyLDI0MjMwLDIyMzAzLDIyOTAwLDI0NTk0LDIwNDk4LDIwODI2LDIwOTA4LDIwOTQxLDIwOTkyLDIxNzc2LDIyNjEyLDIyNjE2LDIyODcxLDIzNDQ1LDIzNzk4LDIzOTQ3LDI0NzY0LDI1MjM3LDI1NjQ1LDI2NDgxLDI2NjkxLDI2ODEyLDI2ODQ3LDMwNDIzLDI4MTIwLDI4MjcxLDI4MDU5LDI4NzgzLDI5MTI4LDI0NDAzLDMwMTY4LDMxMDk1LDMxNTYxLDMxNTcyLDMxNTcwLDMxOTU4LDMyMTEzLDIxMDQwLDMzODkxLDM0MTUzLDM0Mjc2LDM1MzQyLDM1NTg4LDM1OTEwLDM2MzY3LDM2ODY3LDM2ODc5LDM3OTEzLDM4NTE4LDM4OTU3LDM5NDcyLDM4MzYwLDIwNjg1LDIxMjA1LDIxNTE2LDIyNTMwLDIzNTY2LDI0OTk5LDI1NzU4LDI3OTM0LDMwNjQzLDMxNDYxLDMzMDEyLDMzNzk2LDM2OTQ3LDM3NTA5LDIzNzc2LDQwMTk5LDIxMzExLDI0NDcxLDI0NDk5LDI4MDYwLDI5MzA1LDMwNTYzLDMxMTY3LDMxNzE2LDI3NjAyLDI5NDIwLDM1NTAxLDI2NjI3LDI3MjMzLDIwOTg0LDMxMzYxLDI2OTMyLDIzNjI2LDQwMTgyLDMzNTE1LDIzNDkzLDM3MTkzLDI4NzAyLDIyMTM2LDIzNjYzLDI0Nzc1LDI1OTU4LDI3Nzg4LDM1OTMwLDM2OTI5LDM4OTMxLDIxNTg1LDI2MzExLDM3Mzg5LDIyODU2LDM3MDI3LDIwODY5LDIwMDQ1LDIwOTcwLDM0MjAxLDM1NTk4LDI4NzYwLDI1NDY2LDM3NzA3LDI2OTc4LDM5MzQ4LDMyMjYwLDMwMDcxLDIxMzM1LDI2OTc2LDM2NTc1LDM4NjI3LDI3NzQxLDIwMTA4LDIzNjEyLDI0MzM2LDM2ODQxLDIxMjUwLDM2MDQ5LDMyOTA1LDM0NDI1LDI0MzE5LDI2MDg1LDIwMDgzLDIwODM3LDIyOTE0LDIzNjE1LDM4ODk0LDIwMjE5LDIyOTIyLDI0NTI1LDM1NDY5LDI4NjQxLDMxMTUyLDMxMDc0LDIzNTI3LDMzOTA1LDI5NDgzLDI5MTA1LDI0MTgwLDI0NTY1LDI1NDY3LDI1NzU0LDI5MTIzLDMxODk2LDIwMDM1LDI0MzE2LDIwMDQzLDIyNDkyLDIyMTc4LDI0NzQ1LDI4NjExLDMyMDEzLDMzMDIxLDMzMDc1LDMzMjE1LDM2Nzg2LDM1MjIzLDM0NDY4LDI0MDUyLDI1MjI2LDI1NzczLDM1MjA3LDI2NDg3LDI3ODc0LDI3OTY2LDI5NzUwLDMwNzcyLDIzMTEwLDMyNjI5LDMzNDUzLDM5MzQwLDIwNDY3LDI0MjU5LDI1MzA5LDI1NDkwLDI1OTQzLDI2NDc5LDMwNDAzLDI5MjYwLDMyOTcyLDMyOTU0LDM2NjQ5LDM3MTk3LDIwNDkzLDIyNTIxLDIzMTg2LDI2NzU3LDI2OTk1LDI5MDI4LDI5NDM3LDM2MDIzLDIyNzcwLDM2MDY0LDM4NTA2LDM2ODg5LDM0Njg3LDMxMjA0LDMwNjk1LDMzODMzLDIwMjcxLDIxMDkzLDIxMzM4LDI1MjkzLDI2NTc1LDI3ODUwLDMwMzMzLDMxNjM2LDMxODkzLDMzMzM0LDM0MTgwLDM2ODQzLDI2MzMzLDI4NDQ4LDI5MTkwLDMyMjgzLDMzNzA3LDM5MzYxLDQwNjE0LDIwOTg5LDMxNjY1LDMwODM0LDMxNjcyLDMyOTAzLDMxNTYwLDI3MzY4LDI0MTYxLDMyOTA4LDMwMDMzLDMwMDQ4LDIwODQzLDM3NDc0LDI4MzAwLDMwMzMwLDM3MjcxLDM5NjU4LDIwMjQwLDMyNjI0LDI1MjQ0LDMxNTY3LDM4MzA5LDQwMTY5LDIyMTM4LDIyNjE3LDM0NTMyLDM4NTg4LDIwMjc2LDIxMDI4LDIxMzIyLDIxNDUzLDIxNDY3LDI0MDcwLDI1NjQ0LDI2MDAxLDI2NDk1LDI3NzEwLDI3NzI2LDI5MjU2LDI5MzU5LDI5Njc3LDMwMDM2LDMyMzIxLDMzMzI0LDM0MjgxLDM2MDA5LDMxNjg0LDM3MzE4LDI5MDMzLDM4OTMwLDM5MTUxLDI1NDA1LDI2MjE3LDMwMDU4LDMwNDM2LDMwOTI4LDM0MTE1LDM0NTQyLDIxMjkwLDIxMzI5LDIxNTQyLDIyOTE1LDI0MTk5LDI0NDQ0LDI0NzU0LDI1MTYxLDI1MjA5LDI1MjU5LDI2MDAwLDI3NjA0LDI3ODUyLDMwMTMwLDMwMzgyLDMwODY1LDMxMTkyLDMyMjAzLDMyNjMxLDMyOTMzLDM0OTg3LDM1NTEzLDM2MDI3LDM2OTkxLDM4NzUwLDM5MTMxLDI3MTQ3LDMxODAwLDIwNjMzLDIzNjE0LDI0NDk0LDI2NTAzLDI3NjA4LDI5NzQ5LDMwNDczLDMyNjU0LDQwNzYzLDI2NTcwLDMxMjU1LDIxMzA1LDMwMDkxLDM5NjYxLDI0NDIyLDMzMTgxLDMzNzc3LDMyOTIwLDI0MzgwLDI0NTE3LDMwMDUwLDMxNTU4LDM2OTI0LDI2NzI3LDIzMDE5LDIzMTk1LDMyMDE2LDMwMzM0LDM1NjI4LDIwNDY5LDI0NDI2LDI3MTYxLDI3NzAzLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1NDEzLDM1OTYxLDI0Mjg3LDI1NTUxLDMwMTQ5LDMxMTg2LDMzNDk1LDM3NjcyLDM3NjE4LDMzOTQ4LDM0NTQxLDM5OTgxLDIxNjk3LDI0NDI4LDI1OTk2LDI3OTk2LDI4NjkzLDM2MDA3LDM2MDUxLDM4OTcxLDI1OTM1LDI5OTQyLDE5OTgxLDIwMTg0LDIyNDk2LDIyODI3LDIzMTQyLDIzNTAwLDIwOTA0LDI0MDY3LDI0MjIwLDI0NTk4LDI1MjA2LDI1OTc1LDI2MDIzLDI2MjIyLDI4MDE0LDI5MjM4LDMxNTI2LDMzMTA0LDMzMTc4LDMzNDMzLDM1Njc2LDM2MDAwLDM2MDcwLDM2MjEyLDM4NDI4LDM4NDY4LDIwMzk4LDI1NzcxLDI3NDk0LDMzMzEwLDMzODg5LDM0MTU0LDM3MDk2LDIzNTUzLDI2OTYzLDM5MDgwLDMzOTE0LDM0MTM1LDIwMjM5LDIxMTAzLDI0NDg5LDI0MTMzLDI2MzgxLDMxMTE5LDMzMTQ1LDM1MDc5LDM1MjA2LDI4MTQ5LDI0MzQzLDI1MTczLDI3ODMyLDIwMTc1LDI5Mjg5LDM5ODI2LDIwOTk4LDIxNTYzLDIyMTMyLDIyNzA3LDI0OTk2LDI1MTk4LDI4OTU0LDIyODk0LDMxODgxLDMxOTY2LDMyMDI3LDM4NjQwLDI1OTkxLDMyODYyLDE5OTkzLDIwMzQxLDIwODUzLDIyNTkyLDI0MTYzLDI0MTc5LDI0MzMwLDI2NTY0LDIwMDA2LDM0MTA5LDM4MjgxLDM4NDkxLDMxODU5LDM4OTEzLDIwNzMxLDIyNzIxLDMwMjk0LDMwODg3LDIxMDI5LDMwNjI5LDM0MDY1LDMxNjIyLDIwNTU5LDIyNzkzLDI5MjU1LDMxNjg3LDMyMjMyLDM2Nzk0LDM2ODIwLDM2OTQxLDIwNDE1LDIxMTkzLDIzMDgxLDI0MzIxLDM4ODI5LDIwNDQ1LDMzMzAzLDM3NjEwLDIyMjc1LDI1NDI5LDI3NDk3LDI5OTk1LDM1MDM2LDM2NjI4LDMxMjk4LDIxMjE1LDIyNjc1LDI0OTE3LDI1MDk4LDI2Mjg2LDI3NTk3LDMxODA3LDMzNzY5LDIwNTE1LDIwNDcyLDIxMjUzLDIxNTc0LDIyNTc3LDIyODU3LDIzNDUzLDIzNzkyLDIzNzkxLDIzODQ5LDI0MjE0LDI1MjY1LDI1NDQ3LDI1OTE4LDI2MDQxLDI2Mzc5LDI3ODYxLDI3ODczLDI4OTIxLDMwNzcwLDMyMjk5LDMyOTkwLDMzNDU5LDMzODA0LDM0MDI4LDM0NTYyLDM1MDkwLDM1MzcwLDM1OTE0LDM3MDMwLDM3NTg2LDM5MTY1LDQwMTc5LDQwMzAwLDIwMDQ3LDIwMTI5LDIwNjIxLDIxMDc4LDIyMzQ2LDIyOTUyLDI0MTI1LDI0NTM2LDI0NTM3LDI1MTUxLDI2MjkyLDI2Mzk1LDI2NTc2LDI2ODM0LDIwODgyLDMyMDMzLDMyOTM4LDMzMTkyLDM1NTg0LDM1OTgwLDM2MDMxLDM3NTAyLDM4NDUwLDIxNTM2LDM4OTU2LDIxMjcxLDIwNjkzLDIxMzQwLDIyNjk2LDI1Nzc4LDI2NDIwLDI5Mjg3LDMwNTY2LDMxMzAyLDM3MzUwLDIxMTg3LDI3ODA5LDI3NTI2LDIyNTI4LDI0MTQwLDIyODY4LDI2NDEyLDMyNzYzLDIwOTYxLDMwNDA2LDI1NzA1LDMwOTUyLDM5NzY0LDQwNjM1LDIyNDc1LDIyOTY5LDI2MTUxLDI2NTIyLDI3NTk4LDIxNzM3LDI3MDk3LDI0MTQ5LDMzMTgwLDI2NTE3LDM5ODUwLDI2NjIyLDQwMDE4LDI2NzE3LDIwMTM0LDIwNDUxLDIxNDQ4LDI1MjczLDI2NDExLDI3ODE5LDM2ODA0LDIwMzk3LDMyMzY1LDQwNjM5LDE5OTc1LDI0OTMwLDI4Mjg4LDI4NDU5LDM0MDY3LDIxNjE5LDI2NDEwLDM5NzQ5LDI0MDUxLDMxNjM3LDIzNzI0LDIzNDk0LDM0NTg4LDI4MjM0LDM0MDAxLDMxMjUyLDMzMDMyLDIyOTM3LDMxODg1LDI3NjY1LDMwNDk2LDIxMjA5LDIyODE4LDI4OTYxLDI5Mjc5LDMwNjgzLDM4Njk1LDQwMjg5LDI2ODkxLDIzMTY3LDIzMDY0LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDMwNDMxLDM2ODU1LDM3NTI4LDQwMTgwLDIzMDE4LDI5Mjc3LDI4MzU3LDIwODEzLDI2ODI1LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjM0LDI1NzIwLDI3MTY5LDMzNTM4LDIyOTE2LDIzMzkxLDI3NjExLDI5NDY3LDMwNDUwLDMyMTc4LDMyNzkxLDMzOTQ1LDIwNzg2LDI2NDA4LDQwNjY1LDMwNDQ2LDI2NDY2LDIxMjQ3LDM5MTczLDIzNTg4LDI1MTQ3LDMxODcwLDM2MDE2LDIxODM5LDI0NzU4LDMyMDExLDM4MjcyLDIxMjQ5LDIwMDYzLDIwOTE4LDIyODEyLDI5MjQyLDMyODIyLDM3MzI2LDI0MzU3LDMwNjkwLDIxMzgwLDI0NDQxLDMyMDA0LDM0MjIwLDM1Mzc5LDM2NDkzLDM4NzQyLDI2NjExLDM0MjIyLDM3OTcxLDI0ODQxLDI0ODQwLDI3ODMzLDMwMjkwLDM1NTY1LDM2NjY0LDIxODA3LDIwMzA1LDIwNzc4LDIxMTkxLDIxNDUxLDIzNDYxLDI0MTg5LDI0NzM2LDI0OTYyLDI1NTU4LDI2Mzc3LDI2NTg2LDI4MjYzLDI4MDQ0LDI5NDk0LDI5NDk1LDMwMDAxLDMxMDU2LDM1MDI5LDM1NDgwLDM2OTM4LDM3MDA5LDM3MTA5LDM4NTk2LDM0NzAxLDIyODA1LDIwMTA0LDIwMzEzLDE5OTgyLDM1NDY1LDM2NjcxLDM4OTI4LDIwNjUzLDI0MTg4LDIyOTM0LDIzNDgxLDI0MjQ4LDI1NTYyLDI1NTk0LDI1NzkzLDI2MzMyLDI2OTU0LDI3MDk2LDI3OTE1LDI4MzQyLDI5MDc2LDI5OTkyLDMxNDA3LDMyNjUwLDMyNzY4LDMzODY1LDMzOTkzLDM1MjAxLDM1NjE3LDM2MzYyLDM2OTY1LDM4NTI1LDM5MTc4LDI0OTU4LDI1MjMzLDI3NDQyLDI3Nzc5LDI4MDIwLDMyNzE2LDMyNzY0LDI4MDk2LDMyNjQ1LDM0NzQ2LDM1MDY0LDI2NDY5LDMzNzEzLDM4OTcyLDM4NjQ3LDI3OTMxLDMyMDk3LDMzODUzLDM3MjI2LDIwMDgxLDIxMzY1LDIzODg4LDI3Mzk2LDI4NjUxLDM0MjUzLDM0MzQ5LDM1MjM5LDIxMDMzLDIxNTE5LDIzNjUzLDI2NDQ2LDI2NzkyLDI5NzAyLDI5ODI3LDMwMTc4LDM1MDIzLDM1MDQxLDM3MzI0LDM4NjI2LDM4NTIwLDI0NDU5LDI5NTc1LDMxNDM1LDMzODcwLDI1NTA0LDMwMDUzLDIxMTI5LDI3OTY5LDI4MzE2LDI5NzA1LDMwMDQxLDMwODI3LDMxODkwLDM4NTM0LDMxNDUyLDQwODQ1LDIwNDA2LDI0OTQyLDI2MDUzLDM0Mzk2LDIwMTAyLDIwMTQyLDIwNjk4LDIwMDAxLDIwOTQwLDIzNTM0LDI2MDA5LDI2NzUzLDI4MDkyLDI5NDcxLDMwMjc0LDMwNjM3LDMxMjYwLDMxOTc1LDMzMzkxLDM1NTM4LDM2OTg4LDM3MzI3LDM4NTE3LDM4OTM2LDIxMTQ3LDMyMjA5LDIwNTIzLDIxNDAwLDI2NTE5LDI4MTA3LDI5MTM2LDI5NzQ3LDMzMjU2LDM2NjUwLDM4NTYzLDQwMDIzLDQwNjA3LDI5NzkyLDIyNTkzLDI4MDU3LDMyMDQ3LDM5MDA2LDIwMTk2LDIwMjc4LDIwMzYzLDIwOTE5LDIxMTY5LDIzOTk0LDI0NjA0LDI5NjE4LDMxMDM2LDMzNDkxLDM3NDI4LDM4NTgzLDM4NjQ2LDM4NjY2LDQwNTk5LDQwODAyLDI2Mjc4LDI3NTA4LDIxMDE1LDIxMTU1LDI4ODcyLDM1MDEwLDI0MjY1LDI0NjUxLDI0OTc2LDI4NDUxLDI5MDAxLDMxODA2LDMyMjQ0LDMyODc5LDM0MDMwLDM2ODk5LDM3Njc2LDIxNTcwLDM5NzkxLDI3MzQ3LDI4ODA5LDM2MDM0LDM2MzM1LDM4NzA2LDIxMTcyLDIzMTA1LDI0MjY2LDI0MzI0LDI2MzkxLDI3MDA0LDI3MDI4LDI4MDEwLDI4NDMxLDI5MjgyLDI5NDM2LDMxNzI1LDMyNzY5LDMyODk0LDM0NjM1LDM3MDcwLDIwODQ1LDQwNTk1LDMxMTA4LDMyOTA3LDM3NjgyLDM1NTQyLDIwNTI1LDIxNjQ0LDM1NDQxLDI3NDk4LDM2MDM2LDMzMDMxLDI0Nzg1LDI2NTI4LDQwNDM0LDIwMTIxLDIwMTIwLDM5OTUyLDM1NDM1LDM0MjQxLDM0MTUyLDI2ODgwLDI4Mjg2LDMwODcxLDMzMTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQzMzIsMTk5ODQsMTk5ODksMjAwMTAsMjAwMTcsMjAwMjIsMjAwMjgsMjAwMzEsMjAwMzQsMjAwNTQsMjAwNTYsMjAwOTgsMjAxMDEsMzU5NDcsMjAxMDYsMzMyOTgsMjQzMzMsMjAxMTAsMjAxMjYsMjAxMjcsMjAxMjgsMjAxMzAsMjAxNDQsMjAxNDcsMjAxNTAsMjAxNzQsMjAxNzMsMjAxNjQsMjAxNjYsMjAxNjIsMjAxODMsMjAxOTAsMjAyMDUsMjAxOTEsMjAyMTUsMjAyMzMsMjAzMTQsMjAyNzIsMjAzMTUsMjAzMTcsMjAzMTEsMjAyOTUsMjAzNDIsMjAzNjAsMjAzNjcsMjAzNzYsMjAzNDcsMjAzMjksMjAzMzYsMjAzNjksMjAzMzUsMjAzNTgsMjAzNzQsMjA3NjAsMjA0MzYsMjA0NDcsMjA0MzAsMjA0NDAsMjA0NDMsMjA0MzMsMjA0NDIsMjA0MzIsMjA0NTIsMjA0NTMsMjA1MDYsMjA1MjAsMjA1MDAsMjA1MjIsMjA1MTcsMjA0ODUsMjAyNTIsMjA0NzAsMjA1MTMsMjA1MjEsMjA1MjQsMjA0NzgsMjA0NjMsMjA0OTcsMjA0ODYsMjA1NDcsMjA1NTEsMjYzNzEsMjA1NjUsMjA1NjAsMjA1NTIsMjA1NzAsMjA1NjYsMjA1ODgsMjA2MDAsMjA2MDgsMjA2MzQsMjA2MTMsMjA2NjAsMjA2NTgsMjA2ODEsMjA2ODIsMjA2NTksMjA2NzQsMjA2OTQsMjA3MDIsMjA3MDksMjA3MTcsMjA3MDcsMjA3MTgsMjA3MjksMjA3MjUsMjA3NDUsMjA3MzcsMjA3MzgsMjA3NTgsMjA3NTcsMjA3NTYsMjA3NjIsMjA3NjksMjA3OTQsMjA3OTEsMjA3OTYsMjA3OTUsMjA3OTksMjA4MDAsMjA4MTgsMjA4MTIsMjA4MjAsMjA4MzQsMzE0ODAsMjA4NDEsMjA4NDIsMjA4NDYsMjA4NjQsMjA4NjYsMjIyMzIsMjA4NzYsMjA4NzMsMjA4NzksMjA4ODEsMjA4ODMsMjA4ODUsMjA4ODYsMjA5MDAsMjA5MDIsMjA4OTgsMjA5MDUsMjA5MDYsMjA5MDcsMjA5MTUsMjA5MTMsMjA5MTQsMjA5MTIsMjA5MTcsMjA5MjUsMjA5MzMsMjA5MzcsMjA5NTUsMjA5NjAsMzQzODksMjA5NjksMjA5NzMsMjA5NzYsMjA5ODEsMjA5OTAsMjA5OTYsMjEwMDMsMjEwMTIsMjEwMDYsMjEwMzEsMjEwMzQsMjEwMzgsMjEwNDMsMjEwNDksMjEwNzEsMjEwNjAsMjEwNjcsMjEwNjgsMjEwODYsMjEwNzYsMjEwOTgsMjExMDgsMjEwOTcsMjExMDcsMjExMTksMjExMTcsMjExMzMsMjExNDAsMjExMzgsMjExMDUsMjExMjgsMjExMzcsMzY3NzYsMzY3NzUsMjExNjQsMjExNjUsMjExODAsMjExNzMsMjExODUsMjExOTcsMjEyMDcsMjEyMTQsMjEyMTksMjEyMjIsMzkxNDksMjEyMTYsMjEyMzUsMjEyMzcsMjEyNDAsMjEyNDEsMjEyNTQsMjEyNTYsMzAwMDgsMjEyNjEsMjEyNjQsMjEyNjMsMjEyNjksMjEyNzQsMjEyODMsMjEyOTUsMjEyOTcsMjEyOTksMjEzMDQsMjEzMTIsMjEzMTgsMjEzMTcsMTk5OTEsMjEzMjEsMjEzMjUsMjA5NTAsMjEzNDIsMjEzNTMsMjEzNTgsMjI4MDgsMjEzNzEsMjEzNjcsMjEzNzgsMjEzOTgsMjE0MDgsMjE0MTQsMjE0MTMsMjE0MjIsMjE0MjQsMjE0MzAsMjE0NDMsMzE3NjIsMzg2MTcsMjE0NzEsMjYzNjQsMjkxNjYsMjE0ODYsMjE0ODAsMjE0ODUsMjE0OTgsMjE1MDUsMjE1NjUsMjE1NjgsMjE1NDgsMjE1NDksMjE1NjQsMjE1NTAsMjE1NTgsMjE1NDUsMjE1MzMsMjE1ODIsMjE2NDcsMjE2MjEsMjE2NDYsMjE1OTksMjE2MTcsMjE2MjMsMjE2MTYsMjE2NTAsMjE2MjcsMjE2MzIsMjE2MjIsMjE2MzYsMjE2NDgsMjE2MzgsMjE3MDMsMjE2NjYsMjE2ODgsMjE2NjksMjE2NzYsMjE3MDAsMjE3MDQsMjE2NzIsMjE2NzUsMjE2OTgsMjE2NjgsMjE2OTQsMjE2OTIsMjE3MjAsMjE3MzMsMjE3MzQsMjE3NzUsMjE3ODAsMjE3NTcsMjE3NDIsMjE3NDEsMjE3NTQsMjE3MzAsMjE4MTcsMjE4MjQsMjE4NTksMjE4MzYsMjE4MDYsMjE4NTIsMjE4MjksMjE4NDYsMjE4NDcsMjE4MTYsMjE4MTEsMjE4NTMsMjE5MTMsMjE4ODgsMjE2NzksMjE4OTgsMjE5MTksMjE4ODMsMjE4ODYsMjE5MTIsMjE5MTgsMjE5MzQsMjE4ODQsMjE4OTEsMjE5MjksMjE4OTUsMjE5MjgsMjE5NzgsMjE5NTcsMjE5ODMsMjE5NTYsMjE5ODAsMjE5ODgsMjE5NzIsMjIwMzYsMjIwMDcsMjIwMzgsMjIwMTQsMjIwMTMsMjIwNDMsMjIwMDksMjIwOTQsMjIwOTYsMjkxNTEsMjIwNjgsMjIwNzAsMjIwNjYsMjIwNzIsMjIxMjMsMjIxMTYsMjIwNjMsMjIxMjQsMjIxMjIsMjIxNTAsMjIxNDQsMjIxNTQsMjIxNzYsMjIxNjQsMjIxNTksMjIxODEsMjIxOTAsMjIxOTgsMjIxOTYsMjIyMTAsMjIyMDQsMjIyMDksMjIyMTEsMjIyMDgsMjIyMTYsMjIyMjIsMjIyMjUsMjIyMjcsMjIyMzEsMjIyNTQsMjIyNjUsMjIyNzIsMjIyNzEsMjIyNzYsMjIyODEsMjIyODAsMjIyODMsMjIyODUsMjIyOTEsMjIyOTYsMjIyOTQsMjE5NTksMjIzMDAsMjIzMTAsMjIzMjcsMjIzMjgsMjIzNTAsMjIzMzEsMjIzMzYsMjIzNTEsMjIzNzcsMjI0NjQsMjI0MDgsMjIzNjksMjIzOTksMjI0MDksMjI0MTksMjI0MzIsMjI0NTEsMjI0MzYsMjI0NDIsMjI0NDgsMjI0NjcsMjI0NzAsMjI0ODQsMjI0ODIsMjI0ODMsMjI1MzgsMjI0ODYsMjI0OTksMjI1MzksMjI1NTMsMjI1NTcsMjI2NDIsMjI1NjEsMjI2MjYsMjI2MDMsMjI2NDAsMjc1ODQsMjI2MTAsMjI1ODksMjI2NDksMjI2NjEsMjI3MTMsMjI2ODcsMjI2OTksMjI3MTQsMjI3NTAsMjI3MTUsMjI3MTIsMjI3MDIsMjI3MjUsMjI3MzksMjI3MzcsMjI3NDMsMjI3NDUsMjI3NDQsMjI3NTcsMjI3NDgsMjI3NTYsMjI3NTEsMjI3NjcsMjI3NzgsMjI3NzcsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODYsMjI3OTQsMjI4MDAsMjI4MTEsMjY3OTAsMjI4MjEsMjI4MjgsMjI4MjksMjI4MzQsMjI4NDAsMjI4NDYsMzE0NDIsMjI4NjksMjI4NjQsMjI4NjIsMjI4NzQsMjI4NzIsMjI4ODIsMjI4ODAsMjI4ODcsMjI4OTIsMjI4ODksMjI5MDQsMjI5MTMsMjI5NDEsMjAzMTgsMjAzOTUsMjI5NDcsMjI5NjIsMjI5ODIsMjMwMTYsMjMwMDQsMjI5MjUsMjMwMDEsMjMwMDIsMjMwNzcsMjMwNzEsMjMwNTcsMjMwNjgsMjMwNDksMjMwNjYsMjMxMDQsMjMxNDgsMjMxMTMsMjMwOTMsMjMwOTQsMjMxMzgsMjMxNDYsMjMxOTQsMjMyMjgsMjMyMzAsMjMyNDMsMjMyMzQsMjMyMjksMjMyNjcsMjMyNTUsMjMyNzAsMjMyNzMsMjMyNTQsMjMyOTAsMjMyOTEsMjMzMDgsMjMzMDcsMjMzMTgsMjMzNDYsMjMyNDgsMjMzMzgsMjMzNTAsMjMzNTgsMjMzNjMsMjMzNjUsMjMzNjAsMjMzNzcsMjMzODEsMjMzODYsMjMzODcsMjMzOTcsMjM0MDEsMjM0MDgsMjM0MTEsMjM0MTMsMjM0MTYsMjU5OTIsMjM0MTgsMjM0MjQsMjM0MjcsMjM0NjIsMjM0ODAsMjM0OTEsMjM0OTUsMjM0OTcsMjM1MDgsMjM1MDQsMjM1MjQsMjM1MjYsMjM1MjIsMjM1MTgsMjM1MjUsMjM1MzEsMjM1MzYsMjM1NDIsMjM1MzksMjM1NTcsMjM1NTksMjM1NjAsMjM1NjUsMjM1NzEsMjM1ODQsMjM1ODYsMjM1OTIsMjM2MDgsMjM2MDksMjM2MTcsMjM2MjIsMjM2MzAsMjM2MzUsMjM2MzIsMjM2MzEsMjM0MDksMjM2NjAsMjM2NjIsMjAwNjYsMjM2NzAsMjM2NzMsMjM2OTIsMjM2OTcsMjM3MDAsMjI5MzksMjM3MjMsMjM3MzksMjM3MzQsMjM3NDAsMjM3MzUsMjM3NDksMjM3NDIsMjM3NTEsMjM3NjksMjM3ODUsMjM4MDUsMjM4MDIsMjM3ODksMjM5NDgsMjM3ODYsMjM4MTksMjM4MjksMjM4MzEsMjM5MDAsMjM4MzksMjM4MzUsMjM4MjUsMjM4MjgsMjM4NDIsMjM4MzQsMjM4MzMsMjM4MzIsMjM4ODQsMjM4OTAsMjM4ODYsMjM4ODMsMjM5MTYsMjM5MjMsMjM5MjYsMjM5NDMsMjM5NDAsMjM5MzgsMjM5NzAsMjM5NjUsMjM5ODAsMjM5ODIsMjM5OTcsMjM5NTIsMjM5OTEsMjM5OTYsMjQwMDksMjQwMTMsMjQwMTksMjQwMTgsMjQwMjIsMjQwMjcsMjQwNDMsMjQwNTAsMjQwNTMsMjQwNzUsMjQwOTAsMjQwODksMjQwODEsMjQwOTEsMjQxMTgsMjQxMTksMjQxMzIsMjQxMzEsMjQxMjgsMjQxNDIsMjQxNTEsMjQxNDgsMjQxNTksMjQxNjIsMjQxNjQsMjQxMzUsMjQxODEsMjQxODIsMjQxODYsNDA2MzYsMjQxOTEsMjQyMjQsMjQyNTcsMjQyNTgsMjQyNjQsMjQyNzIsMjQyNzEsMjQyNzgsMjQyOTEsMjQyODUsMjQyODIsMjQyODMsMjQyOTAsMjQyODksMjQyOTYsMjQyOTcsMjQzMDAsMjQzMDUsMjQzMDcsMjQzMDQsMjQzMDgsMjQzMTIsMjQzMTgsMjQzMjMsMjQzMjksMjQ0MTMsMjQ0MTIsMjQzMzEsMjQzMzcsMjQzNDIsMjQzNjEsMjQzNjUsMjQzNzYsMjQzODUsMjQzOTIsMjQzOTYsMjQzOTgsMjQzNjcsMjQ0MDEsMjQ0MDYsMjQ0MDcsMjQ0MDksMjQ0MTcsMjQ0MjksMjQ0MzUsMjQ0MzksMjQ0NTEsMjQ0NTAsMjQ0NDcsMjQ0NTgsMjQ0NTYsMjQ0NjUsMjQ0NTUsMjQ0NzgsMjQ0NzMsMjQ0NzIsMjQ0ODAsMjQ0ODgsMjQ0OTMsMjQ1MDgsMjQ1MzQsMjQ1NzEsMjQ1NDgsMjQ1NjgsMjQ1NjEsMjQ1NDEsMjQ3NTUsMjQ1NzUsMjQ2MDksMjQ2NzIsMjQ2MDEsMjQ1OTIsMjQ2MTcsMjQ1OTAsMjQ2MjUsMjQ2MDMsMjQ1OTcsMjQ2MTksMjQ2MTQsMjQ1OTEsMjQ2MzQsMjQ2NjYsMjQ2NDEsMjQ2ODIsMjQ2OTUsMjQ2NzEsMjQ2NTAsMjQ2NDYsMjQ2NTMsMjQ2NzUsMjQ2NDMsMjQ2NzYsMjQ2NDIsMjQ2ODQsMjQ2ODMsMjQ2NjUsMjQ3MDUsMjQ3MTcsMjQ4MDcsMjQ3MDcsMjQ3MzAsMjQ3MDgsMjQ3MzEsMjQ3MjYsMjQ3MjcsMjQ3MjIsMjQ3NDMsMjQ3MTUsMjQ4MDEsMjQ3NjAsMjQ4MDAsMjQ3ODcsMjQ3NTYsMjQ1NjAsMjQ3NjUsMjQ3NzQsMjQ3NTcsMjQ3OTIsMjQ5MDksMjQ4NTMsMjQ4MzgsMjQ4MjIsMjQ4MjMsMjQ4MzIsMjQ4MjAsMjQ4MjYsMjQ4MzUsMjQ4NjUsMjQ4MjcsMjQ4MTcsMjQ4NDUsMjQ4NDYsMjQ5MDMsMjQ4OTQsMjQ4NzIsMjQ4NzEsMjQ5MDYsMjQ4OTUsMjQ4OTIsMjQ4NzYsMjQ4ODQsMjQ4OTMsMjQ4OTgsMjQ5MDAsMjQ5NDcsMjQ5NTEsMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MzksMjQ5NDgsMjQ5NDMsMjQ5MzMsMjQ5NDUsMjQ5MjcsMjQ5MjUsMjQ5MTUsMjQ5NDksMjQ5ODUsMjQ5ODIsMjQ5NjcsMjUwMDQsMjQ5ODAsMjQ5ODYsMjQ5NzAsMjQ5NzcsMjUwMDMsMjUwMDYsMjUwMzYsMjUwMzQsMjUwMzMsMjUwNzksMjUwMzIsMjUwMjcsMjUwMzAsMjUwMTgsMjUwMzUsMzI2MzMsMjUwMzcsMjUwNjIsMjUwNTksMjUwNzgsMjUwODIsMjUwNzYsMjUwODcsMjUwODUsMjUwODQsMjUwODYsMjUwODgsMjUwOTYsMjUwOTcsMjUxMDEsMjUxMDAsMjUxMDgsMjUxMTUsMjUxMTgsMjUxMjEsMjUxMzAsMjUxMzQsMjUxMzYsMjUxMzgsMjUxMzksMjUxNTMsMjUxNjYsMjUxODIsMjUxODcsMjUxNzksMjUxODQsMjUxOTIsMjUyMTIsMjUyMTgsMjUyMjUsMjUyMTQsMjUyMzQsMjUyMzUsMjUyMzgsMjUzMDAsMjUyMTksMjUyMzYsMjUzMDMsMjUyOTcsMjUyNzUsMjUyOTUsMjUzNDMsMjUyODYsMjU4MTIsMjUyODgsMjUzMDgsMjUyOTIsMjUyOTAsMjUyODIsMjUyODcsMjUyNDMsMjUyODksMjUzNTYsMjUzMjYsMjUzMjksMjUzODMsMjUzNDYsMjUzNTIsMjUzMjcsMjUzMzMsMjU0MjQsMjU0MDYsMjU0MjEsMjU2MjgsMjU0MjMsMjU0OTQsMjU0ODYsMjU0NzIsMjU1MTUsMjU0NjIsMjU1MDcsMjU0ODcsMjU0ODEsMjU1MDMsMjU1MjUsMjU0NTEsMjU0NDksMjU1MzQsMjU1NzcsMjU1MzYsMjU1NDIsMjU1NzEsMjU1NDUsMjU1NTQsMjU1OTAsMjU1NDAsMjU2MjIsMjU2NTIsMjU2MDYsMjU2MTksMjU2MzgsMjU2NTQsMjU4ODUsMjU2MjMsMjU2NDAsMjU2MTUsMjU3MDMsMjU3MTEsMjU3MTgsMjU2NzgsMjU4OTgsMjU3NDksMjU3NDcsMjU3NjUsMjU3NjksMjU3MzYsMjU3ODgsMjU4MTgsMjU4MTAsMjU3OTcsMjU3OTksMjU3ODcsMjU4MTYsMjU3OTQsMjU4NDEsMjU4MzEsMzMyODksMjU4MjQsMjU4MjUsMjUyNjAsMjU4MjcsMjU4MzksMjU5MDAsMjU4NDYsMjU4NDQsMjU4NDIsMjU4NTAsMjU4NTYsMjU4NTMsMjU4ODAsMjU4ODQsMjU4NjEsMjU4OTIsMjU4OTEsMjU4OTksMjU5MDgsMjU5MDksMjU5MTEsMjU5MTAsMjU5MTIsMzAwMjcsMjU5MjgsMjU5NDIsMjU5NDEsMjU5MzMsMjU5NDQsMjU5NTAsMjU5NDksMjU5NzAsMjU5NzYsMjU5ODYsMjU5ODcsMzU3MjIsMjYwMTEsMjYwMTUsMjYwMjcsMjYwMzksMjYwNTEsMjYwNTQsMjYwNDksMjYwNTIsMjYwNjAsMjYwNjYsMjYwNzUsMjYwNzMsMjYwODAsMjYwODEsMjYwOTcsMjY0ODIsMjYxMjIsMjYxMTUsMjYxMDcsMjY0ODMsMjYxNjUsMjYxNjYsMjYxNjQsMjYxNDAsMjYxOTEsMjYxODAsMjYxODUsMjYxNzcsMjYyMDYsMjYyMDUsMjYyMTIsMjYyMTUsMjYyMTYsMjYyMDcsMjYyMTAsMjYyMjQsMjYyNDMsMjYyNDgsMjYyNTQsMjYyNDksMjYyNDQsMjYyNjQsMjYyNjksMjYzMDUsMjYyOTcsMjYzMTMsMjYzMDIsMjYzMDAsMjYzMDgsMjYyOTYsMjYzMjYsMjYzMzAsMjYzMzYsMjYxNzUsMjYzNDIsMjYzNDUsMjYzNTIsMjYzNTcsMjYzNTksMjYzODMsMjYzOTAsMjYzOTgsMjY0MDYsMjY0MDcsMzg3MTIsMjY0MTQsMjY0MzEsMjY0MjIsMjY0MzMsMjY0MjQsMjY0MjMsMjY0MzgsMjY0NjIsMjY0NjQsMjY0NTcsMjY0NjcsMjY0NjgsMjY1MDUsMjY0ODAsMjY1MzcsMjY0OTIsMjY0NzQsMjY1MDgsMjY1MDcsMjY1MzQsMjY1MjksMjY1MDEsMjY1NTEsMjY2MDcsMjY1NDgsMjY2MDQsMjY1NDcsMjY2MDEsMjY1NTIsMjY1OTYsMjY1OTAsMjY1ODksMjY1OTQsMjY2MDYsMjY1NTMsMjY1NzQsMjY1NjYsMjY1OTksMjcyOTIsMjY2NTQsMjY2OTQsMjY2NjUsMjY2ODgsMjY3MDEsMjY2NzQsMjY3MDIsMjY4MDMsMjY2NjcsMjY3MTMsMjY3MjMsMjY3NDMsMjY3NTEsMjY3ODMsMjY3NjcsMjY3OTcsMjY3NzIsMjY3ODEsMjY3NzksMjY3NTUsMjczMTAsMjY4MDksMjY3NDAsMjY4MDUsMjY3ODQsMjY4MTAsMjY4OTUsMjY3NjUsMjY3NTAsMjY4ODEsMjY4MjYsMjY4ODgsMjY4NDAsMjY5MTQsMjY5MTgsMjY4NDksMjY4OTIsMjY4MjksMjY4MzYsMjY4NTUsMjY4MzcsMjY5MzQsMjY4OTgsMjY4ODQsMjY4MzksMjY4NTEsMjY5MTcsMjY4NzMsMjY4NDgsMjY4NjMsMjY5MjAsMjY5MjIsMjY5MDYsMjY5MTUsMjY5MTMsMjY4MjIsMjcwMDEsMjY5OTksMjY5NzIsMjcwMDAsMjY5ODcsMjY5NjQsMjcwMDYsMjY5OTAsMjY5MzcsMjY5OTYsMjY5NDEsMjY5NjksMjY5MjgsMjY5NzcsMjY5NzQsMjY5NzMsMjcwMDksMjY5ODYsMjcwNTgsMjcwNTQsMjcwODgsMjcwNzEsMjcwNzMsMjcwOTEsMjcwNzAsMjcwODYsMjM1MjgsMjcwODIsMjcxMDEsMjcwNjcsMjcwNzUsMjcwNDcsMjcxODIsMjcwMjUsMjcwNDAsMjcwMzYsMjcwMjksMjcwNjAsMjcxMDIsMjcxMTIsMjcxMzgsMjcxNjMsMjcxMzUsMjc0MDIsMjcxMjksMjcxMjIsMjcxMTEsMjcxNDEsMjcwNTcsMjcxNjYsMjcxMTcsMjcxNTYsMjcxMTUsMjcxNDYsMjcxNTQsMjczMjksMjcxNzEsMjcxNTUsMjcyMDQsMjcxNDgsMjcyNTAsMjcxOTAsMjcyNTYsMjcyMDcsMjcyMzQsMjcyMjUsMjcyMzgsMjcyMDgsMjcxOTIsMjcxNzAsMjcyODAsMjcyNzcsMjcyOTYsMjcyNjgsMjcyOTgsMjcyOTksMjcyODcsMzQzMjcsMjczMjMsMjczMzEsMjczMzAsMjczMjAsMjczMTUsMjczMDgsMjczNTgsMjczNDUsMjczNTksMjczMDYsMjczNTQsMjczNzAsMjczODcsMjczOTcsMzQzMjYsMjczODYsMjc0MTAsMjc0MTQsMzk3MjksMjc0MjMsMjc0NDgsMjc0NDcsMzA0MjgsMjc0NDksMzkxNTAsMjc0NjMsMjc0NTksMjc0NjUsMjc0NzIsMjc0ODEsMjc0NzYsMjc0ODMsMjc0ODcsMjc0ODksMjc1MTIsMjc1MTMsMjc1MTksMjc1MjAsMjc1MjQsMjc1MjMsMjc1MzMsMjc1NDQsMjc1NDEsMjc1NTAsMjc1NTYsMjc1NjIsMjc1NjMsMjc1NjcsMjc1NzAsMjc1NjksMjc1NzEsMjc1NzUsMjc1ODAsMjc1OTAsMjc1OTUsMjc2MDMsMjc2MTUsMjc2MjgsMjc2MjcsMjc2MzUsMjc2MzEsNDA2MzgsMjc2NTYsMjc2NjcsMjc2NjgsMjc2NzUsMjc2ODQsMjc2ODMsMjc3NDIsMjc3MzMsMjc3NDYsMjc3NTQsMjc3NzgsMjc3ODksMjc4MDIsMjc3NzcsMjc4MDMsMjc3NzQsMjc3NTIsMjc3NjMsMjc3OTQsMjc3OTIsMjc4NDQsMjc4ODksMjc4NTksMjc4MzcsMjc4NjMsMjc4NDUsMjc4NjksMjc4MjIsMjc4MjUsMjc4MzgsMjc4MzQsMjc4NjcsMjc4ODcsMjc4NjUsMjc4ODIsMjc5MzUsMzQ4OTMsMjc5NTgsMjc5NDcsMjc5NjUsMjc5NjAsMjc5MjksMjc5NTcsMjc5NTUsMjc5MjIsMjc5MTYsMjgwMDMsMjgwNTEsMjgwMDQsMjc5OTQsMjgwMjUsMjc5OTMsMjgwNDYsMjgwNTMsMjg2NDQsMjgwMzcsMjgxNTMsMjgxODEsMjgxNzAsMjgwODUsMjgxMDMsMjgxMzQsMjgwODgsMjgxMDIsMjgxNDAsMjgxMjYsMjgxMDgsMjgxMzYsMjgxMTQsMjgxMDEsMjgxNTQsMjgxMjEsMjgxMzIsMjgxMTcsMjgxMzgsMjgxNDIsMjgyMDUsMjgyNzAsMjgyMDYsMjgxODUsMjgyNzQsMjgyNTUsMjgyMjIsMjgxOTUsMjgyNjcsMjgyMDMsMjgyNzgsMjgyMzcsMjgxOTEsMjgyMjcsMjgyMTgsMjgyMzgsMjgxOTYsMjg0MTUsMjgxODksMjgyMTYsMjgyOTAsMjgzMzAsMjgzMTIsMjgzNjEsMjgzNDMsMjgzNzEsMjgzNDksMjgzMzUsMjgzNTYsMjgzMzgsMjgzNzIsMjgzNzMsMjgzMDMsMjgzMjUsMjgzNTQsMjgzMTksMjg0ODEsMjg0MzMsMjg3NDgsMjgzOTYsMjg0MDgsMjg0MTQsMjg0NzksMjg0MDIsMjg0NjUsMjgzOTksMjg0NjYsMjgzNjQsMjg0NzgsMjg0MzUsMjg0MDcsMjg1NTAsMjg1MzgsMjg1MzYsMjg1NDUsMjg1NDQsMjg1MjcsMjg1MDcsMjg2NTksMjg1MjUsMjg1NDYsMjg1NDAsMjg1MDQsMjg1NTgsMjg1NjEsMjg2MTAsMjg1MTgsMjg1OTUsMjg1NzksMjg1NzcsMjg1ODAsMjg2MDEsMjg2MTQsMjg1ODYsMjg2MzksMjg2MjksMjg2NTIsMjg2MjgsMjg2MzIsMjg2NTcsMjg2NTQsMjg2MzUsMjg2ODEsMjg2ODMsMjg2NjYsMjg2ODksMjg2NzMsMjg2ODcsMjg2NzAsMjg2OTksMjg2OTgsMjg1MzIsMjg3MDEsMjg2OTYsMjg3MDMsMjg3MjAsMjg3MzQsMjg3MjIsMjg3NTMsMjg3NzEsMjg4MjUsMjg4MTgsMjg4NDcsMjg5MTMsMjg4NDQsMjg4NTYsMjg4NTEsMjg4NDYsMjg4OTUsMjg4NzUsMjg4OTMsMjg4ODksMjg5MzcsMjg5MjUsMjg5NTYsMjg5NTMsMjkwMjksMjkwMTMsMjkwNjQsMjkwMzAsMjkwMjYsMjkwMDQsMjkwMTQsMjkwMzYsMjkwNzEsMjkxNzksMjkwNjAsMjkwNzcsMjkwOTYsMjkxMDAsMjkxNDMsMjkxMTMsMjkxMTgsMjkxMzgsMjkxMjksMjkxNDAsMjkxMzQsMjkxNTIsMjkxNjQsMjkxNTksMjkxNzMsMjkxODAsMjkxNzcsMjkxODMsMjkxOTcsMjkyMDAsMjkyMTEsMjkyMjQsMjkyMjksMjkyMjgsMjkyMzIsMjkyMzQsMjkyNDMsMjkyNDQsMjkyNDcsMjkyNDgsMjkyNTQsMjkyNTksMjkyNzIsMjkzMDAsMjkzMTAsMjkzMTQsMjkzMTMsMjkzMTksMjkzMzAsMjkzMzQsMjkzNDYsMjkzNTEsMjkzNjksMjkzNjIsMjkzNzksMjkzODIsMjkzODAsMjkzOTAsMjkzOTQsMjk0MTAsMjk0MDgsMjk0MDksMjk0MzMsMjk0MzEsMjA0OTUsMjk0NjMsMjk0NTAsMjk0NjgsMjk0NjIsMjk0NjksMjk0OTIsMjk0ODcsMjk0ODEsMjk0NzcsMjk1MDIsMjk1MTgsMjk1MTksNDA2NjQsMjk1MjcsMjk1NDYsMjk1NDQsMjk1NTIsMjk1NjAsMjk1NTcsMjk1NjMsMjk1NjIsMjk2NDAsMjk2MTksMjk2NDYsMjk2MjcsMjk2MzIsMjk2NjksMjk2NzgsMjk2NjIsMjk4NTgsMjk3MDEsMjk4MDcsMjk3MzMsMjk2ODgsMjk3NDYsMjk3NTQsMjk3ODEsMjk3NTksMjk3OTEsMjk3ODUsMjk3NjEsMjk3ODgsMjk4MDEsMjk4MDgsMjk3OTUsMjk4MDIsMjk4MTQsMjk4MjIsMjk4MzUsMjk4NTQsMjk4NjMsMjk4OTgsMjk5MDMsMjk5MDgsMjk2ODEsMjk5MjAsMjk5MjMsMjk5MjcsMjk5MjksMjk5MzQsMjk5MzgsMjk5MzYsMjk5MzcsMjk5NDQsMjk5NDMsMjk5NTYsMjk5NTUsMjk5NTcsMjk5NjQsMjk5NjYsMjk5NjUsMjk5NzMsMjk5NzEsMjk5ODIsMjk5OTAsMjk5OTYsMzAwMTIsMzAwMjAsMzAwMjksMzAwMjYsMzAwMjUsMzAwNDMsMzAwMjIsMzAwNDIsMzAwNTcsMzAwNTIsMzAwNTUsMzAwNTksMzAwNjEsMzAwNzIsMzAwNzAsMzAwODYsMzAwODcsMzAwNjgsMzAwOTAsMzAwODksMzAwODIsMzAxMDAsMzAxMDYsMzAxMDksMzAxMTcsMzAxMTUsMzAxNDYsMzAxMzEsMzAxNDcsMzAxMzMsMzAxNDEsMzAxMzYsMzAxNDAsMzAxMjksMzAxNTcsMzAxNTQsMzAxNjIsMzAxNjksMzAxNzksMzAxNzQsMzAyMDYsMzAyMDcsMzAyMDQsMzAyMDksMzAxOTIsMzAyMDIsMzAxOTQsMzAxOTUsMzAyMTksMzAyMjEsMzAyMTcsMzAyMzksMzAyNDcsMzAyNDAsMzAyNDEsMzAyNDIsMzAyNDQsMzAyNjAsMzAyNTYsMzAyNjcsMzAyNzksMzAyODAsMzAyNzgsMzAzMDAsMzAyOTYsMzAzMDUsMzAzMDYsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTEsMzAzMTYsMzAzMjAsMzAzMjIsMzAzMjYsMzAzMjgsMzAzMzIsMzAzMzYsMzAzMzksMzAzNDQsMzAzNDcsMzAzNTAsMzAzNTgsMzAzNTUsMzAzNjEsMzAzNjIsMzAzODQsMzAzODgsMzAzOTIsMzAzOTMsMzAzOTQsMzA0MDIsMzA0MTMsMzA0MjIsMzA0MTgsMzA0MzAsMzA0MzMsMzA0MzcsMzA0MzksMzA0NDIsMzQzNTEsMzA0NTksMzA0NzIsMzA0NzEsMzA0NjgsMzA1MDUsMzA1MDAsMzA0OTQsMzA1MDEsMzA1MDIsMzA0OTEsMzA1MTksMzA1MjAsMzA1MzUsMzA1NTQsMzA1NjgsMzA1NzEsMzA1NTUsMzA1NjUsMzA1OTEsMzA1OTAsMzA1ODUsMzA2MDYsMzA2MDMsMzA2MDksMzA2MjQsMzA2MjIsMzA2NDAsMzA2NDYsMzA2NDksMzA2NTUsMzA2NTIsMzA2NTMsMzA2NTEsMzA2NjMsMzA2NjksMzA2NzksMzA2ODIsMzA2ODQsMzA2OTEsMzA3MDIsMzA3MTYsMzA3MzIsMzA3MzgsMzEwMTQsMzA3NTIsMzEwMTgsMzA3ODksMzA4NjIsMzA4MzYsMzA4NTQsMzA4NDQsMzA4NzQsMzA4NjAsMzA4ODMsMzA5MDEsMzA4OTAsMzA4OTUsMzA5MjksMzA5MTgsMzA5MjMsMzA5MzIsMzA5MTAsMzA5MDgsMzA5MTcsMzA5MjIsMzA5NTYsMzA5NTEsMzA5MzgsMzA5NzMsMzA5NjQsMzA5ODMsMzA5OTQsMzA5OTMsMzEwMDEsMzEwMjAsMzEwMTksMzEwNDAsMzEwNzIsMzEwNjMsMzEwNzEsMzEwNjYsMzEwNjEsMzEwNTksMzEwOTgsMzExMDMsMzExMTQsMzExMzMsMzExNDMsNDA3NzksMzExNDYsMzExNTAsMzExNTUsMzExNjEsMzExNjIsMzExNzcsMzExODksMzEyMDcsMzEyMTIsMzEyMDEsMzEyMDMsMzEyNDAsMzEyNDUsMzEyNTYsMzEyNTcsMzEyNjQsMzEyNjMsMzExMDQsMzEyODEsMzEyOTEsMzEyOTQsMzEyODcsMzEyOTksMzEzMTksMzEzMDUsMzEzMjksMzEzMzAsMzEzMzcsNDA4NjEsMzEzNDQsMzEzNTMsMzEzNTcsMzEzNjgsMzEzODMsMzEzODEsMzEzODQsMzEzODIsMzE0MDEsMzE0MzIsMzE0MDgsMzE0MTQsMzE0MjksMzE0MjgsMzE0MjMsMzY5OTUsMzE0MzEsMzE0MzQsMzE0MzcsMzE0MzksMzE0NDUsMzE0NDMsMzE0NDksMzE0NTAsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjIsMzE0NjksMzE0NzIsMzE0OTAsMzE1MDMsMzE0OTgsMzE0OTQsMzE1MzksMzE1MTIsMzE1MTMsMzE1MTgsMzE1NDEsMzE1MjgsMzE1NDIsMzE1NjgsMzE2MTAsMzE0OTIsMzE1NjUsMzE0OTksMzE1NjQsMzE1NTcsMzE2MDUsMzE1ODksMzE2MDQsMzE1OTEsMzE2MDAsMzE2MDEsMzE1OTYsMzE1OTgsMzE2NDUsMzE2NDAsMzE2NDcsMzE2MjksMzE2NDQsMzE2NDIsMzE2MjcsMzE2MzQsMzE2MzEsMzE1ODEsMzE2NDEsMzE2OTEsMzE2ODEsMzE2OTIsMzE2OTUsMzE2NjgsMzE2ODYsMzE3MDksMzE3MjEsMzE3NjEsMzE3NjQsMzE3MTgsMzE3MTcsMzE4NDAsMzE3NDQsMzE3NTEsMzE3NjMsMzE3MzEsMzE3MzUsMzE3NjcsMzE3NTcsMzE3MzQsMzE3NzksMzE3ODMsMzE3ODYsMzE3NzUsMzE3OTksMzE3ODcsMzE4MDUsMzE4MjAsMzE4MTEsMzE4MjgsMzE4MjMsMzE4MDgsMzE4MjQsMzE4MzIsMzE4MzksMzE4NDQsMzE4MzAsMzE4NDUsMzE4NTIsMzE4NjEsMzE4NzUsMzE4ODgsMzE5MDgsMzE5MTcsMzE5MDYsMzE5MTUsMzE5MDUsMzE5MTIsMzE5MjMsMzE5MjIsMzE5MjEsMzE5MTgsMzE5MjksMzE5MzMsMzE5MzYsMzE5NDEsMzE5MzgsMzE5NjAsMzE5NTQsMzE5NjQsMzE5NzAsMzk3MzksMzE5ODMsMzE5ODYsMzE5ODgsMzE5OTAsMzE5OTQsMzIwMDYsMzIwMDIsMzIwMjgsMzIwMjEsMzIwMTAsMzIwNjksMzIwNzUsMzIwNDYsMzIwNTAsMzIwNjMsMzIwNTMsMzIwNzAsMzIxMTUsMzIwODYsMzIwNzgsMzIxMTQsMzIxMDQsMzIxMTAsMzIwNzksMzIwOTksMzIxNDcsMzIxMzcsMzIwOTEsMzIxNDMsMzIxMjUsMzIxNTUsMzIxODYsMzIxNzQsMzIxNjMsMzIxODEsMzIxOTksMzIxODksMzIxNzEsMzIzMTcsMzIxNjIsMzIxNzUsMzIyMjAsMzIxODQsMzIxNTksMzIxNzYsMzIyMTYsMzIyMjEsMzIyMjgsMzIyMjIsMzIyNTEsMzIyNDIsMzIyMjUsMzIyNjEsMzIyNjYsMzIyOTEsMzIyODksMzIyNzQsMzIzMDUsMzIyODcsMzIyNjUsMzIyNjcsMzIyOTAsMzIzMjYsMzIzNTgsMzIzMTUsMzIzMDksMzIzMTMsMzIzMjMsMzIzMTEsMzIzMDYsMzIzMTQsMzIzNTksMzIzNDksMzIzNDIsMzIzNTAsMzIzNDUsMzIzNDYsMzIzNzcsMzIzNjIsMzIzNjEsMzIzODAsMzIzNzksMzIzODcsMzIyMTMsMzIzODEsMzY3ODIsMzIzODMsMzIzOTIsMzIzOTMsMzIzOTYsMzI0MDIsMzI0MDAsMzI0MDMsMzI0MDQsMzI0MDYsMzIzOTgsMzI0MTEsMzI0MTIsMzI1NjgsMzI1NzAsMzI1ODEsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTIsMzI1OTMsMzI1OTcsMzI1OTYsMzI2MDAsMzI2MDcsMzI2MDgsMzI2MTYsMzI2MTcsMzI2MTUsMzI2MzIsMzI2NDIsMzI2NDYsMzI2NDMsMzI2NDgsMzI2NDcsMzI2NTIsMzI2NjAsMzI2NzAsMzI2NjksMzI2NjYsMzI2NzUsMzI2ODcsMzI2OTAsMzI2OTcsMzI2ODYsMzI2OTQsMzI2OTYsMzU2OTcsMzI3MDksMzI3MTAsMzI3MTQsMzI3MjUsMzI3MjQsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTUsMzI3NjEsMzkxMzIsMzI3NzQsMzI3NzIsMzI3NzksMzI3ODYsMzI3OTIsMzI3OTMsMzI3OTYsMzI4MDEsMzI4MDgsMzI4MzEsMzI4MjcsMzI4NDIsMzI4MzgsMzI4NTAsMzI4NTYsMzI4NTgsMzI4NjMsMzI4NjYsMzI4NzIsMzI4ODMsMzI4ODIsMzI4ODAsMzI4ODYsMzI4ODksMzI4OTMsMzI4OTUsMzI5MDAsMzI5MDIsMzI5MDEsMzI5MjMsMzI5MTUsMzI5MjIsMzI5NDEsMjA4ODAsMzI5NDAsMzI5ODcsMzI5OTcsMzI5ODUsMzI5ODksMzI5NjQsMzI5ODYsMzI5ODIsMzMwMzMsMzMwMDcsMzMwMDksMzMwNTEsMzMwNjUsMzMwNTksMzMwNzEsMzMwOTksMzg1MzksMzMwOTQsMzMwODYsMzMxMDcsMzMxMDUsMzMwMjAsMzMxMzcsMzMxMzQsMzMxMjUsMzMxMjYsMzMxNDAsMzMxNTUsMzMxNjAsMzMxNjIsMzMxNTIsMzMxNTQsMzMxODQsMzMxNzMsMzMxODgsMzMxODcsMzMxMTksMzMxNzEsMzMxOTMsMzMyMDAsMzMyMDUsMzMyMTQsMzMyMDgsMzMyMTMsMzMyMTYsMzMyMTgsMzMyMTAsMzMyMjUsMzMyMjksMzMyMzMsMzMyNDEsMzMyNDAsMzMyMjQsMzMyNDIsMzMyNDcsMzMyNDgsMzMyNTUsMzMyNzQsMzMyNzUsMzMyNzgsMzMyODEsMzMyODIsMzMyODUsMzMyODcsMzMyOTAsMzMyOTMsMzMyOTYsMzMzMDIsMzMzMjEsMzMzMjMsMzMzMzYsMzMzMzEsMzMzNDQsMzMzNjksMzMzNjgsMzMzNzMsMzMzNzAsMzMzNzUsMzMzODAsMzMzNzgsMzMzODQsMzMzODYsMzMzODcsMzMzMjYsMzMzOTMsMzMzOTksMzM0MDAsMzM0MDYsMzM0MjEsMzM0MjYsMzM0NTEsMzM0MzksMzM0NjcsMzM0NTIsMzM1MDUsMzM1MDcsMzM1MDMsMzM0OTAsMzM1MjQsMzM1MjMsMzM1MzAsMzM2ODMsMzM1MzksMzM1MzEsMzM1MjksMzM1MDIsMzM1NDIsMzM1MDAsMzM1NDUsMzM0OTcsMzM1ODksMzM1ODgsMzM1NTgsMzM1ODYsMzM1ODUsMzM2MDAsMzM1OTMsMzM2MTYsMzM2MDUsMzM1ODMsMzM1NzksMzM1NTksMzM1NjAsMzM2NjksMzM2OTAsMzM3MDYsMzM2OTUsMzM2OTgsMzM2ODYsMzM1NzEsMzM2NzgsMzM2NzEsMzM2NzQsMzM2NjAsMzM3MTcsMzM2NTEsMzM2NTMsMzM2OTYsMzM2NzMsMzM3MDQsMzM3ODAsMzM4MTEsMzM3NzEsMzM3NDIsMzM3ODksMzM3OTUsMzM3NTIsMzM4MDMsMzM3MjksMzM3ODMsMzM3OTksMzM3NjAsMzM3NzgsMzM4MDUsMzM4MjYsMzM4MjQsMzM3MjUsMzM4NDgsMzQwNTQsMzM3ODcsMzM5MDEsMzM4MzQsMzM4NTIsMzQxMzgsMzM5MjQsMzM5MTEsMzM4OTksMzM5NjUsMzM5MDIsMzM5MjIsMzM4OTcsMzM4NjIsMzM4MzYsMzM5MDMsMzM5MTMsMzM4NDUsMzM5OTQsMzM4OTAsMzM5NzcsMzM5ODMsMzM5NTEsMzQwMDksMzM5OTcsMzM5NzksMzQwMTAsMzQwMDAsMzM5ODUsMzM5OTAsMzQwMDYsMzM5NTMsMzQwODEsMzQwNDcsMzQwMzYsMzQwNzEsMzQwNzIsMzQwOTIsMzQwNzksMzQwNjksMzQwNjgsMzQwNDQsMzQxMTIsMzQxNDcsMzQxMzYsMzQxMjAsMzQxMTMsMzQzMDYsMzQxMjMsMzQxMzMsMzQxNzYsMzQyMTIsMzQxODQsMzQxOTMsMzQxODYsMzQyMTYsMzQxNTcsMzQxOTYsMzQyMDMsMzQyODIsMzQxODMsMzQyMDQsMzQxNjcsMzQxNzQsMzQxOTIsMzQyNDksMzQyMzQsMzQyNTUsMzQyMzMsMzQyNTYsMzQyNjEsMzQyNjksMzQyNzcsMzQyNjgsMzQyOTcsMzQzMTQsMzQzMjMsMzQzMTUsMzQzMDIsMzQyOTgsMzQzMTAsMzQzMzgsMzQzMzAsMzQzNTIsMzQzNjcsMzQzODEsMjAwNTMsMzQzODgsMzQzOTksMzQ0MDcsMzQ0MTcsMzQ0NTEsMzQ0NjcsMzQ0NzMsMzQ0NzQsMzQ0NDMsMzQ0NDQsMzQ0ODYsMzQ0NzksMzQ1MDAsMzQ1MDIsMzQ0ODAsMzQ1MDUsMzQ4NTEsMzQ0NzUsMzQ1MTYsMzQ1MjYsMzQ1MzcsMzQ1NDAsMzQ1MjcsMzQ1MjMsMzQ1NDMsMzQ1NzgsMzQ1NjYsMzQ1NjgsMzQ1NjAsMzQ1NjMsMzQ1NTUsMzQ1NzcsMzQ1NjksMzQ1NzMsMzQ1NTMsMzQ1NzAsMzQ2MTIsMzQ2MjMsMzQ2MTUsMzQ2MTksMzQ1OTcsMzQ2MDEsMzQ1ODYsMzQ2NTYsMzQ2NTUsMzQ2ODAsMzQ2MzYsMzQ2MzgsMzQ2NzYsMzQ2NDcsMzQ2NjQsMzQ2NzAsMzQ2NDksMzQ2NDMsMzQ2NTksMzQ2NjYsMzQ4MjEsMzQ3MjIsMzQ3MTksMzQ2OTAsMzQ3MzUsMzQ3NjMsMzQ3NDksMzQ3NTIsMzQ3NjgsMzg2MTQsMzQ3MzEsMzQ3NTYsMzQ3MzksMzQ3NTksMzQ3NTgsMzQ3NDcsMzQ3OTksMzQ4MDIsMzQ3ODQsMzQ4MzEsMzQ4MjksMzQ4MTQsMzQ4MDYsMzQ4MDcsMzQ4MzAsMzQ3NzAsMzQ4MzMsMzQ4MzgsMzQ4MzcsMzQ4NTAsMzQ4NDksMzQ4NjUsMzQ4NzAsMzQ4NzMsMzQ4NTUsMzQ4NzUsMzQ4ODQsMzQ4ODIsMzQ4OTgsMzQ5MDUsMzQ5MTAsMzQ5MTQsMzQ5MjMsMzQ5NDUsMzQ5NDIsMzQ5NzQsMzQ5MzMsMzQ5NDEsMzQ5OTcsMzQ5MzAsMzQ5NDYsMzQ5NjcsMzQ5NjIsMzQ5OTAsMzQ5NjksMzQ5NzgsMzQ5NTcsMzQ5ODAsMzQ5OTIsMzUwMDcsMzQ5OTMsMzUwMTEsMzUwMTIsMzUwMjgsMzUwMzIsMzUwMzMsMzUwMzcsMzUwNjUsMzUwNzQsMzUwNjgsMzUwNjAsMzUwNDgsMzUwNTgsMzUwNzYsMzUwODQsMzUwODIsMzUwOTEsMzUxMzksMzUxMDIsMzUxMDksMzUxMTQsMzUxMTUsMzUxMzcsMzUxNDAsMzUxMzEsMzUxMjYsMzUxMjgsMzUxNDgsMzUxMDEsMzUxNjgsMzUxNjYsMzUxNzQsMzUxNzIsMzUxODEsMzUxNzgsMzUxODMsMzUxODgsMzUxOTEsMzUxOTgsMzUyMDMsMzUyMDgsMzUyMTAsMzUyMTksMzUyMjQsMzUyMzMsMzUyNDEsMzUyMzgsMzUyNDQsMzUyNDcsMzUyNTAsMzUyNTgsMzUyNjEsMzUyNjMsMzUyNjQsMzUyOTAsMzUyOTIsMzUyOTMsMzUzMDMsMzUzMTYsMzUzMjAsMzUzMzEsMzUzNTAsMzUzNDQsMzUzNDAsMzUzNTUsMzUzNTcsMzUzNjUsMzUzODIsMzUzOTMsMzU0MTksMzU0MTAsMzUzOTgsMzU0MDAsMzU0NTIsMzU0MzcsMzU0MzYsMzU0MjYsMzU0NjEsMzU0NTgsMzU0NjAsMzU0OTYsMzU0ODksMzU0NzMsMzU0OTMsMzU0OTQsMzU0ODIsMzU0OTEsMzU1MjQsMzU1MzMsMzU1MjIsMzU1NDYsMzU1NjMsMzU1NzEsMzU1NTksMzU1NTYsMzU1NjksMzU2MDQsMzU1NTIsMzU1NTQsMzU1NzUsMzU1NTAsMzU1NDcsMzU1OTYsMzU1OTEsMzU2MTAsMzU1NTMsMzU2MDYsMzU2MDAsMzU2MDcsMzU2MTYsMzU2MzUsMzg4MjcsMzU2MjIsMzU2MjcsMzU2NDYsMzU2MjQsMzU2NDksMzU2NjAsMzU2NjMsMzU2NjIsMzU2NTcsMzU2NzAsMzU2NzUsMzU2NzQsMzU2OTEsMzU2NzksMzU2OTIsMzU2OTUsMzU3MDAsMzU3MDksMzU3MTIsMzU3MjQsMzU3MjYsMzU3MzAsMzU3MzEsMzU3MzQsMzU3MzcsMzU3MzgsMzU4OTgsMzU5MDUsMzU5MDMsMzU5MTIsMzU5MTYsMzU5MTgsMzU5MjAsMzU5MjUsMzU5MzgsMzU5NDgsMzU5NjAsMzU5NjIsMzU5NzAsMzU5NzcsMzU5NzMsMzU5NzgsMzU5ODEsMzU5ODIsMzU5ODgsMzU5NjQsMzU5OTIsMjUxMTcsMzYwMTMsMzYwMTAsMzYwMjksMzYwMTgsMzYwMTksMzYwMTQsMzYwMjIsMzYwNDAsMzYwMzMsMzYwNjgsMzYwNjcsMzYwNTgsMzYwOTMsMzYwOTAsMzYwOTEsMzYxMDAsMzYxMDEsMzYxMDYsMzYxMDMsMzYxMTEsMzYxMDksMzYxMTIsNDA3ODIsMzYxMTUsMzYwNDUsMzYxMTYsMzYxMTgsMzYxOTksMzYyMDUsMzYyMDksMzYyMTEsMzYyMjUsMzYyNDksMzYyOTAsMzYyODYsMzYyODIsMzYzMDMsMzYzMTQsMzYzMTAsMzYzMDAsMzYzMTUsMzYyOTksMzYzMzAsMzYzMzEsMzYzMTksMzYzMjMsMzYzNDgsMzYzNjAsMzYzNjEsMzYzNTEsMzYzODEsMzYzODIsMzYzNjgsMzYzODMsMzY0MTgsMzY0MDUsMzY0MDAsMzY0MDQsMzY0MjYsMzY0MjMsMzY0MjUsMzY0MjgsMzY0MzIsMzY0MjQsMzY0NDEsMzY0NTIsMzY0NDgsMzYzOTQsMzY0NTEsMzY0MzcsMzY0NzAsMzY0NjYsMzY0NzYsMzY0ODEsMzY0ODcsMzY0ODUsMzY0ODQsMzY0OTEsMzY0OTAsMzY0OTksMzY0OTcsMzY1MDAsMzY1MDUsMzY1MjIsMzY1MTMsMzY1MjQsMzY1MjgsMzY1NTAsMzY1MjksMzY1NDIsMzY1NDksMzY1NTIsMzY1NTUsMzY1NzEsMzY1NzksMzY2MDQsMzY2MDMsMzY1ODcsMzY2MDYsMzY2MTgsMzY2MTMsMzY2MjksMzY2MjYsMzY2MzMsMzY2MjcsMzY2MzYsMzY2MzksMzY2MzUsMzY2MjAsMzY2NDYsMzY2NTksMzY2NjcsMzY2NjUsMzY2NzcsMzY2NzQsMzY2NzAsMzY2ODQsMzY2ODEsMzY2NzgsMzY2ODYsMzY2OTUsMzY3MDAsMzY3MDYsMzY3MDcsMzY3MDgsMzY3NjQsMzY3NjcsMzY3NzEsMzY3ODEsMzY3ODMsMzY3OTEsMzY4MjYsMzY4MzcsMzY4MzQsMzY4NDIsMzY4NDcsMzY5OTksMzY4NTIsMzY4NjksMzY4NTcsMzY4NTgsMzY4ODEsMzY4ODUsMzY4OTcsMzY4NzcsMzY4OTQsMzY4ODYsMzY4NzUsMzY5MDMsMzY5MTgsMzY5MTcsMzY5MjEsMzY4NTYsMzY5NDMsMzY5NDQsMzY5NDUsMzY5NDYsMzY4NzgsMzY5MzcsMzY5MjYsMzY5NTAsMzY5NTIsMzY5NTgsMzY5NjgsMzY5NzUsMzY5ODIsMzg1NjgsMzY5NzgsMzY5OTQsMzY5ODksMzY5OTMsMzY5OTIsMzcwMDIsMzcwMDEsMzcwMDcsMzcwMzIsMzcwMzksMzcwNDEsMzcwNDUsMzcwOTAsMzcwOTIsMjUxNjAsMzcwODMsMzcxMjIsMzcxMzgsMzcxNDUsMzcxNzAsMzcxNjgsMzcxOTQsMzcyMDYsMzcyMDgsMzcyMTksMzcyMjEsMzcyMjUsMzcyMzUsMzcyMzQsMzcyNTksMzcyNTcsMzcyNTAsMzcyODIsMzcyOTEsMzcyOTUsMzcyOTAsMzczMDEsMzczMDAsMzczMDYsMzczMTIsMzczMTMsMzczMjEsMzczMjMsMzczMjgsMzczMzQsMzczNDMsMzczNDUsMzczMzksMzczNzIsMzczNjUsMzczNjYsMzc0MDYsMzczNzUsMzczOTYsMzc0MjAsMzczOTcsMzczOTMsMzc0NzAsMzc0NjMsMzc0NDUsMzc0NDksMzc0NzYsMzc0NDgsMzc1MjUsMzc0MzksMzc0NTEsMzc0NTYsMzc1MzIsMzc1MjYsMzc1MjMsMzc1MzEsMzc0NjYsMzc1ODMsMzc1NjEsMzc1NTksMzc2MDksMzc2NDcsMzc2MjYsMzc3MDAsMzc2NzgsMzc2NTcsMzc2NjYsMzc2NTgsMzc2NjcsMzc2OTAsMzc2ODUsMzc2OTEsMzc3MjQsMzc3MjgsMzc3NTYsMzc3NDIsMzc3MTgsMzc4MDgsMzc4MDQsMzc4MDUsMzc3ODAsMzc4MTcsMzc4NDYsMzc4NDcsMzc4NjQsMzc4NjEsMzc4NDgsMzc4MjcsMzc4NTMsMzc4NDAsMzc4MzIsMzc4NjAsMzc5MTQsMzc5MDgsMzc5MDcsMzc4OTEsMzc4OTUsMzc5MDQsMzc5NDIsMzc5MzEsMzc5NDEsMzc5MjEsMzc5NDYsMzc5NTMsMzc5NzAsMzc5NTYsMzc5NzksMzc5ODQsMzc5ODYsMzc5ODIsMzc5OTQsMzc0MTcsMzgwMDAsMzgwMDUsMzgwMDcsMzgwMTMsMzc5NzgsMzgwMTIsMzgwMTQsMzgwMTcsMzgwMTUsMzgyNzQsMzgyNzksMzgyODIsMzgyOTIsMzgyOTQsMzgyOTYsMzgyOTcsMzgzMDQsMzgzMTIsMzgzMTEsMzgzMTcsMzgzMzIsMzgzMzEsMzgzMjksMzgzMzQsMzgzNDYsMjg2NjIsMzgzMzksMzgzNDksMzgzNDgsMzgzNTcsMzgzNTYsMzgzNTgsMzgzNjQsMzgzNjksMzgzNzMsMzgzNzAsMzg0MzMsMzg0NDAsMzg0NDYsMzg0NDcsMzg0NjYsMzg0NzYsMzg0NzksMzg0NzUsMzg1MTksMzg0OTIsMzg0OTQsMzg0OTMsMzg0OTUsMzg1MDIsMzg1MTQsMzg1MDgsMzg1NDEsMzg1NTIsMzg1NDksMzg1NTEsMzg1NzAsMzg1NjcsMzg1NzcsMzg1NzgsMzg1NzYsMzg1ODAsMzg1ODIsMzg1ODQsMzg1ODUsMzg2MDYsMzg2MDMsMzg2MDEsMzg2MDUsMzUxNDksMzg2MjAsMzg2NjksMzg2MTMsMzg2NDksMzg2NjAsMzg2NjIsMzg2NjQsMzg2NzUsMzg2NzAsMzg2NzMsMzg2NzEsMzg2NzgsMzg2ODEsMzg2OTIsMzg2OTgsMzg3MDQsMzg3MTMsMzg3MTcsMzg3MTgsMzg3MjQsMzg3MjYsMzg3MjgsMzg3MjIsMzg3MjksMzg3NDgsMzg3NTIsMzg3NTYsMzg3NTgsMzg3NjAsMjEyMDIsMzg3NjMsMzg3NjksMzg3NzcsMzg3ODksMzg3ODAsMzg3ODUsMzg3NzgsMzg3OTAsMzg3OTUsMzg3OTksMzg4MDAsMzg4MTIsMzg4MjQsMzg4MjIsMzg4MTksMzg4MzUsMzg4MzYsMzg4NTEsMzg4NTQsMzg4NTYsMzg4NTksMzg4NzYsMzg4OTMsNDA3ODMsMzg4OTgsMzE0NTUsMzg5MDIsMzg5MDEsMzg5MjcsMzg5MjQsMzg5NjgsMzg5NDgsMzg5NDUsMzg5NjcsMzg5NzMsMzg5ODIsMzg5OTEsMzg5ODcsMzkwMTksMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjgsMzkwMjcsMzkwODIsMzkwODcsMzkwODksMzkwOTQsMzkxMDgsMzkxMDcsMzkxMTAsMzkxNDUsMzkxNDcsMzkxNzEsMzkxNzcsMzkxODYsMzkxODgsMzkxOTIsMzkyMDEsMzkxOTcsMzkxOTgsMzkyMDQsMzkyMDAsMzkyMTIsMzkyMTQsMzkyMjksMzkyMzAsMzkyMzQsMzkyNDEsMzkyMzcsMzkyNDgsMzkyNDMsMzkyNDksMzkyNTAsMzkyNDQsMzkyNTMsMzkzMTksMzkzMjAsMzkzMzMsMzkzNDEsMzkzNDIsMzkzNTYsMzkzOTEsMzkzODcsMzkzODksMzkzODQsMzkzNzcsMzk0MDUsMzk0MDYsMzk0MDksMzk0MTAsMzk0MTksMzk0MTYsMzk0MjUsMzk0MzksMzk0MjksMzkzOTQsMzk0NDksMzk0NjcsMzk0NzksMzk0OTMsMzk0OTAsMzk0ODgsMzk0OTEsMzk0ODYsMzk1MDksMzk1MDEsMzk1MTUsMzk1MTEsMzk1MTksMzk1MjIsMzk1MjUsMzk1MjQsMzk1MjksMzk1MzEsMzk1MzAsMzk1OTcsMzk2MDAsMzk2MTIsMzk2MTYsMzk2MzEsMzk2MzMsMzk2MzUsMzk2MzYsMzk2NDYsMzk2NDcsMzk2NTAsMzk2NTEsMzk2NTQsMzk2NjMsMzk2NTksMzk2NjIsMzk2NjgsMzk2NjUsMzk2NzEsMzk2NzUsMzk2ODYsMzk3MDQsMzk3MDYsMzk3MTEsMzk3MTQsMzk3MTUsMzk3MTcsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjYsMzk3MjcsMzk3MzAsMzk3NDgsMzk3NDcsMzk3NTksMzk3NTcsMzk3NTgsMzk3NjEsMzk3NjgsMzk3OTYsMzk4MjcsMzk4MTEsMzk4MjUsMzk4MzAsMzk4MzEsMzk4MzksMzk4NDAsMzk4NDgsMzk4NjAsMzk4NzIsMzk4ODIsMzk4NjUsMzk4NzgsMzk4ODcsMzk4ODksMzk4OTAsMzk5MDcsMzk5MDYsMzk5MDgsMzk4OTIsMzk5MDUsMzk5OTQsMzk5MjIsMzk5MjEsMzk5MjAsMzk5NTcsMzk5NTYsMzk5NDUsMzk5NTUsMzk5NDgsMzk5NDIsMzk5NDQsMzk5NTQsMzk5NDYsMzk5NDAsMzk5ODIsMzk5NjMsMzk5NzMsMzk5NzIsMzk5NjksMzk5ODQsNDAwMDcsMzk5ODYsNDAwMDYsMzk5OTgsNDAwMjYsNDAwMzIsNDAwMzksNDAwNTQsNDAwNTYsNDAxNjcsNDAxNzIsNDAxNzYsNDAyMDEsNDAyMDAsNDAxNzEsNDAxOTUsNDAxOTgsNDAyMzQsNDAyMzAsNDAzNjcsNDAyMjcsNDAyMjMsNDAyNjAsNDAyMTMsNDAyMTAsNDAyNTcsNDAyNTUsNDAyNTQsNDAyNjIsNDAyNjQsNDAyODUsNDAyODYsNDAyOTIsNDAyNzMsNDAyNzIsNDAyODEsNDAzMDYsNDAzMjksNDAzMjcsNDAzNjMsNDAzMDMsNDAzMTQsNDAzNDYsNDAzNTYsNDAzNjEsNDAzNzAsNDAzODgsNDAzODUsNDAzNzksNDAzNzYsNDAzNzgsNDAzOTAsNDAzOTksNDAzODYsNDA0MDksNDA0MDMsNDA0NDAsNDA0MjIsNDA0MjksNDA0MzEsNDA0NDUsNDA0NzQsNDA0NzUsNDA0NzgsNDA1NjUsNDA1NjksNDA1NzMsNDA1NzcsNDA1ODQsNDA1ODcsNDA1ODgsNDA1OTQsNDA1OTcsNDA1OTMsNDA2MDUsNDA2MTMsNDA2MTcsNDA2MzIsNDA2MTgsNDA2MjEsMzg3NTMsNDA2NTIsNDA2NTQsNDA2NTUsNDA2NTYsNDA2NjAsNDA2NjgsNDA2NzAsNDA2NjksNDA2NzIsNDA2NzcsNDA2ODAsNDA2ODcsNDA2OTIsNDA2OTQsNDA2OTUsNDA2OTcsNDA2OTksNDA3MDAsNDA3MDEsNDA3MTEsNDA3MTIsMzAzOTEsNDA3MjUsNDA3MzcsNDA3NDgsNDA3NjYsNDA3NzgsNDA3ODYsNDA3ODgsNDA4MDMsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDYsNDA4MDcsNDA4MTIsNDA4MTAsNDA4MjMsNDA4MTgsNDA4MjIsNDA4NTMsNDA4NjAsNDA4NjQsMjI1NzUsMjcwNzksMzY5NTMsMjk3OTYsMjA5NTYsMjkwODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSw4NzU3LDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiamlzMDIxMlwiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw3MjgsNzExLDE4NCw3MjksNzMzLDE3NSw3MzEsNzMwLDY1Mzc0LDkwMCw5MDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MSwxNjYsMTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxODYsMTcwLDE2OSwxNzQsODQ4MiwxNjQsODQ3MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTAyLDkwNCw5MDUsOTA2LDkzOCxudWxsLDkwOCxudWxsLDkxMCw5MzksbnVsbCw5MTEsbnVsbCxudWxsLG51bGwsbnVsbCw5NDAsOTQxLDk0Miw5NDMsOTcwLDkxMiw5NzIsOTYyLDk3Myw5NzEsOTQ0LDk3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzgsMTAzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTgsMTExOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OCwyNzIsbnVsbCwyOTQsbnVsbCwzMDYsbnVsbCwzMjEsMzE5LG51bGwsMzMwLDIxNiwzMzgsbnVsbCwzNTgsMjIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMiwzMjAsMzI5LDMzMSwyNDgsMzM5LDIyMywzNTksMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTkzLDE5MiwxOTYsMTk0LDI1OCw0NjEsMjU2LDI2MCwxOTcsMTk1LDI2MiwyNjQsMjY4LDE5OSwyNjYsMjcwLDIwMSwyMDAsMjAzLDIwMiwyODIsMjc4LDI3NCwyODAsbnVsbCwyODQsMjg2LDI5MCwyODgsMjkyLDIwNSwyMDQsMjA3LDIwNiw0NjMsMzA0LDI5OCwzMDIsMjk2LDMwOCwzMTAsMzEzLDMxNywzMTUsMzIzLDMyNywzMjUsMjA5LDIxMSwyMTAsMjE0LDIxMiw0NjUsMzM2LDMzMiwyMTMsMzQwLDM0NCwzNDIsMzQ2LDM0OCwzNTIsMzUwLDM1NiwzNTQsMjE4LDIxNywyMjAsMjE5LDM2NCw0NjcsMzY4LDM2MiwzNzAsMzY2LDM2MCw0NzEsNDc1LDQ3Myw0NjksMzcyLDIyMSwzNzYsMzc0LDM3NywzODEsMzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjI1LDIyNCwyMjgsMjI2LDI1OSw0NjIsMjU3LDI2MSwyMjksMjI3LDI2MywyNjUsMjY5LDIzMSwyNjcsMjcxLDIzMywyMzIsMjM1LDIzNCwyODMsMjc5LDI3NSwyODEsNTAxLDI4NSwyODcsbnVsbCwyODksMjkzLDIzNywyMzYsMjM5LDIzOCw0NjQsbnVsbCwyOTksMzAzLDI5NywzMDksMzExLDMxNCwzMTgsMzE2LDMyNCwzMjgsMzI2LDI0MSwyNDMsMjQyLDI0NiwyNDQsNDY2LDMzNywzMzMsMjQ1LDM0MSwzNDUsMzQzLDM0NywzNDksMzUzLDM1MSwzNTcsMzU1LDI1MCwyNDksMjUyLDI1MSwzNjUsNDY4LDM2OSwzNjMsMzcxLDM2NywzNjEsNDcyLDQ3Niw0NzQsNDcwLDM3MywyNTMsMjU1LDM3NSwzNzgsMzgyLDM4MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk5NzAsMTk5NzIsMTk5NzMsMTk5ODAsMTk5ODYsMTk5OTksMjAwMDMsMjAwMDQsMjAwMDgsMjAwMTEsMjAwMTQsMjAwMTUsMjAwMTYsMjAwMjEsMjAwMzIsMjAwMzMsMjAwMzYsMjAwMzksMjAwNDksMjAwNTgsMjAwNjAsMjAwNjcsMjAwNzIsMjAwNzMsMjAwODQsMjAwODUsMjAwODksMjAwOTUsMjAxMDksMjAxMTgsMjAxMTksMjAxMjUsMjAxNDMsMjAxNTMsMjAxNjMsMjAxNzYsMjAxODYsMjAxODcsMjAxOTIsMjAxOTMsMjAxOTQsMjAyMDAsMjAyMDcsMjAyMDksMjAyMTEsMjAyMTMsMjAyMjEsMjAyMjIsMjAyMjMsMjAyMjQsMjAyMjYsMjAyMjcsMjAyMzIsMjAyMzUsMjAyMzYsMjAyNDIsMjAyNDUsMjAyNDYsMjAyNDcsMjAyNDksMjAyNzAsMjAyNzMsMjAzMjAsMjAyNzUsMjAyNzcsMjAyNzksMjAyODEsMjAyODMsMjAyODYsMjAyODgsMjAyOTAsMjAyOTYsMjAyOTcsMjAyOTksMjAzMDAsMjAzMDYsMjAzMDgsMjAzMTAsMjAzMTIsMjAzMTksMjAzMjMsMjAzMzAsMjAzMzIsMjAzMzQsMjAzMzcsMjAzNDMsMjAzNDQsMjAzNDUsMjAzNDYsMjAzNDksMjAzNTAsMjAzNTMsMjAzNTQsMjAzNTYsMjAzNTcsMjAzNjEsMjAzNjIsMjAzNjQsMjAzNjYsMjAzNjgsMjAzNzAsMjAzNzEsMjAzNzIsMjAzNzUsMjAzNzcsMjAzNzgsMjAzODIsMjAzODMsMjA0MDIsMjA0MDcsMjA0MDksMjA0MTEsMjA0MTIsMjA0MTMsMjA0MTQsMjA0MTYsMjA0MTcsMjA0MjEsMjA0MjIsMjA0MjQsMjA0MjUsMjA0MjcsMjA0MjgsMjA0MjksMjA0MzEsMjA0MzQsMjA0NDQsMjA0NDgsMjA0NTAsMjA0NjQsMjA0NjYsMjA0NzYsMjA0NzcsMjA0NzksMjA0ODAsMjA0ODEsMjA0ODQsMjA0ODcsMjA0OTAsMjA0OTIsMjA0OTQsMjA0OTYsMjA0OTksMjA1MDMsMjA1MDQsMjA1MDcsMjA1MDgsMjA1MDksMjA1MTAsMjA1MTQsMjA1MTksMjA1MjYsMjA1MjgsMjA1MzAsMjA1MzEsMjA1MzMsMjA1NDQsMjA1NDUsMjA1NDYsMjA1NDksMjA1NTAsMjA1NTQsMjA1NTYsMjA1NTgsMjA1NjEsMjA1NjIsMjA1NjMsMjA1NjcsMjA1NjksMjA1NzUsMjA1NzYsMjA1NzgsMjA1NzksMjA1ODIsMjA1ODMsMjA1ODYsMjA1ODksMjA1OTIsMjA1OTMsMjA1MzksMjA2MDksMjA2MTEsMjA2MTIsMjA2MTQsMjA2MTgsMjA2MjIsMjA2MjMsMjA2MjQsMjA2MjYsMjA2MjcsMjA2MjgsMjA2MzAsMjA2MzUsMjA2MzYsMjA2MzgsMjA2MzksMjA2NDAsMjA2NDEsMjA2NDIsMjA2NTAsMjA2NTUsMjA2NTYsMjA2NjUsMjA2NjYsMjA2NjksMjA2NzIsMjA2NzUsMjA2NzYsMjA2NzksMjA2ODQsMjA2ODYsMjA2ODgsMjA2OTEsMjA2OTIsMjA2OTYsMjA3MDAsMjA3MDEsMjA3MDMsMjA3MDYsMjA3MDgsMjA3MTAsMjA3MTIsMjA3MTMsMjA3MTksMjA3MjEsMjA3MjYsMjA3MzAsMjA3MzQsMjA3MzksMjA3NDIsMjA3NDMsMjA3NDQsMjA3NDcsMjA3NDgsMjA3NDksMjA3NTAsMjA3MjIsMjA3NTIsMjA3NTksMjA3NjEsMjA3NjMsMjA3NjQsMjA3NjUsMjA3NjYsMjA3NzEsMjA3NzUsMjA3NzYsMjA3ODAsMjA3ODEsMjA3ODMsMjA3ODUsMjA3ODcsMjA3ODgsMjA3ODksMjA3OTIsMjA3OTMsMjA4MDIsMjA4MTAsMjA4MTUsMjA4MTksMjA4MjEsMjA4MjMsMjA4MjQsMjA4MzEsMjA4MzYsMjA4MzgsMjA4NjIsMjA4NjcsMjA4NjgsMjA4NzUsMjA4NzgsMjA4ODgsMjA4OTMsMjA4OTcsMjA4OTksMjA5MDksMjA5MjAsMjA5MjIsMjA5MjQsMjA5MjYsMjA5MjcsMjA5MzAsMjA5MzYsMjA5NDMsMjA5NDUsMjA5NDYsMjA5NDcsMjA5NDksMjA5NTIsMjA5NTgsMjA5NjIsMjA5NjUsMjA5NzQsMjA5NzgsMjA5NzksMjA5ODAsMjA5ODMsMjA5OTMsMjA5OTQsMjA5OTcsMjEwMTAsMjEwMTEsMjEwMTMsMjEwMTQsMjEwMTYsMjEwMjYsMjEwMzIsMjEwNDEsMjEwNDIsMjEwNDUsMjEwNTIsMjEwNjEsMjEwNjUsMjEwNzcsMjEwNzksMjEwODAsMjEwODIsMjEwODQsMjEwODcsMjEwODgsMjEwODksMjEwOTQsMjExMDIsMjExMTEsMjExMTIsMjExMTMsMjExMjAsMjExMjIsMjExMjUsMjExMzAsMjExMzIsMjExMzksMjExNDEsMjExNDIsMjExNDMsMjExNDQsMjExNDYsMjExNDgsMjExNTYsMjExNTcsMjExNTgsMjExNTksMjExNjcsMjExNjgsMjExNzQsMjExNzUsMjExNzYsMjExNzgsMjExNzksMjExODEsMjExODQsMjExODgsMjExOTAsMjExOTIsMjExOTYsMjExOTksMjEyMDEsMjEyMDQsMjEyMDYsMjEyMTEsMjEyMTIsMjEyMTcsMjEyMjEsMjEyMjQsMjEyMjUsMjEyMjYsMjEyMjgsMjEyMzIsMjEyMzMsMjEyMzYsMjEyMzgsMjEyMzksMjEyNDgsMjEyNTEsMjEyNTgsMjEyNTksMjEyNjAsMjEyNjUsMjEyNjcsMjEyNzIsMjEyNzUsMjEyNzYsMjEyNzgsMjEyNzksMjEyODUsMjEyODcsMjEyODgsMjEyODksMjEyOTEsMjEyOTIsMjEyOTMsMjEyOTYsMjEyOTgsMjEzMDEsMjEzMDgsMjEzMDksMjEzMTAsMjEzMTQsMjEzMjQsMjEzMjMsMjEzMzcsMjEzMzksMjEzNDUsMjEzNDcsMjEzNDksMjEzNTYsMjEzNTcsMjEzNjIsMjEzNjksMjEzNzQsMjEzNzksMjEzODMsMjEzODQsMjEzOTAsMjEzOTUsMjEzOTYsMjE0MDEsMjE0MDUsMjE0MDksMjE0MTIsMjE0MTgsMjE0MTksMjE0MjMsMjE0MjYsMjE0MjgsMjE0MjksMjE0MzEsMjE0MzIsMjE0MzQsMjE0MzcsMjE0NDAsMjE0NDUsMjE0NTUsMjE0NTgsMjE0NTksMjE0NjEsMjE0NjYsMjE0NjksMjE0NzAsMjE0NzIsMjE0NzgsMjE0NzksMjE0OTMsMjE1MDYsMjE1MjMsMjE1MzAsMjE1MzcsMjE1NDMsMjE1NDQsMjE1NDYsMjE1NTEsMjE1NTMsMjE1NTYsMjE1NTcsMjE1NzEsMjE1NzIsMjE1NzUsMjE1ODEsMjE1ODMsMjE1OTgsMjE2MDIsMjE2MDQsMjE2MDYsMjE2MDcsMjE2MDksMjE2MTEsMjE2MTMsMjE2MTQsMjE2MjAsMjE2MzEsMjE2MzMsMjE2MzUsMjE2MzcsMjE2NDAsMjE2NDEsMjE2NDUsMjE2NDksMjE2NTMsMjE2NTQsMjE2NjAsMjE2NjMsMjE2NjUsMjE2NzAsMjE2NzEsMjE2NzMsMjE2NzQsMjE2NzcsMjE2NzgsMjE2ODEsMjE2ODcsMjE2ODksMjE2OTAsMjE2OTEsMjE2OTUsMjE3MDIsMjE3MDYsMjE3MDksMjE3MTAsMjE3MjgsMjE3MzgsMjE3NDAsMjE3NDMsMjE3NTAsMjE3NTYsMjE3NTgsMjE3NTksMjE3NjAsMjE3NjEsMjE3NjUsMjE3NjgsMjE3NjksMjE3NzIsMjE3NzMsMjE3NzQsMjE3ODEsMjE4MDIsMjE4MDMsMjE4MTAsMjE4MTMsMjE4MTQsMjE4MTksMjE4MjAsMjE4MjEsMjE4MjUsMjE4MzEsMjE4MzMsMjE4MzQsMjE4MzcsMjE4NDAsMjE4NDEsMjE4NDgsMjE4NTAsMjE4NTEsMjE4NTQsMjE4NTYsMjE4NTcsMjE4NjAsMjE4NjIsMjE4ODcsMjE4ODksMjE4OTAsMjE4OTQsMjE4OTYsMjE5MDIsMjE5MDMsMjE5MDUsMjE5MDYsMjE5MDcsMjE5MDgsMjE5MTEsMjE5MjMsMjE5MjQsMjE5MzMsMjE5MzgsMjE5NTEsMjE5NTMsMjE5NTUsMjE5NTgsMjE5NjEsMjE5NjMsMjE5NjQsMjE5NjYsMjE5NjksMjE5NzAsMjE5NzEsMjE5NzUsMjE5NzYsMjE5NzksMjE5ODIsMjE5ODYsMjE5OTMsMjIwMDYsMjIwMTUsMjIwMjEsMjIwMjQsMjIwMjYsMjIwMjksMjIwMzAsMjIwMzEsMjIwMzIsMjIwMzMsMjIwMzQsMjIwNDEsMjIwNjAsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzMsMjIwNzUsMjIwNzYsMjIwNzcsMjIwNzksMjIwODAsMjIwODEsMjIwODMsMjIwODQsMjIwODYsMjIwODksMjIwOTEsMjIwOTMsMjIwOTUsMjIxMDAsMjIxMTAsMjIxMTIsMjIxMTMsMjIxMTQsMjIxMTUsMjIxMTgsMjIxMjEsMjIxMjUsMjIxMjcsMjIxMjksMjIxMzAsMjIxMzMsMjIxNDgsMjIxNDksMjIxNTIsMjIxNTUsMjIxNTYsMjIxNjUsMjIxNjksMjIxNzAsMjIxNzMsMjIxNzQsMjIxNzUsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODcsMjIxODgsMjIxODksMjIxOTMsMjIxOTUsMjIxOTksMjIyMDYsMjIyMTMsMjIyMTcsMjIyMTgsMjIyMTksMjIyMjMsMjIyMjQsMjIyMjAsMjIyMjEsMjIyMzMsMjIyMzYsMjIyMzcsMjIyMzksMjIyNDEsMjIyNDQsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNTcsMjIyNTEsMjIyNTMsMjIyNjIsMjIyNjMsMjIyNzMsMjIyNzQsMjIyNzksMjIyODIsMjIyODQsMjIyODksMjIyOTMsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDQsMjIzMDYsMjIzMDcsMjIzMDgsMjIzMDksMjIzMTMsMjIzMTQsMjIzMTYsMjIzMTgsMjIzMTksMjIzMjMsMjIzMjQsMjIzMzMsMjIzMzQsMjIzMzUsMjIzNDEsMjIzNDIsMjIzNDgsMjIzNDksMjIzNTQsMjIzNzAsMjIzNzMsMjIzNzUsMjIzNzYsMjIzNzksMjIzODEsMjIzODIsMjIzODMsMjIzODQsMjIzODUsMjIzODcsMjIzODgsMjIzODksMjIzOTEsMjIzOTMsMjIzOTQsMjIzOTUsMjIzOTYsMjIzOTgsMjI0MDEsMjI0MDMsMjI0MTIsMjI0MjAsMjI0MjMsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzMsMjI0MjEsMjI0MzksMjI0NDAsMjI0NDEsMjI0NDQsMjI0NTYsMjI0NjEsMjI0NzEsMjI0NzIsMjI0NzYsMjI0NzksMjI0ODUsMjI0OTMsMjI0OTQsMjI1MDAsMjI1MDIsMjI1MDMsMjI1MDUsMjI1MDksMjI1MTIsMjI1MTcsMjI1MTgsMjI1MjAsMjI1MjUsMjI1MjYsMjI1MjcsMjI1MzEsMjI1MzIsMjI1MzYsMjI1MzcsMjI0OTcsMjI1NDAsMjI1NDEsMjI1NTUsMjI1NTgsMjI1NTksMjI1NjAsMjI1NjYsMjI1NjcsMjI1NzMsMjI1NzgsMjI1ODUsMjI1OTEsMjI2MDEsMjI2MDQsMjI2MDUsMjI2MDcsMjI2MDgsMjI2MTMsMjI2MjMsMjI2MjUsMjI2MjgsMjI2MzEsMjI2MzIsMjI2NDgsMjI2NTIsMjI2NTUsMjI2NTYsMjI2NTcsMjI2NjMsMjI2NjQsMjI2NjUsMjI2NjYsMjI2NjgsMjI2NjksMjI2NzEsMjI2NzIsMjI2NzYsMjI2NzgsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTQsMjI2OTcsMjI3MDUsMjI3MDYsMjI3MjQsMjI3MTYsMjI3MjIsMjI3MjgsMjI3MzMsMjI3MzQsMjI3MzYsMjI3MzgsMjI3NDAsMjI3NDIsMjI3NDYsMjI3NDksMjI3NTMsMjI3NTQsMjI3NjEsMjI3NzEsMjI3ODksMjI3OTAsMjI3OTUsMjI3OTYsMjI4MDIsMjI4MDMsMjI4MDQsMzQzNjksMjI4MTMsMjI4MTcsMjI4MTksMjI4MjAsMjI4MjQsMjI4MzEsMjI4MzIsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDcsMjI4NTEsMjI4NTQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4OTEsMjI4OTMsMjI4OTUsMjI4OTgsMjI5MDEsMjI5MDIsMjI5MDUsMjI5MDcsMjI5MDgsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MzAsMjI5MzMsMjI5MzUsMjI5NDMsMjI5NDgsMjI5NTEsMjI5NTcsMjI5NTgsMjI5NTksMjI5NjAsMjI5NjMsMjI5NjcsMjI5NzAsMjI5NzIsMjI5NzcsMjI5NzksMjI5ODAsMjI5ODQsMjI5ODYsMjI5ODksMjI5OTQsMjMwMDUsMjMwMDYsMjMwMDcsMjMwMTEsMjMwMTIsMjMwMTUsMjMwMjIsMjMwMjMsMjMwMjUsMjMwMjYsMjMwMjgsMjMwMzEsMjMwNDAsMjMwNDQsMjMwNTIsMjMwNTMsMjMwNTQsMjMwNTgsMjMwNTksMjMwNzAsMjMwNzUsMjMwNzYsMjMwNzksMjMwODAsMjMwODIsMjMwODUsMjMwODgsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTYsMjMxMjAsMjMxMjUsMjMxMzQsMjMxMzksMjMxNDEsMjMxNDMsMjMxNDksMjMxNTksMjMxNjIsMjMxNjMsMjMxNjYsMjMxNzksMjMxODQsMjMxODcsMjMxOTAsMjMxOTMsMjMxOTYsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDIsMjMyMDcsMjMyMTIsMjMyMTcsMjMyMTgsMjMyMTksMjMyMjEsMjMyMjQsMjMyMjYsMjMyMjcsMjMyMzEsMjMyMzYsMjMyMzgsMjMyNDAsMjMyNDcsMjMyNTgsMjMyNjAsMjMyNjQsMjMyNjksMjMyNzQsMjMyNzgsMjMyODUsMjMyODYsMjMyOTMsMjMyOTYsMjMyOTcsMjMzMDQsMjMzMTksMjMzNDgsMjMzMjEsMjMzMjMsMjMzMjUsMjMzMjksMjMzMzMsMjMzNDEsMjMzNTIsMjMzNjEsMjMzNzEsMjMzNzIsMjMzNzgsMjMzODIsMjMzOTAsMjM0MDAsMjM0MDYsMjM0MDcsMjM0MjAsMjM0MjEsMjM0MjIsMjM0MjMsMjM0MjUsMjM0MjgsMjM0MzAsMjM0MzQsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDMsMjM0NDQsMjM0NDYsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODQsMjM0ODgsMjM0ODksMjM1MDEsMjM1MDMsMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MjAsMjM1MzUsMjM1MzcsMjM1NDAsMjM1NDksMjM1NjQsMjM1NzUsMjM1ODIsMjM1ODMsMjM1ODcsMjM1OTAsMjM1OTMsMjM1OTUsMjM1OTYsMjM1OTgsMjM2MDAsMjM2MDIsMjM2MDUsMjM2MDYsMjM2NDEsMjM2NDIsMjM2NDQsMjM2NTAsMjM2NTEsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NjEsMjM2NjQsMjM2NjgsMjM2NjksMjM2NzQsMjM2NzUsMjM2NzYsMjM2NzcsMjM2ODcsMjM2ODgsMjM2OTAsMjM2OTUsMjM2OTgsMjM3MDksMjM3MTEsMjM3MTIsMjM3MTQsMjM3MTUsMjM3MTgsMjM3MjIsMjM3MzAsMjM3MzIsMjM3MzMsMjM3MzgsMjM3NTMsMjM3NTUsMjM3NjIsMjM3NzMsMjM3NjcsMjM3OTAsMjM3OTMsMjM3OTQsMjM3OTYsMjM4MDksMjM4MTQsMjM4MjEsMjM4MjYsMjM4NTEsMjM4NDMsMjM4NDQsMjM4NDYsMjM4NDcsMjM4NTcsMjM4NjAsMjM4NjUsMjM4NjksMjM4NzEsMjM4NzQsMjM4NzUsMjM4NzgsMjM4ODAsMjM4OTMsMjM4ODksMjM4OTcsMjM4ODIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDgsMjM5MTQsMjM5MTcsMjM5MjAsMjM5MjksMjM5MzAsMjM5MzQsMjM5MzUsMjM5MzcsMjM5MzksMjM5NDQsMjM5NDYsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NjEsMjM5NjMsMjM5NjcsMjM5NjgsMjM5NzUsMjM5NzksMjM5ODQsMjM5ODgsMjM5OTIsMjM5OTMsMjQwMDMsMjQwMDcsMjQwMTEsMjQwMTYsMjQwMTQsMjQwMjQsMjQwMjUsMjQwMzIsMjQwMzYsMjQwNDEsMjQwNTYsMjQwNTcsMjQwNjQsMjQwNzEsMjQwNzcsMjQwODIsMjQwODQsMjQwODUsMjQwODgsMjQwOTUsMjQwOTYsMjQxMTAsMjQxMDQsMjQxMTQsMjQxMTcsMjQxMjYsMjQxMzksMjQxNDQsMjQxMzcsMjQxNDUsMjQxNTAsMjQxNTIsMjQxNTUsMjQxNTYsMjQxNTgsMjQxNjgsMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzYsMjQxOTIsMjQyMDMsMjQyMDYsMjQyMjYsMjQyMjgsMjQyMjksMjQyMzIsMjQyMzQsMjQyMzYsMjQyNDEsMjQyNDMsMjQyNTMsMjQyNTQsMjQyNTUsMjQyNjIsMjQyNjgsMjQyNjcsMjQyNzAsMjQyNzMsMjQyNzQsMjQyNzYsMjQyNzcsMjQyODQsMjQyODYsMjQyOTMsMjQyOTksMjQzMjIsMjQzMjYsMjQzMjcsMjQzMjgsMjQzMzQsMjQzNDUsMjQzNDgsMjQzNDksMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzIsMjQzNzQsMjQzNzksMjQzODEsMjQzODMsMjQzODQsMjQzODgsMjQzODksMjQzOTEsMjQzOTcsMjQ0MDAsMjQ0MDQsMjQ0MDgsMjQ0MTEsMjQ0MTYsMjQ0MTksMjQ0MjAsMjQ0MjMsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NTcsMjQ0NjEsMjQ0NjMsMjQ0NzAsMjQ0NzYsMjQ0NzcsMjQ0ODIsMjQ0ODcsMjQ0OTEsMjQ0ODQsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ1MDQsMjQ1MTYsMjQ1MTksMjQ1MjAsMjQ1MjEsMjQ1MjMsMjQ1MjgsMjQ1MjksMjQ1MzAsMjQ1MzEsMjQ1MzIsMjQ1NDIsMjQ1NDUsMjQ1NDYsMjQ1NTIsMjQ1NTMsMjQ1NTQsMjQ1NTYsMjQ1NTcsMjQ1NTgsMjQ1NTksMjQ1NjIsMjQ1NjMsMjQ1NjYsMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODYsMjQ1ODksMjQ1OTUsMjQ1OTYsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDcsMjQ2MTIsMjQ2MjEsMjQ2MjcsMjQ2MjksMjQ2NDAsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTIsMjQ2NTcsMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjksMjQ2NzMsMjQ2NzksMjQ2ODksMjQ3MDIsMjQ3MDMsMjQ3MDYsMjQ3MTAsMjQ3MTIsMjQ3MTQsMjQ3MTgsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjgsMjQ3MzMsMjQ3MzQsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDQsMjQ3NTIsMjQ3NTMsMjQ3NTksMjQ3NjMsMjQ3NjYsMjQ3NzAsMjQ3NzIsMjQ3NzYsMjQ3NzcsMjQ3NzgsMjQ3NzksMjQ3ODIsMjQ3ODMsMjQ3ODgsMjQ3ODksMjQ3OTMsMjQ3OTUsMjQ3OTcsMjQ3OTgsMjQ4MDIsMjQ4MDUsMjQ4MTgsMjQ4MjEsMjQ4MjQsMjQ4MjgsMjQ4MjksMjQ4MzQsMjQ4MzksMjQ4NDIsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTcsMjQ4NjAsMjQ4NjIsMjQ4NjYsMjQ4NzQsMjQ4NzUsMjQ4ODAsMjQ4ODEsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODksMjQ4OTcsMjQ5MDEsMjQ5MDIsMjQ5MDUsMjQ5MjYsMjQ5MjgsMjQ5NDAsMjQ5NDYsMjQ5NTIsMjQ5NTUsMjQ5NTYsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjMsMjQ5NjQsMjQ5NzEsMjQ5NzMsMjQ5NzgsMjQ5NzksMjQ5ODMsMjQ5ODQsMjQ5ODgsMjQ5ODksMjQ5OTEsMjQ5OTIsMjQ5OTcsMjUwMDAsMjUwMDIsMjUwMDUsMjUwMTYsMjUwMTcsMjUwMjAsMjUwMjQsMjUwMjUsMjUwMjYsMjUwMzgsMjUwMzksMjUwNDUsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTcsMjUwNTgsMjUwNjMsMjUwNjUsMjUwNjEsMjUwNjgsMjUwNjksMjUwNzEsMjUwODksMjUwOTEsMjUwOTIsMjUwOTUsMjUxMDcsMjUxMDksMjUxMTYsMjUxMjAsMjUxMjIsMjUxMjMsMjUxMjcsMjUxMjksMjUxMzEsMjUxNDUsMjUxNDksMjUxNTQsMjUxNTUsMjUxNTYsMjUxNTgsMjUxNjQsMjUxNjgsMjUxNjksMjUxNzAsMjUxNzIsMjUxNzQsMjUxNzgsMjUxODAsMjUxODgsMjUxOTcsMjUxOTksMjUyMDMsMjUyMTAsMjUyMTMsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyNTQsMjUyNTYsMjUyNjcsMjUyNzAsMjUyNzEsMjUyNzQsMjUyNzgsMjUyNzksMjUyODQsMjUyOTQsMjUzMDEsMjUzMDIsMjUzMDYsMjUzMjIsMjUzMzAsMjUzMzIsMjUzNDAsMjUzNDEsMjUzNDcsMjUzNDgsMjUzNTQsMjUzNTUsMjUzNTcsMjUzNjAsMjUzNjMsMjUzNjYsMjUzNjgsMjUzODUsMjUzODYsMjUzODksMjUzOTcsMjUzOTgsMjU0MDEsMjU0MDQsMjU0MDksMjU0MTAsMjU0MTEsMjU0MTIsMjU0MTQsMjU0MTgsMjU0MTksMjU0MjIsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzIsMjU0MzUsMjU0NDUsMjU0NDYsMjU0NTIsMjU0NTMsMjU0NTcsMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjgsMjU0NjksMjU0NzEsMjU0NzQsMjU0NzYsMjU0NzksMjU0ODIsMjU0ODgsMjU0OTIsMjU0OTMsMjU0OTcsMjU0OTgsMjU1MDIsMjU1MDgsMjU1MTAsMjU1MTcsMjU1MTgsMjU1MTksMjU1MzMsMjU1MzcsMjU1NDEsMjU1NDQsMjU1NTAsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NjQsMjU1NjgsMjU1NzMsMjU1NzgsMjU1ODAsMjU1ODYsMjU1ODcsMjU1ODksMjU1OTIsMjU1OTMsMjU2MDksMjU2MTAsMjU2MTYsMjU2MTgsMjU2MjAsMjU2MjQsMjU2MzAsMjU2MzIsMjU2MzQsMjU2MzYsMjU2MzcsMjU2NDEsMjU2NDIsMjU2NDcsMjU2NDgsMjU2NTMsMjU2NjEsMjU2NjMsMjU2NzUsMjU2NzksMjU2ODEsMjU2ODIsMjU2ODMsMjU2ODQsMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTksMjU3MDksMjU3MTUsMjU3MTYsMjU3MjMsMjU3MjUsMjU3MzMsMjU3MzUsMjU3NDMsMjU3NDQsMjU3NDUsMjU3NTIsMjU3NTMsMjU3NTUsMjU3NTcsMjU3NTksMjU3NjEsMjU3NjMsMjU3NjYsMjU3NjgsMjU3NzIsMjU3NzksMjU3ODksMjU3OTAsMjU3OTEsMjU3OTYsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDYsMjU4MDgsMjU4MDksMjU4MTMsMjU4MTUsMjU4MjgsMjU4MjksMjU4MzMsMjU4MzQsMjU4MzcsMjU4NDAsMjU4NDUsMjU4NDcsMjU4NTEsMjU4NTUsMjU4NTcsMjU4NjAsMjU4NjQsMjU4NjUsMjU4NjYsMjU4NzEsMjU4NzUsMjU4NzYsMjU4NzgsMjU4ODEsMjU4ODMsMjU4ODYsMjU4ODcsMjU4OTAsMjU4OTQsMjU4OTcsMjU5MDIsMjU5MDUsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjMsMjU5MjcsMjU5MjksMjU5MzYsMjU5MzgsMjU5NDAsMjU5NTEsMjU5NTIsMjU5NTksMjU5NjMsMjU5NzgsMjU5ODEsMjU5ODUsMjU5ODksMjU5OTQsMjYwMDIsMjYwMDUsMjYwMDgsMjYwMTMsMjYwMTYsMjYwMTksMjYwMjIsMjYwMzAsMjYwMzQsMjYwMzUsMjYwMzYsMjYwNDcsMjYwNTAsMjYwNTYsMjYwNTcsMjYwNjIsMjYwNjQsMjYwNjgsMjYwNzAsMjYwNzIsMjYwNzksMjYwOTYsMjYwOTgsMjYxMDAsMjYxMDEsMjYxMDUsMjYxMTAsMjYxMTEsMjYxMTIsMjYxMTYsMjYxMjAsMjYxMjEsMjYxMjUsMjYxMjksMjYxMzAsMjYxMzMsMjYxMzQsMjYxNDEsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjEsMjYxNjMsMjYxNjksMjYxNjcsMjYxNzYsMjYxODEsMjYxODIsMjYxODYsMjYxODgsMjYxOTMsMjYxOTAsMjYxOTksMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDgsMjYyMDksMjYzNjMsMjYyMTgsMjYyMTksMjYyMjAsMjYyMzgsMjYyMjcsMjYyMjksMjYyMzksMjYyMzEsMjYyMzIsMjYyMzMsMjYyMzUsMjYyNDAsMjYyMzYsMjYyNTEsMjYyNTIsMjYyNTMsMjYyNTYsMjYyNTgsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzEsMjYyNzIsMjYyNzYsMjYyODUsMjYyODksMjYyOTAsMjYyOTMsMjYyOTksMjYzMDMsMjYzMDQsMjYzMDYsMjYzMDcsMjYzMTIsMjYzMTYsMjYzMTgsMjYzMTksMjYzMjQsMjYzMzEsMjYzMzUsMjYzNDQsMjYzNDcsMjYzNDgsMjYzNTAsMjYzNjIsMjYzNzMsMjYzNzUsMjYzODIsMjYzODcsMjYzOTMsMjYzOTYsMjY0MDAsMjY0MDIsMjY0MTksMjY0MzAsMjY0MzcsMjY0MzksMjY0NDAsMjY0NDQsMjY0NTIsMjY0NTMsMjY0NjEsMjY0NzAsMjY0NzYsMjY0NzgsMjY0ODQsMjY0ODYsMjY0OTEsMjY0OTcsMjY1MDAsMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTUsMjY1MTgsMjY1MjAsMjY1MjEsMjY1MjMsMjY1NDQsMjY1NDUsMjY1NDYsMjY1NDksMjY1NTUsMjY1NTYsMjY1NTcsMjY2MTcsMjY1NjAsMjY1NjIsMjY1NjMsMjY1NjUsMjY1NjgsMjY1NjksMjY1NzgsMjY1ODMsMjY1ODUsMjY1ODgsMjY1OTMsMjY1OTgsMjY2MDgsMjY2MTAsMjY2MTQsMjY2MTUsMjY3MDYsMjY2NDQsMjY2NDksMjY2NTMsMjY2NTUsMjY2NjQsMjY2NjMsMjY2NjgsMjY2NjksMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzUsMjY2ODMsMjY2ODcsMjY2OTIsMjY2OTMsMjY2OTgsMjY3MDAsMjY3MDksMjY3MTEsMjY3MTIsMjY3MTUsMjY3MzEsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3NDEsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NTQsMjY3NTYsMjY3NTgsMjY3NjAsMjY3NzQsMjY3NzYsMjY3NzgsMjY3ODAsMjY3ODUsMjY3ODcsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTgsMjY4MDIsMjY4MTEsMjY4MjEsMjY4MjQsMjY4MjgsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzgsMjY4NDEsMjY4NDQsMjY4NDUsMjY4NTMsMjY4NTYsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjQsMjY4NjUsMjY4NjksMjY4NzAsMjY4NzUsMjY4NzYsMjY4NzcsMjY4ODYsMjY4ODksMjY4OTAsMjY4OTYsMjY4OTcsMjY4OTksMjY5MDIsMjY5MDMsMjY5MjksMjY5MzEsMjY5MzMsMjY5MzYsMjY5MzksMjY5NDYsMjY5NDksMjY5NTMsMjY5NTgsMjY5NjcsMjY5NzEsMjY5NzksMjY5ODAsMjY5ODEsMjY5ODIsMjY5ODQsMjY5ODUsMjY5ODgsMjY5OTIsMjY5OTMsMjY5OTQsMjcwMDIsMjcwMDMsMjcwMDcsMjcwMDgsMjcwMjEsMjcwMjYsMjcwMzAsMjcwMzIsMjcwNDEsMjcwNDUsMjcwNDYsMjcwNDgsMjcwNTEsMjcwNTMsMjcwNTUsMjcwNjMsMjcwNjQsMjcwNjYsMjcwNjgsMjcwNzcsMjcwODAsMjcwODksMjcwOTQsMjcwOTUsMjcxMDYsMjcxMDksMjcxMTgsMjcxMTksMjcxMjEsMjcxMjMsMjcxMjUsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzksMjcxNTEsMjcxNTMsMjcxNTcsMjcxNjIsMjcxNjUsMjcxNjgsMjcxNzIsMjcxNzYsMjcxODQsMjcxODYsMjcxODgsMjcxOTEsMjcxOTUsMjcxOTgsMjcxOTksMjcyMDUsMjcyMDYsMjcyMDksMjcyMTAsMjcyMTQsMjcyMTYsMjcyMTcsMjcyMTgsMjcyMjEsMjcyMjIsMjcyMjcsMjcyMzYsMjcyMzksMjcyNDIsMjcyNDksMjcyNTEsMjcyNjIsMjcyNjUsMjcyNjcsMjcyNzAsMjcyNzEsMjcyNzMsMjcyNzUsMjcyODEsMjcyOTEsMjcyOTMsMjcyOTQsMjcyOTUsMjczMDEsMjczMDcsMjczMTEsMjczMTIsMjczMTMsMjczMTYsMjczMjUsMjczMjYsMjczMjcsMjczMzQsMjczMzcsMjczMzYsMjczNDAsMjczNDQsMjczNDgsMjczNDksMjczNTAsMjczNTYsMjczNTcsMjczNjQsMjczNjcsMjczNzIsMjczNzYsMjczNzcsMjczNzgsMjczODgsMjczODksMjczOTQsMjczOTUsMjczOTgsMjczOTksMjc0MDEsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTUsMjc0MTksMjc0MjIsMjc0MjgsMjc0MzIsMjc0MzUsMjc0MzYsMjc0MzksMjc0NDUsMjc0NDYsMjc0NTEsMjc0NTUsMjc0NjIsMjc0NjYsMjc0NjksMjc0NzQsMjc0NzgsMjc0ODAsMjc0ODUsMjc0ODgsMjc0OTUsMjc0OTksMjc1MDIsMjc1MDQsMjc1MDksMjc1MTcsMjc1MTgsMjc1MjIsMjc1MjUsMjc1NDMsMjc1NDcsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NjAsMjc1NjEsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjgsMjc1NzYsMjc1NzcsMjc1ODEsMjc1ODIsMjc1ODcsMjc1ODgsMjc1OTMsMjc1OTYsMjc2MDYsMjc2MTAsMjc2MTcsMjc2MTksMjc2MjIsMjc2MjMsMjc2MzAsMjc2MzMsMjc2MzksMjc2NDEsMjc2NDcsMjc2NTAsMjc2NTIsMjc2NTMsMjc2NTcsMjc2NjEsMjc2NjIsMjc2NjQsMjc2NjYsMjc2NzMsMjc2NzksMjc2ODYsMjc2ODcsMjc2ODgsMjc2OTIsMjc2OTQsMjc2OTksMjc3MDEsMjc3MDIsMjc3MDYsMjc3MDcsMjc3MTEsMjc3MjIsMjc3MjMsMjc3MjUsMjc3MjcsMjc3MzAsMjc3MzIsMjc3MzcsMjc3MzksMjc3NDAsMjc3NTUsMjc3NTcsMjc3NTksMjc3NjQsMjc3NjYsMjc3NjgsMjc3NjksMjc3NzEsMjc3ODEsMjc3ODIsMjc3ODMsMjc3ODUsMjc3OTYsMjc3OTcsMjc3OTksMjc4MDAsMjc4MDQsMjc4MDcsMjc4MjQsMjc4MjYsMjc4MjgsMjc4NDIsMjc4NDYsMjc4NTMsMjc4NTUsMjc4NTYsMjc4NTcsMjc4NTgsMjc4NjAsMjc4NjIsMjc4NjYsMjc4NjgsMjc4NzIsMjc4NzksMjc4ODEsMjc4ODMsMjc4ODQsMjc4ODYsMjc4OTAsMjc4OTIsMjc5MDgsMjc5MTEsMjc5MTQsMjc5MTgsMjc5MTksMjc5MjEsMjc5MjMsMjc5MzAsMjc5NDIsMjc5NDMsMjc5NDQsMjc3NTEsMjc5NTAsMjc5NTEsMjc5NTMsMjc5NjEsMjc5NjQsMjc5NjcsMjc5OTEsMjc5OTgsMjc5OTksMjgwMDEsMjgwMDUsMjgwMDcsMjgwMTUsMjgwMTYsMjgwMjgsMjgwMzQsMjgwMzksMjgwNDksMjgwNTAsMjgwNTIsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNzQsMjgwNzYsMjgwODQsMjgwODcsMjgwODksMjgwOTMsMjgwOTUsMjgxMDAsMjgxMDQsMjgxMDYsMjgxMTAsMjgxMTEsMjgxMTgsMjgxMjMsMjgxMjUsMjgxMjcsMjgxMjgsMjgxMzAsMjgxMzMsMjgxMzcsMjgxNDMsMjgxNDQsMjgxNDgsMjgxNTAsMjgxNTYsMjgxNjAsMjgxNjQsMjgxOTAsMjgxOTQsMjgxOTksMjgyMTAsMjgyMTQsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjgsMjgyMjksMjgyMzIsMjgyMzMsMjgyMzUsMjgyMzksMjgyNDEsMjgyNDIsMjgyNDMsMjgyNDQsMjgyNDcsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTgsMjgyNTksMjgyNjQsMjgyNzUsMjgyODMsMjgyODUsMjgzMDEsMjgzMDcsMjgzMTMsMjgzMjAsMjgzMjcsMjgzMzMsMjgzMzQsMjgzMzcsMjgzMzksMjgzNDcsMjgzNTEsMjgzNTIsMjgzNTMsMjgzNTUsMjgzNTksMjgzNjAsMjgzNjIsMjgzNjUsMjgzNjYsMjgzNjcsMjgzOTUsMjgzOTcsMjgzOTgsMjg0MDksMjg0MTEsMjg0MTMsMjg0MjAsMjg0MjQsMjg0MjYsMjg0MjgsMjg0MjksMjg0MzgsMjg0NDAsMjg0NDIsMjg0NDMsMjg0NTQsMjg0NTcsMjg0NTgsMjg0NjMsMjg0NjQsMjg0NjcsMjg0NzAsMjg0NzUsMjg0NzYsMjg0NjEsMjg0OTUsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDksMjg1MTAsMjg1MTMsMjg1MTQsMjg1MjAsMjg1MjQsMjg1NDEsMjg1NDIsMjg1NDcsMjg1NTEsMjg1NTIsMjg1NTUsMjg1NTYsMjg1NTcsMjg1NjAsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjYsMjg1NzAsMjg1NzUsMjg1NzYsMjg1ODEsMjg1ODIsMjg1ODMsMjg1ODQsMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTcsMjg1OTgsMjg2MDQsMjg2MTMsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MzQsMjg2MzgsMjg2NDgsMjg2NDksMjg2NTYsMjg2NjEsMjg2NjUsMjg2NjgsMjg2NjksMjg2NzIsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODUsMjg2OTUsMjg3MDQsMjg3MDcsMjg3MTksMjg3MjQsMjg3MjcsMjg3MjksMjg3MzIsMjg3MzksMjg3NDAsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NTYsMjg3NTcsMjg3NjUsMjg3NjYsMjg3NTAsMjg3NzIsMjg3NzMsMjg3ODAsMjg3ODIsMjg3ODksMjg3OTAsMjg3OTgsMjg4MDEsMjg4MDUsMjg4MDYsMjg4MjAsMjg4MjEsMjg4MjIsMjg4MjMsMjg4MjQsMjg4MjcsMjg4MzYsMjg4NDMsMjg4NDgsMjg4NDksMjg4NTIsMjg4NTUsMjg4NzQsMjg4ODEsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODgsMjg4OTIsMjg5MDAsMjg5MjIsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzksMjg5NDAsMjg5NDMsMjg5NTgsMjg5NjAsMjg5NzEsMjg5NzMsMjg5NzUsMjg5NzYsMjg5NzcsMjg5ODQsMjg5OTMsMjg5OTcsMjg5OTgsMjg5OTksMjkwMDIsMjkwMDMsMjkwMDgsMjkwMTAsMjkwMTUsMjkwMTgsMjkwMjAsMjkwMjIsMjkwMjQsMjkwMzIsMjkwNDksMjkwNTYsMjkwNjEsMjkwNjMsMjkwNjgsMjkwNzQsMjkwODIsMjkwODMsMjkwODgsMjkwOTAsMjkxMDMsMjkxMDQsMjkxMDYsMjkxMDcsMjkxMTQsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjQsMjkxMzEsMjkxMzIsMjkxMzksMjkxNDIsMjkxNDUsMjkxNDYsMjkxNDgsMjkxNzYsMjkxODIsMjkxODQsMjkxOTEsMjkxOTIsMjkxOTMsMjkyMDMsMjkyMDcsMjkyMTAsMjkyMTMsMjkyMTUsMjkyMjAsMjkyMjcsMjkyMzEsMjkyMzYsMjkyNDAsMjkyNDEsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTMsMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjcsMjkyNjksMjkyNzAsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODgsMjkyOTEsMjkyOTQsMjkyOTUsMjkyOTcsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMTEsMjkzMTYsMjkzMjEsMjkzMjUsMjkzMjYsMjkzMzEsMjkzMzksMjkzNTIsMjkzNTcsMjkzNTgsMjkzNjEsMjkzNjQsMjkzNzQsMjkzNzcsMjkzODMsMjkzODUsMjkzODgsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDcsMjk0MTMsMjk0MjcsMjk0MjgsMjk0MzQsMjk0MzUsMjk0MzgsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDcsMjk0NTEsMjk0NTMsMjk0NTgsMjk0NTksMjk0NjQsMjk0NjUsMjk0NzAsMjk0NzQsMjk0NzYsMjk0NzksMjk0ODAsMjk0ODQsMjk0ODksMjk0OTAsMjk0OTMsMjk0OTgsMjk0OTksMjk1MDEsMjk1MDcsMjk1MTcsMjk1MjAsMjk1MjIsMjk1MjYsMjk1MjgsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzYsMjk1NDIsMjk1NDMsMjk1NDUsMjk1NDcsMjk1NDgsMjk1NTAsMjk1NTEsMjk1NTMsMjk1NTksMjk1NjEsMjk1NjQsMjk1NjgsMjk1NjksMjk1NzEsMjk1NzMsMjk1NzQsMjk1ODIsMjk1ODQsMjk1ODcsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTYsMjk1OTgsMjk1OTksMjk2MDAsMjk2MDIsMjk2MDUsMjk2MDYsMjk2MTAsMjk2MTEsMjk2MTMsMjk2MjEsMjk2MjMsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzEsMjk2MzcsMjk2MzgsMjk2NDEsMjk2NDMsMjk2NDQsMjk2NDcsMjk2NTAsMjk2NTEsMjk2NTQsMjk2NTcsMjk2NjEsMjk2NjUsMjk2NjcsMjk2NzAsMjk2NzEsMjk2NzMsMjk2ODQsMjk2ODUsMjk2ODcsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTMsMjk2OTUsMjk2OTYsMjk2OTcsMjk3MDAsMjk3MDMsMjk3MDYsMjk3MTMsMjk3MjIsMjk3MjMsMjk3MzIsMjk3MzQsMjk3MzYsMjk3MzcsMjk3MzgsMjk3MzksMjk3NDAsMjk3NDEsMjk3NDIsMjk3NDMsMjk3NDQsMjk3NDUsMjk3NTMsMjk3NjAsMjk3NjMsMjk3NjQsMjk3NjYsMjk3NjcsMjk3NzEsMjk3NzMsMjk3NzcsMjk3NzgsMjk3ODMsMjk3ODksMjk3OTQsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDMsMjk4MDUsMjk4MDYsMjk4MDksMjk4MTAsMjk4MjQsMjk4MjUsMjk4MjksMjk4MzAsMjk4MzEsMjk4MzMsMjk4MzksMjk4NDAsMjk4NDEsMjk4NDIsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTIsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTksMjk4NjIsMjk4NjQsMjk4NjUsMjk4NjYsMjk4NjcsMjk4NzAsMjk4NzEsMjk4NzMsMjk4NzQsMjk4NzcsMjk4ODEsMjk4ODMsMjk4ODcsMjk4OTYsMjk4OTcsMjk5MDAsMjk5MDQsMjk5MDcsMjk5MTIsMjk5MTQsMjk5MTUsMjk5MTgsMjk5MTksMjk5MjQsMjk5MjgsMjk5MzAsMjk5MzEsMjk5MzUsMjk5NDAsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NTEsMjk5NTgsMjk5NzAsMjk5NzQsMjk5NzUsMjk5ODQsMjk5ODUsMjk5ODgsMjk5OTEsMjk5OTMsMjk5OTQsMjk5OTksMzAwMDYsMzAwMDksMzAwMTMsMzAwMTQsMzAwMTUsMzAwMTYsMzAwMTksMzAwMjMsMzAwMjQsMzAwMzAsMzAwMzIsMzAwMzQsMzAwMzksMzAwNDYsMzAwNDcsMzAwNDksMzAwNjMsMzAwNjUsMzAwNzMsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODEsMzAwODUsMzAwOTYsMzAwOTgsMzAwOTksMzAxMDEsMzAxMDUsMzAxMDgsMzAxMTQsMzAxMTYsMzAxMzIsMzAxMzgsMzAxNDMsMzAxNDQsMzAxNDUsMzAxNDgsMzAxNTAsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjcsMzAxNzIsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODAsMzAxODMsMzAxODgsMzAxOTAsMzAxOTEsMzAxOTMsMzAyMDEsMzAyMDgsMzAyMTAsMzAyMTEsMzAyMTIsMzAyMTUsMzAyMTYsMzAyMTgsMzAyMjAsMzAyMjMsMzAyMjYsMzAyMjcsMzAyMjksMzAyMzAsMzAyMzMsMzAyMzUsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDMsMzAyNDUsMzAyNDYsMzAyNDksMzAyNTMsMzAyNTgsMzAyNTksMzAyNjEsMzAyNjQsMzAyNjUsMzAyNjYsMzAyNjgsMzAyODIsMzAyNzIsMzAyNzMsMzAyNzUsMzAyNzYsMzAyNzcsMzAyODEsMzAyODMsMzAyOTMsMzAyOTcsMzAzMDMsMzAzMDgsMzAzMDksMzAzMTcsMzAzMTgsMzAzMTksMzAzMjEsMzAzMjQsMzAzMzcsMzAzNDEsMzAzNDgsMzAzNDksMzAzNTcsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjcsMzAzNjgsMzAzNzAsMzAzNzEsMzAzNzIsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzgsMzAzODEsMzAzOTcsMzA0MDEsMzA0MDUsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTQsMzA0MjAsMzA0MjUsMzA0MzIsMzA0MzgsMzA0NDAsMzA0NDQsMzA0NDgsMzA0NDksMzA0NTQsMzA0NTcsMzA0NjAsMzA0NjQsMzA0NzAsMzA0NzQsMzA0NzgsMzA0ODIsMzA0ODQsMzA0ODUsMzA0ODcsMzA0ODksMzA0OTAsMzA0OTIsMzA0OTgsMzA1MDQsMzA1MDksMzA1MTAsMzA1MTEsMzA1MTYsMzA1MTcsMzA1MTgsMzA1MjEsMzA1MjUsMzA1MjYsMzA1MzAsMzA1MzMsMzA1MzQsMzA1MzgsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NTAsMzA1NTEsMzA1NTYsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjIsMzA1NjQsMzA1NjcsMzA1NzAsMzA1NzIsMzA1NzYsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODYsMzA1ODksMzA1OTIsMzA1OTYsMzA2MDQsMzA2MDUsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTgsMzA2MjMsMzA2MjYsMzA2MzEsMzA2MzQsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDUsMzA2NTQsMzA2NTksMzA2NjUsMzA2NzMsMzA2NzQsMzA2NzcsMzA2ODEsMzA2ODYsMzA2ODcsMzA2ODgsMzA2OTIsMzA2OTQsMzA2OTgsMzA3MDAsMzA3MDQsMzA3MDUsMzA3MDgsMzA3MTIsMzA3MTUsMzA3MjUsMzA3MjYsMzA3MjksMzA3MzMsMzA3MzQsMzA3MzcsMzA3NDksMzA3NTMsMzA3NTQsMzA3NTUsMzA3NjUsMzA3NjYsMzA3NjgsMzA3NzMsMzA3NzUsMzA3ODcsMzA3ODgsMzA3OTEsMzA3OTIsMzA3OTYsMzA3OTgsMzA4MDIsMzA4MTIsMzA4MTQsMzA4MTYsMzA4MTcsMzA4MTksMzA4MjAsMzA4MjQsMzA4MjYsMzA4MzAsMzA4NDIsMzA4NDYsMzA4NTgsMzA4NjMsMzA4NjgsMzA4NzIsMzA4ODEsMzA4NzcsMzA4NzgsMzA4NzksMzA4ODQsMzA4ODgsMzA4OTIsMzA4OTMsMzA4OTYsMzA4OTcsMzA4OTgsMzA4OTksMzA5MDcsMzA5MDksMzA5MTEsMzA5MTksMzA5MjAsMzA5MjEsMzA5MjQsMzA5MjYsMzA5MzAsMzA5MzEsMzA5MzMsMzA5MzQsMzA5NDgsMzA5MzksMzA5NDMsMzA5NDQsMzA5NDUsMzA5NTAsMzA5NTQsMzA5NjIsMzA5NjMsMzA5NzYsMzA5NjYsMzA5NjcsMzA5NzAsMzA5NzEsMzA5NzUsMzA5ODIsMzA5ODgsMzA5OTIsMzEwMDIsMzEwMDQsMzEwMDYsMzEwMDcsMzEwMDgsMzEwMTMsMzEwMTUsMzEwMTcsMzEwMjEsMzEwMjUsMzEwMjgsMzEwMjksMzEwMzUsMzEwMzcsMzEwMzksMzEwNDQsMzEwNDUsMzEwNDYsMzEwNTAsMzEwNTEsMzEwNTUsMzEwNTcsMzEwNjAsMzEwNjQsMzEwNjcsMzEwNjgsMzEwNzksMzEwODEsMzEwODMsMzEwOTAsMzEwOTcsMzEwOTksMzExMDAsMzExMDIsMzExMTUsMzExMTYsMzExMjEsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjgsMzExMzEsMzExMzIsMzExMzcsMzExNDQsMzExNDUsMzExNDcsMzExNTEsMzExNTMsMzExNTYsMzExNjAsMzExNjMsMzExNzAsMzExNzIsMzExNzUsMzExNzYsMzExNzgsMzExODMsMzExODgsMzExOTAsMzExOTQsMzExOTcsMzExOTgsMzEyMDAsMzEyMDIsMzEyMDUsMzEyMTAsMzEyMTEsMzEyMTMsMzEyMTcsMzEyMjQsMzEyMjgsMzEyMzQsMzEyMzUsMzEyMzksMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDksMzEyNTMsMzEyNTksMzEyNjIsMzEyNjUsMzEyNzEsMzEyNzUsMzEyNzcsMzEyNzksMzEyODAsMzEyODQsMzEyODUsMzEyODgsMzEyODksMzEyOTAsMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDgsMzEzMTcsMzEzMTgsMzEzMjEsMzEzMjQsMzEzMjUsMzEzMjcsMzEzMjgsMzEzMzMsMzEzMzUsMzEzMzgsMzEzNDEsMzEzNDksMzEzNTIsMzEzNTgsMzEzNjAsMzEzNjIsMzEzNjUsMzEzNjYsMzEzNzAsMzEzNzEsMzEzNzYsMzEzNzcsMzEzODAsMzEzOTAsMzEzOTIsMzEzOTUsMzE0MDQsMzE0MTEsMzE0MTMsMzE0MTcsMzE0MTksMzE0MjAsMzE0MzAsMzE0MzMsMzE0MzYsMzE0MzgsMzE0NDEsMzE0NTEsMzE0NjQsMzE0NjUsMzE0NjcsMzE0NjgsMzE0NzMsMzE0NzYsMzE0ODMsMzE0ODUsMzE0ODYsMzE0OTUsMzE1MDgsMzE1MTksMzE1MjMsMzE1MjcsMzE1MjksMzE1MzAsMzE1MzEsMzE1MzMsMzE1MzQsMzE1MzUsMzE1MzYsMzE1MzcsMzE1NDAsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTksMzE1NjYsMzE1NzMsMzE1ODQsMzE1ODgsMzE1OTAsMzE1OTMsMzE1OTQsMzE1OTcsMzE1OTksMzE2MDIsMzE2MDMsMzE2MDcsMzE2MjAsMzE2MjUsMzE2MzAsMzE2MzIsMzE2MzMsMzE2MzgsMzE2NDMsMzE2NDYsMzE2NDgsMzE2NTMsMzE2NjAsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjksMzE2NzAsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2ODIsMzE2ODUsMzE2ODgsMzE2OTAsMzE3MDAsMzE3MDIsMzE3MDMsMzE3MDUsMzE3MDYsMzE3MDcsMzE3MjAsMzE3MjIsMzE3MzAsMzE3MzIsMzE3MzMsMzE3MzYsMzE3MzcsMzE3MzgsMzE3NDAsMzE3NDIsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NTAsMzE3NTMsMzE3NTUsMzE3NTYsMzE3NTgsMzE3NTksMzE3NjksMzE3NzEsMzE3NzYsMzE3ODEsMzE3ODIsMzE3ODQsMzE3ODgsMzE3OTMsMzE3OTUsMzE3OTYsMzE3OTgsMzE4MDEsMzE4MDIsMzE4MTQsMzE4MTgsMzE4MjksMzE4MjUsMzE4MjYsMzE4MjcsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4NDEsMzE4NDMsMzE4NDcsMzE4NDksMzE4NTMsMzE4NTQsMzE4NTYsMzE4NTgsMzE4NjUsMzE4NjgsMzE4NjksMzE4NzgsMzE4NzksMzE4ODcsMzE4OTIsMzE5MDIsMzE5MDQsMzE5MTAsMzE5MjAsMzE5MjYsMzE5MjcsMzE5MzAsMzE5MzEsMzE5MzIsMzE5MzUsMzE5NDAsMzE5NDMsMzE5NDQsMzE5NDUsMzE5NDksMzE5NTEsMzE5NTUsMzE5NTYsMzE5NTcsMzE5NTksMzE5NjEsMzE5NjIsMzE5NjUsMzE5NzQsMzE5NzcsMzE5NzksMzE5ODksMzIwMDMsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTUsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjIsMzIwMjksMzIwMzAsMzIwMzUsMzIwMzgsMzIwNDIsMzIwNDUsMzIwNDksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjQsMzIwNjUsMzIwNzEsMzIwNzIsMzIwNzcsMzIwODEsMzIwODMsMzIwODcsMzIwODksMzIwOTAsMzIwOTIsMzIwOTMsMzIxMDEsMzIxMDMsMzIxMDYsMzIxMTIsMzIxMjAsMzIxMjIsMzIxMjMsMzIxMjcsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzMsMzIxMzQsMzIxMzYsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDUsMzIxNTAsMzIxNTEsMzIxNTcsMzIxNTgsMzIxNjYsMzIxNjcsMzIxNzAsMzIxNzksMzIxODIsMzIxODMsMzIxODUsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMTUsMzIyMTcsMzIyNTYsMzIyMjYsMzIyMjksMzIyMzAsMzIyMzQsMzIyMzUsMzIyMzcsMzIyNDEsMzIyNDUsMzIyNDYsMzIyNDksMzIyNTAsMzIyNjQsMzIyNzIsMzIyNzMsMzIyNzcsMzIyNzksMzIyODQsMzIyODUsMzIyODgsMzIyOTUsMzIyOTYsMzIzMDAsMzIzMDEsMzIzMDMsMzIzMDcsMzIzMTAsMzIzMTksMzIzMjQsMzIzMjUsMzIzMjcsMzIzMzQsMzIzMzYsMzIzMzgsMzIzNDQsMzIzNTEsMzIzNTMsMzIzNTQsMzIzNTcsMzIzNjMsMzIzNjYsMzIzNjcsMzIzNzEsMzIzNzYsMzIzODIsMzIzODUsMzIzOTAsMzIzOTEsMzIzOTQsMzIzOTcsMzI0MDEsMzI0MDUsMzI0MDgsMzI0MTAsMzI0MTMsMzI0MTQsMzI1NzIsMzI1NzEsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzksMzI1ODAsMzI1ODMsMzI1OTEsMzI1OTQsMzI1OTUsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDksMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MjEsMzI2MjUsMzI2MzcsMzI2MzgsMzI2MzksMzI2NDAsMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NjIsMzI2NjMsMzI2NjgsMzI2NzMsMzI2NzQsMzI2NzgsMzI2ODIsMzI2ODUsMzI2OTIsMzI3MDAsMzI3MDMsMzI3MDQsMzI3MDcsMzI3MTIsMzI3MTgsMzI3MTksMzI3MzEsMzI3MzUsMzI3MzksMzI3NDEsMzI3NDQsMzI3NDgsMzI3NTAsMzI3NTEsMzI3NTQsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzUsMzI3NzYsMzI3NzgsMzI3ODEsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3ODgsMzI3OTAsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDAsMzI4MDQsMzI4MDYsMzI4MTIsMzI4MTQsMzI4MTYsMzI4MjAsMzI4MjEsMzI4MjMsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzYsMzI4NjQsMzI4NjgsMzI4NzAsMzI4NzcsMzI4ODEsMzI4ODUsMzI4OTcsMzI5MDQsMzI5MTAsMzI5MjQsMzI5MjYsMzI5MzQsMzI5MzUsMzI5MzksMzI5NTIsMzI5NTMsMzI5NjgsMzI5NzMsMzI5NzUsMzI5NzgsMzI5ODAsMzI5ODEsMzI5ODMsMzI5ODQsMzI5OTIsMzMwMDUsMzMwMDYsMzMwMDgsMzMwMTAsMzMwMTEsMzMwMTQsMzMwMTcsMzMwMTgsMzMwMjIsMzMwMjcsMzMwMzUsMzMwNDYsMzMwNDcsMzMwNDgsMzMwNTIsMzMwNTQsMzMwNTYsMzMwNjAsMzMwNjMsMzMwNjgsMzMwNzIsMzMwNzcsMzMwODIsMzMwODQsMzMwOTMsMzMwOTUsMzMwOTgsMzMxMDAsMzMxMDYsMzMxMTEsMzMxMjAsMzMxMjEsMzMxMjcsMzMxMjgsMzMxMjksMzMxMzMsMzMxMzUsMzMxNDMsMzMxNTMsMzMxNjgsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNjMsMzMxNjYsMzMxNzQsMzMxNzYsMzMxNzksMzMxODIsMzMxODYsMzMxOTgsMzMyMDIsMzMyMDQsMzMyMTEsMzMyMjcsMzMyMTksMzMyMjEsMzMyMjYsMzMyMzAsMzMyMzEsMzMyMzcsMzMyMzksMzMyNDMsMzMyNDUsMzMyNDYsMzMyNDksMzMyNTIsMzMyNTksMzMyNjAsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzIsMzMyNzMsMzMyNzcsMzMyNzksMzMyODAsMzMyODMsMzMyOTUsMzMyOTksMzMzMDAsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTMsMzMzMTQsMzMzMjAsMzMzMzAsMzMzMzIsMzMzMzgsMzMzNDcsMzMzNDgsMzMzNDksMzMzNTAsMzMzNTUsMzMzNTgsMzMzNTksMzMzNjEsMzMzNjYsMzMzNzIsMzMzNzYsMzMzNzksMzMzODMsMzMzODksMzMzOTYsMzM0MDMsMzM0MDUsMzM0MDcsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTIsMzM0MTUsMzM0MTcsMzM0MTgsMzM0MjIsMzM0MjUsMzM0MjgsMzM0MzAsMzM0MzIsMzM0MzQsMzM0MzUsMzM0NDAsMzM0NDEsMzM0NDMsMzM0NDQsMzM0NDcsMzM0NDgsMzM0NDksMzM0NTAsMzM0NTQsMzM0NTYsMzM0NTgsMzM0NjAsMzM0NjMsMzM0NjYsMzM0NjgsMzM0NzAsMzM0NzEsMzM0NzgsMzM0ODgsMzM0OTMsMzM0OTgsMzM1MDQsMzM1MDYsMzM1MDgsMzM1MTIsMzM1MTQsMzM1MTcsMzM1MTksMzM1MjYsMzM1MjcsMzM1MzMsMzM1MzQsMzM1MzYsMzM1MzcsMzM1NDMsMzM1NDQsMzM1NDYsMzM1NDcsMzM2MjAsMzM1NjMsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjksMzM1NzAsMzM1ODAsMzM1ODEsMzM1ODIsMzM1ODQsMzM1ODcsMzM1OTEsMzM1OTQsMzM1OTYsMzM1OTcsMzM2MDIsMzM2MDMsMzM2MDQsMzM2MDcsMzM2MTMsMzM2MTQsMzM2MTcsMzM2MjEsMzM2MjIsMzM2MjMsMzM2NDgsMzM2NTYsMzM2NjEsMzM2NjMsMzM2NjQsMzM2NjYsMzM2NjgsMzM2NzAsMzM2NzcsMzM2ODIsMzM2ODQsMzM2ODUsMzM2ODgsMzM2ODksMzM2OTEsMzM2OTIsMzM2OTMsMzM3MDIsMzM3MDMsMzM3MDUsMzM3MDgsMzM3MjYsMzM3MjcsMzM3MjgsMzM3MzUsMzM3MzcsMzM3NDMsMzM3NDQsMzM3NDUsMzM3NDgsMzM3NTcsMzM2MTksMzM3NjgsMzM3NzAsMzM3ODIsMzM3ODQsMzM3ODUsMzM3ODgsMzM3OTMsMzM3OTgsMzM4MDIsMzM4MDcsMzM4MDksMzM4MTMsMzM4MTcsMzM3MDksMzM4MzksMzM4NDksMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjYsMzM4NjksMzM4NzEsMzM4NzMsMzM4NzQsMzM4NzgsMzM4ODAsMzM4ODEsMzM4ODIsMzM4ODQsMzM4ODgsMzM4OTIsMzM4OTMsMzM4OTUsMzM4OTgsMzM5MDQsMzM5MDcsMzM5MDgsMzM5MTAsMzM5MTIsMzM5MTYsMzM5MTcsMzM5MjEsMzM5MjUsMzM5MzgsMzM5MzksMzM5NDEsMzM5NTAsMzM5NTgsMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjcsMzM5NjksMzM5NzIsMzM5NzgsMzM5ODEsMzM5ODIsMzM5ODQsMzM5ODYsMzM5OTEsMzM5OTIsMzM5OTYsMzM5OTksMzQwMDMsMzQwMTIsMzQwMjMsMzQwMjYsMzQwMzEsMzQwMzIsMzQwMzMsMzQwMzQsMzQwMzksMzQwOTgsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNTAsMzQwNTEsMzQwNTUsMzQwNjAsMzQwNjIsMzQwNjQsMzQwNzYsMzQwNzgsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODcsMzQwOTAsMzQwOTEsMzQwOTUsMzQwOTksMzQxMDAsMzQxMDIsMzQxMTEsMzQxMTgsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzQsMzQxMzcsMzQxNDAsMzQxNDEsMzQxNDIsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDgsMzQxNTUsMzQxNTksMzQxNjksMzQxNzAsMzQxNzEsMzQxNzMsMzQxNzUsMzQxNzcsMzQxODEsMzQxODIsMzQxODUsMzQxODcsMzQxODgsMzQxOTEsMzQxOTUsMzQyMDAsMzQyMDUsMzQyMDcsMzQyMDgsMzQyMTAsMzQyMTMsMzQyMTUsMzQyMjgsMzQyMzAsMzQyMzEsMzQyMzIsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDIsMzQyNDcsMzQyNTAsMzQyNTEsMzQyNTQsMzQyMjEsMzQyNjQsMzQyNjYsMzQyNzEsMzQyNzIsMzQyNzgsMzQyODAsMzQyODUsMzQyOTEsMzQyOTQsMzQzMDAsMzQzMDMsMzQzMDQsMzQzMDgsMzQzMDksMzQzMTcsMzQzMTgsMzQzMjAsMzQzMjEsMzQzMjIsMzQzMjgsMzQzMjksMzQzMzEsMzQzMzQsMzQzMzcsMzQzNDMsMzQzNDUsMzQzNTgsMzQzNjAsMzQzNjIsMzQzNjQsMzQzNjUsMzQzNjgsMzQzNzAsMzQzNzQsMzQzODYsMzQzODcsMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTcsMzQ0MDAsMzQ0MDEsMzQ0MDIsMzQ0MDMsMzQ0MDQsMzQ0MDksMzQ0MTIsMzQ0MTUsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjYsMzQ0NDUsMzQ0NDksMzQ0NTQsMzQ0NTYsMzQ0NTgsMzQ0NjAsMzQ0NjUsMzQ0NzAsMzQ0NzEsMzQ0NzIsMzQ0NzcsMzQ0ODEsMzQ0ODMsMzQ0ODQsMzQ0ODUsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTUsMzQ0OTYsMzQ0OTcsMzQ0OTksMzQ1MDEsMzQ1MTMsMzQ1MTQsMzQ1MTcsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjgsMzQ1MzEsMzQ1MzMsMzQ1MzUsMzQ0NDAsMzQ1NTQsMzQ1NTYsMzQ1NTcsMzQ1NjQsMzQ1NjUsMzQ1NjcsMzQ1NzEsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzksMzQ1ODAsMzQ1ODUsMzQ1OTAsMzQ1OTEsMzQ1OTMsMzQ1OTUsMzQ2MDAsMzQ2MDYsMzQ2MDcsMzQ2MDksMzQ2MTAsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjIsMzQ2MjQsMzQ2MjcsMzQ2MjksMzQ2MzcsMzQ2NDgsMzQ2NTMsMzQ2NTcsMzQ2NjAsMzQ2NjEsMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2ODMsMzQ2OTEsMzQ2OTIsMzQ2OTMsMzQ2OTQsMzQ2OTUsMzQ2OTYsMzQ2OTcsMzQ2OTksMzQ3MDAsMzQ3MDQsMzQ3MDcsMzQ3MDksMzQ3MTEsMzQ3MTIsMzQ3MTMsMzQ3MTgsMzQ3MjAsMzQ3MjMsMzQ3MjcsMzQ3MzIsMzQ3MzMsMzQ3MzQsMzQ3MzcsMzQ3NDEsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NjAsMzQ3NjEsMzQ3NjIsMzQ3NjYsMzQ3NzMsMzQ3NzQsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODMsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTQsMzQ3OTUsMzQ3OTcsMzQ4MDEsMzQ4MDMsMzQ4MDgsMzQ4MTAsMzQ4MTUsMzQ4MTcsMzQ4MTksMzQ4MjIsMzQ4MjUsMzQ4MjYsMzQ4MjcsMzQ4MzIsMzQ4NDEsMzQ4MzQsMzQ4MzUsMzQ4MzYsMzQ4NDAsMzQ4NDIsMzQ4NDMsMzQ4NDQsMzQ4NDYsMzQ4NDcsMzQ4NTYsMzQ4NjEsMzQ4NjIsMzQ4NjQsMzQ4NjYsMzQ4NjksMzQ4NzQsMzQ4NzYsMzQ4ODEsMzQ4ODMsMzQ4ODUsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTcsMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDgsMzQ5MTEsMzQ5MTIsMzQ5MTYsMzQ5MjEsMzQ5MjksMzQ5MzcsMzQ5MzksMzQ5NDQsMzQ5NjgsMzQ5NzAsMzQ5NzEsMzQ5NzIsMzQ5NzUsMzQ5NzYsMzQ5ODQsMzQ5ODYsMzUwMDIsMzUwMDUsMzUwMDYsMzUwMDgsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjIsMzUwMjUsMzUwMjYsMzUwMjcsMzUwMzUsMzUwMzgsMzUwNDcsMzUwNTUsMzUwNTYsMzUwNTcsMzUwNjEsMzUwNjMsMzUwNzMsMzUwNzgsMzUwODUsMzUwODYsMzUwODcsMzUwOTMsMzUwOTQsMzUwOTYsMzUwOTcsMzUwOTgsMzUxMDAsMzUxMDQsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMjAsMzUxMjEsMzUxMjIsMzUxMjUsMzUxMjksMzUxMzAsMzUxMzQsMzUxMzYsMzUxMzgsMzUxNDEsMzUxNDIsMzUxNDUsMzUxNTEsMzUxNTQsMzUxNTksMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzksMzUxODIsMzUxODQsMzUxODcsMzUxODksMzUxOTQsMzUxOTUsMzUxOTYsMzUxOTcsMzUyMDksMzUyMTMsMzUyMTYsMzUyMjAsMzUyMjEsMzUyMjcsMzUyMjgsMzUyMzEsMzUyMzIsMzUyMzcsMzUyNDgsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNjAsMzUyODQsMzUyODUsMzUyODYsMzUyODcsMzUyODgsMzUzMDEsMzUzMDUsMzUzMDcsMzUzMDksMzUzMTMsMzUzMTUsMzUzMTgsMzUzMjEsMzUzMjUsMzUzMjcsMzUzMzIsMzUzMzMsMzUzMzUsMzUzNDMsMzUzNDUsMzUzNDYsMzUzNDgsMzUzNDksMzUzNTgsMzUzNjAsMzUzNjIsMzUzNjQsMzUzNjYsMzUzNzEsMzUzNzIsMzUzNzUsMzUzODEsMzUzODMsMzUzODksMzUzOTAsMzUzOTIsMzUzOTUsMzUzOTcsMzUzOTksMzU0MDEsMzU0MDUsMzU0MDYsMzU0MTEsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MjAsMzU0MjEsMzU0MjUsMzU0MjksMzU0MzEsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDksMzU0NTAsMzU0NTEsMzU0NTQsMzU0NTUsMzU0NTYsMzU0NTksMzU0NjIsMzU0NjcsMzU0NzEsMzU0NzIsMzU0NzQsMzU0NzgsMzU0NzksMzU0ODEsMzU0ODcsMzU0OTUsMzU0OTcsMzU1MDIsMzU1MDMsMzU1MDcsMzU1MTAsMzU1MTEsMzU1MTUsMzU1MTgsMzU1MjMsMzU1MjYsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzcsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDMsMzU1NDksMzU1NTEsMzU1NjQsMzU1NjgsMzU1NzIsMzU1NzMsMzU1NzQsMzU1ODAsMzU1ODMsMzU1ODksMzU1OTAsMzU1OTUsMzU2MDEsMzU2MTIsMzU2MTQsMzU2MTUsMzU1OTQsMzU2MjksMzU2MzIsMzU2MzksMzU2NDQsMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMzU2NTQsMzU2NTYsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NzMsMzU2NjEsMzU2NzgsMzU2ODMsMzU2OTMsMzU3MDIsMzU3MDQsMzU3MDUsMzU3MDgsMzU3MTAsMzU3MTMsMzU3MTYsMzU3MTcsMzU3MjMsMzU3MjUsMzU3MjcsMzU3MzIsMzU3MzMsMzU3NDAsMzU3NDIsMzU3NDMsMzU4OTYsMzU4OTcsMzU5MDEsMzU5MDIsMzU5MDksMzU5MTEsMzU5MTMsMzU5MTUsMzU5MTksMzU5MjEsMzU5MjMsMzU5MjQsMzU5MjcsMzU5MjgsMzU5MzEsMzU5MzMsMzU5MjksMzU5MzksMzU5NDAsMzU5NDIsMzU5NDQsMzU5NDUsMzU5NDksMzU5NTUsMzU5NTcsMzU5NTgsMzU5NjMsMzU5NjYsMzU5NzQsMzU5NzUsMzU5NzksMzU5ODQsMzU5ODYsMzU5ODcsMzU5OTMsMzU5OTUsMzU5OTYsMzYwMDQsMzYwMjUsMzYwMjYsMzYwMzcsMzYwMzgsMzYwNDEsMzYwNDMsMzYwNDcsMzYwNTQsMzYwNTMsMzYwNTcsMzYwNjEsMzYwNjUsMzYwNzIsMzYwNzYsMzYwNzksMzYwODAsMzYwODIsMzYwODUsMzYwODcsMzYwODgsMzYwOTQsMzYwOTUsMzYwOTcsMzYwOTksMzYxMDUsMzYxMTQsMzYxMTksMzYxMjMsMzYxOTcsMzYyMDEsMzYyMDQsMzYyMDYsMzYyMjMsMzYyMjYsMzYyMjgsMzYyMzIsMzYyMzcsMzYyNDAsMzYyNDEsMzYyNDUsMzYyNTQsMzYyNTUsMzYyNTYsMzYyNjIsMzYyNjcsMzYyNjgsMzYyNzEsMzYyNzQsMzYyNzcsMzYyNzksMzYyODEsMzYyODMsMzYyODgsMzYyOTMsMzYyOTQsMzYyOTUsMzYyOTYsMzYyOTgsMzYzMDIsMzYzMDUsMzYzMDgsMzYzMDksMzYzMTEsMzYzMTMsMzYzMjQsMzYzMjUsMzYzMjcsMzYzMzIsMzYzMzYsMzYyODQsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDksMzYzNTMsMzYzNTYsMzYzNTcsMzYzNTgsMzYzNjMsMzYzNjksMzYzNzIsMzYzNzQsMzYzODQsMzYzODUsMzYzODYsMzYzODcsMzYzOTAsMzYzOTEsMzY0MDEsMzY0MDMsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MDksMzY0MTMsMzY0MTYsMzY0MTcsMzY0MjcsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzYsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDksMzY0NTAsMzY0NTcsMzY0NjAsMzY0NjEsMzY0NjMsMzY0NjQsMzY0NjUsMzY0NzMsMzY0NzQsMzY0NzUsMzY0ODIsMzY0ODMsMzY0ODksMzY0OTYsMzY0OTgsMzY1MDEsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTAsMzY1MTQsMzY1MTksMzY1MjEsMzY1MjUsMzY1MjYsMzY1MzEsMzY1MzMsMzY1MzgsMzY1MzksMzY1NDQsMzY1NDUsMzY1NDcsMzY1NDgsMzY1NTEsMzY1NTksMzY1NjEsMzY1NjQsMzY1NzIsMzY1ODQsMzY1OTAsMzY1OTIsMzY1OTMsMzY1OTksMzY2MDEsMzY2MDIsMzY1ODksMzY2MDgsMzY2MTAsMzY2MTUsMzY2MTYsMzY2MjMsMzY2MjQsMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzgsMzY2NDAsMzY2NDEsMzY2NDMsMzY2NDUsMzY2NDcsMzY2NDgsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjYsMzY2NzIsMzY2NzMsMzY2NzUsMzY2NzksMzY2ODcsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTYsMzY3MDEsMzY3MDIsMzY3MDksMzY3NjUsMzY3NjgsMzY3NjksMzY3NzIsMzY3NzMsMzY3NzQsMzY3ODksMzY3OTAsMzY3OTIsMzY3OTgsMzY4MDAsMzY4MDEsMzY4MDYsMzY4MTAsMzY4MTEsMzY4MTMsMzY4MTYsMzY4MTgsMzY4MTksMzY4MjEsMzY4MzIsMzY4MzUsMzY4MzYsMzY4NDAsMzY4NDYsMzY4NDksMzY4NTMsMzY4NTQsMzY4NTksMzY4NjIsMzY4NjYsMzY4NjgsMzY4NzIsMzY4NzYsMzY4ODgsMzY4OTEsMzY5MDQsMzY5MDUsMzY5MTEsMzY5MDYsMzY5MDgsMzY5MDksMzY5MTUsMzY5MTYsMzY5MTksMzY5MjcsMzY5MzEsMzY5MzIsMzY5NDAsMzY5NTUsMzY5NTcsMzY5NjIsMzY5NjYsMzY5NjcsMzY5NzIsMzY5NzYsMzY5ODAsMzY5ODUsMzY5OTcsMzcwMDAsMzcwMDMsMzcwMDQsMzcwMDYsMzcwMDgsMzcwMTMsMzcwMTUsMzcwMTYsMzcwMTcsMzcwMTksMzcwMjQsMzcwMjUsMzcwMjYsMzcwMjksMzcwNDAsMzcwNDIsMzcwNDMsMzcwNDQsMzcwNDYsMzcwNTMsMzcwNjgsMzcwNTQsMzcwNTksMzcwNjAsMzcwNjEsMzcwNjMsMzcwNjQsMzcwNzcsMzcwNzksMzcwODAsMzcwODEsMzcwODQsMzcwODUsMzcwODcsMzcwOTMsMzcwNzQsMzcxMTAsMzcwOTksMzcxMDMsMzcxMDQsMzcxMDgsMzcxMTgsMzcxMTksMzcxMjAsMzcxMjQsMzcxMjUsMzcxMjYsMzcxMjgsMzcxMzMsMzcxMzYsMzcxNDAsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDgsMzcxNTAsMzcxNTIsMzcxNTcsMzcxNTQsMzcxNTUsMzcxNTksMzcxNjEsMzcxNjYsMzcxNjcsMzcxNjksMzcxNzIsMzcxNzQsMzcxNzUsMzcxNzcsMzcxNzgsMzcxODAsMzcxODEsMzcxODcsMzcxOTEsMzcxOTIsMzcxOTksMzcyMDMsMzcyMDcsMzcyMDksMzcyMTAsMzcyMTEsMzcyMTcsMzcyMjAsMzcyMjMsMzcyMjksMzcyMzYsMzcyNDEsMzcyNDIsMzcyNDMsMzcyNDksMzcyNTEsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNjIsMzcyNjUsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzIsMzcyNzgsMzcyODEsMzcyODYsMzcyODgsMzcyOTIsMzcyOTMsMzcyOTQsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDcsMzczMDgsMzczMDksMzczMTEsMzczMTQsMzczMTUsMzczMTcsMzczMzEsMzczMzIsMzczMzUsMzczMzcsMzczMzgsMzczNDIsMzczNDgsMzczNDksMzczNTMsMzczNTQsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjcsMzczNjksMzczNzEsMzczNzMsMzczNzYsMzczNzcsMzczODAsMzczODEsMzczODIsMzczODMsMzczODUsMzczODYsMzczODgsMzczOTIsMzczOTQsMzczOTUsMzczOTgsMzc0MDAsMzc0MDQsMzc0MDUsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTYsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjcsMzc0MjksMzc0MzAsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzYsMzc0MzgsMzc0NDAsMzc0NDIsMzc0NDMsMzc0NDYsMzc0NDcsMzc0NTAsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTcsMzc0NjQsMzc0NjUsMzc0NjgsMzc0NjksMzc0NzIsMzc0NzMsMzc0NzcsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODYsMzc0ODcsMzc0ODgsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDMsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTcsMzc1MTgsMzc1MjIsMzc1MjcsMzc1MjksMzc1MzUsMzc1MzYsMzc1NDAsMzc1NDEsMzc1NDMsMzc1NDQsMzc1NDcsMzc1NTEsMzc1NTQsMzc1NTgsMzc1NjAsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzYsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODQsMzc1ODcsMzc1ODksMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTYsMzc1OTcsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDMsMzc2MDUsMzc2MDcsMzc2MDgsMzc2MTIsMzc2MTQsMzc2MTYsMzc2MjUsMzc2MjcsMzc2MzEsMzc2MzIsMzc2MzQsMzc2NDAsMzc2NDUsMzc2NDksMzc2NTIsMzc2NTMsMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjUsMzc2NjgsMzc2NjksMzc2NzEsMzc2NzMsMzc2NzQsMzc2ODMsMzc2ODQsMzc2ODYsMzc2ODcsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTcsMzc3MTksMzc3MjAsMzc3MjIsMzc3MjYsMzc3MzIsMzc3MzMsMzc3MzUsMzc3MzcsMzc3MzgsMzc3NDEsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDcsMzc3NDgsMzc3NTAsMzc3NTQsMzc3NTcsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjgsMzc3NzAsMzc3NzEsMzc3NzMsMzc3NzUsMzc3NzgsMzc3ODEsMzc3ODQsMzc3ODcsMzc3OTAsMzc3OTMsMzc3OTUsMzc3OTYsMzc3OTgsMzc4MDAsMzc4MDMsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTgsMzc4MDEsMzc4MjUsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzMsMzc4MzQsMzc4MzUsMzc4MzYsMzc4MzcsMzc4NDMsMzc4NDksMzc4NTIsMzc4NTQsMzc4NTUsMzc4NTgsMzc4NjIsMzc4NjMsMzc4ODEsMzc4NzksMzc4ODAsMzc4ODIsMzc4ODMsMzc4ODUsMzc4ODksMzc4OTAsMzc4OTIsMzc4OTYsMzc4OTcsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTksMzc5MzQsMzc5MzUsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDcsMzc5NTEsMzc5NDksMzc5NTUsMzc5NTcsMzc5NjAsMzc5NjIsMzc5NjQsMzc5NzMsMzc5NzcsMzc5ODAsMzc5ODMsMzc5ODUsMzc5ODcsMzc5OTIsMzc5OTUsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDEsMzgwMDIsMzgwMjAsMzgwMTksMzgyNjQsMzgyNjUsMzgyNzAsMzgyNzYsMzgyODAsMzgyODQsMzgyODUsMzgyODYsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDUsMzgzMTAsMzgzMTMsMzgzMTUsMzgzMTYsMzgzMjQsMzgzMjYsMzgzMzAsMzgzMzMsMzgzMzUsMzgzNDIsMzgzNDQsMzgzNDUsMzgzNDcsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNjEsMzgzNjIsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNzIsMzgzNzQsMzg0MjksMzg0MzAsMzg0MzQsMzg0MzYsMzg0MzcsMzg0MzgsMzg0NDQsMzg0NDksMzg0NTEsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjAsMzg0NjEsMzg0NjUsMzg0ODIsMzg0ODQsMzg0ODYsMzg0ODcsMzg0ODgsMzg0OTcsMzg1MTAsMzg1MTYsMzg1MjMsMzg1MjQsMzg1MjYsMzg1MjcsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzcsMzg1NDUsMzg1NTAsMzg1NTQsMzg1NTcsMzg1NTksMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjksMzg1NzQsMzg1NzUsMzg1NzksMzg1ODYsMzg2MDIsMzg2MTAsMjM5ODYsMzg2MTYsMzg2MTgsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MzMsMzg2MzksMzg2NDEsMzg2NTAsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjUsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTYsMzg3MDUsMzg3MDcsMzg3MjEsMzg3MjMsMzg3MzAsMzg3MzQsMzg3MzUsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDcsMzg3NTUsMzg3NTksMzg3NjIsMzg3NjYsMzg3NzEsMzg3NzQsMzg3NzUsMzg3NzYsMzg3NzksMzg3ODEsMzg3ODMsMzg3ODQsMzg3OTMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTQsMzg4MTUsMzg4MTgsMzg4MjgsMzg4MzAsMzg4MzMsMzg4MzQsMzg4MzcsMzg4MzgsMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDQsMzg4NDYsMzg4NDcsMzg4NDksMzg4NTIsMzg4NTMsMzg4NTUsMzg4NTcsMzg4NTgsMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjQsMzg4NjUsMzg4NjgsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzcsMzg4NzgsMzg4ODAsMzg4NzUsMzg4ODEsMzg4ODQsMzg4OTUsMzg4OTcsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDYsMzg5MTksMzg5MjIsMzg5MzcsMzg5MjUsMzg5MjYsMzg5MzIsMzg5MzQsMzg5NDAsMzg5NDIsMzg5NDQsMzg5NDcsMzg5NTAsMzg5NTUsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjIsMzg5NjMsMzg5NjUsMzg5NDksMzg5NzQsMzg5ODAsMzg5ODMsMzg5ODYsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTgsMzg5OTksMzkwMDEsMzkwMDIsMzkwMTAsMzkwMTEsMzkwMTMsMzkwMTQsMzkwMTgsMzkwMjAsMzkwODMsMzkwODUsMzkwODYsMzkwODgsMzkwOTIsMzkwOTUsMzkwOTYsMzkwOTgsMzkwOTksMzkxMDMsMzkxMDYsMzkxMDksMzkxMTIsMzkxMTYsMzkxMzcsMzkxMzksMzkxNDEsMzkxNDIsMzkxNDMsMzkxNDYsMzkxNTUsMzkxNTgsMzkxNzAsMzkxNzUsMzkxNzYsMzkxODUsMzkxODksMzkxOTAsMzkxOTEsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTksMzkyMDIsMzkyMDYsMzkyMDcsMzkyMTEsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMzIsMzkyMzMsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDUsMzkyNDYsMzkyNTIsMzkyNTYsMzkyNTcsMzkyNTksMzkyNjAsMzkyNjIsMzkyNjMsMzkyNjQsMzkzMjMsMzkzMjUsMzkzMjcsMzkzMzQsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDksMzkzNTMsMzkzNTQsMzkzNTcsMzkzNTksMzkzNjMsMzkzNjksMzkzNzksMzkzODAsMzkzODUsMzkzODYsMzkzODgsMzkzOTAsMzkzOTksMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDgsMzk0MTIsMzk0MTMsMzk0MTcsMzk0MjEsMzk0MjIsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MzUsMzk0MzYsMzk0NDAsMzk0NDEsMzk0NDYsMzk0NTQsMzk0NTYsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjMsMzk0NjksMzk0NzAsMzk0NzUsMzk0NzcsMzk0NzgsMzk0ODAsMzk0OTUsMzk0ODksMzk0OTIsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDIsMzk1MDUsMzk1MDgsMzk1MTAsMzk1MTcsMzk1OTQsMzk1OTYsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDQsMzk2MDUsMzk2MDYsMzk2MDksMzk2MTEsMzk2MTQsMzk2MTUsMzk2MTcsMzk2MTksMzk2MjIsMzk2MjQsMzk2MzAsMzk2MzIsMzk2MzQsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDMsMzk2NDQsMzk2NDgsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTcsMzk2NjAsMzk2NjYsMzk2NjcsMzk2NjksMzk2NzMsMzk2NzQsMzk2NzcsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODMsMzk2ODQsMzk2ODUsMzk2ODgsMzk2ODksMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTgsMzk3MDIsMzk3MDUsMzk3MDcsMzk3MDgsMzk3MTIsMzk3MTgsMzk3MjMsMzk3MjUsMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzUsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NTIsMzk3NTUsMzk3NTYsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NzEsMzk3NzQsMzk3NzcsMzk3NzksMzk3ODEsMzk3ODIsMzk3ODQsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTUsMzk3OTcsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDcsMzk4MDgsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjEsMzk4MjMsMzk4MjQsMzk4MjgsMzk4MzQsMzk4MzcsMzk4MzgsMzk4NDYsMzk4NDcsMzk4NDksMzk4NTIsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NjMsMzk4NjQsMzk4NjcsMzk4NjgsMzk4NzAsMzk4NzEsMzk4NzMsMzk4NzksMzk4ODAsMzk4ODYsMzk4ODgsMzk4OTUsMzk4OTYsMzk5MDEsMzk5MDMsMzk5MDksMzk5MTEsMzk5MTQsMzk5MTUsMzk5MTksMzk5MjMsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzMsMzk5MzUsMzk5MzYsMzk5MzgsMzk5NDcsMzk5NTEsMzk5NTMsMzk5NTgsMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjQsMzk5NjYsMzk5NzAsMzk5NzEsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5ODUsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTcsNDAwMDEsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDksNDAwMTAsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTksNDAwMjAsNDAwMjIsNDAwMjQsNDAwMjcsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzUsNDAwNDEsNDAwNDIsNDAwMjgsNDAwNDMsNDAwNDAsNDAwNDYsNDAwNDgsNDAwNTAsNDAwNTMsNDAwNTUsNDAwNTksNDAxNjYsNDAxNzgsNDAxODMsNDAxODUsNDAyMDMsNDAxOTQsNDAyMDksNDAyMTUsNDAyMTYsNDAyMjAsNDAyMjEsNDAyMjIsNDAyMzksNDAyNDAsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNTAsNDAyNTIsNDAyNjEsNDAyNTMsNDAyNTgsNDAyNTksNDAyNjMsNDAyNjYsNDAyNzUsNDAyNzYsNDAyODcsNDAyOTEsNDAyOTAsNDAyOTMsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDQsNDAzMTAsNDAzMTEsNDAzMTUsNDAzMTYsNDAzMTgsNDAzMjMsNDAzMjQsNDAzMjYsNDAzMzAsNDAzMzMsNDAzMzQsNDAzMzgsNDAzMzksNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNTMsNDAzNjIsNDAzNjQsNDAzNjYsNDAzNjksNDAzNzMsNDAzNzcsNDAzODAsNDAzODMsNDAzODcsNDAzOTEsNDAzOTMsNDAzOTQsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MTAsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MjEsNDA0MjMsNDA0MjUsNDA0MjcsNDA0MzAsNDA0MzIsNDA0MzUsNDA0MzYsNDA0NDYsNDA0NTgsNDA0NTAsNDA0NTUsNDA0NjIsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjksNDA0NzAsNDA0NzMsNDA0NzYsNDA0NzcsNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzYsNDA1NzgsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODMsNDA1OTAsNDA1OTEsNDA1OTgsNDA2MDAsNDA2MDMsNDA2MDYsNDA2MTIsNDA2MTYsNDA2MjAsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjcsNDA2MjgsNDA2MjksNDA2NDYsNDA2NDgsNDA2NTEsNDA2NjEsNDA2NzEsNDA2NzYsNDA2NzksNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTMsNDA2OTYsNDA3MDMsNDA3MDYsNDA3MDcsNDA3MTMsNDA3MTksNDA3MjAsNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjYsNDA3MjcsNDA3MjksNDA3MzAsNDA3MzEsNDA3MzUsNDA3MzgsNDA3NDIsNDA3NDYsNDA3NDcsNDA3NTEsNDA3NTMsNDA3NTQsNDA3NTYsNDA3NTksNDA3NjEsNDA3NjIsNDA3NjQsNDA3NjUsNDA3NjcsNDA3NjksNDA3NzEsNDA3NzIsNDA3NzMsNDA3NzQsNDA3NzUsNDA3ODcsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTQsNDA3OTcsNDA3OTgsNDA4MDgsNDA4MDksNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTksNDA4MjEsNDA4MjYsNDA4MjksNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTIsNDA4NTQsNDA4NTUsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJpYm04NjZcIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsOTYxNyw5NjE4LDk2MTksOTQ3NCw5NTA4LDk1NjksOTU3MCw5NTU4LDk1NTcsOTU3MSw5NTUzLDk1NTksOTU2NSw5NTY0LDk1NjMsOTQ4OCw5NDkyLDk1MjQsOTUxNiw5NTAwLDk0NzIsOTUzMiw5NTY2LDk1NjcsOTU2Miw5NTU2LDk1NzcsOTU3NCw5NTY4LDk1NTIsOTU4MCw5NTc1LDk1NzYsOTU3Miw5NTczLDk1NjEsOTU2MCw5NTU0LDk1NTUsOTU3OSw5NTc4LDk0OTYsOTQ4NCw5NjA4LDk2MDQsOTYxMiw5NjE2LDk2MDAsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMDI1LDExMDUsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDM4LDExMTgsMTc2LDg3MjksMTgzLDg3MzAsODQ3MCwxNjQsOTYzMiwxNjBdLFxuICBcImlzby04ODU5LTJcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDcyOCwzMjEsMTY0LDMxNywzNDYsMTY3LDE2OCwzNTIsMzUwLDM1NiwzNzcsMTczLDM4MSwzNzksMTc2LDI2MSw3MzEsMzIyLDE4MCwzMTgsMzQ3LDcxMSwxODQsMzUzLDM1MSwzNTcsMzc4LDczMywzODIsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sXG4gIFwiaXNvLTg4NTktM1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyOTQsNzI4LDE2MywxNjQsbnVsbCwyOTIsMTY3LDE2OCwzMDQsMzUwLDI4NiwzMDgsMTczLG51bGwsMzc5LDE3NiwyOTUsMTc4LDE3OSwxODAsMTgxLDI5MywxODMsMTg0LDMwNSwzNTEsMjg3LDMwOSwxODksbnVsbCwzODAsMTkyLDE5MywxOTQsbnVsbCwxOTYsMjY2LDI2NCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNyxudWxsLDIwOSwyMTAsMjExLDIxMiwyODgsMjE0LDIxNSwyODQsMjE3LDIxOCwyMTksMjIwLDM2NCwzNDgsMjIzLDIyNCwyMjUsMjI2LG51bGwsMjI4LDI2NywyNjUsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksbnVsbCwyNDEsMjQyLDI0MywyNDQsMjg5LDI0NiwyNDcsMjg1LDI0OSwyNTAsMjUxLDI1MiwzNjUsMzQ5LDcyOV0sXG4gIFwiaXNvLTg4NTktNFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMzEyLDM0MiwxNjQsMjk2LDMxNSwxNjcsMTY4LDM1MiwyNzQsMjkwLDM1OCwxNzMsMzgxLDE3NSwxNzYsMjYxLDczMSwzNDMsMTgwLDI5NywzMTYsNzExLDE4NCwzNTMsMjc1LDI5MSwzNTksMzMwLDM4MiwzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjk4LDI3MiwzMjUsMzMyLDMxMCwyMTIsMjEzLDIxNCwyMTUsMjE2LDM3MCwyMTgsMjE5LDIyMCwzNjAsMzYyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyOTksMjczLDMyNiwzMzMsMzExLDI0NCwyNDUsMjQ2LDI0NywyNDgsMzcxLDI1MCwyNTEsMjUyLDM2MSwzNjMsNzI5XSxcbiAgXCJpc28tODg1OS01XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDE3MywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4NDcwLDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDE2NywxMTE4LDExMTldLFxuICBcImlzby04ODU5LTZcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCxudWxsLG51bGwsMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU0OCwxNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNTYzLG51bGwsbnVsbCxudWxsLDE1NjcsbnVsbCwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDE1OTEsMTU5MiwxNTkzLDE1OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MDAsMTYwMSwxNjAyLDE2MDMsMTYwNCwxNjA1LDE2MDYsMTYwNywxNjA4LDE2MDksMTYxMCwxNjExLDE2MTIsMTYxMywxNjE0LDE2MTUsMTYxNiwxNjE3LDE2MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiaXNvLTg4NTktN1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjE2LDgyMTcsMTYzLDgzNjQsODM2NywxNjYsMTY3LDE2OCwxNjksODkwLDE3MSwxNzIsMTczLG51bGwsODIxMywxNzYsMTc3LDE3OCwxNzksOTAwLDkwMSw5MDIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLFxuICBcImlzby04ODU5LThcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4MjE1LDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgyMDcsbnVsbF0sXG4gIFwiaXNvLTg4NTktMTBcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDI3NCwyOTAsMjk4LDI5NiwzMTAsMTY3LDMxNSwyNzIsMzUyLDM1OCwzODEsMTczLDM2MiwzMzAsMTc2LDI2MSwyNzUsMjkxLDI5OSwyOTcsMzExLDE4MywzMTYsMjczLDM1MywzNTksMzgyLDgyMTMsMzYzLDMzMSwyNTYsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMzAyLDI2OCwyMDEsMjgwLDIwMywyNzgsMjA1LDIwNiwyMDcsMjA4LDMyNSwzMzIsMjExLDIxMiwyMTMsMjE0LDM2MCwyMTYsMzcwLDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDI1NywyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwzMDMsMjY5LDIzMywyODEsMjM1LDI3OSwyMzcsMjM4LDIzOSwyNDAsMzI2LDMzMywyNDMsMjQ0LDI0NSwyNDYsMzYxLDI0OCwzNzEsMjUwLDI1MSwyNTIsMjUzLDI1NCwzMTJdLFxuICBcImlzby04ODU5LTEzXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDgyMjEsMTYyLDE2MywxNjQsODIyMiwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgsMTc5LDgyMjAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw4MjE3XSxcbiAgXCJpc28tODg1OS0xNFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw3NjgyLDc2ODMsMTYzLDI2NiwyNjcsNzY5MCwxNjcsNzgwOCwxNjksNzgxMCw3NjkxLDc5MjIsMTczLDE3NCwzNzYsNzcxMCw3NzExLDI4OCwyODksNzc0NCw3NzQ1LDE4Miw3NzY2LDc4MDksNzc2Nyw3ODExLDc3NzYsNzkyMyw3ODEyLDc4MTMsNzc3NywxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMzcyLDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDc3ODYsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMzc0LDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMzczLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDc3ODcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMzc1LDI1NV0sXG4gIFwiaXNvLTg4NTktMTVcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2NCwxNjUsMzUyLDE2NywzNTMsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwzODEsMTgxLDE4MiwxODMsMzgyLDE4NSwxODYsMTg3LDMzOCwzMzksMzc2LDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLFxuICBcImlzby04ODU5LTE2XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNjEsMzIxLDgzNjQsODIyMiwzNTIsMTY3LDM1MywxNjksNTM2LDE3MSwzNzcsMTczLDM3OCwzNzksMTc2LDE3NywyNjgsMzIyLDM4MSw4MjIxLDE4MiwxODMsMzgyLDI2OSw1MzcsMTg3LDMzOCwzMzksMzc2LDM4MCwxOTIsMTkzLDE5NCwyNTgsMTk2LDI2MiwxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjcyLDMyMywyMTAsMjExLDIxMiwzMzYsMjE0LDM0NiwzNjgsMjE3LDIxOCwyMTksMjIwLDI4MCw1MzgsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjYzLDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNzMsMzI0LDI0MiwyNDMsMjQ0LDMzNywyNDYsMzQ3LDM2OSwyNDksMjUwLDI1MSwyNTIsMjgxLDUzOSwyNTVdLFxuICBcImtvaTgtclwiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLFxuICBcImtvaTgtdVwiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsMTEwOCw5NTU2LDExMTAsMTExMSw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsMTE2OSwxMTE4LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSwxMDI4LDk1NzEsMTAzMCwxMDMxLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCwxMTY4LDEwMzgsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLFxuICBcIm1hY2ludG9zaFwiOlsxOTYsMTk3LDE5OSwyMDEsMjA5LDIxNCwyMjAsMjI1LDIyNCwyMjYsMjI4LDIyNywyMjksMjMxLDIzMywyMzIsMjM0LDIzNSwyMzcsMjM2LDIzOCwyMzksMjQxLDI0MywyNDIsMjQ0LDI0NiwyNDUsMjUwLDI0OSwyNTEsMjUyLDgyMjQsMTc2LDE2MiwxNjMsMTY3LDgyMjYsMTgyLDIyMywxNzQsMTY5LDg0ODIsMTgwLDE2OCw4ODAwLDE5OCwyMTYsODczNCwxNzcsODgwNCw4ODA1LDE2NSwxODEsODcwNiw4NzIxLDg3MTksOTYwLDg3NDcsMTcwLDE4Niw5MzcsMjMwLDI0OCwxOTEsMTYxLDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxOTIsMTk1LDIxMywzMzgsMzM5LDgyMTEsODIxMiw4MjIwLDgyMjEsODIxNiw4MjE3LDI0Nyw5Njc0LDI1NSwzNzYsODI2MCw4MzY0LDgyNDksODI1MCw2NDI1Nyw2NDI1OCw4MjI1LDE4Myw4MjE4LDgyMjIsODI0MCwxOTQsMjAyLDE5MywyMDMsMjAwLDIwNSwyMDYsMjA3LDIwNCwyMTEsMjEyLDYzNzQzLDIxMCwyMTgsMjE5LDIxNywzMDUsNzEwLDczMiwxNzUsNzI4LDcyOSw3MzAsMTg0LDczMyw3MzEsNzExXSxcbiAgXCJ3aW5kb3dzLTg3NFwiOls4MzY0LDEyOSwxMzAsMTMxLDEzMiw4MjMwLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwzNTg1LDM1ODYsMzU4NywzNTg4LDM1ODksMzU5MCwzNTkxLDM1OTIsMzU5MywzNTk0LDM1OTUsMzU5NiwzNTk3LDM1OTgsMzU5OSwzNjAwLDM2MDEsMzYwMiwzNjAzLDM2MDQsMzYwNSwzNjA2LDM2MDcsMzYwOCwzNjA5LDM2MTAsMzYxMSwzNjEyLDM2MTMsMzYxNCwzNjE1LDM2MTYsMzYxNywzNjE4LDM2MTksMzYyMCwzNjIxLDM2MjIsMzYyMywzNjI0LDM2MjUsMzYyNiwzNjI3LDM2MjgsMzYyOSwzNjMwLDM2MzEsMzYzMiwzNjMzLDM2MzQsMzYzNSwzNjM2LDM2MzcsMzYzOCwzNjM5LDM2NDAsMzY0MSwzNjQyLG51bGwsbnVsbCxudWxsLG51bGwsMzY0NywzNjQ4LDM2NDksMzY1MCwzNjUxLDM2NTIsMzY1MywzNjU0LDM2NTUsMzY1NiwzNjU3LDM2NTgsMzY1OSwzNjYwLDM2NjEsMzY2MiwzNjYzLDM2NjQsMzY2NSwzNjY2LDM2NjcsMzY2OCwzNjY5LDM2NzAsMzY3MSwzNjcyLDM2NzMsMzY3NCwzNjc1LG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcIndpbmRvd3MtMTI1MFwiOls4MzY0LDEyOSw4MjE4LDEzMSw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDM1Miw4MjQ5LDM0NiwzNTYsMzgxLDM3NywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwzNTMsODI1MCwzNDcsMzU3LDM4MiwzNzgsMTYwLDcxMSw3MjgsMzIxLDE2NCwyNjAsMTY2LDE2NywxNjgsMTY5LDM1MCwxNzEsMTcyLDE3MywxNzQsMzc5LDE3NiwxNzcsNzMxLDMyMiwxODAsMTgxLDE4MiwxODMsMTg0LDI2MSwzNTEsMTg3LDMxNyw3MzMsMzE4LDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLFxuICBcIndpbmRvd3MtMTI1MVwiOlsxMDI2LDEwMjcsODIxOCwxMTA3LDgyMjIsODIzMCw4MjI0LDgyMjUsODM2NCw4MjQwLDEwMzMsODI0OSwxMDM0LDEwMzYsMTAzNSwxMDM5LDExMDYsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxMTEzLDgyNTAsMTExNCwxMTE2LDExMTUsMTExOSwxNjAsMTAzOCwxMTE4LDEwMzIsMTY0LDExNjgsMTY2LDE2NywxMDI1LDE2OSwxMDI4LDE3MSwxNzIsMTczLDE3NCwxMDMxLDE3NiwxNzcsMTAzMCwxMTEwLDExNjksMTgxLDE4MiwxODMsMTEwNSw4NDcwLDExMDgsMTg3LDExMTIsMTAyOSwxMTA5LDExMTEsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwM10sXG4gIFwid2luZG93cy0xMjUyXCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwzODEsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcsMzgyLDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV0sXG4gIFwid2luZG93cy0xMjUzXCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsOTAxLDkwMiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksbnVsbCwxNzEsMTcyLDE3MywxNzQsODIxMywxNzYsMTc3LDE3OCwxNzksOTAwLDE4MSwxODIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLFxuICBcIndpbmRvd3MtMTI1NFwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjg2LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDMwNCwzNTAsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyODcsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMzA1LDM1MSwyNTVdLFxuICBcIndpbmRvd3MtMTI1NVwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjIsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCwxOTEsMTQ1NiwxNDU3LDE0NTgsMTQ1OSwxNDYwLDE0NjEsMTQ2MiwxNDYzLDE0NjQsMTQ2NSxudWxsLDE0NjcsMTQ2OCwxNDY5LDE0NzAsMTQ3MSwxNDcyLDE0NzMsMTQ3NCwxNDc1LDE1MjAsMTUyMSwxNTIyLDE1MjMsMTUyNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgyMDcsbnVsbF0sXG4gIFwid2luZG93cy0xMjU2XCI6WzgzNjQsMTY2Miw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDE2NTcsODI0OSwzMzgsMTY3MCwxNjg4LDE2NzIsMTcxMSw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE3MDUsODQ4MiwxNjgxLDgyNTAsMzM5LDgyMDQsODIwNSwxNzIyLDE2MCwxNTQ4LDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcyNiwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxNTYzLDE4NywxODgsMTg5LDE5MCwxNTY3LDE3MjksMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwyMTUsMTU5MSwxNTkyLDE1OTMsMTU5NCwxNjAwLDE2MDEsMTYwMiwxNjAzLDIyNCwxNjA0LDIyNiwxNjA1LDE2MDYsMTYwNywxNjA4LDIzMSwyMzIsMjMzLDIzNCwyMzUsMTYwOSwxNjEwLDIzOCwyMzksMTYxMSwxNjEyLDE2MTMsMTYxNCwyNDQsMTYxNSwxNjE2LDI0NywxNjE3LDI0OSwxNjE4LDI1MSwyNTIsODIwNiw4MjA3LDE3NDZdLFxuICBcIndpbmRvd3MtMTI1N1wiOls4MzY0LDEyOSw4MjE4LDEzMSw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNjgsNzExLDE4NCwxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTc1LDczMSwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsbnVsbCwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywyNDgsMTg1LDM0MywxODcsMTg4LDE4OSwxOTAsMjMwLDI2MCwzMDIsMjU2LDI2MiwxOTYsMTk3LDI4MCwyNzQsMjY4LDIwMSwzNzcsMjc4LDI5MCwzMTAsMjk4LDMxNSwzNTIsMzIzLDMyNSwyMTEsMzMyLDIxMywyMTQsMjE1LDM3MCwzMjEsMzQ2LDM2MiwyMjAsMzc5LDM4MSwyMjMsMjYxLDMwMywyNTcsMjYzLDIyOCwyMjksMjgxLDI3NSwyNjksMjMzLDM3OCwyNzksMjkxLDMxMSwyOTksMzE2LDM1MywzMjQsMzI2LDI0MywzMzMsMjQ1LDI0NiwyNDcsMzcxLDMyMiwzNDcsMzYzLDI1MiwzODAsMzgyLDcyOV0sXG4gIFwid2luZG93cy0xMjU4XCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1NCw4MjUwLDMzOSwxNTcsMTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDI1OCwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDc2OCwyMDUsMjA2LDIwNywyNzIsMjA5LDc3NywyMTEsMjEyLDQxNiwyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsNDMxLDc3MSwyMjMsMjI0LDIyNSwyMjYsMjU5LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsNzY5LDIzNywyMzgsMjM5LDI3MywyNDEsODAzLDI0MywyNDQsNDE3LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1Miw0MzIsODM2MywyNTVdLFxuICBcIngtbWFjLWN5cmlsbGljXCI6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSw4MjI0LDE3NiwxMTY4LDE2MywxNjcsODIyNiwxODIsMTAzMCwxNzQsMTY5LDg0ODIsMTAyNiwxMTA2LDg4MDAsMTAyNywxMTA3LDg3MzQsMTc3LDg4MDQsODgwNSwxMTEwLDE4MSwxMTY5LDEwMzIsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDMzLDExMTMsMTAzNCwxMTE0LDExMTIsMTAyOSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTAzNSwxMTE1LDEwMzYsMTExNiwxMTA5LDgyMTEsODIxMiw4MjIwLDgyMjEsODIxNiw4MjE3LDI0Nyw4MjIyLDEwMzgsMTExOCwxMDM5LDExMTksODQ3MCwxMDI1LDExMDUsMTEwMywxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDgzNjRdXG59O1xufSh0aGlzKSk7XG4iLCIvLyBUaGlzIGlzIGZyZWUgYW5kIHVuZW5jdW1iZXJlZCBzb2Z0d2FyZSByZWxlYXNlZCBpbnRvIHRoZSBwdWJsaWMgZG9tYWluLlxuLy8gU2VlIExJQ0VOU0UubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbi8vIElmIHdlJ3JlIGluIG5vZGUgcmVxdWlyZSBlbmNvZGluZy1pbmRleGVzIGFuZCBhdHRhY2ggaXQgdG8gdGhlIGdsb2JhbC5cbi8qKlxuICogQGZpbGVvdmVydmlldyBHbG9iYWwgfHRoaXN8IHJlcXVpcmVkIGZvciByZXNvbHZpbmcgaW5kZXhlcyBpbiBub2RlLlxuICogQHN1cHByZXNzIHtnbG9iYWxUaGlzfVxuICovXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUuZXhwb3J0cykge1xuICB0aGlzW1wiZW5jb2RpbmctaW5kZXhlc1wiXSA9XG4gICAgcmVxdWlyZShcIi4vZW5jb2RpbmctaW5kZXhlcy5qc1wiKVtcImVuY29kaW5nLWluZGV4ZXNcIl07XG59XG5cbihmdW5jdGlvbihnbG9iYWwpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vXG4gIC8vIFV0aWxpdGllc1xuICAvL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gYSBUaGUgbnVtYmVyIHRvIHRlc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgaW4gdGhlIHJhbmdlLCBpbmNsdXNpdmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXggVGhlIG1heGltdW0gdmFsdWUgaW4gdGhlIHJhbmdlLCBpbmNsdXNpdmUuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSA+PSBtaW4gYW5kIGEgPD0gbWF4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5SYW5nZShhLCBtaW4sIG1heCkge1xuICAgIHJldHVybiBtaW4gPD0gYSAmJiBhIDw9IG1heDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtZXJhdG9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZCBUaGUgZGVub21pbmF0b3IuXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIHJlc3VsdCBvZiB0aGUgaW50ZWdlciBkaXZpc2lvbiBvZiBuIGJ5IGQuXG4gICAqL1xuICBmdW5jdGlvbiBkaXYobiwgZCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKG4gLyBkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG9cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gVG9EaWN0aW9uYXJ5KG8pIHtcbiAgICBpZiAobyA9PT0gdW5kZWZpbmVkKSByZXR1cm4ge307XG4gICAgaWYgKG8gPT09IE9iamVjdChvKSkgcmV0dXJuIG87XG4gICAgdGhyb3cgVHlwZUVycm9yKCdDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB0byBkaWN0aW9uYXJ5Jyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBJbnB1dCBzdHJpbmcgb2YgVVRGLTE2IGNvZGUgdW5pdHMuXG4gICAqIEByZXR1cm4geyFBcnJheS48bnVtYmVyPn0gQ29kZSBwb2ludHMuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0NvZGVQb2ludHMoc3RyaW5nKSB7XG4gICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLW9idGFpbi11bmljb2RlXG5cbiAgICAvLyAxLiBMZXQgUyBiZSB0aGUgRE9NU3RyaW5nIHZhbHVlLlxuICAgIHZhciBzID0gU3RyaW5nKHN0cmluZyk7XG5cbiAgICAvLyAyLiBMZXQgbiBiZSB0aGUgbGVuZ3RoIG9mIFMuXG4gICAgdmFyIG4gPSBzLmxlbmd0aDtcblxuICAgIC8vIDMuIEluaXRpYWxpemUgaSB0byAwLlxuICAgIHZhciBpID0gMDtcblxuICAgIC8vIDQuIEluaXRpYWxpemUgVSB0byBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBVbmljb2RlIGNoYXJhY3RlcnMuXG4gICAgdmFyIHUgPSBbXTtcblxuICAgIC8vIDUuIFdoaWxlIGkgPCBuOlxuICAgIHdoaWxlIChpIDwgbikge1xuXG4gICAgICAvLyAxLiBMZXQgYyBiZSB0aGUgY29kZSB1bml0IGluIFMgYXQgaW5kZXggaS5cbiAgICAgIHZhciBjID0gcy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAvLyAyLiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGM6XG5cbiAgICAgIC8vIGMgPCAweEQ4MDAgb3IgYyA+IDB4REZGRlxuICAgICAgaWYgKGMgPCAweEQ4MDAgfHwgYyA+IDB4REZGRikge1xuICAgICAgICAvLyBBcHBlbmQgdG8gVSB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCBjb2RlIHBvaW50IGMuXG4gICAgICAgIHUucHVzaChjKTtcbiAgICAgIH1cblxuICAgICAgLy8gMHhEQzAwIOKJpCBjIOKJpCAweERGRkZcbiAgICAgIGVsc2UgaWYgKDB4REMwMCA8PSBjICYmIGMgPD0gMHhERkZGKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0byBVIGEgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUi5cbiAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDB4RDgwMCDiiaQgYyDiiaQgMHhEQkZGXG4gICAgICBlbHNlIGlmICgweEQ4MDAgPD0gYyAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICAvLyAxLiBJZiBpID0gbuKIkjEsIHRoZW4gYXBwZW5kIHRvIFUgYSBVK0ZGRkQgUkVQTEFDRU1FTlRcbiAgICAgICAgLy8gQ0hBUkFDVEVSLlxuICAgICAgICBpZiAoaSA9PT0gbiAtIDEpIHtcbiAgICAgICAgICB1LnB1c2goMHhGRkZEKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyLiBPdGhlcndpc2UsIGkgPCBu4oiSMTpcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gMS4gTGV0IGQgYmUgdGhlIGNvZGUgdW5pdCBpbiBTIGF0IGluZGV4IGkrMS5cbiAgICAgICAgICB2YXIgZCA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcblxuICAgICAgICAgIC8vIDIuIElmIDB4REMwMCDiiaQgZCDiiaQgMHhERkZGLCB0aGVuOlxuICAgICAgICAgIGlmICgweERDMDAgPD0gZCAmJiBkIDw9IDB4REZGRikge1xuICAgICAgICAgICAgLy8gMS4gTGV0IGEgYmUgYyAmIDB4M0ZGLlxuICAgICAgICAgICAgdmFyIGEgPSBjICYgMHgzRkY7XG5cbiAgICAgICAgICAgIC8vIDIuIExldCBiIGJlIGQgJiAweDNGRi5cbiAgICAgICAgICAgIHZhciBiID0gZCAmIDB4M0ZGO1xuXG4gICAgICAgICAgICAvLyAzLiBBcHBlbmQgdG8gVSB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCBjb2RlIHBvaW50XG4gICAgICAgICAgICAvLyAyXjE2KzJeMTAqYStiLlxuICAgICAgICAgICAgdS5wdXNoKDB4MTAwMDAgKyAoYSA8PCAxMCkgKyBiKTtcblxuICAgICAgICAgICAgLy8gNC4gU2V0IGkgdG8gaSsxLlxuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDMuIE90aGVyd2lzZSwgZCA8IDB4REMwMCBvciBkID4gMHhERkZGLiBBcHBlbmQgdG8gVSBhXG4gICAgICAgICAgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUi5cbiAgICAgICAgICBlbHNlICB7XG4gICAgICAgICAgICB1LnB1c2goMHhGRkZEKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gMy4gU2V0IGkgdG8gaSsxLlxuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIC8vIDYuIFJldHVybiBVLlxuICAgIHJldHVybiB1O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBjb2RlX3BvaW50cyBBcnJheSBvZiBjb2RlIHBvaW50cy5cbiAgICogQHJldHVybiB7c3RyaW5nfSBzdHJpbmcgU3RyaW5nIG9mIFVURi0xNiBjb2RlIHVuaXRzLlxuICAgKi9cbiAgZnVuY3Rpb24gY29kZVBvaW50c1RvU3RyaW5nKGNvZGVfcG9pbnRzKSB7XG4gICAgdmFyIHMgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVfcG9pbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY3AgPSBjb2RlX3BvaW50c1tpXTtcbiAgICAgIGlmIChjcCA8PSAweEZGRkYpIHtcbiAgICAgICAgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNwIC09IDB4MTAwMDA7XG4gICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoY3AgPj4gMTApICsgMHhEODAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwICYgMHgzRkYpICsgMHhEQzAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuXG4gIC8vXG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIEVuY29kaW5nIHNwZWNpZmljYXRpb25cbiAgLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvXG4gIC8vXG5cbiAgLy9cbiAgLy8gMy4gVGVybWlub2xvZ3lcbiAgLy9cblxuICAvKipcbiAgICogRW5kLW9mLXN0cmVhbSBpcyBhIHNwZWNpYWwgdG9rZW4gdGhhdCBzaWduaWZpZXMgbm8gbW9yZSB0b2tlbnNcbiAgICogYXJlIGluIHRoZSBzdHJlYW0uXG4gICAqIEBjb25zdFxuICAgKi8gdmFyIGVuZF9vZl9zdHJlYW0gPSAtMTtcblxuICAvKipcbiAgICogQSBzdHJlYW0gcmVwcmVzZW50cyBhbiBvcmRlcmVkIHNlcXVlbmNlIG9mIHRva2Vucy5cbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7IShBcnJheS48bnVtYmVyPnxVaW50OEFycmF5KX0gdG9rZW5zIEFycmF5IG9mIHRva2VucyB0aGF0IHByb3ZpZGUgdGhlXG4gICAqIHN0cmVhbS5cbiAgICovXG4gIGZ1bmN0aW9uIFN0cmVhbSh0b2tlbnMpIHtcbiAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICB0aGlzLnRva2VucyA9IFtdLnNsaWNlLmNhbGwodG9rZW5zKTtcbiAgfVxuXG4gIFN0cmVhbS5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBlbmQtb2Ytc3RyZWFtIGhhcyBiZWVuIGhpdC5cbiAgICAgKi9cbiAgICBlbmRPZlN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gIXRoaXMudG9rZW5zLmxlbmd0aDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hlbiBhIHRva2VuIGlzIHJlYWQgZnJvbSBhIHN0cmVhbSwgdGhlIGZpcnN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbSBtdXN0IGJlIHJldHVybmVkIGFuZCBzdWJzZXF1ZW50bHkgcmVtb3ZlZCwgYW5kXG4gICAgICogZW5kLW9mLXN0cmVhbSBtdXN0IGJlIHJldHVybmVkIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gR2V0IHRoZSBuZXh0IHRva2VuIGZyb20gdGhlIHN0cmVhbSwgb3JcbiAgICAgKiBlbmRfb2Zfc3RyZWFtLlxuICAgICAqL1xuICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy50b2tlbnMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZW5kX29mX3N0cmVhbTtcbiAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc2hpZnQoKTtcbiAgICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gb25lIG9yIG1vcmUgdG9rZW5zIGFyZSBwcmVwZW5kZWQgdG8gYSBzdHJlYW0sIHRob3NlIHRva2Vuc1xuICAgICAqIG11c3QgYmUgaW5zZXJ0ZWQsIGluIGdpdmVuIG9yZGVyLCBiZWZvcmUgdGhlIGZpcnN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSB0b2tlbiBUaGUgdG9rZW4ocykgdG8gcHJlcGVuZCB0byB0aGUgc3RyZWFtLlxuICAgICAqL1xuICAgIHByZXBlbmQ6IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0b2tlbikpIHtcbiAgICAgICAgdmFyIHRva2VucyA9IC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8odG9rZW4pO1xuICAgICAgICB3aGlsZSAodG9rZW5zLmxlbmd0aClcbiAgICAgICAgICB0aGlzLnRva2Vucy51bnNoaWZ0KHRva2Vucy5wb3AoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy51bnNoaWZ0KHRva2VuKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hlbiBvbmUgb3IgbW9yZSB0b2tlbnMgYXJlIHB1c2hlZCB0byBhIHN0cmVhbSwgdGhvc2UgdG9rZW5zXG4gICAgICogbXVzdCBiZSBpbnNlcnRlZCwgaW4gZ2l2ZW4gb3JkZXIsIGFmdGVyIHRoZSBsYXN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSB0b2tlbiBUaGUgdG9rZW5zKHMpIHRvIHByZXBlbmQgdG8gdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwdXNoOiBmdW5jdGlvbih0b2tlbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9rZW4pKSB7XG4gICAgICAgIHZhciB0b2tlbnMgPSAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHRva2VuKTtcbiAgICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbnMuc2hpZnQoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy9cbiAgLy8gNC4gRW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gNC4xIEVuY29kZXJzIGFuZCBkZWNvZGVyc1xuXG4gIC8qKiBAY29uc3QgKi9cbiAgdmFyIGZpbmlzaGVkID0gLTE7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmF0YWwgSWYgdHJ1ZSwgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXI9fSBvcHRfY29kZV9wb2ludCBPdmVycmlkZSB0aGUgc3RhbmRhcmQgZmFsbGJhY2sgY29kZSBwb2ludC5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgY29kZSBwb2ludCB0byBpbnNlcnQgb24gYSBkZWNvZGluZyBlcnJvci5cbiAgICovXG4gIGZ1bmN0aW9uIGRlY29kZXJFcnJvcihmYXRhbCwgb3B0X2NvZGVfcG9pbnQpIHtcbiAgICBpZiAoZmF0YWwpXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0RlY29kZXIgZXJyb3InKTtcbiAgICByZXR1cm4gb3B0X2NvZGVfcG9pbnQgfHwgMHhGRkZEO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSBjb2RlIHBvaW50IHRoYXQgY291bGQgbm90IGJlIGVuY29kZWQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gQWx3YXlzIHRocm93cywgbm8gdmFsdWUgaXMgYWN0dWFsbHkgcmV0dXJuZWQuXG4gICAqL1xuICBmdW5jdGlvbiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCkge1xuICAgIHRocm93IFR5cGVFcnJvcignVGhlIGNvZGUgcG9pbnQgJyArIGNvZGVfcG9pbnQgKyAnIGNvdWxkIG5vdCBiZSBlbmNvZGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbnRlcmZhY2UgKi9cbiAgZnVuY3Rpb24gRGVjb2RlcigpIHt9XG4gIERlY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LCBvciB8ZmluaXNoZWR8LlxuICAgICAqL1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge31cbiAgfTtcblxuICAvKiogQGludGVyZmFjZSAqL1xuICBmdW5jdGlvbiBFbmNvZGVyKCkge31cbiAgRW5jb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGNvZGUgcG9pbnRzIGJlaW5nIGVuY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LCBvciB8ZmluaXNoZWR8LlxuICAgICAqL1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge31cbiAgfTtcblxuICAvLyA0LjIgTmFtZXMgYW5kIGxhYmVsc1xuXG4gIC8vIFRPRE86IERlZmluZSBAdHlwZWRlZiBmb3IgRW5jb2Rpbmc6IHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9pc3N1ZXMvMjQ3XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYWJlbCBUaGUgZW5jb2RpbmcgbGFiZWwuXG4gICAqIEByZXR1cm4gez97bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fX1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEVuY29kaW5nKGxhYmVsKSB7XG4gICAgLy8gMS4gUmVtb3ZlIGFueSBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlIGZyb20gbGFiZWwuXG4gICAgbGFiZWwgPSBTdHJpbmcobGFiZWwpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gMi4gSWYgbGFiZWwgaXMgYW4gQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgYW55IG9mIHRoZVxuICAgIC8vIGxhYmVscyBsaXN0ZWQgaW4gdGhlIHRhYmxlIGJlbG93LCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAvLyBlbmNvZGluZywgYW5kIGZhaWx1cmUgb3RoZXJ3aXNlLlxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobGFiZWxfdG9fZW5jb2RpbmcsIGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsX3RvX2VuY29kaW5nW2xhYmVsXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RpbmdzIHRhYmxlOiBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy9lbmNvZGluZ3MuanNvblxuICAgKiBAY29uc3RcbiAgICogQHR5cGUgeyFBcnJheS48e1xuICAgKiAgICAgICAgICBoZWFkaW5nOiBzdHJpbmcsXG4gICAqICAgICAgICAgIGVuY29kaW5nczogQXJyYXkuPHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59PlxuICAgKiAgICAgICAgfT59XG4gICAqL1xuICB2YXIgZW5jb2RpbmdzID0gW1xuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ1bmljb2RlLTEtMS11dGYtOFwiLFxuICAgICAgICAgIFwidXRmLThcIixcbiAgICAgICAgICBcInV0ZjhcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ1dGYtOFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJUaGUgRW5jb2RpbmdcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCI4NjZcIixcbiAgICAgICAgICBcImNwODY2XCIsXG4gICAgICAgICAgXCJjc2libTg2NlwiLFxuICAgICAgICAgIFwiaWJtODY2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaWJtODY2XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW4yXCIsXG4gICAgICAgICAgXCJpc28tODg1OS0yXCIsXG4gICAgICAgICAgXCJpc28taXItMTAxXCIsXG4gICAgICAgICAgXCJpc284ODU5LTJcIixcbiAgICAgICAgICBcImlzbzg4NTkyXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0yXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0yOjE5ODdcIixcbiAgICAgICAgICBcImwyXCIsXG4gICAgICAgICAgXCJsYXRpbjJcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0yXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW4zXCIsXG4gICAgICAgICAgXCJpc28tODg1OS0zXCIsXG4gICAgICAgICAgXCJpc28taXItMTA5XCIsXG4gICAgICAgICAgXCJpc284ODU5LTNcIixcbiAgICAgICAgICBcImlzbzg4NTkzXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0zXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0zOjE5ODhcIixcbiAgICAgICAgICBcImwzXCIsXG4gICAgICAgICAgXCJsYXRpbjNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0zXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW40XCIsXG4gICAgICAgICAgXCJpc28tODg1OS00XCIsXG4gICAgICAgICAgXCJpc28taXItMTEwXCIsXG4gICAgICAgICAgXCJpc284ODU5LTRcIixcbiAgICAgICAgICBcImlzbzg4NTk0XCIsXG4gICAgICAgICAgXCJpc29fODg1OS00XCIsXG4gICAgICAgICAgXCJpc29fODg1OS00OjE5ODhcIixcbiAgICAgICAgICBcImw0XCIsXG4gICAgICAgICAgXCJsYXRpbjRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS00XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW5jeXJpbGxpY1wiLFxuICAgICAgICAgIFwiY3lyaWxsaWNcIixcbiAgICAgICAgICBcImlzby04ODU5LTVcIixcbiAgICAgICAgICBcImlzby1pci0xNDRcIixcbiAgICAgICAgICBcImlzbzg4NTktNVwiLFxuICAgICAgICAgIFwiaXNvODg1OTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTU6MTk4OFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYXJhYmljXCIsXG4gICAgICAgICAgXCJhc21vLTcwOFwiLFxuICAgICAgICAgIFwiY3Npc284ODU5NmVcIixcbiAgICAgICAgICBcImNzaXNvODg1OTZpXCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluYXJhYmljXCIsXG4gICAgICAgICAgXCJlY21hLTExNFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNi1lXCIsXG4gICAgICAgICAgXCJpc28tODg1OS02LWlcIixcbiAgICAgICAgICBcImlzby1pci0xMjdcIixcbiAgICAgICAgICBcImlzbzg4NTktNlwiLFxuICAgICAgICAgIFwiaXNvODg1OTZcIixcbiAgICAgICAgICBcImlzb184ODU5LTZcIixcbiAgICAgICAgICBcImlzb184ODU5LTY6MTk4N1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbmdyZWVrXCIsXG4gICAgICAgICAgXCJlY21hLTExOFwiLFxuICAgICAgICAgIFwiZWxvdF85MjhcIixcbiAgICAgICAgICBcImdyZWVrXCIsXG4gICAgICAgICAgXCJncmVlazhcIixcbiAgICAgICAgICBcImlzby04ODU5LTdcIixcbiAgICAgICAgICBcImlzby1pci0xMjZcIixcbiAgICAgICAgICBcImlzbzg4NTktN1wiLFxuICAgICAgICAgIFwiaXNvODg1OTdcIixcbiAgICAgICAgICBcImlzb184ODU5LTdcIixcbiAgICAgICAgICBcImlzb184ODU5LTc6MTk4N1wiLFxuICAgICAgICAgIFwic3VuX2V1X2dyZWVrXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktN1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzg4NTk4ZVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbmhlYnJld1wiLFxuICAgICAgICAgIFwiaGVicmV3XCIsXG4gICAgICAgICAgXCJpc28tODg1OS04XCIsXG4gICAgICAgICAgXCJpc28tODg1OS04LWVcIixcbiAgICAgICAgICBcImlzby1pci0xMzhcIixcbiAgICAgICAgICBcImlzbzg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvODg1OThcIixcbiAgICAgICAgICBcImlzb184ODU5LThcIixcbiAgICAgICAgICBcImlzb184ODU5LTg6MTk4OFwiLFxuICAgICAgICAgIFwidmlzdWFsXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktOFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzg4NTk4aVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOC1pXCIsXG4gICAgICAgICAgXCJsb2dpY2FsXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktOC1pXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW42XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xMFwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE1N1wiLFxuICAgICAgICAgIFwiaXNvODg1OS0xMFwiLFxuICAgICAgICAgIFwiaXNvODg1OTEwXCIsXG4gICAgICAgICAgXCJsNlwiLFxuICAgICAgICAgIFwibGF0aW42XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiaXNvLTg4NTktMTNcIixcbiAgICAgICAgICBcImlzbzg4NTktMTNcIixcbiAgICAgICAgICBcImlzbzg4NTkxM1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTEzXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTE0XCIsXG4gICAgICAgICAgXCJpc284ODU5LTE0XCIsXG4gICAgICAgICAgXCJpc284ODU5MTRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xNFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluOVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTVcIixcbiAgICAgICAgICBcImlzbzg4NTktMTVcIixcbiAgICAgICAgICBcImlzbzg4NTkxNVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMTVcIixcbiAgICAgICAgICBcImw5XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiaXNvLTg4NTktMTZcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xNlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2tvaThyXCIsXG4gICAgICAgICAgXCJrb2lcIixcbiAgICAgICAgICBcImtvaThcIixcbiAgICAgICAgICBcImtvaTgtclwiLFxuICAgICAgICAgIFwia29pOF9yXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwia29pOC1yXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImtvaTgtcnVcIixcbiAgICAgICAgICBcImtvaTgtdVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImtvaTgtdVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc21hY2ludG9zaFwiLFxuICAgICAgICAgIFwibWFjXCIsXG4gICAgICAgICAgXCJtYWNpbnRvc2hcIixcbiAgICAgICAgICBcIngtbWFjLXJvbWFuXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwibWFjaW50b3NoXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImRvcy04NzRcIixcbiAgICAgICAgICBcImlzby04ODU5LTExXCIsXG4gICAgICAgICAgXCJpc284ODU5LTExXCIsXG4gICAgICAgICAgXCJpc284ODU5MTFcIixcbiAgICAgICAgICBcInRpcy02MjBcIixcbiAgICAgICAgICBcIndpbmRvd3MtODc0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy04NzRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjUwXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTBcIixcbiAgICAgICAgICBcIngtY3AxMjUwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1MVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUxXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJhbnNpX3gzLjQtMTk2OFwiLFxuICAgICAgICAgIFwiYXNjaWlcIixcbiAgICAgICAgICBcImNwMTI1MlwiLFxuICAgICAgICAgIFwiY3A4MTlcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW4xXCIsXG4gICAgICAgICAgXCJpYm04MTlcIixcbiAgICAgICAgICBcImlzby04ODU5LTFcIixcbiAgICAgICAgICBcImlzby1pci0xMDBcIixcbiAgICAgICAgICBcImlzbzg4NTktMVwiLFxuICAgICAgICAgIFwiaXNvODg1OTFcIixcbiAgICAgICAgICBcImlzb184ODU5LTFcIixcbiAgICAgICAgICBcImlzb184ODU5LTE6MTk4N1wiLFxuICAgICAgICAgIFwibDFcIixcbiAgICAgICAgICBcImxhdGluMVwiLFxuICAgICAgICAgIFwidXMtYXNjaWlcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MlwiLFxuICAgICAgICAgIFwieC1jcDEyNTJcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTJcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjUzXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTNcIixcbiAgICAgICAgICBcIngtY3AxMjUzXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUzXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NFwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbjVcIixcbiAgICAgICAgICBcImlzby04ODU5LTlcIixcbiAgICAgICAgICBcImlzby1pci0xNDhcIixcbiAgICAgICAgICBcImlzbzg4NTktOVwiLFxuICAgICAgICAgIFwiaXNvODg1OTlcIixcbiAgICAgICAgICBcImlzb184ODU5LTlcIixcbiAgICAgICAgICBcImlzb184ODU5LTk6MTk4OVwiLFxuICAgICAgICAgIFwibDVcIixcbiAgICAgICAgICBcImxhdGluNVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU0XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTVcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NVwiLFxuICAgICAgICAgIFwieC1jcDEyNTVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU2XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTZcIixcbiAgICAgICAgICBcIngtY3AxMjU2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU2XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1N1wiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU3XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1N1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1N1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNThcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1OFwiLFxuICAgICAgICAgIFwieC1jcDEyNThcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNThcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwieC1tYWMtY3lyaWxsaWNcIixcbiAgICAgICAgICBcIngtbWFjLXVrcmFpbmlhblwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIngtbWFjLWN5cmlsbGljXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjaGluZXNlXCIsXG4gICAgICAgICAgXCJjc2diMjMxMlwiLFxuICAgICAgICAgIFwiY3Npc281OGdiMjMxMjgwXCIsXG4gICAgICAgICAgXCJnYjIzMTJcIixcbiAgICAgICAgICBcImdiXzIzMTJcIixcbiAgICAgICAgICBcImdiXzIzMTItODBcIixcbiAgICAgICAgICBcImdia1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTU4XCIsXG4gICAgICAgICAgXCJ4LWdia1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImdia1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJnYjE4MDMwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiZ2IxODAzMFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlIChzaW1wbGlmaWVkKSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJiaWc1XCIsXG4gICAgICAgICAgXCJiaWc1LWhrc2NzXCIsXG4gICAgICAgICAgXCJjbi1iaWc1XCIsXG4gICAgICAgICAgXCJjc2JpZzVcIixcbiAgICAgICAgICBcIngteC1iaWc1XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiYmlnNVwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NldWNwa2RmbXRqYXBhbmVzZVwiLFxuICAgICAgICAgIFwiZXVjLWpwXCIsXG4gICAgICAgICAgXCJ4LWV1Yy1qcFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImV1Yy1qcFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzIwMjJqcFwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItanBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tMjAyMi1qcFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc3NoaWZ0amlzXCIsXG4gICAgICAgICAgXCJtczkzMlwiLFxuICAgICAgICAgIFwibXNfa2FuamlcIixcbiAgICAgICAgICBcInNoaWZ0LWppc1wiLFxuICAgICAgICAgIFwic2hpZnRfamlzXCIsXG4gICAgICAgICAgXCJzamlzXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTMxalwiLFxuICAgICAgICAgIFwieC1zamlzXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwic2hpZnRfamlzXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtdWx0aS1ieXRlIEphcGFuZXNlIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzZXVja3JcIixcbiAgICAgICAgICBcImNza3NjNTYwMTE5ODdcIixcbiAgICAgICAgICBcImV1Yy1rclwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE0OVwiLFxuICAgICAgICAgIFwia29yZWFuXCIsXG4gICAgICAgICAgXCJrc19jXzU2MDEtMTk4N1wiLFxuICAgICAgICAgIFwia3NfY181NjAxLTE5ODlcIixcbiAgICAgICAgICBcImtzYzU2MDFcIixcbiAgICAgICAgICBcImtzY181NjAxXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTk0OVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImV1Yy1rclwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc28yMDIya3JcIixcbiAgICAgICAgICBcImh6LWdiLTIzMTJcIixcbiAgICAgICAgICBcImlzby0yMDIyLWNuXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1jbi1leHRcIixcbiAgICAgICAgICBcImlzby0yMDIyLWtyXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwicmVwbGFjZW1lbnRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidXRmLTE2YmVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ1dGYtMTZiZVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ1dGYtMTZcIixcbiAgICAgICAgICBcInV0Zi0xNmxlXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLTE2bGVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwieC11c2VyLWRlZmluZWRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ4LXVzZXItZGVmaW5lZFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbWlzY2VsbGFuZW91cyBlbmNvZGluZ3NcIlxuICB9XG4gIF07XG5cbiAgLy8gTGFiZWwgdG8gZW5jb2RpbmcgcmVnaXN0cnkuXG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcse25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn0+fSAqL1xuICB2YXIgbGFiZWxfdG9fZW5jb2RpbmcgPSB7fTtcbiAgZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oY2F0ZWdvcnkpIHtcbiAgICBjYXRlZ29yeS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgZW5jb2RpbmcubGFiZWxzLmZvckVhY2goZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgICAgbGFiZWxfdG9fZW5jb2RpbmdbbGFiZWxdID0gZW5jb2Rpbmc7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gUmVnaXN0cnkgb2Ygb2YgZW5jb2Rlci9kZWNvZGVyIGZhY3RvcmllcywgYnkgZW5jb2RpbmcgbmFtZS5cbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oe2ZhdGFsOmJvb2xlYW59KTogRW5jb2Rlcj59ICovXG4gIHZhciBlbmNvZGVycyA9IHt9O1xuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBmdW5jdGlvbih7ZmF0YWw6Ym9vbGVhbn0pOiBEZWNvZGVyPn0gKi9cbiAgdmFyIGRlY29kZXJzID0ge307XG5cbiAgLy9cbiAgLy8gNS4gSW5kZXhlc1xuICAvL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9pbnRlciBUaGUgfHBvaW50ZXJ8IHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7KCFBcnJheS48P251bWJlcj58dW5kZWZpbmVkKX0gaW5kZXggVGhlIHxpbmRleHwgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB8aW5kZXh8LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgpIHtcbiAgICBpZiAoIWluZGV4KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gaW5kZXhbcG9pbnRlcl0gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGUgcG9pbnR8IHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7IUFycmF5Ljw/bnVtYmVyPn0gaW5kZXggVGhlIHxpbmRleHwgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGZpcnN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byB8Y29kZSBwb2ludHwgaW5cbiAgICogICAgIHxpbmRleHwsIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB8aW5kZXh8LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KSB7XG4gICAgdmFyIHBvaW50ZXIgPSBpbmRleC5pbmRleE9mKGNvZGVfcG9pbnQpO1xuICAgIHJldHVybiBwb2ludGVyID09PSAtMSA/IG51bGwgOiBwb2ludGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGluZGV4LlxuICAgKiBAcmV0dXJuIHsoIUFycmF5LjxudW1iZXI+fCFBcnJheS48QXJyYXkuPG51bWJlcj4+KX1cbiAgICogICovXG4gIGZ1bmN0aW9uIGluZGV4KG5hbWUpIHtcbiAgICBpZiAoISgnZW5jb2RpbmctaW5kZXhlcycgaW4gZ2xvYmFsKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmRleGVzIG1pc3NpbmcuXCIgK1xuICAgICAgICAgICAgICAgICAgXCIgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzP1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGdsb2JhbFsnZW5jb2RpbmctaW5kZXhlcyddW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb2ludGVyIFRoZSB8cG9pbnRlcnwgdG8gc2VhcmNoIGZvciBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4R0IxODAzMFJhbmdlc0NvZGVQb2ludEZvcihwb2ludGVyKSB7XG4gICAgLy8gMS4gSWYgcG9pbnRlciBpcyBncmVhdGVyIHRoYW4gMzk0MTkgYW5kIGxlc3MgdGhhbiAxODkwMDAsIG9yXG4gICAgLy8gcG9pbnRlciBpcyBncmVhdGVyIHRoYW4gMTIzNzU3NSwgcmV0dXJuIG51bGwuXG4gICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYgcG9pbnRlciA8IDE4OTAwMCkgfHwgKHBvaW50ZXIgPiAxMjM3NTc1KSlcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgLy8gMi4gTGV0IG9mZnNldCBiZSB0aGUgbGFzdCBwb2ludGVyIGluIGluZGV4IGdiMTgwMzAgcmFuZ2VzIHRoYXRcbiAgICAvLyBpcyBlcXVhbCB0byBvciBsZXNzIHRoYW4gcG9pbnRlciBhbmQgbGV0IGNvZGUgcG9pbnQgb2Zmc2V0IGJlXG4gICAgLy8gaXRzIGNvcnJlc3BvbmRpbmcgY29kZSBwb2ludC5cbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgY29kZV9wb2ludF9vZmZzZXQgPSAwO1xuICAgIHZhciBpZHggPSBpbmRleCgnZ2IxODAzMCcpO1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpZHgubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgICAgdmFyIGVudHJ5ID0gaWR4W2ldO1xuICAgICAgaWYgKGVudHJ5WzBdIDw9IHBvaW50ZXIpIHtcbiAgICAgICAgb2Zmc2V0ID0gZW50cnlbMF07XG4gICAgICAgIGNvZGVfcG9pbnRfb2Zmc2V0ID0gZW50cnlbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzLiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQgb2Zmc2V0ICtcbiAgICAvLyBwb2ludGVyIOKIkiBvZmZzZXQuXG4gICAgcmV0dXJuIGNvZGVfcG9pbnRfb2Zmc2V0ICsgcG9pbnRlciAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGUgcG9pbnR8IHRvIGxvY2F0ZSBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgZmlyc3QgcG9pbnRlciBjb3JyZXNwb25kaW5nIHRvIHxjb2RlIHBvaW50fCBpbiB0aGVcbiAgICogICAgIGdiMTgwMzAgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEdCMTgwMzBSYW5nZXNQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcbiAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIHRoZSBsYXN0IGNvZGUgcG9pbnQgaW4gaW5kZXggZ2IxODAzMCByYW5nZXNcbiAgICAvLyB0aGF0IGlzIGVxdWFsIHRvIG9yIGxlc3MgdGhhbiBjb2RlIHBvaW50IGFuZCBsZXQgcG9pbnRlciBvZmZzZXRcbiAgICAvLyBiZSBpdHMgY29ycmVzcG9uZGluZyBwb2ludGVyLlxuICAgIHZhciBvZmZzZXQgPSAwO1xuICAgIHZhciBwb2ludGVyX29mZnNldCA9IDA7XG4gICAgdmFyIGlkeCA9IGluZGV4KCdnYjE4MDMwJyk7XG4gICAgdmFyIGk7XG4gICAgZm9yIChpID0gMDsgaSA8IGlkeC5sZW5ndGg7ICsraSkge1xuICAgICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgICB2YXIgZW50cnkgPSBpZHhbaV07XG4gICAgICBpZiAoZW50cnlbMV0gPD0gY29kZV9wb2ludCkge1xuICAgICAgICBvZmZzZXQgPSBlbnRyeVsxXTtcbiAgICAgICAgcG9pbnRlcl9vZmZzZXQgPSBlbnRyeVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIuIFJldHVybiBhIHBvaW50ZXIgd2hvc2UgdmFsdWUgaXMgcG9pbnRlciBvZmZzZXQgKyBjb2RlIHBvaW50XG4gICAgLy8g4oiSIG9mZnNldC5cbiAgICByZXR1cm4gcG9pbnRlcl9vZmZzZXQgKyBjb2RlX3BvaW50IC0gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZV9wb2ludHwgdG8gc2VhcmNoIGZvciBpbiB0aGUgc2hpZnRfamlzIGluZGV4LlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHxwb2ludGVyfCBpbiB8aW5kZXh8LFxuICAgKiAgICAgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHRoZSBzaGlmdF9qaXMgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleFNoaWZ0SklTUG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG4gICAgLy8gMS4gTGV0IGluZGV4IGJlIGluZGV4IGppczAyMDggZXhjbHVkaW5nIGFsbCBwb2ludGVycyBpbiB0aGVcbiAgICAvLyByYW5nZSA4MjcyIHRvIDg4MzUuXG4gICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG4gICAgaWYgKHBvaW50ZXIgPT09IG51bGwgfHwgaW5SYW5nZShwb2ludGVyLCA4MjcyLCA4ODM1KSlcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4LlxuICAgIHJldHVybiBwb2ludGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZV9wb2ludHwgdG8gc2VhcmNoIGZvciBpbiB0aGUgYmlnNSBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgYmlnNSBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4QmlnNVBvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuXG4gICAgLy8gMS4gTGV0IGluZGV4IGJlIGluZGV4IGJpZzUuXG4gICAgdmFyIGluZGV4XyA9IGluZGV4KCdiaWc1Jyk7XG5cbiAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIFUrMjU1MCwgVSsyNTVFLCBVKzI1NjEsIFUrMjU2QSwgVSs1MzQxLCBvclxuICAgIC8vIFUrNTM0NSwgcmV0dXJuIHRoZSBsYXN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byBjb2RlIHBvaW50IGluXG4gICAgLy8gaW5kZXguXG4gICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjU1MCB8fCBjb2RlX3BvaW50ID09PSAweDI1NUUgfHxcbiAgICAgICAgY29kZV9wb2ludCA9PT0gMHgyNTYxIHx8IGNvZGVfcG9pbnQgPT09IDB4MjU2QSB8fFxuICAgICAgICBjb2RlX3BvaW50ID09PSAweDUzNDEgfHwgY29kZV9wb2ludCA9PT0gMHg1MzQ1KSB7XG4gICAgICByZXR1cm4gaW5kZXgubGFzdEluZGV4T2YoY29kZV9wb2ludCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4LlxuICAgIHJldHVybiBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXhfKTtcbiAgfVxuXG4gIC8vXG4gIC8vIDcuIEFQSVxuICAvL1xuXG4gIC8qKiBAY29uc3QgKi8gdmFyIERFRkFVTFRfRU5DT0RJTkcgPSAndXRmLTgnO1xuXG4gIC8vIDcuMSBJbnRlcmZhY2UgVGV4dERlY29kZXJcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nPX0gZW5jb2RpbmcgVGhlIGxhYmVsIG9mIHRoZSBlbmNvZGluZztcbiAgICogICAgIGRlZmF1bHRzIHRvICd1dGYtOCcuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVGV4dERlY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVGV4dERlY29kZXIpKSB7XG4gICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKTtcbiAgICB9XG4gICAgZW5jb2RpbmcgPSBlbmNvZGluZyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKGVuY29kaW5nKSA6IERFRkFVTFRfRU5DT0RJTkc7XG4gICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9lbmNvZGluZyA9IGdldEVuY29kaW5nKGVuY29kaW5nKTtcbiAgICBpZiAodGhpcy5fZW5jb2RpbmcgPT09IG51bGwgfHwgdGhpcy5fZW5jb2RpbmcubmFtZSA9PT0gJ3JlcGxhY2VtZW50JylcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICBpZiAoIWRlY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKSB7XG4gICAgICB0aHJvdyBFcnJvcignRGVjb2RlciBub3QgcHJlc2VudC4nICtcbiAgICAgICAgICAgICAgICAgICcgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzPycpO1xuICAgIH1cblxuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9zdHJlYW1pbmcgPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fQk9Nc2VlbiA9IGZhbHNlO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7P0RlY29kZXJ9ICovXG4gICAgdGhpcy5fZGVjb2RlciA9IG51bGw7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX2ZhdGFsID0gQm9vbGVhbihvcHRpb25zWydmYXRhbCddKTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5faWdub3JlQk9NID0gQm9vbGVhbihvcHRpb25zWydpZ25vcmVCT00nXSk7XG5cbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuY29kaW5nJywge3ZhbHVlOiB0aGlzLl9lbmNvZGluZy5uYW1lfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2ZhdGFsJywge3ZhbHVlOiB0aGlzLl9mYXRhbH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdpZ25vcmVCT00nLCB7dmFsdWU6IHRoaXMuX2lnbm9yZUJPTX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuY29kaW5nID0gdGhpcy5fZW5jb2RpbmcubmFtZTtcbiAgICAgIHRoaXMuZmF0YWwgPSB0aGlzLl9mYXRhbDtcbiAgICAgIHRoaXMuaWdub3JlQk9NID0gdGhpcy5faWdub3JlQk9NO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgVGV4dERlY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3PX0gaW5wdXQgVGhlIGJ1ZmZlciBvZiBieXRlcyB0byBkZWNvZGUuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBieXRlcztcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIGlucHV0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShpbnB1dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiYgJ2J1ZmZlcicgaW4gaW5wdXQgJiZcbiAgICAgICAgICAgICAgICAgaW5wdXQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShpbnB1dC5idWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5ieXRlTGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgICB9XG5cbiAgICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG5cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIHRoaXMuX2RlY29kZXIgPSBkZWNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSh7ZmF0YWw6IHRoaXMuX2ZhdGFsfSk7XG4gICAgICAgIHRoaXMuX0JPTXNlZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3N0cmVhbWluZyA9IEJvb2xlYW4ob3B0aW9uc1snc3RyZWFtJ10pO1xuXG4gICAgICB2YXIgaW5wdXRfc3RyZWFtID0gbmV3IFN0cmVhbShieXRlcyk7XG5cbiAgICAgIHZhciBjb2RlX3BvaW50cyA9IFtdO1xuXG4gICAgICAvKiogQHR5cGUgez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9ICovXG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICB3aGlsZSAoIWlucHV0X3N0cmVhbS5lbmRPZlN0cmVhbSgpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoLmFwcGx5KGNvZGVfcG9pbnRzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9wb2ludHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoLmFwcGx5KGNvZGVfcG9pbnRzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgfSB3aGlsZSAoIWlucHV0X3N0cmVhbS5lbmRPZlN0cmVhbSgpKTtcbiAgICAgICAgdGhpcy5fZGVjb2RlciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2RlX3BvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gSWYgZW5jb2RpbmcgaXMgb25lIG9mIHV0Zi04LCB1dGYtMTZiZSwgYW5kIHV0Zi0xNmxlLCBhbmRcbiAgICAgICAgLy8gaWdub3JlIEJPTSBmbGFnIGFuZCBCT00gc2VlbiBmbGFnIGFyZSB1bnNldCwgcnVuIHRoZXNlXG4gICAgICAgIC8vIHN1YnN1YnN0ZXBzOlxuICAgICAgICBpZiAoWyd1dGYtOCcsICd1dGYtMTZsZScsICd1dGYtMTZiZSddLmluZGV4T2YodGhpcy5lbmNvZGluZykgIT09IC0xICYmXG4gICAgICAgICAgICAhdGhpcy5faWdub3JlQk9NICYmICF0aGlzLl9CT01zZWVuKSB7XG4gICAgICAgICAgLy8gSWYgdG9rZW4gaXMgVStGRUZGLCBzZXQgQk9NIHNlZW4gZmxhZy5cbiAgICAgICAgICBpZiAoY29kZV9wb2ludHNbMF0gPT09IDB4RkVGRikge1xuICAgICAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IHRydWU7XG4gICAgICAgICAgICBjb2RlX3BvaW50cy5zaGlmdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRva2VuIGlzIG5vdCBlbmQtb2Ytc3RyZWFtLCBzZXQgQk9NIHNlZW5cbiAgICAgICAgICAgIC8vIGZsYWcgYW5kIGFwcGVuZCB0b2tlbiB0byBvdXRwdXQuXG4gICAgICAgICAgICB0aGlzLl9CT01zZWVuID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvZGVQb2ludHNUb1N0cmluZyhjb2RlX3BvaW50cyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIDcuMiBJbnRlcmZhY2UgVGV4dEVuY29kZXJcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nPX0gZW5jb2RpbmcgVGhlIGxhYmVsIG9mIHRoZSBlbmNvZGluZztcbiAgICogICAgIGRlZmF1bHRzIHRvICd1dGYtOCcuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVGV4dEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVGV4dEVuY29kZXIpKVxuICAgICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG4gICAgZW5jb2RpbmcgPSBlbmNvZGluZyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKGVuY29kaW5nKSA6IERFRkFVTFRfRU5DT0RJTkc7XG4gICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9lbmNvZGluZyA9IGdldEVuY29kaW5nKGVuY29kaW5nKTtcbiAgICBpZiAodGhpcy5fZW5jb2RpbmcgPT09IG51bGwgfHwgdGhpcy5fZW5jb2RpbmcubmFtZSA9PT0gJ3JlcGxhY2VtZW50JylcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICB2YXIgYWxsb3dMZWdhY3lFbmNvZGluZyA9XG4gICAgICAgICAgQm9vbGVhbihvcHRpb25zWydOT05TVEFOREFSRF9hbGxvd0xlZ2FjeUVuY29kaW5nJ10pO1xuICAgIHZhciBpc0xlZ2FjeUVuY29kaW5nID0gKHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtOCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTE2bGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi0xNmJlJyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IChpc0xlZ2FjeUVuY29kaW5nICYmICFhbGxvd0xlZ2FjeUVuY29kaW5nKSlcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICBpZiAoIWVuY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKSB7XG4gICAgICB0aHJvdyBFcnJvcignRW5jb2RlciBub3QgcHJlc2VudC4nICtcbiAgICAgICAgICAgICAgICAgICcgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzPycpO1xuICAgIH1cblxuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9zdHJlYW1pbmcgPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUgez9FbmNvZGVyfSAqL1xuICAgIHRoaXMuX2VuY29kZXIgPSBudWxsO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7e2ZhdGFsOiBib29sZWFufX0gKi9cbiAgICB0aGlzLl9vcHRpb25zID0ge2ZhdGFsOiBCb29sZWFuKG9wdGlvbnNbJ2ZhdGFsJ10pfTtcblxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuY29kaW5nJywge3ZhbHVlOiB0aGlzLl9lbmNvZGluZy5uYW1lfSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5lbmNvZGluZyA9IHRoaXMuX2VuY29kaW5nLm5hbWU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIFRleHRFbmNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZz19IG9wdF9zdHJpbmcgVGhlIHN0cmluZyB0byBlbmNvZGUuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAgICogQHJldHVybiB7VWludDhBcnJheX0gRW5jb2RlZCBieXRlcywgYXMgYSBVaW50OEFycmF5LlxuICAgICAqL1xuICAgIGVuY29kZTogZnVuY3Rpb24gZW5jb2RlKG9wdF9zdHJpbmcsIG9wdGlvbnMpIHtcbiAgICAgIG9wdF9zdHJpbmcgPSBvcHRfc3RyaW5nID8gU3RyaW5nKG9wdF9zdHJpbmcpIDogJyc7XG4gICAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuXG4gICAgICAvLyBOT1RFOiBUaGlzIG9wdGlvbiBpcyBub25zdGFuZGFyZC4gTm9uZSBvZiB0aGUgZW5jb2RpbmdzXG4gICAgICAvLyBwZXJtaXR0ZWQgZm9yIGVuY29kaW5nIChpLmUuIFVURi04LCBVVEYtMTYpIGFyZSBzdGF0ZWZ1bCxcbiAgICAgIC8vIHNvIHN0cmVhbWluZyBpcyBub3QgbmVjZXNzYXJ5LlxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpXG4gICAgICAgIHRoaXMuX2VuY29kZXIgPSBlbmNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSh0aGlzLl9vcHRpb25zKTtcbiAgICAgIHRoaXMuX3N0cmVhbWluZyA9IEJvb2xlYW4ob3B0aW9uc1snc3RyZWFtJ10pO1xuXG4gICAgICB2YXIgYnl0ZXMgPSBbXTtcbiAgICAgIHZhciBpbnB1dF9zdHJlYW0gPSBuZXcgU3RyZWFtKHN0cmluZ1RvQ29kZVBvaW50cyhvcHRfc3RyaW5nKSk7XG4gICAgICAvKiogQHR5cGUgez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9ICovXG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgYnl0ZXMucHVzaC5hcHBseShieXRlcywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJ5dGVzLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgICAgYnl0ZXMucHVzaC5hcHBseShieXRlcywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBieXRlcy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW5jb2RlciA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgIH1cbiAgfTtcblxuXG4gIC8vXG4gIC8vIDguIFRoZSBlbmNvZGluZ1xuICAvL1xuXG4gIC8vIDguMSB1dGYtOFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGOERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyB1dGYtOCdzIGRlY29kZXIncyBoYXMgYW4gYXNzb2NpYXRlZCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOFxuICAgIC8vIGJ5dGVzIHNlZW4sIGFuZCB1dGYtOCBieXRlcyBuZWVkZWQgKGFsbCBpbml0aWFsbHkgMCksIGEgdXRmLThcbiAgICAvLyBsb3dlciBib3VuZGFyeSAoaW5pdGlhbGx5IDB4ODApLCBhbmQgYSB1dGYtOCB1cHBlciBib3VuZGFyeVxuICAgIC8vIChpbml0aWFsbHkgMHhCRikuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2NvZGVfcG9pbnQgPSAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9ieXRlc19zZWVuID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgdXRmLTggYnl0ZXMgbmVlZGVkIGlzIG5vdCAwLFxuICAgICAgLy8gc2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiB1dGY4X2J5dGVzX25lZWRlZCAhPT0gMCkge1xuICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIHV0Zi04IGJ5dGVzIG5lZWRlZCBpcyAwLCBiYXNlZCBvbiBieXRlOlxuICAgICAgaWYgKHV0ZjhfYnl0ZXNfbmVlZGVkID09PSAwKSB7XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhDMiB0byAweERGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4QzIsIDB4REYpKSB7XG4gICAgICAgICAgLy8gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAxIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvIGJ5dGVcbiAgICAgICAgICAvLyDiiJIgMHhDMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDE7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4QzA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweEUwIHRvIDB4RUZcbiAgICAgICAgZWxzZSBpZiAoaW5SYW5nZShiaXRlLCAweEUwLCAweEVGKSkge1xuICAgICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgMHhFMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4QTAuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RTApXG4gICAgICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHhBMDtcbiAgICAgICAgICAvLyAyLiBJZiBieXRlIGlzIDB4RUQsIHNldCB1dGYtOCB1cHBlciBib3VuZGFyeSB0byAweDlGLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEVEKVxuICAgICAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4OUY7XG4gICAgICAgICAgLy8gMy4gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAyIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvXG4gICAgICAgICAgLy8gYnl0ZSDiiJIgMHhFMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDI7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4RTA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweEYwIHRvIDB4RjRcbiAgICAgICAgZWxzZSBpZiAoaW5SYW5nZShiaXRlLCAweEYwLCAweEY0KSkge1xuICAgICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgMHhGMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4OTAuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RjApXG4gICAgICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg5MDtcbiAgICAgICAgICAvLyAyLiBJZiBieXRlIGlzIDB4RjQsIHNldCB1dGYtOCB1cHBlciBib3VuZGFyeSB0byAweDhGLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEY0KVxuICAgICAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4OEY7XG4gICAgICAgICAgLy8gMy4gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAzIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvXG4gICAgICAgICAgLy8gYnl0ZSDiiJIgMHhGMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDM7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4RjA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGVycm9yLlxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlbiAoYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhDMiB0byAweEY0KSBzZXQgdXRmLTggY29kZVxuICAgICAgICAvLyBwb2ludCB0byB1dGYtOCBjb2RlIHBvaW50IDw8ICg2IMOXIHV0Zi04IGJ5dGVzIG5lZWRlZCkgYW5kXG4gICAgICAgIC8vIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9jb2RlX3BvaW50IDw8ICg2ICogdXRmOF9ieXRlc19uZWVkZWQpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBub3QgaW4gdGhlIHJhbmdlIHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIHV0Zi04XG4gICAgICAvLyB1cHBlciBib3VuZGFyeSwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKCFpblJhbmdlKGJpdGUsIHV0ZjhfbG93ZXJfYm91bmRhcnksIHV0ZjhfdXBwZXJfYm91bmRhcnkpKSB7XG5cbiAgICAgICAgLy8gMS4gU2V0IHV0Zi04IGNvZGUgcG9pbnQsIHV0Zi04IGJ5dGVzIG5lZWRlZCwgYW5kIHV0Zi04XG4gICAgICAgIC8vIGJ5dGVzIHNlZW4gdG8gMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4ODAsIGFuZCBzZXRcbiAgICAgICAgLy8gdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHhCRi5cbiAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9ieXRlc19uZWVkZWQgPSB1dGY4X2J5dGVzX3NlZW4gPSAwO1xuICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MDtcbiAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gMy4gUmV0dXJuIGVycm9yLlxuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gU2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4ODAgYW5kIHV0Zi04IHVwcGVyIGJvdW5kYXJ5XG4gICAgICAvLyB0byAweEJGLlxuICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODA7XG4gICAgICB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHhCRjtcblxuICAgICAgLy8gNi4gSW5jcmVhc2UgdXRmLTggYnl0ZXMgc2VlbiBieSBvbmUgYW5kIHNldCB1dGYtOCBjb2RlIHBvaW50XG4gICAgICAvLyB0byB1dGYtOCBjb2RlIHBvaW50ICsgKGJ5dGUg4oiSIDB4ODApIDw8ICg2IMOXICh1dGYtOCBieXRlc1xuICAgICAgLy8gbmVlZGVkIOKIkiB1dGYtOCBieXRlcyBzZWVuKSkuXG4gICAgICB1dGY4X2J5dGVzX3NlZW4gKz0gMTtcbiAgICAgIHV0ZjhfY29kZV9wb2ludCArPSAoYml0ZSAtIDB4ODApIDw8ICg2ICogKHV0ZjhfYnl0ZXNfbmVlZGVkIC0gdXRmOF9ieXRlc19zZWVuKSk7XG5cbiAgICAgIC8vIDcuIElmIHV0Zi04IGJ5dGVzIHNlZW4gaXMgbm90IGVxdWFsIHRvIHV0Zi04IGJ5dGVzIG5lZWRlZCxcbiAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgaWYgKHV0ZjhfYnl0ZXNfc2VlbiAhPT0gdXRmOF9ieXRlc19uZWVkZWQpXG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAvLyA4LiBMZXQgY29kZSBwb2ludCBiZSB1dGYtOCBjb2RlIHBvaW50LlxuICAgICAgdmFyIGNvZGVfcG9pbnQgPSB1dGY4X2NvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDkuIFNldCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOCBieXRlcyBuZWVkZWQsIGFuZCB1dGYtOCBieXRlc1xuICAgICAgLy8gc2VlbiB0byAwLlxuICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9ieXRlc19uZWVkZWQgPSB1dGY4X2J5dGVzX3NlZW4gPSAwO1xuXG4gICAgICAvLyAxMC4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGOEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN2YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gU2V0IGNvdW50IGFuZCBvZmZzZXQgYmFzZWQgb24gdGhlIHJhbmdlIGNvZGUgcG9pbnQgaXMgaW46XG4gICAgICB2YXIgY291bnQsIG9mZnNldDtcbiAgICAgIC8vIFUrMDA4MCB0byBVKzA3RkY6ICAgIDEgYW5kIDB4QzBcbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDA4MCwgMHgwN0ZGKSkge1xuICAgICAgICBjb3VudCA9IDE7XG4gICAgICAgIG9mZnNldCA9IDB4QzA7XG4gICAgICB9XG4gICAgICAvLyBVKzA4MDAgdG8gVStGRkZGOiAgICAyIGFuZCAweEUwXG4gICAgICBlbHNlIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDgwMCwgMHhGRkZGKSkge1xuICAgICAgICBjb3VudCA9IDI7XG4gICAgICAgIG9mZnNldCA9IDB4RTA7XG4gICAgICB9XG4gICAgICAvLyBVKzEwMDAwIHRvIFUrMTBGRkZGOiAzIGFuZCAweEYwXG4gICAgICBlbHNlIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MTAwMDAsIDB4MTBGRkZGKSkge1xuICAgICAgICBjb3VudCA9IDM7XG4gICAgICAgIG9mZnNldCA9IDB4RjA7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuTGV0IGJ5dGVzIGJlIGEgYnl0ZSBzZXF1ZW5jZSB3aG9zZSBmaXJzdCBieXRlIGlzIChjb2RlXG4gICAgICAvLyBwb2ludCA+PiAoNiDDlyBjb3VudCkpICsgb2Zmc2V0LlxuICAgICAgdmFyIGJ5dGVzID0gWyhjb2RlX3BvaW50ID4+ICg2ICogY291bnQpKSArIG9mZnNldF07XG5cbiAgICAgIC8vIDUuIFJ1biB0aGVzZSBzdWJzdGVwcyB3aGlsZSBjb3VudCBpcyBncmVhdGVyIHRoYW4gMDpcbiAgICAgIHdoaWxlIChjb3VudCA+IDApIHtcblxuICAgICAgICAvLyAxLiBTZXQgdGVtcCB0byBjb2RlIHBvaW50ID4+ICg2IMOXIChjb3VudCDiiJIgMSkpLlxuICAgICAgICB2YXIgdGVtcCA9IGNvZGVfcG9pbnQgPj4gKDYgKiAoY291bnQgLSAxKSk7XG5cbiAgICAgICAgLy8gMi4gQXBwZW5kIHRvIGJ5dGVzIDB4ODAgfCAodGVtcCAmIDB4M0YpLlxuICAgICAgICBieXRlcy5wdXNoKDB4ODAgfCAodGVtcCAmIDB4M0YpKTtcblxuICAgICAgICAvLyAzLiBEZWNyZWFzZSBjb3VudCBieSBvbmUuXG4gICAgICAgIGNvdW50IC09IDE7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBieXRlcyBieXRlcywgaW4gb3JkZXIuXG4gICAgICByZXR1cm4gYnl0ZXM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi04J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEY4RW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTgnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjhEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vXG4gIC8vIDkuIExlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyA5LjEgc2luZ2xlLWJ5dGUgZGVjb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gaW5kZXggVGhlIGVuY29kaW5nIGluZGV4LlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNpbmdsZUJ5dGVEZWNvZGVyKGluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyAzLiBMZXQgY29kZSBwb2ludCBiZSB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgYnl0ZSDiiJIgMHg4MCBpblxuICAgICAgLy8gaW5kZXggc2luZ2xlLWJ5dGUuXG4gICAgICB2YXIgY29kZV9wb2ludCA9IGluZGV4W2JpdGUgLSAweDgwXTtcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgIH07XG4gIH1cblxuICAvLyA5LjIgc2luZ2xlLWJ5dGUgZW5jb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0geyFBcnJheS48P251bWJlcj59IGluZGV4IFRoZSBlbmNvZGluZyBpbmRleC5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaW5nbGVCeXRlRW5jb2RlcihpbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIHNpbmdsZS1ieXRlLlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBieXRlIHdob3NlIHZhbHVlIGlzIHBvaW50ZXIgKyAweDgwLlxuICAgICAgcmV0dXJuIHBvaW50ZXIgKyAweDgwO1xuICAgIH07XG4gIH1cblxuICAoZnVuY3Rpb24oKSB7XG4gICAgaWYgKCEoJ2VuY29kaW5nLWluZGV4ZXMnIGluIGdsb2JhbCkpXG4gICAgICByZXR1cm47XG4gICAgZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oY2F0ZWdvcnkpIHtcbiAgICAgIGlmIChjYXRlZ29yeS5oZWFkaW5nICE9PSAnTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29kaW5ncycpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhdGVnb3J5LmVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgIHZhciBuYW1lID0gZW5jb2RpbmcubmFtZTtcbiAgICAgICAgdmFyIGlkeCA9IGluZGV4KG5hbWUpO1xuICAgICAgICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gICAgICAgIGRlY29kZXJzW25hbWVdID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlQnl0ZURlY29kZXIoaWR4LCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICAgICAgICBlbmNvZGVyc1tuYW1lXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZUJ5dGVFbmNvZGVyKGlkeCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSgpKTtcblxuICAvL1xuICAvLyAxMC4gTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTAuMSBnYmtcblxuICAvLyAxMC4xLjEgZ2JrIGRlY29kZXJcbiAgLy8gZ2JrJ3MgZGVjb2RlciBpcyBnYjE4MDMwJ3MgZGVjb2Rlci5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZ2JrJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxMC4xLjIgZ2JrIGVuY29kZXJcbiAgLy8gZ2JrJ3MgZW5jb2RlciBpcyBnYjE4MDMwJ3MgZW5jb2RlciB3aXRoIGl0cyBnYmsgZmxhZyBzZXQuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2diayddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMEVuY29kZXIob3B0aW9ucywgdHJ1ZSk7XG4gIH07XG5cbiAgLy8gMTAuMiBnYjE4MDMwXG5cbiAgLy8gMTAuMi4xIGdiMTgwMzAgZGVjb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEdCMTgwMzBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGdiMTgwMzAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAvLyBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIChhbGwgaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF9maXJzdCA9IDB4MDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnYjE4MDMwX3NlY29uZCA9IDB4MDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnYjE4MDMwX3RoaXJkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMFxuICAgICAgLy8gc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCBhcmUgMHgwMCwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZ2IxODAzMF9maXJzdCA9PT0gMHgwMCAmJlxuICAgICAgICAgIGdiMTgwMzBfc2Vjb25kID09PSAweDAwICYmIGdiMTgwMzBfdGhpcmQgPT09IDB4MDApIHtcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgfVxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCBhbmQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMFxuICAgICAgLy8gc2Vjb25kLCBvciBnYjE4MDMwIHRoaXJkIGlzIG5vdCAweDAwLCBzZXQgZ2IxODAzMCBmaXJzdCxcbiAgICAgIC8vIGdiMTgwMzAgc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiZcbiAgICAgICAgICAoZ2IxODAzMF9maXJzdCAhPT0gMHgwMCB8fCBnYjE4MDMwX3NlY29uZCAhPT0gMHgwMCB8fCBnYjE4MDMwX3RoaXJkICE9PSAweDAwKSkge1xuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3RoaXJkID0gMHgwMDtcbiAgICAgICAgZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cbiAgICAgIHZhciBjb2RlX3BvaW50O1xuICAgICAgLy8gMy4gSWYgZ2IxODAzMCB0aGlyZCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfdGhpcmQgIT09IDB4MDApIHtcbiAgICAgICAgLy8gMS4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbC5cbiAgICAgICAgY29kZV9wb2ludCA9IG51bGw7XG4gICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHgzOSwgc2V0IGNvZGUgcG9pbnQgdG9cbiAgICAgICAgLy8gdGhlIGluZGV4IGdiMTgwMzAgcmFuZ2VzIGNvZGUgcG9pbnQgZm9yICgoKGdiMTgwMzAgZmlyc3Qg4oiSXG4gICAgICAgIC8vIDB4ODEpIMOXIDEwICsgZ2IxODAzMCBzZWNvbmQg4oiSIDB4MzApIMOXIDEyNiArIGdiMTgwMzAgdGhpcmQg4oiSXG4gICAgICAgIC8vIDB4ODEpIMOXIDEwICsgYnl0ZSDiiJIgMHgzMC5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgzMCwgMHgzOSkpIHtcbiAgICAgICAgICBjb2RlX3BvaW50ID0gaW5kZXhHQjE4MDMwUmFuZ2VzQ29kZVBvaW50Rm9yKFxuICAgICAgICAgICAgICAoKChnYjE4MDMwX2ZpcnN0IC0gMHg4MSkgKiAxMCArIChnYjE4MDMwX3NlY29uZCAtIDB4MzApKSAqIDEyNiArXG4gICAgICAgICAgICAgICAoZ2IxODAzMF90aGlyZCAtIDB4ODEpKSAqIDEwICsgYml0ZSAtIDB4MzApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gTGV0IGJ1ZmZlciBiZSBhIGJ5dGUgc2VxdWVuY2UgY29uc2lzdGluZyBvZiBnYjE4MDMwXG4gICAgICAgIC8vIHNlY29uZCwgZ2IxODAzMCB0aGlyZCwgYW5kIGJ5dGUsIGluIG9yZGVyLlxuICAgICAgICB2YXIgYnVmZmVyID0gW2diMTgwMzBfc2Vjb25kLCBnYjE4MDMwX3RoaXJkLCBiaXRlXTtcblxuICAgICAgICAvLyA0LiBTZXQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMCBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIHRvXG4gICAgICAgIC8vIDB4MDAuXG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfdGhpcmQgPSAweDAwO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcHJlcGVuZCBidWZmZXIgdG8gc3RyZWFtIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYnVmZmVyKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDYuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGdiMTgwMzAgc2Vjb25kIGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF9zZWNvbmQgIT09IDB4MDApIHtcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBnYjE4MDMwIHRoaXJkXG4gICAgICAgIC8vIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgICBnYjE4MDMwX3RoaXJkID0gYml0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgZ2IxODAzMCBzZWNvbmQgZm9sbG93ZWQgYnkgYnl0ZSB0byBzdHJlYW0sIHNldFxuICAgICAgICAvLyBnYjE4MDMwIGZpcnN0IGFuZCBnYjE4MDMwIHNlY29uZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChbZ2IxODAzMF9zZWNvbmQsIGJpdGVdKTtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGdiMTgwMzAgZmlyc3QgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX2ZpcnN0ICE9PSAweDAwKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDM5LCBzZXQgZ2IxODAzMCBzZWNvbmRcbiAgICAgICAgLy8gdG8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDMwLCAweDM5KSkge1xuICAgICAgICAgIGdiMTgwMzBfc2Vjb25kID0gYml0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIExldCBsZWFkIGJlIGdiMTgwMzAgZmlyc3QsIGxldCBwb2ludGVyIGJlIG51bGwsIGFuZCBzZXRcbiAgICAgICAgLy8gZ2IxODAzMCBmaXJzdCB0byAweDAwLlxuICAgICAgICB2YXIgbGVhZCA9IGdiMTgwMzBfZmlyc3Q7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMy4gTGV0IG9mZnNldCBiZSAweDQwIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YgYW5kIDB4NDFcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gYml0ZSA8IDB4N0YgPyAweDQwIDogMHg0MTtcblxuICAgICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHg4MCB0byAweEZFLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgMHg4MSkgw5cgMTkwICsgKGJ5dGUg4oiSIG9mZnNldCkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHg4MCwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxOTAgKyAoYml0ZSAtIG9mZnNldCk7XG5cbiAgICAgICAgLy8gNS4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCBpZiBwb2ludGVyIGlzIG51bGwgYW5kIHRoZSBpbmRleFxuICAgICAgICAvLyBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGdiMTgwMzAgb3RoZXJ3aXNlLlxuICAgICAgICBjb2RlX3BvaW50ID0gcG9pbnRlciA9PT0gbnVsbCA/IG51bGwgOlxuICAgICAgICAgICAgaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2diMTgwMzAnKSk7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDguIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNy4gSWYgYnl0ZSBpcyAweDgwLCByZXR1cm4gY29kZSBwb2ludCBVKzIwQUMuXG4gICAgICBpZiAoYml0ZSA9PT0gMHg4MClcbiAgICAgICAgcmV0dXJuIDB4MjBBQztcblxuICAgICAgLy8gOC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZ2IxODAzMCBmaXJzdCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA5LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gMTAuMi4yIGdiMTgwMzAgZW5jb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFuPX0gZ2JrX2ZsYWdcbiAgICovXG4gIGZ1bmN0aW9uIEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMsIGdia19mbGFnKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBnYjE4MDMwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBnYmsgZmxhZyAoaW5pdGlhbGx5IHVuc2V0KS5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpIHtcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHRoZSBnYmsgZmxhZyBpcyBzZXQgYW5kIGNvZGUgcG9pbnQgaXMgVSsyMEFDLCByZXR1cm5cbiAgICAgIC8vIGJ5dGUgMHg4MC5cbiAgICAgIGlmIChnYmtfZmxhZyAmJiBjb2RlX3BvaW50ID09PSAweDIwQUMpXG4gICAgICAgIHJldHVybiAweDgwO1xuXG4gICAgICAvLyA0LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gZ2IxODAzMC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdnYjE4MDMwJykpO1xuXG4gICAgICAvLyA1LiBJZiBwb2ludGVyIGlzIG5vdCBudWxsLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAocG9pbnRlciAhPT0gbnVsbCkge1xuXG4gICAgICAgIC8vIDEuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxOTAgKyAweDgxLlxuICAgICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxOTApICsgMHg4MTtcblxuICAgICAgICAvLyAyLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE5MC5cbiAgICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE5MDtcblxuICAgICAgICAvLyAzLiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YgYW5kIDB4NDEgb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gdHJhaWwgPCAweDNGID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gNC4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgICByZXR1cm4gW2xlYWQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgZ2JrIGZsYWcgaXMgc2V0LCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKGdia19mbGFnKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA3LiBTZXQgcG9pbnRlciB0byB0aGUgaW5kZXggZ2IxODAzMCByYW5nZXMgcG9pbnRlciBmb3IgY29kZVxuICAgICAgLy8gcG9pbnQuXG4gICAgICBwb2ludGVyID0gaW5kZXhHQjE4MDMwUmFuZ2VzUG9pbnRlckZvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOC4gTGV0IGJ5dGUxIGJlIHBvaW50ZXIgLyAxMCAvIDEyNiAvIDEwLlxuICAgICAgdmFyIGJ5dGUxID0gZGl2KGRpdihkaXYocG9pbnRlciwgMTApLCAxMjYpLCAxMCk7XG5cbiAgICAgIC8vIDkuIFNldCBwb2ludGVyIHRvIHBvaW50ZXIg4oiSIGJ5dGUxIMOXIDEwIMOXIDEyNiDDlyAxMC5cbiAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gYnl0ZTEgKiAxMCAqIDEyNiAqIDEwO1xuXG4gICAgICAvLyAxMC4gTGV0IGJ5dGUyIGJlIHBvaW50ZXIgLyAxMCAvIDEyNi5cbiAgICAgIHZhciBieXRlMiA9IGRpdihkaXYocG9pbnRlciwgMTApLCAxMjYpO1xuXG4gICAgICAvLyAxMS4gU2V0IHBvaW50ZXIgdG8gcG9pbnRlciDiiJIgYnl0ZTIgw5cgMTAgw5cgMTI2LlxuICAgICAgcG9pbnRlciA9IHBvaW50ZXIgLSBieXRlMiAqIDEwICogMTI2O1xuXG4gICAgICAvLyAxMi4gTGV0IGJ5dGUzIGJlIHBvaW50ZXIgLyAxMC5cbiAgICAgIHZhciBieXRlMyA9IGRpdihwb2ludGVyLCAxMCk7XG5cbiAgICAgIC8vIDEzLiBMZXQgYnl0ZTQgYmUgcG9pbnRlciDiiJIgYnl0ZTMgw5cgMTAuXG4gICAgICB2YXIgYnl0ZTQgPSBwb2ludGVyIC0gYnl0ZTMgKiAxMDtcblxuICAgICAgLy8gMTQuIFJldHVybiBmb3VyIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgYnl0ZTEgKyAweDgxLCBieXRlMiArXG4gICAgICAvLyAweDMwLCBieXRlMyArIDB4ODEsIGJ5dGU0ICsgMHgzMC5cbiAgICAgIHJldHVybiBbYnl0ZTEgKyAweDgxLFxuICAgICAgICAgICAgICBieXRlMiArIDB4MzAsXG4gICAgICAgICAgICAgIGJ5dGUzICsgMHg4MSxcbiAgICAgICAgICAgICAgYnl0ZTQgKyAweDMwXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZ2IxODAzMCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2diMTgwMzAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTEuIExlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHRyYWRpdGlvbmFsKSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMS4xIGJpZzVcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEJpZzVEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGJpZzUncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGJpZzUgbGVhZCAoaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gYmlnNV9sZWFkID0gMHgwMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBiaWc1IGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gYmlnNSBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGJpZzVfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBiaWc1X2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBiaWc1IGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGJpZzVfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBiaWc1IGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGJpZzUgbGVhZCwgbGV0XG4gICAgICAvLyBwb2ludGVyIGJlIG51bGwsIHNldCBiaWc1IGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuIHRoZXNlXG4gICAgICAvLyBzdWJzdGVwczpcbiAgICAgIGlmIChiaWc1X2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBiaWc1X2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgYmlnNV9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgYnl0ZSBpcyBsZXNzIHRoYW4gMHg3RiBhbmQgMHg2MlxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSBiaXRlIDwgMHg3RiA/IDB4NDAgOiAweDYyO1xuXG4gICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweEExIHRvIDB4RkUsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiAweDgxKSDDlyAxNTcgKyAoYnl0ZSDiiJIgb2Zmc2V0KS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg0MCwgMHg3RSkgfHwgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE1NyArIChiaXRlIC0gb2Zmc2V0KTtcblxuICAgICAgICAvLyAzLiBJZiB0aGVyZSBpcyBhIHJvdyBpbiB0aGUgdGFibGUgYmVsb3cgd2hvc2UgZmlyc3QgY29sdW1uXG4gICAgICAgIC8vIGlzIHBvaW50ZXIsIHJldHVybiB0aGUgdHdvIGNvZGUgcG9pbnRzIGxpc3RlZCBpbiBpdHMgc2Vjb25kXG4gICAgICAgIC8vIGNvbHVtblxuICAgICAgICAvLyBQb2ludGVyIHwgQ29kZSBwb2ludHNcbiAgICAgICAgLy8gLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gMTEzMyAgICB8IFUrMDBDQSBVKzAzMDRcbiAgICAgICAgLy8gMTEzNSAgICB8IFUrMDBDQSBVKzAzMENcbiAgICAgICAgLy8gMTE2NCAgICB8IFUrMDBFQSBVKzAzMDRcbiAgICAgICAgLy8gMTE2NiAgICB8IFUrMDBFQSBVKzAzMENcbiAgICAgICAgc3dpdGNoIChwb2ludGVyKSB7XG4gICAgICAgICAgY2FzZSAxMTMzOiByZXR1cm4gWzB4MDBDQSwgMHgwMzA0XTtcbiAgICAgICAgICBjYXNlIDExMzU6IHJldHVybiBbMHgwMENBLCAweDAzMENdO1xuICAgICAgICAgIGNhc2UgMTE2NDogcmV0dXJuIFsweDAwRUEsIDB4MDMwNF07XG4gICAgICAgICAgY2FzZSAxMTY2OiByZXR1cm4gWzB4MDBFQSwgMHgwMzBDXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuIExldCBjb2RlIHBvaW50IGJlIG51bGwgaWYgcG9pbnRlciBpcyBudWxsIGFuZCB0aGUgaW5kZXhcbiAgICAgICAgLy8gY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBiaWc1IG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDpcbiAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdiaWc1JykpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA3LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDUuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGJpZzUgbGVhZCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgYmlnNV9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEJpZzVFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBiaWc1IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4QmlnNVBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2JpZzUnKSk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTU3ICsgMHg4MS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE1NykgKyAweDgxO1xuXG4gICAgICAvLyA2LiBJZiBsZWFkIGlzIGxlc3MgdGhhbiAweEExLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKGxlYWQgPCAweEExKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA3LiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE1Ny5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxNTc7XG5cbiAgICAgIC8vIDguIExldCBvZmZzZXQgYmUgMHg0MCBpZiB0cmFpbCBpcyBsZXNzIHRoYW4gMHgzRiBhbmQgMHg2MlxuICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgdmFyIG9mZnNldCA9IHRyYWlsIDwgMHgzRiA/IDB4NDAgOiAweDYyO1xuXG4gICAgICAvLyBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwgKyBvZmZzZXQuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snYmlnNSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQmlnNUVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2JpZzUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpZzVEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTIuIExlZ2FjeSBtdWx0aS1ieXRlIEphcGFuZXNlIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEyLjEgZXVjLWpwXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNKUERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyBldWMtanAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGV1Yy1qcCBqaXMwMjEyIGZsYWdcbiAgICAvLyAoaW5pdGlhbGx5IHVuc2V0KSBhbmQgZXVjLWpwIGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtib29sZWFufSAqLyBldWNqcF9qaXMwMjEyX2ZsYWcgPSBmYWxzZSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGV1Y2pwX2xlYWQgPSAweDAwO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGV1Yy1qcCBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIDB4MDAsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNqcF9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMtanAgbGVhZCBpcyAweDAwLCByZXR1cm5cbiAgICAgIC8vIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVjanBfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBldWMtanAgbGVhZCBpcyAweDhFIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweEExIHRvXG4gICAgICAvLyAweERGLCBzZXQgZXVjLWpwIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZVxuICAgICAgLy8gdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHhBMS5cbiAgICAgIGlmIChldWNqcF9sZWFkID09PSAweDhFICYmIGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhERikpIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHhBMTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgZXVjLWpwIGxlYWQgaXMgMHg4RiBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0b1xuICAgICAgLy8gMHhGRSwgc2V0IHRoZSBldWMtanAgamlzMDIxMiBmbGFnLCBzZXQgZXVjLWpwIGxlYWQgdG8gYnl0ZSxcbiAgICAgIC8vIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoZXVjanBfbGVhZCA9PT0gMHg4RiAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKSB7XG4gICAgICAgIGV1Y2pwX2ppczAyMTJfZmxhZyA9IHRydWU7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gSWYgZXVjLWpwIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGV1Yy1qcCBsZWFkLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIDB4MDAsIGFuZCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZXVjanBfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGV1Y2pwX2xlYWQ7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDEuIExldCBjb2RlIHBvaW50IGJlIG51bGwuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gbnVsbDtcblxuICAgICAgICAvLyAyLiBJZiBsZWFkIGFuZCBieXRlIGFyZSBib3RoIGluIHRoZSByYW5nZSAweEExIHRvIDB4RkUsIHNldFxuICAgICAgICAvLyBjb2RlIHBvaW50IHRvIHRoZSBpbmRleCBjb2RlIHBvaW50IGZvciAobGVhZCDiiJIgMHhBMSkgw5cgOTQgK1xuICAgICAgICAvLyBieXRlIOKIkiAweEExIGluIGluZGV4IGppczAyMDggaWYgdGhlIGV1Yy1qcCBqaXMwMjEyIGZsYWcgaXNcbiAgICAgICAgLy8gdW5zZXQgYW5kIGluIGluZGV4IGppczAyMTIgb3RoZXJ3aXNlLlxuICAgICAgICBpZiAoaW5SYW5nZShsZWFkLCAweEExLCAweEZFKSAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKSB7XG4gICAgICAgICAgY29kZV9wb2ludCA9IGluZGV4Q29kZVBvaW50Rm9yKFxuICAgICAgICAgICAgKGxlYWQgLSAweEExKSAqIDk0ICsgKGJpdGUgLSAweEExKSxcbiAgICAgICAgICAgIGluZGV4KCFldWNqcF9qaXMwMjEyX2ZsYWcgPyAnamlzMDIwOCcgOiAnamlzMDIxMicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFVuc2V0IHRoZSBldWMtanAgamlzMDIxMiBmbGFnLlxuICAgICAgICBldWNqcF9qaXMwMjEyX2ZsYWcgPSBmYWxzZTtcblxuICAgICAgICAvLyA0LiBJZiBieXRlIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBwcmVwZW5kIGJ5dGVcbiAgICAgICAgLy8gdG8gc3RyZWFtLlxuICAgICAgICBpZiAoIWluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDYuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNy4gSWYgYnl0ZSBpcyAweDhFLCAweDhGLCBvciBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChiaXRlID09PSAweDhFIHx8IGJpdGUgPT09IDB4OEYgfHwgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICBldWNqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDguIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0pQRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIFUrMDBBNSwgcmV0dXJuIGJ5dGUgMHg1Qy5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDAwQTUpXG4gICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAzRSwgcmV0dXJuIGJ5dGUgMHg3RS5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwM0UpXG4gICAgICAgIHJldHVybiAweDdFO1xuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVK0ZGNjEgdG8gVStGRjlGLCByZXR1cm4gdHdvXG4gICAgICAvLyBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIDB4OEUgYW5kIGNvZGUgcG9pbnQg4oiSIDB4RkY2MSArIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEZGNjEsIDB4RkY5RikpXG4gICAgICAgIHJldHVybiBbMHg4RSwgY29kZV9wb2ludCAtIDB4RkY2MSArIDB4QTFdO1xuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDcuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBqaXMwMjA4LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgIC8vIDguIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA5LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gOTQgKyAweEExLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgOTQpICsgMHhBMTtcblxuICAgICAgLy8gMTAuIExldCB0cmFpbCBiZSBwb2ludGVyICUgOTQgKyAweEExLlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDk0ICsgMHhBMTtcblxuICAgICAgLy8gMTEuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydldWMtanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0pQRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZXVjLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNKUERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTIuMiBpc28tMjAyMi1qcFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gSVNPMjAyMkpQRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKiogQGVudW0gKi9cbiAgICB2YXIgc3RhdGVzID0ge1xuICAgICAgQVNDSUk6IDAsXG4gICAgICBSb21hbjogMSxcbiAgICAgIEthdGFrYW5hOiAyLFxuICAgICAgTGVhZEJ5dGU6IDMsXG4gICAgICBUcmFpbEJ5dGU6IDQsXG4gICAgICBFc2NhcGVTdGFydDogNSxcbiAgICAgIEVzY2FwZTogNlxuICAgIH07XG4gICAgLy8gaXNvLTIwMjItanAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGlzby0yMDIyLWpwIGRlY29kZXJcbiAgICAvLyBzdGF0ZSAoaW5pdGlhbGx5IEFTQ0lJKSwgaXNvLTIwMjItanAgZGVjb2RlciBvdXRwdXQgc3RhdGVcbiAgICAvLyAoaW5pdGlhbGx5IEFTQ0lJKSwgaXNvLTIwMjItanAgbGVhZCAoaW5pdGlhbGx5IDB4MDApLCBhbmRcbiAgICAvLyBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyAoaW5pdGlhbGx5IHVuc2V0KS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkFTQ0lJLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX2RlY29kZXJfb3V0cHV0X3N0YXRlID0gc3RhdGVzLkFTQ0lJLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX2xlYWQgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGU6XG4gICAgICBzd2l0Y2ggKGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBzdGF0ZXMuQVNDSUk6XG4gICAgICAgIC8vIEFTQ0lJXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDAwIHRvIDB4N0YsIGV4Y2x1ZGluZyAweDBFLCAweDBGLCBhbmQgMHgxQlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSAmJiBiaXRlICE9PSAweDBFXG4gICAgICAgICAgICAmJiBiaXRlICE9PSAweDBGICYmIGJpdGUgIT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuUm9tYW46XG4gICAgICAgIC8vIFJvbWFuXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDVDXG4gICAgICAgIGlmIChiaXRlID09PSAweDVDKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gY29kZSBwb2ludFxuICAgICAgICAgIC8vIFUrMDBBNS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHgwMEE1O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHg3RVxuICAgICAgICBpZiAoYml0ZSA9PT0gMHg3RSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyBVKzIwM0UuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4MjAzRTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RiwgZXhjbHVkaW5nIDB4MEUsIDB4MEYsIDB4MUIsIDB4NUMsIGFuZCAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpICYmIGJpdGUgIT09IDB4MEUgJiYgYml0ZSAhPT0gMHgwRlxuICAgICAgICAgICAgJiYgYml0ZSAhPT0gMHgxQiAmJiBiaXRlICE9PSAweDVDICYmIGJpdGUgIT09IDB4N0UpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuS2F0YWthbmE6XG4gICAgICAgIC8vIEthdGFrYW5hXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4NUZcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg1RikpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweDIxLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHgyMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkxlYWRCeXRlOlxuICAgICAgICAvLyBMZWFkIGJ5dGVcbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MjEgdG8gMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDIxLCAweDdFKSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZywgc2V0IGlzby0yMDIyLWpwIGxlYWRcbiAgICAgICAgICAvLyB0byBieXRlLCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIHRyYWlsIGJ5dGUsIGFuZFxuICAgICAgICAgIC8vIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICBpc28yMDIyanBfbGVhZCA9IGJpdGU7XG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuVHJhaWxCeXRlO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuVHJhaWxCeXRlOlxuICAgICAgICAvLyBUcmFpbCBieXRlXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg3RSkpIHtcbiAgICAgICAgICAvLyAxLiBTZXQgdGhlIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gbGVhZCBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuXG4gICAgICAgICAgLy8gMi4gTGV0IHBvaW50ZXIgYmUgKGlzby0yMDIyLWpwIGxlYWQg4oiSIDB4MjEpIMOXIDk0ICsgYnl0ZSDiiJIgMHgyMS5cbiAgICAgICAgICB2YXIgcG9pbnRlciA9IChpc28yMDIyanBfbGVhZCAtIDB4MjEpICogOTQgKyBiaXRlIC0gMHgyMTtcblxuICAgICAgICAgIC8vIDMuIExldCBjb2RlIHBvaW50IGJlIHRoZSBpbmRleCBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGppczAyMDguXG4gICAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gU2V0IHRoZSBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZSwgcHJlcGVuZFxuICAgICAgICAgIC8vIGJ5dGUgdG8gc3RyZWFtLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZSBhbmQgcmV0dXJuXG4gICAgICAgIC8vIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkVzY2FwZVN0YXJ0OlxuICAgICAgICAvLyBFc2NhcGUgc3RhcnRcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGVpdGhlciAweDI0IG9yIDB4MjgsIHNldCBpc28tMjAyMi1qcCBsZWFkIHRvXG4gICAgICAgIC8vIGJ5dGUsIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlLCBhbmQgcmV0dXJuXG4gICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgyNCB8fCBiaXRlID09PSAweDI4KSB7XG4gICAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSBiaXRlO1xuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDMuIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZywgc2V0IGlzby0yMDIyLWpwXG4gICAgICAgIC8vIGRlY29kZXIgc3RhdGUgdG8gaXNvLTIwMjItanAgZGVjb2RlciBvdXRwdXQgc3RhdGUsIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkVzY2FwZTpcbiAgICAgICAgLy8gRXNjYXBlXG5cbiAgICAgICAgLy8gMS4gTGV0IGxlYWQgYmUgaXNvLTIwMjItanAgbGVhZCBhbmQgc2V0IGlzby0yMDIyLWpwIGxlYWQgdG9cbiAgICAgICAgLy8gMHgwMC5cbiAgICAgICAgdmFyIGxlYWQgPSBpc28yMDIyanBfbGVhZDtcbiAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDIuIExldCBzdGF0ZSBiZSBudWxsLlxuICAgICAgICB2YXIgc3RhdGUgPSBudWxsO1xuXG4gICAgICAgIC8vIDMuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDQyLCBzZXQgc3RhdGUgdG8gQVNDSUkuXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NDIpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG5cbiAgICAgICAgLy8gNC4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NEEsIHNldCBzdGF0ZSB0byBSb21hbi5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0QSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5Sb21hbjtcblxuICAgICAgICAvLyA1LiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0OSwgc2V0IHN0YXRlIHRvIEthdGFrYW5hLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDQ5KVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkthdGFrYW5hO1xuXG4gICAgICAgIC8vIDYuIElmIGxlYWQgaXMgMHgyNCBhbmQgYnl0ZSBpcyBlaXRoZXIgMHg0MCBvciAweDQyLCBzZXRcbiAgICAgICAgLy8gc3RhdGUgdG8gbGVhZCBieXRlLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyNCAmJiAoYml0ZSA9PT0gMHg0MCB8fCBiaXRlID09PSAweDQyKSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcblxuICAgICAgICAvLyA3LiBJZiBzdGF0ZSBpcyBub24tbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgICBpZiAoc3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAvLyAxLiBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSBhbmQgaXNvLTIwMjItanAgZGVjb2RlclxuICAgICAgICAgIC8vIG91dHB1dCBzdGF0ZSB0byBzdGF0ZXMuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgLy8gMi4gTGV0IG91dHB1dCBmbGFnIGJlIHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZy5cbiAgICAgICAgICB2YXIgb3V0cHV0X2ZsYWcgPSBpc28yMDIyanBfb3V0cHV0X2ZsYWc7XG5cbiAgICAgICAgICAvLyAzLiBTZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IHRydWU7XG5cbiAgICAgICAgICAvLyA0LiBSZXR1cm4gY29udGludWUsIGlmIG91dHB1dCBmbGFnIGlzIHVuc2V0LCBhbmQgZXJyb3JcbiAgICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgICAgcmV0dXJuICFvdXRwdXRfZmxhZyA/IG51bGwgOiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gOC4gUHJlcGVuZCBsZWFkIGFuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoW2xlYWQsIGJpdGVdKTtcblxuICAgICAgICAvLyA5LiBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcFxuICAgICAgICAvLyBkZWNvZGVyIHN0YXRlIHRvIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gSVNPMjAyMkpQRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBpc28tMjAyMi1qcCdzIGVuY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgaXNvLTIwMjItanAgZW5jb2RlclxuICAgIC8vIHN0YXRlIHdoaWNoIGlzIG9uZSBvZiBBU0NJSSwgUm9tYW4sIGFuZCBqaXMwMjA4IChpbml0aWFsbHlcbiAgICAvLyBBU0NJSSkuXG4gICAgLyoqIEBlbnVtICovXG4gICAgdmFyIHN0YXRlcyA9IHtcbiAgICAgIEFTQ0lJOiAwLFxuICAgICAgUm9tYW46IDEsXG4gICAgICBqaXMwMjA4OiAyXG4gICAgfTtcbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5BU0NJSTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0gYW5kIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAgIC8vIHN0YXRlIGlzIG5vdCBBU0NJSSwgcHJlcGVuZCBjb2RlIHBvaW50IHRvIHN0cmVhbSwgc2V0XG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIEFTQ0lJLCBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzXG4gICAgICAvLyAweDFCIDB4MjggMHg0Mi5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuQVNDSUkpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyOCwgMHg0Ml07XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSBhbmQgaXNvLTIwMjItanAgZW5jb2RlclxuICAgICAgLy8gc3RhdGUgaXMgQVNDSUksIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtICYmIGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLkFTQ0lJKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgQVNDSUkgYW5kIGNvZGUgcG9pbnQgaXMgaW5cbiAgICAgIC8vIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYSBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGVcbiAgICAgIC8vIHBvaW50LlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLkFTQ0lJICYmXG4gICAgICAgICAgaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyA0LiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIFJvbWFuIGFuZCBjb2RlIHBvaW50IGlzIGluXG4gICAgICAvLyB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgZXhjbHVkaW5nIFUrMDA1QyBhbmQgVSswMDdFLCBvclxuICAgICAgLy8gaXMgVSswMEE1IG9yIFUrMjAzRSwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLlJvbWFuICYmXG4gICAgICAgICAgaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikgJiZcbiAgICAgICAgICBjb2RlX3BvaW50ICE9PSAweDAwNUMgJiYgY29kZV9wb2ludCAhPT0gMHgwMDdFKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDAwQTUpXG4gICAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwM0UpXG4gICAgICAgICAgcmV0dXJuIDB4N0U7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIGFuZFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBub3QgQVNDSUksIHByZXBlbmQgY29kZSBwb2ludCB0b1xuICAgICAgLy8gc3RyZWFtLCBzZXQgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBBU0NJSSwgYW5kIHJldHVyblxuICAgICAgLy8gdGhyZWUgYnl0ZXMgMHgxQiAweDI4IDB4NDIuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikgJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5BU0NJSSkge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLkFTQ0lJO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIGVpdGhlciBVKzAwQTUgb3IgVSsyMDNFLCBhbmQgaXNvLTIwMjItanBcbiAgICAgIC8vIGVuY29kZXIgc3RhdGUgaXMgbm90IFJvbWFuLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG8gc3RyZWFtLCBzZXRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gUm9tYW4sIGFuZCByZXR1cm4gdGhyZWUgYnl0ZXNcbiAgICAgIC8vIDB4MUIgMHgyOCAweDRBLlxuICAgICAgaWYgKChjb2RlX3BvaW50ID09PSAweDAwQTUgfHwgY29kZV9wb2ludCA9PT0gMHgyMDNFKSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLlJvbWFuKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuUm9tYW47XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyOCwgMHg0QV07XG4gICAgICB9XG5cbiAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDIyLCBzZXQgaXQgdG8gVStGRjBELlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAyMilcbiAgICAgICAgY29kZV9wb2ludCA9IDB4RkYwRDtcblxuICAgICAgLy8gOC4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGppczAyMDguXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgLy8gOS4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDEwLiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIG5vdCBqaXMwMjA4LCBwcmVwZW5kIGNvZGVcbiAgICAgIC8vIHBvaW50IHRvIHN0cmVhbSwgc2V0IGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gamlzMDIwOCxcbiAgICAgIC8vIGFuZCByZXR1cm4gdGhyZWUgYnl0ZXMgMHgxQiAweDI0IDB4NDIuXG4gICAgICBpZiAoaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuamlzMDIwOCkge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLmppczAyMDg7XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyNCwgMHg0Ml07XG4gICAgICB9XG5cbiAgICAgIC8vIDExLiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gOTQgKyAweDIxLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgOTQpICsgMHgyMTtcblxuICAgICAgLy8gMTIuIExldCB0cmFpbCBiZSBwb2ludGVyICUgOTQgKyAweDIxLlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDk0ICsgMHgyMTtcblxuICAgICAgLy8gMTMuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydpc28tMjAyMi1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSVNPMjAyMkpQRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snaXNvLTIwMjItanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IElTTzIwMjJKUERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTIuMyBzaGlmdF9qaXNcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNoaWZ0SklTRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBzaGlmdF9qaXMncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIHNoaWZ0X2ppcyBsZWFkIChpbml0aWFsbHlcbiAgICAvLyAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHNoaWZ0amlzX2xlYWQgPSAweDAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBzaGlmdF9qaXMgbGVhZCBpcyBub3QgMHgwMCxcbiAgICAgIC8vIHNldCBzaGlmdF9qaXMgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBzaGlmdGppc19sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBzaGlmdF9qaXMgbGVhZCBpcyAweDAwLFxuICAgICAgLy8gcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgc2hpZnRqaXNfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBzaGlmdF9qaXMgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgc2hpZnRfamlzIGxlYWQsXG4gICAgICAvLyBsZXQgcG9pbnRlciBiZSBudWxsLCBzZXQgc2hpZnRfamlzIGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuXG4gICAgICAvLyB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChzaGlmdGppc19sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gc2hpZnRqaXNfbGVhZDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBzaGlmdGppc19sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIDB4NDAsIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YsIGFuZCAweDQxXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IChiaXRlIDwgMHg3RikgPyAweDQwIDogMHg0MTtcblxuICAgICAgICAvLyAyLiBMZXQgbGVhZCBvZmZzZXQgYmUgMHg4MSwgaWYgbGVhZCBpcyBsZXNzIHRoYW4gMHhBMCwgYW5kXG4gICAgICAgIC8vIDB4QzEgb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgbGVhZF9vZmZzZXQgPSAobGVhZCA8IDB4QTApID8gMHg4MSA6IDB4QzE7XG5cbiAgICAgICAgLy8gMy4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4ODAgdG8gMHhGQyxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIGxlYWQgb2Zmc2V0KSDDlyAxODggKyBieXRlIOKIkiBvZmZzZXQuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHg4MCwgMHhGQykpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gbGVhZF9vZmZzZXQpICogMTg4ICsgYml0ZSAtIG9mZnNldDtcblxuICAgICAgICAvLyA0LiBMZXQgY29kZSBwb2ludCBiZSBudWxsLCBpZiBwb2ludGVyIGlzIG51bGwsIGFuZCB0aGVcbiAgICAgICAgLy8gaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBqaXMwMjA4IG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDpcbiAgICAgICAgICAgICAgaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBwb2ludGVyIGlzIGluIHRoZSByYW5nZSA4ODM2XG4gICAgICAgIC8vIHRvIDEwNTI4LCByZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4RTAwMCArXG4gICAgICAgIC8vIHBvaW50ZXIg4oiSIDg4MzYuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIHBvaW50ZXIgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGluUmFuZ2UocG9pbnRlciwgODgzNiwgMTA1MjgpKVxuICAgICAgICAgIHJldHVybiAweEUwMDAgKyBwb2ludGVyIC0gODgzNjtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gOC4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDgwLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg4MCkpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweEExIHRvIDB4REYsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweEExLCAweERGKSlcbiAgICAgICAgcmV0dXJuIDB4RkY2MSArIGJpdGUgLSAweEExO1xuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4OUYgb3IgMHhFMCB0byAweEZDLCBzZXRcbiAgICAgIC8vIHNoaWZ0X2ppcyBsZWFkIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4OUYpIHx8IGluUmFuZ2UoYml0ZSwgMHhFMCwgMHhGQykpIHtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaGlmdEpJU0VuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDgwLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwODApKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICByZXR1cm4gMHg3RTtcblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGRjYxIHRvIFUrRkY5RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCDiiJIgMHhGRjYxICsgMHhBMS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4RkY2MSwgMHhGRjlGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQgLSAweEZGNjEgKyAweEExO1xuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDcuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBzaGlmdF9qaXMgcG9pbnRlciBmb3IgY29kZSBwb2ludC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhTaGlmdEpJU1BvaW50ZXJGb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDguIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA5LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTg4LlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTg4KTtcblxuICAgICAgLy8gMTAuIExldCBsZWFkIG9mZnNldCBiZSAweDgxLCBpZiBsZWFkIGlzIGxlc3MgdGhhbiAweDFGLCBhbmRcbiAgICAgIC8vIDB4QzEgb3RoZXJ3aXNlLlxuICAgICAgdmFyIGxlYWRfb2Zmc2V0ID0gKGxlYWQgPCAweDFGKSA/IDB4ODEgOiAweEMxO1xuXG4gICAgICAvLyAxMS4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxODguXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTg4O1xuXG4gICAgICAvLyAxMi4gTGV0IG9mZnNldCBiZSAweDQwLCBpZiB0cmFpbCBpcyBsZXNzIHRoYW4gMHgzRiwgYW5kIDB4NDFcbiAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgIHZhciBvZmZzZXQgPSAodHJhaWwgPCAweDNGKSA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAvLyAxMy4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgKyBsZWFkIG9mZnNldCBhbmRcbiAgICAgIC8vIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgcmV0dXJuIFtsZWFkICsgbGVhZF9vZmZzZXQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snc2hpZnRfamlzJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBTaGlmdEpJU0VuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3NoaWZ0X2ppcyddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2hpZnRKSVNEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vXG4gIC8vIDEzLiBMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTMuMSBldWMta3JcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0tSRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcblxuICAgIC8vIGV1Yy1rcidzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZXVjLWtyIGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGV1Y2tyX2xlYWQgPSAweDAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMta3IgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBldWMta3IgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNrcl9sZWFkICE9PSAwKSB7XG4gICAgICAgIGV1Y2tyX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMta3IgbGVhZCBpcyAweDAwLCByZXR1cm5cbiAgICAgIC8vIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVja3JfbGVhZCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBldWMta3IgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgZXVjLWtyIGxlYWQsIGxldFxuICAgICAgLy8gcG9pbnRlciBiZSBudWxsLCBzZXQgZXVjLWtyIGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuIHRoZXNlXG4gICAgICAvLyBzdWJzdGVwczpcbiAgICAgIGlmIChldWNrcl9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gZXVja3JfbGVhZDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBldWNrcl9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQxIHRvIDB4RkUsIHNldCBwb2ludGVyIHRvXG4gICAgICAgIC8vIChsZWFkIOKIkiAweDgxKSDDlyAxOTAgKyAoYnl0ZSDiiJIgMHg0MSkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDEsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTkwICsgKGJpdGUgLSAweDQxKTtcblxuICAgICAgICAvLyAyLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLCBpZiBwb2ludGVyIGlzIG51bGwsIGFuZCB0aGVcbiAgICAgICAgLy8gaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBldWMta3Igb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IChwb2ludGVyID09PSBudWxsKSA/IG51bGwgOiBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnZXVjLWtyJykpO1xuXG4gICAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAocG9pbnRlciA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDUuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGV1Yy1rciBsZWFkIHRvXG4gICAgICAvLyBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweEZFKSkge1xuICAgICAgICBldWNrcl9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0tSRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gZXVjLWtyLlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2V1Yy1rcicpKTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDUuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxOTAgKyAweDgxLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTkwKSArIDB4ODE7XG5cbiAgICAgIC8vIDYuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTkwICsgMHg0MS5cbiAgICAgIHZhciB0cmFpbCA9IChwb2ludGVyICUgMTkwKSArIDB4NDE7XG5cbiAgICAgIC8vIDcuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydldWMta3InXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0tSRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZXVjLWtyJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNLUkRlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cblxuICAvL1xuICAvLyAxNC4gTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTQuMSByZXBsYWNlbWVudFxuXG4gIC8vIE5vdCBuZWVkZWQgLSBBUEkgdGhyb3dzIFJhbmdlRXJyb3JcblxuICAvLyAxNC4yIHV0Zi0xNlxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV91bml0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZiZVxuICAgKiBAcmV0dXJuIHshQXJyYXkuPG51bWJlcj59IGJ5dGVzXG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKGNvZGVfdW5pdCwgdXRmMTZiZSkge1xuICAgIC8vIDEuIExldCBieXRlMSBiZSBjb2RlIHVuaXQgPj4gOC5cbiAgICB2YXIgYnl0ZTEgPSBjb2RlX3VuaXQgPj4gODtcblxuICAgIC8vIDIuIExldCBieXRlMiBiZSBjb2RlIHVuaXQgJiAweDAwRkYuXG4gICAgdmFyIGJ5dGUyID0gY29kZV91bml0ICYgMHgwMEZGO1xuXG4gICAgLy8gMy4gVGhlbiByZXR1cm4gdGhlIGJ5dGVzIGluIG9yZGVyOlxuICAgICAgICAvLyB1dGYtMTZiZSBmbGFnIGlzIHNldDogYnl0ZTEsIHRoZW4gYnl0ZTIuXG4gICAgaWYgKHV0ZjE2YmUpXG4gICAgICByZXR1cm4gW2J5dGUxLCBieXRlMl07XG4gICAgLy8gdXRmLTE2YmUgZmxhZyBpcyB1bnNldDogYnl0ZTIsIHRoZW4gYnl0ZTEuXG4gICAgcmV0dXJuIFtieXRlMiwgYnl0ZTFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHtib29sZWFufSB1dGYxNl9iZSBUcnVlIGlmIGJpZy1lbmRpYW4sIGZhbHNlIGlmIGxpdHRsZS1lbmRpYW4uXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGMTZEZWNvZGVyKHV0ZjE2X2JlLCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICB2YXIgLyoqIEB0eXBlIHs/bnVtYmVyfSAqLyB1dGYxNl9sZWFkX2J5dGUgPSBudWxsLFxuICAgICAgICAvKiogQHR5cGUgez9udW1iZXJ9ICovIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZWl0aGVyIHV0Zi0xNiBsZWFkIGJ5dGUgb3JcbiAgICAgIC8vIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSBpcyBub3QgbnVsbCwgc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgYW5kXG4gICAgICAvLyB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgdG8gbnVsbCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmICh1dGYxNl9sZWFkX2J5dGUgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgIT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHV0Zi0xNiBsZWFkIGJ5dGUgYW5kIHV0Zi0xNlxuICAgICAgLy8gbGVhZCBzdXJyb2dhdGUgYXJlIG51bGwsIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHV0ZjE2X2xlYWRfYnl0ZSA9PT0gbnVsbCAmJlxuICAgICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgIH1cblxuICAgICAgLy8gMy4gSWYgdXRmLTE2IGxlYWQgYnl0ZSBpcyBudWxsLCBzZXQgdXRmLTE2IGxlYWQgYnl0ZSB0byBieXRlXG4gICAgICAvLyBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKHV0ZjE2X2xlYWRfYnl0ZSA9PT0gbnVsbCkge1xuICAgICAgICB1dGYxNl9sZWFkX2J5dGUgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gTGV0IGNvZGUgdW5pdCBiZSB0aGUgcmVzdWx0IG9mOlxuICAgICAgdmFyIGNvZGVfdW5pdDtcbiAgICAgIGlmICh1dGYxNl9iZSkge1xuICAgICAgICAvLyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgaXMgc2V0XG4gICAgICAgIC8vICAgKHV0Zi0xNiBsZWFkIGJ5dGUgPDwgOCkgKyBieXRlLlxuICAgICAgICBjb2RlX3VuaXQgPSAodXRmMTZfbGVhZF9ieXRlIDw8IDgpICsgYml0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHV0Zi0xNmJlIGRlY29kZXIgZmxhZyBpcyB1bnNldFxuICAgICAgICAvLyAgIChieXRlIDw8IDgpICsgdXRmLTE2IGxlYWQgYnl0ZS5cbiAgICAgICAgY29kZV91bml0ID0gKGJpdGUgPDwgOCkgKyB1dGYxNl9sZWFkX2J5dGU7XG4gICAgICB9XG4gICAgICAvLyBUaGVuIHNldCB1dGYtMTYgbGVhZCBieXRlIHRvIG51bGwuXG4gICAgICB1dGYxNl9sZWFkX2J5dGUgPSBudWxsO1xuXG4gICAgICAvLyA1LiBJZiB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgaXMgbm90IG51bGwsIGxldCBsZWFkIHN1cnJvZ2F0ZVxuICAgICAgLy8gYmUgdXRmLTE2IGxlYWQgc3Vycm9nYXRlLCBzZXQgdXRmLTE2IGxlYWQgc3Vycm9nYXRlIHRvIG51bGwsXG4gICAgICAvLyBhbmQgdGhlbiBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAodXRmMTZfbGVhZF9zdXJyb2dhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIGxlYWRfc3Vycm9nYXRlID0gdXRmMTZfbGVhZF9zdXJyb2dhdGU7XG4gICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gbnVsbDtcblxuICAgICAgICAvLyAxLiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrREMwMCB0byBVK0RGRkYsIHJldHVybiBhXG4gICAgICAgIC8vIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHgxMDAwMCArICgobGVhZCBzdXJyb2dhdGUg4oiSXG4gICAgICAgIC8vIDB4RDgwMCkgPDwgMTApICsgKGNvZGUgdW5pdCDiiJIgMHhEQzAwKS5cbiAgICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweERDMDAsIDB4REZGRikpIHtcbiAgICAgICAgICByZXR1cm4gMHgxMDAwMCArIChsZWFkX3N1cnJvZ2F0ZSAtIDB4RDgwMCkgKiAweDQwMCArXG4gICAgICAgICAgICAgIChjb2RlX3VuaXQgLSAweERDMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCB0aGUgc2VxdWVuY2UgcmVzdWx0aW5nIG9mIGNvbnZlcnRpbmcgY29kZSB1bml0XG4gICAgICAgIC8vIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGRlY29kZXIgZmxhZyB0byBzdHJlYW0gYW5kIHJldHVyblxuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3VuaXQsIHV0ZjE2X2JlKSk7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrRDgwMCB0byBVK0RCRkYsIHNldCB1dGYtMTZcbiAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIHRvIGNvZGUgdW5pdCBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweEQ4MDAsIDB4REJGRikpIHtcbiAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgPSBjb2RlX3VuaXQ7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrREMwMCB0byBVK0RGRkYsIHJldHVyblxuICAgICAgLy8gZXJyb3IuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3VuaXQsIDB4REMwMCwgMHhERkZGKSlcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIC8vIDguIFJldHVybiBjb2RlIHBvaW50IGNvZGUgdW5pdC5cbiAgICAgIHJldHVybiBjb2RlX3VuaXQ7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZfYmUgVHJ1ZSBpZiBiaWctZW5kaWFuLCBmYWxzZSBpZiBsaXR0bGUtZW5kaWFuLlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjE2RW5jb2Rlcih1dGYxNl9iZSwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVStGRkZGLCByZXR1cm4gdGhlXG4gICAgICAvLyBzZXF1ZW5jZSByZXN1bHRpbmcgb2YgY29udmVydGluZyBjb2RlIHBvaW50IHRvIGJ5dGVzIHVzaW5nXG4gICAgICAvLyB1dGYtMTZiZSBlbmNvZGVyIGZsYWcuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4RkZGRikpXG4gICAgICAgIHJldHVybiBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKGNvZGVfcG9pbnQsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gMy4gTGV0IGxlYWQgYmUgKChjb2RlIHBvaW50IOKIkiAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAvLyBjb252ZXJ0ZWQgdG8gYnl0ZXMgdXNpbmcgdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgdmFyIGxlYWQgPSBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKFxuICAgICAgICAoKGNvZGVfcG9pbnQgLSAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gNC4gTGV0IHRyYWlsIGJlICgoY29kZSBwb2ludCDiiJIgMHgxMDAwMCkgJiAweDNGRikgKyAweERDMDAsXG4gICAgICAvLyBjb252ZXJ0ZWQgdG8gYnl0ZXMgdXNpbmcgdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgdmFyIHRyYWlsID0gY29udmVydENvZGVVbml0VG9CeXRlcyhcbiAgICAgICAgKChjb2RlX3BvaW50IC0gMHgxMDAwMCkgJiAweDNGRikgKyAweERDMDAsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgYnl0ZSBzZXF1ZW5jZSBvZiBsZWFkIGZvbGxvd2VkIGJ5IHRyYWlsLlxuICAgICAgcmV0dXJuIGxlYWQuY29uY2F0KHRyYWlsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gMTQuMyB1dGYtMTZiZVxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtMTZiZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZFbmNvZGVyKHRydWUsIG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtMTZiZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZEZWNvZGVyKHRydWUsIG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDE0LjQgdXRmLTE2bGVcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTE2bGUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RW5jb2RlcihmYWxzZSwgb3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi0xNmxlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkRlY29kZXIoZmFsc2UsIG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDE0LjUgeC11c2VyLWRlZmluZWRcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFhVc2VyRGVmaW5lZERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gMy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweEY3ODAgKyBieXRlIOKIkiAweDgwLlxuICAgICAgcmV0dXJuIDB4Rjc4MCArIGJpdGUgLSAweDgwO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFhVc2VyRGVmaW5lZEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS5JZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVK0Y3ODAgdG8gVStGN0ZGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IOKIkiAweEY3ODAgKyAweDgwLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGNzgwLCAweEY3RkYpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludCAtIDB4Rjc4MCArIDB4ODA7XG5cbiAgICAgIC8vIDQuIFJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd4LXVzZXItZGVmaW5lZCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgWFVzZXJEZWZpbmVkRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sneC11c2VyLWRlZmluZWQnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFhVc2VyRGVmaW5lZERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgaWYgKCFnbG9iYWxbJ1RleHRFbmNvZGVyJ10pXG4gICAgZ2xvYmFsWydUZXh0RW5jb2RlciddID0gVGV4dEVuY29kZXI7XG4gIGlmICghZ2xvYmFsWydUZXh0RGVjb2RlciddKVxuICAgIGdsb2JhbFsnVGV4dERlY29kZXInXSA9IFRleHREZWNvZGVyO1xufSh0aGlzKSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3g1LCBfeDYsIF94NykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDUsIHByb3BlcnR5ID0gX3g2LCByZWNlaXZlciA9IF94NzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDUgPSBwYXJlbnQ7IF94NiA9IHByb3BlcnR5OyBfeDcgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX3Nlc3Npb24gPSByZXF1aXJlKCcuL3Nlc3Npb24nKTtcblxudmFyIF9zZXNzaW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nlc3Npb24pO1xuXG52YXIgX2ludGVybmFsUG9vbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvcG9vbCcpO1xuXG52YXIgX2ludGVybmFsQ29ubmVjdG9yID0gcmVxdWlyZShcIi4vaW50ZXJuYWwvY29ubmVjdG9yXCIpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfdmVyc2lvbiA9IHJlcXVpcmUoJy4uL3ZlcnNpb24nKTtcblxuLyoqXG4gKiBBIGRyaXZlciBtYWludGFpbnMgb25lIG9yIG1vcmUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHdpdGggYSByZW1vdGVcbiAqIE5lbzRqIGluc3RhbmNlLiBUaHJvdWdoIHRoZSB7QGxpbmsgU2Vzc2lvbiBzZXNzaW9uc30geW91IGNhbiBzZW5kIHN0YXRlbWVudHNcbiAqIGFuZCByZXRyaWV2ZSByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlLlxuICpcbiAqIERyaXZlcnMgYXJlIHJlYXNvbmFibHkgZXhwZW5zaXZlIHRvIGNyZWF0ZSAtIHlvdSBzaG91bGQgc3RyaXZlIHRvIGtlZXAgb25lXG4gKiBkcml2ZXIgaW5zdGFuY2UgYXJvdW5kIHBlciBOZW80aiBJbnN0YW5jZSB5b3UgY29ubmVjdCB0by5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBEcml2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogWW91IHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSB7QGxpbmsgZHJpdmVyfS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJBZ2VudFxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgZnVuY3Rpb24gRHJpdmVyKHVybCkge1xuICAgIHZhciB1c2VyQWdlbnQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyAnbmVvNGotamF2YXNjcmlwdC8wLjAnIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB0b2tlbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzJdO1xuICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1szXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEcml2ZXIpO1xuXG4gICAgdGhpcy5fdXJsID0gdXJsO1xuICAgIHRoaXMuX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDtcbiAgICB0aGlzLl9vcGVuU2Vzc2lvbnMgPSB7fTtcbiAgICB0aGlzLl9zZXNzaW9uSWRHZW5lcmF0b3IgPSAwO1xuICAgIHRoaXMuX3Rva2VuID0gdG9rZW47XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuX3Bvb2wgPSBuZXcgX2ludGVybmFsUG9vbC5Qb29sKHRoaXMuX2NyZWF0ZUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fZGVzdHJveUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fdmFsaWRhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIGNvbmZpZy5jb25uZWN0aW9uUG9vbFNpemUpO1xuICB9XG5cbiAgLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciBjb25uZWN0aW9uIHN0YXRlICovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHtDb25uZWN0aW9ufSBuZXcgY29ubmVjdG9yLWFwaSBzZXNzaW9uIGluc3RhbmNlLCBhIGxvdyBsZXZlbCBzZXNzaW9uIEFQSS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhEcml2ZXIsIFt7XG4gICAga2V5OiAnX2NyZWF0ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlQ29ubmVjdGlvbihyZWxlYXNlKSB7XG4gICAgICB2YXIgc2Vzc2lvbklkID0gdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yKys7XG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKTtcbiAgICAgIHZhciBjb25uID0gKDAsIF9pbnRlcm5hbENvbm5lY3Rvci5jb25uZWN0KSh0aGlzLl91cmwsIHRoaXMuX2NvbmZpZyk7XG4gICAgICBjb25uLmluaXRpYWxpemUodGhpcy5fdXNlckFnZW50LCB0aGlzLl90b2tlbiwgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgY29ubi5faWQgPSBzZXNzaW9uSWQ7XG4gICAgICBjb25uLl9yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVsZWFzZShjb25uKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdID0gY29ubjtcbiAgICAgIHJldHVybiBjb25uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIHRoYXQgYSBjb25uZWN0aW9uIGlzIHVzYWJsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgb3BlblxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqKi9cbiAgfSwge1xuICAgIGtleTogJ192YWxpZGF0ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdmFsaWRhdGVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIHJldHVybiBjb25uLmlzT3BlbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3Bvc2Ugb2YgYSBsaXZlIHNlc3Npb24sIGNsb3NpbmcgYW55IGFzc29jaWF0ZWQgcmVzb3VyY2VzLlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnX2Rlc3Ryb3lDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Rlc3Ryb3lDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9vcGVuU2Vzc2lvbnNbY29ubi5faWRdO1xuICAgICAgY29ubi5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjcXVpcmUgYSBzZXNzaW9uIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlLiBUaGUgZHJpdmVyIG1haW50YWluc1xuICAgICAqIGEgcG9vbCBvZiBzZXNzaW9ucywgc28gY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBub3JtYWxseSBjaGVhcCBiZWNhdXNlIHlvdVxuICAgICAqIHdpbGwgYmUgcHVsbGluZyBhIHNlc3Npb24gb3V0IG9mIHRoZSBjb21tb24gcG9vbC5cbiAgICAgKlxuICAgICAqIFRoaXMgY29tZXMgd2l0aCBzb21lIHJlc3BvbnNpYmlsaXR5IC0gbWFrZSBzdXJlIHlvdSBhbHdheXMgY2FsbFxuICAgICAqIHtAbGluayBTZXNzaW9uI2Nsb3NlKCl9IHdoZW4geW91IGFyZSBkb25lIHVzaW5nIGEgc2Vzc2lvbiwgYW5kIGxpa2V3aXNlLFxuICAgICAqIG1ha2Ugc3VyZSB5b3UgZG9uJ3QgY2xvc2UgeW91ciBzZXNzaW9uIGJlZm9yZSB5b3UgYXJlIGRvbmUgdXNpbmcgaXQuIE9uY2VcbiAgICAgKiBpdCBpcyByZXR1cm5lZCB0byB0aGUgcG9vbCwgdGhlIHNlc3Npb24gd2lsbCBiZSByZXNldCB0byBhIGNsZWFuIHN0YXRlIGFuZFxuICAgICAqIG1hZGUgYXZhaWxhYmxlIGZvciBvdGhlcnMgdG8gdXNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7U2Vzc2lvbn0gbmV3IHNlc3Npb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzZXNzaW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vzc2lvbigpIHtcbiAgICAgIHZhciBjb25uID0gdGhpcy5fcG9vbC5hY3F1aXJlKCk7XG4gICAgICByZXR1cm4gbmV3IF9zZXNzaW9uMlsnZGVmYXVsdCddKGNvbm4sIGZ1bmN0aW9uIChjYikge1xuICAgICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIG9uIFNlc3Npb24jY2xvc2UoKSwgYW5kIGlzIHdoZXJlIHdlIHJldHVyblxuICAgICAgICAvLyB0aGUgcG9vbGVkICdjb25uZWN0aW9uJyBpbnN0YW5jZS5cblxuICAgICAgICAvLyBXZSBkb24ndCBwb29sIFNlc3Npb24gaW5zdGFuY2VzLCB0byBhdm9pZCB1c2VycyB1c2luZyB0aGUgU2Vzc2lvblxuICAgICAgICAvLyBhZnRlciB0aGV5J3ZlIGNhbGxlZCBjbG9zZS4gVGhlIGBTZXNzaW9uYCBvYmplY3QgaXMganVzdCBhIHRoaW5cbiAgICAgICAgLy8gd3JhcHBlciBhcm91bmQgQ29ubmVjdGlvbiBhbnl3YXksIHNvIGl0IG1ha2VzIGxpdHRsZSBkaWZmZXJlbmNlLlxuXG4gICAgICAgIC8vIFF1ZXVlIHVwIGEgJ3Jlc2V0JywgdG8gZW5zdXJlIHRoZSBuZXh0IHVzZXIgZ2V0cyBhIGNsZWFuXG4gICAgICAgIC8vIHNlc3Npb24gdG8gd29yayB3aXRoLlxuICAgICAgICBjb25uLnJlc2V0KCk7XG4gICAgICAgIGNvbm4uc3luYygpO1xuXG4gICAgICAgIC8vIFJldHVybiBjb25uZWN0aW9uIHRvIHRoZSBwb29sXG4gICAgICAgIGNvbm4uX3JlbGVhc2UoKTtcblxuICAgICAgICAvLyBDYWxsIHVzZXIgY2FsbGJhY2tcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgYWxsIG9wZW4gc2Vzc2lvbnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBZb3Ugc2hvdWxkXG4gICAgICogbWFrZSBzdXJlIHRvIHVzZSB0aGlzIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBkcml2ZXIgaW5zdGFuY2UuXG4gICAgICogQHJldHVybiB1bmRlZmluZWRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICBmb3IgKHZhciBzZXNzaW9uSWQgaW4gdGhpcy5fb3BlblNlc3Npb25zKSB7XG4gICAgICAgIGlmICh0aGlzLl9vcGVuU2Vzc2lvbnMuaGFzT3duUHJvcGVydHkoc2Vzc2lvbklkKSkge1xuICAgICAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRHJpdmVyO1xufSkoKTtcblxudmFyIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKF9TdHJlYW1PYnNlcnZlcikge1xuICBfaW5oZXJpdHMoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKGRyaXZlcikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcbiAgICB0aGlzLl9kcml2ZXIgPSBkcml2ZXI7XG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnb25FcnJvcicsIHRoaXMpLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICBpZiAodGhpcy5fZHJpdmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9kcml2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbXBsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1lc3NhZ2UpIHtcbiAgICAgIGlmICh0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQpIHtcbiAgICAgICAgdGhpcy5fZHJpdmVyLm9uQ29tcGxldGVkKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyO1xufSkoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyWydkZWZhdWx0J10pO1xuXG52YXIgVVNFUl9BR0VOVCA9IFwibmVvNGotamF2YXNjcmlwdC9cIiArIF92ZXJzaW9uLlZFUlNJT047XG5cbi8qKlxuICogQ29uc3RydWN0IGEgbmV3IE5lbzRqIERyaXZlci4gVGhpcyBpcyB5b3VyIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoaXNcbiAqIGxpYnJhcnkuXG4gKlxuICogIyMgQ29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gYXJndW1lbnQuIEF2YWlsYWJsZSBjb25maWd1cmF0aW9uXG4gKiBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOlxuICpcbiAqICAgICB7XG4gKiAgICAgICAvLyBFbmFibGUgVExTIGVuY3J5cHRpb24uIFRoaXMgaXMgb24gYnkgZGVmYXVsdCBpbiBtb2Rlcm4gTm9kZUpTIGluc3RhbGxzLFxuICogICAgICAgLy8gYnV0IG9mZiBieSBkZWZhdWx0IGluIHRoZSBXZWIgQnVuZGxlIGFuZCBvbGQgKDw9MS4wLjApIE5vZGVKUyBpbnN0YWxsc1xuICogICAgICAgLy8gZHVlIHRvIHRlY2huaWNhbCBsaW1pdGF0aW9ucyBvbiB0aG9zZSBwbGF0Zm9ybXMuXG4gKiAgICAgICBlbmNyeXB0ZWQ6IHRydWV8ZmFsc2UsXG4gKlxuICogICAgICAgLy8gVHJ1c3Qgc3RyYXRlZ3kgdG8gdXNlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4gVGhlcmUgaXMgbm8gbW9kZSB0byBkaXNhYmxlXG4gKiAgICAgICAvLyB0cnVzdCBvdGhlciB0aGFuIGRpc2FibGluZyBlbmNyeXB0aW9uIGFsdG9nZXRoZXIuIFRoZSByZWFzb24gZm9yXG4gKiAgICAgICAvLyB0aGlzIGlzIHRoYXQgaWYgeW91IGRvbid0IGtub3cgd2hvIHlvdSBhcmUgdGFsa2luZyB0bywgaXQgaXMgZWFzeSBmb3IgYW5cbiAqICAgICAgIC8vIGF0dGFja2VyIHRvIGhpamFjayB5b3VyIGVuY3J5cHRlZCBjb25uZWN0aW9uLCByZW5kZXJpbmcgZW5jcnlwdGlvbiBwb2ludGxlc3MuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfT05fRklSU1RfVVNFIGlzIHRoZSBkZWZhdWx0IGZvciBtb2Rlcm4gTm9kZUpTIGRlcGxveW1lbnRzLCBhbmQgd29ya3NcbiAqICAgICAgIC8vIHNpbWlsYXJseSB0byBob3cgYHNzbGAgd29ya3MgLSB0aGUgZmlyc3QgdGltZSB3ZSBjb25uZWN0IHRvIGEgbmV3IGhvc3QsXG4gKiAgICAgICAvLyB3ZSByZW1lbWJlciB0aGUgY2VydGlmaWNhdGUgdGhleSB1c2UuIElmIHRoZSBjZXJ0aWZpY2F0ZSBldmVyIGNoYW5nZXMsIHdlXG4gKiAgICAgICAvLyBhc3N1bWUgaXQgaXMgYW4gYXR0ZW1wdCB0byBoaWphY2sgdGhlIGNvbm5lY3Rpb24gYW5kIHJlcXVpcmUgbWFudWFsIGludGVydmVudGlvbi5cbiAqICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBieSBkZWZhdWx0LCBjb25uZWN0aW9ucyBcImp1c3Qgd29ya1wiIHdoaWxlIHN0aWxsIGdpdmluZyB5b3VcbiAqICAgICAgIC8vIGdvb2QgZW5jcnlwdGVkIHByb3RlY3Rpb24uXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyBpcyB0aGUgY2xhc3NpYyBhcHByb2FjaCB0byB0cnVzdCB2ZXJpZmljYXRpb24gLVxuICogICAgICAgLy8gd2hlbmV2ZXIgd2UgZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBjb25uZWN0aW9uLCB3ZSBlbnN1cmUgdGhlIGhvc3QgaXMgdXNpbmdcbiAqICAgICAgIC8vIGFuIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgdGhhdCBpcyBpbiwgb3IgaXMgc2lnbmVkIGJ5LCBhIGNlcnRpZmljYXRlIGxpc3RlZFxuICogICAgICAgLy8gYXMgdHJ1c3RlZC4gSW4gdGhlIHdlYiBidW5kbGUsIHRoaXMgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBtYWludGFpbmVkXG4gKiAgICAgICAvLyBieSB0aGUgd2ViIGJyb3dzZXIuIEluIE5vZGVKUywgeW91IGNvbmZpZ3VyZSB0aGUgbGlzdCB3aXRoIHRoZSBuZXh0IGNvbmZpZyBvcHRpb24uXG4gKiAgICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiB8IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICpcbiAqICAgICAgIC8vIExpc3Qgb2Ygb25lIG9yIG1vcmUgcGF0aHMgdG8gdHJ1c3RlZCBlbmNyeXB0aW9uIGNlcnRpZmljYXRlcy4gVGhpcyBvbmx5XG4gKiAgICAgICAvLyB3b3JrcyBpbiB0aGUgTm9kZUpTIGJ1bmRsZSwgYW5kIG9ubHkgbWF0dGVycyBpZiB5b3UgdXNlIFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLlxuICogICAgICAgLy8gVGhlIGNlcnRpZmljYXRlIGZpbGVzIHNob3VsZCBiZSBpbiByZWd1bGFyIFguNTA5IFBFTSBmb3JtYXQuXG4gKiAgICAgICAvLyBGb3IgaW5zdGFuY2UsIFsnLi90cnVzdGVkLnBlbSddXG4gKiAgICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXSxcbiAqXG4gKiAgICAgICAvLyBQYXRoIHRvIGEgZmlsZSB3aGVyZSB0aGUgZHJpdmVyIHNhdmVzIGhvc3RzIGl0IGhhcyBzZWVuIGluIHRoZSBwYXN0LCB0aGlzIGlzXG4gKiAgICAgICAvLyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHNzbCB0b29sJ3Mga25vd25faG9zdHMgZmlsZS4gRWFjaCB0aW1lIHdlIGNvbm5lY3QgdG8gYVxuICogICAgICAgLy8gbmV3IGhvc3QsIGEgaGFzaCBvZiB0aGVpciBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZG9tYWluIG5hbWUgYW5kXG4gKiAgICAgICAvLyBwb3J0LCBhbmQgdGhpcyBpcyB0aGVuIHVzZWQgdG8gdmVyaWZ5IHRoZSBob3N0IGNlcnRpZmljYXRlIGRvZXMgbm90IGNoYW5nZS5cbiAqICAgICAgIC8vIFRoaXMgc2V0dGluZyBoYXMgbm8gZWZmZWN0IHVubGVzcyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgZW5hYmxlZC5cbiAqICAgICAgIGtub3duSG9zdHM6XCJ+Ly5uZW80ai9rbm93bl9ob3N0c1wiLFxuICogICAgIH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgZm9yIHRoZSBOZW80aiBkYXRhYmFzZSwgZm9yIGluc3RhbmNlIFwiYm9sdDovL2xvY2FsaG9zdFwiXG4gKiBAcGFyYW0ge01hcDxTdHJpbmcsU3RyaW5nPn0gYXV0aFRva2VuIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBTZWUge0BsaW5rIGF1dGh9IGZvciBoZWxwZXJzLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdC4gU2VlIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gYWJvdmUgZm9yIGRldGFpbHMuXG4gKiBAcmV0dXJucyB7RHJpdmVyfVxuICovXG5mdW5jdGlvbiBkcml2ZXIodXJsLCBhdXRoVG9rZW4pIHtcbiAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzJdO1xuXG4gIHJldHVybiBuZXcgRHJpdmVyKHVybCwgVVNFUl9BR0VOVCwgYXV0aFRva2VuLCBjb25maWcpO1xufVxuXG5leHBvcnRzLkRyaXZlciA9IERyaXZlcjtcbmV4cG9ydHMuZHJpdmVyID0gZHJpdmVyOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBBIGNvbW1vbiBwbGFjZSBmb3IgY29uc3RydWN0aW5nIGVycm9yIG9iamVjdHMsIHRvIGtlZXAgdGhlbVxuLy8gdW5pZm9ybSBhY3Jvc3MgdGhlIGRyaXZlciBzdXJmYWNlLlxuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gzLCBfeDQsIF94NSkgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDMsIHByb3BlcnR5ID0gX3g0LCByZWNlaXZlciA9IF94NTsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDMgPSBwYXJlbnQ7IF94NCA9IHByb3BlcnR5OyBfeDUgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBuZXdFcnJvcihtZXNzYWdlKSB7XG4gIHZhciBjb2RlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gXCJOL0FcIiA6IGFyZ3VtZW50c1sxXTtcblxuICAvLyBUT0RPOiBJZGVhIGlzIHRoYXQgd2UgY2FuIGNoZWNrIHRoZSBjb2QgaGVyZSBhbmQgdGhyb3cgc3ViLWNsYXNzZXNcbiAgLy8gb2YgTmVvNGpFcnJvciBhcyBhcHByb3ByaWF0ZVxuICByZXR1cm4gbmV3IE5lbzRqRXJyb3IobWVzc2FnZSwgY29kZSk7XG59XG5cbnZhciBOZW80akVycm9yID0gKGZ1bmN0aW9uIChfRXJyb3IpIHtcbiAgX2luaGVyaXRzKE5lbzRqRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gTmVvNGpFcnJvcihtZXNzYWdlKSB7XG4gICAgdmFyIGNvZGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBcIk4vQVwiIDogYXJndW1lbnRzWzFdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5lbzRqRXJyb3IpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoTmVvNGpFcnJvci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgbWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgcmV0dXJuIE5lbzRqRXJyb3I7XG59KShFcnJvcik7XG5cbmV4cG9ydHMubmV3RXJyb3IgPSBuZXdFcnJvcjtcbmV4cG9ydHMuTmVvNGpFcnJvciA9IE5lbzRqRXJyb3I7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQ2xhc3MgZm9yIE5vZGUgVHlwZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIE5vZGUgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge0FycmF5fSBsYWJlbHMgLSBBcnJheSBmb3IgYWxsIGxhYmVsc1xuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIG5vZGUgcHJvcGVydGllc1xuICAgKi9cblxuICBmdW5jdGlvbiBOb2RlKGlkZW50aXR5LCBsYWJlbHMsIHByb3BlcnRpZXMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZSk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzcyBmb3IgUmVsYXRpb25zaGlwIFR5cGUuXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhOb2RlLCBbe1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHZhciBzID0gXCIoXCIgKyB0aGlzLmlkZW50aXR5O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzICs9IFwiOlwiICsgdGhpcy5sYWJlbHNbaV07XG4gICAgICB9XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGU7XG59KSgpO1xuXG52YXIgUmVsYXRpb25zaGlwID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlbGF0aW9uc2hpcChpZGVudGl0eSwgc3RhcnQsIGVuZCwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWxhdGlvbnNoaXApO1xuXG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQ2xhc3MgZm9yIFVuYm91bmRSZWxhdGlvbnNoaXAgVHlwZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZWxhdGlvbnNoaXAsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuc3RhcnQgKyBcIiktWzpcIiArIHRoaXMudHlwZTtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJdLT4oXCIgKyB0aGlzLmVuZCArIFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlbGF0aW9uc2hpcDtcbn0pKCk7XG5cbnZhciBVbmJvdW5kUmVsYXRpb25zaGlwID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFVuYm91bmRSZWxhdGlvbnNoaXAoaWRlbnRpdHksIHR5cGUsIHByb3BlcnRpZXMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5ib3VuZFJlbGF0aW9uc2hpcCk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYXNzIGZvciBQYXRoU2VnbWVudCBUeXBlLlxuICAgKi9cblxuICAvKipcbiAgICogQmluZCByZWxhdGlvbnNoaXBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSW5kZW50aXR5IG9mIHN0YXJ0IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVuZCAtIEluZGVudGl0eSBvZiBlbmQgbm9kZVxuICAgKiBAcmV0dXJuIHtSZWxhdGlvbnNoaXB9IC0gQ3JlYXRlZCByZWxhdGlvbnNoaXBcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFVuYm91bmRSZWxhdGlvbnNoaXAsIFt7XG4gICAga2V5OiBcImJpbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmluZChzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcCh0aGlzLmlkZW50aXR5LCBzdGFydCwgZW5kLCB0aGlzLnR5cGUsIHRoaXMucHJvcGVydGllcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIi1bOlwiICsgdGhpcy50eXBlO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcyArPSBcIl0tPlwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVuYm91bmRSZWxhdGlvbnNoaXA7XG59KSgpO1xuXG52YXIgUGF0aFNlZ21lbnQgPVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGFydCAtIElkZW50aXR5IG9mIHN0YXJ0IE5vZGVcbiAqIEBwYXJhbSB7UmVsYXRpb25zaGlwfSByZWwgLSBSZWxhdGlvbnNoaXAgc2VnbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IGVuZCAtIElkZW50aXR5IG9mIGVuZCBOb2RlXG4gKi9cbmZ1bmN0aW9uIFBhdGhTZWdtZW50KHN0YXJ0LCByZWwsIGVuZCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGF0aFNlZ21lbnQpO1xuXG4gIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWw7XG4gIHRoaXMuZW5kID0gZW5kO1xufVxuXG4vKipcbiAqIENsYXNzIGZvciBQYXRoIFR5cGUuXG4gKi9cbjtcblxudmFyIFBhdGggPVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7Tm9kZX0gc3RhcnQgIC0gc3RhcnQgbm9kZVxuICogQHBhcmFtIHtOb2RlfSBlbmQgLSBlbmQgbm9kZVxuICogQHBhcmFtIHtBcnJheX0gc2VnbWVudHMgLSBBcnJheSBvZiBTZWdtZW50c1xuICovXG5mdW5jdGlvbiBQYXRoKHN0YXJ0LCBlbmQsIHNlZ21lbnRzKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoKTtcblxuICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gIHRoaXMuZW5kID0gZW5kO1xuICB0aGlzLnNlZ21lbnRzID0gc2VnbWVudHM7XG4gIHRoaXMubGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xufTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIE5vZGU6IE5vZGUsXG4gIFJlbGF0aW9uc2hpcDogUmVsYXRpb25zaGlwLFxuICBVbmJvdW5kUmVsYXRpb25zaGlwOiBVbmJvdW5kUmVsYXRpb25zaGlwLFxuICBQYXRoOiBQYXRoLFxuICBQYXRoU2VnbWVudDogUGF0aFNlZ21lbnRcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuL2ludGVnZXInKTtcblxudmFyIF9kcml2ZXIgPSByZXF1aXJlKCcuL2RyaXZlcicpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuL2dyYXBoLXR5cGVzJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgZHJpdmVyOiBfZHJpdmVyLmRyaXZlcixcbiAgaW50OiBfaW50ZWdlci5pbnQsXG4gIGlzSW50OiBfaW50ZWdlci5pc0ludCxcbiAgTmVvNGpFcnJvcjogX2Vycm9yLk5lbzRqRXJyb3IsXG4gIGF1dGg6IHtcbiAgICBiYXNpYzogZnVuY3Rpb24gYmFzaWModXNlcm5hbWUsIHBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4geyBzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiB1c2VybmFtZSwgY3JlZGVudGlhbHM6IHBhc3N3b3JkIH07XG4gICAgfVxuICB9LFxuICB0eXBlczoge1xuICAgIE5vZGU6IF9ncmFwaFR5cGVzLk5vZGUsXG4gICAgUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5SZWxhdGlvbnNoaXAsXG4gICAgVW5ib3VuZFJlbGF0aW9uc2hpcDogX2dyYXBoVHlwZXMuVW5ib3VuZFJlbGF0aW9uc2hpcCxcbiAgICBQYXRoU2VnbWVudDogX2dyYXBoVHlwZXMuUGF0aFNlZ21lbnQsXG4gICAgUGF0aDogX2dyYXBoVHlwZXMuUGF0aFxuICB9XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIDY0LWJpdCBJbnRlZ2VyIGxpYnJhcnksIG9yaWdpbmFsbHkgZnJvbSBMb25nLmpzIGJ5IGRjb2RlSU9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL0xvbmcuanNcbi8vIExpY2Vuc2UgQXBhY2hlIDJcblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciwgZ2l2ZW4gaXRzIGxvdyBhbmQgaGlnaCAzMiBiaXQgdmFsdWVzIGFzICpzaWduZWQqIGludGVnZXJzLlxuICogIFNlZSB0aGUgZnJvbSogZnVuY3Rpb25zIGJlbG93IGZvciBtb3JlIGNvbnZlbmllbnQgd2F5cyBvZiBjb25zdHJ1Y3RpbmcgSW50ZWdlcnMuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQGV4cG9ydHMgSW50ZWdlclxuICogQGNsYXNzIEEgSW50ZWdlciBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciB2YWx1ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuXG52YXIgSW50ZWdlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEludGVnZXIobG93LCBoaWdoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEludGVnZXIpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxvdyAzMiBiaXRzIGFzIGEgc2lnbmVkIHZhbHVlLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICAgIHRoaXMubG93ID0gbG93IHwgMDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5oaWdoID0gaGlnaCB8IDA7XG4gIH1cblxuICAvKipcbiAgICogQW4gaW5kaWNhdG9yIHVzZWQgdG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEludGVnZXIgb3Igbm90LlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGNvbnN0XG4gICAqIEBleHBvc2VcbiAgICogQHByaXZhdGVcbiAgICovXG5cbiAgLy8gVGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIEludGVnZXIgaXMgdGhlIHR3byBnaXZlbiBzaWduZWQsIDMyLWJpdCB2YWx1ZXMuXG4gIC8vIFdlIHVzZSAzMi1iaXQgcGllY2VzIGJlY2F1c2UgdGhlc2UgYXJlIHRoZSBzaXplIG9mIGludGVnZXJzIG9uIHdoaWNoXG4gIC8vIEphdmFzY3JpcHQgcGVyZm9ybXMgYml0LW9wZXJhdGlvbnMuICBGb3Igb3BlcmF0aW9ucyBsaWtlIGFkZGl0aW9uIGFuZFxuICAvLyBtdWx0aXBsaWNhdGlvbiwgd2Ugc3BsaXQgZWFjaCBudW1iZXIgaW50byAxNiBiaXQgcGllY2VzLCB3aGljaCBjYW4gZWFzaWx5IGJlXG4gIC8vIG11bHRpcGxpZWQgd2l0aGluIEphdmFzY3JpcHQncyBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiB3aXRob3V0IG92ZXJmbG93XG4gIC8vIG9yIGNoYW5nZSBpbiBzaWduLlxuICAvL1xuICAvLyBJbiB0aGUgYWxnb3JpdGhtcyBiZWxvdywgd2UgZnJlcXVlbnRseSByZWR1Y2UgdGhlIG5lZ2F0aXZlIGNhc2UgdG8gdGhlXG4gIC8vIHBvc2l0aXZlIGNhc2UgYnkgbmVnYXRpbmcgdGhlIGlucHV0KHMpIGFuZCB0aGVuIHBvc3QtcHJvY2Vzc2luZyB0aGUgcmVzdWx0LlxuICAvLyBOb3RlIHRoYXQgd2UgbXVzdCBBTFdBWVMgY2hlY2sgc3BlY2lhbGx5IHdoZXRoZXIgdGhvc2UgdmFsdWVzIGFyZSBNSU5fVkFMVUVcbiAgLy8gKC0yXjYzKSBiZWNhdXNlIC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFIChzaW5jZSAyXjYzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhc1xuICAvLyBhIHBvc2l0aXZlIG51bWJlciwgaXQgb3ZlcmZsb3dzIGJhY2sgaW50byBhIG5lZ2F0aXZlKS4gIE5vdCBoYW5kbGluZyB0aGlzXG4gIC8vIGNhc2Ugd291bGQgb2Z0ZW4gcmVzdWx0IGluIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgLy9cbiAgLy8gQ29tbW9uIGNvbnN0YW50IHZhbHVlcyBaRVJPLCBPTkUsIE5FR19PTkUsIGV0Yy4gYXJlIGRlZmluZWQgYmVsb3cgdGhlIGZyb20qXG4gIC8vIG1ldGhvZHMgb24gd2hpY2ggdGhleSBkZXBlbmQuXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGFuIGV4YWN0IGphdmFzY3JpcHQgTnVtYmVyLCBhc3N1bWluZyBpdCBpcyBhIDMyIGJpdCBpbnRlZ2VyLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhJbnRlZ2VyLCBbe1xuICAgIGtleTogJ3RvSW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9JbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb3c7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndG9OdW1iZXInLFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYSB0aGUgbmVhcmVzdCBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlIChkb3VibGUsIDUzIGJpdCBtYW50aXNzYSkuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvTnVtYmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCAqIFRXT19QV1JfMzJfREJMICsgKHRoaXMubG93ID4+PiAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHN0cmluZyB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gICAgICogQHBhcmFtIHtudW1iZXI9fSByYWRpeCBSYWRpeCAoMi0zNiksIGRlZmF1bHRzIHRvIDEwXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBgcmFkaXhgIGlzIG91dCBvZiByYW5nZVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3RvU3RyaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcocmFkaXgpIHtcbiAgICAgIHJhZGl4ID0gcmFkaXggfHwgMTA7XG4gICAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpIHRocm93IFJhbmdlRXJyb3IoJ3JhZGl4IG91dCBvZiByYW5nZTogJyArIHJhZGl4KTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gJzAnO1xuICAgICAgdmFyIHJlbTtcbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGFuZ2UgdGhlIEludGVnZXIgdmFsdWUgYmVmb3JlIGl0IGNhbiBiZSBuZWdhdGVkLCBzbyB3ZSByZW1vdmVcbiAgICAgICAgICAvLyB0aGUgYm90dG9tLW1vc3QgZGlnaXQgaW4gdGhpcyBiYXNlIGFuZCB0aGVuIHJlY3Vyc2UgdG8gZG8gdGhlIHJlc3QuXG4gICAgICAgICAgdmFyIHJhZGl4SW50ZWdlciA9IEludGVnZXIuZnJvbU51bWJlcihyYWRpeCk7XG4gICAgICAgICAgdmFyIGRpdiA9IHRoaXMuZGl2KHJhZGl4SW50ZWdlcik7XG4gICAgICAgICAgcmVtID0gZGl2Lm11bHRpcGx5KHJhZGl4SW50ZWdlcikuc3VidHJhY3QodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkgKyByZW0udG9JbnQoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gJy0nICsgdGhpcy5uZWdhdGUoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIHNldmVyYWwgKDYpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgICAgIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICAgICAgdmFyIHJhZGl4VG9Qb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgNikpO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZW1EaXYgPSByZW0uZGl2KHJhZGl4VG9Qb3dlciksXG4gICAgICAgICAgICBpbnR2YWwgPSByZW0uc3VidHJhY3QocmVtRGl2Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcikpLnRvSW50KCkgPj4+IDAsXG4gICAgICAgICAgICBkaWdpdHMgPSBpbnR2YWwudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZW0gPSByZW1EaXY7XG4gICAgICAgIGlmIChyZW0uaXNaZXJvKCkpIHJldHVybiBkaWdpdHMgKyByZXN1bHQ7ZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKGRpZ2l0cy5sZW5ndGggPCA2KSBkaWdpdHMgPSAnMCcgKyBkaWdpdHM7XG4gICAgICAgICAgcmVzdWx0ID0gJycgKyBkaWdpdHMgKyByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgaGlnaCBiaXRzXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ2V0SGlnaEJpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRIaWdoQml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2g7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgbG93IGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRMb3dCaXRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG93Qml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXROdW1CaXRzQWJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TnVtQml0c0FicygpIHtcbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSA/IDY0IDogdGhpcy5uZWdhdGUoKS5nZXROdW1CaXRzQWJzKCk7XG4gICAgICB2YXIgdmFsID0gdGhpcy5oaWdoICE9IDAgPyB0aGlzLmhpZ2ggOiB0aGlzLmxvdztcbiAgICAgIGZvciAodmFyIGJpdCA9IDMxOyBiaXQgPiAwOyBiaXQtLSkgaWYgKCh2YWwgJiAxIDw8IGJpdCkgIT0gMCkgYnJlYWs7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoICE9IDAgPyBiaXQgKyAzMyA6IGJpdCArIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZXF1YWxzIHplcm8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNaZXJvJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNaZXJvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gMCAmJiB0aGlzLmxvdyA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBuZWdhdGl2ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc05lZ2F0aXZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOZWdhdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIHBvc2l0aXZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzUG9zaXRpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1Bvc2l0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG9kZC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc09kZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT2RkKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGV2ZW4uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNFdmVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFdmVuKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2VxdWFscycsXG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gb3RoZXIuaGlnaCAmJiB0aGlzLmxvdyA9PT0gb3RoZXIubG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ25vdEVxdWFscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vdEVxdWFscyhvdGhlcikge1xuICAgICAgIXRoaXMuZXF1YWxzKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGVzc1RoYW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsZXNzVGhhbihvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDwgMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsZXNzVGhhbk9yRXF1YWwob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA8PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dyZWF0ZXJUaGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW4ob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW5PckVxdWFsKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0aGlzIEludGVnZXIncyB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgMSBpZiB0aGUgdGhpcyBpcyBncmVhdGVyIGFuZCAtMVxuICAgICAqICBpZiB0aGUgZ2l2ZW4gb25lIGlzIGdyZWF0ZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb21wYXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGFyZShvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKG90aGVyKSkgcmV0dXJuIDA7XG4gICAgICB2YXIgdGhpc05lZyA9IHRoaXMuaXNOZWdhdGl2ZSgpLFxuICAgICAgICAgIG90aGVyTmVnID0gb3RoZXIuaXNOZWdhdGl2ZSgpO1xuICAgICAgaWYgKHRoaXNOZWcgJiYgIW90aGVyTmVnKSByZXR1cm4gLTE7XG4gICAgICBpZiAoIXRoaXNOZWcgJiYgb3RoZXJOZWcpIHJldHVybiAxO1xuICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgc2lnbiBiaXRzIGFyZSB0aGUgc2FtZVxuICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qob3RoZXIpLmlzTmVnYXRpdmUoKSA/IC0xIDogMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOZWdhdGVzIHRoaXMgSW50ZWdlcidzIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gTmVnYXRlZCBJbnRlZ2VyXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbmVnYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbmVnYXRlKCkge1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICAgICAgcmV0dXJuIHRoaXMubm90KCkuYWRkKEludGVnZXIuT05FKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gYWRkZW5kIEFkZGVuZFxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU3VtXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYWRkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKGFkZGVuZCkge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihhZGRlbmQpKSBhZGRlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShhZGRlbmQpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBudW1iZXIgaW50byA0IGNodW5rcyBvZiAxNiBiaXRzLCBhbmQgdGhlbiBzdW0gdGhlIGNodW5rcy5cblxuICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGI0OCA9IGFkZGVuZC5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBiMzIgPSBhZGRlbmQuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBhZGRlbmQubG93ID4+PiAxNjtcbiAgICAgIHZhciBiMDAgPSBhZGRlbmQubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYzQ4ID0gMCxcbiAgICAgICAgICBjMzIgPSAwLFxuICAgICAgICAgIGMxNiA9IDAsXG4gICAgICAgICAgYzAwID0gMDtcbiAgICAgIGMwMCArPSBhMDAgKyBiMDA7XG4gICAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICAgIGMwMCAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTE2ICsgYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiArIGIzMjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGM0OCArPSBhNDggKyBiNDg7XG4gICAgICBjNDggJj0gMHhGRkZGO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoYzE2IDw8IDE2IHwgYzAwLCBjNDggPDwgMTYgfCBjMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gc3VidHJhaGVuZCBTdWJ0cmFoZW5kXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBEaWZmZXJlbmNlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc3VidHJhY3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJ0cmFjdChzdWJ0cmFoZW5kKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKHN1YnRyYWhlbmQpKSBzdWJ0cmFoZW5kID0gSW50ZWdlci5mcm9tVmFsdWUoc3VidHJhaGVuZCk7XG4gICAgICByZXR1cm4gdGhpcy5hZGQoc3VidHJhaGVuZC5uZWdhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBtdWx0aXBsaWVyIE11bHRpcGxpZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFByb2R1Y3RcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtdWx0aXBseScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG11bHRpcGx5KG11bHRpcGxpZXIpIHtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihtdWx0aXBsaWVyKSkgbXVsdGlwbGllciA9IEludGVnZXIuZnJvbVZhbHVlKG11bHRpcGxpZXIpO1xuICAgICAgaWYgKG11bHRpcGxpZXIuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gbXVsdGlwbGllci5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAobXVsdGlwbGllci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gdGhpcy5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG5cbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpO2Vsc2UgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gSWYgYm90aCBsb25ncyBhcmUgc21hbGwsIHVzZSBmbG9hdCBtdWx0aXBsaWNhdGlvblxuICAgICAgaWYgKHRoaXMubGVzc1RoYW4oVFdPX1BXUl8yNCkgJiYgbXVsdGlwbGllci5sZXNzVGhhbihUV09fUFdSXzI0KSkgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkgKiBtdWx0aXBsaWVyLnRvTnVtYmVyKCkpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBsb25nIGludG8gNCBjaHVua3Mgb2YgMTYgYml0cywgYW5kIHRoZW4gYWRkIHVwIDR4NCBwcm9kdWN0cy5cbiAgICAgIC8vIFdlIGNhbiBza2lwIHByb2R1Y3RzIHRoYXQgd291bGQgb3ZlcmZsb3cuXG5cbiAgICAgIHZhciBhNDggPSB0aGlzLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBhMTYgPSB0aGlzLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYTAwID0gdGhpcy5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBiNDggPSBtdWx0aXBsaWVyLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IG11bHRpcGxpZXIuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBtdWx0aXBsaWVyLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYjAwID0gbXVsdGlwbGllci5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCAqIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKiBiMDA7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTAwICogYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiAqIGIwMDtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMTYgKiBiMTY7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTAwICogYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGl2JyxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIGRpdmlkZWQgYnkgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUXVvdGllbnRcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpdihkaXZpc29yKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGRpdmlzb3IpKSBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgICBpZiAoZGl2aXNvci5pc1plcm8oKSkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ2RpdmlzaW9uIGJ5IHplcm8nKTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgdmFyIGFwcHJveCwgcmVtLCByZXM7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk9ORSkgfHwgZGl2aXNvci5lcXVhbHMoSW50ZWdlci5ORUdfT05FKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFOyAvLyByZWNhbGwgdGhhdCAtTUlOX1ZBTFVFID09IE1JTl9WQUxVRVxuICAgICAgICBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLk9ORTtlbHNlIHtcbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgfG90aGVyfCA+PSAyLCBzbyB8dGhpcy9vdGhlcnwgPCB8TUlOX1ZBTFVFfC5cbiAgICAgICAgICAgIHZhciBoYWxmVGhpcyA9IHRoaXMuc2hpZnRSaWdodCgxKTtcbiAgICAgICAgICAgIGFwcHJveCA9IGhhbGZUaGlzLmRpdihkaXZpc29yKS5zaGlmdExlZnQoMSk7XG4gICAgICAgICAgICBpZiAoYXBwcm94LmVxdWFscyhJbnRlZ2VyLlpFUk8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaXZpc29yLmlzTmVnYXRpdmUoKSA/IEludGVnZXIuT05FIDogSW50ZWdlci5ORUdfT05FO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVtID0gdGhpcy5zdWJ0cmFjdChkaXZpc29yLm11bHRpcGx5KGFwcHJveCkpO1xuICAgICAgICAgICAgICByZXMgPSBhcHByb3guYWRkKHJlbS5kaXYoZGl2aXNvcikpO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KGRpdmlzb3IubmVnYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5kaXYoZGl2aXNvci5uZWdhdGUoKSkubmVnYXRlKCk7XG5cbiAgICAgIC8vIFJlcGVhdCB0aGUgZm9sbG93aW5nIHVudGlsIHRoZSByZW1haW5kZXIgaXMgbGVzcyB0aGFuIG90aGVyOiAgZmluZCBhXG4gICAgICAvLyBmbG9hdGluZy1wb2ludCB0aGF0IGFwcHJveGltYXRlcyByZW1haW5kZXIgLyBvdGhlciAqZnJvbSBiZWxvdyosIGFkZCB0aGlzXG4gICAgICAvLyBpbnRvIHRoZSByZXN1bHQsIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSByZW1haW5kZXIuICBJdCBpcyBjcml0aWNhbCB0aGF0XG4gICAgICAvLyB0aGUgYXBwcm94aW1hdGUgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSByZWFsIHZhbHVlIHNvIHRoYXQgdGhlXG4gICAgICAvLyByZW1haW5kZXIgbmV2ZXIgYmVjb21lcyBuZWdhdGl2ZS5cbiAgICAgIHJlcyA9IEludGVnZXIuWkVSTztcbiAgICAgIHJlbSA9IHRoaXM7XG4gICAgICB3aGlsZSAocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChkaXZpc29yKSkge1xuICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uLiBUaGlzIG1heSBiZSBhIGxpdHRsZSBncmVhdGVyIG9yXG4gICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIHZhbHVlLlxuICAgICAgICBhcHByb3ggPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHJlbS50b051bWJlcigpIC8gZGl2aXNvci50b051bWJlcigpKSk7XG5cbiAgICAgICAgLy8gV2Ugd2lsbCB0d2VhayB0aGUgYXBwcm94aW1hdGUgcmVzdWx0IGJ5IGNoYW5naW5nIGl0IGluIHRoZSA0OC10aCBkaWdpdCBvclxuICAgICAgICAvLyB0aGUgc21hbGxlc3Qgbm9uLWZyYWN0aW9uYWwgZGlnaXQsIHdoaWNoZXZlciBpcyBsYXJnZXIuXG4gICAgICAgIHZhciBsb2cyID0gTWF0aC5jZWlsKE1hdGgubG9nKGFwcHJveCkgLyBNYXRoLkxOMiksXG4gICAgICAgICAgICBkZWx0YSA9IGxvZzIgPD0gNDggPyAxIDogTWF0aC5wb3coMiwgbG9nMiAtIDQ4KSxcblxuICAgICAgICAvLyBEZWNyZWFzZSB0aGUgYXBwcm94aW1hdGlvbiB1bnRpbCBpdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHJlbWFpbmRlci4gIE5vdGVcbiAgICAgICAgLy8gdGhhdCBpZiBpdCBpcyB0b28gbGFyZ2UsIHRoZSBwcm9kdWN0IG92ZXJmbG93cyBhbmQgaXMgbmVnYXRpdmUuXG4gICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpLFxuICAgICAgICAgICAgYXBwcm94UmVtID0gYXBwcm94UmVzLm11bHRpcGx5KGRpdmlzb3IpO1xuICAgICAgICB3aGlsZSAoYXBwcm94UmVtLmlzTmVnYXRpdmUoKSB8fCBhcHByb3hSZW0uZ3JlYXRlclRoYW4ocmVtKSkge1xuICAgICAgICAgIGFwcHJveCAtPSBkZWx0YTtcbiAgICAgICAgICBhcHByb3hSZXMgPSBJbnRlZ2VyLmZyb21OdW1iZXIoYXBwcm94KTtcbiAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBrbm93IHRoZSBhbnN3ZXIgY2FuJ3QgYmUgemVyby4uLiBhbmQgYWN0dWFsbHksIHplcm8gd291bGQgY2F1c2VcbiAgICAgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIHNpbmNlIHdlIHdvdWxkIG1ha2Ugbm8gcHJvZ3Jlc3MuXG4gICAgICAgIGlmIChhcHByb3hSZXMuaXNaZXJvKCkpIGFwcHJveFJlcyA9IEludGVnZXIuT05FO1xuXG4gICAgICAgIHJlcyA9IHJlcy5hZGQoYXBwcm94UmVzKTtcbiAgICAgICAgcmVtID0gcmVtLnN1YnRyYWN0KGFwcHJveFJlbSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIG1vZHVsbyB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBSZW1haW5kZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtb2R1bG8nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtb2R1bG8oZGl2aXNvcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihkaXZpc29yKSkgZGl2aXNvciA9IEludGVnZXIuZnJvbVZhbHVlKGRpdmlzb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3QodGhpcy5kaXYoZGl2aXNvcikubXVsdGlwbHkoZGl2aXNvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgTk9UIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm90JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm90KCkge1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMofnRoaXMubG93LCB+dGhpcy5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIEFORCBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2FuZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFuZChvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgJiBvdGhlci5sb3csIHRoaXMuaGlnaCAmIG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9yKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyB8IG90aGVyLmxvdywgdGhpcy5oaWdoIHwgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBYT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgZ2l2ZW4gb25lLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd4b3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IF4gb3RoZXIubG93LCB0aGlzLmhpZ2ggXiBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzaGlmdExlZnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdExlZnQobnVtQml0cykge1xuICAgICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKSBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMCkgcmV0dXJuIHRoaXM7ZWxzZSBpZiAobnVtQml0cyA8IDMyKSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA8PCBudW1CaXRzLCB0aGlzLmhpZ2ggPDwgbnVtQml0cyB8IHRoaXMubG93ID4+PiAzMiAtIG51bUJpdHMpO2Vsc2UgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoMCwgdGhpcy5sb3cgPDwgbnVtQml0cyAtIDMyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgYXJpdGhtZXRpY2FsbHkgc2hpZnRlZCB0byB0aGUgcmlnaHQgYnkgdGhlIGdpdmVuIGFtb3VudC5cbiAgICAgKiBAcGFyYW0ge251bWJlcnwhSW50ZWdlcn0gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU2hpZnRlZCBJbnRlZ2VyXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc2hpZnRSaWdodCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0UmlnaHQobnVtQml0cykge1xuICAgICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKSBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMCkgcmV0dXJuIHRoaXM7ZWxzZSBpZiAobnVtQml0cyA8IDMyKSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA+Pj4gbnVtQml0cyB8IHRoaXMuaGlnaCA8PCAzMiAtIG51bUJpdHMsIHRoaXMuaGlnaCA+PiBudW1CaXRzKTtlbHNlIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMuaGlnaCA+PiBudW1CaXRzIC0gMzIsIHRoaXMuaGlnaCA+PSAwID8gMCA6IC0xKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG5cbkludGVnZXIuX19pc0ludGVnZXJfXztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEludGVnZXIucHJvdG90eXBlLCBcIl9faXNJbnRlZ2VyX19cIiwge1xuICB2YWx1ZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGNvbmZpZ3VyYWJsZTogZmFsc2Vcbn0pO1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGEgSW50ZWdlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBvYmogT2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5pc0ludGVnZXIgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiAob2JqICYmIG9ialtcIl9faXNJbnRlZ2VyX19cIl0pID09PSB0cnVlO1xufTtcblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBvZiBzbWFsbCBpbnRlZ2VyIHZhbHVlcy5cbiAqIEB0eXBlIHshT2JqZWN0fVxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5UX0NBQ0hFID0ge307XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiAzMiBiaXQgaW50ZWdlciB2YWx1ZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSAzMiBiaXQgaW50ZWdlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUludCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgb2JqLCBjYWNoZWRPYmo7XG4gIHZhbHVlID0gdmFsdWUgfCAwO1xuICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOCkge1xuICAgIGNhY2hlZE9iaiA9IElOVF9DQUNIRVt2YWx1ZV07XG4gICAgaWYgKGNhY2hlZE9iaikgcmV0dXJuIGNhY2hlZE9iajtcbiAgfVxuICBvYmogPSBuZXcgSW50ZWdlcih2YWx1ZSwgdmFsdWUgPCAwID8gLTEgOiAwLCBmYWxzZSk7XG4gIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSBJTlRfQ0FDSEVbdmFsdWVdID0gb2JqO1xuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHZhbHVlLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgZmluaXRlIG51bWJlci4gT3RoZXJ3aXNlLCB6ZXJvIGlzIHJldHVybmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIG51bWJlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbU51bWJlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gIGlmICh2YWx1ZSA8PSAtVFdPX1BXUl82M19EQkwpIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgaWYgKHZhbHVlICsgMSA+PSBUV09fUFdSXzYzX0RCTCkgcmV0dXJuIEludGVnZXIuTUFYX1ZBTFVFO1xuICBpZiAodmFsdWUgPCAwKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCk7XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWx1ZSAlIFRXT19QV1JfMzJfREJMIHwgMCwgdmFsdWUgLyBUV09fUFdSXzMyX0RCTCB8IDApO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIDY0IGJpdCBpbnRlZ2VyIHRoYXQgY29tZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZ2l2ZW4gbG93IGFuZCBoaWdoIGJpdHMuIEVhY2ggaXNcbiAqICBhc3N1bWVkIHRvIHVzZSAzMiBiaXRzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbG93Qml0cyBUaGUgbG93IDMyIGJpdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoQml0cyBUaGUgaGlnaCAzMiBiaXRzXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tQml0cyA9IGZ1bmN0aW9uIChsb3dCaXRzLCBoaWdoQml0cykge1xuICByZXR1cm4gbmV3IEludGVnZXIobG93Qml0cywgaGlnaEJpdHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLCB3cml0dGVuIHVzaW5nIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEludGVnZXJcbiAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggVGhlIHJhZGl4IGluIHdoaWNoIHRoZSB0ZXh0IGlzIHdyaXR0ZW4gKDItMzYpLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzdHIsIHJhZGl4KSB7XG4gIGlmIChzdHIubGVuZ3RoID09PSAwKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnbnVtYmVyIGZvcm1hdCBlcnJvcjogZW1wdHkgc3RyaW5nJyk7XG4gIGlmIChzdHIgPT09IFwiTmFOXCIgfHwgc3RyID09PSBcIkluZmluaXR5XCIgfHwgc3RyID09PSBcIitJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCItSW5maW5pdHlcIikgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuXG4gIHZhciBwO1xuICBpZiAoKHAgPSBzdHIuaW5kZXhPZignLScpKSA+IDApIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciBcIi1cIiBjaGFyYWN0ZXI6ICcgKyBzdHIpO2Vsc2UgaWYgKHAgPT09IDApIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcoc3RyLnN1YnN0cmluZygxKSwgcmFkaXgpLm5lZ2F0ZSgpO1xuXG4gIC8vIERvIHNldmVyYWwgKDgpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXG4gIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDgpKTtcblxuICB2YXIgcmVzdWx0ID0gSW50ZWdlci5aRVJPO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkgKz0gOCkge1xuICAgIHZhciBzaXplID0gTWF0aC5taW4oOCwgc3RyLmxlbmd0aCAtIGkpO1xuICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcoaSwgaSArIHNpemUpLCByYWRpeCk7XG4gICAgaWYgKHNpemUgPCA4KSB7XG4gICAgICB2YXIgcG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIHNpemUpKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShwb3dlcikuYWRkKEludGVnZXIuZnJvbU51bWJlcih2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocmFkaXhUb1Bvd2VyKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICBpZiAodmFsIC8qIGlzIGNvbXBhdGlibGUgKi8gaW5zdGFuY2VvZiBJbnRlZ2VyKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIodmFsKTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHZhbCk7XG4gIC8vIFRocm93cyBmb3Igbm9uLW9iamVjdHMsIGNvbnZlcnRzIG5vbi1pbnN0YW5jZW9mIEludGVnZXI6XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWwubG93LCB2YWwuaGlnaCk7XG59O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMTZfREJMID0gMSA8PCAxNjtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzI0X0RCTCA9IDEgPDwgMjQ7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8zMl9EQkwgPSBUV09fUFdSXzE2X0RCTCAqIFRXT19QV1JfMTZfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjRfREJMID0gVFdPX1BXUl8zMl9EQkwgKiBUV09fUFdSXzMyX0RCTDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzYzX0RCTCA9IFRXT19QV1JfNjRfREJMIC8gMjtcblxuLyoqXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjQgPSBJbnRlZ2VyLmZyb21JbnQoVFdPX1BXUl8yNF9EQkwpO1xuXG4vKipcbiAqIFNpZ25lZCB6ZXJvLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLlpFUk8gPSBJbnRlZ2VyLmZyb21JbnQoMCk7XG5cbi8qKlxuICogU2lnbmVkIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5PTkUgPSBJbnRlZ2VyLmZyb21JbnQoMSk7XG5cbi8qKlxuICogU2lnbmVkIG5lZ2F0aXZlIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5ORUdfT05FID0gSW50ZWdlci5mcm9tSW50KC0xKTtcblxuLyoqXG4gKiBNYXhpbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NQVhfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4RkZGRkZGRkYgfCAwLCAweDdGRkZGRkZGIHwgMCwgZmFsc2UpO1xuXG4vKipcbiAqIE1pbmltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1JTl9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMCwgMHg4MDAwMDAwMCB8IDAsIGZhbHNlKTtcblxuLyoqXG4gKiBDYXN0IHZhbHVlIHRvIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB1c2UuXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSAtIEFuIG9iamVjdCBvZiB0eXBlIEludGVnZXIuXG4gKi9cbnZhciBpbnQgPSBJbnRlZ2VyLmZyb21WYWx1ZTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhcmlhYmxlIGlzIG9mIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJhaWJsZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IC0gSXMgaXQgb2YgdGhlIEludGVnZXIgdHlwZT9cbiAqL1xudmFyIGlzSW50ID0gSW50ZWdlci5pc0ludGVnZXI7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgSW50ZWdlcjogSW50ZWdlcixcbiAgaW50OiBpbnQsXG4gIGlzSW50OiBpc0ludFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNvbW1vbiBBUEkgZm9yIGRlYWxpbmcgd2l0aCBiaW5hcnkgZGF0YSB0aGF0XG4gICogd29ya3MgZm9yIGJvdGggYnJvd3NlcnMgKHZpYSBBcnJheUJ1ZmZlci9EYXRhVmlldykgYW5kIGZvciBOb2RlSlNcbiAgKih2aWEgQnVmZmVyIEFQSSkuXG4gICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIF9ub2RlID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcbi8qKlxuICAqIENvbW1vbiBiYXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgbW9zdCBidWZmZXIgbWV0aG9kcy5cbiAgKiBCdWZmZXJzIGFyZSBzdGF0ZWZ1bCAtIHRoZXkgdHJhY2sgYSBjdXJyZW50IFwicG9zaXRpb25cIiwgdGhpcyBoZWxwcyBncmVhdGx5XG4gICogd2hlbiByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20gdGhlbSBpbmNyZW1lbnRhbGx5LiBZb3UgY2FuIGFsc28gaWdub3JlIHRoZVxuICAqIHN0YXRlZnVsIHJlYWQvd3JpdGUgbWV0aG9kcy5cbiAgKiByZWFkWFhYIGFuZCB3cml0ZVhYWC1tZXRob2RzIG1vdmUgdGhlIGlubmVyIHBvc2l0aW9uIG9mIHRoZSBidWZmZXIuXG4gICogcHV0WFhYIGFuZCBnZXRYWFgtbWV0aG9kcyBkbyBub3QuXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5cbnZhciBCYXNlQnVmZmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGluc3RhbmNlIHdpdGggdGhlIGluamVjdGVkIHNpemUuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHNpemVcbiAgICovXG5cbiAgZnVuY3Rpb24gQmFzZUJ1ZmZlcihzaXplKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhc2VCdWZmZXIpO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgdGhpcy5sZW5ndGggPSBzaXplO1xuICAgIC8vIENhbGxpbmcgdGhlc2Ugb3V0IC0gdGhpcyBpcyB0aGUgcmVxdWlyZWRcbiAgICAvLyBtZXRob2RzIGEgc3ViY2xhc3MgbmVlZHMgdG8gaW1wbGVtZW50XG4gICAgdmFyIGdldFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0SW50OCA9IG51bGw7XG4gICAgdmFyIGdldEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBnZXRTbGljZSA9IG51bGw7XG4gICAgdmFyIHB1dEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBwdXRVSW50OCA9IG51bGw7XG4gICAgdmFyIHB1dEludDggPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhc2ljIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiB0aGF0IHNob3VsZCB3b3JrIGluIG1vc3QgYW55IG1vZGVybiBKUyBlbnYuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJhc2VCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldEludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDE2KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQxNihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQzMihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDMyKHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ2NChwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDU2IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgNDggfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA0MCB8IHRoaXMuZ2V0VUludDgocCArIDMpIDw8IDMyIHwgdGhpcy5nZXRVSW50OChwICsgNCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyA1KSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDYpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBzdGFydFxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRTbGljZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTbGljZShzdGFydCwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDE2KHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiA4KTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQzMihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gMjQpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDE2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQzMihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0VUludDgocCwgdmFsID4+IDI0ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ2NChwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gNDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDQyICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gMzYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCA+PiAzMCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNCwgdmFsID4+IDI0ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA1LCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDYsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA3LCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gb3RoZXJcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgb3RoZXIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBvdGhlci5yZW1haW5pbmcoKTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgIHRoaXMucHV0VUludDgocG9zaXRpb24gKyBpLCBvdGhlci5yZWFkVUludDgoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OCh0aGlzLl91cGRhdGVQb3MoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgodGhpcy5fdXBkYXRlUG9zKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFVJbnQzMigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQzMih0aGlzLl91cGRhdGVQb3MoNCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQzMigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50NjQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQzMih0aGlzLl91cGRhdGVQb3MoOCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkRmxvYXQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZsb2F0NjQodGhpcy5fdXBkYXRlUG9zKDgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVVJbnQ4KHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDgodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgodGhpcy5fdXBkYXRlUG9zKDEpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MTYodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDMyKHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlVUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlVUludDMyKHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50MzIodGhpcy5fdXBkYXRlUG9zKDQpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50NjQodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlRmxvYXQ2NCh2YWwpIHtcbiAgICAgIHRoaXMucHV0RmxvYXQ2NCh0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlQnl0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVCeXRlcyh2YWwpIHtcbiAgICAgIHRoaXMucHV0Qnl0ZXModGhpcy5fdXBkYXRlUG9zKHZhbC5yZW1haW5pbmcoKSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgc2xpY2Ugb2YgdGhpcyBidWZmZXIuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNvcHkgYW55IGRhdGEsXG4gICAgICogYnV0IHNpbXBseSBwcm92aWRlcyBhIHNsaWNlIHZpZXcgb2YgdGhpcyBidWZmZXJcbiAgICAgKiBAcGFyYW0gbGVuZ3RoXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRTbGljZShsZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNsaWNlKHRoaXMuX3VwZGF0ZVBvcyhsZW5ndGgpLCBsZW5ndGgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfdXBkYXRlUG9zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVQb3MobGVuZ3RoKSB7XG4gICAgICB2YXIgcCA9IHRoaXMucG9zaXRpb247XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCByZW1hbmluZ1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlbWFpbmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1haW5pbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSB0aGlzLnBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyByZW1hbmluZ1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImhhc1JlbWFpbmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNSZW1haW5pbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmcoKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXQgcG9zaXRpb24gc3RhdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyIGFuZCBpdCdzIHN0YXRlLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgXCIoIHBvc2l0aW9uPVwiICsgdGhpcy5wb3NpdGlvbiArIFwiIClcXG4gIFwiICsgdGhpcy50b0hleCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwidG9IZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9IZXgoKSB7XG4gICAgICAvLyBUT0RPIHNvbWV0aGluZyBsaWtlIFN0cmluZ0J1aWxkZXI/XG4gICAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgaGV4Qnl0ZSA9IHRoaXMuZ2V0VUludDgoaSkudG9TdHJpbmcoMTYpO1xuICAgICAgICBpZiAoaGV4Qnl0ZS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIGhleEJ5dGUgPSBcIjBcIiArIGhleEJ5dGU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9IGhleEJ5dGUgKyBcIiBcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJhc2VCdWZmZXI7XG59KSgpO1xuXG52YXIgSGVhcEJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXIpIHtcbiAgX2luaGVyaXRzKEhlYXBCdWZmZXIsIF9CYXNlQnVmZmVyKTtcblxuICBmdW5jdGlvbiBIZWFwQnVmZmVyKGFyZykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIZWFwQnVmZmVyKTtcblxuICAgIHZhciBidWZmZXIgPSBhcmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA/IGFyZyA6IG5ldyBBcnJheUJ1ZmZlcihhcmcpO1xuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKEhlYXBCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICB0aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gICAgdGhpcy5fdmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSB2aWV3IGFzIHNsaWNlIG9mIGFub3RoZXIgYnVmZmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEhlYXBCdWZmZXIsIFt7XG4gICAga2V5OiBcInB1dFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0VWludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRVaW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0RmxvYXQ2NChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEZsb2F0NjQocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIuc2xpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFwQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNvbWUgcGxhdGZvcm1zIChlZy4gcGhhbnRvbWpzKSBkb24ndCBzdXBwb3J0IHNsaWNlLCBzbyBmYWxsIGJhY2sgdG8gYSBjb3B5XG4gICAgICAgIC8vIFdlIGRvIHRoaXMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgU2xpY2VCdWZmZXIsIGJlY2F1c2Ugc2xpY2VCdWZmZXIgY2Fubm90XG4gICAgICAgIC8vIGJlIHBhc3NlZCB0byBuYXRpdmUgbmV0d29yayB3cml0ZSBvcHMgZXRjIC0gd2UgbmVlZCBBcnJheUJ1ZmZlciBmb3IgdGhhdFxuICAgICAgICB2YXIgY29weSA9IG5ldyBIZWFwQnVmZmVyKGxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb3B5LnB1dFVJbnQ4KGksIHRoaXMuZ2V0VUludDgoaSArIHN0YXJ0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmljIHRvIEhlYXBCdWZmZXIsIHRoaXMgZ2V0cyBhIERhdGFWaWV3IGZyb20gdGhlXG4gICAgICogY3VycmVudCBwb3NpdGlvbiBhbmQgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguIFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRWaWV3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRWaWV3KGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIsIHRoaXMuX3VwZGF0ZVBvcyhsZW5ndGgpLCBsZW5ndGgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBIZWFwQnVmZmVyO1xufSkoQmFzZUJ1ZmZlcik7XG5cbnZhciBTbGljZUJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXIyKSB7XG4gIF9pbmhlcml0cyhTbGljZUJ1ZmZlciwgX0Jhc2VCdWZmZXIyKTtcblxuICBmdW5jdGlvbiBTbGljZUJ1ZmZlcihzdGFydCwgbGVuZ3RoLCBpbm5lcikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTbGljZUJ1ZmZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihTbGljZUJ1ZmZlci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgbGVuZ3RoKTtcbiAgICB0aGlzLl9zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuX2lubmVyID0gaW5uZXI7XG4gIH1cblxuICAvKipcbiAgICogQnVmZmVyIHRoYXQgY29tYmluZXMgbXVsdGlwbGUgYnVmZmVycywgZXhwb3NpbmcgdGhlbSBhcyBvbmUgc2luZ2xlIGJ1ZmZlci5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTbGljZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0VUludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRVSW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEZsb2F0NjQodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0SW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0RmxvYXQ2NCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2xpY2VCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIENvbWJpbmVkQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjMpIHtcbiAgX2luaGVyaXRzKENvbWJpbmVkQnVmZmVyLCBfQmFzZUJ1ZmZlcjMpO1xuXG4gIGZ1bmN0aW9uIENvbWJpbmVkQnVmZmVyKGJ1ZmZlcnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29tYmluZWRCdWZmZXIpO1xuXG4gICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gYnVmZmVyc1tpXS5sZW5ndGg7XG4gICAgfVxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENvbWJpbmVkQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBsZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlcnMgPSBidWZmZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1ZmZlciB1c2VkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudFxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENvbWJpbmVkQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0VUludDgocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICAvLyBBdCBzb21lIHBvaW50LCBhIG1vcmUgZWZmaWNpZW50IGltcGwuIEZvciBub3csIHdlIGNvcHkgdGhlIDggYnl0ZXNcbiAgICAgIC8vIHdlIHdhbnQgdG8gcmVhZCBhbmQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBpbXBsIG9mIElFRUUgNzU0LlxuICAgICAgdmFyIGIgPSBhbGxvYyg4KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGIucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChwb3NpdGlvbiArIGkpKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gYi5nZXRGbG9hdDY0KDApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDb21iaW5lZEJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgTm9kZUJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXI0KSB7XG4gIF9pbmhlcml0cyhOb2RlQnVmZmVyLCBfQmFzZUJ1ZmZlcjQpO1xuXG4gIGZ1bmN0aW9uIE5vZGVCdWZmZXIoYXJnKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5vZGVCdWZmZXIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIF9ub2RlLkJ1ZmZlciA/IGFyZyA6IG5ldyBfbm9kZS5CdWZmZXIoYXJnKTtcbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihOb2RlQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBidWZmZXIubGVuZ3RoKTtcbiAgICB0aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gIH1cblxuICAvLyBVc2UgSGVhcEJ1ZmZlciBieSBkZWZhdWx0LCB1bmxlc3MgQnVmZmVyIEFQSSBpcyBhdmFpbGFibGUsIHNlZSBiZWxvd1xuXG4gIF9jcmVhdGVDbGFzcyhOb2RlQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkVUludDgocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZEludDgocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZERvdWJsZUJFKHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCwgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlRG91YmxlQkUodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEJ5dGVzKHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOb2RlQnVmZmVyKSB7XG4gICAgICAgIHZhciBieXRlc1RvQ29weSA9IE1hdGgubWluKHZhbC5sZW5ndGggLSB2YWwucG9zaXRpb24sIHRoaXMubGVuZ3RoIC0gcG9zaXRpb24pO1xuICAgICAgICB2YWwuX2J1ZmZlci5jb3B5KHRoaXMuX2J1ZmZlciwgcG9zaXRpb24sIHZhbC5wb3NpdGlvbiwgdmFsLnBvc2l0aW9uICsgYnl0ZXNUb0NvcHkpO1xuICAgICAgICB2YWwucG9zaXRpb24gKz0gYnl0ZXNUb0NvcHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkNvcHlpbmcgbm90IHlldCBpbXBsZW1lbnRlZC5cIik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgTm9kZUJ1ZmZlcih0aGlzLl9idWZmZXIuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGVCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIF9EZWZhdWx0QnVmZmVyID0gSGVhcEJ1ZmZlcjtcbnRyeSB7XG4gIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgd2UncmUgbm90IHJ1bm5pbmcgb24gTm9kZUpTIG9yIGVxdWl2YWxlbnRcbiAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICBfRGVmYXVsdEJ1ZmZlciA9IE5vZGVCdWZmZXI7XG59IGNhdGNoIChlKSB7fVxuXG4vKipcbiAqIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciB1c2luZyB3aGF0ZXZlciBtZWNoYW5pc20gaXMgbW9zdCBzZW5zaWJsZSBmb3IgdGhlXG4gKiBjdXJyZW50IHBsYXRmb3JtXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICogQHJldHVybiBuZXcgYnVmZmVyXG4gKi9cbmZ1bmN0aW9uIGFsbG9jKHNpemUpIHtcbiAgcmV0dXJuIG5ldyBfRGVmYXVsdEJ1ZmZlcihzaXplKTtcbn1cblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIEJhc2VCdWZmZXI6IEJhc2VCdWZmZXIsXG4gIEhlYXBCdWZmZXI6IEhlYXBCdWZmZXIsXG4gIFNsaWNlQnVmZmVyOiBTbGljZUJ1ZmZlcixcbiAgQ29tYmluZWRCdWZmZXI6IENvbWJpbmVkQnVmZmVyLFxuICBOb2RlQnVmZmVyOiBOb2RlQnVmZmVyLFxuICBhbGxvYzogYWxsb2Ncbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBvYnNlcnZlciA9IHtcbiAgaW5zdGFuY2U6IG51bGwsXG4gIHVwZGF0ZUluc3RhbmNlOiBmdW5jdGlvbiB1cGRhdGVJbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIG9ic2VydmVyLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gIH1cbn07XG5cbnZhciBEdW1teUNoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEdW1teUNoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEdW1teUNoYW5uZWwpO1xuXG4gICAgdGhpcy53cml0dGVuID0gW107XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRHVtbXlDaGFubmVsLCBbe1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWYpIHtcbiAgICAgIHRoaXMud3JpdHRlbi5wdXNoKGJ1Zik7XG4gICAgICBvYnNlcnZlci51cGRhdGVJbnN0YW5jZSh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9IZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9IZXgoKSB7XG4gICAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy53cml0dGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dCArPSB0aGlzLndyaXR0ZW5baV0udG9IZXgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvQnVmZmVyKCkge1xuICAgICAgcmV0dXJuIG5ldyBfYnVmLkNvbWJpbmVkQnVmZmVyKHRoaXMud3JpdHRlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIER1bW15Q2hhbm5lbDtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjaGFubmVsOiBEdW1teUNoYW5uZWwsXG4gIG9ic2VydmVyOiBvYnNlcnZlclxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbnZhciBfbmV0ID0gcmVxdWlyZSgnbmV0Jyk7XG5cbnZhciBfbmV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX25ldCk7XG5cbnZhciBfdGxzID0gcmVxdWlyZSgndGxzJyk7XG5cbnZhciBfdGxzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Rscyk7XG5cbnZhciBfZnMgPSByZXF1aXJlKCdmcycpO1xuXG52YXIgX2ZzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZzKTtcblxudmFyIF9wYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG52YXIgX3BhdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGF0aCk7XG5cbnZhciBfb3MgPSByZXF1aXJlKCdvcycpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBfQ09OTkVDVElPTl9JREdFTiA9IDA7XG5cbmZ1bmN0aW9uIHVzZXJIb21lKCkge1xuICAvLyBGb3Igc29tZSByZWFzb24sIEJyb3dzZXJpZnkgY2hva2VzIG9uIHNoaW1taW5nIGBwcm9jZXNzYC4gVGhpcyBjb2RlXG4gIC8vIHdpbGwgbmV2ZXIgZ2V0IGV4ZWN1dGVkIG9uIHRoZSBicm93c2VyIGFueXdheSwgdG8ganVzdCBoYWNrIGFyb3VuZCBpdFxuICB2YXIgZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsgPSByZXF1aXJlO1xuICB2YXIgcHJvY2VzcyA9IGdldE91dE9mSGVyZUJyb3dzZXJpZnlZb3VyZURydW5rKCdwcm9jZXNzJyk7XG5cbiAgcmV0dXJuIHByb2Nlc3MuZW52W3Byb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdVU0VSUFJPRklMRScgOiAnSE9NRSddO1xufVxuXG5mdW5jdGlvbiBta0Z1bGxQYXRoKHBhdGhUb0NyZWF0ZSkge1xuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5ta2RpclN5bmMocGF0aFRvQ3JlYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvLyBDcmVhdGUgcGFyZW50IGRpclxuICAgICAgbWtGdWxsUGF0aChfcGF0aDJbJ2RlZmF1bHQnXS5kaXJuYW1lKHBhdGhUb0NyZWF0ZSkpO1xuICAgICAgLy8gQW5kIG5vdyB0cnkgYWdhaW5cbiAgICAgIG1rRnVsbFBhdGgocGF0aFRvQ3JlYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBjYikge1xuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjYihudWxsKTtcbiAgfVxuICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgcmVxdWlyZSgncmVhZGxpbmUnKS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBfZnMyWydkZWZhdWx0J10uY3JlYXRlUmVhZFN0cmVhbShrbm93bkhvc3RzUGF0aClcbiAgfSkub24oJ2xpbmUnLCBmdW5jdGlvbiAobGluZSkge1xuICAgIGlmICghZm91bmQgJiYgbGluZS5zdGFydHNXaXRoKHNlcnZlcklkKSkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgY2IobGluZS5zcGxpdChcIiBcIilbMV0pO1xuICAgIH1cbiAgfSkub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZyA9IHt9O1xuZnVuY3Rpb24gc3RvcmVGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZpbmdlcnByaW50LCBjYikge1xuICAvLyB3ZSBjaGVjayBpZiB0aGUgc2VydmVySWQgaGFzIGJlZW4gYXBwZW5kZWRcbiAgaWYgKCEhX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdKSB7XG4gICAgLy8gaWYgaXQgaGFzLCB3ZSBpZ25vcmUgaXRcbiAgICByZXR1cm4gY2IobnVsbCk7XG4gIH1cblxuICAvLyB3ZSBtYWtlIHRoZSBsaW5lIGFzIGFwcGVuZGVkXG4gIC8vICggMSBpcyBtb3JlIGVmZmljaWVudCB0byBzdG9yZSB0aGFuIHRydWUgYmVjYXVzZSB0cnVlIGlzIGFuIG9kZGJhbGwgKVxuICBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF0gPSAxO1xuXG4gIC8vIElmIGZpbGUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGZ1bGwgcGF0aCB0byBpdFxuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG1rRnVsbFBhdGgoX3BhdGgyWydkZWZhdWx0J10uZGlybmFtZShrbm93bkhvc3RzUGF0aCkpO1xuICB9XG5cbiAgX2ZzMlsnZGVmYXVsdCddLmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIF9vcy5FT0wsIFwidXRmOFwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgZGVsZXRlIF9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2IoZXJyKTtcbiAgfSk7XG59XG5cbnZhciBUcnVzdFN0cmF0ZWd5ID0ge1xuICBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgaWYgKCFvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMgfHwgb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJZb3UgYXJlIHVzaW5nIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMgYXMgdGhlIG1ldGhvZCBcIiArIFwidG8gdmVyaWZ5IHRydXN0IGZvciBlbmNyeXB0ZWQgIGNvbm5lY3Rpb25zLCBidXQgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgXCIgKyBcInRydXN0ZWRDZXJ0aWZpY2F0ZXMuIFlvdSAgbXVzdCBzcGVjaWZ5IHRoZSBwYXRoIHRvIGF0IGxlYXN0IG9uZSB0cnVzdGVkIFwiICsgXCJYLjUwOSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyB0byB3b3JrLiBUd28gb3RoZXIgYWx0ZXJuYXRpdmVzIGlzIHRvIHVzZSBcIiArIFwiVFJVU1RfT05fRklSU1RfVVNFIG9yIHRvIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIGVuY3J5cHRlZD1mYWxzZSBcIiArIFwiaW4geW91ciBkcml2ZXIgY29uZmlndXJhdGlvbi5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgY2E6IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5tYXAoX2ZzMlsnZGVmYXVsdCddLnJlYWRGaWxlU3luYyksXG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IGNoZWNrIGZvciB0aGlzIGluIHRoZSBjb25uZWN0IGNhbGxiYWNrLCB0byBnaXZlXG4gICAgICAvLyBhIG1vcmUgaGVscGZ1bCBlcnJvciB0byB0aGUgdXNlclxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgc29ja2V0ID0gX3RsczJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNvY2tldC5hdXRob3JpemVkKSB7XG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4gSWYgeW91IHRydXN0IHRoZSBkYXRhYmFzZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8sIGFkZFwiICsgXCIgdGhlIHNpZ25pbmcgY2VydGlmaWNhdGUsIG9yIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUsIHRvIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlcyB0cnVzdGVkIGJ5IHRoaXMgZHJpdmVyXCIgKyBcIiB1c2luZyBgbmVvNGoudjEuZHJpdmVyKC4uLCB7IHRydXN0ZWRDZXJ0aWZpY2F0ZXM6WydwYXRoL3RvL2NlcnRpZmljYXRlLmNydCddfSkuIFRoaXMgXCIgKyBcIiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgdG8gcHJvdGVjdCBhZ2FpbnN0IG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgKyBcIiBOZW80aiBvdXQgYW5kIGFyZSBub3QgY29uY2VybmVkIGFib3V0IGVuY3J5cHRpb24sIHNpbXBseSBkaXNhYmxlIGl0IHVzaW5nIGBlbmNyeXB0ZWQ9ZmFsc2VgIGluIHRoZSBkcml2ZXJcIiArIFwiIG9wdGlvbnMuXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH0sXG4gIFRSVVNUX09OX0ZJUlNUX1VTRTogZnVuY3Rpb24gVFJVU1RfT05fRklSU1RfVVNFKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IHZlcmlmeSB0aGUgY2VydGlmaWNhdGUgYWdhaW5zdCBrbm93bl9ob3N0c1xuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgc29ja2V0ID0gX3RsczJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2VydmVyQ2VydCA9IHNvY2tldC5nZXRQZWVyQ2VydGlmaWNhdGUoIC8qcmF3PSovdHJ1ZSk7XG5cbiAgICAgIGlmICghc2VydmVyQ2VydC5yYXcpIHtcbiAgICAgICAgLy8gSWYgYHJhd2AgaXMgbm90IGF2YWlsYWJsZSwgd2UncmUgb24gYW4gb2xkIHZlcnNpb24gb2YgTm9kZUpTLCBhbmRcbiAgICAgICAgLy8gdGhlIHJhdyBjZXJ0IGNhbm5vdCBiZSBhY2Nlc3NlZCAob3IsIGF0IGxlYXN0IEkgY291bGRuJ3QgZmluZCBhIHdheSB0bylcbiAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSBjYW4ndCBnZW5lcmF0ZSBhIFNIQTUxMiBmaW5nZXJwcmludCwgbWVhbmluZyB3ZSBjYW4ndFxuICAgICAgICAvLyBkbyBUT0ZVLCBhbmQgdGhlIHNhZmUgYXBwcm9hY2ggaXMgdG8gZmFpbC5cbiAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgTm9kZUpTIHRoYXQgZG9lcyBub3QgXCIgKyBcInN1cHBvcnQgdHJ1c3Qtb24tZmlyc3QgdXNlIGVuY3J5cHRpb24uIFlvdSBjYW4gZWl0aGVyIHVwZ3JhZGUgTm9kZUpTIHRvIFwiICsgXCJhIG5ld2VyIHZlcnNpb24sIHVzZSBgdHJ1c3Q6VFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU2AgaW4geW91ciBkcml2ZXIgXCIgKyBcImNvbmZpZyBpbnN0ZWFkLCBvciBkaXNhYmxlIGVuY3J5cHRpb24gdXNpbmcgYGVuY3J5cHRlZDpmYWxzZWAuXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VydmVyRmluZ2VycHJpbnQgPSByZXF1aXJlKCdjcnlwdG8nKS5jcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoc2VydmVyQ2VydC5yYXcpLmRpZ2VzdChcImhleFwiKTtcbiAgICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IG9wdHMua25vd25Ib3N0cyB8fCBfcGF0aDJbJ2RlZmF1bHQnXS5qb2luKHVzZXJIb21lKCksIFwiLm5lbzRqXCIsIFwia25vd25faG9zdHNcIik7XG4gICAgICB2YXIgc2VydmVySWQgPSBvcHRzLmhvc3QgKyBcIjpcIiArIG9wdHMucG9ydDtcblxuICAgICAgbG9hZEZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgZnVuY3Rpb24gKGtub3duRmluZ2VycHJpbnQpIHtcbiAgICAgICAgaWYgKGtub3duRmluZ2VycHJpbnQgPT09IHNlcnZlckZpbmdlcnByaW50KSB7XG4gICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa25vd25GaW5nZXJwcmludCA9PSBudWxsKSB7XG4gICAgICAgICAgc3RvcmVGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIHNlcnZlckZpbmdlcnByaW50LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvbkZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvblN1Y2Nlc3MoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBhbmQgbm8gbG9uZ2VyIFwiICsgXCJtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIFwiICsgc2VydmVySWQgKyBcIiBpbiBgXCIgKyBrbm93bkhvc3RzUGF0aCArIFwiYC4gQXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLCB0aGlzIGRyaXZlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IHRydXN0IHRoZSBuZXcgXCIgKyBcImNlcnRpZmljYXRlLCBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIGFsbG93IGFuIGF0dGFja2VyIHRvIHByZXRlbmQgdG8gYmUgdGhlIE5lbzRqIFwiICsgXCJpbnN0YW5jZSB3ZSB3YW50IHRvIGNvbm5lY3QgdG8uIFRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBieSB0aGUgc2VydmVyIGxvb2tzIGxpa2U6IFwiICsgc2VydmVyQ2VydCArIFwiLiBJZiB5b3UgdHJ1c3QgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHZhbGlkLCBzaW1wbHkgcmVtb3ZlIHRoZSBsaW5lIFwiICsgXCJzdGFydGluZyB3aXRoIFwiICsgc2VydmVySWQgKyBcIiBpbiBgXCIgKyBrbm93bkhvc3RzUGF0aCArIFwiYCwgYW5kIHRoZSBkcml2ZXIgd2lsbCBcIiArIFwidXBkYXRlIHRoZSBmaWxlIHdpdGggdGhlIG5ldyBjZXJ0aWZpY2F0ZS4gWW91IGNhbiBjb25maWd1cmUgd2hpY2ggZmlsZSB0aGUgZHJpdmVyIFwiICsgXCJzaG91bGQgdXNlIHRvIHN0b3JlIHRoaXMgaW5mb3JtYXRpb24gYnkgc2V0dGluZyBga25vd25Ib3N0c2AgdG8gYW5vdGhlciBwYXRoIGluIFwiICsgXCJ5b3VyIGRyaXZlciBjb25maWd1cmF0aW9uIC0gYW5kIHlvdSBjYW4gZGlzYWJsZSBlbmNyeXB0aW9uIHRoZXJlIGFzIHdlbGwgdXNpbmcgXCIgKyBcImBlbmNyeXB0ZWQ6ZmFsc2VgLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbm5lY3Qob3B0cywgb25TdWNjZXNzKSB7XG4gIHZhciBvbkZhaWx1cmUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gOiBhcmd1bWVudHNbMl07XG5cbiAgaWYgKG9wdHMuZW5jcnlwdGVkID09PSBmYWxzZSkge1xuICAgIHZhciBjb25uID0gX25ldDJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCBvblN1Y2Nlc3MpO1xuICAgIGNvbm4ub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gY29ubjtcbiAgfSBlbHNlIGlmIChUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKSB7XG4gICAgcmV0dXJuIFRydXN0U3RyYXRlZ3lbb3B0cy50cnVzdF0ob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuICB9IGVsc2Uge1xuICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gdHJ1c3Qgc3RyYXRlZ3k6IFwiICsgb3B0cy50cnVzdCArIFwiLiBQbGVhc2UgdXNlIGVpdGhlciBcIiArIFwidHJ1c3Q6J1RSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMnIG9yIHRydXN0OidUUlVTVF9PTl9GSVJTVF9VU0UnIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWd1cmF0aW9uLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIFwiICsgXCJgZW5jcnlwdGVkOmZhbHNlYC4gVGhlcmUgaXMgbm8gbWVjaGFuaXNtIHRvIHVzZSBlbmNyeXB0aW9uIHdpdGhvdXQgdHJ1c3QgdmVyaWZpY2F0aW9uLCBcIiArIFwiYmVjYXVzZSB0aGlzIGluY3VycyB0aGUgb3ZlcmhlYWQgb2YgZW5jcnlwdGlvbiB3aXRob3V0IGltcHJvdmluZyBzZWN1cml0eS4gSWYgXCIgKyBcInRoZSBkcml2ZXIgZG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlIHBlZXIgaXQgaXMgY29ubmVjdGVkIHRvIGlzIHJlYWxseSBOZW80aiwgaXQgXCIgKyBcImlzIHZlcnkgZWFzeSBmb3IgYW4gYXR0YWNrZXIgdG8gYnlwYXNzIHRoZSBlbmNyeXB0aW9uIGJ5IHByZXRlbmRpbmcgdG8gYmUgTmVvNGouXCIpKTtcbiAgfVxufVxuXG4vKipcbiAqIEluIGEgTm9kZS5qcyBlbnZpcm9ubWVudCB0aGUgJ25ldCcgbW9kdWxlIGlzIHVzZWRcbiAqIGFzIHRyYW5zcG9ydC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBOb2RlQ2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG5cbiAgZnVuY3Rpb24gTm9kZUNoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlQ2hhbm5lbCk7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmlkID0gX0NPTk5FQ1RJT05fSURHRU4rKztcbiAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2Nvbm4gPSBjb25uZWN0KG9wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc2VsZi5fb3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2RhdGEnLCBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgIGlmIChzZWxmLm9ubWVzc2FnZSkge1xuICAgICAgICAgIHNlbGYub25tZXNzYWdlKG5ldyBfYnVmLk5vZGVCdWZmZXIoYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzZWxmLl9jb25uLm9uKCdlcnJvcicsIHNlbGYuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG5cbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTm9kZUNoYW5uZWwsIFt7XG4gICAga2V5OiAnX2hhbmRsZUNvbm5lY3Rpb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoZXJyKSB7XG4gICAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7Tm9kZUJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd3cml0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1ZmZlcikge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHF1ZXVlLCBwdXNoIHRoaXMgb24gdGhhdCBxdWV1ZS4gVGhpcyBtZWFuc1xuICAgICAgLy8gd2UgYXJlIG5vdCB5ZXQgY29ubmVjdGVkLCBzbyB3ZSBxdWV1ZSB0aGluZ3MgbG9jYWxseS5cbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmcucHVzaChidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmLk5vZGVCdWZmZXIpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coIFwiW0Nvbm4jXCIrdGhpcy5pZCtcIl0gU0VORDogXCIsIGJ1ZmZlci50b1N0cmluZygpICk7XG4gICAgICAgIHRoaXMuX2Nvbm4ud3JpdGUoYnVmZmVyLl9idWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byB3cml0ZTogXCIgKyBidWZmZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5fY29ubikge1xuICAgICAgICB0aGlzLl9jb25uLmVuZCgpO1xuICAgICAgICB0aGlzLl9jb25uLm9uKCdlbmQnLCBjYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOb2RlQ2hhbm5lbDtcbn0pKCk7XG5cbnZhciBfbm9kZUNoYW5uZWxNb2R1bGUgPSB7IGNoYW5uZWw6IE5vZGVDaGFubmVsLCBhdmFpbGFibGU6IHRydWUgfTtcblxudHJ5IHtcbiAgLy8gT25seSBkZWZpbmUgdGhpcyBtb2R1bGUgaWYgJ25ldCcgaXMgYXZhaWxhYmxlXG4gIHJlcXVpcmUucmVzb2x2ZShcIm5ldFwiKTtcbn0gY2F0Y2ggKGUpIHtcbiAgX25vZGVDaGFubmVsTW9kdWxlID0geyBhdmFpbGFibGU6IGZhbHNlIH07XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IF9ub2RlQ2hhbm5lbE1vZHVsZTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IFdlYlNvY2tldENoYW5uZWwgdG8gYmUgdXNlZCBpbiB3ZWIgYnJvd3NlcnMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgV2ViU29ja2V0Q2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG5cbiAgZnVuY3Rpb24gV2ViU29ja2V0Q2hhbm5lbChvcHRzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYlNvY2tldENoYW5uZWwpO1xuXG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcblxuICAgIHZhciBzY2hlbWUgPSBcIndzXCI7XG4gICAgaWYgKG9wdHMuZW5jcnlwdGVkKSB7XG4gICAgICBpZiAoIW9wdHMudHJ1c3QgfHwgb3B0cy50cnVzdCA9PT0gXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIpIHtcbiAgICAgICAgc2NoZW1lID0gXCJ3c3NcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoXCJUaGUgYnJvd3NlciB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMgb25lIHRydXN0IFwiICsgXCJzdHJhdGVneSwgJ1RSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMnLiBcIiArIG9wdHMudHJ1c3QgKyBcIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgXCIgKyBcImVpdGhlciB1c2UgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyBvciBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpmYWxzZWAgaW4gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cmwgPSBzY2hlbWUgKyBcIjovL1wiICsgb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHRoaXMuX3VybCk7XG4gICAgdGhpcy5fd3MuYmluYXJ5VHlwZSA9IFwiYXJyYXlidWZmZXJcIjtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAvL0FsbCBjb25uZWN0aW9uIGVycm9ycyBhcmUgbm90IHNlbnQgdG8gdGhlIGVycm9yIGhhbmRsZXJcbiAgICAvL3dlIG11c3QgYWxzbyBjaGVjayBmb3IgZGlydHkgY2xvc2UgY2FsbHNcbiAgICB0aGlzLl93cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghZS53YXNDbGVhbikge1xuICAgICAgICBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIGIgPSBuZXcgX2J1Zi5IZWFwQnVmZmVyKGV2ZW50LmRhdGEpO1xuICAgICAgICBzZWxmLm9ubWVzc2FnZShiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fd3Mub25lcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJTb2NrZXRDaGFubmVsLCBbe1xuICAgIGtleTogXCJfaGFuZGxlQ29ubmVjdGlvbkVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKSB7XG4gICAgICAvLyBvbmVycm9yIHRyaWdnZXJzIG9uIHdlYnNvY2tldCBjbG9zZSBhcyB3ZWxsLi4gZG9uJ3QgZ2V0IG1lIHN0YXJ0ZWQuXG4gICAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1Nzc5ODMxL2hvdy10by1jYXRjaC13ZWJzb2NrZXQtY29ubmVjdGlvbi10by13cy14eHhubi1mYWlsZWQtY29ubmVjdGlvbi1jbG9zZWQtYmVcbiAgICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWx1cmUuIER1ZSB0byBzZWN1cml0eSBcIiArIFwiY29uc3RyYWludHMgaW4geW91ciB3ZWIgYnJvd3NlciwgdGhlIHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUgaXMgbm90IGF2YWlsYWJsZSBcIiArIFwidG8gdGhpcyBOZW80aiBEcml2ZXIuIFBsZWFzZSB1c2UgeW91ciBicm93c2VycyBkZXZlbG9wbWVudCBjb25zb2xlIHRvIGRldGVybWluZSBcIiArIFwidGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGZhaWx1cmUuIENvbW1vbiByZWFzb25zIGluY2x1ZGUgdGhlIGRhdGFiYXNlIGJlaW5nIFwiICsgXCJ1bmF2YWlsYWJsZSwgdXNpbmcgdGhlIHdyb25nIGNvbm5lY3Rpb24gVVJMIG9yIHRlbXBvcmFyeSBuZXR3b3JrIHByb2JsZW1zLiBcIiArIFwiSWYgeW91IGhhdmUgZW5hYmxlZCBlbmNyeXB0aW9uLCBlbnN1cmUgeW91ciBicm93c2VyIGlzIGNvbmZpZ3VyZWQgdG8gdHJ1c3QgdGhlIFwiICsgXCJjZXJ0aWZpY2F0ZSBOZW80aiBpcyBjb25maWd1cmVkIHRvIHVzZS4gV2ViU29ja2V0IGByZWFkeVN0YXRlYCBpczogXCIgKyB0aGlzLl93cy5yZWFkeVN0YXRlKTtcbiAgICAgICAgaWYgKHRoaXMub25lcnJvcikge1xuICAgICAgICAgIHRoaXMub25lcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0aGUgcGFzc2VkIGluIGJ1ZmZlciB0byBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtIZWFwQnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgdG8gd3JpdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5IZWFwQnVmZmVyKSB7XG4gICAgICAgIHRoaXMuX3dzLnNlbmQoYnVmZmVyLl9idWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBzZW5kIGJ1ZmZlcjogXCIgKyBidWZmZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdmFyIGNiID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gICAgICB0aGlzLl93cy5vbmNsb3NlID0gY2I7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw7XG59KSgpO1xuXG52YXIgYXZhaWxhYmxlID0gdHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgX3dlYnNvY2tldENoYW5uZWxNb2R1bGUgPSB7IGNoYW5uZWw6IFdlYlNvY2tldENoYW5uZWwsIGF2YWlsYWJsZTogYXZhaWxhYmxlIH07XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX3dlYnNvY2tldENoYW5uZWxNb2R1bGU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIF9idWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYnVmKTtcblxudmFyIF9DSFVOS19IRUFERVJfU0laRSA9IDIsXG4gICAgX01FU1NBR0VfQk9VTkRBUlkgPSAweDAwLFxuICAgIF9ERUZBVUxUX0JVRkZFUl9TSVpFID0gMTQwMDsgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjEzNzM0L21heGltdW0tcGFja2V0LXNpemUtZm9yLWEtdGNwLWNvbm5lY3Rpb25cblxuLyoqXG4gKiBMb29rcyBsaWtlIGEgd3JpdGFibGUgYnVmZmVyLCBjaHVua3Mgb3V0cHV0IHRyYW5zcGFyZW50bHkgaW50byBhIGNoYW5uZWwgYmVsb3cuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgQ2h1bmtlciA9IChmdW5jdGlvbiAoX2J1ZiRCYXNlQnVmZmVyKSB7XG4gIF9pbmhlcml0cyhDaHVua2VyLCBfYnVmJEJhc2VCdWZmZXIpO1xuXG4gIGZ1bmN0aW9uIENodW5rZXIoY2hhbm5lbCwgYnVmZmVyU2l6ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDaHVua2VyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENodW5rZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzLCAwKTtcbiAgICB0aGlzLl9idWZmZXJTaXplID0gYnVmZmVyU2l6ZSB8fCBfREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fYnVmZmVyID0gX2J1ZjJbJ2RlZmF1bHQnXS5hbGxvYyh0aGlzLl9idWZmZXJTaXplKTtcbiAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IDA7XG4gICAgdGhpcy5fY2h1bmtPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZXMgY2h1bmtzIHVudGlsIGEgY29tcGxldGUgbWVzc2FnZSBpcyBnYXRoZXJlZCB1cCwgYW5kIHRoZW4gZm9yd2FyZHMgdGhhdFxuICAgKiBtZXNzYWdlIHRvIGFuICdvbm1lc3NhZ2UnIGxpc3RlbmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENodW5rZXIsIFt7XG4gICAga2V5OiAncHV0VUludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2Vuc3VyZSgxKTtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRGbG9hdDY0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoOCk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVGbG9hdDY0KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0Qnl0ZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgZGF0YSkge1xuICAgICAgLy8gVE9ETzogSWYgZGF0YSBpcyBsYXJnZXIgdGhhbiBvdXIgY2h1bmsgc2l6ZSBvciBzbywgd2UncmUgdmVyeSBsaWtlbHkgYmV0dGVyIG9mZiBqdXN0IHBhc3NpbmcgdGhpcyBidWZmZXIgb25cbiAgICAgIC8vIHJhdGhlciB0aGFuIGRvaW5nIHRoZSBjb3B5IGhlcmUgVE9ETzogKmhvd2V2ZXIqIG5vdGUgdGhhdCB3ZSBuZWVkIHNvbWUgd2F5IHRvIGZpbmQgb3V0IHdoZW4gdGhlIGRhdGEgaGFzIGJlZW5cbiAgICAgIC8vIHdyaXR0ZW4gKGFuZCB0aHVzIHRoZSBidWZmZXIgY2FuIGJlIHJlLXVzZWQpIGlmIHdlIHRha2UgdGhhdCBhcHByb2FjaFxuICAgICAgd2hpbGUgKGRhdGEucmVtYWluaW5nKCkgPiAwKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbiBvcGVuIGNodW5rLCBhbmQgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygc3BhY2UgbGVmdFxuICAgICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPiBkYXRhLnJlbWFpbmluZygpKSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YS5yZWFkU2xpY2UodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZsdXNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnBvc2l0aW9uID4gMCkge1xuICAgICAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICAgICAgLy8gTG9jYWwgY29weSBhbmQgY2xlYXIgdGhlIGJ1ZmZlciBmaWVsZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGJ1ZmZlciBpcyBub3QgcmUtcmVsZWFzZWQgaWYgdGhlIGZsdXNoIGNhbGwgZmFpbHNcbiAgICAgICAgdmFyIG91dCA9IHRoaXMuX2J1ZmZlcjtcbiAgICAgICAgdGhpcy5fYnVmZmVyID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaC53cml0ZShvdXQuZ2V0U2xpY2UoMCwgb3V0LnBvc2l0aW9uKSk7XG5cbiAgICAgICAgLy8gQWxsb2MgYSBuZXcgb3V0cHV0IGJ1ZmZlci4gV2UgYXNzdW1lIHdlJ3JlIHVzaW5nIE5vZGVKUydzIGJ1ZmZlciBwb29saW5nIHVuZGVyIHRoZSBob29kIGhlcmUhXG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IF9idWYyWydkZWZhdWx0J10uYWxsb2ModGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQm9sdCBtZXNzYWdlcyBhcmUgZW5jb2RlZCBpbiBvbmUgb3IgbW9yZSBjaHVua3MsIGFuZCB0aGUgYm91bmRhcnkgYmV0d2VlbiB0d28gbWVzc2FnZXNcbiAgICAgKiBpcyBlbmNvZGVkIGFzIGEgMC1sZW5ndGggY2h1bmssIGAwMCAwMGAuIFRoaXMgaW5zZXJ0cyBzdWNoIGEgbWVzc2FnZSBib3VuZGFyeSwgY2xvc2luZ1xuICAgICAqIGFueSBjdXJyZW50bHkgb3BlbiBjaHVuayBhcyBuZWVkZWRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ21lc3NhZ2VCb3VuZGFyeScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1lc3NhZ2VCb3VuZGFyeSgpIHtcblxuICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgX0NIVU5LX0hFQURFUl9TSVpFKSB7XG4gICAgICAgIHRoaXMuZmx1c2goKTtcbiAgICAgIH1cblxuICAgICAgLy8gV3JpdGUgbWVzc2FnZSBib3VuZGFyeVxuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlSW50MTYoX01FU1NBR0VfQk9VTkRBUlkpO1xuICAgIH1cblxuICAgIC8qKiBFbnN1cmUgYXQgbGVhc3QgdGhlIGdpdmVuIHNpemUgaXMgYXZhaWxhYmxlIGZvciB3cml0aW5nICovXG4gIH0sIHtcbiAgICBrZXk6ICdfZW5zdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Vuc3VyZShzaXplKSB7XG4gICAgICB2YXIgdG9Xcml0ZVNpemUgPSB0aGlzLl9jaHVua09wZW4gPyBzaXplIDogc2l6ZSArIF9DSFVOS19IRUFERVJfU0laRTtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCB0b1dyaXRlU2l6ZSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9idWZmZXIucG9zaXRpb24gPSB0aGlzLl9idWZmZXIucG9zaXRpb24gKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2Nsb3NlQ2h1bmtJZk9wZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2xvc2VDaHVua0lmT3BlbigpIHtcbiAgICAgIGlmICh0aGlzLl9jaHVua09wZW4pIHtcbiAgICAgICAgdmFyIGNodW5rU2l6ZSA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbiAtICh0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCArIF9DSFVOS19IRUFERVJfU0laRSk7XG4gICAgICAgIHRoaXMuX2J1ZmZlci5wdXRVSW50MTYodGhpcy5fY3VycmVudENodW5rU3RhcnQsIGNodW5rU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDaHVua2VyO1xufSkoX2J1ZjJbJ2RlZmF1bHQnXS5CYXNlQnVmZmVyKTtcblxudmFyIERlY2h1bmtlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERlY2h1bmtlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGVjaHVua2VyKTtcblxuICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gMDtcbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRGVjaHVua2VyLCBbe1xuICAgIGtleTogJ0FXQUlUSU5HX0NIVU5LJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVdBSVRJTkdfQ0hVTksoYnVmKSB7XG4gICAgICBpZiAoYnVmLnJlbWFpbmluZygpID49IDIpIHtcbiAgICAgICAgLy8gV2hvbGUgaGVhZGVyIGF2YWlsYWJsZSwgcmVhZCB0aGF0XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcihidWYucmVhZFVJbnQxNigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9ubHkgb25lIGJ5dGUgYXZhaWxhYmxlLCByZWFkIHRoYXQgYW5kIHdhaXQgZm9yIHRoZSBzZWNvbmQgYnl0ZVxuICAgICAgICB0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgPSBidWYucmVhZFVJbnQ4KCkgPDwgODtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fSEVBREVSO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ0lOX0hFQURFUicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0hFQURFUihidWYpIHtcbiAgICAgIC8vIEZpcnN0IGhlYWRlciBieXRlIHJlYWQsIG5vdyB3ZSByZWFkIHRoZSBuZXh0IG9uZVxuICAgICAgcmV0dXJuIHRoaXMuX29uSGVhZGVyKCh0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgfCBidWYucmVhZFVJbnQ4KCkpICYgMHhGRkZGKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdJTl9DSFVOSycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0NIVU5LKGJ1Zikge1xuICAgICAgaWYgKHRoaXMuX2NodW5rU2l6ZSA8PSBidWYucmVtYWluaW5nKCkpIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gY3VycmVudCBjaHVuaywgb3Igc2FtZSBzaXplOlxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZS5wdXNoKGJ1Zi5yZWFkU2xpY2UodGhpcy5fY2h1bmtTaXplKSk7XG4gICAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgc21hbGxlciB0aGFuIHRoZSBjaHVuayB3ZSdyZSByZWFkaW5nLCBzcGxpdCB0aGUgY3VycmVudCBjaHVuayBpdHNlbGYgdXBcbiAgICAgICAgdGhpcy5fY2h1bmtTaXplIC09IGJ1Zi5yZW1haW5pbmcoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5JTl9DSFVOSztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdDTE9TRUQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBDTE9TRUQoYnVmKSB7fVxuICAgIC8vIG5vLW9wXG5cbiAgICAvKiogQ2FsbGVkIHdoZW4gYSBjb21wbGV0ZSBjaHVuayBoZWFkZXIgaGFzIGJlZW4gcmVjaWV2ZWQgKi9cblxuICB9LCB7XG4gICAga2V5OiAnX29uSGVhZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uSGVhZGVyKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlciA9PSAwKSB7XG4gICAgICAgIC8vIE1lc3NhZ2UgYm91bmRhcnlcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50TWVzc2FnZS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLl9jdXJyZW50TWVzc2FnZVswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IF9idWYyWydkZWZhdWx0J10uQ29tYmluZWRCdWZmZXIodGhpcy5fY3VycmVudE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgICAgIHRoaXMub25tZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NodW5rU2l6ZSA9IGhlYWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnd3JpdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWYpIHtcbiAgICAgIHdoaWxlIChidWYuaGFzUmVtYWluaW5nKCkpIHtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSB0aGlzLl9zdGF0ZShidWYpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEZWNodW5rZXI7XG59KSgpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSB7XG4gIENodW5rZXI6IENodW5rZXIsXG4gIERlY2h1bmtlcjogRGVjaHVua2VyXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2NoV2Vic29ja2V0ID0gcmVxdWlyZShcIi4vY2gtd2Vic29ja2V0XCIpO1xuXG52YXIgX2NoV2Vic29ja2V0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NoV2Vic29ja2V0KTtcblxudmFyIF9jaE5vZGUgPSByZXF1aXJlKFwiLi9jaC1ub2RlXCIpO1xuXG52YXIgX2NoTm9kZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaE5vZGUpO1xuXG52YXIgX2NodW5raW5nID0gcmVxdWlyZShcIi4vY2h1bmtpbmdcIik7XG5cbnZhciBfY2h1bmtpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2h1bmtpbmcpO1xuXG52YXIgX2ZlYXR1cmVzID0gcmVxdWlyZShcIi4vZmVhdHVyZXNcIik7XG5cbnZhciBfZmVhdHVyZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmVhdHVyZXMpO1xuXG52YXIgX3BhY2tzdHJlYW0gPSByZXF1aXJlKFwiLi9wYWNrc3RyZWFtXCIpO1xuXG52YXIgX3BhY2tzdHJlYW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFja3N0cmVhbSk7XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuLi9ncmFwaC10eXBlcycpO1xuXG52YXIgX2dyYXBoVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ3JhcGhUeXBlcyk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVnZXInKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIENoYW5uZWwgPSB1bmRlZmluZWQ7XG5pZiAoX2NoV2Vic29ja2V0MltcImRlZmF1bHRcIl0uYXZhaWxhYmxlKSB7XG4gIENoYW5uZWwgPSBfY2hXZWJzb2NrZXQyW1wiZGVmYXVsdFwiXS5jaGFubmVsO1xufSBlbHNlIGlmIChfY2hOb2RlMltcImRlZmF1bHRcIl0uYXZhaWxhYmxlKSB7XG4gIENoYW5uZWwgPSBfY2hOb2RlMltcImRlZmF1bHRcIl0uY2hhbm5lbDtcbn0gZWxzZSB7XG4gIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRmF0YWw6IE5vIGNvbXBhdGlibGUgdHJhbnNwb3J0IGF2YWlsYWJsZS4gTmVlZCB0byBydW4gb24gYSBwbGF0Zm9ybSB3aXRoIHRoZSBXZWJTb2NrZXQgQVBJLlwiKTtcbn1cblxudmFyXG4vLyBTaWduYXR1cmUgYnl0ZXMgZm9yIGVhY2ggbWVzc2FnZSB0eXBlXG5JTklUID0gMHgwMSxcbiAgICAvLyAwMDAwIDAwMDEgLy8gSU5JVCA8dXNlcl9hZ2VudD5cbkFDS19GQUlMVVJFID0gMHgwRSxcbiAgICAvLyAwMDAwIDExMTAgLy8gQUNLX0ZBSUxVUkVcblJFU0VUID0gMHgwRixcbiAgICAvLyAwMDAwIDExMTEgLy8gUkVTRVRcblJVTiA9IDB4MTAsXG4gICAgLy8gMDAwMSAwMDAwIC8vIFJVTiA8c3RhdGVtZW50PiA8cGFyYW1ldGVycz5cbkRJU0NBUkRfQUxMID0gMHgyRixcbiAgICAvLyAwMDEwIDExMTEgLy8gRElTQ0FSRCAqXG5QVUxMX0FMTCA9IDB4M0YsXG4gICAgLy8gMDAxMSAxMTExIC8vIFBVTEwgKlxuU1VDQ0VTUyA9IDB4NzAsXG4gICAgLy8gMDExMSAwMDAwIC8vIFNVQ0NFU1MgPG1ldGFkYXRhPlxuUkVDT1JEID0gMHg3MSxcbiAgICAvLyAwMTExIDAwMDEgLy8gUkVDT1JEIDx2YWx1ZT5cbklHTk9SRUQgPSAweDdFLFxuICAgIC8vIDAxMTEgMTExMCAvLyBJR05PUkVEIDxtZXRhZGF0YT5cbkZBSUxVUkUgPSAweDdGLFxuICAgIC8vIDAxMTEgMTExMSAvLyBGQUlMVVJFIDxtZXRhZGF0YT5cblxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBoaWdoZXItbGV2ZWwgZ3JhcGggb2JqZWN0c1xuTk9ERSA9IDB4NEUsXG4gICAgUkVMQVRJT05TSElQID0gMHg1MixcbiAgICBVTkJPVU5EX1JFTEFUSU9OU0hJUCA9IDB4NzIsXG4gICAgUEFUSCA9IDB4NTAsXG5cbi8vc2VudCBiZWZvcmUgdmVyc2lvbiBuZWdvdGlhdGlvblxuTUFHSUNfUFJFQU1CTEUgPSAweDYwNjBCMDE3O1xuXG52YXIgVVJMUkVHRVggPSBuZXcgUmVnRXhwKFtcIlteL10rLy9cIiwgLy8gc2NoZW1lXG5cIigoW146Lz8jXSopXCIsIC8vIGhvc3RuYW1lXG5cIig/OjooWzAtOV0rKSk/KVwiLCAvLyBwb3J0IChvcHRpb25hbClcblwiLipcIl0uam9pbihcIlwiKSk7IC8vIGV2ZXJ5dGhpbmcgZWxzZVxuXG5mdW5jdGlvbiBob3N0KHVybCkge1xuICByZXR1cm4gdXJsLm1hdGNoKFVSTFJFR0VYKVsyXTtcbn1cblxuZnVuY3Rpb24gcG9ydCh1cmwpIHtcbiAgcmV0dXJuIHVybC5tYXRjaChVUkxSRUdFWClbM107XG59XG5cbmZ1bmN0aW9uIE5PX09QKCkge31cblxudmFyIE5PX09QX09CU0VSVkVSID0ge1xuICBvbk5leHQ6IE5PX09QLFxuICBvbkNvbXBsZXRlZDogTk9fT1AsXG4gIG9uRXJyb3I6IE5PX09QXG59O1xuXG4vKiogTWFwcyBmcm9tIHBhY2tzdHJlYW0gc3RydWN0dXJlcyB0byBOZW80aiBkb21haW4gb2JqZWN0cyAqL1xudmFyIF9tYXBwZXJzID0ge1xuICBub2RlOiBmdW5jdGlvbiBub2RlKHVucGFja2VyLCBidWYpIHtcbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uTm9kZSh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gTGFiZWxzXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHJlbDogZnVuY3Rpb24gcmVsKHVucGFja2VyLCBidWYpIHtcbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBTdGFydCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIEVuZCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIFR5cGVcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgdW5ib3VuZFJlbDogZnVuY3Rpb24gdW5ib3VuZFJlbCh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlVuYm91bmRSZWxhdGlvbnNoaXAodW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIFR5cGVcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgcGF0aDogZnVuY3Rpb24gcGF0aCh1bnBhY2tlciwgYnVmKSB7XG4gICAgdmFyIG5vZGVzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHJlbHMgPSB1bnBhY2tlci51bnBhY2soYnVmKSxcbiAgICAgICAgc2VxdWVuY2UgPSB1bnBhY2tlci51bnBhY2soYnVmKTtcbiAgICB2YXIgcHJldk5vZGUgPSBub2Rlc1swXSxcbiAgICAgICAgc2VnbWVudHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VxdWVuY2UubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIHZhciByZWxJbmRleCA9IHNlcXVlbmNlW2ldLFxuICAgICAgICAgIG5leHROb2RlID0gbm9kZXNbc2VxdWVuY2VbaSArIDFdXSxcbiAgICAgICAgICByZWwgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAocmVsSW5kZXggPiAwKSB7XG4gICAgICAgIHJlbCA9IHJlbHNbcmVsSW5kZXggLSAxXTtcbiAgICAgICAgaWYgKHJlbCBpbnN0YW5jZW9mIF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFRvIGF2b2lkIGR1cGxpY2F0aW9uLCByZWxhdGlvbnNoaXBzIGluIGEgcGF0aCBkbyBub3QgY29udGFpblxuICAgICAgICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHN0YXJ0IGFuZCBlbmQgbm9kZXMsIHRoYXQncyBpbnN0ZWFkXG4gICAgICAgICAgLy8gaW5mZXJyZWQgZnJvbSB0aGUgcGF0aCBzZXF1ZW5jZS4gVGhpcyBpcyB1cyBpbmZlcnJpbmcgKGFuZCxcbiAgICAgICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyByZW1lbWJlcmluZykgdGhlIHN0YXJ0L2VuZCBvZiBhIHJlbC5cbiAgICAgICAgICByZWxzW3JlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChwcmV2Tm9kZS5pZGVudGl0eSwgbmV4dE5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWwgPSByZWxzWy1yZWxJbmRleCAtIDFdO1xuICAgICAgICBpZiAocmVsIGluc3RhbmNlb2YgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5VbmJvdW5kUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgLy8gU2VlIGFib3ZlXG4gICAgICAgICAgcmVsc1stcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKG5leHROb2RlLmlkZW50aXR5LCBwcmV2Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIERvbmUgaHlkcmF0aW5nIG9uZSBwYXRoIHNlZ21lbnQuXG4gICAgICBzZWdtZW50cy5wdXNoKG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlBhdGhTZWdtZW50KHByZXZOb2RlLCByZWwsIG5leHROb2RlKSk7XG4gICAgICBwcmV2Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uUGF0aChub2Rlc1swXSwgbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0sIHNlZ21lbnRzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gbWFuYWdlcyBzZW5kaW5nIGFuZCByZWNpZXZpbmcgbWVzc2FnZXMgb3ZlciBhIGNoYW5uZWwuIEFcbiAqIGNvbm5lY3RvciBpcyB2ZXJ5IGNsb3NlbHkgdGllZCB0byB0aGUgQm9sdCBwcm90b2NvbCwgaXQgaW1wbGVtZW50cyB0aGVcbiAqIHNhbWUgbWVzc2FnZSBzdHJ1Y3R1cmUgd2l0aCB2ZXJ5IGxpdHRsZSBmcmlsbHMuIFRoaXMgbWVhbnMgQ29ubmVjdG9ycyBhcmVcbiAqIG5hdHVyYWxseSB0aWVkIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3ZSBleHBlY3RcbiAqIGFub3RoZXIgbGF5ZXIgd2lsbCBiZSBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB2ZXJzaW9ucy5cbiAqXG4gKiBUaGUgY29ubmVjdG9yIHRyaWVzIHRvIGJhdGNoIG91dGJvdW5kIG1lc3NhZ2VzIGJ5IHJlcXVpcmluZyBpdHMgdXNlcnNcbiAqIHRvIGNhbGwgJ3N5bmMnIHdoZW4gbWVzc2FnZXMgbmVlZCB0byBiZSBzZW50LCBhbmQgaXQgcm91dGVzIHJlc3BvbnNlXG4gKiBtZXNzYWdlcyBiYWNrIHRvIHRoZSBvcmlnaW5hdG9ycyBvZiB0aGUgcmVxdWVzdHMgdGhhdCBjcmVhdGVkIHRob3NlXG4gKiByZXNwb25zZSBtZXNzYWdlcy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBDb25uZWN0aW9uID0gKGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBjaGFubmVsIC0gY2hhbm5lbCB3aXRoIGEgJ3dyaXRlJyBmdW5jdGlvbiBhbmQgYSAnb25tZXNzYWdlJ1xuICAgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrIHByb3BlcnR5XG4gICAqL1xuXG4gIGZ1bmN0aW9uIENvbm5lY3Rpb24oY2hhbm5lbCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25uZWN0aW9uKTtcblxuICAgIC8qKlxuICAgICAqIEFuIG9yZGVyZWQgcXVldWUgb2Ygb2JzZXJ2ZXJzLCBlYWNoIGV4Y2hhbmdlIHJlc3BvbnNlICh6ZXJvIG9yIG1vcmVcbiAgICAgKiBSRUNPUkQgbWVzc2FnZXMgZm9sbG93ZWQgYnkgYSBTVUNDRVNTIG1lc3NhZ2UpIHdlIHJlY2lldmUgd2lsbCBiZSByb3V0ZWRcbiAgICAgKiB0byB0aGUgbmV4dCBwZW5kaW5nIG9ic2VydmVyLlxuICAgICAqL1xuICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMgPSBbXTtcbiAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2RlY2h1bmtlciA9IG5ldyBfY2h1bmtpbmcyW1wiZGVmYXVsdFwiXS5EZWNodW5rZXIoKTtcbiAgICB0aGlzLl9jaHVua2VyID0gbmV3IF9jaHVua2luZzJbXCJkZWZhdWx0XCJdLkNodW5rZXIoY2hhbm5lbCk7XG4gICAgdGhpcy5fcGFja2VyID0gbmV3IF9wYWNrc3RyZWFtMltcImRlZmF1bHRcIl0uUGFja2VyKHRoaXMuX2NodW5rZXIpO1xuICAgIHRoaXMuX3VucGFja2VyID0gbmV3IF9wYWNrc3RyZWFtMltcImRlZmF1bHRcIl0uVW5wYWNrZXIoKTtcbiAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuXG4gICAgLy8gU2V0IHRvIHRydWUgb24gZmF0YWwgZXJyb3JzLCB0byBnZXQgdGhpcyBvdXQgb2Ygc2Vzc2lvbiBwb29sLlxuICAgIHRoaXMuX2lzQnJva2VuID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLCBleHBsYWluIHRvIHRoZSB1bnBhY2tlciBob3cgdG8gdW5wYWNrIG5vZGVzLCByZWxzLCBwYXRocztcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW05PREVdID0gX21hcHBlcnMubm9kZTtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy5yZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tVTkJPVU5EX1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy51bmJvdW5kUmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUEFUSF0gPSBfbWFwcGVycy5wYXRoO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIC8vIFRPRE86IFVzaW5nIGBvbm1lc3NhZ2VgIGFuZCBgb25lcnJvcmAgY2FtZSBmcm9tIHRoZSBXZWJTb2NrZXQgQVBJLFxuICAgIC8vIGl0IHJlYWRzIHBvb3JseSBhbmQgaGFzIHNldmVyYWwgYW5ub3lpbmcgZHJhd2JhY2tzLiBTd2FwIHRvIGhhdmluZ1xuICAgIC8vIENoYW5uZWwgZXh0ZW5kIEV2ZW50RW1pdHRlciBpbnN0ZWFkLCB0aGVuIHdlIGNhbiB1c2UgYG9uKCdkYXRhJywuLilgXG4gICAgdGhpcy5fY2gub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgdmFyIHByb3Bvc2VkID0gYnVmLnJlYWRJbnQzMigpO1xuICAgICAgaWYgKHByb3Bvc2VkID09IDEpIHtcbiAgICAgICAgLy8gT2ssIHByb3RvY29sIHJ1bm5pbmcuIFNpbXBseSBmb3J3YXJkIGFsbCBtZXNzYWdlcyBwYXN0XG4gICAgICAgIC8vIHRoaXMgdG8gdGhlIGRlY2h1bmtlclxuICAgICAgICBzZWxmLl9jaC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zik7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGJ1Zi5oYXNSZW1haW5pbmcoKSkge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3Bvc2VkID09IDEyMTM0ODYxNjApIHtcbiAgICAgICAgLy9zZXJ2ZXIgcmVzcG9uZGVkIDEyMTM0ODYxNjAgPT0gMHg0ODU0NTQ1MCA9PSBcIkhUVFBcIlxuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU2VydmVyIHJlc3BvbmRlZCBIVFRQLiBNYWtlIHN1cmUgeW91IGFyZSBub3QgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIGh0dHAgZW5kcG9pbnQgXCIgKyBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIHZlcnNpb246IFwiICsgcHJvcG9zZWQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIHRvIGNvbm5lY3Rpb24gZXJyb3JzLiBJbXBvcnRhbnQgbm90ZSB0aG91Z2g7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB3aWxsIGdldCBhIGNoYW5uZWwgdGhhdCBpcyBhbHJlYWR5IGJyb2tlbiAoZm9yIGluc3RhbmNlLFxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucykuIEluIHRoaXMgY2FzZSwgb25lcnJvclxuICAgIC8vIHdpbGwgaGF2ZSBcImFscmVhZHkgdHJpZ2dlcmVkXCIgYmVmb3JlIHdlIGFkZCBvdXQgbGlzdGVuZXIgaGVyZS4gU28gdGhlIGxpbmVcbiAgICAvLyBiZWxvdyBhbHNvIGNoZWNrcyB0aGF0IHRoZSBjaGFubmVsIGlzIG5vdCBhbHJlYWR5IGZhaWxlZC4gVGhpcyBjb3VsZCBiZSBuaWNlbHlcbiAgICAvLyBlbmNhcHN1bGF0ZWQgaW50byBDaGFubmVsIGlmIHdlIHVzZWQgYG9uKCdlcnJvcicsIC4uKWAgcmF0aGVyIHRoYW4gYG9uZXJyb3I9Li5gXG4gICAgLy8gYXMgb3V0bGluZWQgaW4gdGhlIGNvbW1lbnQgYWJvdXQgYG9ubWVzc2FnZWAgZnVydGhlciB1cCBpbiB0aGlzIGZpbGUuXG4gICAgdGhpcy5fY2gub25lcnJvciA9IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IuYmluZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fY2guX2Vycm9yKSB7XG4gICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKHRoaXMuX2NoLl9lcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgIHNlbGYuX2hhbmRsZU1lc3NhZ2Uoc2VsZi5fdW5wYWNrZXIudW5wYWNrKGJ1ZikpO1xuICAgIH07XG5cbiAgICB2YXIgaGFuZHNoYWtlID0gKDAsIF9idWYuYWxsb2MpKDUgKiA0KTtcbiAgICAvL21hZ2ljIHByZWFtYmxlXG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoTUFHSUNfUFJFQU1CTEUpO1xuICAgIC8vcHJvcG9zZWQgdmVyc2lvbnNcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigxKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2UucmVzZXQoKTtcbiAgICB0aGlzLl9jaC53cml0ZShoYW5kc2hha2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZXRlIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gJ25lbzRqJy1wcmVmaXhlZCBVUkwgdG8gTmVvNGogQm9sdCBlbmRwb2ludFxuICAgKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gICAqIEByZXR1cm4ge0Nvbm5lY3Rpb259IC0gTmV3IGNvbm5lY3Rpb25cbiAgICovXG5cbiAgLyoqXG4gICAqIFwiRmF0YWxcIiBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBkZWFkLiBPbmx5IGNhbGwgdGhpcyBpZiBzb21ldGhpbmdcbiAgICogaGFwcGVucyB0aGF0IGNhbm5vdCBiZSByZWNvdmVyZWQgZnJvbS4gVGhpcyB3aWxsIGxlYWQgdG8gYWxsIHN1YnNjcmliZXJzXG4gICAqIGZhaWxpbmcsIGFuZCB0aGUgY29ubmVjdGlvbiBnZXR0aW5nIGVqZWN0ZWQgZnJvbSB0aGUgc2Vzc2lvbiBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIGFuIGVycm9yIG9iamVjdCwgZm9yd2FyZGVkIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgc3Vic2NyaWJlcnNcbiAgICogQHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENvbm5lY3Rpb24sIFt7XG4gICAga2V5OiBcIl9oYW5kbGVGYXRhbEVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVGYXRhbEVycm9yKGVycikge1xuICAgICAgdGhpcy5faXNCcm9rZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fZXJyb3IgPSBlcnI7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyICYmIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICB9XG4gICAgICB3aGlsZSAodGhpcy5fcGVuZGluZ09ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICBvYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX2hhbmRsZU1lc3NhZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZU1lc3NhZ2UobXNnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBzd2l0Y2ggKG1zZy5zaWduYXR1cmUpIHtcbiAgICAgICAgY2FzZSBSRUNPUkQ6XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uTmV4dChtc2cuZmllbGRzWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTVUNDRVNTOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25Db21wbGV0ZWQobXNnLmZpZWxkc1swXSk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRkFJTFVSRTpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IobXNnKTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbXNnO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgICAvLyBUaGluZ3MgYXJlIG5vdyBicm9rZW4uIFBlbmRpbmcgb2JzZXJ2ZXJzIHdpbGwgZ2V0IEZBSUxVUkUgbWVzc2FnZXMgcm91dGVkIHVudGlsXG4gICAgICAgICAgICAvLyBXZSBhcmUgZG9uZSBoYW5kbGluZyB0aGlzIGZhaWx1cmUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlKSB7XG4gICAgICAgICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IF90aGlzO1xuXG4gICAgICAgICAgICAgICAgLy8gaXNIYW5kbGluZ0ZhaWx1cmUgd2FzIGZhbHNlLCBtZWFuaW5nIHRoaXMgaXMgdGhlIGZpcnN0IGZhaWx1cmUgbWVzc2FnZVxuICAgICAgICAgICAgICAgIC8vIHdlIHNlZSBmcm9tIHRoaXMgZmFpbHVyZS4gV2UgbWF5IHNlZSBzZXZlcmFsIG90aGVycywgb25lIGZvciBlYWNoIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAvLyB3ZSBoYWQgXCJvcHRpbWlzdGljYWxseVwiIGFscmVhZHkgc2VudCBhZnRlciB3aGF0ZXZlciBpdCB3YXMgdGhhdCBmYWlsZWQuXG4gICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGFuZCBuZWVkIHRvIEFDSyB0aGUgZmlyc3Qgb25lLCB3aGljaCBpcyB3aHkgd2UgYXJlIHRyYWNraW5nXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBfaXNIYW5kbGluZ0ZhaWx1cmUgdGhpbmcuXG4gICAgICAgICAgICAgICAgX3RoaXMuX2Fja0ZhaWx1cmUoe1xuICAgICAgICAgICAgICAgICAgb25OZXh0OiBOT19PUCxcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3I6IE5PX09QLFxuICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJR05PUkVEOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZXJyb3JNc2cgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yTXNnKTtlbHNlIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcikgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IobXNnKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIG1lc3NhZ2U6IFwiICsgbXNnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGFuIElOSVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcImluaXRpYWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZShjbGllbnROYW1lLCB0b2tlbiwgb2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KElOSVQsIFt0aGlzLl9wYWNrYWJsZShjbGllbnROYW1lKSwgdGhpcy5fcGFja2FibGUodG9rZW4pXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgICB0aGlzLnN5bmMoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBSVU4tbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50LCBwYXJhbXMsIG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSVU4sIFt0aGlzLl9wYWNrYWJsZShzdGF0ZW1lbnQpLCB0aGlzLl9wYWNrYWJsZShwYXJhbXMpXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXMzLl9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUFVMTF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1bGxBbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHVsbEFsbChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoUFVMTF9BTEwsIFtdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczQuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBESVNDQVJEX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZGlzY2FyZEFsbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkaXNjYXJkQWxsKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChESVNDQVJEX0FMTCwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNS5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciB3cmFwcGVkT2JzID0ge1xuICAgICAgICBvbk5leHQ6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25OZXh0IDogTk9fT1AsXG4gICAgICAgIG9uRXJyb3I6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25FcnJvciA6IE5PX09QLFxuICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoKSB7XG4gICAgICAgICAgc2VsZi5faXNIYW5kbGluZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcih3cmFwcGVkT2JzKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJFU0VULCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM2Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgQUNLX0ZBSUxVUkUtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcIl9hY2tGYWlsdXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9hY2tGYWlsdXJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM3ID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChBQ0tfRkFJTFVSRSwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNy5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfcXVldWVPYnNlcnZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcXVldWVPYnNlcnZlcihvYnNlcnZlcikge1xuICAgICAgaWYgKHRoaXMuX2lzQnJva2VuKSB7XG4gICAgICAgIGlmIChvYnNlcnZlciAmJiBvYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZXIgPSBvYnNlcnZlciB8fCBOT19PUF9PQlNFUlZFUjtcbiAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkID0gb2JzZXJ2ZXIub25Db21wbGV0ZWQgfHwgTk9fT1A7XG4gICAgICBvYnNlcnZlci5vbkVycm9yID0gb2JzZXJ2ZXIub25FcnJvciB8fCBOT19PUDtcbiAgICAgIG9ic2VydmVyLm9uTmV4dCA9IG9ic2VydmVyLm9uTmV4dCB8fCBOT19PUDtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3luY2hyb25pemUgLSBmbHVzaCBhbGwgcXVldWVkIG91dGdvaW5nIG1lc3NhZ2VzIGFuZCByb3V0ZSB0aGVpciByZXNwb25zZXNcbiAgICAgKiB0byB0aGVpciByZXNwZWN0aXZlIGhhbmRsZXJzLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3luYygpIHtcbiAgICAgIHRoaXMuX2NodW5rZXIuZmx1c2goKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgdGhpcyBjb25uZWN0aW9uIGlzIGluIHdvcmtpbmcgY29uZGl0aW9uICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaXNPcGVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3BlbigpIHtcbiAgICAgIHJldHVybiAhdGhpcy5faXNCcm9rZW4gJiYgdGhpcy5fY2guX29wZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBjbG9zZSBvbiB0aGUgY2hhbm5lbC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiAtIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2xvc2UuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiY2xvc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoY2IpIHtcbiAgICAgIHRoaXMuX2NoLmNsb3NlKGNiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX3BhY2thYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9wYWNrYWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl9wYWNrZXIucGFja2FibGUodmFsdWUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzOC5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbm5lY3Rpb247XG59KSgpO1xuXG5mdW5jdGlvbiBjb25uZWN0KHVybCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cbiAgdmFyIENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgcmV0dXJuIG5ldyBDb25uZWN0aW9uKG5ldyBDaCh7XG4gICAgaG9zdDogaG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBvcnQodXJsKSB8fCA3Njg3LFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgZW5jcnlwdGlvbiBpZiB0cnVzdC1vbi1maXJzdC11c2UgaXMgYXZhaWxhYmxlXG4gICAgZW5jcnlwdGVkOiBjb25maWcuZW5jcnlwdGVkID09IG51bGwgPyAoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpIDogY29uZmlnLmVuY3J5cHRlZCxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIHRydXN0LW9uLWZpcnN0LXVzZSBpZiBpdCBpcyBhdmFpbGFibGVcbiAgICB0cnVzdDogY29uZmlnLnRydXN0IHx8ICgoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpID8gXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiA6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzOiBjb25maWcua25vd25Ib3N0c1xuICB9KSk7XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjb25uZWN0OiBjb25uZWN0LFxuICBDb25uZWN0aW9uOiBDb25uZWN0aW9uXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZTogZnVuY3Rpb24gdHJ1c3Rfb25fZmlyc3RfdXNlKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIGluc2FuZS4gV2UgYXJlIHZlcmlmeWluZyB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIGdldFBlZXJDZXJ0aWZpY2F0ZVxuICAgICAgLy8gdGhhdCBzdXBwb3J0cyByZWFkaW5nIHRoZSB3aG9sZSBjZXJ0aWZpY2F0ZSwgZWcgdGhpcyBjb21taXQ6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzM0NWM0MGI2XG4gICAgICB2YXIgZGVzYyA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgcmV0dXJuIGRlc2MubGVuZ3RoID49IDE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaGFzRmVhdHVyZShuYW1lKSB7XG4gIHJldHVybiBGRUFUVVJFU1tuYW1lXSAmJiBGRUFUVVJFU1tuYW1lXSgpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBoYXNGZWF0dXJlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFwiZGVidWdcIjogZnVuY3Rpb24gZGVidWcodmFsKSB7XG4gICAgY29uc29sZS5sb2codmFsKTtcbiAgfVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfdXRmOCA9IHJlcXVpcmUoXCIuL3V0ZjhcIik7XG5cbnZhciBfdXRmODIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGY4KTtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZShcIi4uL2ludGVnZXJcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBNQVhfQ0hVTktfU0laRSA9IDE2MzgzLFxuICAgIFRJTllfU1RSSU5HID0gMHg4MCxcbiAgICBUSU5ZX0xJU1QgPSAweDkwLFxuICAgIFRJTllfTUFQID0gMHhBMCxcbiAgICBUSU5ZX1NUUlVDVCA9IDB4QjAsXG4gICAgTlVMTCA9IDB4QzAsXG4gICAgRkxPQVRfNjQgPSAweEMxLFxuICAgIEZBTFNFID0gMHhDMixcbiAgICBUUlVFID0gMHhDMyxcbiAgICBJTlRfOCA9IDB4QzgsXG4gICAgSU5UXzE2ID0gMHhDOSxcbiAgICBJTlRfMzIgPSAweENBLFxuICAgIElOVF82NCA9IDB4Q0IsXG4gICAgU1RSSU5HXzggPSAweEQwLFxuICAgIFNUUklOR18xNiA9IDB4RDEsXG4gICAgU1RSSU5HXzMyID0gMHhEMixcbiAgICBMSVNUXzggPSAweEQ0LFxuICAgIExJU1RfMTYgPSAweEQ1LFxuICAgIExJU1RfMzIgPSAweEQ2LFxuICAgIE1BUF84ID0gMHhEOCxcbiAgICBNQVBfMTYgPSAweEQ5LFxuICAgIE1BUF8zMiA9IDB4REEsXG4gICAgU1RSVUNUXzggPSAweERDLFxuICAgIFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIFN0cnVjdHVyZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cnVjdHVyZShzaWduYXR1cmUsIGZpZWxkcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJ1Y3R1cmUpO1xuXG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHBhY2tcbiAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cnVjdHVyZSwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgZmllbGRTdHIgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBmaWVsZFN0ciArPSBcIiwgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJTdHJ1Y3R1cmUoXCIgKyB0aGlzLnNpZ25hdHVyZSArIFwiLCBbXCIgKyB0aGlzLmZpZWxkcyArIFwiXSlcIjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RydWN0dXJlO1xufSkoKTtcblxudmFyIFBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhY2tlcihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhY2tlcik7XG5cbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHVucGFja1xuICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgKi9cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhY2thYmxlIGZ1bmN0aW9uIG91dCBvZiB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICogQHBhcmFtIHggdGhlIHZhbHVlIHRvIHBhY2tcbiAgICogQHBhcmFtIG9uRXJyb3IgY2FsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZW4gdmFsdWUgY2Fubm90IGJlIHBhY2tlZFxuICAgKiBAcmV0dXJucyBGdW5jdGlvblxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUGFja2VyLCBbe1xuICAgIGtleTogXCJwYWNrYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrYWJsZSh4LCBvbkVycm9yKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChOVUxMKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChUUlVFKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NoLndyaXRlVUludDgoRkFMU0UpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tGbG9hdCh4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrU3RyaW5nKHgsIG9uRXJyb3IpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgX2ludGVnZXIuSW50ZWdlcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrSW50ZWdlcih4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMucGFja0xpc3RIZWFkZXIoeC5sZW5ndGgsIG9uRXJyb3IpO1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB4Lmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgX3RoaXMucGFja2FibGUoeFtfaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB4W19pXSwgb25FcnJvcikoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBTdHJ1Y3R1cmUpIHtcbiAgICAgICAgdmFyIHBhY2thYmxlRmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwYWNrYWJsZUZpZWxkc1tpXSA9IHRoaXMucGFja2FibGUoeC5maWVsZHNbaV0sIG9uRXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tTdHJ1Y3QoeC5zaWduYXR1cmUsIHBhY2thYmxlRmllbGRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG5cbiAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGtleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgaWYgKHhba2V5c1tfaTJdXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLnBhY2tNYXBIZWFkZXIoY291bnQsIG9uRXJyb3IpO1xuICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGtleXMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbX2kzXTtcbiAgICAgICAgICAgIGlmICh4W2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBfdGhpcy5wYWNrU3RyaW5nKGtleSk7XG4gICAgICAgICAgICAgIF90aGlzLnBhY2thYmxlKHhba2V5XSwgb25FcnJvcikoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJDYW5ub3QgcGFjayB0aGlzIHZhbHVlOiBcIiArIHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFja3MgYSBzdHJ1Y3RcbiAgICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgb2YgdGhlIHN0cnVjdFxuICAgICAqIEBwYXJhbSBwYWNrYWJsZUZpZWxkcyB0aGUgZmllbGRzIG9mIHRoZSBzdHJ1Y3QsIG1ha2Ugc3VyZSB5b3UgY2FsbCBgcGFja2FibGUgb24gYWxsIGZpZWxkc2BcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3Qoc2lnbmF0dXJlLCBwYWNrYWJsZUZpZWxkcywgb25FcnJvcikge1xuICAgICAgcGFja2FibGVGaWVsZHMgPSBwYWNrYWJsZUZpZWxkcyB8fCBbXTtcbiAgICAgIHRoaXMucGFja1N0cnVjdEhlYWRlcihwYWNrYWJsZUZpZWxkcy5sZW5ndGgsIHNpZ25hdHVyZSwgb25FcnJvcik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhY2thYmxlRmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhY2thYmxlRmllbGRzW2ldKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tJbnRlZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tJbnRlZ2VyKHgpIHtcbiAgICAgIHZhciBoaWdoID0geC5oaWdoLFxuICAgICAgICAgIGxvdyA9IHgubG93O1xuXG4gICAgICBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4MTApICYmIHgubGVzc1RoYW4oMHg4MCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwKSAmJiB4Lmxlc3NUaGFuKC0weDEwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MTYobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMDAwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwMDAwMCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDMyKGxvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF82NCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIoaGlnaCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0Zsb2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tGbG9hdCh4KSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZMT0FUXzY0KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlRmxvYXQ2NCh4KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrU3RyaW5nKHgsIG9uRXJyb3IpIHtcbiAgICAgIHZhciBieXRlcyA9IF91dGY4MltcImRlZmF1bHRcIl0uZW5jb2RlKHgpO1xuICAgICAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUklORyB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0xpc3RIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0xpc3RIZWFkZXIoc2l6ZSwgb25FcnJvcikge1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9MSVNUIHwgc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDE2Nzc3MjE2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDY1NTM2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tNYXBIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja01hcEhlYWRlcihzaXplLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX01BUCB8IHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0SGVhZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3RIZWFkZXIoc2l6ZSwgc2lnbmF0dXJlLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUlVDVCB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQYWNrZXI7XG59KSgpO1xuXG52YXIgVW5wYWNrZXIgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbnBhY2tlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5wYWNrZXIpO1xuXG4gICAgLy8gSGlnaGVyIGxldmVsIGxheWVycyBjYW4gc3BlY2lmeSBob3cgdG8gbWFwIHN0cnVjdHMgdG8gaGlnaGVyLWxldmVsIG9iamVjdHMuXG4gICAgLy8gSWYgd2UgcmVjaWV2ZSBhIHN0cnVjdCB0aGF0IGhhcyBhIHNpZ25hdHVyZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBtYXBwZXIsXG4gICAgLy8gd2Ugc2ltcGx5IHJldHVybiBhIFN0cnVjdHVyZSBvYmplY3QuXG4gICAgdGhpcy5zdHJ1Y3RNYXBwZXJzID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVW5wYWNrZXIsIFt7XG4gICAga2V5OiBcInVucGFja0xpc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrTGlzdChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFsdWUucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrTWFwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFja01hcChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHt9O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICAgIHZhbHVlW2tleV0gPSB0aGlzLnVucGFjayhidWZmZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tTdHJ1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrU3RydWN0KHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHNpZ25hdHVyZSA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICAgIHZhciBtYXBwZXIgPSB0aGlzLnN0cnVjdE1hcHBlcnNbc2lnbmF0dXJlXTtcbiAgICAgIGlmIChtYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuIG1hcHBlcih0aGlzLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbmV3IFN0cnVjdHVyZShzaWduYXR1cmUsIFtdKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICB2YWx1ZS5maWVsZHMucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2soYnVmZmVyKSB7XG4gICAgICB2YXIgbWFya2VyID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgICAgaWYgKG1hcmtlciA9PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gVFJVRSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZBTFNFKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZMT0FUXzY0KSB7XG4gICAgICAgIHJldHVybiBidWZmZXIucmVhZEZsb2F0NjQoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID49IDAgJiYgbWFya2VyIDwgMTI4KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShtYXJrZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMjQwICYmIG1hcmtlciA8IDI1Nikge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkobWFya2VyIC0gMjU2KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF84KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShidWZmZXIucmVhZEludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMTYpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGJ1ZmZlci5yZWFkSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMzIpIHtcbiAgICAgICAgdmFyIGIgPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShiKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF82NCkge1xuICAgICAgICB2YXIgaGlnaCA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgdmFyIGxvdyA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBfaW50ZWdlci5JbnRlZ2VyKGxvdywgaGlnaCk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfOCkge1xuICAgICAgICByZXR1cm4gX3V0ZjgyW1wiZGVmYXVsdFwiXS5kZWNvZGUoYnVmZmVyLCBidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzE2KSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDE2KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzMyKSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDMyKCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzMyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfMzIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDMyKCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfOCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSVUNUXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQxNigpLCBidWZmZXIpO1xuICAgICAgfVxuICAgICAgdmFyIG1hcmtlckhpZ2ggPSBtYXJrZXIgJiAweEYwO1xuICAgICAgdmFyIG1hcmtlckxvdyA9IG1hcmtlciAmIDB4MEY7XG4gICAgICBpZiAobWFya2VySGlnaCA9PSAweDgwKSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIG1hcmtlckxvdyk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHg5MCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEEwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHhCMCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIHBhY2tlZCB2YWx1ZSB3aXRoIG1hcmtlciBcIiArIG1hcmtlci50b1N0cmluZygxNikpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBVbnBhY2tlcjtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBQYWNrZXI6IFBhY2tlcixcbiAgVW5wYWNrZXI6IFVucGFja2VyLFxuICBTdHJ1Y3R1cmU6IFN0cnVjdHVyZVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBQb29sID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBjcmVhdGUgIGFuIGFsbG9jYXRpb24gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbmV3IHJlc291cmNlLiBJdCdzIGdpdmVuXG4gICAqICAgICAgICAgICAgICAgIGEgc2luZ2xlIGFyZ3VtZW50LCBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHJlc291cmNlIHRvXG4gICAqICAgICAgICAgICAgICAgIHRoZSBwb29sIGlmIGludm9rZWQsIHdoaWNoIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBvbiAuZGlzcG9zZVxuICAgKiAgICAgICAgICAgICAgICBvciAuY2xvc2Ugb3Igd2hhdGV2ZXIgbWVjaGFuaXNtIHRoZSByZXNvdXJjZSB1c2VzIHRvIGZpbmFsaXplLlxuICAgKiBAcGFyYW0gZGVzdHJveSBjYWxsZWQgd2l0aCB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBldmljdGVkIGZyb20gdGhpcyBwb29sXG4gICAqIEBwYXJhbSB2YWxpZGF0ZSBjYWxsZWQgYXQgdmFyaW91cyB0aW1lcyAobGlrZSB3aGVuIGFuIGluc3RhbmNlIGlzIGFjcXVpcmVkIGFuZFxuICAgKiAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyByZXR1cm5lZCkuIElmIHRoaXMgcmV0dXJucyBmYWxzZSwgdGhlIHJlc291cmNlIHdpbGxcbiAgICogICAgICAgICAgICAgICAgIGJlIGV2aWN0ZWRcbiAgICogQHBhcmFtIG1heElkbGUgdGhlIG1heCBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdFxuICAgKiAgICAgICAgICAgICAgICBhbnkgdGltZS4gSWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQsIHJlc291cmNlcyB3aWxsIGJlIGV2aWN0ZWQuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFBvb2woY3JlYXRlKSB7XG4gICAgdmFyIGRlc3Ryb3kgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWxpZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gOiBhcmd1bWVudHNbMl07XG4gICAgdmFyIG1heElkbGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyA1MCA6IGFyZ3VtZW50c1szXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQb29sKTtcblxuICAgIHRoaXMuX2NyZWF0ZSA9IGNyZWF0ZTtcbiAgICB0aGlzLl9kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLl92YWxpZGF0ZSA9IHZhbGlkYXRlO1xuICAgIHRoaXMuX21heElkbGUgPSBtYXhJZGxlO1xuICAgIHRoaXMuX3Bvb2wgPSBbXTtcbiAgICB0aGlzLl9yZWxlYXNlID0gdGhpcy5fcmVsZWFzZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBvb2wsIFt7XG4gICAga2V5OiBcImFjcXVpcmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWNxdWlyZSgpIHtcbiAgICAgIGlmICh0aGlzLl9wb29sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvb2wucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlKHRoaXMuX3JlbGVhc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfcmVsZWFzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVsZWFzZShyZXNvdXJjZSkge1xuICAgICAgaWYgKHRoaXMuX3Bvb2wubGVuZ3RoID49IHRoaXMuX21heElkbGUgfHwgIXRoaXMuX3ZhbGlkYXRlKHJlc291cmNlKSkge1xuICAgICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3Bvb2wucHVzaChyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBvb2w7XG59KSgpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgUG9vbDogUG9vbFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfcmVjb3JkID0gcmVxdWlyZShcIi4uL3JlY29yZFwiKTtcblxuLyoqXG4gKiBIYW5kbGVzIGEgUlVOL1BVTExfQUxMLCBvciBSVU4vRElTQ0FSRF9BTEwgcmVxdWVzdHMsIG1hcHMgdGhlIHJlc3BvbnNlc1xuICogaW4gYSB3YXkgdGhhdCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgY2FuIHNlZSB0aGVzZSBhcyBhIGNsZWFuIFN0cmVhbVxuICogb2YgcmVjb3Jkcy5cbiAqIFRoaXMgY2xhc3Mgd2lsbCBxdWV1ZSB1cCBpbmNvbWluZyBtZXNzYWdlcyB1bnRpbCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXJcbiAqIGZvciB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIHJlZ2lzdGVyZWQuIFRodXMsIHdlIGtlZXAgZmllbGRzIGFyb3VuZFxuICogZm9yIHRyYWNraW5nIGhlYWQvcmVjb3Jkcy90YWlsLiBUaGVzZSBhcmUgb25seSB1c2VkIGlmIHRoZXJlIGlzIG5vXG4gKiBvYnNlcnZlciByZWdpc3RlcmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIFN0cmVhbU9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cblxuICBmdW5jdGlvbiBTdHJlYW1PYnNlcnZlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdGhpcy5fZmllbGRLZXlzID0gbnVsbDtcbiAgICB0aGlzLl9maWVsZExvb2t1cCA9IG51bGw7XG4gICAgdGhpcy5fcXVldWVkUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX3RhaWwgPSBudWxsO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBldmVyeSByZWNvcmQgdGhhdCBjb21lcyBpbiBhbmQgdHJhbnNmb3JtIGEgcmF3IHJlY29yZFxuICAgKiB0byBhIE9iamVjdC4gSWYgdXNlci1wcm92aWRlZCBvYnNlcnZlciBpcyBwcmVzZW50LCBwYXNzIHRyYW5zZm9ybWVkIHJlY29yZFxuICAgKiB0byBpdCdzIG9uTmV4dCBtZXRob2QsIG90aGVyd2lzZSwgcHVzaCB0byByZWNvcmQgcXVlLlxuICAgKiBAcGFyYW0ge0FycmF5fSByYXdSZWNvcmQgLSBBbiBhcnJheSB3aXRoIHRoZSByYXcgcmVjb3JkXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6IFwib25OZXh0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTmV4dChyYXdSZWNvcmQpIHtcbiAgICAgIHZhciByZWNvcmQgPSBuZXcgX3JlY29yZC5SZWNvcmQodGhpcy5fZmllbGRLZXlzLCByYXdSZWNvcmQsIHRoaXMuX2ZpZWxkTG9va3VwKTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICB0aGlzLl9vYnNlcnZlci5vbk5leHQocmVjb3JkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlZFJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkNvbXBsZXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgICBpZiAodGhpcy5fZmllbGRLZXlzID09PSBudWxsKSB7XG4gICAgICAgIC8vIFN0cmVhbSBoZWFkZXIsIGJ1aWxkIGEgbmFtZS0+aW5kZXggZmllbGQgbG9va3VwIHRhYmxlXG4gICAgICAgIC8vIHRvIGJlIHVzZWQgYnkgcmVjb3Jkcy4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWFrZSBpdFxuICAgICAgICAvLyBmYXN0ZXIgdG8gbG9vayB1cCBmaWVsZHMgaW4gYSByZWNvcmQgYnkgbmFtZSwgcmF0aGVyIHRoYW4gYnkgaW5kZXguXG4gICAgICAgIC8vIFNpbmNlIHRoZSByZWNvcmRzIHdlIGdldCBiYWNrIHZpYSBCb2x0IGFyZSBqdXN0IGFycmF5cyBvZiB2YWx1ZXMuXG4gICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IFtdO1xuICAgICAgICB0aGlzLl9maWVsZExvb2t1cCA9IHt9O1xuICAgICAgICBpZiAobWV0YS5maWVsZHMgJiYgbWV0YS5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IG1ldGEuZmllbGRzO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YS5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwW21ldGEuZmllbGRzW2ldXSA9IGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uQ29tcGxldGVkKG1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RhaWwgPSBtZXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2lsbCBiZSBjYWxsZWQgb24gZXJyb3JzLlxuICAgICAqIElmIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgaXMgcHJlc2VudCwgcGFzcyB0aGUgZXJyb3JcbiAgICAgKiB0byBpdCdzIG9uRXJyb3IgbWV0aG9kLCBvdGhlcndpc2Ugc2V0IGluc3RhbmNlIHZhcmlhYmxlIF9lcnJvci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXJyb3IgLSBBbiBlcnJvciBvYmplY3RcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJvbkVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gZXZlbnRzIHdpdGggcHJvdmlkZWQgb2JzZXJ2ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IE9iamVjdCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGUgLSBIYW5kbGUgc3RyZWFtIHRhaWwsIHRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiBPYmplY3QpfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJzdWJzY3JpYmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICBpZiAodGhpcy5fZXJyb3IpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9xdWV1ZWRSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcXVldWVkUmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9ic2VydmVyLm9uTmV4dChfcXVldWVkUmVjb3Jkc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl90YWlsKSB7XG4gICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKHRoaXMuX3RhaWwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RyZWFtT2JzZXJ2ZXI7XG59KSgpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFN0cmVhbU9ic2VydmVyO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNyb3NzLXBsYXRmb3JtIFVURi04IGVuY29kZXIgYW5kIGRlY29kZXIgdGhhdCB3b3Jrc1xuLy8gd2l0aCB0aGUgQnVmZmVyIEFQSSBkZWZpbmVkIGluIGJ1Zi5qc1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2J1ZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9idWYpO1xuXG52YXIgX3N0cmluZ19kZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXInKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIHBsYXRmb3JtT2JqID0ge307XG5cbnRyeSB7XG4gIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpcyAnYnVmZmVyJyBpcyBub3QgYXZhaWxhYmxlXG4gICAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICAgIHZhciBkZWNvZGVyID0gbmV3IF9zdHJpbmdfZGVjb2Rlci5TdHJpbmdEZWNvZGVyKCd1dGY4Jyk7XG4gICAgdmFyIG5vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuXG4gICAgcGxhdGZvcm1PYmogPSB7XG4gICAgICBcImVuY29kZVwiOiBmdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gICAgICAgIHJldHVybiBuZXcgX2J1ZjJbJ2RlZmF1bHQnXS5Ob2RlQnVmZmVyKG5ldyBub2RlLkJ1ZmZlcihzdHIsIFwiVVRGLThcIikpO1xuICAgICAgfSxcbiAgICAgIFwiZGVjb2RlXCI6IGZ1bmN0aW9uIGRlY29kZShidWZmZXIsIGxlbmd0aCkge1xuICAgICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5Ob2RlQnVmZmVyKSB7XG4gICAgICAgICAgdmFyIHN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9uLFxuICAgICAgICAgICAgICBlbmQgPSBzdGFydCArIGxlbmd0aDtcbiAgICAgICAgICBidWZmZXIucG9zaXRpb24gPSBNYXRoLm1pbihlbmQsIGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiBidWZmZXIuX2J1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYyWydkZWZhdWx0J10uQ29tYmluZWRCdWZmZXIpIHtcbiAgICAgICAgICB2YXIgb3V0ID0gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoYnVmZmVyLCBsZW5ndGgsIGZ1bmN0aW9uIChwYXJ0QnVmZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2Rlci53cml0ZShwYXJ0QnVmZmVyLl9idWZmZXIpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLmVuZCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBkZWNvZGUgc3RyaW5ncyBmcm9tIGBcIiArIGJ1ZmZlciArIFwiYC5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9KSgpO1xufSBjYXRjaCAoZSkge1xuICB2YXIgdGV4dEVuY29kaW5nO1xuXG4gIChmdW5jdGlvbiAoKSB7XG5cbiAgICAvLyBOb3Qgb24gTm9kZUpTLCBhZGQgc2hpbSBmb3IgV2ViQVBJIFRleHRFbmNvZGVyL1RleHREZWNvZGVyXG4gICAgdGV4dEVuY29kaW5nID0gcmVxdWlyZSgnLi4vLi4vZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleCcpO1xuXG4gICAgdmFyIGVuY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHRFbmNvZGVyKFwidXRmLThcIik7XG4gICAgdmFyIGRlY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHREZWNvZGVyKFwidXRmLThcIik7XG5cbiAgICBwbGF0Zm9ybU9iaiA9IHtcbiAgICAgIFwiZW5jb2RlXCI6IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBfYnVmMlsnZGVmYXVsdCddLkhlYXBCdWZmZXIoZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXIpO1xuICAgICAgfSxcbiAgICAgIFwiZGVjb2RlXCI6IGZ1bmN0aW9uIGRlY29kZShidWZmZXIsIGxlbmd0aCkge1xuICAgICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5IZWFwQnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ1ZmZlci5yZWFkVmlldyhNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5sZW5ndGggLSBidWZmZXIucG9zaXRpb24pKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVjb2RpbmcgY29tYmluZWQgYnVmZmVyIGlzIGNvbXBsaWNhdGVkLiBGb3Igc2ltcGxpY2l0eSwgZm9yIG5vdyxcbiAgICAgICAgICAvLyB3ZSBzaW1wbHkgY29weSB0aGUgY29tYmluZWQgYnVmZmVyIGludG8gYSByZWd1bGFyIGJ1ZmZlciBhbmQgZGVjb2RlIHRoYXQuXG4gICAgICAgICAgdmFyIHRtcEJ1ZiA9IF9idWYyWydkZWZhdWx0J10uYWxsb2MobGVuZ3RoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0bXBCdWYud3JpdGVVSW50OChidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0bXBCdWYucmVzZXQoKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodG1wQnVmLnJlYWRWaWV3KGxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSkoKTtcbn1cblxudmFyIHN0cmVhbURlY29kZUNvbWJpbmVkQnVmZmVyID0gZnVuY3Rpb24gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoY29tYmluZWRCdWZmZXJzLCBsZW5ndGgsIGRlY29kZUZuLCBlbmRGbikge1xuICB2YXIgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBsZW5ndGg7XG4gIHZhciBwb3NpdGlvbiA9IGNvbWJpbmVkQnVmZmVycy5wb3NpdGlvbjtcbiAgY29tYmluZWRCdWZmZXJzLl91cGRhdGVQb3MoTWF0aC5taW4obGVuZ3RoLCBjb21iaW5lZEJ1ZmZlcnMubGVuZ3RoIC0gcG9zaXRpb24pKTtcbiAgLy8gUmVkdWNlIENvbWJpbmVkQnVmZmVycyB0byBhIGRlY29kZWQgc3RyaW5nXG4gIHZhciBvdXQgPSBjb21iaW5lZEJ1ZmZlcnMuX2J1ZmZlcnMucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBwYXJ0QnVmZmVyKSB7XG4gICAgaWYgKHJlbWFpbmluZ0J5dGVzVG9SZWFkIDw9IDApIHtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPj0gcGFydEJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHBvc2l0aW9uIC09IHBhcnRCdWZmZXIubGVuZ3RoO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MocG9zaXRpb24gLSBwYXJ0QnVmZmVyLnBvc2l0aW9uKTtcbiAgICAgIHZhciBieXRlc1RvUmVhZCA9IE1hdGgubWluKHBhcnRCdWZmZXIubGVuZ3RoIC0gcG9zaXRpb24sIHJlbWFpbmluZ0J5dGVzVG9SZWFkKTtcbiAgICAgIHZhciBsYXN0U2xpY2UgPSBwYXJ0QnVmZmVyLnJlYWRTbGljZShieXRlc1RvUmVhZCk7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MoYnl0ZXNUb1JlYWQpO1xuICAgICAgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBNYXRoLm1heChyZW1haW5pbmdCeXRlc1RvUmVhZCAtIGxhc3RTbGljZS5sZW5ndGgsIDApO1xuICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgcmV0dXJuIGxhc3QgKyBkZWNvZGVGbihsYXN0U2xpY2UpO1xuICAgIH1cbiAgfSwgJycpO1xuICByZXR1cm4gb3V0ICsgZW5kRm4oKTtcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHBsYXRmb3JtT2JqO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVGaWVsZExvb2t1cChrZXlzKSB7XG4gIHZhciBsb29rdXAgPSB7fTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpZHgpIHtcbiAgICBsb29rdXBbbmFtZV0gPSBpZHg7XG4gIH0pO1xuICByZXR1cm4gbG9va3VwO1xufVxuXG4vKipcbiAqIFJlY29yZHMgbWFrZSB1cCB0aGUgY29udGVudHMgb2YgdGhlIHtAbGluayBSZXN1bHR9LCBhbmQgaXMgaG93IHlvdSBhY2Nlc3NcbiAqIHRoZSBvdXRwdXQgb2YgYSBzdGF0ZW1lbnQuIEEgc2ltcGxlIHN0YXRlbWVudCBtaWdodCB5aWVsZCBhIHJlc3VsdCBzdHJlYW1cbiAqIHdpdGggYSBzaW5nbGUgcmVjb3JkLCBmb3IgaW5zdGFuY2U6XG4gKlxuICogICAgIE1BVENIICh1OlVzZXIpIFJFVFVSTiB1Lm5hbWUsIHUuYWdlXG4gKlxuICogVGhpcyByZXR1cm5zIGEgc3RyZWFtIG9mIHJlY29yZHMgd2l0aCB0d28gZmllbGRzLCBuYW1lZCBgdS5uYW1lYCBhbmQgYHUuYWdlYCxcbiAqIGVhY2ggcmVjb3JkIHJlcHJlc2VudHMgb25lIHVzZXIgZm91bmQgYnkgdGhlIHN0YXRlbWVudCBhYm92ZS4gWW91IGNhbiBhY2Nlc3NcbiAqIHRoZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBlaXRoZXIgYnkgbmFtZTpcbiAqXG4gKiAgICAgcmVjb3JkLmdldChcIm4ubmFtZVwiKVxuICpcbiAqIE9yIGJ5IGl0J3MgcG9zaXRpb246XG4gKlxuICogICAgIHJlY29yZC5nZXQoMClcbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBSZWNvcmQgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJlY29yZCBvYmplY3QuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGtleXMgQW4gYXJyYXkgb2YgZmllbGQga2V5cywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgYXBwZWFyXG4gICAqICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNvcmRcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkcyBBbiBhcnJheSBvZiBmaWVsZCB2YWx1ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkTG9va3VwIEFuIG9iamVjdCBvZiBmaWVsZE5hbWUgLT4gdmFsdWUgaW5kZXgsIHVzZWQgdG8gbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIG5hbWVzIHRvIHZhbHVlcy4gSWYgdGhpcyBpcyBudWxsLCBvbmUgd2lsbCBiZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlY29yZChrZXlzLCBmaWVsZHMpIHtcbiAgICB2YXIgZmllbGRMb29rdXAgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBudWxsIDogYXJndW1lbnRzWzJdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlY29yZCk7XG5cbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdGhpcy5fZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gZmllbGRMb29rdXAgfHwgZ2VuZXJhdGVGaWVsZExvb2t1cChrZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIGZvciBlYWNoIGZpZWxkIGluIHRoaXMgcmVjb3JkLiBUaGUgZnVuY3Rpb25cbiAgICogd2lsbCBnZXQgdGhyZWUgYXJndW1lbnRzIC0gdGhlIHZhbHVlLCB0aGUga2V5IGFuZCB0aGlzIHJlY29yZCwgaW4gdGhhdFxuICAgKiBvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHZpc2l0b3JcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlY29yZCwgW3tcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKHZpc2l0b3IpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZpc2l0b3IodGhpcy5fZmllbGRzW2ldLCB0aGlzLmtleXNbaV0sIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHZhbHVlIGZyb20gdGhpcyByZWNvcmQsIGVpdGhlciBieSBpbmRleCBvciBieSBmaWVsZCBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xOdW1iZXJ9IGtleSBGaWVsZCBrZXksIG9yIHRoZSBpbmRleCBvZiB0aGUgZmllbGQuXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHZhciBpbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICghKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIpKSB7XG4gICAgICAgIGluZGV4ID0gdGhpcy5fZmllbGRMb29rdXBba2V5XTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGtleSAnXCIgKyBrZXkgKyBcIicsIGF2YWlsYWJsZSBrZXkgYXJlOiBbXCIgKyB0aGlzLmtleXMgKyBcIl0uXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleCA9IGtleTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ID4gdGhpcy5fZmllbGRzLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGggaW5kZXggJ1wiICsgaW5kZXggKyBcIicuIFJlbWVtYmVyIHRoYXQgaW5kZXhlcyBzdGFydCBhdCBgMGAsIFwiICsgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tpbmRleF07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlY29yZDtcbn0pKCk7XG5cbmV4cG9ydHMuUmVjb3JkID0gUmVjb3JkOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZSgnLi9pbnRlZ2VyJyk7XG5cbi8qKlxuICAqIEEgUmVzdWx0U3VtbWFyeSBpbnN0YW5jZSBjb250YWlucyBzdHJ1Y3R1cmVkIG1ldGFkYXRhIGZvciBhIHtSZXN1bHR9LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cbnZhciBSZXN1bHRTdW1tYXJ5ID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gVGhlIHN0YXRlbWVudCB0aGlzIHN1bW1hcnkgaXMgZm9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBmb3IgdGhlIHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gbWV0YWRhdGEgLSBTdGF0ZW1lbnQgbWV0YWRhdGFcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVzdWx0U3VtbWFyeShzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIG1ldGFkYXRhKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc3VsdFN1bW1hcnkpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSB7IHRleHQ6IHN0YXRlbWVudCwgcGFyYW1ldGVyczogcGFyYW1ldGVycyB9O1xuICAgIHRoaXMuc3RhdGVtZW50VHlwZSA9IG1ldGFkYXRhLnR5cGU7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzID0gbmV3IFN0YXRlbWVudFN0YXRpc3RpY3MobWV0YWRhdGEuc3RhdHMgfHwge30pO1xuICAgIHRoaXMucGxhbiA9IG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSA/IG5ldyBQbGFuKG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSkgOiBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGUgPSBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFByb2ZpbGVkUGxhbihtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMuX2J1aWxkTm90aWZpY2F0aW9ucyhtZXRhZGF0YS5ub3RpZmljYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggRVhQTEFJTi5cbiAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUmVzdWx0U3VtbWFyeSwgW3tcbiAgICBrZXk6ICdfYnVpbGROb3RpZmljYXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2J1aWxkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSB7XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBuZXcgTm90aWZpY2F0aW9uKG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCBzdW1tYXJ5IGhhcyBhIHBsYW5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaGFzUGxhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1BsYW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGFuIGluc3RhbmNlb2YgUGxhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcHJvZmlsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdoYXNQcm9maWxlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUHJvZmlsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2ZpbGUgaW5zdGFuY2VvZiBQcm9maWxlZFBsYW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc3VsdFN1bW1hcnk7XG59KSgpO1xuXG52YXIgUGxhbiA9XG4vKipcbiAqIENyZWF0ZSBhIFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHBsYW4gLSBPYmplY3Qgd2l0aCBwbGFuIGRhdGFcbiAqL1xuZnVuY3Rpb24gUGxhbihwbGFuKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQbGFuKTtcblxuICB0aGlzLm9wZXJhdG9yVHlwZSA9IHBsYW4ub3BlcmF0b3JUeXBlO1xuICB0aGlzLmlkZW50aWZpZXJzID0gcGxhbi5pZGVudGlmaWVycztcbiAgdGhpcy5hcmd1bWVudHMgPSBwbGFuLmFyZ3M7XG4gIHRoaXMuY2hpbGRyZW4gPSBwbGFuLmNoaWxkcmVuID8gcGxhbi5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG5ldyBQbGFuKGNoaWxkKTtcbiAgfSkgOiBbXTtcbn1cblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggUFJPRklMRS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuO1xuXG52YXIgUHJvZmlsZWRQbGFuID1cbi8qKlxuICogQ3JlYXRlIGEgUHJvZmlsZWRQbGFuIGluc3RhbmNlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9maWxlIC0gT2JqZWN0IHdpdGggcHJvZmlsZSBkYXRhXG4gKi9cbmZ1bmN0aW9uIFByb2ZpbGVkUGxhbihwcm9maWxlKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQcm9maWxlZFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcHJvZmlsZS5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwcm9maWxlLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHByb2ZpbGUuYXJncztcbiAgdGhpcy5kYkhpdHMgPSBwcm9maWxlLmFyZ3MuRGJIaXRzLnRvSW50KCk7XG4gIHRoaXMucm93cyA9IHByb2ZpbGUuYXJncy5Sb3dzLnRvSW50KCk7XG4gIHRoaXMuY2hpbGRyZW4gPSBwcm9maWxlLmNoaWxkcmVuID8gcHJvZmlsZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9maWxlZFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufVxuXG4vKipcbiAgKiBHZXQgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbjtcblxudmFyIFN0YXRlbWVudFN0YXRpc3RpY3MgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogU3RydWN0dXJpemUgdGhlIHN0YXRpc3RpY3NcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNzIC0gUmVzdWx0IHN0YXRpc3RpY3NcbiAgICovXG5cbiAgZnVuY3Rpb24gU3RhdGVtZW50U3RhdGlzdGljcyhzdGF0aXN0aWNzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdGF0ZW1lbnRTdGF0aXN0aWNzKTtcblxuICAgIHRoaXMuX3N0YXRzID0ge1xuICAgICAgbm9kZXNDcmVhdGVkOiAwLFxuICAgICAgbm9kZXNEZWxldGVkOiAwLFxuICAgICAgcmVsYXRpb25zaGlwc0NyZWF0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzRGVsZXRlZDogMCxcbiAgICAgIHByb3BlcnRpZXNTZXQ6IDAsXG4gICAgICBsYWJlbHNBZGRlZDogMCxcbiAgICAgIGxhYmVsc1JlbW92ZWQ6IDAsXG4gICAgICBpbmRleGVzQWRkZWQ6IDAsXG4gICAgICBpbmRleGVzUmVtb3ZlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzQWRkZWQ6IDAsXG4gICAgICBjb25zdHJhaW50c1JlbW92ZWQ6IDBcbiAgICB9O1xuICAgIE9iamVjdC5rZXlzKHN0YXRpc3RpY3MpLmZvckVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAvL1RvIGNhbWVsQ2FzZVxuICAgICAgX3RoaXMuX3N0YXRzW2luZGV4LnJlcGxhY2UoLyhcXC1cXHcpL2csIGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHJldHVybiBtWzFdLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KV0gPSAoMCwgX2ludGVnZXIuaXNJbnQpKHN0YXRpc3RpY3NbaW5kZXhdKSA/IHN0YXRpc3RpY3NbaW5kZXhdLnRvSW50KCkgOiBzdGF0aXN0aWNzW2luZGV4XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgICogQ2xhc3MgZm9yIEN5cGhlciBub3RpZmljYXRpb25zXG4gICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgICovXG5cbiAgLyoqXG4gICAqIERpZCB0aGUgZGF0YWJhc2UgZ2V0IHVwZGF0ZWQ/XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTdGF0ZW1lbnRTdGF0aXN0aWNzLCBbe1xuICAgIGtleTogJ2NvbnRhaW5zVXBkYXRlcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnRhaW5zVXBkYXRlcygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fc3RhdHMpLnJlZHVjZShmdW5jdGlvbiAobGFzdCwgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gbGFzdCArIF90aGlzMi5fc3RhdHNbY3VycmVudF07XG4gICAgICB9LCAwKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBjcmVhdGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm9kZXNDcmVhdGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm9kZXNDcmVhdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLm5vZGVzQ3JlYXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0RlbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNEZWxldGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcmVsYXRpb25zaGlwcyBjcmVhdGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAncmVsYXRpb25zaGlwc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxhdGlvbnNoaXBzQ3JlYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5yZWxhdGlvbnNoaXBzQ3JlYXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxhdGlvbnNoaXBzRGVsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHNEZWxldGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNEZWxldGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcHJvcGVydGllcyBzZXQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdwcm9wZXJ0aWVzU2V0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvcGVydGllc1NldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5wcm9wZXJ0aWVzU2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIGFkZGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGFiZWxzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsYWJlbHNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNBZGRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGxhYmVscyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGFiZWxzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhYmVsc1JlbW92ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubGFiZWxzUmVtb3ZlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGluZGV4ZXMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzQWRkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuaW5kZXhlc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaW5kZXhlc1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzUmVtb3ZlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGNvbnRyYWludHMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb25zdHJhaW50c0FkZGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3RyYWludHNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5jb25zdHJhaW50c0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY29uc3RyYWludHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3RyYWludHNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzUmVtb3ZlZDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RhdGVtZW50U3RhdGlzdGljcztcbn0pKCk7XG5cbnZhciBOb3RpZmljYXRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgTm90aWZpY2F0aW9uIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gbm90aWZpY2F0aW9uIC0gT2JqZWN0IHdpdGggbm90aWZpY2F0aW9uIGRhdGFcbiAgICovXG5cbiAgZnVuY3Rpb24gTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb3RpZmljYXRpb24pO1xuXG4gICAgdGhpcy5jb2RlID0gbm90aWZpY2F0aW9uLmNvZGU7XG4gICAgdGhpcy50aXRsZSA9IG5vdGlmaWNhdGlvbi50aXRsZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gbm90aWZpY2F0aW9uLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuc2V2ZXJpdHkgPSBub3RpZmljYXRpb24uc2V2ZXJpdHk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IE5vdGlmaWNhdGlvbi5fY29uc3RydWN0UG9zaXRpb24obm90aWZpY2F0aW9uLnBvc2l0aW9uKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhOb3RpZmljYXRpb24sIG51bGwsIFt7XG4gICAga2V5OiAnX2NvbnN0cnVjdFBvc2l0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NvbnN0cnVjdFBvc2l0aW9uKHBvcykge1xuICAgICAgaWYgKCFwb3MpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LnRvSW50KCksXG4gICAgICAgIGxpbmU6IHBvcy5saW5lLnRvSW50KCksXG4gICAgICAgIGNvbHVtbjogcG9zLmNvbHVtbi50b0ludCgpXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOb3RpZmljYXRpb247XG59KSgpO1xuXG52YXIgc3RhdGVtZW50VHlwZSA9IHtcbiAgUkVBRF9PTkxZOiAncicsXG4gIFJFQURfV1JJVEU6ICdydycsXG4gIFdSSVRFX09OTFk6ICd3JyxcbiAgU0NIRU1BX1dSSVRFOiAncydcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgUmVzdWx0U3VtbWFyeTogUmVzdWx0U3VtbWFyeSxcbiAgc3RhdGVtZW50VHlwZTogc3RhdGVtZW50VHlwZVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9yZXN1bHRTdW1tYXJ5ID0gcmVxdWlyZSgnLi9yZXN1bHQtc3VtbWFyeScpO1xuXG4vLyBFbnN1cmUgUHJvbWlzZSBpcyBhdmFpbGFibGVcblxudmFyIF9leHRlcm5hbEVzNlByb21pc2UgPSByZXF1aXJlKCcuLi9leHRlcm5hbC9lczYtcHJvbWlzZScpO1xuXG4oMCwgX2V4dGVybmFsRXM2UHJvbWlzZS5wb2x5ZmlsbCkoKTtcblxuLyoqXG4gICogQSBzdHJlYW0gb2Yge0BsaW5rIFJlY29yZH0gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSBzdGF0ZW1lbnQuXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxudmFyIFJlc3VsdCA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBJbmplY3QgdGhlIG9ic2VydmVyIHRvIGJlIHVzZWQuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICogQHBhcmFtIHtTdHJlYW1PYnNlcnZlcn0gc3RyZWFtT2JzZXJ2ZXJcbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlc3VsdChzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc3VsdCk7XG5cbiAgICB0aGlzLl9zdHJlYW1PYnNlcnZlciA9IHN0cmVhbU9ic2VydmVyO1xuICAgIHRoaXMuX3AgPSBudWxsO1xuICAgIHRoaXMuX3N0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBuZXcgUHJvbWlzZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBuZXcgUHJvbWlzZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZXN1bHQsIFt7XG4gICAga2V5OiAnX2NyZWF0ZVByb21pc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlUHJvbWlzZSgpIHtcbiAgICAgIGlmICh0aGlzLl9wKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuX3AgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciByZWNvcmRzID0gW107XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICBvbk5leHQ6IGZ1bmN0aW9uIG9uTmV4dChyZWNvcmQpIHtcbiAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKHN1bW1hcnkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeyByZWNvcmRzOiByZWNvcmRzLCBzdW1tYXJ5OiBzdW1tYXJ5IH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNlbGYuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdhaXRzIGZvciBhbGwgcmVzdWx0cyBhbmQgY2FsbHMgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aXRoIHRoZSByZXN1bHRzLlxuICAgICAqIENhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHRoZSB7QGxpbmsgI3N1YnNjcmliZX0gZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlc3VsdDoge3JlY29yZHM6QXJyYXk8UmVjb3JkPn0pfSBvbkZ1bGZpbGxlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAndGhlbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLl9wLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhdGNoIGVycm9ycyB3aGVuIHVzaW5nIHByb21pc2VzLlxuICAgICAqIENhbm5vdCBiZSB1c2VkIHdpdGggdGhlIHN1YnNjcmliZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiB7bWVzc2FnZTpzdHJpbmcsIGNvZGU6c3RyaW5nfSl9IG9uUmVqZWN0ZWQgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgdXBvbiBlcnJvcnMuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NhdGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLl9wWydjYXRjaCddKG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSByZWNvcmRzIHRvIG9ic2VydmVyIGFzIHRoZXkgY29tZSBpbiwgdGhpcyBpcyBhIG1vcmUgZWZmaWNpZW50IG1ldGhvZFxuICAgICAqIG9mIGhhbmRsaW5nIHRoZSByZXN1bHRzLCBhbmQgYWxsb3dzIHlvdSB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciAtIE9ic2VydmVyIG9iamVjdFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBSZWNvcmQpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1ldGFkYXRhOiBPYmplY3QpfSBvYnNlcnZlci5vbkNvbXBsZXRlZCAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb2JzZXJ2ZXIub25FcnJvciAtIEhhbmRsZSBlcnJvcnMuXG4gICAgICogQHJldHVyblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc3Vic2NyaWJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgb25Db21wbGV0ZWRPcmlnaW5hbCA9IG9ic2VydmVyLm9uQ29tcGxldGVkO1xuICAgICAgdmFyIG9uQ29tcGxldGVkV3JhcHBlciA9IGZ1bmN0aW9uIG9uQ29tcGxldGVkV3JhcHBlcihtZXRhZGF0YSkge1xuICAgICAgICB2YXIgc3VtID0gbmV3IF9yZXN1bHRTdW1tYXJ5LlJlc3VsdFN1bW1hcnkoX3RoaXMuX3N0YXRlbWVudCwgX3RoaXMuX3BhcmFtZXRlcnMsIG1ldGFkYXRhKTtcbiAgICAgICAgb25Db21wbGV0ZWRPcmlnaW5hbC5jYWxsKG9ic2VydmVyLCBzdW0pO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkID0gb25Db21wbGV0ZWRXcmFwcGVyO1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9ic2VydmVyLm9uRXJyb3IgfHwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlVuY2F1Z2h0IGVycm9yIHdoZW4gcHJvY2Vzc2luZyByZXN1bHQ6IFwiICsgZXJyKTtcbiAgICAgIH07XG4gICAgICB0aGlzLl9zdHJlYW1PYnNlcnZlci5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZXN1bHQ7XG59KSgpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBSZXN1bHQ7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3Jlc3VsdCA9IHJlcXVpcmUoJy4vcmVzdWx0Jyk7XG5cbnZhciBfcmVzdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdCk7XG5cbnZhciBfdHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL3RyYW5zYWN0aW9uJyk7XG5cbnZhciBfdHJhbnNhY3Rpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHJhbnNhY3Rpb24pO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZShcIi4vZXJyb3JcIik7XG5cbi8qKlxuICAqIEEgU2Vzc2lvbiBpbnN0YW5jZSBpcyB1c2VkIGZvciBoYW5kbGluZyB0aGUgY29ubmVjdGlvbiBhbmRcbiAgKiBzZW5kaW5nIHN0YXRlbWVudHMgdGhyb3VnaCB0aGUgY29ubmVjdGlvbi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG52YXIgU2Vzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uIC0gQSBjb25uZWN0aW9uIHRvIHVzZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gY29ubmVjdGlvbiBjbG9zZVxuICAgKi9cblxuICBmdW5jdGlvbiBTZXNzaW9uKGNvbm4sIG9uQ2xvc2UpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Vzc2lvbik7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubjtcbiAgICB0aGlzLl9vbkNsb3NlID0gb25DbG9zZTtcbiAgICB0aGlzLl9oYXNUeCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW1lbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFNlc3Npb24sIFt7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCkge1xuICAgICAgdmFyIHBhcmFtZXRlcnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdvYmplY3QnICYmIHN0YXRlbWVudC50ZXh0KSB7XG4gICAgICAgIHBhcmFtZXRlcnMgPSBzdGF0ZW1lbnQucGFyYW1ldGVycyB8fCB7fTtcbiAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRleHQ7XG4gICAgICB9XG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyWydkZWZhdWx0J10oKTtcbiAgICAgIGlmICghdGhpcy5faGFzVHgpIHtcbiAgICAgICAgdGhpcy5fY29ubi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIHRoaXMuX2Nvbm4ucHVsbEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIHRoaXMuX2Nvbm4uc3luYygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtT2JzZXJ2ZXIub25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlN0YXRlbWVudHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBvbiBhIFwiICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIG9yIHVzZSBhIGRpZmZlcmVudCBzZXNzaW9uLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10oc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVnaW4gYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBzZXNzaW9uLiBBIHNlc3Npb24gY2FuIGhhdmUgYXQgbW9zdCBvbmUgdHJhbnNhY3Rpb24gcnVubmluZyBhdCBhIHRpbWUsIGlmIHlvdVxuICAgICAqIHdhbnQgdG8gcnVuIG11bHRpcGxlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zLCB5b3Ugc2hvdWxkIHVzZSBtdWx0aXBsZSBjb25jdXJyZW50IHNlc3Npb25zLlxuICAgICAqXG4gICAgICogV2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBvcGVuIHRoZSBzZXNzaW9uIGNhbm5vdCBiZSB1c2VkIHRvIHJ1biBzdGF0ZW1lbnRzIG91dHNpZGUgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSAtIE5ldyBUcmFuc2FjdGlvblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYmVnaW5UcmFuc2FjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5faGFzVHgpIHtcbiAgICAgICAgdGhyb3cgbmV3IF9lcnJvci5uZXdFcnJvcihcIllvdSBjYW5ub3QgYmVnaW4gYSB0cmFuc2FjdGlvbiBvbiBhIHNlc3Npb24gd2l0aCBhbiBcIiArIFwib3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24gb3IgdXNlIGEgXCIgKyBcImRpZmZlcmVudCBzZXNzaW9uLlwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faGFzVHggPSB0cnVlO1xuICAgICAgcmV0dXJuIG5ldyBfdHJhbnNhY3Rpb24yWydkZWZhdWx0J10odGhpcy5fY29ubiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5faGFzVHggPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoaXMgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNiIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBzZXNzaW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgICAqIEByZXR1cm5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB2YXIgY2IgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgaWYgKHRoaXMuX29uQ2xvc2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLl9vbkNsb3NlKGNiKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLl9vbkNsb3NlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2Vzc2lvbjtcbn0pKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFNlc3Npb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3Jlc3VsdCA9IHJlcXVpcmUoJy4vcmVzdWx0Jyk7XG5cbnZhciBfcmVzdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdCk7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHRyYW5zYWN0aW9uIGluIHRoZSBOZW80aiBkYXRhYmFzZS5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBUcmFuc2FjdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uIC0gQSBjb25uZWN0aW9uIHRvIHVzZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb3Igcm9sbGVkIGJhY2suXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFRyYW5zYWN0aW9uKGNvbm4sIG9uQ2xvc2UpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNhY3Rpb24pO1xuXG4gICAgdGhpcy5fY29ubiA9IGNvbm47XG4gICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpO1xuICAgIHRoaXMuX2Nvbm4ucnVuKFwiQkVHSU5cIiwge30sIHN0cmVhbU9ic2VydmVyKTtcbiAgICB0aGlzLl9jb25uLmRpc2NhcmRBbGwoc3RyZWFtT2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5BQ1RJVkU7XG4gICAgdGhpcy5fb25DbG9zZSA9IG9uQ2xvc2U7XG4gIH1cblxuICAvKiogSW50ZXJuYWwgc3RyZWFtIG9ic2VydmVyIHVzZWQgZm9yIHRyYW5zYWN0aW9uYWwgcmVzdWx0cyovXG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW0gZW50IGFuZCBwYXJhbWV0ZXJzIGFzIHNlcGFyYXRlIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2FjdGlvbiwgW3tcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZS5ydW4odGhpcy5fY29ubiwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1pdHMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbW1pdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5jb21taXQodGhpcy5fY29ubiwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpKTtcbiAgICAgIHRoaXMuX3N0YXRlID0gY29tbWl0dGVkLnN0YXRlO1xuICAgICAgLy9jbGVhbiB1cFxuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgcmV0dXJuIGNvbW1pdHRlZC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUm9sbGJhY2tzIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIEFmdGVyIHJvbGxpbmcgYmFjaywgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAncm9sbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByb2xsYmFjaygpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5yb2xsYmFjayh0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vbkVycm9yKCkge1xuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkZBSUxFRDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVHJhbnNhY3Rpb247XG59KSgpO1xuXG52YXIgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKF9TdHJlYW1PYnNlcnZlcikge1xuICBfaW5oZXJpdHMoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIF9TdHJlYW1PYnNlcnZlcik7XG5cbiAgZnVuY3Rpb24gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodHgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcbiAgICB0aGlzLl90eCA9IHR4O1xuICAgIC8vdGhpcyBpcyB0byB0byBhdm9pZCBtdWx0aXBsZSBjYWxscyB0byBvbkVycm9yIGNhdXNlZCBieSBJR05PUkVEXG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICAvKiogaW50ZXJuYWwgc3RhdGUgbWFjaGluZSBvZiB0aGUgdHJhbnNhY3Rpb24qL1xuXG4gIF9jcmVhdGVDbGFzcyhfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgdGhpcy5fdHguX29uRXJyb3IoKTtcbiAgICAgICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCB0aGlzKS5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KShfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSk7XG5cbnZhciBfc3RhdGVzID0ge1xuICAvL1RoZSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIHdpdGggbm8gZXhwbGljaXQgc3VjY2VzcyBvciBmYWlsdXJlIG1hcmtlZFxuICBBQ1RJVkU6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBfcnVuRGlzY2FyZEFsbChcIkNPTU1JVFwiLCBjb25uLCBvYnNlcnZlciksXG4gICAgICAgIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRCB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5EaXNjYXJkQWxsKFwiUk9MTEJBQ0tcIiwgY29ubiwgb2JzZXJ2ZXIpLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDSyB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubiwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgY29ubi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzIHx8IHt9LCBvYnNlcnZlcik7XG4gICAgICBjb25uLnB1bGxBbGwob2JzZXJ2ZXIpO1xuICAgICAgY29ubi5zeW5jKCk7XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9LFxuXG4gIC8vQW4gZXJyb3IgaGFzIG9jY3VycmVkLCB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgYW5kIG5vIG1vcmUgbWVzc2FnZXMgd2lsbFxuICAvLyBiZSBzZW50IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICBGQUlMRUQ6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgc3RhdGVtZW50cyBpbiB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2suIFBsZWFzZSBzdGFydCBhIG5ld1wiICsgXCIgdHJhbnNhY3Rpb24gdG8gcnVuIGFub3RoZXIgc3RhdGVtZW50LlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRCB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubiwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9UaGlzIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tbWl0dGVkXG4gIFNVQ0NFRURFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgY29tbWl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZCBvbiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2tcbiAgUk9MTEVEX0JBQ0s6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ydW5EaXNjYXJkQWxsKG1zZywgY29ubiwgb2JzZXJ2ZXIpIHtcbiAgY29ubi5ydW4obXNnLCB7fSwgb2JzZXJ2ZXIpO1xuICBjb25uLmRpc2NhcmRBbGwob2JzZXJ2ZXIpO1xuICBjb25uLnN5bmMoKTtcbiAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBtc2csIHt9KTtcbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gVHJhbnNhY3Rpb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gRE8gTk9UIENIQU5HRSBUSEUgVkVSU0lPTiBCRUxPVyBIRVJFXG4vLyBUaGlzIGlzIHNldCBieSB0aGUgYnVpbGQgc3lzdGVtIGF0IHJlbGVhc2UgdGltZSwgdXNpbmdcbi8vICAgZ3VscCBzZXQgLS12ZXJzaW9uIDxyZWxlYXNldmVyc2lvbj5cbi8vXG4vLyBUaGlzIGlzIHNldCB1cCB0aGlzIHdheSB0byBrZWVwIHRoZSB2ZXJzaW9uIGluIHRoZSBjb2RlIGluXG4vLyBzeW5jIHdpdGggdGhlIG5wbSBwYWNrYWdlIHZlcnNpb24sIGFuZCB0byBhbGxvdyB0aGUgYnVpbGRcbi8vIHN5c3RlbSB0byBjb250cm9sIHZlcnNpb24gbmFtZXMgYXQgcGFja2FnaW5nIHRpbWUuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0geyBWRVJTSU9OOiBcIjAuMC4wLWRldlwiIH07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsInZhciBhc24xID0gZXhwb3J0cztcblxuYXNuMS5iaWdudW0gPSByZXF1aXJlKCdibi5qcycpO1xuXG5hc24xLmRlZmluZSA9IHJlcXVpcmUoJy4vYXNuMS9hcGknKS5kZWZpbmU7XG5hc24xLmJhc2UgPSByZXF1aXJlKCcuL2FzbjEvYmFzZScpO1xuYXNuMS5jb25zdGFudHMgPSByZXF1aXJlKCcuL2FzbjEvY29uc3RhbnRzJyk7XG5hc24xLmRlY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2RlY29kZXJzJyk7XG5hc24xLmVuY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2VuY29kZXJzJyk7XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4uL2FzbjEnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChiYXNlKSB7XG4gIHZhciBuYW1lZDtcbiAgdHJ5IHtcbiAgICBuYW1lZCA9IHJlcXVpcmUoJ3ZtJykucnVuSW5UaGlzQ29udGV4dChcbiAgICAgICcoZnVuY3Rpb24gJyArIHRoaXMubmFtZSArICcoZW50aXR5KSB7XFxuJyArXG4gICAgICAnICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG4nICtcbiAgICAgICd9KSdcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbmFtZWQgPSBmdW5jdGlvbiAoZW50aXR5KSB7XG4gICAgICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcbiAgICB9O1xuICB9XG4gIGluaGVyaXRzKG5hbWVkLCBiYXNlKTtcbiAgbmFtZWQucHJvdG90eXBlLl9pbml0TmFtZWQgPSBmdW5jdGlvbiBpbml0bmFtZWQoZW50aXR5KSB7XG4gICAgYmFzZS5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBuYW1lZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5kZWNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZGVjb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlbmMpLmRlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldEVuY29kZXIgPSBmdW5jdGlvbiBfZ2V0RW5jb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGVuY29kZXJcbiAgaWYgKCF0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5lbmNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5lbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5mdW5jdGlvbiBEZWNvZGVyQnVmZmVyKGJhc2UsIG9wdGlvbnMpIHtcbiAgUmVwb3J0ZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYmFzZSkpIHtcbiAgICB0aGlzLmVycm9yKCdJbnB1dCBub3QgQnVmZmVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5iYXNlID0gYmFzZTtcbiAgdGhpcy5vZmZzZXQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IGJhc2UubGVuZ3RoO1xufVxuaW5oZXJpdHMoRGVjb2RlckJ1ZmZlciwgUmVwb3J0ZXIpO1xuZXhwb3J0cy5EZWNvZGVyQnVmZmVyID0gRGVjb2RlckJ1ZmZlcjtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgdmFyIHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIEVuY29kZXJCdWZmZXIodmFsdWUsIHJlcG9ydGVyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghKGl0ZW0gaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihvdXQsIG9mZnNldCkge1xuICBpZiAoIW91dClcbiAgICBvdXQgPSBuZXcgQnVmZmVyKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsInZhciBiYXNlID0gZXhwb3J0cztcblxuYmFzZS5SZXBvcnRlciA9IHJlcXVpcmUoJy4vcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmJhc2UuRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmJhc2UuRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmJhc2UuTm9kZSA9IHJlcXVpcmUoJy4vbm9kZScpO1xuIiwidmFyIFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZScpLlJlcG9ydGVyO1xudmFyIEVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRW5jb2RlckJ1ZmZlcjtcbnZhciBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZScpLkRlY29kZXJCdWZmZXI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG4vLyBTdXBwb3J0ZWQgdGFnc1xudmFyIHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JyxcbiAgJ2JpdHN0cicsICdibXBzdHInLCAnY2hhcnN0cicsICdnZW5zdHInLCAnZ3JhcGhzdHInLCAnaWE1c3RyJywgJ2lzbzY0NnN0cicsXG4gICdudW1zdHInLCAnb2N0c3RyJywgJ3ByaW50c3RyJywgJ3Q2MXN0cicsICd1bmlzdHInLCAndXRmOHN0cicsICd2aWRlb3N0cidcbl07XG5cbi8vIFB1YmxpYyBtZXRob2RzIGxpc3RcbnZhciBtZXRob2RzID0gW1xuICAna2V5JywgJ29iaicsICd1c2UnLCAnb3B0aW9uYWwnLCAnZXhwbGljaXQnLCAnaW1wbGljaXQnLCAnZGVmJywgJ2Nob2ljZScsXG4gICdhbnknLCAnY29udGFpbnMnXG5dLmNvbmNhdCh0YWdzKTtcblxuLy8gT3ZlcnJpZGVkIG1ldGhvZHMgbGlzdFxudmFyIG92ZXJyaWRlZCA9IFtcbiAgJ19wZWVrVGFnJywgJ19kZWNvZGVUYWcnLCAnX3VzZScsXG4gICdfZGVjb2RlU3RyJywgJ19kZWNvZGVPYmppZCcsICdfZGVjb2RlVGltZScsXG4gICdfZGVjb2RlTnVsbCcsICdfZGVjb2RlSW50JywgJ19kZWNvZGVCb29sJywgJ19kZWNvZGVMaXN0JyxcblxuICAnX2VuY29kZUNvbXBvc2l0ZScsICdfZW5jb2RlU3RyJywgJ19lbmNvZGVPYmppZCcsICdfZW5jb2RlVGltZScsXG4gICdfZW5jb2RlTnVsbCcsICdfZW5jb2RlSW50JywgJ19lbmNvZGVCb29sJ1xuXTtcblxuZnVuY3Rpb24gTm9kZShlbmMsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB7fTtcbiAgdGhpcy5fYmFzZVN0YXRlID0gc3RhdGU7XG5cbiAgc3RhdGUuZW5jID0gZW5jO1xuXG4gIHN0YXRlLnBhcmVudCA9IHBhcmVudCB8fCBudWxsO1xuICBzdGF0ZS5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLy8gU3RhdGVcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuYXJncyA9IG51bGw7XG4gIHN0YXRlLnJldmVyc2VBcmdzID0gbnVsbDtcbiAgc3RhdGUuY2hvaWNlID0gbnVsbDtcbiAgc3RhdGUub3B0aW9uYWwgPSBmYWxzZTtcbiAgc3RhdGUuYW55ID0gZmFsc2U7XG4gIHN0YXRlLm9iaiA9IGZhbHNlO1xuICBzdGF0ZS51c2UgPSBudWxsO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gbnVsbDtcbiAgc3RhdGUua2V5ID0gbnVsbDtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IG51bGw7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICBzdGF0ZS5jb250YWlucyA9IG51bGw7XG5cbiAgLy8gU2hvdWxkIGNyZWF0ZSBuZXcgaW5zdGFuY2Ugb24gZWFjaCBtZXRob2RcbiAgaWYgKCFzdGF0ZS5wYXJlbnQpIHtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMuX3dyYXAoKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBOb2RlO1xuXG52YXIgc3RhdGVQcm9wcyA9IFtcbiAgJ2VuYycsICdwYXJlbnQnLCAnY2hpbGRyZW4nLCAndGFnJywgJ2FyZ3MnLCAncmV2ZXJzZUFyZ3MnLCAnY2hvaWNlJyxcbiAgJ29wdGlvbmFsJywgJ2FueScsICdvYmonLCAndXNlJywgJ2FsdGVyZWRVc2UnLCAna2V5JywgJ2RlZmF1bHQnLCAnZXhwbGljaXQnLFxuICAnaW1wbGljaXQnLCAnY29udGFpbnMnXG5dO1xuXG5Ob2RlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBjc3RhdGUgPSB7fTtcbiAgc3RhdGVQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICBjc3RhdGVbcHJvcF0gPSBzdGF0ZVtwcm9wXTtcbiAgfSk7XG4gIHZhciByZXMgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcihjc3RhdGUucGFyZW50KTtcbiAgcmVzLl9iYXNlU3RhdGUgPSBjc3RhdGU7XG4gIHJldHVybiByZXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fd3JhcCA9IGZ1bmN0aW9uIHdyYXAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgIHRoaXNbbWV0aG9kXSA9IGZ1bmN0aW9uIF93cmFwcGVkTWV0aG9kKCkge1xuICAgICAgdmFyIGNsb25lID0gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5wdXNoKGNsb25lKTtcbiAgICAgIHJldHVybiBjbG9uZVttZXRob2RdLmFwcGx5KGNsb25lLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sIHRoaXMpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGJvZHkpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBib2R5LmNhbGwodGhpcyk7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuXG4gIHN0YXRlLmNoaWxkcmVuID0gc3RhdGUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID09PSB0aGlzO1xuICB9LCB0aGlzKTtcbiAgYXNzZXJ0LmVxdWFsKHN0YXRlLmNoaWxkcmVuLmxlbmd0aCwgMSwgJ1Jvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3VzZUFyZ3MgPSBmdW5jdGlvbiB1c2VBcmdzKGFyZ3MpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIEZpbHRlciBjaGlsZHJlbiBhbmQgYXJnc1xuICB2YXIgY2hpbGRyZW4gPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvcjtcbiAgfSwgdGhpcyk7XG4gIGFyZ3MgPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gIShhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5jaGlsZHJlbiA9PT0gbnVsbCk7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgIC8vIFJlcGxhY2UgcGFyZW50IHRvIG1haW50YWluIGJhY2t3YXJkIGxpbmtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9IHRoaXM7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmFyZ3MgPT09IG51bGwpO1xuICAgIHN0YXRlLmFyZ3MgPSBhcmdzO1xuICAgIHN0YXRlLnJldmVyc2VBcmdzID0gYXJncy5tYXAoZnVuY3Rpb24oYXJnKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcgfHwgYXJnLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpXG4gICAgICAgIHJldHVybiBhcmc7XG5cbiAgICAgIHZhciByZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGFyZykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSAoa2V5IHwgMCkpXG4gICAgICAgICAga2V5IHw9IDA7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFyZ1trZXldO1xuICAgICAgICByZXNbdmFsdWVdID0ga2V5O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuICB9XG59O1xuXG4vL1xuLy8gT3ZlcnJpZGVkIG1ldGhvZHNcbi8vXG5cbm92ZXJyaWRlZC5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBOb2RlLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gX292ZXJyaWRlZCgpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogJyArIHN0YXRlLmVuYyk7XG4gIH07XG59KTtcblxuLy9cbi8vIFB1YmxpYyBtZXRob2RzXG4vL1xuXG50YWdzLmZvckVhY2goZnVuY3Rpb24odGFnKSB7XG4gIE5vZGUucHJvdG90eXBlW3RhZ10gPSBmdW5jdGlvbiBfdGFnTWV0aG9kKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBhc3NlcnQoc3RhdGUudGFnID09PSBudWxsKTtcbiAgICBzdGF0ZS50YWcgPSB0YWc7XG5cbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59KTtcblxuTm9kZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGl0ZW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmRlZiA9IGZ1bmN0aW9uIGRlZih2YWwpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub2JqID0gZnVuY3Rpb24gb2JqKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmtleSA9PT0gbnVsbCk7XG4gIHN0YXRlLmtleSA9IG5ld0tleTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uIGFueSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUuY29udGFpbnMgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vIERlY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIHZhciByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICB2YXIgcHJlc2VudCA9IHRydWU7XG5cbiAgdmFyIHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICB2YXIgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgdmFyIHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIHZhciBleHBsaWNpdCA9IHRoaXMuX2RlY29kZVRhZyhpbnB1dCwgc3RhdGUuZXhwbGljaXQpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoZXhwbGljaXQpKVxuICAgICAgICByZXR1cm4gZXhwbGljaXQ7XG4gICAgICBpbnB1dCA9IGV4cGxpY2l0O1xuICAgIH1cblxuICAgIHZhciBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHZhciBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgcmVzdWx0ID0gcmVzdWx0O1xuICAgIGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgZWxzZVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIHZhciBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9tbWl0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB0aGlzLmV4aXRLZXkoaW5kZXgpO1xuICBpZiAoc3RhdGUub2JqICE9PSBudWxsKVxuICAgIHN0YXRlLm9ialtrZXldID0gdmFsdWU7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbignLycpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyT2JqZWN0ID0gZnVuY3Rpb24gZW50ZXJPYmplY3QoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIHZhciBlcnI7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIGluaGVyaXRlZCA9IG1zZyBpbnN0YW5jZW9mIFJlcG9ydGVyRXJyb3I7XG4gIGlmIChpbmhlcml0ZWQpIHtcbiAgICBlcnIgPSBtc2c7XG4gIH0gZWxzZSB7XG4gICAgZXJyID0gbmV3IFJlcG9ydGVyRXJyb3Ioc3RhdGUucGF0aC5tYXAoZnVuY3Rpb24oZWxlbSkge1xuICAgICAgcmV0dXJuICdbJyArIEpTT04uc3RyaW5naWZ5KGVsZW0pICsgJ10nO1xuICAgIH0pLmpvaW4oJycpLCBtc2cubWVzc2FnZSB8fCBtc2csIG1zZy5zdGFjayk7XG4gIH1cblxuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICB0aHJvdyBlcnI7XG5cbiAgaWYgKCFpbmhlcml0ZWQpXG4gICAgc3RhdGUuZXJyb3JzLnB1c2goZXJyKTtcblxuICByZXR1cm4gZXJyO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLndyYXBSZXN1bHQgPSBmdW5jdGlvbiB3cmFwUmVzdWx0KHJlc3VsdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufTtcbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCJ2YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJyk7XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZyk7XG4iLCJ2YXIgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICB2YXIgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICB2YXIgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xudmFyIGJpZ251bSA9IGFzbjEuYmlnbnVtO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRGVjb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBiYXNlLkRlY29kZXJCdWZmZXIpKVxuICAgIGRhdGEgPSBuZXcgYmFzZS5EZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLnRyZWUuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsICdGYWlsZWQgdG8gcGVlayB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuXG4gIHJldHVybiBkZWNvZGVkVGFnLnRhZyA9PT0gdGFnIHx8IGRlY29kZWRUYWcudGFnU3RyID09PSB0YWcgfHxcbiAgICAoZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnKSA9PT0gdGFnIHx8IGFueTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUYWcgPSBmdW5jdGlvbiBkZWNvZGVUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgICBidWZmZXIsXG4gICAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKVxuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIsICdkZXInLCBvcHRpb25zKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSAmJiBwb3NzaWJsZUVuZClcbiAgICAgIGJyZWFrO1xuICAgIHJlc3VsdC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVTdHIgPSBmdW5jdGlvbiBkZWNvZGVTdHIoYnVmZmVyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICB2YXIgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIHZhciBzdHIgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgdmFyIG51bXN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKG51bXN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBudW1zdHI7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2N0c3RyJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgdmFyIHByaW50c3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihwcmludHN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByaW50c3RyO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgKyAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVPYmppZCA9IGZ1bmN0aW9uIGRlY29kZU9iamlkKGJ1ZmZlciwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgdmFyIGlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIHZhciBmaXJzdCA9IChpZGVudGlmaWVyc1swXSAvIDQwKSB8IDA7XG4gIHZhciBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICB2YXIgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIHZhciBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoMiwgNCkgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoYnVmZmVyKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICB2YXIgcmF3ID0gYnVmZmVyLnJhdygpO1xuICB2YXIgcmVzID0gbmV3IGJpZ251bShyYXcpO1xuXG4gIGlmICh2YWx1ZXMpXG4gICAgcmVzID0gdmFsdWVzW3Jlcy50b1N0cmluZygxMCldIHx8IHJlcztcblxuICByZXR1cm4gcmVzO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RGVjb2RlcignZGVyJykudHJlZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBkZXJEZWNvZGVUYWcoYnVmLCBmYWlsKSB7XG4gIHZhciB0YWcgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IodGFnKSlcbiAgICByZXR1cm4gdGFnO1xuXG4gIHZhciBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICB2YXIgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIHZhciBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICB2YXIgdGFnU3RyID0gZGVyLnRhZ1t0YWddO1xuXG4gIHJldHVybiB7XG4gICAgY2xzOiBjbHMsXG4gICAgcHJpbWl0aXZlOiBwcmltaXRpdmUsXG4gICAgdGFnOiB0YWcsXG4gICAgdGFnU3RyOiB0YWdTdHJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVyRGVjb2RlTGVuKGJ1ZiwgcHJpbWl0aXZlLCBmYWlsKSB7XG4gIHZhciBsZW4gPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIC8vIEluZGVmaW5pdGUgZm9ybVxuICBpZiAoIXByaW1pdGl2ZSAmJiBsZW4gPT09IDB4ODApXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgLy8gRGVmaW5pdGUgZm9ybVxuICBpZiAoKGxlbiAmIDB4ODApID09PSAwKSB7XG4gICAgLy8gU2hvcnQgZm9ybVxuICAgIHJldHVybiBsZW47XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgdmFyIG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPj0gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICB2YXIgaiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgaWYgKGJ1Zi5pc0Vycm9yKGopKVxuICAgICAgcmV0dXJuIGo7XG4gICAgbGVuIHw9IGo7XG4gIH1cblxuICByZXR1cm4gbGVuO1xufVxuIiwidmFyIGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIERFUkRlY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1EZWNvZGVyKGVudGl0eSkge1xuICBERVJEZWNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgdmFyIGxhYmVsID0gb3B0aW9ucy5sYWJlbC50b1VwcGVyQ2FzZSgpO1xuXG4gIHZhciByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgdmFyIHN0YXJ0ID0gLTE7XG4gIHZhciBlbmQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIHZhciBiYXNlNjQgPSBsaW5lcy5zbGljZShzdGFydCArIDEsIGVuZCkuam9pbignJyk7XG4gIC8vIFJlbW92ZSBleGNlc3NpdmUgc3ltYm9sc1xuICBiYXNlNjQucmVwbGFjZSgvW15hLXowLTlcXCtcXC89XSsvZ2ksICcnKTtcblxuICB2YXIgaW5wdXQgPSBuZXcgQnVmZmVyKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkVuY29kZXI7XG5cbkRFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpLmpvaW4oKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkge1xuICB2YXIgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgdmFyIGxlbk9jdGV0cyA9IDE7XG4gIGZvciAodmFyIGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigxICsgMSArIGxlbk9jdGV0cyk7XG4gIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gIGhlYWRlclsxXSA9IDB4ODAgfCBsZW5PY3RldHM7XG5cbiAgZm9yICh2YXIgaSA9IDEgKyBsZW5PY3RldHMsIGogPSBjb250ZW50Lmxlbmd0aDsgaiA+IDA7IGktLSwgaiA+Pj0gOClcbiAgICBoZWFkZXJbaV0gPSBqICYgMHhmZjtcblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVTdHIgPSBmdW5jdGlvbiBlbmNvZGVTdHIoc3RyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIHN0ci51bnVzZWQgfCAwLCBzdHIuZGF0YSBdKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzXFwuXSsvZyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICBpZCA9IGlkLnNsaWNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3Q6ICcgKyBKU09OLnN0cmluZ2lmeShpZCkpO1xuICB9XG5cbiAgaWYgKCFyZWxhdGl2ZSkge1xuICAgIGlmIChpZFsxXSA+PSA0MClcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0InKTtcbiAgICBpZC5zcGxpY2UoMCwgMiwgaWRbMF0gKiA0MCArIGlkWzFdKTtcbiAgfVxuXG4gIC8vIENvdW50IG51bWJlciBvZiBvY3RldHNcbiAgdmFyIHNpemUgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgZm9yIChzaXplKys7IGlkZW50ID49IDB4ODA7IGlkZW50ID4+PSA3KVxuICAgICAgc2l6ZSsrO1xuICB9XG5cbiAgdmFyIG9iamlkID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgdmFyIG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAodmFyIGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICB2YXIgc3RyO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xuXG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSAlIDEwMCksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihzdHIsICdvY3RzdHInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVOdWxsID0gZnVuY3Rpb24gZW5jb2RlTnVsbCgpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoJycpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0sIHZhbHVlcykge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkobnVtKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1ZhbHVlcyBtYXAgZG9lc25cXCd0IGNvbnRhaW46ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobnVtKSk7XG4gICAgfVxuICAgIG51bSA9IHZhbHVlc1tudW1dO1xuICB9XG5cbiAgLy8gQmlnbnVtLCBhc3N1bWUgYmlnIGVuZGlhblxuICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgJiYgIUJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gbmV3IEJ1ZmZlcihudW1BcnJheSk7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgc2l6ZSA9IG51bS5sZW5ndGg7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBzaXplKys7XG5cbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMFxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKHZhciBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobmV3IEJ1ZmZlcihvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZGF0YSA9IGRhdGFCdWZmZXIuam9pbigpO1xuICBpZiAoc3RhdGUuZGVmYXVsdEJ1ZmZlciA9PT0gdW5kZWZpbmVkKVxuICAgIHN0YXRlLmRlZmF1bHRCdWZmZXIgPSB0aGlzLl9lbmNvZGVWYWx1ZShzdGF0ZVsnZGVmYXVsdCddLCByZXBvcnRlciwgcGFyZW50KS5qb2luKCk7XG5cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChpPTA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkYXRhW2ldICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyW2ldKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCByZXBvcnRlcikge1xuICB2YXIgcmVzO1xuXG4gIGlmICh0YWcgPT09ICdzZXFvZicpXG4gICAgdGFnID0gJ3NlcSc7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ3NldG9mJylcbiAgICB0YWcgPSAnc2V0JztcblxuICBpZiAoZGVyLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eSh0YWcpKVxuICAgIHJlcyA9IGRlci50YWdCeU5hbWVbdGFnXTtcbiAgZWxzZSBpZiAodHlwZW9mIHRhZyA9PT0gJ251bWJlcicgJiYgKHRhZyB8IDApID09PSB0YWcpXG4gICAgcmVzID0gdGFnO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdVbmtub3duIHRhZzogJyArIHRhZyk7XG5cbiAgaWYgKHJlcyA+PSAweDFmKVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkJyk7XG5cbiAgaWYgKCFwcmltaXRpdmUpXG4gICAgcmVzIHw9IDB4MjA7XG5cbiAgcmVzIHw9IChkZXIudGFnQ2xhc3NCeU5hbWVbY2xzIHx8ICd1bml2ZXJzYWwnXSA8PCA2KTtcblxuICByZXR1cm4gcmVzO1xufVxuIiwidmFyIGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTUVuY29kZXIsIERFUkVuY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1FbmNvZGVyO1xuXG5QRU1FbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgdmFyIHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB2YXIgb3V0ID0gWyAnLS0tLS1CRUdJTiAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScgXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSArPSA2NClcbiAgICBvdXQucHVzaChwLnNsaWNlKGksIGkgKyA2NCkpO1xuICBvdXQucHVzaCgnLS0tLS1FTkQgJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nKTtcbiAgcmV0dXJuIG91dC5qb2luKCdcXG4nKTtcbn07XG4iLCJ2YXIgbG9va3VwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nO1xuXG47KGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuICB2YXIgQXJyID0gKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJylcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IEFycmF5XG5cblx0dmFyIFBMVVMgICA9ICcrJy5jaGFyQ29kZUF0KDApXG5cdHZhciBTTEFTSCAgPSAnLycuY2hhckNvZGVBdCgwKVxuXHR2YXIgTlVNQkVSID0gJzAnLmNoYXJDb2RlQXQoMClcblx0dmFyIExPV0VSICA9ICdhJy5jaGFyQ29kZUF0KDApXG5cdHZhciBVUFBFUiAgPSAnQScuY2hhckNvZGVBdCgwKVxuXHR2YXIgUExVU19VUkxfU0FGRSA9ICctJy5jaGFyQ29kZUF0KDApXG5cdHZhciBTTEFTSF9VUkxfU0FGRSA9ICdfJy5jaGFyQ29kZUF0KDApXG5cblx0ZnVuY3Rpb24gZGVjb2RlIChlbHQpIHtcblx0XHR2YXIgY29kZSA9IGVsdC5jaGFyQ29kZUF0KDApXG5cdFx0aWYgKGNvZGUgPT09IFBMVVMgfHxcblx0XHQgICAgY29kZSA9PT0gUExVU19VUkxfU0FGRSlcblx0XHRcdHJldHVybiA2MiAvLyAnKydcblx0XHRpZiAoY29kZSA9PT0gU0xBU0ggfHxcblx0XHQgICAgY29kZSA9PT0gU0xBU0hfVVJMX1NBRkUpXG5cdFx0XHRyZXR1cm4gNjMgLy8gJy8nXG5cdFx0aWYgKGNvZGUgPCBOVU1CRVIpXG5cdFx0XHRyZXR1cm4gLTEgLy9ubyBtYXRjaFxuXHRcdGlmIChjb2RlIDwgTlVNQkVSICsgMTApXG5cdFx0XHRyZXR1cm4gY29kZSAtIE5VTUJFUiArIDI2ICsgMjZcblx0XHRpZiAoY29kZSA8IFVQUEVSICsgMjYpXG5cdFx0XHRyZXR1cm4gY29kZSAtIFVQUEVSXG5cdFx0aWYgKGNvZGUgPCBMT1dFUiArIDI2KVxuXHRcdFx0cmV0dXJuIGNvZGUgLSBMT1dFUiArIDI2XG5cdH1cblxuXHRmdW5jdGlvbiBiNjRUb0J5dGVBcnJheSAoYjY0KSB7XG5cdFx0dmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcblxuXHRcdGlmIChiNjQubGVuZ3RoICUgNCA+IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG5cdFx0fVxuXG5cdFx0Ly8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcblx0XHQvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0XG5cdFx0Ly8gcmVwcmVzZW50IG9uZSBieXRlXG5cdFx0Ly8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG5cdFx0Ly8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZVxuXHRcdHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cdFx0cGxhY2VIb2xkZXJzID0gJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDIpID8gMiA6ICc9JyA9PT0gYjY0LmNoYXJBdChsZW4gLSAxKSA/IDEgOiAwXG5cblx0XHQvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcblx0XHRhcnIgPSBuZXcgQXJyKGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuXHRcdC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcblx0XHRsID0gcGxhY2VIb2xkZXJzID4gMCA/IGI2NC5sZW5ndGggLSA0IDogYjY0Lmxlbmd0aFxuXG5cdFx0dmFyIEwgPSAwXG5cblx0XHRmdW5jdGlvbiBwdXNoICh2KSB7XG5cdFx0XHRhcnJbTCsrXSA9IHZcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz0gNCwgaiArPSAzKSB7XG5cdFx0XHR0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDE4KSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDEyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMikpIDw8IDYpIHwgZGVjb2RlKGI2NC5jaGFyQXQoaSArIDMpKVxuXHRcdFx0cHVzaCgodG1wICYgMHhGRjAwMDApID4+IDE2KVxuXHRcdFx0cHVzaCgodG1wICYgMHhGRjAwKSA+PiA4KVxuXHRcdFx0cHVzaCh0bXAgJiAweEZGKVxuXHRcdH1cblxuXHRcdGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMikgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA+PiA0KVxuXHRcdFx0cHVzaCh0bXAgJiAweEZGKVxuXHRcdH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG5cdFx0XHR0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDEwKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDQpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPj4gMilcblx0XHRcdHB1c2goKHRtcCA+PiA4KSAmIDB4RkYpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFyclxuXHR9XG5cblx0ZnVuY3Rpb24gdWludDhUb0Jhc2U2NCAodWludDgpIHtcblx0XHR2YXIgaSxcblx0XHRcdGV4dHJhQnl0ZXMgPSB1aW50OC5sZW5ndGggJSAzLCAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuXHRcdFx0b3V0cHV0ID0gXCJcIixcblx0XHRcdHRlbXAsIGxlbmd0aFxuXG5cdFx0ZnVuY3Rpb24gZW5jb2RlIChudW0pIHtcblx0XHRcdHJldHVybiBsb29rdXAuY2hhckF0KG51bSlcblx0XHR9XG5cblx0XHRmdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuXHRcdFx0cmV0dXJuIGVuY29kZShudW0gPj4gMTggJiAweDNGKSArIGVuY29kZShudW0gPj4gMTIgJiAweDNGKSArIGVuY29kZShudW0gPj4gNiAmIDB4M0YpICsgZW5jb2RlKG51bSAmIDB4M0YpXG5cdFx0fVxuXG5cdFx0Ly8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuXHRcdGZvciAoaSA9IDAsIGxlbmd0aCA9IHVpbnQ4Lmxlbmd0aCAtIGV4dHJhQnl0ZXM7IGkgPCBsZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0dGVtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcblx0XHRcdG91dHB1dCArPSB0cmlwbGV0VG9CYXNlNjQodGVtcClcblx0XHR9XG5cblx0XHQvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG5cdFx0c3dpdGNoIChleHRyYUJ5dGVzKSB7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdHRlbXAgPSB1aW50OFt1aW50OC5sZW5ndGggLSAxXVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKHRlbXAgPj4gMilcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCA0KSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSAnPT0nXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdHRlbXAgPSAodWludDhbdWludDgubGVuZ3RoIC0gMl0gPDwgOCkgKyAodWludDhbdWludDgubGVuZ3RoIC0gMV0pXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAxMClcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA+PiA0KSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUoKHRlbXAgPDwgMikgJiAweDNGKVxuXHRcdFx0XHRvdXRwdXQgKz0gJz0nXG5cdFx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG5cblx0ZXhwb3J0cy50b0J5dGVBcnJheSA9IGI2NFRvQnl0ZUFycmF5XG5cdGV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IHVpbnQ4VG9CYXNlNjRcbn0odHlwZW9mIGV4cG9ydHMgPT09ICd1bmRlZmluZWQnID8gKHRoaXMuYmFzZTY0anMgPSB7fSkgOiBleHBvcnRzKSlcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXggKHN0ciwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByIDw8PSA0O1xuXG4gICAgICAvLyAnYScgLSAnZidcbiAgICAgIGlmIChjID49IDQ5ICYmIGMgPD0gNTQpIHtcbiAgICAgICAgciB8PSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJyAtICdGJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3ICYmIGMgPD0gMjIpIHtcbiAgICAgICAgciB8PSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciB8PSBjICYgMHhmO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQpIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICAvLyBTY2FuIDI0LWJpdCBjaHVua3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBudW1iZXJcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gNiwgaiA9IDA7IGkgPj0gc3RhcnQ7IGkgLT0gNikge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgaSwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgLy8gTk9URTogYDB4M2ZmZmZmYCBpcyBpbnRlbnRpb25hbCBoZXJlLCAyNmJpdHMgbWF4IHNoaWZ0ICsgMjRiaXQgaGV4IGxpbWJcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICAgIG9mZiArPSAyNDtcbiAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICBqKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpICsgNiAhPT0gc3RhcnQpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIHN0YXJ0LCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgfVxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICBpZiAod2luZG93LmNyeXB0byAmJiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIE1vZGVybiBicm93c2Vyc1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cubXNDcnlwdG8gJiYgd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIElFXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyXG4gIHRyeSB7XG4gICAgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeScgKyAncHRvJyk7XG5cbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMobik7XG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gIH1cbn1cbiIsbnVsbCwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG52YXIgcm9vdFBhcmVudCA9IHt9XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gU2FmYXJpIDUtNyBsYWNrcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgYE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3JgIHByb3BlcnR5XG4gKiAgICAgb24gb2JqZWN0cy5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIGZ1bmN0aW9uIEJhciAoKSB7fVxuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5mb28gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9XG4gICAgYXJyLmNvbnN0cnVjdG9yID0gQmFyXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgYXJyLmNvbnN0cnVjdG9yID09PSBCYXIgJiYgLy8gY29uc3RydWN0b3IgY2FuIGJlIHNldFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG4vKipcbiAqIENsYXNzOiBCdWZmZXJcbiAqID09PT09PT09PT09PT1cbiAqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGFyZSBhdWdtZW50ZWRcbiAqIHdpdGggZnVuY3Rpb24gcHJvcGVydGllcyBmb3IgYWxsIHRoZSBub2RlIGBCdWZmZXJgIEFQSSBmdW5jdGlvbnMuIFdlIHVzZVxuICogYFVpbnQ4QXJyYXlgIHNvIHRoYXQgc3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXQgcmV0dXJuc1xuICogYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogQnkgYXVnbWVudGluZyB0aGUgaW5zdGFuY2VzLCB3ZSBjYW4gYXZvaWQgbW9kaWZ5aW5nIHRoZSBgVWludDhBcnJheWBcbiAqIHByb3RvdHlwZS5cbiAqL1xuZnVuY3Rpb24gQnVmZmVyIChhcmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAvLyBBdm9pZCBnb2luZyB0aHJvdWdoIGFuIEFyZ3VtZW50c0FkYXB0b3JUcmFtcG9saW5lIGluIHRoZSBjb21tb24gY2FzZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHJldHVybiBuZXcgQnVmZmVyKGFyZywgYXJndW1lbnRzWzFdKVxuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZylcbiAgfVxuXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDBcbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmcm9tTnVtYmVyKHRoaXMsIGFyZylcbiAgfVxuXG4gIC8vIFNsaWdodGx5IGxlc3MgY29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoaXMsIGFyZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiAndXRmOCcpXG4gIH1cblxuICAvLyBVbnVzdWFsLlxuICByZXR1cm4gZnJvbU9iamVjdCh0aGlzLCBhcmcpXG59XG5cbmZ1bmN0aW9uIGZyb21OdW1iZXIgKHRoYXQsIGxlbmd0aCkge1xuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGxlbmd0aCkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgLy8gQXNzdW1wdGlvbjogYnl0ZUxlbmd0aCgpIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgPCBrTWF4TGVuZ3RoLlxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcblxuICB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHJldHVybiBmcm9tQnVmZmVyKHRoYXQsIG9iamVjdClcblxuICBpZiAoaXNBcnJheShvYmplY3QpKSByZXR1cm4gZnJvbUFycmF5KHRoYXQsIG9iamVjdClcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtdXN0IHN0YXJ0IHdpdGggbnVtYmVyLCBidWZmZXIsIGFycmF5IG9yIHN0cmluZycpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChvYmplY3QuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBmcm9tVHlwZWRBcnJheSh0aGF0LCBvYmplY3QpXG4gICAgfVxuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCBvYmplY3QpXG4gICAgfVxuICB9XG5cbiAgaWYgKG9iamVjdC5sZW5ndGgpIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iamVjdClcblxuICByZXR1cm4gZnJvbUpzb25PYmplY3QodGhhdCwgb2JqZWN0KVxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyICh0aGF0LCBidWZmZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYnVmZmVyLmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIGJ1ZmZlci5jb3B5KHRoYXQsIDAsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5ICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLy8gRHVwbGljYXRlIG9mIGZyb21BcnJheSgpIHRvIGtlZXAgZnJvbUFycmF5KCkgbW9ub21vcnBoaWMuXG5mdW5jdGlvbiBmcm9tVHlwZWRBcnJheSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgLy8gVHJ1bmNhdGluZyB0aGUgZWxlbWVudHMgaXMgcHJvYmFibHkgbm90IHdoYXQgcGVvcGxlIGV4cGVjdCBmcm9tIHR5cGVkXG4gIC8vIGFycmF5cyB3aXRoIEJZVEVTX1BFUl9FTEVNRU5UID4gMSBidXQgaXQncyBjb21wYXRpYmxlIHdpdGggdGhlIGJlaGF2aW9yXG4gIC8vIG9mIHRoZSBvbGQgQnVmZmVyIGNvbnN0cnVjdG9yLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICBhcnJheS5ieXRlTGVuZ3RoXG4gICAgdGhhdCA9IEJ1ZmZlci5fYXVnbWVudChuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tVHlwZWRBcnJheSh0aGF0LCBuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8vIERlc2VyaWFsaXplIHsgdHlwZTogJ0J1ZmZlcicsIGRhdGE6IFsxLDIsMywuLi5dIH0gaW50byBhIEJ1ZmZlciBvYmplY3QuXG4vLyBSZXR1cm5zIGEgemVyby1sZW5ndGggYnVmZmVyIGZvciBpbnB1dHMgdGhhdCBkb24ndCBjb25mb3JtIHRvIHRoZSBzcGVjLlxuZnVuY3Rpb24gZnJvbUpzb25PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICB2YXIgYXJyYXlcbiAgdmFyIGxlbmd0aCA9IDBcblxuICBpZiAob2JqZWN0LnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqZWN0LmRhdGEpKSB7XG4gICAgYXJyYXkgPSBvYmplY3QuZGF0YVxuICAgIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgfVxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxufSBlbHNlIHtcbiAgLy8gcHJlLXNldCBmb3IgdmFsdWVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBmdXR1cmVcbiAgQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSB1bmRlZmluZWRcbiAgQnVmZmVyLnByb3RvdHlwZS5wYXJlbnQgPSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gYWxsb2NhdGUgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGxlbmd0aCkpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhhdC5faXNCdWZmZXIgPSB0cnVlXG4gIH1cblxuICB2YXIgZnJvbVBvb2wgPSBsZW5ndGggIT09IDAgJiYgbGVuZ3RoIDw9IEJ1ZmZlci5wb29sU2l6ZSA+Pj4gMVxuICBpZiAoZnJvbVBvb2wpIHRoYXQucGFyZW50ID0gcm9vdFBhcmVudFxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAoc3ViamVjdCwgZW5jb2RpbmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNsb3dCdWZmZXIpKSByZXR1cm4gbmV3IFNsb3dCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG4gIGRlbGV0ZSBidWYucGFyZW50XG4gIHJldHVybiBidWZcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIHZhciBpID0gMFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgYnJlYWtcblxuICAgICsraVxuICB9XG5cbiAgaWYgKGkgIT09IGxlbikge1xuICAgIHggPSBhW2ldXG4gICAgeSA9IGJbaV1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAncmF3JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMuJylcblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgaXRlbS5jb3B5KGJ1ZiwgcG9zKVxuICAgIHBvcyArPSBpdGVtLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHN0cmluZyA9ICcnICsgc3RyaW5nXG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAvLyBEZXByZWNhdGVkXG4gICAgICBjYXNlICdyYXcnOlxuICAgICAgY2FzZSAncmF3cyc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgc3RhcnQgPSBzdGFydCB8IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBJbmZpbml0eSA/IHRoaXMubGVuZ3RoIDogZW5kIHwgMFxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG4gIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGJpbmFyeVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gMFxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYilcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0KSB7XG4gIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgYnl0ZU9mZnNldCA+Pj0gMFxuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG4gIGlmIChieXRlT2Zmc2V0ID49IHRoaXMubGVuZ3RoKSByZXR1cm4gLTFcblxuICAvLyBOZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoICsgYnl0ZU9mZnNldCwgMClcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xIC8vIHNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nIGFsd2F5cyBmYWlsc1xuICAgIHJldHVybiBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcywgdmFsLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIFsgdmFsIF0sIGJ5dGVPZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0KSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAodmFyIGkgPSAwOyBieXRlT2Zmc2V0ICsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltieXRlT2Zmc2V0ICsgaV0gPT09IHZhbFtmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleF0pIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWwubGVuZ3RoKSByZXR1cm4gYnl0ZU9mZnNldCArIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbi8vIGBnZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5nZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLnJlYWRVSW50OChvZmZzZXQpXG59XG5cbi8vIGBzZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gc2V0ICh2LCBvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5zZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLndyaXRlVUludDgodiwgb2Zmc2V0KVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJpbmFyeVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3dhcCA9IGVuY29kaW5nXG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSBsZW5ndGggfCAwXG4gICAgbGVuZ3RoID0gc3dhcFxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBiaW5hcnlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGJpbmFyeVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSBCdWZmZXIuX2F1Z21lbnQodGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSlcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyBpKyspIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdCdWYubGVuZ3RoKSBuZXdCdWYucGFyZW50ID0gdGhpcy5wYXJlbnQgfHwgdGhpc1xuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZSBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyBpKyspIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgaSsrKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IHZhbHVlIDwgMCA/IDEgOiAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gdmFsdWUgPCAwID8gMSA6IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWUgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5fc2V0KHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIGZpbGwodmFsdWUsIHN0YXJ0PTAsIGVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCkgZW5kID0gdGhpcy5sZW5ndGhcblxuICBpZiAoZW5kIDwgc3RhcnQpIHRocm93IG5ldyBSYW5nZUVycm9yKCdlbmQgPCBzdGFydCcpXG5cbiAgLy8gRmlsbCAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpc1tpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IHV0ZjhUb0J5dGVzKHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXNbaV0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBgQXJyYXlCdWZmZXJgIHdpdGggdGhlICpjb3BpZWQqIG1lbW9yeSBvZiB0aGUgYnVmZmVyIGluc3RhbmNlLlxuICogQWRkZWQgaW4gTm9kZSAwLjEyLiBPbmx5IGF2YWlsYWJsZSBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgQXJyYXlCdWZmZXIuXG4gKi9cbkJ1ZmZlci5wcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIgKCkge1xuICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgICByZXR1cm4gKG5ldyBCdWZmZXIodGhpcykpLmJ1ZmZlclxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgpXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYnVmLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGJ1ZltpXSA9IHRoaXNbaV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBidWYuYnVmZmVyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1ZmZlci50b0FycmF5QnVmZmVyIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyJylcbiAgfVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBCUCA9IEJ1ZmZlci5wcm90b3R5cGVcblxuLyoqXG4gKiBBdWdtZW50IGEgVWludDhBcnJheSAqaW5zdGFuY2UqIChub3QgdGhlIFVpbnQ4QXJyYXkgY2xhc3MhKSB3aXRoIEJ1ZmZlciBtZXRob2RzXG4gKi9cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIF9hdWdtZW50IChhcnIpIHtcbiAgYXJyLmNvbnN0cnVjdG9yID0gQnVmZmVyXG4gIGFyci5faXNCdWZmZXIgPSB0cnVlXG5cbiAgLy8gc2F2ZSByZWZlcmVuY2UgdG8gb3JpZ2luYWwgVWludDhBcnJheSBzZXQgbWV0aG9kIGJlZm9yZSBvdmVyd3JpdGluZ1xuICBhcnIuX3NldCA9IGFyci5zZXRcblxuICAvLyBkZXByZWNhdGVkXG4gIGFyci5nZXQgPSBCUC5nZXRcbiAgYXJyLnNldCA9IEJQLnNldFxuXG4gIGFyci53cml0ZSA9IEJQLndyaXRlXG4gIGFyci50b1N0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0xvY2FsZVN0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0pTT04gPSBCUC50b0pTT05cbiAgYXJyLmVxdWFscyA9IEJQLmVxdWFsc1xuICBhcnIuY29tcGFyZSA9IEJQLmNvbXBhcmVcbiAgYXJyLmluZGV4T2YgPSBCUC5pbmRleE9mXG4gIGFyci5jb3B5ID0gQlAuY29weVxuICBhcnIuc2xpY2UgPSBCUC5zbGljZVxuICBhcnIucmVhZFVJbnRMRSA9IEJQLnJlYWRVSW50TEVcbiAgYXJyLnJlYWRVSW50QkUgPSBCUC5yZWFkVUludEJFXG4gIGFyci5yZWFkVUludDggPSBCUC5yZWFkVUludDhcbiAgYXJyLnJlYWRVSW50MTZMRSA9IEJQLnJlYWRVSW50MTZMRVxuICBhcnIucmVhZFVJbnQxNkJFID0gQlAucmVhZFVJbnQxNkJFXG4gIGFyci5yZWFkVUludDMyTEUgPSBCUC5yZWFkVUludDMyTEVcbiAgYXJyLnJlYWRVSW50MzJCRSA9IEJQLnJlYWRVSW50MzJCRVxuICBhcnIucmVhZEludExFID0gQlAucmVhZEludExFXG4gIGFyci5yZWFkSW50QkUgPSBCUC5yZWFkSW50QkVcbiAgYXJyLnJlYWRJbnQ4ID0gQlAucmVhZEludDhcbiAgYXJyLnJlYWRJbnQxNkxFID0gQlAucmVhZEludDE2TEVcbiAgYXJyLnJlYWRJbnQxNkJFID0gQlAucmVhZEludDE2QkVcbiAgYXJyLnJlYWRJbnQzMkxFID0gQlAucmVhZEludDMyTEVcbiAgYXJyLnJlYWRJbnQzMkJFID0gQlAucmVhZEludDMyQkVcbiAgYXJyLnJlYWRGbG9hdExFID0gQlAucmVhZEZsb2F0TEVcbiAgYXJyLnJlYWRGbG9hdEJFID0gQlAucmVhZEZsb2F0QkVcbiAgYXJyLnJlYWREb3VibGVMRSA9IEJQLnJlYWREb3VibGVMRVxuICBhcnIucmVhZERvdWJsZUJFID0gQlAucmVhZERvdWJsZUJFXG4gIGFyci53cml0ZVVJbnQ4ID0gQlAud3JpdGVVSW50OFxuICBhcnIud3JpdGVVSW50TEUgPSBCUC53cml0ZVVJbnRMRVxuICBhcnIud3JpdGVVSW50QkUgPSBCUC53cml0ZVVJbnRCRVxuICBhcnIud3JpdGVVSW50MTZMRSA9IEJQLndyaXRlVUludDE2TEVcbiAgYXJyLndyaXRlVUludDE2QkUgPSBCUC53cml0ZVVJbnQxNkJFXG4gIGFyci53cml0ZVVJbnQzMkxFID0gQlAud3JpdGVVSW50MzJMRVxuICBhcnIud3JpdGVVSW50MzJCRSA9IEJQLndyaXRlVUludDMyQkVcbiAgYXJyLndyaXRlSW50TEUgPSBCUC53cml0ZUludExFXG4gIGFyci53cml0ZUludEJFID0gQlAud3JpdGVJbnRCRVxuICBhcnIud3JpdGVJbnQ4ID0gQlAud3JpdGVJbnQ4XG4gIGFyci53cml0ZUludDE2TEUgPSBCUC53cml0ZUludDE2TEVcbiAgYXJyLndyaXRlSW50MTZCRSA9IEJQLndyaXRlSW50MTZCRVxuICBhcnIud3JpdGVJbnQzMkxFID0gQlAud3JpdGVJbnQzMkxFXG4gIGFyci53cml0ZUludDMyQkUgPSBCUC53cml0ZUludDMyQkVcbiAgYXJyLndyaXRlRmxvYXRMRSA9IEJQLndyaXRlRmxvYXRMRVxuICBhcnIud3JpdGVGbG9hdEJFID0gQlAud3JpdGVGbG9hdEJFXG4gIGFyci53cml0ZURvdWJsZUxFID0gQlAud3JpdGVEb3VibGVMRVxuICBhcnIud3JpdGVEb3VibGVCRSA9IEJQLndyaXRlRG91YmxlQkVcbiAgYXJyLmZpbGwgPSBCUC5maWxsXG4gIGFyci5pbnNwZWN0ID0gQlAuaW5zcGVjdFxuICBhcnIudG9BcnJheUJ1ZmZlciA9IEJQLnRvQXJyYXlCdWZmZXJcblxuICByZXR1cm4gYXJyXG59XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJ2YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG5pbmhlcml0cyhDaXBoZXJCYXNlLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgdGhpcy5fZGVjb2RlciA9IG51bGxcbiAgdGhpcy5fZW5jb2RpbmcgPSBudWxsXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgaW5wdXRFbmMsIG91dHB1dEVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgaW5wdXRFbmMpXG4gIH1cbiAgdmFyIG91dERhdGEgPSB0aGlzLl91cGRhdGUoZGF0YSlcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKCkge31cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX2ZpbmFsKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnIgPSBlXG4gIH0gZmluYWxseSB7XG4gICAgZG9uZShlcnIpXG4gIH1cbn1cbkNpcGhlckJhc2UucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0ID0gZnVuY3Rpb24gKG91dHB1dEVuYykge1xuICB2YXIgb3V0RGF0YSA9IHRoaXMuX2ZpbmFsKCkgfHwgbmV3IEJ1ZmZlcignJylcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbmFsKSB7XG4gIGlmICghdGhpcy5fZGVjb2Rlcikge1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNcbiAgfVxuICBpZiAodGhpcy5fZW5jb2RpbmcgIT09IGVuYykge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FuXFwndCBzd2l0Y2ggZW5jb2RpbmdzJylcbiAgfVxuICB2YXIgb3V0ID0gdGhpcy5fZGVjb2Rlci53cml0ZSh2YWx1ZSlcbiAgaWYgKGZpbmFsKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFQ0RIKGN1cnZlKSB7XG5cdHJldHVybiBuZXcgRUNESChjdXJ2ZSk7XG59O1xuXG52YXIgYWxpYXNlcyA9IHtcblx0c2VjcDI1NmsxOiB7XG5cdFx0bmFtZTogJ3NlY3AyNTZrMScsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0c2VjcDIyNHIxOiB7XG5cdFx0bmFtZTogJ3AyMjQnLFxuXHRcdGJ5dGVMZW5ndGg6IDI4XG5cdH0sXG5cdHByaW1lMjU2djE6IHtcblx0XHRuYW1lOiAncDI1NicsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0cHJpbWUxOTJ2MToge1xuXHRcdG5hbWU6ICdwMTkyJyxcblx0XHRieXRlTGVuZ3RoOiAyNFxuXHR9LFxuXHRlZDI1NTE5OiB7XG5cdFx0bmFtZTogJ2VkMjU1MTknLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AzODRyMToge1xuXHRcdG5hbWU6ICdwMzg0Jyxcblx0XHRieXRlTGVuZ3RoOiA0OFxuXHR9LFxuXHRzZWNwNTIxcjE6IHtcblx0XHRuYW1lOiAncDUyMScsXG5cdFx0Ynl0ZUxlbmd0aDogNjZcblx0fVxufTtcblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjE7XG5hbGlhc2VzLnAyNTYgPSBhbGlhc2VzLnNlY3AyNTZyMSA9IGFsaWFzZXMucHJpbWUyNTZ2MTtcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxO1xuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjE7XG5hbGlhc2VzLnA1MjEgPSBhbGlhc2VzLnNlY3A1MjFyMTtcblxuZnVuY3Rpb24gRUNESChjdXJ2ZSkge1xuXHR0aGlzLmN1cnZlVHlwZSA9IGFsaWFzZXNbY3VydmVdO1xuXHRpZiAoIXRoaXMuY3VydmVUeXBlICkge1xuXHRcdHRoaXMuY3VydmVUeXBlID0ge1xuXHRcdFx0bmFtZTogY3VydmVcblx0XHR9O1xuXHR9XG5cdHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSk7XG5cdHRoaXMua2V5cyA9IHZvaWQgMDtcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpO1xuXHRyZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpO1xufTtcblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuXHRpbmVuYyA9IGluZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG5cdFx0b3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYyk7XG5cdH1cblx0dmFyIG90aGVyUHViID0gdGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKG90aGVyKS5nZXRQdWJsaWMoKTtcblx0dmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCk7XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcblx0dmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpO1xuXHRpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuXHRcdGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuXHRcdFx0a2V5WzBdID0gNztcblx0XHR9IGVsc2Uge1xuXHRcdFx0a2V5IFswXSA9IDY7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKTtcbn07XG5cbkVDREgucHJvdG90eXBlLnNldFB1YmxpY0tleSA9IGZ1bmN0aW9uIChwdWIsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG5cdFx0cHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG5cdH1cblx0dGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuXHRcdHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG5cdH1cblx0dmFyIF9wcml2ID0gbmV3IEJOKHByaXYpO1xuXHRfcHJpdiA9IF9wcml2LnRvU3RyaW5nKDE2KTtcblx0dGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jLCBsZW4pIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGJuKSkge1xuXHRcdGJuID0gYm4udG9BcnJheSgpO1xuXHR9XG5cdHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKTtcblx0aWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG5cdFx0dmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKTtcblx0XHR6ZXJvcy5maWxsKDApO1xuXHRcdGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKTtcblx0fVxuXHRpZiAoIWVuYykge1xuXHRcdHJldHVybiBidWY7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuXHR9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgbWQ1ID0gcmVxdWlyZSgnLi9tZDUnKVxudmFyIHJtZDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2hOb0NvbnN0cnVjdG9yKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG4gIHRoaXMuYnVmZmVycyA9IFtdXG59XG5cbmluaGVyaXRzKEhhc2hOb0NvbnN0cnVjdG9yLCBCYXNlKVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuYnVmZmVycy5wdXNoKGRhdGEpXG59XG5cbkhhc2hOb0NvbnN0cnVjdG9yLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuYnVmZmVycylcbiAgdmFyIHIgPSB0aGlzLl9oYXNoKGJ1ZilcbiAgdGhpcy5idWZmZXJzID0gbnVsbFxuXG4gIHJldHVybiByXG59XG5cbmZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKCdtZDUnID09PSBhbGcpIHJldHVybiBuZXcgSGFzaE5vQ29uc3RydWN0b3IobWQ1KVxuICBpZiAoJ3JtZDE2MCcgPT09IGFsZyB8fCAncmlwZW1kMTYwJyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKHJtZDE2MClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50U2l6ZSA9IDQ7XG52YXIgemVyb0J1ZmZlciA9IG5ldyBCdWZmZXIoaW50U2l6ZSk7IHplcm9CdWZmZXIuZmlsbCgwKTtcbnZhciBjaHJzeiA9IDg7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pIHtcbiAgaWYgKChidWYubGVuZ3RoICUgaW50U2l6ZSkgIT09IDApIHtcbiAgICB2YXIgbGVuID0gYnVmLmxlbmd0aCArIChpbnRTaXplIC0gKGJ1Zi5sZW5ndGggJSBpbnRTaXplKSk7XG4gICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB6ZXJvQnVmZmVyXSwgbGVuKTtcbiAgfVxuXG4gIHZhciBhcnIgPSBbXTtcbiAgdmFyIGZuID0gYmlnRW5kaWFuID8gYnVmLnJlYWRJbnQzMkJFIDogYnVmLnJlYWRJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkgKz0gaW50U2l6ZSkge1xuICAgIGFyci5wdXNoKGZuLmNhbGwoYnVmLCBpKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIoYXJyLCBzaXplLCBiaWdFbmRpYW4pIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi53cml0ZUludDMyQkUgOiBidWYud3JpdGVJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGZuLmNhbGwoYnVmLCBhcnJbaV0sIGkgKiA0LCB0cnVlKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5mdW5jdGlvbiBoYXNoKGJ1ZiwgZm4sIGhhc2hTaXplLCBiaWdFbmRpYW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gbmV3IEJ1ZmZlcihidWYpO1xuICB2YXIgYXJyID0gZm4odG9BcnJheShidWYsIGJpZ0VuZGlhbiksIGJ1Zi5sZW5ndGggKiBjaHJzeik7XG4gIHJldHVybiB0b0J1ZmZlcihhcnIsIGhhc2hTaXplLCBiaWdFbmRpYW4pO1xufVxuZXhwb3J0cy5oYXNoID0gaGFzaDsiLCIndXNlIHN0cmljdCc7XG4vKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZVxuICogRGlnZXN0IEFsZ29yaXRobSwgYXMgZGVmaW5lZCBpbiBSRkMgMTMyMS5cbiAqIFZlcnNpb24gMi4xIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuXG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG4vKlxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aFxuICovXG5mdW5jdGlvbiBjb3JlX21kNSh4LCBsZW4pXG57XG4gIC8qIGFwcGVuZCBwYWRkaW5nICovXG4gIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgKChsZW4pICUgMzIpO1xuICB4WygoKGxlbiArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBsZW47XG5cbiAgdmFyIGEgPSAgMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9ICAyNzE3MzM4Nzg7XG5cbiAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KVxuICB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuXG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDBdLCA3ICwgLTY4MDg3NjkzNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDFdLCAxMiwgLTM4OTU2NDU4Nik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDJdLCAxNywgIDYwNjEwNTgxOSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDNdLCAyMiwgLTEwNDQ1MjUzMzApO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA0XSwgNyAsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA1XSwgMTIsICAxMjAwMDgwNDI2KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsgNl0sIDE3LCAtMTQ3MzIzMTM0MSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDddLCAyMiwgLTQ1NzA1OTgzKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgOF0sIDcgLCAgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTcsIC00MjA2Myk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTFdLCAyMiwgLTE5OTA0MDQxNjIpO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKzEyXSwgNyAsICAxODA0NjAzNjgyKTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsxM10sIDEyLCAtNDAzNDExMDEpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1X2ZmKGIsIGMsIGQsIGEsIHhbaSsxNV0sIDIyLCAgMTIzNjUzNTMyOSk7XG5cbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgMV0sIDUgLCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgNl0sIDkgLCAtMTA2OTUwMTYzMik7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTFdLCAxNCwgIDY0MzcxNzcxMyk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDBdLCAyMCwgLTM3Mzg5NzMwMik7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDVdLCA1ICwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTBdLCA5ICwgIDM4MDE2MDgzKTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDUgLCAgNTY4NDQ2NDM4KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsxNF0sIDkgLCAtMTAxOTgwMzY5MCk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krIDNdLCAxNCwgLTE4NzM2Mzk2MSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDhdLCAyMCwgIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKzEzXSwgNSAsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgMl0sIDkgLCAtNTE0MDM3ODQpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyA3XSwgMTQsICAxNzM1MzI4NDczKTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsxMl0sIDIwLCAtMTkyNjYwNzczNCk7XG5cbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgNV0sIDQgLCAtMzc4NTU4KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgOF0sIDExLCAtMjAyMjU3NDQ2Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTFdLCAxNiwgIDE4MzkwMzA1NjIpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDFdLCA0ICwgLTE1MzA5OTIwNjApO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyA0XSwgMTEsICAxMjcyODkzMzUzKTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE2LCAtMTU1NDk3NjMyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxMF0sIDIzLCAtMTA5NDczMDY0MCk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krMTNdLCA0ICwgIDY4MTI3OTE3NCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDBdLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDZdLCAyMywgIDc2MDI5MTg5KTtcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDQgLCAtNjQwMzY0NDg3KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsxMl0sIDExLCAtNDIxODE1ODM1KTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE2LCAgNTMwNzQyNTIwKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcblxuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyAwXSwgNiAsIC0xOTg2MzA4NDQpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyA3XSwgMTAsICAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDVdLCAyMSwgLTU3NDM0MDU1KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDYgLCAgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTUsIC0xMDUxNTIzKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDhdLCA2ICwgIDE4NzMzMTMzNTkpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKzE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKzEzXSwgMjEsICAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDYgLCAtMTQ1NTIzMDcwKTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDJdLCAxNSwgIDcxODc4NzI1OSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDldLCAyMSwgLTM0MzQ4NTU1MSk7XG5cbiAgICBhID0gc2FmZV9hZGQoYSwgb2xkYSk7XG4gICAgYiA9IHNhZmVfYWRkKGIsIG9sZGIpO1xuICAgIGMgPSBzYWZlX2FkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZV9hZGQoZCwgb2xkZCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5KGEsIGIsIGMsIGQpO1xuXG59XG5cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5mdW5jdGlvbiBtZDVfY21uKHEsIGEsIGIsIHgsIHMsIHQpXG57XG4gIHJldHVybiBzYWZlX2FkZChiaXRfcm9sKHNhZmVfYWRkKHNhZmVfYWRkKGEsIHEpLCBzYWZlX2FkZCh4LCB0KSksIHMpLGIpO1xufVxuZnVuY3Rpb24gbWQ1X2ZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9nZyhhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaGgoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9paShhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbihjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5mdW5jdGlvbiBzYWZlX2FkZCh4LCB5KVxue1xuICB2YXIgbHN3ID0gKHggJiAweEZGRkYpICsgKHkgJiAweEZGRkYpO1xuICB2YXIgbXN3ID0gKHggPj4gMTYpICsgKHkgPj4gMTYpICsgKGxzdyA+PiAxNik7XG4gIHJldHVybiAobXN3IDw8IDE2KSB8IChsc3cgJiAweEZGRkYpO1xufVxuXG4vKlxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxuICovXG5mdW5jdGlvbiBiaXRfcm9sKG51bSwgY250KVxue1xuICByZXR1cm4gKG51bSA8PCBjbnQpIHwgKG51bSA+Pj4gKDMyIC0gY250KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWQ1KGJ1Zikge1xuICByZXR1cm4gaGVscGVycy5oYXNoKGJ1ZiwgY29yZV9tZDUsIDE2KTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9icm93c2VyJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cblxudmFyIFpFUk9TID0gbmV3IEJ1ZmZlcigxMjgpXG5aRVJPUy5maWxsKDApXG5cbmZ1bmN0aW9uIEhtYWMoYWxnLCBrZXkpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gbmV3IEJ1ZmZlcihrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGNyZWF0ZUhhc2goYWxnKS51cGRhdGUoa2V5KS5kaWdlc3QoKVxuXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBuZXcgQnVmZmVyKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIFRyYW5zZm9ybSlcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhLCBlbmMpXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSG1hYy5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG5cbiAgbmV4dCgpXG59XG5cbkhtYWMucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChuZXh0KSB7XG4gIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuXG4gIHJldHVybiBjcmVhdGVIYXNoKHRoaXMuX2FsZykudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShoKS5kaWdlc3QoZW5jKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhtYWMoYWxnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoT2JqZWN0LmtleXMocmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduL2FsZ29zJykpKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG47W1xuICAnQ2lwaGVyJyxcbiAgJ2NyZWF0ZUNpcGhlcicsXG4gICdDaXBoZXJpdicsXG4gICdjcmVhdGVDaXBoZXJpdicsXG4gICdEZWNpcGhlcicsXG4gICdjcmVhdGVEZWNpcGhlcicsXG4gICdEZWNpcGhlcml2JyxcbiAgJ2NyZWF0ZURlY2lwaGVyaXYnLFxuICAnZ2V0Q2lwaGVycycsXG4gICdsaXN0Q2lwaGVycydcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGFlc1trZXldXG59KVxuXG52YXIgZGggPSByZXF1aXJlKCdkaWZmaWUtaGVsbG1hbicpXG47W1xuICAnRGlmZmllSGVsbG1hbkdyb3VwJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdnZXREaWZmaWVIZWxsbWFuJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW4nLFxuICAnRGlmZmllSGVsbG1hbidcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGRoW2tleV1cbn0pXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcbjtbXG4gICdjcmVhdGVTaWduJyxcbiAgJ1NpZ24nLFxuICAnY3JlYXRlVmVyaWZ5JyxcbiAgJ1ZlcmlmeSdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHNpZ25ba2V5XVxufSlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuO1tcbiAgJ3B1YmxpY0VuY3J5cHQnLFxuICAncHJpdmF0ZUVuY3J5cHQnLFxuICAncHVibGljRGVjcnlwdCcsXG4gICdwcml2YXRlRGVjcnlwdCdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHB1YmxpY0VuY3J5cHRba2V5XVxufSlcblxuLy8gdGhlIGxlYXN0IEkgY2FuIGRvIGlzIG1ha2UgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSByZXN0IG9mIHRoZSBub2RlLmpzL2NyeXB0byBhcGkuXG47W1xuICAnY3JlYXRlQ3JlZGVudGlhbHMnXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgZXhwb3J0c1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgJ3NvcnJ5LCAnICsgbmFtZSArICcgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgICAnd2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMnLFxuICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgICBdLmpvaW4oJ1xcbicpKVxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnV0aWxzID0gcmVxdWlyZSgnLi9kZXMvdXRpbHMnKTtcbmV4cG9ydHMuQ2lwaGVyID0gcmVxdWlyZSgnLi9kZXMvY2lwaGVyJyk7XG5leHBvcnRzLkRFUyA9IHJlcXVpcmUoJy4vZGVzL2RlcycpO1xuZXhwb3J0cy5DQkMgPSByZXF1aXJlKCcuL2Rlcy9jYmMnKTtcbmV4cG9ydHMuRURFID0gcmVxdWlyZSgnLi9kZXMvZWRlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgcHJvdG8gPSB7fTtcblxuZnVuY3Rpb24gQ0JDU3RhdGUoaXYpIHtcbiAgYXNzZXJ0LmVxdWFsKGl2Lmxlbmd0aCwgOCwgJ0ludmFsaWQgSVYgbGVuZ3RoJyk7XG5cbiAgdGhpcy5pdiA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml2Lmxlbmd0aDsgaSsrKVxuICAgIHRoaXMuaXZbaV0gPSBpdltpXTtcbn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUoQmFzZSkge1xuICBmdW5jdGlvbiBDQkMob3B0aW9ucykge1xuICAgIEJhc2UuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLl9jYmNJbml0KCk7XG4gIH1cbiAgaW5oZXJpdHMoQ0JDLCBCYXNlKTtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHByb3RvKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgQ0JDLnByb3RvdHlwZVtrZXldID0gcHJvdG9ba2V5XTtcbiAgfVxuXG4gIENCQy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQ0JDKG9wdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBDQkM7XG59XG5cbmV4cG9ydHMuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0ZTtcblxucHJvdG8uX2NiY0luaXQgPSBmdW5jdGlvbiBfY2JjSW5pdCgpIHtcbiAgdmFyIHN0YXRlID0gbmV3IENCQ1N0YXRlKHRoaXMub3B0aW9ucy5pdik7XG4gIHRoaXMuX2NiY1N0YXRlID0gc3RhdGU7XG59O1xuXG5wcm90by5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9jYmNTdGF0ZTtcbiAgdmFyIHN1cGVyUHJvdG8gPSB0aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGU7XG5cbiAgdmFyIGl2ID0gc3RhdGUuaXY7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldIF49IGlucFtpbk9mZiArIGldO1xuXG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaXYsIDAsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gb3V0W291dE9mZiArIGldO1xuICB9IGVsc2Uge1xuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIG91dFtvdXRPZmYgKyBpXSBePSBpdltpXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gaW5wW2luT2ZmICsgaV07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIENpcGhlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgdGhpcy50eXBlID0gdGhpcy5vcHRpb25zLnR5cGU7XG4gIHRoaXMuYmxvY2tTaXplID0gODtcbiAgdGhpcy5faW5pdCgpO1xuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXI7XG5cbkNpcGhlci5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBfaW5pdCgpIHtcbiAgLy8gTWlnaHQgYmUgb3ZlcnJpZGVkXG59O1xuXG5DaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShkYXRhKSB7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY3J5cHQnKVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVEZWNyeXB0KGRhdGEpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUVuY3J5cHQoZGF0YSk7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9idWZmZXIgPSBmdW5jdGlvbiBfYnVmZmVyKGRhdGEsIG9mZikge1xuICAvLyBBcHBlbmQgZGF0YSB0byBidWZmZXJcbiAgdmFyIG1pbiA9IE1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aCAtIHRoaXMuYnVmZmVyT2ZmLCBkYXRhLmxlbmd0aCAtIG9mZik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYgKyBpXSA9IGRhdGFbb2ZmICsgaV07XG4gIHRoaXMuYnVmZmVyT2ZmICs9IG1pbjtcblxuICAvLyBTaGlmdCBuZXh0XG4gIHJldHVybiBtaW47XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9mbHVzaEJ1ZmZlciA9IGZ1bmN0aW9uIF9mbHVzaEJ1ZmZlcihvdXQsIG9mZikge1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgb2ZmKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xuICByZXR1cm4gdGhpcy5ibG9ja1NpemU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZUVuY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSAoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIHwgMDtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICBpZiAodGhpcy5idWZmZXJPZmYgIT09IDApIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gICAgaWYgKHRoaXMuYnVmZmVyT2ZmID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gV3JpdGUgYmxvY2tzXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCAtICgoZGF0YS5sZW5ndGggLSBpbnB1dE9mZikgJSB0aGlzLmJsb2NrU2l6ZSk7XG4gIGZvciAoOyBpbnB1dE9mZiA8IG1heDsgaW5wdXRPZmYgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICB0aGlzLl91cGRhdGUoZGF0YSwgaW5wdXRPZmYsIG91dCwgb3V0cHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5ibG9ja1NpemU7XG4gIH1cblxuICAvLyBRdWV1ZSByZXN0XG4gIGZvciAoOyBpbnB1dE9mZiA8IGRhdGEubGVuZ3RoOyBpbnB1dE9mZisrLCB0aGlzLmJ1ZmZlck9mZisrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXSA9IGRhdGFbaW5wdXRPZmZdO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZURlY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSBNYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIC0gMTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBUT0RPKGluZHV0bnkpOiBvcHRpbWl6ZSBpdCwgdGhpcyBpcyBmYXIgZnJvbSBvcHRpbWFsXG4gIGZvciAoOyBjb3VudCA+IDA7IGNvdW50LS0pIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBCdWZmZXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIGZpbmFsKGJ1ZmZlcikge1xuICB2YXIgZmlyc3Q7XG4gIGlmIChidWZmZXIpXG4gICAgZmlyc3QgPSB0aGlzLnVwZGF0ZShidWZmZXIpO1xuXG4gIHZhciBsYXN0O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRW5jcnlwdCgpO1xuICBlbHNlXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRGVjcnlwdCgpO1xuXG4gIGlmIChmaXJzdClcbiAgICByZXR1cm4gZmlyc3QuY29uY2F0KGxhc3QpO1xuICBlbHNlXG4gICAgcmV0dXJuIGxhc3Q7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIGlmIChvZmYgPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHdoaWxlIChvZmYgPCBidWZmZXIubGVuZ3RoKVxuICAgIGJ1ZmZlcltvZmYrK10gPSAwO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRW5jcnlwdCgpIHtcbiAgaWYgKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsIHRoaXMuYnVmZmVyT2ZmKSlcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCAwKTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRGVjcnlwdCgpIHtcbiAgYXNzZXJ0LmVxdWFsKHRoaXMuYnVmZmVyT2ZmLCB0aGlzLmJsb2NrU2l6ZSwgJ05vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Jyk7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIDApO1xuXG4gIHJldHVybiB0aGlzLl91bnBhZChvdXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciB1dGlscyA9IGRlcy51dGlscztcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xuXG5mdW5jdGlvbiBERVNTdGF0ZSgpIHtcbiAgdGhpcy50bXAgPSBuZXcgQXJyYXkoMik7XG4gIHRoaXMua2V5cyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIERFUyhvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBERVNTdGF0ZSgpO1xuICB0aGlzLl9kZXNTdGF0ZSA9IHN0YXRlO1xuXG4gIHRoaXMuZGVyaXZlS2V5cyhzdGF0ZSwgb3B0aW9ucy5rZXkpO1xufVxuaW5oZXJpdHMoREVTLCBDaXBoZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBERVM7XG5cbkRFUy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IERFUyhvcHRpb25zKTtcbn07XG5cbnZhciBzaGlmdFRhYmxlID0gW1xuICAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLFxuICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxXG5dO1xuXG5ERVMucHJvdG90eXBlLmRlcml2ZUtleXMgPSBmdW5jdGlvbiBkZXJpdmVLZXlzKHN0YXRlLCBrZXkpIHtcbiAgc3RhdGUua2V5cyA9IG5ldyBBcnJheSgxNiAqIDIpO1xuXG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCB0aGlzLmJsb2NrU2l6ZSwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrTCA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDApO1xuICB2YXIga1IgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCA0KTtcblxuICB1dGlscy5wYzEoa0wsIGtSLCBzdGF0ZS50bXAsIDApO1xuICBrTCA9IHN0YXRlLnRtcFswXTtcbiAga1IgPSBzdGF0ZS50bXBbMV07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBzaGlmdCA9IHNoaWZ0VGFibGVbaSA+Pj4gMV07XG4gICAga0wgPSB1dGlscy5yMjhzaGwoa0wsIHNoaWZ0KTtcbiAgICBrUiA9IHV0aWxzLnIyOHNobChrUiwgc2hpZnQpO1xuICAgIHV0aWxzLnBjMihrTCwga1IsIHN0YXRlLmtleXMsIGkpO1xuICB9XG59O1xuXG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Rlc1N0YXRlO1xuXG4gIHZhciBsID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYpO1xuICB2YXIgciA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmICsgNCk7XG5cbiAgLy8gSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5pcChsLCByLCBzdGF0ZS50bXAsIDApO1xuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICB0aGlzLl9lbmNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuICBlbHNlXG4gICAgdGhpcy5fZGVjcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcblxuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCBsLCBvdXRPZmYpO1xuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgciwgb3V0T2ZmICsgNCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIHZhciB2YWx1ZSA9IGJ1ZmZlci5sZW5ndGggLSBvZmY7XG4gIGZvciAodmFyIGkgPSBvZmY7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYnVmZmVyW2ldID0gdmFsdWU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5ERVMucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgdmFyIHBhZCA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gIGZvciAodmFyIGkgPSBidWZmZXIubGVuZ3RoIC0gcGFkOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGFzc2VydC5lcXVhbChidWZmZXJbaV0sIHBhZCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgwLCBidWZmZXIubGVuZ3RoIC0gcGFkKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2VuY3J5cHQgPSBmdW5jdGlvbiBfZW5jcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gbFN0YXJ0O1xuICB2YXIgciA9IHJTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChyLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gcjtcbiAgICByID0gKGwgXiBmKSA+Pj4gMDtcbiAgICBsID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAociwgbCwgb3V0LCBvZmYpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZGVjcnlwdCA9IGZ1bmN0aW9uIF9kZWNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSByU3RhcnQ7XG4gIHZhciByID0gbFN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IHN0YXRlLmtleXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQobCwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IGw7XG4gICAgbCA9IChyIF4gZikgPj4+IDA7XG4gICAgciA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKGwsIHIsIG91dCwgb2ZmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcbnZhciBERVMgPSBkZXMuREVTO1xuXG5mdW5jdGlvbiBFREVTdGF0ZSh0eXBlLCBrZXkpIHtcbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIDI0LCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGsxID0ga2V5LnNsaWNlKDAsIDgpO1xuICB2YXIgazIgPSBrZXkuc2xpY2UoOCwgMTYpO1xuICB2YXIgazMgPSBrZXkuc2xpY2UoMTYsIDI0KTtcblxuICBpZiAodHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMSB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGszIH0pXG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGszIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazEgfSlcbiAgICBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIEVERShvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBFREVTdGF0ZSh0aGlzLnR5cGUsIHRoaXMub3B0aW9ucy5rZXkpO1xuICB0aGlzLl9lZGVTdGF0ZSA9IHN0YXRlO1xufVxuaW5oZXJpdHMoRURFLCBDaXBoZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVERTtcblxuRURFLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRURFKG9wdGlvbnMpO1xufTtcblxuRURFLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9lZGVTdGF0ZTtcblxuICBzdGF0ZS5jaXBoZXJzWzBdLl91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzFdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1syXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG59O1xuXG5FREUucHJvdG90eXBlLl9wYWQgPSBERVMucHJvdG90eXBlLl9wYWQ7XG5FREUucHJvdG90eXBlLl91bnBhZCA9IERFUy5wcm90b3R5cGUuX3VucGFkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRShieXRlcywgb2ZmKSB7XG4gIHZhciByZXMgPSAgKGJ5dGVzWzAgKyBvZmZdIDw8IDI0KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzEgKyBvZmZdIDw8IDE2KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzIgKyBvZmZdIDw8IDgpIHxcbiAgICAgICAgICAgICBieXRlc1szICsgb2ZmXTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn07XG5cbmV4cG9ydHMud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUoYnl0ZXMsIHZhbHVlLCBvZmYpIHtcbiAgYnl0ZXNbMCArIG9mZl0gPSB2YWx1ZSA+Pj4gMjQ7XG4gIGJ5dGVzWzEgKyBvZmZdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICBieXRlc1syICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICBieXRlc1szICsgb2ZmXSA9IHZhbHVlICYgMHhmZjtcbn07XG5cbmV4cG9ydHMuaXAgPSBmdW5jdGlvbiBpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucmlwID0gZnVuY3Rpb24gcmlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaSA9IDQ7IGkgPCA4OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGMxID0gZnVuY3Rpb24gcGMxKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICAvLyA3LCAxNSwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA2LCAxNCwgMjIsIDMwLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA1LCAxMywgMjEsIDI5LCAzOSwgNDcsIDU1LCA2M1xuICAvLyA0LCAxMiwgMjAsIDI4XG4gIGZvciAodmFyIGkgPSA3OyBpID49IDU7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIC8vIDEsIDksIDE3LCAyNSwgMzMsIDQxLCA0OSwgNTdcbiAgLy8gMiwgMTAsIDE4LCAyNiwgMzQsIDQyLCA1MCwgNThcbiAgLy8gMywgMTEsIDE5LCAyNywgMzUsIDQzLCA1MSwgNTlcbiAgLy8gMzYsIDQ0LCA1MiwgNjBcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucjI4c2hsID0gZnVuY3Rpb24gcjI4c2hsKG51bSwgc2hpZnQpIHtcbiAgcmV0dXJuICgobnVtIDw8IHNoaWZ0KSAmIDB4ZmZmZmZmZikgfCAobnVtID4+PiAoMjggLSBzaGlmdCkpO1xufTtcblxudmFyIHBjMnRhYmxlID0gW1xuICAvLyBpbkwgPT4gb3V0TFxuICAxNCwgMTEsIDE3LCA0LCAyNywgMjMsIDI1LCAwLFxuICAxMywgMjIsIDcsIDE4LCA1LCA5LCAxNiwgMjQsXG4gIDIsIDIwLCAxMiwgMjEsIDEsIDgsIDE1LCAyNixcblxuICAvLyBpblIgPT4gb3V0UlxuICAxNSwgNCwgMjUsIDE5LCA5LCAxLCAyNiwgMTYsXG4gIDUsIDExLCAyMywgOCwgMTIsIDcsIDE3LCAwLFxuICAyMiwgMywgMTAsIDE0LCA2LCAyMCwgMjcsIDI0XG5dO1xuXG5leHBvcnRzLnBjMiA9IGZ1bmN0aW9uIHBjMihpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgdmFyIGxlbiA9IHBjMnRhYmxlLmxlbmd0aCA+Pj4gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5MID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IHBjMnRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpblIgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChyLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBvdXRMID0gKChyICYgMSkgPDwgNSkgfCAociA+Pj4gMjcpO1xuICBmb3IgKHZhciBpID0gMjM7IGkgPj0gMTU7IGkgLT0gNCkge1xuICAgIG91dEwgPDw9IDY7XG4gICAgb3V0TCB8PSAociA+Pj4gaSkgJiAweDNmO1xuICB9XG4gIGZvciAodmFyIGkgPSAxMTsgaSA+PSAzOyBpIC09IDQpIHtcbiAgICBvdXRSIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gICAgb3V0UiA8PD0gNjtcbiAgfVxuICBvdXRSIHw9ICgociAmIDB4MWYpIDw8IDEpIHwgKHIgPj4+IDMxKTtcblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxudmFyIHNUYWJsZSA9IFtcbiAgMTQsIDAsIDQsIDE1LCAxMywgNywgMSwgNCwgMiwgMTQsIDE1LCAyLCAxMSwgMTMsIDgsIDEsXG4gIDMsIDEwLCAxMCwgNiwgNiwgMTIsIDEyLCAxMSwgNSwgOSwgOSwgNSwgMCwgMywgNywgOCxcbiAgNCwgMTUsIDEsIDEyLCAxNCwgOCwgOCwgMiwgMTMsIDQsIDYsIDksIDIsIDEsIDExLCA3LFxuICAxNSwgNSwgMTIsIDExLCA5LCAzLCA3LCAxNCwgMywgMTAsIDEwLCAwLCA1LCA2LCAwLCAxMyxcblxuICAxNSwgMywgMSwgMTMsIDgsIDQsIDE0LCA3LCA2LCAxNSwgMTEsIDIsIDMsIDgsIDQsIDE0LFxuICA5LCAxMiwgNywgMCwgMiwgMSwgMTMsIDEwLCAxMiwgNiwgMCwgOSwgNSwgMTEsIDEwLCA1LFxuICAwLCAxMywgMTQsIDgsIDcsIDEwLCAxMSwgMSwgMTAsIDMsIDQsIDE1LCAxMywgNCwgMSwgMixcbiAgNSwgMTEsIDgsIDYsIDEyLCA3LCA2LCAxMiwgOSwgMCwgMywgNSwgMiwgMTQsIDE1LCA5LFxuXG4gIDEwLCAxMywgMCwgNywgOSwgMCwgMTQsIDksIDYsIDMsIDMsIDQsIDE1LCA2LCA1LCAxMCxcbiAgMSwgMiwgMTMsIDgsIDEyLCA1LCA3LCAxNCwgMTEsIDEyLCA0LCAxMSwgMiwgMTUsIDgsIDEsXG4gIDEzLCAxLCA2LCAxMCwgNCwgMTMsIDksIDAsIDgsIDYsIDE1LCA5LCAzLCA4LCAwLCA3LFxuICAxMSwgNCwgMSwgMTUsIDIsIDE0LCAxMiwgMywgNSwgMTEsIDEwLCA1LCAxNCwgMiwgNywgMTIsXG5cbiAgNywgMTMsIDEzLCA4LCAxNCwgMTEsIDMsIDUsIDAsIDYsIDYsIDE1LCA5LCAwLCAxMCwgMyxcbiAgMSwgNCwgMiwgNywgOCwgMiwgNSwgMTIsIDExLCAxLCAxMiwgMTAsIDQsIDE0LCAxNSwgOSxcbiAgMTAsIDMsIDYsIDE1LCA5LCAwLCAwLCA2LCAxMiwgMTAsIDExLCAxLCA3LCAxMywgMTMsIDgsXG4gIDE1LCA5LCAxLCA0LCAzLCA1LCAxNCwgMTEsIDUsIDEyLCAyLCA3LCA4LCAyLCA0LCAxNCxcblxuICAyLCAxNCwgMTIsIDExLCA0LCAyLCAxLCAxMiwgNywgNCwgMTAsIDcsIDExLCAxMywgNiwgMSxcbiAgOCwgNSwgNSwgMCwgMywgMTUsIDE1LCAxMCwgMTMsIDMsIDAsIDksIDE0LCA4LCA5LCA2LFxuICA0LCAxMSwgMiwgOCwgMSwgMTIsIDExLCA3LCAxMCwgMSwgMTMsIDE0LCA3LCAyLCA4LCAxMyxcbiAgMTUsIDYsIDksIDE1LCAxMiwgMCwgNSwgOSwgNiwgMTAsIDMsIDQsIDAsIDUsIDE0LCAzLFxuXG4gIDEyLCAxMCwgMSwgMTUsIDEwLCA0LCAxNSwgMiwgOSwgNywgMiwgMTIsIDYsIDksIDgsIDUsXG4gIDAsIDYsIDEzLCAxLCAzLCAxMywgNCwgMTQsIDE0LCAwLCA3LCAxMSwgNSwgMywgMTEsIDgsXG4gIDksIDQsIDE0LCAzLCAxNSwgMiwgNSwgMTIsIDIsIDksIDgsIDUsIDEyLCAxNSwgMywgMTAsXG4gIDcsIDExLCAwLCAxNCwgNCwgMSwgMTAsIDcsIDEsIDYsIDEzLCAwLCAxMSwgOCwgNiwgMTMsXG5cbiAgNCwgMTMsIDExLCAwLCAyLCAxMSwgMTQsIDcsIDE1LCA0LCAwLCA5LCA4LCAxLCAxMywgMTAsXG4gIDMsIDE0LCAxMiwgMywgOSwgNSwgNywgMTIsIDUsIDIsIDEwLCAxNSwgNiwgOCwgMSwgNixcbiAgMSwgNiwgNCwgMTEsIDExLCAxMywgMTMsIDgsIDEyLCAxLCAzLCA0LCA3LCAxMCwgMTQsIDcsXG4gIDEwLCA5LCAxNSwgNSwgNiwgMCwgOCwgMTUsIDAsIDE0LCA1LCAyLCA5LCAzLCAyLCAxMixcblxuICAxMywgMSwgMiwgMTUsIDgsIDEzLCA0LCA4LCA2LCAxMCwgMTUsIDMsIDExLCA3LCAxLCA0LFxuICAxMCwgMTIsIDksIDUsIDMsIDYsIDE0LCAxMSwgNSwgMCwgMCwgMTQsIDEyLCA5LCA3LCAyLFxuICA3LCAyLCAxMSwgMSwgNCwgMTQsIDEsIDcsIDksIDQsIDEyLCAxMCwgMTQsIDgsIDIsIDEzLFxuICAwLCAxNSwgNiwgMTIsIDEwLCA5LCAxMywgMCwgMTUsIDMsIDMsIDUsIDUsIDYsIDgsIDExXG5dO1xuXG5leHBvcnRzLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGluTCwgaW5SKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluTCA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlW2kgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5SID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbNCAqIDB4NDAgKyBpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxudmFyIHBlcm11dGVUYWJsZSA9IFtcbiAgMTYsIDI1LCAxMiwgMTEsIDMsIDIwLCA0LCAxNSwgMzEsIDE3LCA5LCA2LCAyNywgMTQsIDEsIDIyLFxuICAzMCwgMjQsIDgsIDE4LCAwLCA1LCAyOSwgMjMsIDEzLCAxOSwgMiwgMjYsIDEwLCAyMSwgMjgsIDdcbl07XG5cbmV4cG9ydHMucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUobnVtKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBlcm11dGVUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dCA8PD0gMTtcbiAgICBvdXQgfD0gKG51bSA+Pj4gcGVybXV0ZVRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYWRTcGxpdCA9IGZ1bmN0aW9uIHBhZFNwbGl0KG51bSwgc2l6ZSwgZ3JvdXApIHtcbiAgdmFyIHN0ciA9IG51bS50b1N0cmluZygyKTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBzaXplKVxuICAgIHN0ciA9ICcwJyArIHN0cjtcblxuICB2YXIgb3V0ID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBncm91cClcbiAgICBvdXQucHVzaChzdHIuc2xpY2UoaSwgaSArIGdyb3VwKSk7XG4gIHJldHVybiBvdXQuam9pbignICcpO1xufTtcbiIsInZhciBnZW5lcmF0ZVByaW1lID0gcmVxdWlyZSgnLi9saWIvZ2VuZXJhdGVQcmltZScpXG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9saWIvcHJpbWVzLmpzb24nKVxuXG52YXIgREggPSByZXF1aXJlKCcuL2xpYi9kaCcpXG5cbmZ1bmN0aW9uIGdldERpZmZpZUhlbGxtYW4gKG1vZCkge1xuICB2YXIgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLnByaW1lLCAnaGV4JylcbiAgdmFyIGdlbiA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0uZ2VuLCAnaGV4JylcblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW4pXG59XG5cbnZhciBFTkNPRElOR1MgPSB7XG4gICdiaW5hcnknOiB0cnVlLCAnaGV4JzogdHJ1ZSwgJ2Jhc2U2NCc6IHRydWVcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlmZmllSGVsbG1hbiAocHJpbWUsIGVuYywgZ2VuZXJhdG9yLCBnZW5jKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoZW5jKSB8fCBFTkNPRElOR1NbZW5jXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZURpZmZpZUhlbGxtYW4ocHJpbWUsICdiaW5hcnknLCBlbmMsIGdlbmVyYXRvcilcbiAgfVxuXG4gIGVuYyA9IGVuYyB8fCAnYmluYXJ5J1xuICBnZW5jID0gZ2VuYyB8fCAnYmluYXJ5J1xuICBnZW5lcmF0b3IgPSBnZW5lcmF0b3IgfHwgbmV3IEJ1ZmZlcihbMl0pXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuZXJhdG9yKSkge1xuICAgIGdlbmVyYXRvciA9IG5ldyBCdWZmZXIoZ2VuZXJhdG9yLCBnZW5jKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmltZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV3IERIKGdlbmVyYXRlUHJpbWUocHJpbWUsIGdlbmVyYXRvciksIGdlbmVyYXRvciwgdHJ1ZSlcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaW1lKSkge1xuICAgIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZSwgZW5jKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuZXJhdG9yLCB0cnVlKVxufVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5nZXREaWZmaWVIZWxsbWFuID0gZ2V0RGlmZmllSGVsbG1hblxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuID0gZXhwb3J0cy5EaWZmaWVIZWxsbWFuID0gY3JlYXRlRGlmZmllSGVsbG1hblxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vZ2VuZXJhdGVQcmltZScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gREg7XG5cbmZ1bmN0aW9uIHNldFB1YmxpY0tleShwdWIsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHViID0gbmV3IEJOKHB1Yik7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzZXRQcml2YXRlS2V5KHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuICAgIHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHJpdiA9IG5ldyBCTihwcml2KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbnZhciBwcmltZUNhY2hlID0ge307XG5mdW5jdGlvbiBjaGVja1ByaW1lKHByaW1lLCBnZW5lcmF0b3IpIHtcbiAgdmFyIGdlbiA9IGdlbmVyYXRvci50b1N0cmluZygnaGV4Jyk7XG4gIHZhciBoZXggPSBbZ2VuLCBwcmltZS50b1N0cmluZygxNildLmpvaW4oJ18nKTtcbiAgaWYgKGhleCBpbiBwcmltZUNhY2hlKSB7XG4gICAgcmV0dXJuIHByaW1lQ2FjaGVbaGV4XTtcbiAgfVxuICB2YXIgZXJyb3IgPSAwO1xuXG4gIGlmIChwcmltZS5pc0V2ZW4oKSB8fFxuICAgICFwcmltZXMuc2ltcGxlU2lldmUgfHxcbiAgICAhcHJpbWVzLmZlcm1hdFRlc3QocHJpbWUpIHx8XG4gICAgIW1pbGxlclJhYmluLnRlc3QocHJpbWUpKSB7XG4gICAgLy9ub3QgYSBwcmltZSBzbyArMVxuICAgIGVycm9yICs9IDE7XG5cbiAgICBpZiAoZ2VuID09PSAnMDInIHx8IGdlbiA9PT0gJzA1Jykge1xuICAgICAgLy8gd2UnZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIGl0IHdvdWxkIGZhaWwgc28gKzhcbiAgICAgIGVycm9yICs9IDg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vd2Ugd291bGRuJ3QgYmUgYWJsZSB0byB0ZXN0IHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIHNvICs0XG4gICAgICBlcnJvciArPSA0O1xuICAgIH1cbiAgICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgaWYgKCFtaWxsZXJSYWJpbi50ZXN0KHByaW1lLnNocm4oMSkpKSB7XG4gICAgLy9ub3QgYSBzYWZlIHByaW1lXG4gICAgZXJyb3IgKz0gMjtcbiAgfVxuICB2YXIgcmVtO1xuICBzd2l0Y2ggKGdlbikge1xuICAgIGNhc2UgJzAyJzpcbiAgICAgIGlmIChwcmltZS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgLy8gdW5zdWlkYWJsZSBnZW5lcmF0b3JcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzA1JzpcbiAgICAgIHJlbSA9IHByaW1lLm1vZChURU4pO1xuICAgICAgaWYgKHJlbS5jbXAoVEhSRUUpICYmIHJlbS5jbXAoU0VWRU4pKSB7XG4gICAgICAgIC8vIHByaW1lIG1vZCAxMCBuZWVkcyB0byBlcXVhbCAzIG9yIDdcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBlcnJvciArPSA0O1xuICB9XG4gIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIERIKHByaW1lLCBnZW5lcmF0b3IsIG1hbGxlYWJsZSkge1xuICB0aGlzLnNldEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB0aGlzLl9fcHJpbWUgPSBuZXcgQk4ocHJpbWUpO1xuICB0aGlzLl9wcmltZSA9IEJOLm1vbnQodGhpcy5fX3ByaW1lKTtcbiAgdGhpcy5fcHJpbWVMZW4gPSBwcmltZS5sZW5ndGg7XG4gIHRoaXMuX3B1YiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpdiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpbWVDb2RlID0gdW5kZWZpbmVkO1xuICBpZiAobWFsbGVhYmxlKSB7XG4gICAgdGhpcy5zZXRQdWJsaWNLZXkgPSBzZXRQdWJsaWNLZXk7XG4gICAgdGhpcy5zZXRQcml2YXRlS2V5ID0gc2V0UHJpdmF0ZUtleTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9wcmltZUNvZGUgPSA4O1xuICB9XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoREgucHJvdG90eXBlLCAndmVyaWZ5RXJyb3InLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fcHJpbWVDb2RlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fcHJpbWVDb2RlID0gY2hlY2tQcmltZSh0aGlzLl9fcHJpbWUsIHRoaXMuX19nZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJpbWVDb2RlO1xuICB9XG59KTtcbkRILnByb3RvdHlwZS5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5fcHJpdikge1xuICAgIHRoaXMuX3ByaXYgPSBuZXcgQk4ocmFuZG9tQnl0ZXModGhpcy5fcHJpbWVMZW4pKTtcbiAgfVxuICB0aGlzLl9wdWIgPSB0aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleSgpO1xufTtcblxuREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgb3RoZXIgPSBuZXcgQk4ob3RoZXIpO1xuICBvdGhlciA9IG90aGVyLnRvUmVkKHRoaXMuX3ByaW1lKTtcbiAgdmFyIHNlY3JldCA9IG90aGVyLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNlY3JldC50b0FycmF5KCkpO1xuICB2YXIgcHJpbWUgPSB0aGlzLmdldFByaW1lKCk7XG4gIGlmIChvdXQubGVuZ3RoIDwgcHJpbWUubGVuZ3RoKSB7XG4gICAgdmFyIGZyb250ID0gbmV3IEJ1ZmZlcihwcmltZS5sZW5ndGggLSBvdXQubGVuZ3RoKTtcbiAgICBmcm9udC5maWxsKDApO1xuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW2Zyb250LCBvdXRdKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuREgucHJvdG90eXBlLmdldFB1YmxpY0tleSA9IGZ1bmN0aW9uIGdldFB1YmxpY0tleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3B1YiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3ByaXYsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpbWUgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9fcHJpbWUsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fZ2VuLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLnNldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChnZW4sIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW4pKSB7XG4gICAgZ2VuID0gbmV3IEJ1ZmZlcihnZW4sIGVuYyk7XG4gIH1cbiAgdGhpcy5fX2dlbiA9IGdlbjtcbiAgdGhpcy5fZ2VuID0gbmV3IEJOKGdlbik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYykge1xuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibi50b0FycmF5KCkpO1xuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuICB9XG59XG4iLCJ2YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kUHJpbWU7XG5maW5kUHJpbWUuc2ltcGxlU2lldmUgPSBzaW1wbGVTaWV2ZTtcbmZpbmRQcmltZS5mZXJtYXRUZXN0ID0gZmVybWF0VGVzdDtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIE9ORSA9IG5ldyBCTigxKTtcbnZhciBUV08gPSBuZXcgQk4oMik7XG52YXIgRklWRSA9IG5ldyBCTig1KTtcbnZhciBTSVhURUVOID0gbmV3IEJOKDE2KTtcbnZhciBFSUdIVCA9IG5ldyBCTig4KTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgRk9VUiA9IG5ldyBCTig0KTtcbnZhciBUV0VMVkUgPSBuZXcgQk4oMTIpO1xudmFyIHByaW1lcyA9IG51bGw7XG5cbmZ1bmN0aW9uIF9nZXRQcmltZXMoKSB7XG4gIGlmIChwcmltZXMgIT09IG51bGwpXG4gICAgcmV0dXJuIHByaW1lcztcblxuICB2YXIgbGltaXQgPSAweDEwMDAwMDtcbiAgdmFyIHJlcyA9IFtdO1xuICByZXNbMF0gPSAyO1xuICBmb3IgKHZhciBpID0gMSwgayA9IDM7IGsgPCBsaW1pdDsgayArPSAyKSB7XG4gICAgdmFyIHNxcnQgPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KGspKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGkgJiYgcmVzW2pdIDw9IHNxcnQ7IGorKylcbiAgICAgIGlmIChrICUgcmVzW2pdID09PSAwKVxuICAgICAgICBicmVhaztcblxuICAgIGlmIChpICE9PSBqICYmIHJlc1tqXSA8PSBzcXJ0KVxuICAgICAgY29udGludWU7XG5cbiAgICByZXNbaSsrXSA9IGs7XG4gIH1cbiAgcHJpbWVzID0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVTaWV2ZShwKSB7XG4gIHZhciBwcmltZXMgPSBfZ2V0UHJpbWVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmltZXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHAubW9kbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICBpZiAocC5jbXBuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmZXJtYXRUZXN0KHApIHtcbiAgdmFyIHJlZCA9IEJOLm1vbnQocCk7XG4gIHJldHVybiBUV08udG9SZWQocmVkKS5yZWRQb3cocC5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZmluZFByaW1lKGJpdHMsIGdlbikge1xuICBpZiAoYml0cyA8IDE2KSB7XG4gICAgLy8gdGhpcyBpcyB3aGF0IG9wZW5zc2wgZG9lc1xuICAgIGlmIChnZW4gPT09IDIgfHwgZ2VuID09PSA1KSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDdiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4MjddKTtcbiAgICB9XG4gIH1cbiAgZ2VuID0gbmV3IEJOKGdlbik7XG5cbiAgdmFyIG51bSwgbjI7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBudW0gPSBuZXcgQk4ocmFuZG9tQnl0ZXMoTWF0aC5jZWlsKGJpdHMgLyA4KSkpO1xuICAgIHdoaWxlIChudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7XG4gICAgICBudW0uaXNocm4oMSk7XG4gICAgfVxuICAgIGlmIChudW0uaXNFdmVuKCkpIHtcbiAgICAgIG51bS5pYWRkKE9ORSk7XG4gICAgfVxuICAgIGlmICghbnVtLnRlc3RuKDEpKSB7XG4gICAgICBudW0uaWFkZChUV08pO1xuICAgIH1cbiAgICBpZiAoIWdlbi5jbXAoVFdPKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ2VuLmNtcChGSVZFKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVEVOKS5jbXAoVEhSRUUpKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH1cbiAgICBuMiA9IG51bS5zaHJuKDEpO1xuICAgIGlmIChzaW1wbGVTaWV2ZShuMikgJiYgc2ltcGxlU2lldmUobnVtKSAmJlxuICAgICAgZmVybWF0VGVzdChuMikgJiYgZmVybWF0VGVzdChudW0pICYmXG4gICAgICBtaWxsZXJSYWJpbi50ZXN0KG4yKSAmJiBtaWxsZXJSYWJpbi50ZXN0KG51bSkpIHtcbiAgICAgIHJldHVybiBudW07XG4gICAgfVxuICB9XG5cbn1cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgICBcIm1vZHAxXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDJcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTRcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNlwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5OWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTdcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMThcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfVxufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5obWFjRFJCRyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvaG1hYy1kcmJnJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxKTtcbiAgdmFyIEkgPSAoMSA8PCAoZG91Ymxlcy5zdGVwICsgMSkpIC0gKGRvdWJsZXMuc3RlcCAlIDIgPT09IDAgPyAyIDogMSk7XG4gIEkgLz0gMztcblxuICAvLyBUcmFuc2xhdGUgaW50byBtb3JlIHdpbmRvd2VkIGZvcm1cbiAgdmFyIHJlcHIgPSBbXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIHZhciBuYWZXID0gMDtcbiAgICBmb3IgKHZhciBrID0gaiArIGRvdWJsZXMuc3RlcCAtIDE7IGsgPj0gajsgay0tKVxuICAgICAgbmFmVyA9IChuYWZXIDw8IDEpICsgbmFmW2tdO1xuICAgIHJlcHIucHVzaChuYWZXKTtcbiAgfVxuXG4gIHZhciBhID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciBiID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBJOyBpID4gMDsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3KTtcblxuICAvLyBBZGQgYHRoaXNgKihOKzEpIGZvciBldmVyeSB3LU5BRiBpbmRleFxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBuYWYubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyBDb3VudCB6ZXJvZXNcbiAgICBmb3IgKHZhciBrID0gMDsgaSA+PSAwICYmIG5hZltpXSA9PT0gMDsgaS0tKVxuICAgICAgaysrO1xuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG5cbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcbiAgICB2YXIgeiA9IG5hZltpXTtcbiAgICBhc3NlcnQoeiAhPT0gMCk7XG4gICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpIHtcbiAgICAgIC8vIEogKy0gUFxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSiArLSBKXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwLnR5cGUgPT09ICdhZmZpbmUnID8gYWNjLnRvUCgpIDogYWNjO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bEFkZCA9IGZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0pO1xuICAgICAgbmFmW2JdID0gZ2V0TkFGKGNvZWZmc1tiXSwgd25kV2lkdGhbYl0pO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdIC8qIDcgKi9cbiAgICBdO1xuXG4gICAgLy8gVHJ5IHRvIGF2b2lkIFByb2plY3RpdmUgcG9pbnRzLCBpZiBwb3NzaWJsZVxuICAgIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55LnJlZE5lZygpKSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IFtcbiAgICAgIC0zLCAvKiAtMSAtMSAqL1xuICAgICAgLTEsIC8qIC0xIDAgKi9cbiAgICAgIC01LCAvKiAtMSAxICovXG4gICAgICAtNywgLyogMCAtMSAqL1xuICAgICAgMCwgLyogMCAwICovXG4gICAgICA3LCAvKiAwIDEgKi9cbiAgICAgIDUsIC8qIDEgLTEgKi9cbiAgICAgIDEsIC8qIDEgMCAqL1xuICAgICAgMyAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXg7IGorKykge1xuICAgICAgdmFyIGphID0ganNmWzBdW2pdIHwgMDtcbiAgICAgIHZhciBqYiA9IGpzZlsxXVtqXSB8IDA7XG5cbiAgICAgIG5hZlthXVtqXSA9IGluZGV4WyhqYSArIDEpICogMyArIChqYiArIDEpXTtcbiAgICAgIG5hZltiXVtqXSA9IDA7XG4gICAgICB3bmRbYV0gPSBjb21iO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIHRtcCA9IHRoaXMuX3duYWZUNDtcbiAgZm9yICh2YXIgaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIHZhciB6ID0gdG1wW2pdO1xuICAgICAgdmFyIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSkgO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91Ymxlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzID0gZnVuY3Rpb24gX2dldE5BRlBvaW50cyh3bmQpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5uYWYpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO1xuXG4gIHZhciByZXMgPSBbIHRoaXMgXTtcbiAgdmFyIG1heCA9ICgxIDw8IHduZCkgLSAxO1xuICB2YXIgZGJsID0gbWF4ID09PSAxID8gbnVsbCA6IHRoaXMuZGJsKCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbWF4OyBpKyspXG4gICAgcmVzW2ldID0gcmVzW2kgLSAxXS5hZGQoZGJsKTtcbiAgcmV0dXJuIHtcbiAgICB3bmQ6IHduZCxcbiAgICBwb2ludHM6IHJlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gMSkgLyAoZCB5XjIgKyAxKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMub25lKTtcbiAgdmFyIHJocyA9IHkyLnJlZE11bCh0aGlzLmQpLnJlZEFkZCh0aGlzLm9uZSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5pc09kZCgpICE9PSBvZGQpXG4gICAgeCA9IHgucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDdXJ2ZTogQSAqIFheMiArIFleMiA9IENeMiAqICgxICsgRCAqIFheMiAqIFleMilcbiAgcG9pbnQubm9ybWFsaXplKCk7XG5cbiAgdmFyIHgyID0gcG9pbnQueC5yZWRTcXIoKTtcbiAgdmFyIHkyID0gcG9pbnQueS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHgyLnJlZE11bCh0aGlzLmEpLnJlZEFkZCh5Mik7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh4MikucmVkTXVsKHkyKSkpO1xuXG4gIHJldHVybiBsaHMuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgeiwgdCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMuek9uZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IHogPyBuZXcgQk4oeiwgMTYpIDogdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdCAmJiBuZXcgQk4odCwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICh0aGlzLnQgJiYgIXRoaXMudC5yZWQpXG4gICAgICB0aGlzLnQgPSB0aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG5cbiAgICAvLyBVc2UgZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZCAmJiAhdGhpcy50KSB7XG4gICAgICB0aGlzLnQgPSB0aGlzLngucmVkTXVsKHRoaXMueSk7XG4gICAgICBpZiAoIXRoaXMuek9uZSlcbiAgICAgICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgICB9XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCB6LCB0KTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSwgb2JqWzJdKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMueC5jbXBuKDApID09PSAwICYmXG4gICAgICAgICB0aGlzLnkuY21wKHRoaXMueikgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dERibCA9IGZ1bmN0aW9uIF9leHREYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWh3Y2RcbiAgLy8gNE0gKyA0U1xuXG4gIC8vIEEgPSBYMV4yXG4gIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBCID0gWTFeMlxuICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gQyA9IDIgKiBaMV4yXG4gIHZhciBjID0gdGhpcy56LnJlZFNxcigpO1xuICBjID0gYy5yZWRJQWRkKGMpO1xuICAvLyBEID0gYSAqIEFcbiAgdmFyIGQgPSB0aGlzLmN1cnZlLl9tdWxBKGEpO1xuICAvLyBFID0gKFgxICsgWTEpXjIgLSBBIC0gQlxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYik7XG4gIC8vIEcgPSBEICsgQlxuICB2YXIgZyA9IGQucmVkQWRkKGIpO1xuICAvLyBGID0gRyAtIENcbiAgdmFyIGYgPSBnLnJlZFN1YihjKTtcbiAgLy8gSCA9IEQgLSBCXG4gIHZhciBoID0gZC5yZWRTdWIoYik7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakRibCA9IGZ1bmN0aW9uIF9wcm9qRGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1iYmpscFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA3LWJsXG4gIC8vIGFuZCBvdGhlcnNcbiAgLy8gR2VuZXJhbGx5IDNNICsgNFMgb3IgMk0gKyA0U1xuXG4gIC8vIEIgPSAoWDEgKyBZMSleMlxuICB2YXIgYiA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxXjJcbiAgdmFyIGMgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEQgPSBZMV4yXG4gIHZhciBkID0gdGhpcy55LnJlZFNxcigpO1xuXG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBFID0gYSAqIENcbiAgICB2YXIgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgdmFyIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICB2YXIgaiA9IGYucmVkU3ViKGgpLnJlZElTdWIoaCk7XG4gICAgICAvLyBYMyA9IChCLUMtRCkqSlxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRJU3ViKGQpLnJlZE11bChqKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGICogSlxuICAgICAgbnogPSBmLnJlZE11bChqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRSA9IEMgKyBEXG4gICAgdmFyIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIHZhciBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLmMucmVkTXVsKHRoaXMueikpLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICB2YXIgaiA9IGUucmVkU3ViKGgpLnJlZFN1YihoKTtcbiAgICAvLyBYMyA9IGMgKiAoQiAtIEUpICogSlxuICAgIG54ID0gdGhpcy5jdXJ2ZS5fbXVsQyhiLnJlZElTdWIoZSkpLnJlZE11bChqKTtcbiAgICAvLyBZMyA9IGMgKiBFICogKEMgLSBEKVxuICAgIG55ID0gdGhpcy5jdXJ2ZS5fbXVsQyhlKS5yZWRNdWwoYy5yZWRJU3ViKGQpKTtcbiAgICAvLyBaMyA9IEUgKiBKXG4gICAgbnogPSBlLnJlZE11bChqKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBEb3VibGUgaW4gZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dERibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pEYmwoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0QWRkID0gZnVuY3Rpb24gX2V4dEFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWh3Y2QtM1xuICAvLyA4TVxuXG4gIC8vIEEgPSAoWTEgLSBYMSkgKiAoWTIgLSBYMilcbiAgdmFyIGEgPSB0aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKHAueS5yZWRTdWIocC54KSk7XG4gIC8vIEIgPSAoWTEgKyBYMSkgKiAoWTIgKyBYMilcbiAgdmFyIGIgPSB0aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKHAueS5yZWRBZGQocC54KSk7XG4gIC8vIEMgPSBUMSAqIGsgKiBUMlxuICB2YXIgYyA9IHRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHAudCk7XG4gIC8vIEQgPSBaMSAqIDIgKiBaMlxuICB2YXIgZCA9IHRoaXMuei5yZWRNdWwocC56LnJlZEFkZChwLnopKTtcbiAgLy8gRSA9IEIgLSBBXG4gIHZhciBlID0gYi5yZWRTdWIoYSk7XG4gIC8vIEYgPSBEIC0gQ1xuICB2YXIgZiA9IGQucmVkU3ViKGMpO1xuICAvLyBHID0gRCArIENcbiAgdmFyIGcgPSBkLnJlZEFkZChjKTtcbiAgLy8gSCA9IEIgKyBBXG4gIHZhciBoID0gYi5yZWRBZGQoYSk7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakFkZCA9IGZ1bmN0aW9uIF9wcm9qQWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtYmJqbHBcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwNy1ibFxuICAvLyAxME0gKyAxU1xuXG4gIC8vIEEgPSBaMSAqIFoyXG4gIHZhciBhID0gdGhpcy56LnJlZE11bChwLnopO1xuICAvLyBCID0gQV4yXG4gIHZhciBiID0gYS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxICogWDJcbiAgdmFyIGMgPSB0aGlzLngucmVkTXVsKHAueCk7XG4gIC8vIEQgPSBZMSAqIFkyXG4gIHZhciBkID0gdGhpcy55LnJlZE11bChwLnkpO1xuICAvLyBFID0gZCAqIEMgKiBEXG4gIHZhciBlID0gdGhpcy5jdXJ2ZS5kLnJlZE11bChjKS5yZWRNdWwoZCk7XG4gIC8vIEYgPSBCIC0gRVxuICB2YXIgZiA9IGIucmVkU3ViKGUpO1xuICAvLyBHID0gQiArIEVcbiAgdmFyIGcgPSBiLnJlZEFkZChlKTtcbiAgLy8gWDMgPSBBICogRiAqICgoWDEgKyBZMSkgKiAoWDIgKyBZMikgLSBDIC0gRClcbiAgdmFyIHRtcCA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwocC54LnJlZEFkZChwLnkpKS5yZWRJU3ViKGMpLnJlZElTdWIoZCk7XG4gIHZhciBueCA9IGEucmVkTXVsKGYpLnJlZE11bCh0bXApO1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIGEgKiBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUuX211bEEoYykpKTtcbiAgICAvLyBaMyA9IEYgKiBHXG4gICAgbnogPSBmLnJlZE11bChnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKGMpKTtcbiAgICAvLyBaMyA9IGMgKiBGICogR1xuICAgIG56ID0gdGhpcy5jdXJ2ZS5fbXVsQyhmKS5yZWRNdWwoZyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dEFkZChwKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qQWRkKHApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIGZhbHNlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgaWYgKHRoaXMuek9uZSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdmFyIHppID0gdGhpcy56LnJlZEludm0oKTtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh6aSk7XG4gIHRoaXMueSA9IHRoaXMueS5yZWRNdWwoemkpO1xuICBpZiAodGhpcy50KVxuICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwoemkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgdGhpcy56T25lID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnQgJiYgdGhpcy50LnJlZE5lZygpKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMgPT09IG90aGVyIHx8XG4gICAgICAgICB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy5nZXRZKCkuY21wKG90aGVyLmdldFkoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNilcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYmFzaXMgPSB0aGlzLl9nZXRFbmRvQmFzaXMobGFtYmRhKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmV0YTogYmV0YSxcbiAgICBsYW1iZGE6IGxhbWJkYSxcbiAgICBiYXNpczogYmFzaXNcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH1cbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgbnBvaW50cyA9IHRoaXMuX2VuZG9XbmFmVDE7XG4gIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BsaXQgPSB0aGlzLl9lbmRvU3BsaXQoY29lZmZzW2ldKTtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgIGlmIChzcGxpdC5rMS5uZWdhdGl2ZSkge1xuICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgIH1cbiAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgIGJldGEgPSBiZXRhLm5lZyh0cnVlKTtcbiAgICB9XG5cbiAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgbnBvaW50c1tpICogMiArIDFdID0gYmV0YTtcbiAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICB9XG4gIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHtcbiAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKGVuZG9NdWwpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSlcbiAgICB9LFxuICAgIG5hZjogdGhpcy5wcmVjb21wdXRlZC5uYWYgJiYge1xuICAgICAgd25kOiB0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKVxuICAgIH1cbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfSxcbiAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG5cbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspIHtcbiAgICB2YXIgangyID0gangucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDIgPSBqeWQucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDQgPSBqeWQyLnJlZFNxcigpO1xuICAgIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gICAgdmFyIHQxID0gangucmVkTXVsKGp5ZDIpO1xuICAgIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcbiAgICB2YXIgZG55ID0gYy5yZWRNdWwodDIpO1xuICAgIGRueSA9IGRueS5yZWRJQWRkKGRueSkucmVkSVN1YihqeWQ0KTtcbiAgICB2YXIgbnogPSBqeWQucmVkTXVsKGp6KTtcbiAgICBpZiAoaSArIDEgPCBwb3cpXG4gICAgICBqejQgPSBqejQucmVkTXVsKGp5ZDQpO1xuXG4gICAganggPSBueDtcbiAgICBqeiA9IG56O1xuICAgIGp5ZCA9IGRueTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChqeCwganlkLnJlZE11bCh0aW52KSwganopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5femVyb0RibCgpO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLnRocmVlQSlcbiAgICByZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9kYmwoKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3plcm9EYmwgPSBmdW5jdGlvbiBfemVyb0RibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTRBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYTsgYSA9IDBcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gICAgLy8gVCA9IE0gXiAyIC0gMipTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcblxuICAgIC8vIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcblxuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyKlkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA5LWxcbiAgICAvLyAyTSArIDVTICsgMTNBXG5cbiAgICAvLyBBID0gWDFeMlxuICAgIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIEIgPSBZMV4yXG4gICAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gQyA9IEJeMlxuICAgIHZhciBjID0gYi5yZWRTcXIoKTtcbiAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG4gICAgdmFyIGQgPSB0aGlzLngucmVkQWRkKGIpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihjKTtcbiAgICBkID0gZC5yZWRJQWRkKGQpO1xuICAgIC8vIEUgPSAzICogQVxuICAgIHZhciBlID0gYS5yZWRBZGQoYSkucmVkSUFkZChhKTtcbiAgICAvLyBGID0gRV4yXG4gICAgdmFyIGYgPSBlLnJlZFNxcigpO1xuXG4gICAgLy8gOCAqIENcbiAgICB2YXIgYzggPSBjLnJlZElBZGQoYyk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuXG4gICAgLy8gWDMgPSBGIC0gMiAqIERcbiAgICBueCA9IGYucmVkSVN1YihkKS5yZWRJU3ViKGQpO1xuICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcbiAgICBueSA9IGUucmVkTXVsKGQucmVkSVN1YihueCkpLnJlZElTdWIoYzgpO1xuICAgIC8vIFozID0gMiAqIFkxICogWjFcbiAgICBueiA9IHRoaXMueS5yZWRNdWwodGhpcy56KTtcbiAgICBueiA9IG56LnJlZElBZGQobnopO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fdGhyZWVEYmwgPSBmdW5jdGlvbiBfdGhyZWVEYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE1QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGFcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCkucmVkSUFkZCh0aGlzLmN1cnZlLmEpO1xuICAgIC8vIFQgPSBNXjIgLSAyICogU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMiAqIFkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWwjZG91YmxpbmctZGJsLTIwMDEtYlxuICAgIC8vIDNNICsgNVNcblxuICAgIC8vIGRlbHRhID0gWjFeMlxuICAgIHZhciBkZWx0YSA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAvLyBnYW1tYSA9IFkxXjJcbiAgICB2YXIgZ2FtbWEgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gYmV0YSA9IFgxICogZ2FtbWFcbiAgICB2YXIgYmV0YSA9IHRoaXMueC5yZWRNdWwoZ2FtbWEpO1xuICAgIC8vIGFscGhhID0gMyAqIChYMSAtIGRlbHRhKSAqIChYMSArIGRlbHRhKVxuICAgIHZhciBhbHBoYSA9IHRoaXMueC5yZWRTdWIoZGVsdGEpLnJlZE11bCh0aGlzLngucmVkQWRkKGRlbHRhKSk7XG4gICAgYWxwaGEgPSBhbHBoYS5yZWRBZGQoYWxwaGEpLnJlZElBZGQoYWxwaGEpO1xuICAgIC8vIFgzID0gYWxwaGFeMiAtIDggKiBiZXRhXG4gICAgdmFyIGJldGE0ID0gYmV0YS5yZWRJQWRkKGJldGEpO1xuICAgIGJldGE0ID0gYmV0YTQucmVkSUFkZChiZXRhNCk7XG4gICAgdmFyIGJldGE4ID0gYmV0YTQucmVkQWRkKGJldGE0KTtcbiAgICBueCA9IGFscGhhLnJlZFNxcigpLnJlZElTdWIoYmV0YTgpO1xuICAgIC8vIFozID0gKFkxICsgWjEpXjIgLSBnYW1tYSAtIGRlbHRhXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7XG4gICAgLy8gWTMgPSBhbHBoYSAqICg0ICogYmV0YSAtIFgzKSAtIDggKiBnYW1tYV4yXG4gICAgdmFyIGdnYW1tYTggPSBnYW1tYS5yZWRTcXIoKTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBueSA9IGFscGhhLnJlZE11bChiZXRhNC5yZWRJU3ViKG54KSkucmVkSVN1YihnZ2FtbWE4KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX2RibCA9IGZ1bmN0aW9uIF9kYmwoKSB7XG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIC8vIDRNICsgNlMgKyAxMEFcbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgdmFyIGp5MiA9IGp5LnJlZFNxcigpO1xuXG4gIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gIHZhciBqeGQ0ID0gangucmVkQWRkKGp4KTtcbiAganhkNCA9IGp4ZDQucmVkSUFkZChqeGQ0KTtcbiAgdmFyIHQxID0ganhkNC5yZWRNdWwoankyKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcblxuICB2YXIganlkOCA9IGp5Mi5yZWRTcXIoKTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7XG4gIHZhciBueiA9IGp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRycGwgPSBmdW5jdGlvbiB0cnBsKCkge1xuICBpZiAoIXRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO1xuXG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sI3RyaXBsaW5nLXRwbC0yMDA3LWJsXG4gIC8vIDVNICsgMTBTICsgLi4uXG5cbiAgLy8gWFggPSBYMV4yXG4gIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gWVkgPSBZMV4yXG4gIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gWlogPSBaMV4yXG4gIHZhciB6eiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgLy8gWVlZWSA9IFlZXjJcbiAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgLy8gTSA9IDMgKiBYWCArIGEgKiBaWjI7IGEgPSAwXG4gIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgLy8gTU0gPSBNXjJcbiAgdmFyIG1tID0gbS5yZWRTcXIoKTtcbiAgLy8gRSA9IDYgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpIC0gTU1cbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICBlID0gZS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRBZGQoZSkucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkSVN1YihtbSk7XG4gIC8vIEVFID0gRV4yXG4gIHZhciBlZSA9IGUucmVkU3FyKCk7XG4gIC8vIFQgPSAxNipZWVlZXG4gIHZhciB0ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICAvLyBVID0gKE0gKyBFKV4yIC0gTU0gLSBFRSAtIFRcbiAgdmFyIHUgPSBtLnJlZElBZGQoZSkucmVkU3FyKCkucmVkSVN1YihtbSkucmVkSVN1YihlZSkucmVkSVN1Yih0KTtcbiAgLy8gWDMgPSA0ICogKFgxICogRUUgLSA0ICogWVkgKiBVKVxuICB2YXIgeXl1NCA9IHl5LnJlZE11bCh1KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgdmFyIG54ID0gdGhpcy54LnJlZE11bChlZSkucmVkSVN1Yih5eXU0KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgLy8gWTMgPSA4ICogWTEgKiAoVSAqIChUIC0gVSkgLSBFICogRUUpXG4gIHZhciBueSA9IHRoaXMueS5yZWRNdWwodS5yZWRNdWwodC5yZWRJU3ViKHUpKS5yZWRJU3ViKGUucmVkTXVsKGVlKSkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICAvLyBaMyA9IChaMSArIEUpXjIgLSBaWiAtIEVFXG4gIHZhciBueiA9IHRoaXMuei5yZWRBZGQoZSkucmVkU3FyKCkucmVkSVN1Yih6eikucmVkSVN1YihlZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaywga2Jhc2UpIHtcbiAgayA9IG5ldyBCTihrLCBrYmFzZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICByZXR1cm4gdGhpcy5lcShwLnRvSigpKTtcblxuICBpZiAodGhpcyA9PT0gcClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyB4MSAqIHoyXjIgPT0geDIgKiB6MV4yXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgaWYgKHRoaXMueC5yZWRNdWwocHoyKS5yZWRJU3ViKHAueC5yZWRNdWwoejIpKS5jbXBuKDApICE9PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyB5MSAqIHoyXjMgPT0geTIgKiB6MV4zXG4gIHZhciB6MyA9IHoyLnJlZE11bCh0aGlzLnopO1xuICB2YXIgcHozID0gcHoyLnJlZE11bChwLnopO1xuICByZXR1cm4gdGhpcy55LnJlZE11bChwejMpLnJlZElTdWIocC55LnJlZE11bCh6MykpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciB6cyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHpzKTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHpzKTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vZWxsaXB0aWMnKTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gUHJlc2V0Q3VydmUob3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlID09PSAnc2hvcnQnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuc2hvcnQob3B0aW9ucyk7XG4gIGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Vkd2FyZHMnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuZWR3YXJkcyhvcHRpb25zKTtcbiAgZWxzZVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUubW9udChvcHRpb25zKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcblxuICBhc3NlcnQodGhpcy5nLnZhbGlkYXRlKCksICdJbnZhbGlkIGN1cnZlJyk7XG4gIGFzc2VydCh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCAnSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8nKTtcbn1cbmN1cnZlcy5QcmVzZXRDdXJ2ZSA9IFByZXNldEN1cnZlO1xuXG5mdW5jdGlvbiBkZWZpbmVDdXJ2ZShuYW1lLCBvcHRpb25zKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGN1cnZlID0gbmV3IFByZXNldEN1cnZlKG9wdGlvbnMpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBjdXJ2ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfVxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyNTYnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGInLFxuICBuOiAnZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYnLFxuICAgICc0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ2N1cnZlMjU1MTknLCB7XG4gIHR5cGU6ICdtb250JyxcbiAgcHJpbWU6ICdwMjU1MTknLFxuICBwOiAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcsXG4gIGE6ICc3NmQwNicsXG4gIGI6ICcwJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnOSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4J1xuICBdXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSdcbiAgICB9XG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFQyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFQykpXG4gICAgcmV0dXJuIG5ldyBFQyhvcHRpb25zKTtcblxuICAvLyBTaG9ydGN1dCBgZWxsaXB0aWMuZWMoY3VydmUtbmFtZSlgXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBhc3NlcnQoZWxsaXB0aWMuY3VydmVzLmhhc093blByb3BlcnR5KG9wdGlvbnMpLCAnVW5rbm93biBjdXJ2ZSAnICsgb3B0aW9ucyk7XG5cbiAgICBvcHRpb25zID0gZWxsaXB0aWMuY3VydmVzW29wdGlvbnNdO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZm9yIGBlbGxpcHRpYy5lYyhlbGxpcHRpYy5jdXJ2ZXMuY3VydmVOYW1lKWBcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBlbGxpcHRpYy5jdXJ2ZXMuUHJlc2V0Q3VydmUpXG4gICAgb3B0aW9ucyA9IHsgY3VydmU6IG9wdGlvbnMgfTtcblxuICB0aGlzLmN1cnZlID0gb3B0aW9ucy5jdXJ2ZS5jdXJ2ZTtcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLm5oID0gdGhpcy5uLnVzaHJuKDEpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG5cbiAgLy8gUG9pbnQgb24gY3VydmVcbiAgdGhpcy5nID0gb3B0aW9ucy5jdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShvcHRpb25zLmN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICAvLyBIYXNoIGZvciBmdW5jdGlvbiBmb3IgRFJCR1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2ggfHwgb3B0aW9ucy5jdXJ2ZS5oYXNoO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFQztcblxuRUMucHJvdG90eXBlLmtleVBhaXIgPSBmdW5jdGlvbiBrZXlQYWlyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHRoaXMsIG9wdGlvbnMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlID0gZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUocHJpdiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21Qcml2YXRlKHRoaXMsIHByaXYsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViLCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2VuS2V5UGFpciA9IGZ1bmN0aW9uIGdlbktleVBhaXIob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBlbGxpcHRpYy5obWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBlbnRyb3B5OiBvcHRpb25zLmVudHJvcHkgfHwgZWxsaXB0aWMucmFuZCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxcbiAgICBub25jZTogdGhpcy5uLnRvQXJyYXkoKVxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBkbyB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG59O1xuXG5FQy5wcm90b3R5cGUuX3RydW5jYXRlVG9OID0gZnVuY3Rpb24gdHJ1bmNhdGVUb04obXNnLCB0cnVuY09ubHkpIHtcbiAgdmFyIGRlbHRhID0gbXNnLmJ5dGVMZW5ndGgoKSAqIDggLSB0aGlzLm4uYml0TGVuZ3RoKCk7XG4gIGlmIChkZWx0YSA+IDApXG4gICAgbXNnID0gbXNnLnVzaHJuKGRlbHRhKTtcbiAgaWYgKCF0cnVuY09ubHkgJiYgbXNnLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtcbiAgZWxzZVxuICAgIHJldHVybiBtc2c7XG59O1xuXG5FQy5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBrZXksIGVuYywgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGVuYyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICBrZXkgPSB0aGlzLmtleUZyb21Qcml2YXRlKGtleSwgZW5jKTtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcblxuICAvLyBaZXJvLWV4dGVuZCBrZXkgdG8gcHJvdmlkZSBlbm91Z2ggZW50cm9weVxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgYmtleSA9IGtleS5nZXRQcml2YXRlKCkudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gWmVyby1leHRlbmQgbm9uY2UgdG8gaGF2ZSB0aGUgc2FtZSBieXRlIHNpemUgYXMgTlxuICB2YXIgbm9uY2UgPSBtc2cudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IGVsbGlwdGljLmhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgZW50cm9weTogYmtleSxcbiAgICBub25jZTogbm9uY2UsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuY1xuICB9KTtcblxuICAvLyBOdW1iZXIgb2YgYnl0ZXMgdG8gZ2VuZXJhdGVcbiAgdmFyIG5zMSA9IHRoaXMubi5zdWIobmV3IEJOKDEpKTtcblxuICBmb3IgKHZhciBpdGVyID0gMDsgdHJ1ZTsgaXRlcisrKSB7XG4gICAgdmFyIGsgPSBvcHRpb25zLmsgP1xuICAgICAgICBvcHRpb25zLmsoaXRlcikgOlxuICAgICAgICBuZXcgQk4oZHJiZy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7XG4gICAgayA9IHRoaXMuX3RydW5jYXRlVG9OKGssIHRydWUpO1xuICAgIGlmIChrLmNtcG4oMSkgPD0gMCB8fCBrLmNtcChuczEpID49IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcCA9IHRoaXMuZy5tdWwoayk7XG4gICAgaWYgKGtwLmlzSW5maW5pdHkoKSlcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwWCA9IGtwLmdldFgoKTtcbiAgICB2YXIgciA9IGtwWC51bW9kKHRoaXMubik7XG4gICAgaWYgKHIuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHMgPSBrLmludm0odGhpcy5uKS5tdWwoci5tdWwoa2V5LmdldFByaXZhdGUoKSkuaWFkZChtc2cpKTtcbiAgICBzID0gcy51bW9kKHRoaXMubik7XG4gICAgaWYgKHMuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHJlY292ZXJ5UGFyYW0gPSAoa3AuZ2V0WSgpLmlzT2RkKCkgPyAxIDogMCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgKGtwWC5jbXAocikgIT09IDAgPyAyIDogMCk7XG5cbiAgICAvLyBVc2UgY29tcGxlbWVudCBvZiBgc2AsIGlmIGl0IGlzID4gYG4gLyAyYFxuICAgIGlmIChvcHRpb25zLmNhbm9uaWNhbCAmJiBzLmNtcCh0aGlzLm5oKSA+IDApIHtcbiAgICAgIHMgPSB0aGlzLm4uc3ViKHMpO1xuICAgICAgcmVjb3ZlcnlQYXJhbSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKHsgcjogciwgczogcywgcmVjb3ZlcnlQYXJhbTogcmVjb3ZlcnlQYXJhbSB9KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSwga2V5LCBlbmMpIHtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcbiAga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKGtleSwgZW5jKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsICdoZXgnKTtcblxuICAvLyBQZXJmb3JtIHByaW1pdGl2ZSB2YWx1ZXMgdmFsaWRhdGlvblxuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuICBpZiAoci5jbXBuKDEpIDwgMCB8fCByLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAocy5jbXBuKDEpIDwgMCB8fCBzLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIFZhbGlkYXRlIHNpZ25hdHVyZVxuICB2YXIgc2ludiA9IHMuaW52bSh0aGlzLm4pO1xuICB2YXIgdTEgPSBzaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTtcbiAgdmFyIHUyID0gc2ludi5tdWwocikudW1vZCh0aGlzLm4pO1xuXG4gIGlmICghdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKSB7XG4gICAgdmFyIHAgPSB0aGlzLmcubXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKSA9PT0gMDtcbiAgfVxuXG4gIC8vIE5PVEU6IEdyZWcgTWF4d2VsbCdzIHRyaWNrLCBpbnNwaXJlZCBieTpcbiAgLy8gaHR0cHM6Ly9naXQuaW8vdmFkM0tcblxuICB2YXIgcCA9IHRoaXMuZy5qbXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBDb21wYXJlIGBwLnhgIG9mIEphY29iaWFuIHBvaW50IHdpdGggYHJgLFxuICAvLyB0aGlzIHdpbGwgZG8gYHAueCA9PSByICogcC56XjJgIGluc3RlYWQgb2YgbXVsdGlwbHlpbmcgYHAueGAgYnkgdGhlXG4gIC8vIGludmVyc2Ugb2YgYHAuel4yYFxuICByZXR1cm4gcC5lcVhUb1Aocik7XG59O1xuXG5FQy5wcm90b3R5cGUucmVjb3ZlclB1YktleSA9IGZ1bmN0aW9uKG1zZywgc2lnbmF0dXJlLCBqLCBlbmMpIHtcbiAgYXNzZXJ0KCgzICYgaikgPT09IGosICdUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzJyk7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuXG4gIHZhciBuID0gdGhpcy5uO1xuICB2YXIgZSA9IG5ldyBCTihtc2cpO1xuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuXG4gIC8vIEEgc2V0IExTQiBzaWduaWZpZXMgdGhhdCB0aGUgeS1jb29yZGluYXRlIGlzIG9kZFxuICB2YXIgaXNZT2RkID0gaiAmIDE7XG4gIHZhciBpc1NlY29uZEtleSA9IGogPj4gMTtcbiAgaWYgKHIuY21wKHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpID49IDAgJiYgaXNTZWNvbmRLZXkpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUnKTtcblxuICAvLyAxLjEuIExldCB4ID0gciArIGpuLlxuICBpZiAoaXNTZWNvbmRLZXkpXG4gICAgciA9IHRoaXMuY3VydmUucG9pbnRGcm9tWChyLmFkZCh0aGlzLmN1cnZlLm4pLCBpc1lPZGQpO1xuICBlbHNlXG4gICAgciA9IHRoaXMuY3VydmUucG9pbnRGcm9tWChyLCBpc1lPZGQpO1xuXG4gIHZhciBlTmVnID0gbi5zdWIoZSk7XG5cbiAgLy8gMS42LjEgQ29tcHV0ZSBRID0gcl4tMSAoc1IgLSAgZUcpXG4gIC8vICAgICAgICAgICAgICAgUSA9IHJeLTEgKHNSICsgLWVHKVxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHJldHVybiB0aGlzLmcubXVsQWRkKGVOZWcsIHIsIHMpLm11bChySW52KTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmZ1bmN0aW9uIEtleVBhaXIoZWMsIG9wdGlvbnMpIHtcbiAgdGhpcy5lYyA9IGVjO1xuICB0aGlzLnByaXYgPSBudWxsO1xuICB0aGlzLnB1YiA9IG51bGw7XG5cbiAgLy8gS2V5UGFpcihlYywgeyBwcml2OiAuLi4sIHB1YjogLi4uIH0pXG4gIGlmIChvcHRpb25zLnByaXYpXG4gICAgdGhpcy5faW1wb3J0UHJpdmF0ZShvcHRpb25zLnByaXYsIG9wdGlvbnMucHJpdkVuYyk7XG4gIGlmIChvcHRpb25zLnB1YilcbiAgICB0aGlzLl9pbXBvcnRQdWJsaWMob3B0aW9ucy5wdWIsIG9wdGlvbnMucHViRW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlYywgcHViLCBlbmMpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwdWI6IHB1YixcbiAgICBwdWJFbmM6IGVuY1xuICB9KTtcbn07XG5cbktleVBhaXIuZnJvbVByaXZhdGUgPSBmdW5jdGlvbiBmcm9tUHJpdmF0ZShlYywgcHJpdiwgZW5jKSB7XG4gIGlmIChwcml2IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHJpdjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwcml2OiBwcml2LFxuICAgIHByaXZFbmM6IGVuY1xuICB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHZhciBwdWIgPSB0aGlzLmdldFB1YmxpYygpO1xuXG4gIGlmIChwdWIuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ0ludmFsaWQgcHVibGljIGtleScgfTtcbiAgaWYgKCFwdWIudmFsaWRhdGUoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50JyB9O1xuICBpZiAoIXB1Yi5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSAqIE4gIT0gTycgfTtcblxuICByZXR1cm4geyByZXN1bHQ6IHRydWUsIHJlYXNvbjogbnVsbCB9O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGNvbXBhY3QsIGVuYykge1xuICAvLyBjb21wYWN0IGlzIG9wdGlvbmFsIGFyZ3VtZW50XG4gIGlmICh0eXBlb2YgY29tcGFjdCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmMgPSBjb21wYWN0O1xuICAgIGNvbXBhY3QgPSBudWxsO1xuICB9XG5cbiAgaWYgKCF0aGlzLnB1YilcbiAgICB0aGlzLnB1YiA9IHRoaXMuZWMuZy5tdWwodGhpcy5wcml2KTtcblxuICBpZiAoIWVuYylcbiAgICByZXR1cm4gdGhpcy5wdWI7XG5cbiAgcmV0dXJuIHRoaXMucHViLmVuY29kZShlbmMsIGNvbXBhY3QpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHJpdmF0ZSA9IGZ1bmN0aW9uIGdldFByaXZhdGUoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0aGlzLnByaXYudG9TdHJpbmcoMTYsIDIpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMucHJpdjtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlID0gZnVuY3Rpb24gX2ltcG9ydFByaXZhdGUoa2V5LCBlbmMpIHtcbiAgdGhpcy5wcml2ID0gbmV3IEJOKGtleSwgZW5jIHx8IDE2KTtcblxuICAvLyBFbnN1cmUgdGhhdCB0aGUgcHJpdiB3b24ndCBiZSBiaWdnZXIgdGhhbiBuLCBvdGhlcndpc2Ugd2UgbWF5IGZhaWxcbiAgLy8gaW4gZml4ZWQgbXVsdGlwbGljYXRpb24gbWV0aG9kXG4gIHRoaXMucHJpdiA9IHRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubik7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHVibGljID0gZnVuY3Rpb24gX2ltcG9ydFB1YmxpYyhrZXksIGVuYykge1xuICBpZiAoa2V5LnggfHwga2V5LnkpIHtcbiAgICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUucG9pbnQoa2V5LngsIGtleS55KTtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KGtleSwgZW5jKTtcbn07XG5cbi8vIEVDREhcbktleVBhaXIucHJvdG90eXBlLmRlcml2ZSA9IGZ1bmN0aW9uIGRlcml2ZShwdWIpIHtcbiAgcmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCk7XG59O1xuXG4vLyBFQ0RTQVxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuZWMuc2lnbihtc2csIHRoaXMsIGVuYywgb3B0aW9ucyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZywgc2lnbmF0dXJlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICByZXR1cm4gJzxLZXkgcHJpdjogJyArICh0aGlzLnByaXYgJiYgdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKSkgK1xuICAgICAgICAgJyBwdWI6ICcgKyAodGhpcy5wdWIgJiYgdGhpcy5wdWIuaW5zcGVjdCgpKSArICcgPic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaWduYXR1cmUob3B0aW9ucywgZW5jKSB7XG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgU2lnbmF0dXJlKVxuICAgIHJldHVybiBvcHRpb25zO1xuXG4gIGlmICh0aGlzLl9pbXBvcnRERVIob3B0aW9ucywgZW5jKSlcbiAgICByZXR1cm47XG5cbiAgYXNzZXJ0KG9wdGlvbnMuciAmJiBvcHRpb25zLnMsICdTaWduYXR1cmUgd2l0aG91dCByIG9yIHMnKTtcbiAgdGhpcy5yID0gbmV3IEJOKG9wdGlvbnMuciwgMTYpO1xuICB0aGlzLnMgPSBuZXcgQk4ob3B0aW9ucy5zLCAxNik7XG4gIGlmIChvcHRpb25zLnJlY292ZXJ5UGFyYW0gPT09IHVuZGVmaW5lZClcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuICBlbHNlXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gb3B0aW9ucy5yZWNvdmVyeVBhcmFtO1xufVxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG5cbmZ1bmN0aW9uIFBvc2l0aW9uKCkge1xuICB0aGlzLnBsYWNlID0gMDtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoKGJ1ZiwgcCkge1xuICB2YXIgaW5pdGlhbCA9IGJ1ZltwLnBsYWNlKytdO1xuICBpZiAoIShpbml0aWFsICYgMHg4MCkpIHtcbiAgICByZXR1cm4gaW5pdGlhbDtcbiAgfVxuICB2YXIgb2N0ZXRMZW4gPSBpbml0aWFsICYgMHhmO1xuICB2YXIgdmFsID0gMDtcbiAgZm9yICh2YXIgaSA9IDAsIG9mZiA9IHAucGxhY2U7IGkgPCBvY3RldExlbjsgaSsrLCBvZmYrKykge1xuICAgIHZhbCA8PD0gODtcbiAgICB2YWwgfD0gYnVmW29mZl07XG4gIH1cbiAgcC5wbGFjZSA9IG9mZjtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gcm1QYWRkaW5nKGJ1Zikge1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC0gMTtcbiAgd2hpbGUgKCFidWZbaV0gJiYgIShidWZbaSArIDFdICYgMHg4MCkgJiYgaSA8IGxlbikge1xuICAgIGkrKztcbiAgfVxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBidWY7XG4gIH1cbiAgcmV0dXJuIGJ1Zi5zbGljZShpKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS5faW1wb3J0REVSID0gZnVuY3Rpb24gX2ltcG9ydERFUihkYXRhLCBlbmMpIHtcbiAgZGF0YSA9IHV0aWxzLnRvQXJyYXkoZGF0YSwgZW5jKTtcbiAgdmFyIHAgPSBuZXcgUG9zaXRpb24oKTtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgzMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoKGxlbiArIHAucGxhY2UpICE9PSBkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBybGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICB2YXIgciA9IGRhdGEuc2xpY2UocC5wbGFjZSwgcmxlbiArIHAucGxhY2UpO1xuICBwLnBsYWNlICs9IHJsZW47XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc2xlbiArIHAucGxhY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHMgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHNsZW4gKyBwLnBsYWNlKTtcbiAgaWYgKHJbMF0gPT09IDAgJiYgKHJbMV0gJiAweDgwKSkge1xuICAgIHIgPSByLnNsaWNlKDEpO1xuICB9XG4gIGlmIChzWzBdID09PSAwICYmIChzWzFdICYgMHg4MCkpIHtcbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuXG4gIHRoaXMuciA9IG5ldyBCTihyKTtcbiAgdGhpcy5zID0gbmV3IEJOKHMpO1xuICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG9jdGV0cyA9IDEgKyAoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yID4+PiAzKTtcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uIHRvREVSKGVuYykge1xuICB2YXIgciA9IHRoaXMuci50b0FycmF5KCk7XG4gIHZhciBzID0gdGhpcy5zLnRvQXJyYXkoKTtcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MClcbiAgICByID0gWyAwIF0uY29uY2F0KHIpO1xuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MClcbiAgICBzID0gWyAwIF0uY29uY2F0KHMpO1xuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgd2hpbGUgKCFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cbiAgdmFyIGFyciA9IFsgMHgwMiBdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIHZhciBiYWNrSGFsZiA9IGFyci5jb25jYXQocyk7XG4gIHZhciByZXMgPSBbIDB4MzAgXTtcbiAgY29uc3RydWN0TGVuZ3RoKHJlcywgYmFja0hhbGYubGVuZ3RoKTtcbiAgcmVzID0gcmVzLmNvbmNhdChiYWNrSGFsZik7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVERFNBKGN1cnZlKSB7XG4gIGFzc2VydChjdXJ2ZSA9PT0gJ2VkMjU1MTknLCAnb25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhcicpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFRERTQSkpXG4gICAgcmV0dXJuIG5ldyBFRERTQShjdXJ2ZSk7XG5cbiAgdmFyIGN1cnZlID0gZWxsaXB0aWMuY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAubXVsKGtleS5wcml2KCkpO1xuICB2YXIgUyA9IHIuYWRkKHNfKS51bW9kKHRoaXMuY3VydmUubik7XG4gIHJldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoeyBSOiBSLCBTOiBTLCBSZW5jb2RlZDogUmVuY29kZWQgfSk7XG59O1xuXG4vKipcbiogQHBhcmFtIHtBcnJheX0gbWVzc2FnZSAtIG1lc3NhZ2UgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8U2lnbmF0dXJlfSBzaWcgLSBzaWcgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8UG9pbnR8S2V5UGFpcn0gcHViIC0gcHVibGljIGtleVxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSB0cnVlIGlmIHB1YmxpYyBrZXkgbWF0Y2hlcyBzaWcgb2YgbWVzc2FnZVxuKi9cbkVERFNBLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnLCBwdWIpIHtcbiAgbWVzc2FnZSA9IHBhcnNlQnl0ZXMobWVzc2FnZSk7XG4gIHNpZyA9IHRoaXMubWFrZVNpZ25hdHVyZShzaWcpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKHB1Yik7XG4gIHZhciBoID0gdGhpcy5oYXNoSW50KHNpZy5SZW5jb2RlZCgpLCBrZXkucHViQnl0ZXMoKSwgbWVzc2FnZSk7XG4gIHZhciBTRyA9IHRoaXMuZy5tdWwoc2lnLlMoKSk7XG4gIHZhciBScGx1c0FoID0gc2lnLlIoKS5hZGQoa2V5LnB1YigpLm11bChoKSk7XG4gIHJldHVybiBScGx1c0FoLmVxKFNHKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5oYXNoSW50ID0gZnVuY3Rpb24gaGFzaEludCgpIHtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgaGFzaC51cGRhdGUoYXJndW1lbnRzW2ldKTtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShoYXNoLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0ID0gZnVuY3Rpb24ga2V5RnJvbVNlY3JldChzZWNyZXQpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVNlY3JldCh0aGlzLCBzZWNyZXQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLm1ha2VTaWduYXR1cmUgPSBmdW5jdGlvbiBtYWtlU2lnbmF0dXJlKHNpZykge1xuICBpZiAoc2lnIGluc3RhbmNlb2YgU2lnbmF0dXJlKVxuICAgIHJldHVybiBzaWc7XG4gIHJldHVybiBuZXcgU2lnbmF0dXJlKHRoaXMsIHNpZyk7XG59O1xuXG4vKipcbiogKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtam9zZWZzc29uLWVkZHNhLWVkMjU1MTktMDMjc2VjdGlvbi01LjJcbipcbiogRUREU0EgZGVmaW5lcyBtZXRob2RzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgcG9pbnRzIGFuZCBpbnRlZ2Vycy4gVGhlc2UgYXJlXG4qIGhlbHBlciBjb252ZW5pZW5jZSBtZXRob2RzLCB0aGF0IHBhc3MgYWxvbmcgdG8gdXRpbGl0eSBmdW5jdGlvbnMgaW1wbGllZFxuKiBwYXJhbWV0ZXJzLlxuKlxuKi9cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVQb2ludCA9IGZ1bmN0aW9uIGVuY29kZVBvaW50KHBvaW50KSB7XG4gIHZhciBlbmMgPSBwb2ludC5nZXRZKCkudG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbiAgZW5jW3RoaXMuZW5jb2RpbmdMZW5ndGggLSAxXSB8PSBwb2ludC5nZXRYKCkuaXNPZGQoKSA/IDB4ODAgOiAwO1xuICByZXR1cm4gZW5jO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMpIHtcbiAgYnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzKGJ5dGVzKTtcblxuICB2YXIgbGFzdEl4ID0gYnl0ZXMubGVuZ3RoIC0gMTtcbiAgdmFyIG5vcm1lZCA9IGJ5dGVzLnNsaWNlKDAsIGxhc3RJeCkuY29uY2F0KGJ5dGVzW2xhc3RJeF0gJiB+MHg4MCk7XG4gIHZhciB4SXNPZGQgPSAoYnl0ZXNbbGFzdEl4XSAmIDB4ODApICE9PSAwO1xuXG4gIHZhciB5ID0gdXRpbHMuaW50RnJvbUxFKG5vcm1lZCk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoeSwgeElzT2RkKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtKSB7XG4gIHJldHVybiBudW0udG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnl0ZXMpIHtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShieXRlcyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaXNQb2ludCA9IGZ1bmN0aW9uIGlzUG9pbnQodmFsKSB7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3M7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGluc3RhbmNlXG4qIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFyYW1ldGVyc1xuKlxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnNlY3JldF0gLSBzZWNyZXQgc2VlZCBieXRlc1xuKiBAcGFyYW0ge1BvaW50fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IChha2EgYEFgIGluIGVkZHNhIHRlcm1zKVxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IGVuY29kZWQgYXMgYnl0ZXNcbipcbiovXG5mdW5jdGlvbiBLZXlQYWlyKGVkZHNhLCBwYXJhbXMpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuICB0aGlzLl9zZWNyZXQgPSBwYXJzZUJ5dGVzKHBhcmFtcy5zZWNyZXQpO1xuICBpZiAoZWRkc2EuaXNQb2ludChwYXJhbXMucHViKSlcbiAgICB0aGlzLl9wdWIgPSBwYXJhbXMucHViO1xuICBlbHNlXG4gICAgdGhpcy5fcHViQnl0ZXMgPSBwYXJzZUJ5dGVzKHBhcmFtcy5wdWIpO1xufVxuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVkZHNhLCBwdWIpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHB1YjogcHViIH0pO1xufTtcblxuS2V5UGFpci5mcm9tU2VjcmV0ID0gZnVuY3Rpb24gZnJvbVNlY3JldChlZGRzYSwgc2VjcmV0KSB7XG4gIGlmIChzZWNyZXQgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBzZWNyZXQ7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBzZWNyZXQ6IHNlY3JldCB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnNlY3JldCA9IGZ1bmN0aW9uIHNlY3JldCgpIHtcbiAgcmV0dXJuIHRoaXMuX3NlY3JldDtcbn07XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWJCeXRlcycsIGZ1bmN0aW9uIHB1YkJ5dGVzKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViJywgZnVuY3Rpb24gcHViKCkge1xuICBpZiAodGhpcy5fcHViQnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXZCeXRlcycsIGZ1bmN0aW9uIHByaXZCeXRlcygpIHtcbiAgdmFyIGVkZHNhID0gdGhpcy5lZGRzYTtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgdmFyIGxhc3RJeCA9IGVkZHNhLmVuY29kaW5nTGVuZ3RoIC0gMTtcblxuICB2YXIgYSA9IGhhc2guc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xuICBhWzBdICY9IDI0ODtcbiAgYVtsYXN0SXhdICY9IDEyNztcbiAgYVtsYXN0SXhdIHw9IDY0O1xuXG4gIHJldHVybiBhO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2JywgZnVuY3Rpb24gcHJpdigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdoYXNoJywgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnbWVzc2FnZVByZWZpeCcsIGZ1bmN0aW9uIG1lc3NhZ2VQcmVmaXgoKSB7XG4gIHJldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbn0pO1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeScpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5zaWduKG1lc3NhZ2UsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZykge1xuICByZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkobWVzc2FnZSwgc2lnLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFNlY3JldCA9IGZ1bmN0aW9uIGdldFNlY3JldChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgaXMgcHVibGljIG9ubHknKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnNlY3JldCgpLCBlbmMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGVuYykge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSwgZW5jKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gZWRkc2EgaW5zdGFuY2VcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58T2JqZWN0fSBzaWcgLVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxQb2ludH0gW3NpZy5SXSAtIFIgcG9pbnQgYXMgUG9pbnQgb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58Ym59IFtzaWcuU10gLSBTIHNjYWxhciBhcyBibiBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5SZW5jb2RlZF0gLSBSIHBvaW50IGVuY29kZWRcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuU2VuY29kZWRdIC0gUyBzY2FsYXIgZW5jb2RlZFxuKi9cbmZ1bmN0aW9uIFNpZ25hdHVyZShlZGRzYSwgc2lnKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcblxuICBpZiAodHlwZW9mIHNpZyAhPT0gJ29iamVjdCcpXG4gICAgc2lnID0gcGFyc2VCeXRlcyhzaWcpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHNpZykpIHtcbiAgICBzaWcgPSB7XG4gICAgICBSOiBzaWcuc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpLFxuICAgICAgUzogc2lnLnNsaWNlKGVkZHNhLmVuY29kaW5nTGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBhc3NlcnQoc2lnLlIgJiYgc2lnLlMsICdTaWduYXR1cmUgd2l0aG91dCBSIG9yIFMnKTtcblxuICBpZiAoZWRkc2EuaXNQb2ludChzaWcuUikpXG4gICAgdGhpcy5fUiA9IHNpZy5SO1xuICBpZiAoc2lnLlMgaW5zdGFuY2VvZiBCTilcbiAgICB0aGlzLl9TID0gc2lnLlM7XG5cbiAgdGhpcy5fUmVuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5SKSA/IHNpZy5SIDogc2lnLlJlbmNvZGVkO1xuICB0aGlzLl9TZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlMpID8gc2lnLlMgOiBzaWcuU2VuY29kZWQ7XG59XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1MnLCBmdW5jdGlvbiBTKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdSJywgZnVuY3Rpb24gUigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdSZW5jb2RlZCcsIGZ1bmN0aW9uIFJlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnU2VuY29kZWQnLCBmdW5jdGlvbiBTZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlSW50KHRoaXMuUygpKTtcbn0pO1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvQnl0ZXMgPSBmdW5jdGlvbiB0b0J5dGVzKCkge1xuICByZXR1cm4gdGhpcy5SZW5jb2RlZCgpLmNvbmNhdCh0aGlzLlNlbmNvZGVkKCkpO1xufTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0hleCA9IGZ1bmN0aW9uIHRvSGV4KCkge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMudG9CeXRlcygpLCAnaGV4JykudG9VcHBlckNhc2UoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEhtYWNEUkJHKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlcbiAgICByZXR1cm4gbmV3IEhtYWNEUkJHKG9wdGlvbnMpO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG4gIHRoaXMucHJlZFJlc2lzdCA9ICEhb3B0aW9ucy5wcmVkUmVzaXN0O1xuXG4gIHRoaXMub3V0TGVuID0gdGhpcy5oYXNoLm91dFNpemU7XG4gIHRoaXMubWluRW50cm9weSA9IG9wdGlvbnMubWluRW50cm9weSB8fCB0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO1xuXG4gIHRoaXMucmVzZWVkID0gbnVsbDtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IG51bGw7XG4gIHRoaXMuSyA9IG51bGw7XG4gIHRoaXMuViA9IG51bGw7XG5cbiAgdmFyIGVudHJvcHkgPSB1dGlscy50b0FycmF5KG9wdGlvbnMuZW50cm9weSwgb3B0aW9ucy5lbnRyb3B5RW5jKTtcbiAgdmFyIG5vbmNlID0gdXRpbHMudG9BcnJheShvcHRpb25zLm5vbmNlLCBvcHRpb25zLm5vbmNlRW5jKTtcbiAgdmFyIHBlcnMgPSB1dGlscy50b0FycmF5KG9wdGlvbnMucGVycywgb3B0aW9ucy5wZXJzRW5jKTtcbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcbiAgdGhpcy5faW5pdChlbnRyb3B5LCBub25jZSwgcGVycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNEUkJHO1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKSB7XG4gIHZhciBzZWVkID0gZW50cm9weS5jb25jYXQobm9uY2UpLmNvbmNhdChwZXJzKTtcblxuICB0aGlzLksgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgdGhpcy5WID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5WLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5LW2ldID0gMHgwMDtcbiAgICB0aGlzLlZbaV0gPSAweDAxO1xuICB9XG5cbiAgdGhpcy5fdXBkYXRlKHNlZWQpO1xuICB0aGlzLnJlc2VlZCA9IDE7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSAweDEwMDAwMDAwMDAwMDA7ICAvLyAyXjQ4XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2htYWMgPSBmdW5jdGlvbiBobWFjKCkge1xuICByZXR1cm4gbmV3IGhhc2guaG1hYyh0aGlzLmhhc2gsIHRoaXMuSyk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShzZWVkKSB7XG4gIHZhciBrbWFjID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMCBdKTtcbiAgaWYgKHNlZWQpXG4gICAga21hYyA9IGttYWMudXBkYXRlKHNlZWQpO1xuICB0aGlzLksgPSBrbWFjLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gIGlmICghc2VlZClcbiAgICByZXR1cm47XG5cbiAgdGhpcy5LID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAxIF0pXG4gICAgICAgICAgICAgICAudXBkYXRlKHNlZWQpXG4gICAgICAgICAgICAgICAuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQgPSBmdW5jdGlvbiByZXNlZWQoZW50cm9weSwgZW50cm9weUVuYywgYWRkLCBhZGRFbmMpIHtcbiAgLy8gT3B0aW9uYWwgZW50cm9weSBlbmNcbiAgaWYgKHR5cGVvZiBlbnRyb3B5RW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbnRyb3B5RW5jO1xuICAgIGVudHJvcHlFbmMgPSBudWxsO1xuICB9XG5cbiAgZW50cm9weSA9IHV0aWxzLnRvQnVmZmVyKGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0J1ZmZlcihhZGQsIGFkZEVuYyk7XG5cbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcblxuICB0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkIHx8IFtdKSk7XG4gIHRoaXMucmVzZWVkID0gMTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKGxlbiwgZW5jLCBhZGQsIGFkZEVuYykge1xuICBpZiAodGhpcy5yZXNlZWQgPiB0aGlzLnJlc2VlZEludGVydmFsKVxuICAgIHRocm93IG5ldyBFcnJvcignUmVzZWVkIGlzIHJlcXVpcmVkJyk7XG5cbiAgLy8gT3B0aW9uYWwgZW5jb2RpbmdcbiAgaWYgKHR5cGVvZiBlbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG5cbiAgLy8gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gIGlmIChhZGQpIHtcbiAgICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcbiAgICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgfVxuXG4gIHZhciB0ZW1wID0gW107XG4gIHdoaWxlICh0ZW1wLmxlbmd0aCA8IGxlbikge1xuICAgIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgICB0ZW1wID0gdGVtcC5jb25jYXQodGhpcy5WKTtcbiAgfVxuXG4gIHZhciByZXMgPSB0ZW1wLnNsaWNlKDAsIGxlbik7XG4gIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB0aGlzLnJlc2VlZCsrO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzknLFxuICAgICAgICAnZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYScsXG4gICAgICAgICc5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCcsXG4gICAgICAgICc5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCcsXG4gICAgICAgICc1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3JyxcbiAgICAgICAgJzdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEnLFxuICAgICAgICAnNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUnLFxuICAgICAgICAnN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYnLFxuICAgICAgICAnNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGInLFxuICAgICAgICAnZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAnLFxuICAgICAgICAnNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMScsXG4gICAgICAgICcxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZicsXG4gICAgICAgICc2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2JyxcbiAgICAgICAgJzM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NicsXG4gICAgICAgICc0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxJyxcbiAgICAgICAgJzFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzJyxcbiAgICAgICAgJ2JlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlJyxcbiAgICAgICAgJ2IzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzJyxcbiAgICAgICAgJzdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxJyxcbiAgICAgICAgJ2U4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiJyxcbiAgICAgICAgJzY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCcsXG4gICAgICAgICc2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInXG4gICAgICBdXG4gICAgXVxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCcsXG4gICAgICAgICdkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYicsXG4gICAgICAgICdkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0JyxcbiAgICAgICAgJzQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmJyxcbiAgICAgICAgJzJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGInLFxuICAgICAgICAnMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzknLFxuICAgICAgICAnMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYicsXG4gICAgICAgICdkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQnLFxuICAgICAgICAnOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDcnLFxuICAgICAgICAnY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUnLFxuICAgICAgICAnOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViJyxcbiAgICAgICAgJzNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhJyxcbiAgICAgICAgJ2UzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlJyxcbiAgICAgICAgJ2M1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5JyxcbiAgICAgICAgJ2U0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmJyxcbiAgICAgICAgJzhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjJyxcbiAgICAgICAgJ2Q1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMnLFxuICAgICAgICAnNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCcsXG4gICAgICAgICdmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNicsXG4gICAgICAgICc4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxJyxcbiAgICAgICAgJ2YzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3JyxcbiAgICAgICAgJzRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NicsXG4gICAgICAgICdkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0JyxcbiAgICAgICAgJzYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MicsXG4gICAgICAgICdhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0JyxcbiAgICAgICAgJzMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NicsXG4gICAgICAgICdiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCcsXG4gICAgICAgICdiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmJyxcbiAgICAgICAgJzIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEnLFxuICAgICAgICAnNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYnLFxuICAgICAgICAnOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQnLFxuICAgICAgICAnMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYnLFxuICAgICAgICAnZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEnLFxuICAgICAgICAnMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEnLFxuICAgICAgICAnY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MycsXG4gICAgICAgICdjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3JyxcbiAgICAgICAgJ2QzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkJyxcbiAgICAgICAgJ2NkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYnLFxuICAgICAgICAnNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMnLFxuICAgICAgICAnYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUnLFxuICAgICAgICAnYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMnLFxuICAgICAgICAnNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCcsXG4gICAgICAgICc5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknXG4gICAgICBdXG4gICAgXVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudXRpbHMuYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHZhbCwgbXNnKSB7XG4gIGlmICghdmFsKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn07XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoIWVuYykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgdmFyIGhpID0gYyA+PiA4O1xuICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICBpZiAoaGkpXG4gICAgICAgIHJlcy5wdXNoKGhpLCBsbyk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9BcnJheSA9IHRvQXJyYXk7XG5cbmZ1bmN0aW9uIHplcm8yKHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvMiA9IHplcm8yO1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG51dGlscy5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoYXJyLCBlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRvSGV4KGFycik7XG4gIGVsc2VcbiAgICByZXR1cm4gYXJyO1xufTtcblxuLy8gUmVwcmVzZW50IG51bSBpbiBhIHctTkFGIGZvcm1cbmZ1bmN0aW9uIGdldE5BRihudW0sIHcpIHtcbiAgdmFyIG5hZiA9IFtdO1xuICB2YXIgd3MgPSAxIDw8ICh3ICsgMSk7XG4gIHZhciBrID0gbnVtLmNsb25lKCk7XG4gIHdoaWxlIChrLmNtcG4oMSkgPj0gMCkge1xuICAgIHZhciB6O1xuICAgIGlmIChrLmlzT2RkKCkpIHtcbiAgICAgIHZhciBtb2QgPSBrLmFuZGxuKHdzIC0gMSk7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cbiAgICBuYWYucHVzaCh6KTtcblxuICAgIC8vIE9wdGltaXphdGlvbiwgc2hpZnQgYnkgd29yZCBpZiBwb3NzaWJsZVxuICAgIHZhciBzaGlmdCA9IChrLmNtcG4oMCkgIT09IDAgJiYgay5hbmRsbih3cyAtIDEpID09PSAwKSA/ICh3ICsgMSkgOiAxO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2hpZnQ7IGkrKylcbiAgICAgIG5hZi5wdXNoKDApO1xuICAgIGsuaXVzaHJuKHNoaWZ0KTtcbiAgfVxuXG4gIHJldHVybiBuYWY7XG59XG51dGlscy5nZXROQUYgPSBnZXROQUY7XG5cbi8vIFJlcHJlc2VudCBrMSwgazIgaW4gYSBKb2ludCBTcGFyc2UgRm9ybVxuZnVuY3Rpb24gZ2V0SlNGKGsxLCBrMikge1xuICB2YXIganNmID0gW1xuICAgIFtdLFxuICAgIFtdXG4gIF07XG5cbiAgazEgPSBrMS5jbG9uZSgpO1xuICBrMiA9IGsyLmNsb25lKCk7XG4gIHZhciBkMSA9IDA7XG4gIHZhciBkMiA9IDA7XG4gIHdoaWxlIChrMS5jbXBuKC1kMSkgPiAwIHx8IGsyLmNtcG4oLWQyKSA+IDApIHtcblxuICAgIC8vIEZpcnN0IHBoYXNlXG4gICAgdmFyIG0xNCA9IChrMS5hbmRsbigzKSArIGQxKSAmIDM7XG4gICAgdmFyIG0yNCA9IChrMi5hbmRsbigzKSArIGQyKSAmIDM7XG4gICAgaWYgKG0xNCA9PT0gMylcbiAgICAgIG0xNCA9IC0xO1xuICAgIGlmIChtMjQgPT09IDMpXG4gICAgICBtMjQgPSAtMTtcbiAgICB2YXIgdTE7XG4gICAgaWYgKChtMTQgJiAxKSA9PT0gMCkge1xuICAgICAgdTEgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazEuYW5kbG4oNykgKyBkMSkgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTI0ID09PSAyKVxuICAgICAgICB1MSA9IC1tMTQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUxID0gbTE0O1xuICAgIH1cbiAgICBqc2ZbMF0ucHVzaCh1MSk7XG5cbiAgICB2YXIgdTI7XG4gICAgaWYgKChtMjQgJiAxKSA9PT0gMCkge1xuICAgICAgdTIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICAgICAgIHRoaXNba2V5XSA9IGNvbXB1dGVyLmNhbGwodGhpcyk7XG4gIH07XG59XG51dGlscy5jYWNoZWRQcm9wZXJ0eSA9IGNhY2hlZFByb3BlcnR5O1xuXG5mdW5jdGlvbiBwYXJzZUJ5dGVzKGJ5dGVzKSB7XG4gIHJldHVybiB0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnID8gdXRpbHMudG9BcnJheShieXRlcywgJ2hleCcpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcztcbn1cbnV0aWxzLnBhcnNlQnl0ZXMgPSBwYXJzZUJ5dGVzO1xuXG5mdW5jdGlvbiBpbnRGcm9tTEUoYnl0ZXMpIHtcbiAgcmV0dXJuIG5ldyBCTihieXRlcywgJ2hleCcsICdsZScpO1xufVxudXRpbHMuaW50RnJvbUxFID0gaW50RnJvbUxFO1xuXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2FyZ3NcIjogW1xuICAgIFtcbiAgICAgIFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICBcIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiXG4gICAgXVxuICBdLFxuICBcIl9mcm9tXCI6IFwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixcbiAgXCJfaWRcIjogXCJlbGxpcHRpY0A2LjMuMVwiLFxuICBcIl9pbkNhY2hlXCI6IHRydWUsXG4gIFwiX2luc3RhbGxhYmxlXCI6IHRydWUsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL2VsbGlwdGljXCIsXG4gIFwiX25vZGVWZXJzaW9uXCI6IFwiNi4wLjBcIixcbiAgXCJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbFwiOiB7XG4gICAgXCJob3N0XCI6IFwicGFja2FnZXMtMTYtZWFzdC5pbnRlcm5hbC5ucG1qcy5jb21cIixcbiAgICBcInRtcFwiOiBcInRtcC9lbGxpcHRpYy02LjMuMS50Z3pfMTQ2NTkyMTQxMzQwMl8wLjUyMDI5NjczODI1MDE4MTFcIlxuICB9LFxuICBcIl9ucG1Vc2VyXCI6IHtcbiAgICBcImVtYWlsXCI6IFwiZmVkb3JAaW5kdXRueS5jb21cIixcbiAgICBcIm5hbWVcIjogXCJpbmR1dG55XCJcbiAgfSxcbiAgXCJfbnBtVmVyc2lvblwiOiBcIjMuOC42XCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJzY29wZVwiOiBudWxsLFxuICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgXCJ0eXBlXCI6IFwicmFuZ2VcIlxuICB9LFxuICBcIl9yZXF1aXJlZEJ5XCI6IFtcbiAgICBcIi9icm93c2VyaWZ5LXNpZ25cIixcbiAgICBcIi9jcmVhdGUtZWNkaFwiXG4gIF0sXG4gIFwiX3Jlc29sdmVkXCI6IFwiaHR0cDovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiLFxuICBcIl9zaGFzdW1cIjogXCIxNzc4MWYyMTA5YWIwZWM2ODZiMTQ2YmRjZmY1ZDJlOGM2YWVjZWRhXCIsXG4gIFwiX3Nocmlua3dyYXBcIjogbnVsbCxcbiAgXCJfc3BlY1wiOiBcImVsbGlwdGljQF42LjAuMFwiLFxuICBcIl93aGVyZVwiOiBcIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiLFxuICBcImF1dGhvclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiRmVkb3IgSW5kdXRueVwiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJibi5qc1wiOiBcIl40LjQuMFwiLFxuICAgIFwiYnJvcmFuZFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiaGFzaC5qc1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLWNvbm5lY3RcIjogXCJeMS4wLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29weVwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcImdydW50LW1vY2hhLWlzdGFuYnVsXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJncnVudC1zYXVjZWxhYnNcIjogXCJeOC42LjJcIixcbiAgICBcImlzdGFuYnVsXCI6IFwiXjAuNC4yXCIsXG4gICAgXCJqc2NzXCI6IFwiXjIuOS4wXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi42LjBcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJkaXJlY3Rvcmllc1wiOiB7fSxcbiAgXCJkaXN0XCI6IHtcbiAgICBcInNoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgICBcInRhcmJhbGxcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwibGliXCJcbiAgXSxcbiAgXCJnaXRIZWFkXCI6IFwiYzUzZjVjZjNkODMyYzAwNzNlYjRhNGVkNDIzYTQ2NGNiY2U2OGYzZVwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWNcIixcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJFQ1wiLFxuICAgIFwiRWxsaXB0aWNcIixcbiAgICBcImN1cnZlXCIsXG4gICAgXCJDcnlwdG9ncmFwaHlcIlxuICBdLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJtYWluXCI6IFwibGliL2VsbGlwdGljLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHt9LFxuICBcInJlYWRtZVwiOiBcIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCFcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJqc2NzXCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwianNoaW50XCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwibGludFwiOiBcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXRcIixcbiAgICBcInVuaXRcIjogXCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwidmVyc2lvblwiOiBcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjYuMy4xXCJcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxuRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24obikge1xuICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IFR5cGVFcnJvcignbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgZXIsIGhhbmRsZXIsIGxlbiwgYXJncywgaSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cy5lcnJvciB8fFxuICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHtcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCBcImVycm9yXCIgZXZlbnQuJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNVbmRlZmluZWQoaGFuZGxlcikpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBmYXN0IGNhc2VzXG4gICAgICBjYXNlIDE6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICB2YXIgbTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IDA7XG4gIGVsc2UgaWYgKGlzRnVuY3Rpb24oZW1pdHRlci5fZXZlbnRzW3R5cGVdKSlcbiAgICByZXQgPSAxO1xuICBlbHNlXG4gICAgcmV0ID0gZW1pdHRlci5fZXZlbnRzW3R5cGVdLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlMZW4sIGl2TGVuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZCwgJ2JpbmFyeScpXG4gIH1cbiAgaWYgKHNhbHQgJiYgIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkge1xuICAgIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuICB9XG4gIGtleUxlbiA9IGtleUxlbiAvIDhcbiAgaXZMZW4gPSBpdkxlbiB8fCAwXG4gIHZhciBraSA9IDBcbiAgdmFyIGlpID0gMFxuICB2YXIga2V5ID0gbmV3IEJ1ZmZlcihrZXlMZW4pXG4gIHZhciBpdiA9IG5ldyBCdWZmZXIoaXZMZW4pXG4gIHZhciBhZGRtZCA9IDBcbiAgdmFyIG1kX2J1ZlxuICB2YXIgaVxuICB2YXIgYnVmcyA9IFtdXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGFkZG1kKysgPiAwKSB7XG4gICAgICBidWZzLnB1c2gobWRfYnVmKVxuICAgIH1cbiAgICBidWZzLnB1c2gocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIHtcbiAgICAgIGJ1ZnMucHVzaChzYWx0KVxuICAgIH1cbiAgICBtZF9idWYgPSBtZDUoQnVmZmVyLmNvbmNhdChidWZzKSlcbiAgICBidWZzID0gW11cbiAgICBpID0gMFxuICAgIGlmIChrZXlMZW4gPiAwKSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoa2V5TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAga2V5W2tpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGtleUxlbi0tXG4gICAgICAgIGkrK1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXZMZW4gPiAwICYmIGkgIT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChpdkxlbiA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGl2W2lpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGl2TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlMZW4gPT09IDAgJiYgaXZMZW4gPT09IDApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBtZF9idWYubGVuZ3RoOyBpKyspIHtcbiAgICBtZF9idWZbaV0gPSAwXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXZcbiAgfVxufVxuIiwidmFyIGhhc2ggPSBleHBvcnRzO1xuXG5oYXNoLnV0aWxzID0gcmVxdWlyZSgnLi9oYXNoL3V0aWxzJyk7XG5oYXNoLmNvbW1vbiA9IHJlcXVpcmUoJy4vaGFzaC9jb21tb24nKTtcbmhhc2guc2hhID0gcmVxdWlyZSgnLi9oYXNoL3NoYScpO1xuaGFzaC5yaXBlbWQgPSByZXF1aXJlKCcuL2hhc2gvcmlwZW1kJyk7XG5oYXNoLmhtYWMgPSByZXF1aXJlKCcuL2hhc2gvaG1hYycpO1xuXG4vLyBQcm94eSBoYXNoIGZ1bmN0aW9ucyB0byB0aGUgbWFpbiBvYmplY3Rcbmhhc2guc2hhMSA9IGhhc2guc2hhLnNoYTE7XG5oYXNoLnNoYTI1NiA9IGhhc2guc2hhLnNoYTI1Njtcbmhhc2guc2hhMjI0ID0gaGFzaC5zaGEuc2hhMjI0O1xuaGFzaC5zaGEzODQgPSBoYXNoLnNoYS5zaGEzODQ7XG5oYXNoLnNoYTUxMiA9IGhhc2guc2hhLnNoYTUxMjtcbmhhc2gucmlwZW1kMTYwID0gaGFzaC5yaXBlbWQucmlwZW1kMTYwO1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwidmFyIGhtYWMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfMyA9IHV0aWxzLnN1bTMyXzM7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xudmFyIEJsb2NrSGFzaCA9IGhhc2guY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTI1NigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTI1NikpXG4gICAgcmV0dXJuIG5ldyBTSEEyNTYoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTkgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTI1NiA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjI0LCBTSEEyNTYpO1xuZXhwb3J0cy5zaGEyMjQgPSBTSEEyMjQ7XG5cblNIQTIyNC5ibG9ja1NpemUgPSA1MTI7XG5TSEEyMjQub3V0U2l6ZSA9IDIyNDtcblNIQTIyNC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyMjQucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTIyNC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgLy8gSnVzdCB0cnVuY2F0ZSBvdXRwdXRcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgICAgICAgICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgICAgICAgICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAgICAgICAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgICAgICAgICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAgICAgICAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgICAgICAgICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGE1MTIgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gICAgV1tpICsgMV0gPSBzdW02NF80X2xvKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzRfaGksIGM0X2xvKTtcblxuICAgIHZhciBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIHZhciBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIHZhciBjMV9oaSA9IG1hajY0X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuICAgIHZhciBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4LFxuICAgICAgICAgICAgIDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcsXG4gICAgICAgICAgICAgMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyxcbiAgICAgICAgICAgICAweDE1MmZlY2Q4LCAweGY3MGU1OTM5LFxuICAgICAgICAgICAgIDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEsXG4gICAgICAgICAgICAgMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSxcbiAgICAgICAgICAgICAweGRiMGMyZTBkLCAweDY0Zjk4ZmE3LFxuICAgICAgICAgICAgIDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTM4NCwgU0hBNTEyKTtcbmV4cG9ydHMuc2hhMzg0ID0gU0hBMzg0O1xuXG5TSEEzODQuYmxvY2tTaXplID0gMTAyNDtcblNIQTM4NC5vdXRTaXplID0gMzg0O1xuU0hBMzg0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTM4NC5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTEpKVxuICAgIHJldHVybiBuZXcgU0hBMSgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgICAgICAgICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGExID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzID0gfn4oaSAvIDIwKTtcbiAgICB2YXIgdCA9IHN1bTMyXzUocm90bDMyKGEsIDUpLCBmdF8xKHMsIGIsIGMsIGQpLCBlLCBXW2ldLCBzaGExX0tbc10pO1xuICAgIGUgPSBkO1xuICAgIGQgPSBjO1xuICAgIGMgPSByb3RsMzIoYiwgMzApO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0O1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbn07XG5cblNIQTEucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cblxuZnVuY3Rpb24gY2g2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCJ2YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJykge1xuICAgIGlmICghZW5jKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB2YXIgaGkgPSBjID4+IDg7XG4gICAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgICBpZiAoaGkpXG4gICAgICAgICAgcmVzLnB1c2goaGksIGxvKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG51dGlscy5odG9ubCA9IGh0b25sO1xuXG5mdW5jdGlvbiB0b0hleDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdyA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnbGl0dGxlJylcbiAgICAgIHcgPSBodG9ubCh3KTtcbiAgICByZXMgKz0gemVybzgody50b1N0cmluZygxNikpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvOCA9IHplcm84O1xuXG5mdW5jdGlvbiBqb2luMzIobXNnLCBzdGFydCwgZW5kLCBlbmRpYW4pIHtcbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICBhc3NlcnQobGVuICUgNCA9PT0gMCk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuIC8gNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gc3RhcnQ7IGkgPCByZXMubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKVxuICAgICAgdyA9IChtc2dba10gPDwgMjQpIHwgKG1zZ1trICsgMV0gPDwgMTYpIHwgKG1zZ1trICsgMl0gPDwgOCkgfCBtc2dbayArIDNdO1xuICAgIGVsc2VcbiAgICAgIHcgPSAobXNnW2sgKyAzXSA8PCAyNCkgfCAobXNnW2sgKyAyXSA8PCAxNikgfCAobXNnW2sgKyAxXSA8PCA4KSB8IG1zZ1trXTtcbiAgICByZXNbaV0gPSB3ID4+PiAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdHIzMiA9IHJvdHIzMjtcblxuZnVuY3Rpb24gcm90bDMyKHcsIGIpIHtcbiAgcmV0dXJuICh3IDw8IGIpIHwgKHcgPj4+ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG51dGlscy5zdW0zMl8zID0gc3VtMzJfMztcblxuZnVuY3Rpb24gc3VtMzJfNChhLCBiLCBjLCBkKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCkgPj4+IDA7XG59XG51dGlscy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kLCBtc2cpIHtcbiAgaWYgKCFjb25kKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cbnV0aWxzLmFzc2VydCA9IGFzc2VydDtcblxudXRpbHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2xvID0gc3VtNjRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF81X2hpID0gc3VtNjRfNV9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbCArIGVsO1xuXG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2xvID0gcm90cjY0X2xvO1xuXG5mdW5jdGlvbiBzaHI2NF9oaShhaCwgYWwsIG51bSkge1xuICByZXR1cm4gYWggPj4+IG51bTtcbn07XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIlxudmFyIGluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGluZGV4T2YpIHJldHVybiBhcnIuaW5kZXhPZihvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTsiLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgYnJvcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcblxuZnVuY3Rpb24gTWlsbGVyUmFiaW4ocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kIHx8IG5ldyBicm9yYW5kLlJhbmQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gTWlsbGVyUmFiaW47XG5cbk1pbGxlclJhYmluLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShyYW5kKSB7XG4gIHJldHVybiBuZXcgTWlsbGVyUmFiaW4ocmFuZCk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgYnVmID0gdGhpcy5yYW5kLmdlbmVyYXRlKE1hdGguY2VpbChsZW4gLyA4KSk7XG5cbiAgLy8gU2V0IGxvdyBiaXRzXG4gIGJ1ZlswXSB8PSAzO1xuXG4gIC8vIE1hc2sgaGlnaCBiaXRzXG4gIHZhciBtYXNrID0gbGVuICYgMHg3O1xuICBpZiAobWFzayAhPT0gMClcbiAgICBidWZbYnVmLmxlbmd0aCAtIDFdID4+PSA3IC0gbWFzaztcblxuICByZXR1cm4gbmV3IGJuKGJ1Zik7XG59XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24gdGVzdChuLCBrLCBjYikge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgdmFyIG4yID0gbjEuc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICB2YXIgcHJpbWUgPSB0cnVlO1xuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZChuMik7XG4gICAgaWYgKGNiKVxuICAgICAgY2IoYSk7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcHJpbWU7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuZ2V0RGl2aXNvciA9IGZ1bmN0aW9uIGdldERpdmlzb3Iobiwgaykge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgdmFyIG4yID0gbjEuc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZChuMik7XG5cbiAgICB2YXIgZyA9IG4uZ2NkKGEpO1xuICAgIGlmIChnLmNtcG4oMSkgIT09IDApXG4gICAgICByZXR1cm4gZztcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG4gICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gYXNzZXJ0O1xuXG5mdW5jdGlvbiBhc3NlcnQodmFsLCBtc2cpIHtcbiAgaWYgKCF2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xufVxuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBhc3NlcnRFcXVhbChsLCByLCBtc2cpIHtcbiAgaWYgKGwgIT0gcilcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICgnQXNzZXJ0aW9uIGZhaWxlZDogJyArIGwgKyAnICE9ICcgKyByKSk7XG59O1xuIiwiZXhwb3J0cy5lbmRpYW5uZXNzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0xFJyB9O1xuXG5leHBvcnRzLmhvc3RuYW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5ob3N0bmFtZVxuICAgIH1cbiAgICBlbHNlIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubG9hZGF2ZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdIH07XG5cbmV4cG9ydHMudXB0aW1lID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMCB9O1xuXG5leHBvcnRzLmZyZWVtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLnRvdGFsbWVtID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFO1xufTtcblxuZXhwb3J0cy5jcHVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy50eXBlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0Jyb3dzZXInIH07XG5cbmV4cG9ydHMucmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5hcHBWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnRzLm5ldHdvcmtJbnRlcmZhY2VzXG49IGV4cG9ydHMuZ2V0TmV0d29ya0ludGVyZmFjZXNcbj0gZnVuY3Rpb24gKCkgeyByZXR1cm4ge30gfTtcblxuZXhwb3J0cy5hcmNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ2phdmFzY3JpcHQnIH07XG5cbmV4cG9ydHMucGxhdGZvcm0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnYnJvd3NlcicgfTtcblxuZXhwb3J0cy50bXBkaXIgPSBleHBvcnRzLnRtcERpciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJy90bXAnO1xufTtcblxuZXhwb3J0cy5FT0wgPSAnXFxuJztcbiIsIm1vZHVsZS5leHBvcnRzPXtcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjFcIjogXCJhZXMtMTI4LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yXCI6IFwiYWVzLTEyOC1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuM1wiOiBcImFlcy0xMjgtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjRcIjogXCJhZXMtMTI4LWNmYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMVwiOiBcImFlcy0xOTItZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyXCI6IFwiYWVzLTE5Mi1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjNcIjogXCJhZXMtMTkyLW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNFwiOiBcImFlcy0xOTItY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxXCI6IFwiYWVzLTI1Ni1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDJcIjogXCJhZXMtMjU2LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40M1wiOiBcImFlcy0yNTYtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0XCI6IFwiYWVzLTI1Ni1jZmJcIlxufSIsIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvYXNuMS5qc1xuLy8gRmVkb3IsIHlvdSBhcmUgYW1hemluZy5cblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxudmFyIFJTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnUlNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMicpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2NvZWZmaWNpZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHJpdmF0ZUtleSA9IFJTQVByaXZhdGVLZXlcblxudmFyIFJTQVB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdSU0FQdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHVibGljS2V5ID0gUlNBUHVibGljS2V5XG5cbnZhciBQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5QdWJsaWNLZXkgPSBQdWJsaWNLZXlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24xLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ25vbmUnKS5udWxsXygpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2N1cnZlJykub2JqaWQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdnJykuaW50KClcbiAgICApLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ1ByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHJpdmF0ZUtleSA9IFByaXZhdGVLZXlJbmZvXG52YXIgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgdGhpcy5rZXkoJ2RlY3J5cHQnKS5zZXEoKS5vYmooXG4gICAgICAgIHRoaXMua2V5KCdrZGUnKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgna2RlcGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgICAgICAgdGhpcy5rZXkoJ3NhbHQnKS5vY3RzdHIoKSxcbiAgICAgICAgICAgIHRoaXMua2V5KCdpdGVycycpLmludCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLmtleSgnY2lwaGVyJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdhbGdvJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgnaXYnKS5vY3RzdHIoKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuXG5leHBvcnRzLkVuY3J5cHRlZFByaXZhdGVLZXkgPSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mb1xuXG52YXIgRFNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdEU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJfa2V5JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZfa2V5JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuRFNBUHJpdmF0ZUtleSA9IERTQVByaXZhdGVLZXlcblxuZXhwb3J0cy5EU0FwYXJhbSA9IGFzbjEuZGVmaW5lKCdEU0FwYXJhbScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5pbnQoKVxufSlcbnZhciBFQ1ByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRUNQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlS2V5Jykub2N0c3RyKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShFQ1BhcmFtZXRlcnMpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNLZXknKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLkVDUHJpdmF0ZUtleSA9IEVDUHJpdmF0ZUtleVxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURcXHI/XFxuREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxccj9cXG5cXHI/XFxuKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXHI/XFxuL21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICguKikgS0VZLS0tLS1cXHI/XFxuL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxccj9cXG4tLS0tLUVORCBcXDEgS0VZLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9rZXksIHBhc3N3b3JkKSB7XG4gIHZhciBrZXkgPSBva2V5LnRvU3RyaW5nKClcbiAgdmFyIG1hdGNoID0ga2V5Lm1hdGNoKGZpbmRQcm9jKVxuICB2YXIgZGVjcnlwdGVkXG4gIGlmICghbWF0Y2gpIHtcbiAgICB2YXIgbWF0Y2gyID0ga2V5Lm1hdGNoKGZ1bGxSZWdleClcbiAgICBkZWNyeXB0ZWQgPSBuZXcgQnVmZmVyKG1hdGNoMlsyXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IG5ldyBCdWZmZXIobWF0Y2hbMl0sICdoZXgnKVxuICAgIHZhciBjaXBoZXJUZXh0ID0gbmV3IEJ1ZmZlcihtYXRjaFszXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdICsgJyBLRVknXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnUFVCTElDIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICBuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSA9IG5kYXRhLnN1YmplY3RQdWJsaWNLZXlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2VjJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ0VOQ1JZUFRFRCBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIGRhdGEgPSBkZWNyeXB0KGRhdGEsIHBhc3N3b3JkKVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGNhc2UgJ1BSSVZBVEUgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5Qcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VydmU6IG5kYXRhLmFsZ29yaXRobS5jdXJ2ZSxcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpLnByaXZhdGVLZXlcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIHBhcmFtczogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdSU0EgUFVCTElDIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ1JTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdEU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgIHBhcmFtczogYXNuMS5EU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIH1cbiAgICBjYXNlICdFQyBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VydmU6IGRhdGEucGFyYW1ldGVycy52YWx1ZSxcbiAgICAgICAgcHJpdmF0ZUtleTogZGF0YS5wcml2YXRlS2V5XG4gICAgICB9XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICB9XG59XG5wYXJzZUtleXMuc2lnbmF0dXJlID0gYXNuMS5zaWduYXR1cmVcbmZ1bmN0aW9uIGRlY3J5cHQgKGRhdGEsIHBhc3N3b3JkKSB7XG4gIHZhciBzYWx0ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHRcbiAgdmFyIGl0ZXJzID0gcGFyc2VJbnQoZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksIDEwKVxuICB2YXIgYWxnbyA9IGFlc2lkW2RhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbignLicpXVxuICB2YXIgaXYgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdlxuICB2YXIgY2lwaGVyVGV4dCA9IGRhdGEuc3ViamVjdFByaXZhdGVLZXlcbiAgdmFyIGtleWxlbiA9IHBhcnNlSW50KGFsZ28uc3BsaXQoJy0nKVsxXSwgMTApIC8gOFxuICB2YXIga2V5ID0gY29tcGF0LnBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJzLCBrZXlsZW4pXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufTtcblxuXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsInZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIE1BWF9BTExPQyA9IE1hdGgucG93KDIsIDMwKSAtIDEgLy8gZGVmYXVsdCBpbiBpb2pzXG5cbmV4cG9ydHMucGJrZGYyID0gcGJrZGYyXG5mdW5jdGlvbiBwYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBkaWdlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGRpZ2VzdFxuICAgIGRpZ2VzdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyJylcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBwYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdClcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGJhY2sodW5kZWZpbmVkLCByZXN1bHQpXG4gIH0pXG59XG5cbmV4cG9ydHMucGJrZGYyU3luYyA9IHBia2RmMlN5bmNcbmZ1bmN0aW9uIHBia2RmMlN5bmMgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGtleSBsZW5ndGgnKVxuICB9XG5cbiAgZGlnZXN0ID0gZGlnZXN0IHx8ICdzaGExJ1xuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2FsdCkpIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuXG4gIHZhciBoTGVuXG4gIHZhciBsID0gMVxuICB2YXIgREsgPSBuZXcgQnVmZmVyKGtleWxlbilcbiAgdmFyIGJsb2NrMSA9IG5ldyBCdWZmZXIoc2FsdC5sZW5ndGggKyA0KVxuICBzYWx0LmNvcHkoYmxvY2sxLCAwLCAwLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgclxuICB2YXIgVFxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IGw7IGkrKykge1xuICAgIGJsb2NrMS53cml0ZVVJbnQzMkJFKGksIHNhbHQubGVuZ3RoKVxuICAgIHZhciBVID0gY3JlYXRlSG1hYyhkaWdlc3QsIHBhc3N3b3JkKS51cGRhdGUoYmxvY2sxKS5kaWdlc3QoKVxuXG4gICAgaWYgKCFoTGVuKSB7XG4gICAgICBoTGVuID0gVS5sZW5ndGhcbiAgICAgIFQgPSBuZXcgQnVmZmVyKGhMZW4pXG4gICAgICBsID0gTWF0aC5jZWlsKGtleWxlbiAvIGhMZW4pXG4gICAgICByID0ga2V5bGVuIC0gKGwgLSAxKSAqIGhMZW5cbiAgICB9XG5cbiAgICBVLmNvcHkoVCwgMCwgMCwgaExlbilcblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgaXRlcmF0aW9uczsgaisrKSB7XG4gICAgICBVID0gY3JlYXRlSG1hYyhkaWdlc3QsIHBhc3N3b3JkKS51cGRhdGUoVSkuZGlnZXN0KClcblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBoTGVuOyBrKyspIHtcbiAgICAgICAgVFtrXSBePSBVW2tdXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlc3RQb3MgPSAoaSAtIDEpICogaExlblxuICAgIHZhciBsZW4gPSAoaSA9PT0gbCA/IHIgOiBoTGVuKVxuICAgIFQuY29weShESywgZGVzdFBvcywgMCwgbGVuKVxuICB9XG5cbiAgcmV0dXJuIERLXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmICghcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gbmV4dFRpY2s7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3MubmV4dFRpY2s7XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgnLi9wdWJsaWNFbmNyeXB0Jyk7XG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcmVxdWlyZSgnLi9wcml2YXRlRGVjcnlwdCcpO1xuXG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gZnVuY3Rpb24gcHJpdmF0ZUVuY3J5cHQoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHVibGljRW5jcnlwdChrZXksIGJ1ZiwgdHJ1ZSk7XG59O1xuXG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBmdW5jdGlvbiBwdWJsaWNEZWNyeXB0KGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnByaXZhdGVEZWNyeXB0KGtleSwgYnVmLCB0cnVlKTtcbn07IiwidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2VlZCwgbGVuKSB7XG4gIHZhciB0ID0gbmV3IEJ1ZmZlcignJyk7XG4gIHZhciAgaSA9IDAsIGM7XG4gIHdoaWxlICh0Lmxlbmd0aCA8IGxlbikge1xuICAgIGMgPSBpMm9wcyhpKyspO1xuICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKHNlZWQpLnVwZGF0ZShjKS5kaWdlc3QoKV0pO1xuICB9XG4gIHJldHVybiB0LnNsaWNlKDAsIGxlbik7XG59O1xuXG5mdW5jdGlvbiBpMm9wcyhjKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKDQpO1xuICBvdXQud3JpdGVVSW50MzJCRShjLDApO1xuICByZXR1cm4gb3V0O1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgbWdmID0gcmVxdWlyZSgnLi9tZ2YnKTtcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpO1xudmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQocHJpdmF0ZV9rZXksIGVuYywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZztcbiAgaWYgKHByaXZhdGVfa2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZV9rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZV9rZXkpO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBibihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBtc2c7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgbXNnID0gd2l0aFB1YmxpYyhuZXcgYm4oZW5jKSwga2V5KTtcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpO1xuICB9XG4gIHZhciB6QnVmZmVyID0gbmV3IEJ1ZmZlcihrIC0gbXNnLmxlbmd0aCk7XG4gIHpCdWZmZXIuZmlsbCgwKTtcbiAgbXNnID0gQnVmZmVyLmNvbmNhdChbekJ1ZmZlciwgbXNnXSwgayk7XG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICByZXR1cm4gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICByZXR1cm4gbXNnO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgbiA9IGtleS5tb2R1bHVzO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobXNnWzBdICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpO1xuICB2YXIgbWFza2VkRGIgPSAgbXNnLnNsaWNlKGhMZW4gKyAxKTtcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSk7XG4gIHZhciBkYiA9IHhvcihtYXNrZWREYiwgbWdmKHNlZWQsIGsgLSBoTGVuIC0gMSkpO1xuICBpZiAoY29tcGFyZShpSGFzaCwgZGIuc2xpY2UoMCwgaExlbikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIGkgPSBoTGVuO1xuICB3aGlsZSAoZGJbaV0gPT09IDApIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGRiW2krK10gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSk7XG59XG5cbmZ1bmN0aW9uIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKXtcbiAgdmFyIHAxID0gbXNnLnNsaWNlKDAsIDIpO1xuICB2YXIgaSA9IDI7XG4gIHZhciBzdGF0dXMgPSAwO1xuICB3aGlsZSAobXNnW2krK10gIT09IDApIHtcbiAgICBpZiAoaSA+PSBtc2cubGVuZ3RoKSB7XG4gICAgICBzdGF0dXMrKztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB2YXIgcHMgPSBtc2cuc2xpY2UoMiwgaSAtIDEpO1xuICB2YXIgcDIgPSBtc2cuc2xpY2UoaSAtIDEsIGkpO1xuXG4gIGlmICgocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMicgJiYgIXJldmVyc2UpIHx8IChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAxJyAmJiByZXZlcnNlKSl7XG4gICAgc3RhdHVzKys7XG4gIH1cbiAgaWYgKHBzLmxlbmd0aCA8IDgpIHtcbiAgICBzdGF0dXMrKztcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgcmV0dXJuICBtc2cuc2xpY2UoaSk7XG59XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpe1xuICBhID0gbmV3IEJ1ZmZlcihhKTtcbiAgYiA9IG5ldyBCdWZmZXIoYik7XG4gIHZhciBkaWYgPSAwO1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrKztcbiAgICBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICB9XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKTtcbiAgfVxuICByZXR1cm4gZGlmO1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJyk7XG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKTtcbnZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpO1xudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJyk7XG5cbnZhciBjb25zdGFudHMgPSB7XG4gIFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6IDQsXG4gIFJTQV9QS0NTMV9QQURESU46IDEsXG4gIFJTQV9OT19QQURESU5HOiAzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQocHVibGljX2tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nO1xuICBpZiAocHVibGljX2tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHB1YmxpY19rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNfa2V5KTtcbiAgdmFyIHBhZGRlZE1zZztcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgcGFkZGVkTXNnID0gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICBwYWRkZWRNc2cgPSBuZXcgYm4obXNnKTtcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gY3J0KHBhZGRlZE1zZywga2V5KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobUxlbiA+IGsgLSBoTGVuMiAtIDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKTtcbiAgfVxuICB2YXIgcHMgPSBuZXcgQnVmZmVyKGsgLSBtTGVuIC0gaExlbjIgLSAyKTtcbiAgcHMuZmlsbCgwKTtcbiAgdmFyIGRibGVuID0gayAtIGhMZW4gLSAxO1xuICB2YXIgc2VlZCA9IHJhbmRvbUJ5dGVzKGhMZW4pO1xuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBuZXcgQnVmZmVyKFsxXSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSk7XG4gIHZhciBtYXNrZWRTZWVkID0geG9yKHNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpO1xuICByZXR1cm4gbmV3IGJuKEJ1ZmZlci5jb25jYXQoW25ldyBCdWZmZXIoWzBdKSwgbWFza2VkU2VlZCwgbWFza2VkRGJdLCBrKSk7XG59XG5mdW5jdGlvbiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSl7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJyk7XG4gIH1cbiAgdmFyIHBzO1xuICBpZiAocmV2ZXJzZSkge1xuICAgIHBzID0gbmV3IEJ1ZmZlcihrIC0gbUxlbiAtIDMpO1xuICAgIHBzLmZpbGwoMHhmZik7XG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBibihCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKFswLCByZXZlcnNlPzE6Ml0pLCBwcywgbmV3IEJ1ZmZlcihbMF0pLCBtc2ddLCBrKSk7XG59XG5mdW5jdGlvbiBub25aZXJvKGxlbiwgY3J5cHRvKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKGxlbik7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICB2YXIgY3VyID0gMDtcbiAgdmFyIG51bTtcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoY3VyID09PSBjYWNoZS5sZW5ndGgpIHtcbiAgICAgIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICAgICAgY3VyID0gMDtcbiAgICB9XG4gICAgbnVtID0gY2FjaGVbY3VyKytdO1xuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufSIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5mdW5jdGlvbiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KSB7XG4gIHJldHVybiBuZXcgQnVmZmVyKHBhZGRlZE1zZ1xuICAgIC50b1JlZChibi5tb250KGtleS5tb2R1bHVzKSlcbiAgICAucmVkUG93KG5ldyBibihrZXkucHVibGljRXhwb25lbnQpKVxuICAgIC5mcm9tUmVkKClcbiAgICAudG9BcnJheSgpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoUHVibGljOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geG9yKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgYVtpXSBePSBiW2ldO1xuICB9XG4gIHJldHVybiBhXG59OyIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXFxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG5cbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xuXG5pZiAoY3J5cHRvICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByYW5kb21CeXRlc1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBvbGRCcm93c2VyXG59XG5cbmZ1bmN0aW9uIHJhbmRvbUJ5dGVzIChzaXplLCBjYikge1xuICAvLyBwaGFudG9tanMgbmVlZHMgdG8gdGhyb3dcbiAgaWYgKHNpemUgPiA2NTUzNikgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzJylcbiAgLy8gaW4gY2FzZSBicm93c2VyaWZ5ICBpc24ndCB1c2luZyB0aGUgVWludDhBcnJheSB2ZXJzaW9uXG4gIHZhciByYXdCeXRlcyA9IG5ldyBnbG9iYWwuVWludDhBcnJheShzaXplKVxuXG4gIC8vIFRoaXMgd2lsbCBub3Qgd29yayBpbiBvbGRlciBicm93c2Vycy5cbiAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICBpZiAoc2l6ZSA+IDApIHsgIC8vIGdldFJhbmRvbVZhbHVlcyBmYWlscyBvbiBJRSBpZiBzaXplID09IDBcbiAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhd0J5dGVzKVxuICB9XG4gIC8vIHBoYW50b21qcyBkb2Vzbid0IGxpa2UgYSBidWZmZXIgYmVpbmcgcGFzc2VkIGhlcmVcbiAgdmFyIGJ5dGVzID0gbmV3IEJ1ZmZlcihyYXdCeXRlcy5idWZmZXIpXG5cbiAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKG51bGwsIGJ5dGVzKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cbiIsIi8qXG5DcnlwdG9KUyB2My4xLjJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xuKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvd2lraS9MaWNlbnNlXG4qL1xuLyoqIEBwcmVzZXJ2ZVxuKGMpIDIwMTIgYnkgQ8OpZHJpYyBNZXNuaWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4vLyBjb25zdGFudHMgdGFibGVcbnZhciB6bCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXVxuXG52YXIgenIgPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl1cblxudmFyIHNsID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXVxuXG52YXIgc3IgPSBbXG4gIDgsIDksIDksIDExLCAxMywgMTUsIDE1LCA1LCA3LCA3LCA4LCAxMSwgMTQsIDE0LCAxMiwgNixcbiAgOSwgMTMsIDE1LCA3LCAxMiwgOCwgOSwgMTEsIDcsIDcsIDEyLCA3LCA2LCAxNSwgMTMsIDExLFxuICA5LCA3LCAxNSwgMTEsIDgsIDYsIDYsIDE0LCAxMiwgMTMsIDUsIDE0LCAxMywgMTMsIDcsIDUsXG4gIDE1LCA1LCA4LCAxMSwgMTQsIDE0LCA2LCAxNCwgNiwgOSwgMTIsIDksIDEyLCA1LCAxNSwgOCxcbiAgOCwgNSwgMTIsIDksIDEyLCA1LCAxNCwgNiwgOCwgMTMsIDYsIDUsIDE1LCAxMywgMTEsIDExXG5dXG5cbnZhciBobCA9IFsweDAwMDAwMDAwLCAweDVBODI3OTk5LCAweDZFRDlFQkExLCAweDhGMUJCQ0RDLCAweEE5NTNGRDRFXVxudmFyIGhyID0gWzB4NTBBMjhCRTYsIDB4NUM0REQxMjQsIDB4NkQ3MDNFRjMsIDB4N0E2RDc2RTksIDB4MDAwMDAwMDBdXG5cbmZ1bmN0aW9uIGJ5dGVzVG9Xb3JkcyAoYnl0ZXMpIHtcbiAgdmFyIHdvcmRzID0gW11cbiAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyssIGIgKz0gOCkge1xuICAgIHdvcmRzW2IgPj4+IDVdIHw9IGJ5dGVzW2ldIDw8ICgyNCAtIGIgJSAzMilcbiAgfVxuICByZXR1cm4gd29yZHNcbn1cblxuZnVuY3Rpb24gd29yZHNUb0J5dGVzICh3b3Jkcykge1xuICB2YXIgYnl0ZXMgPSBbXVxuICBmb3IgKHZhciBiID0gMDsgYiA8IHdvcmRzLmxlbmd0aCAqIDMyOyBiICs9IDgpIHtcbiAgICBieXRlcy5wdXNoKCh3b3Jkc1tiID4+PiA1XSA+Pj4gKDI0IC0gYiAlIDMyKSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQmxvY2sgKEgsIE0sIG9mZnNldCkge1xuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2YXIgb2Zmc2V0X2kgPSBvZmZzZXQgKyBpXG4gICAgdmFyIE1fb2Zmc2V0X2kgPSBNW29mZnNldF9pXVxuXG4gICAgLy8gU3dhcFxuICAgIE1bb2Zmc2V0X2ldID0gKFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCA4KSB8IChNX29mZnNldF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICYgMHhmZjAwZmYwMClcbiAgICApXG4gIH1cblxuICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuICB2YXIgYWwsIGJsLCBjbCwgZGwsIGVsXG4gIHZhciBhciwgYnIsIGNyLCBkciwgZXJcblxuICBhciA9IGFsID0gSFswXVxuICBiciA9IGJsID0gSFsxXVxuICBjciA9IGNsID0gSFsyXVxuICBkciA9IGRsID0gSFszXVxuICBlciA9IGVsID0gSFs0XVxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIHZhciB0XG4gIGZvciAoaSA9IDA7IGkgPCA4MDsgaSArPSAxKSB7XG4gICAgdCA9IChhbCArIE1bb2Zmc2V0ICsgemxbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGYxKGJsLCBjbCwgZGwpICsgaGxbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmMihibCwgY2wsIGRsKSArIGhsWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYmwsIGNsLCBkbCkgKyBobFsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGY0KGJsLCBjbCwgZGwpICsgaGxbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGY1KGJsLCBjbCwgZGwpICsgaGxbNF1cbiAgICB9XG4gICAgdCA9IHQgfCAwXG4gICAgdCA9IHJvdGwodCwgc2xbaV0pXG4gICAgdCA9ICh0ICsgZWwpIHwgMFxuICAgIGFsID0gZWxcbiAgICBlbCA9IGRsXG4gICAgZGwgPSByb3RsKGNsLCAxMClcbiAgICBjbCA9IGJsXG4gICAgYmwgPSB0XG5cbiAgICB0ID0gKGFyICsgTVtvZmZzZXQgKyB6cltpXV0pIHwgMFxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHQgKz0gZjUoYnIsIGNyLCBkcikgKyBoclswXVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0ICs9IGY0KGJyLCBjciwgZHIpICsgaHJbMV1cbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdCArPSBmMyhiciwgY3IsIGRyKSArIGhyWzJdXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHQgKz0gZjIoYnIsIGNyLCBkcikgKyBoclszXVxuICAgIH0gZWxzZSB7Ly8gaWYgKGk8ODApIHtcbiAgICAgIHQgKz0gZjEoYnIsIGNyLCBkcikgKyBocls0XVxuICAgIH1cblxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNyW2ldKVxuICAgIHQgPSAodCArIGVyKSB8IDBcbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdFxuICB9XG5cbiAgLy8gaW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcbiAgdCA9IChIWzFdICsgY2wgKyBkcikgfCAwXG4gIEhbMV0gPSAoSFsyXSArIGRsICsgZXIpIHwgMFxuICBIWzJdID0gKEhbM10gKyBlbCArIGFyKSB8IDBcbiAgSFszXSA9IChIWzRdICsgYWwgKyBicikgfCAwXG4gIEhbNF0gPSAoSFswXSArIGJsICsgY3IpIHwgMFxuICBIWzBdID0gdFxufVxuXG5mdW5jdGlvbiBmMSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICh5KSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjIgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHkpKSB8ICgofngpICYgKHopKSlcbn1cblxuZnVuY3Rpb24gZjMgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpIHwgKH4oeSkpKSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjQgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHopKSB8ICgoeSkgJiAofih6KSkpKVxufVxuXG5mdW5jdGlvbiBmNSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICgoeSkgfCAofih6KSkpKVxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gcmlwZW1kMTYwIChtZXNzYWdlKSB7XG4gIHZhciBIID0gWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzYsIDB4QzNEMkUxRjBdXG5cbiAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgIG1lc3NhZ2UgPSBuZXcgQnVmZmVyKG1lc3NhZ2UsICd1dGY4JylcbiAgfVxuXG4gIHZhciBtID0gYnl0ZXNUb1dvcmRzKG1lc3NhZ2UpXG5cbiAgdmFyIG5CaXRzTGVmdCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuICB2YXIgbkJpdHNUb3RhbCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuXG4gIC8vIEFkZCBwYWRkaW5nXG4gIG1bbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKVxuICBtWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG4gICAgKCgobkJpdHNUb3RhbCA8PCA4KSB8IChuQml0c1RvdGFsID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICgoKG5CaXRzVG90YWwgPDwgMjQpIHwgKG5CaXRzVG90YWwgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgcHJvY2Vzc0Jsb2NrKEgsIG0sIGkpXG4gIH1cblxuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgLy8gc2hvcnRjdXRcbiAgICB2YXIgSF9pID0gSFtpXVxuXG4gICAgLy8gU3dhcFxuICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgfCAoSF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoSF9pIDw8IDI0KSB8IChIX2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIH1cblxuICB2YXIgZGlnZXN0Ynl0ZXMgPSB3b3Jkc1RvQnl0ZXMoSClcbiAgcmV0dXJuIG5ldyBCdWZmZXIoZGlnZXN0Ynl0ZXMpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmlwZW1kMTYwXG4iLCIvLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IG5ldyBCdWZmZXIoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbiAgdGhpcy5fcyA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBsID0gdGhpcy5fbGVuICs9IGRhdGEubGVuZ3RoXG4gIHZhciBzID0gdGhpcy5fcyB8fCAwXG4gIHZhciBmID0gMFxuICB2YXIgYnVmZmVyID0gdGhpcy5fYmxvY2tcblxuICB3aGlsZSAocyA8IGwpIHtcbiAgICB2YXIgdCA9IE1hdGgubWluKGRhdGEubGVuZ3RoLCBmICsgdGhpcy5fYmxvY2tTaXplIC0gKHMgJSB0aGlzLl9ibG9ja1NpemUpKVxuICAgIHZhciBjaCA9ICh0IC0gZilcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2g7IGkrKykge1xuICAgICAgYnVmZmVyWyhzICUgdGhpcy5fYmxvY2tTaXplKSArIGldID0gZGF0YVtpICsgZl1cbiAgICB9XG5cbiAgICBzICs9IGNoXG4gICAgZiArPSBjaFxuXG4gICAgaWYgKChzICUgdGhpcy5fYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJ1ZmZlcilcbiAgICB9XG4gIH1cbiAgdGhpcy5fcyA9IHNcblxuICByZXR1cm4gdGhpc1xufVxuXG5IYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIC8vIFN1cHBvc2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBNLCBpbiBiaXRzLCBpcyBsXG4gIHZhciBsID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIEFwcGVuZCB0aGUgYml0IDEgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZVxuICB0aGlzLl9ibG9ja1t0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemVdID0gMHg4MFxuXG4gIC8vIGFuZCB0aGVuIGsgemVybyBiaXRzLCB3aGVyZSBrIGlzIHRoZSBzbWFsbGVzdCBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsICsgMSArIGspID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZSArIDEpXG5cbiAgaWYgKGwgJSAodGhpcy5fYmxvY2tTaXplICogOCkgPj0gdGhpcy5fZmluYWxTaXplICogOCkge1xuICAgIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgICB0aGlzLl9ibG9jay5maWxsKDApXG4gIH1cblxuICAvLyB0byB0aGlzIGFwcGVuZCB0aGUgYmxvY2sgd2hpY2ggaXMgZXF1YWwgdG8gdGhlIG51bWJlciBsIHdyaXR0ZW4gaW4gYmluYXJ5XG4gIC8vIFRPRE86IGhhbmRsZSBjYXNlIHdoZXJlIGwgaXMgPiBNYXRoLnBvdygyLCAyOSlcbiAgdGhpcy5fYmxvY2sud3JpdGVJbnQzMkJFKGwsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgdmFyIGhhc2ggPSB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spIHx8IHRoaXMuX2hhc2goKVxuXG4gIHJldHVybiBlbmMgPyBoYXNoLnRvU3RyaW5nKGVuYykgOiBoYXNoXG59XG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoXG4iLCJ2YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gU0hBIChhbGdvcml0aG0pIHtcbiAgYWxnb3JpdGhtID0gYWxnb3JpdGhtLnRvTG93ZXJDYXNlKClcblxuICB2YXIgQWxnb3JpdGhtID0gZXhwb3J0c1thbGdvcml0aG1dXG4gIGlmICghQWxnb3JpdGhtKSB0aHJvdyBuZXcgRXJyb3IoYWxnb3JpdGhtICsgJyBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyknKVxuXG4gIHJldHVybiBuZXcgQWxnb3JpdGhtKClcbn1cblxuZXhwb3J0cy5zaGEgPSByZXF1aXJlKCcuL3NoYScpXG5leHBvcnRzLnNoYTEgPSByZXF1aXJlKCcuL3NoYTEnKVxuZXhwb3J0cy5zaGEyMjQgPSByZXF1aXJlKCcuL3NoYTIyNCcpXG5leHBvcnRzLnNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbmV4cG9ydHMuc2hhMzg0ID0gcmVxdWlyZSgnLi9zaGEzODQnKVxuZXhwb3J0cy5zaGE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0wLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBkZXJpdmVkIGZyb20gc2hhMS5qcyBvZiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBTSEEtMCBhbmQgU0hBLTEgaXMganVzdCBhIGJpdHdpc2Ugcm90YXRlIGxlZnRcbiAqIG9wZXJhdGlvbiB3YXMgYWRkZWQuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYSwgSGFzaClcblxuU2hhLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhMSAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMSwgSGFzaClcblxuU2hhMS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsMSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDEpIHwgKG51bSA+Pj4gMzEpXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYTEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSByb3RsMShXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdKVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7ICsraikge1xuICAgIHZhciBzID0gfn4oaiAvIDIwKVxuICAgIHZhciB0ID0gKHJvdGw1KGEpICsgZnQocywgYiwgYywgZCkgKyBlICsgV1tqXSArIEtbc10pIHwgMFxuXG4gICAgZSA9IGRcbiAgICBkID0gY1xuICAgIGMgPSByb3RsMzAoYilcbiAgICBiID0gYVxuICAgIGEgPSB0XG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG59XG5cblNoYTEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDI4KVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMjI0XG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhBMkY5OCwgMHg3MTM3NDQ5MSwgMHhCNUMwRkJDRiwgMHhFOUI1REJBNSxcbiAgMHgzOTU2QzI1QiwgMHg1OUYxMTFGMSwgMHg5MjNGODJBNCwgMHhBQjFDNUVENSxcbiAgMHhEODA3QUE5OCwgMHgxMjgzNUIwMSwgMHgyNDMxODVCRSwgMHg1NTBDN0RDMyxcbiAgMHg3MkJFNUQ3NCwgMHg4MERFQjFGRSwgMHg5QkRDMDZBNywgMHhDMTlCRjE3NCxcbiAgMHhFNDlCNjlDMSwgMHhFRkJFNDc4NiwgMHgwRkMxOURDNiwgMHgyNDBDQTFDQyxcbiAgMHgyREU5MkM2RiwgMHg0QTc0ODRBQSwgMHg1Q0IwQTlEQywgMHg3NkY5ODhEQSxcbiAgMHg5ODNFNTE1MiwgMHhBODMxQzY2RCwgMHhCMDAzMjdDOCwgMHhCRjU5N0ZDNyxcbiAgMHhDNkUwMEJGMywgMHhENUE3OTE0NywgMHgwNkNBNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN0I3MEE4NSwgMHgyRTFCMjEzOCwgMHg0RDJDNkRGQywgMHg1MzM4MEQxMyxcbiAgMHg2NTBBNzM1NCwgMHg3NjZBMEFCQiwgMHg4MUMyQzkyRSwgMHg5MjcyMkM4NSxcbiAgMHhBMkJGRThBMSwgMHhBODFBNjY0QiwgMHhDMjRCOEI3MCwgMHhDNzZDNTFBMyxcbiAgMHhEMTkyRTgxOSwgMHhENjk5MDYyNCwgMHhGNDBFMzU4NSwgMHgxMDZBQTA3MCxcbiAgMHgxOUE0QzExNiwgMHgxRTM3NkMwOCwgMHgyNzQ4Nzc0QywgMHgzNEIwQkNCNSxcbiAgMHgzOTFDMENCMywgMHg0RUQ4QUE0QSwgMHg1QjlDQ0E0RiwgMHg2ODJFNkZGMyxcbiAgMHg3NDhGODJFRSwgMHg3OEE1NjM2RiwgMHg4NEM4NzgxNCwgMHg4Q0M3MDIwOCxcbiAgMHg5MEJFRkZGQSwgMHhBNDUwNkNFQiwgMHhCRUY5QTNGNywgMHhDNjcxNzhGMlxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjU2ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjU2LCBIYXNoKVxuXG5TaGEyNTYucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDZhMDllNjY3XG4gIHRoaXMuX2IgPSAweGJiNjdhZTg1XG4gIHRoaXMuX2MgPSAweDNjNmVmMzcyXG4gIHRoaXMuX2QgPSAweGE1NGZmNTNhXG4gIHRoaXMuX2UgPSAweDUxMGU1MjdmXG4gIHRoaXMuX2YgPSAweDliMDU2ODhjXG4gIHRoaXMuX2cgPSAweDFmODNkOWFiXG4gIHRoaXMuX2ggPSAweDViZTBjZDE5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gY2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMiB8IHggPDwgMzApIF4gKHggPj4+IDEzIHwgeCA8PCAxOSkgXiAoeCA+Pj4gMjIgfCB4IDw8IDEwKVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgpIHtcbiAgcmV0dXJuICh4ID4+PiA2IHwgeCA8PCAyNikgXiAoeCA+Pj4gMTEgfCB4IDw8IDIxKSBeICh4ID4+PiAyNSB8IHggPDwgNylcbn1cblxuZnVuY3Rpb24gZ2FtbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNyB8IHggPDwgMjUpIF4gKHggPj4+IDE4IHwgeCA8PCAxNCkgXiAoeCA+Pj4gMylcbn1cblxuZnVuY3Rpb24gZ2FtbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMTcgfCB4IDw8IDE1KSBeICh4ID4+PiAxOSB8IHggPDwgMTMpIF4gKHggPj4+IDEwKVxufVxuXG5TaGEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcbiAgdmFyIGYgPSB0aGlzLl9mIHwgMFxuICB2YXIgZyA9IHRoaXMuX2cgfCAwXG4gIHZhciBoID0gdGhpcy5faCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDY0OyArK2kpIFdbaV0gPSAoZ2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgZ2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl0pIHwgMFxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgNjQ7ICsraikge1xuICAgIHZhciBUMSA9IChoICsgc2lnbWExKGUpICsgY2goZSwgZiwgZykgKyBLW2pdICsgV1tqXSkgfCAwXG4gICAgdmFyIFQyID0gKHNpZ21hMChhKSArIG1haihhLCBiLCBjKSkgfCAwXG5cbiAgICBoID0gZ1xuICAgIGcgPSBmXG4gICAgZiA9IGVcbiAgICBlID0gKGQgKyBUMSkgfCAwXG4gICAgZCA9IGNcbiAgICBjID0gYlxuICAgIGIgPSBhXG4gICAgYSA9IChUMSArIFQyKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbiAgdGhpcy5fZiA9IChmICsgdGhpcy5fZikgfCAwXG4gIHRoaXMuX2cgPSAoZyArIHRoaXMuX2cpIHwgMFxuICB0aGlzLl9oID0gKGggKyB0aGlzLl9oKSB8IDBcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGEzODQgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhMzg0LCBTSEE1MTIpXG5cblNoYTM4NC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweGNiYmI5ZDVkXG4gIHRoaXMuX2JoID0gMHg2MjlhMjkyYVxuICB0aGlzLl9jaCA9IDB4OTE1OTAxNWFcbiAgdGhpcy5fZGggPSAweDE1MmZlY2Q4XG4gIHRoaXMuX2VoID0gMHg2NzMzMjY2N1xuICB0aGlzLl9maCA9IDB4OGViNDRhODdcbiAgdGhpcy5fZ2ggPSAweGRiMGMyZTBkXG4gIHRoaXMuX2hoID0gMHg0N2I1NDgxZFxuXG4gIHRoaXMuX2FsID0gMHhjMTA1OWVkOFxuICB0aGlzLl9ibCA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fY2wgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2RsID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lbCA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZmwgPSAweDY4NTgxNTExXG4gIHRoaXMuX2dsID0gMHg2NGY5OGZhN1xuICB0aGlzLl9obCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEzODQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNjQpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuICB3cml0ZUludDY0QkUodGhpcy5fZ2gsIHRoaXMuX2dsLCA0OClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2hoLCB0aGlzLl9obCwgNTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGE1MTJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuaW5oZXJpdHMoU3RyZWFtLCBFRSk7XG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMnKTtcblN0cmVhbS5Xcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcycpO1xuU3RyZWFtLkR1cGxleCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMnKTtcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzJyk7XG5TdHJlYW0uUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMnKTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9kdXBsZXguanNcIilcbiIsIi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBhbCBpbmhlcml0YW5jZSwgdGhpcyBjbGFzc1xuLy8gcHJvdG90eXBhbGx5IGluaGVyaXRzIGZyb20gUmVhZGFibGUsIGFuZCB0aGVuIHBhcmFzaXRpY2FsbHkgZnJvbVxuLy8gV3JpdGFibGUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3JlYWRhYmxlJyk7XG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxudXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTtcblxudmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5mb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbn1cblxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuXG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuXG4gIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xufVxuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcHJvY2Vzc05leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59IiwiLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5Jyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuUmVhZGFibGUuUmVhZGFibGVTdGF0ZSA9IFJlYWRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgU3RyZWFtID0gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTtcbiAgfSBjYXRjaCAoXykge30gZmluYWxseSB7XG4gICAgaWYgKCFTdHJlYW0pIFN0cmVhbSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiAgfVxufSkoKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIFN0cmluZ0RlY29kZXI7XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gICAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICAgIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xuICB9XG59XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtIHx8IGh3bSA9PT0gMCA/IGh3bSA6IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSB+IH50aGlzLmhpZ2hXYXRlck1hcms7XG5cbiAgLy8gQSBsaW5rZWQgbGlzdCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEgY2h1bmtzIGluc3RlYWQgb2YgYW4gYXJyYXkgYmVjYXVzZSB0aGVcbiAgLy8gbGlua2VkIGxpc3QgY2FuIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgZmFzdGVyIHRoYW5cbiAgLy8gYXJyYXkuc2hpZnQoKVxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5waXBlcyA9IG51bGw7XG4gIHRoaXMucGlwZXNDb3VudCA9IDA7XG4gIHRoaXMuZmxvd2luZyA9IG51bGw7XG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gd2hlbiBwaXBpbmcsIHdlIG9ubHkgY2FyZSBhYm91dCAncmVhZGFibGUnIGV2ZW50cyB0aGF0IGhhcHBlblxuICAvLyBhZnRlciByZWFkKClpbmcgYWxsIHRoZSBieXRlcyBhbmQgbm90IGdldHRpbmcgYW55IHB1c2hiYWNrLlxuICB0aGlzLnJhbk91dCA9IGZhbHNlO1xuXG4gIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG4gIHRoaXMuYXdhaXREcmFpbiA9IDA7XG5cbiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuICB0aGlzLnJlYWRpbmdNb3JlID0gZmFsc2U7XG5cbiAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgdGhpcy5lbmNvZGluZyA9IG51bGw7XG4gIGlmIChvcHRpb25zLmVuY29kaW5nKSB7XG4gICAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihvcHRpb25zLmVuY29kaW5nKTtcbiAgICB0aGlzLmVuY29kaW5nID0gb3B0aW9ucy5lbmNvZGluZztcbiAgfVxufVxuXG52YXIgRHVwbGV4O1xuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gICAgICBlbmNvZGluZyA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssICcnLCB0cnVlKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgYWRkVG9Gcm9udCkge1xuICB2YXIgZXIgPSBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKTtcbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0YXRlLmVuZGVkICYmICFhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgZSA9IG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGUpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kRW1pdHRlZCAmJiBhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgX2UgPSBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBfZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBza2lwQWRkO1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWFkZFRvRnJvbnQgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgIHNraXBBZGQgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBjaHVuay5sZW5ndGggPT09IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWRkVG9Gcm9udCkgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAvLyBEb24ndCBhZGQgdG8gdGhlIGJ1ZmZlciBpZiB3ZSd2ZSBkZWNvZGVkIHRvIGFuIGVtcHR5IHN0cmluZyBjaHVuayBhbmRcbiAgICAgIC8vIHdlJ3JlIG5vdCBpbiBvYmplY3QgbW9kZVxuICAgICAgaWYgKCFza2lwQWRkKSB7XG4gICAgICAgIC8vIGlmIHdlIHdhbnQgdGhlIGRhdGEgbm93LCBqdXN0IGVtaXQgaXQuXG4gICAgICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgICAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICAgICAgICAgIHN0cmVhbS5yZWFkKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5SZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDhNQlxudmFyIE1BWF9IV00gPSAweDgwMDAwMDtcbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIG47XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcbiAgaWYgKG4gIT09IG4pIHtcbiAgICAvLyBPbmx5IGZsb3cgb25lIGJ1ZmZlciBhdCBhIHRpbWVcbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgLy8gSWYgd2UncmUgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgaHdtLCB0aGVuIHJhaXNlIHRoZSBod20uXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuO1xuICAvLyBEb24ndCBoYXZlIGVub3VnaFxuICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufVxuXG4vLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuUmVhZGFibGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAobikge1xuICBkZWJ1ZygncmVhZCcsIG4pO1xuICBuID0gcGFyc2VJbnQobiwgMTApO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgbk9yaWcgPSBuO1xuXG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcblxuICAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoc3RhdGUubGVuZ3RoID49IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpO1xuXG4gIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmVcbiAgLy8gKmJlbG93KiB0aGUgY2FsbCB0byBfcmVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCBpbiBjZXJ0YWluXG4gIC8vIHN5bnRoZXRpYyBzdHJlYW0gY2FzZXMsIHN1Y2ggYXMgcGFzc3Rocm91Z2ggc3RyZWFtcywgX3JlYWRcbiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZVxuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgYnVmZmVyLCBwcm92aWRpbmcgZW5vdWdoIGRhdGEgd2hlblxuICAvLyBiZWZvcmUgdGhlcmUgd2FzICpub3QqIGVub3VnaC5cbiAgLy9cbiAgLy8gU28sIHRoZSBzdGVwcyBhcmU6XG4gIC8vIDEuIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc3RhdGUgb2YgdGhpbmdzIHdpbGwgYmUgYWZ0ZXIgd2UgZG9cbiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci5cbiAgLy9cbiAgLy8gMi4gSWYgdGhhdCByZXN1bHRpbmcgc3RhdGUgd2lsbCB0cmlnZ2VyIGEgX3JlYWQsIHRoZW4gY2FsbCBfcmVhZC5cbiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzXG4gIC8vIGRlZXBseSB1Z2x5IHRvIHdyaXRlIEFQSXMgdGhpcyB3YXksIGJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3QgbWVhblxuICAvLyB0aGF0IHRoZSBSZWFkYWJsZSBjbGFzcyBzaG91bGQgYmVoYXZlIGltcHJvcGVybHksIGFzIHN0cmVhbXMgYXJlXG4gIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuXG4gIC8vIFRha2Ugbm90ZSBpZiB0aGUgX3JlYWQgY2FsbCBpcyBzeW5jIG9yIGFzeW5jIChpZSwgaWYgdGhlIHJlYWQgY2FsbFxuICAvLyBoYXMgcmV0dXJuZWQgeWV0KSwgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgb3Igbm90IGl0J3Mgc2FmZSB0byBlbWl0XG4gIC8vICdyZWFkYWJsZScgZXRjLlxuICAvL1xuICAvLyAzLiBBY3R1YWxseSBwdWxsIHRoZSByZXF1ZXN0ZWQgY2h1bmtzIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZXR1cm4uXG5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7XG5cbiAgLy8gaWYgd2UgY3VycmVudGx5IGhhdmUgbGVzcyB0aGFuIHRoZSBoaWdoV2F0ZXJNYXJrLCB0aGVuIGFsc28gcmVhZCBzb21lXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH1cblxuICAvLyBob3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBhbmQgaWYgd2UncmUgYWxyZWFkeVxuICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7XG4gICAgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIHN0YXRlLnN5bmMgPSBmYWxzZTtcbiAgICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cbiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG4gIH1cblxuICB2YXIgcmV0O1xuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKTtlbHNlIHJldCA9IG51bGw7XG5cbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyID0gbnVsbDtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwcm9jZXNzTmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcblxuICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyO1xuXG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiBjbGVhbnVwO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcHJvY2Vzc05leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSkge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuXG4gICAgY2xlYW5lZFVwID0gdHJ1ZTtcblxuICAgIC8vIGlmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXBcbiAgLy8gaW4gb25kYXRhIGFnYWluLiBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gaW5jcmVhc2UgYXdhaXREcmFpbiBvbmNlIGJlY2F1c2VcbiAgLy8gZGVzdCB3aWxsIG9ubHkgZW1pdCBvbmUgJ2RyYWluJyBldmVudCBmb3IgdGhlIG11bHRpcGxlIHdyaXRlcy5cbiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLlxuICB2YXIgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICBzcmMub24oJ2RhdGEnLCBvbmRhdGEpO1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBpZiAoZmFsc2UgPT09IHJldCAmJiAhaW5jcmVhc2VkQXdhaXREcmFpbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pO1xuICAgICAgICBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBkZXN0c1tfaV0uZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgfXJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGkgPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGkgPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaSwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG5cbiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgIC8vIFN0YXJ0IGZsb3dpbmcgb24gbmV4dCB0aWNrIGlmIHN0cmVhbSBpc24ndCBleHBsaWNpdGx5IHBhdXNlZFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7XG4gICAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIGlmICghc3RhdGUucmVhZGluZykge1xuICAgICAgICBwcm9jZXNzTmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBzZWxmLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIHNlbGYucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IHNlbGYucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgdmFyIGV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcbiAgZm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChldikge1xuICAgIHN0cmVhbS5vbihldiwgc2VsZi5lbWl0LmJpbmQoc2VsZiwgZXYpKTtcbiAgfSk7XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgc2VsZi5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuKTtcbiAgdmFyIHAgPSBsaXN0LmhlYWQ7XG4gIHZhciBjID0gMTtcbiAgcC5kYXRhLmNvcHkocmV0KTtcbiAgbiAtPSBwLmRhdGEubGVuZ3RoO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHZhciBidWYgPSBwLmRhdGE7XG4gICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjtcbiAgICBidWYuY29weShyZXQsIHJldC5sZW5ndGggLSBuLCAwLCBuYik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IGJ1Zi5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG5cbiAgLy8gSWYgd2UgZ2V0IGhlcmUgYmVmb3JlIGNvbnN1bWluZyBhbGwgdGhlIGJ5dGVzLCB0aGVuIHRoYXQgaXMgYVxuICAvLyBidWcgaW4gbm9kZS4gIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gIGlmIChzdGF0ZS5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJ1wiZW5kUmVhZGFibGUoKVwiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7XG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKHN0YXRlLCBzdHJlYW0pIHtcbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCIvLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvXG4vLyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YS4gIFNvbWV0aW1lcyBpdCdzIGNhbGxlZCBhIFwiZmlsdGVyXCIsXG4vLyBidXQgdGhhdCdzIG5vdCBhIGdyZWF0IG5hbWUgZm9yIGl0LCBzaW5jZSB0aGF0IGltcGxpZXMgYSB0aGluZyB3aGVyZVxuLy8gc29tZSBiaXRzIHBhc3MgdGhyb3VnaCwgYW5kIG90aGVycyBhcmUgc2ltcGx5IGlnbm9yZWQuICAoVGhhdCB3b3VsZFxuLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKVxuLy9cbi8vIFdoaWxlIHRoZSBvdXRwdXQgaXMgY2F1c2FsbHkgcmVsYXRlZCB0byB0aGUgaW5wdXQsIGl0J3Mgbm90IGFcbi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLFxuLy8gYSB6bGliIHN0cmVhbSBtaWdodCB0YWtlIG11bHRpcGxlIHBsYWluLXRleHQgd3JpdGVzKCksIGFuZCB0aGVuXG4vLyBlbWl0IGEgc2luZ2xlIGNvbXByZXNzZWQgY2h1bmsgc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuXG4vL1xuLy8gSGVyZSdzIGhvdyB0aGlzIHdvcmtzOlxuLy9cbi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZVxuLy8gc3RyZWFtIGNsYXNzZXMuICBXaGVuIHlvdSB3cml0ZShjaHVuayksIHRoYXQgY2FsbHMgX3dyaXRlKGNodW5rLGNiKVxuLy8gaW50ZXJuYWxseSwgYW5kIHJldHVybnMgZmFsc2UgaWYgdGhlcmUncyBhIGxvdCBvZiBwZW5kaW5nIHdyaXRlc1xuLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbFxuLy8gdGhlcmUncyBlbm91Z2ggcGVuZGluZyByZWFkYWJsZSBkYXRhIGJ1ZmZlcmVkIHVwLlxuLy9cbi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuXG4vLyBfcmVhZChuKSBpcyBjYWxsZWQsIGl0IHRyYW5zZm9ybXMgdGhlIHF1ZXVlZCB1cCBkYXRhLCBjYWxsaW5nIHRoZVxuLy8gYnVmZmVyZWQgX3dyaXRlIGNiJ3MgYXMgaXQgY29uc3VtZXMgY2h1bmtzLiAgSWYgY29uc3VtaW5nIGEgc2luZ2xlXG4vLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdFxuLy8gb3V0cHV0dGVkIGJpdCBjYWxscyB0aGUgcmVhZGNiLCBhbmQgc3Vic2VxdWVudCBjaHVua3MganVzdCBnbyBpbnRvXG4vLyB0aGUgcmVhZCBidWZmZXIsIGFuZCB3aWxsIGNhdXNlIGl0IHRvIGVtaXQgJ3JlYWRhYmxlJyBpZiBuZWNlc3NhcnkuXG4vL1xuLy8gVGhpcyB3YXksIGJhY2stcHJlc3N1cmUgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgcmVhZGluZyBzaWRlLFxuLy8gc2luY2UgX3JlYWQgaGFzIHRvIGJlIGNhbGxlZCB0byBzdGFydCBwcm9jZXNzaW5nIGEgbmV3IGNodW5rLiAgSG93ZXZlcixcbi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmdcbi8vIGhlcmUuICBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIHN0cmVhbSB3aGVyZSBldmVyeSBieXRlIG9mIGlucHV0IGlzXG4vLyBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyIGZyb20gMC0yNTUsIGFuZCB0aGVuIHJlc3VsdHMgaW4gdGhhdCBtYW55XG4vLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluXG4vLyAxa2Igb2YgZGF0YSBiZWluZyBvdXRwdXQuICBJbiB0aGlzIGNhc2UsIHlvdSBjb3VsZCB3cml0ZSBhIHZlcnkgc21hbGxcbi8vIGFtb3VudCBvZiBpbnB1dCwgYW5kIGVuZCB1cCB3aXRoIGEgdmVyeSBsYXJnZSBhbW91bnQgb2Ygb3V0cHV0LiAgSW5cbi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbFxuLy8gdGhlIHN5c3RlbSB0byBzdG9wIGRvaW5nIHRoZSB0cmFuc2Zvcm0uICBBIHNpbmdsZSA0TUIgd3JpdGUgY291bGRcbi8vIGNhdXNlIHRoZSBzeXN0ZW0gdG8gcnVuIG91dCBvZiBtZW1vcnkuXG4vL1xuLy8gSG93ZXZlciwgZXZlbiBpbiBzdWNoIGEgcGF0aG9sb2dpY2FsIGNhc2UsIG9ubHkgYSBzaW5nbGUgd3JpdHRlbiBjaHVua1xuLy8gd291bGQgYmUgY29uc3VtZWQsIGFuZCB0aGVuIHRoZSByZXN0IHdvdWxkIHdhaXQgKHVuLXRyYW5zZm9ybWVkKSB1bnRpbFxuLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBEdXBsZXggPSByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybVN0YXRlKHN0cmVhbSkge1xuICB0aGlzLmFmdGVyVHJhbnNmb3JtID0gZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgcmV0dXJuIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpO1xuICB9O1xuXG4gIHRoaXMubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICB0aGlzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuICB0aGlzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0aGlzLndyaXRlZW5jb2RpbmcgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBhZnRlclRyYW5zZm9ybShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignbm8gd3JpdGVjYiBpbiBUcmFuc2Zvcm0gY2xhc3MnKSk7XG5cbiAgdHMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRzLndyaXRlY2IgPSBudWxsO1xuXG4gIGlmIChkYXRhICE9PSBudWxsICYmIGRhdGEgIT09IHVuZGVmaW5lZCkgc3RyZWFtLnB1c2goZGF0YSk7XG5cbiAgY2IoZXIpO1xuXG4gIHZhciBycyA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgcnMucmVhZGluZyA9IGZhbHNlO1xuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICBzdHJlYW0uX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0gbmV3IFRyYW5zZm9ybVN0YXRlKHRoaXMpO1xuXG4gIC8vIHdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdmFyIHN0cmVhbSA9IHRoaXM7XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIHRoaXMub25jZSgncHJlZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlcikge1xuICAgICAgZG9uZShzdHJlYW0sIGVyKTtcbiAgICB9KTtlbHNlIGRvbmUoc3RyZWFtKTtcbiAgfSk7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICB2YXIgd3MgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciB0cyA9IHN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHdzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAodHMudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTtcblxuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGFzeW5jV3JpdGUgPSAhcHJvY2Vzcy5icm93c2VyICYmIFsndjAuMTAnLCAndjAuOS4nXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLCA1KSkgPiAtMSA/IHNldEltbWVkaWF0ZSA6IHByb2Nlc3NOZXh0VGljaztcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGludGVybmFsVXRpbCA9IHtcbiAgZGVwcmVjYXRlOiByZXF1aXJlKCd1dGlsLWRlcHJlY2F0ZScpXG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtO1xuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBTdHJlYW0gPSByZXF1aXJlKCdzdCcgKyAncmVhbScpO1xuICB9IGNhdGNoIChfKSB7fSBmaW5hbGx5IHtcbiAgICBpZiAoIVN0cmVhbSkgU3RyZWFtID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuICB9XG59KSgpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH4gfnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gd3JpdGFibGVTdGF0ZUdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG52YXIgRHVwbGV4O1xuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdGhvdWdoIHRoZXkncmUgbm90XG4gIC8vIGluc3RhbmNlb2YgV3JpdGFibGUsIHRoZXkncmUgaW5zdGFuY2VvZiBSZWFkYWJsZS5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFdyaXRhYmxlKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBJZiB3ZSBnZXQgc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgYnVmZmVyLCBzdHJpbmcsIG51bGwsIG9yIHVuZGVmaW5lZCxcbi8vIGFuZCB3ZSdyZSBub3QgaW4gb2JqZWN0TW9kZSwgdGhlbiB0aGF0J3MgYW4gZXJyb3IuXG4vLyBPdGhlcndpc2Ugc3RyZWFtIGNodW5rcyBhcmUgYWxsIGNvbnNpZGVyZWQgdG8gYmUgb2YgbGVuZ3RoPTEsIGFuZCB0aGVcbi8vIHdhdGVybWFya3MgZGV0ZXJtaW5lIGhvdyBtYW55IG9iamVjdHMgdG8ga2VlcCBpbiB0aGUgYnVmZmVyLCByYXRoZXIgdGhhblxuLy8gaG93IG1hbnkgYnl0ZXMgb3IgY2hhcmFjdGVycy5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciB2YWxpZCA9IHRydWU7XG4gIHZhciBlciA9IGZhbHNlO1xuICAvLyBBbHdheXMgdGhyb3cgZXJyb3IgaWYgYSBudWxsIGlzIHdyaXR0ZW5cbiAgLy8gaWYgd2UgYXJlIG5vdCBpbiBvYmplY3QgbW9kZSB0aGVuIHRocm93XG4gIC8vIGlmIGl0IGlzIG5vdCBhIGJ1ZmZlciwgc3RyaW5nLCBvciB1bmRlZmluZWQuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nKTtcbiAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICBpZiAoZXIpIHtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7XG4gICAgdmFsaWQgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztlbHNlIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuXG4gIGlmIChzdGF0ZS5lbmRlZCkgd3JpdGVBZnRlckVuZCh0aGlzLCBjYik7ZWxzZSBpZiAodmFsaWRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGNiKSkge1xuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHJldCA9IHdyaXRlT3JCdWZmZXIodGhpcywgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuXG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBuZXcgV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcbiAgaWYgKHN5bmMpIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO2Vsc2UgY2IoZXIpO1xuXG4gIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cblxuZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHN5bmMgPSBzdGF0ZS5zeW5jO1xuICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiO1xuXG4gIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSk7XG5cbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gICAgaWYgKCFmaW5pc2hlZCAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8qPHJlcGxhY2VtZW50PiovXG4gICAgICBhc3luY1dyaXRlKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki9cbiAgICB9IGVsc2Uge1xuICAgICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpO1xuXG4gICAgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgICBpZiAoaG9sZGVyLm5leHQpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGhvbGRlci5uZXh0O1xuICAgICAgaG9sZGVyLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rO1xuICAgIGNodW5rID0gbnVsbDtcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nICYmICFzdGF0ZS5maW5pc2hlZCkgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbn07XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCkge1xuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuICBpZiAobmVlZCkge1xuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcblxuICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB2YXIgZW50cnkgPSBfdGhpcy5lbnRyeTtcbiAgICBfdGhpcy5lbnRyeSA9IG51bGw7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgICAgY2IoZXJyKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICB9XG4gICAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBfdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gX3RoaXM7XG4gICAgfVxuICB9O1xufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gQnVmZmVyTGlzdDtcblxuZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgdGhpcy5oZWFkID0gbnVsbDtcbiAgdGhpcy50YWlsID0gbnVsbDtcbiAgdGhpcy5sZW5ndGggPSAwO1xufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiBudWxsIH07XG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgdGhpcy50YWlsID0gZW50cnk7XG4gICsrdGhpcy5sZW5ndGg7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgdGhpcy5oZWFkID0gZW50cnk7XG4gICsrdGhpcy5sZW5ndGg7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gIC0tdGhpcy5sZW5ndGg7XG4gIHJldHVybiByZXQ7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgdGhpcy5sZW5ndGggPSAwO1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIChzKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgdmFyIHJldCA9ICcnICsgcC5kYXRhO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHJldCArPSBzICsgcC5kYXRhO1xuICB9cmV0dXJuIHJldDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uIChuKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGJ1ZmZlclNoaW0uYWxsb2MoMCk7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRoaXMuaGVhZC5kYXRhO1xuICB2YXIgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gIHZhciBpID0gMDtcbiAgd2hpbGUgKHApIHtcbiAgICBwLmRhdGEuY29weShyZXQsIGkpO1xuICAgIGkgKz0gcC5kYXRhLmxlbmd0aDtcbiAgICBwID0gcC5uZXh0O1xuICB9XG4gIHJldHVybiByZXQ7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanNcIilcbiIsInZhciBTdHJlYW0gPSAoZnVuY3Rpb24gKCl7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlcXVpcmUoJ3N0JyArICdyZWFtJyk7IC8vIGhhY2sgdG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZSB3aGVuIHVzZWQgd2l0aCBicm93c2VyaWZ5XG4gIH0gY2F0Y2goXyl7fVxufSgpKTtcbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcmVhZGFibGUuanMnKTtcbmV4cG9ydHMuU3RyZWFtID0gU3RyZWFtIHx8IGV4cG9ydHM7XG5leHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbmV4cG9ydHMuV3JpdGFibGUgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5leHBvcnRzLkR1cGxleCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5leHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG5leHBvcnRzLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuXG5pZiAoIXByb2Nlc3MuYnJvd3NlciAmJiBwcm9jZXNzLmVudi5SRUFEQUJMRV9TVFJFQU0gPT09ICdkaXNhYmxlJyAmJiBTdHJlYW0pIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qc1wiKVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qc1wiKVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBpc0J1ZmZlckVuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmdcbiAgfHwgZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgIGNhc2UgJ2hleCc6IGNhc2UgJ3V0ZjgnOiBjYXNlICd1dGYtOCc6IGNhc2UgJ2FzY2lpJzogY2FzZSAnYmluYXJ5JzogY2FzZSAnYmFzZTY0JzogY2FzZSAndWNzMic6IGNhc2UgJ3Vjcy0yJzogY2FzZSAndXRmMTZsZSc6IGNhc2UgJ3V0Zi0xNmxlJzogY2FzZSAncmF3JzogcmV0dXJuIHRydWU7XG4gICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgfVxuICAgICB9XG5cblxuZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgaWYgKGVuY29kaW5nICYmICFpc0J1ZmZlckVuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgfVxufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuIENFU1UtOCBpcyBoYW5kbGVkIGFzIHBhcnQgb2YgdGhlIFVURi04IGVuY29kaW5nLlxuLy9cbi8vIEBUT0RPIEhhbmRsaW5nIGFsbCBlbmNvZGluZ3MgaW5zaWRlIGEgc2luZ2xlIG9iamVjdCBtYWtlcyBpdCB2ZXJ5IGRpZmZpY3VsdFxuLy8gdG8gcmVhc29uIGFib3V0IHRoaXMgY29kZSwgc28gaXQgc2hvdWxkIGJlIHNwbGl0IHVwIGluIHRoZSBmdXR1cmUuXG4vLyBAVE9ETyBUaGVyZSBzaG91bGQgYmUgYSB1dGY4LXN0cmljdCBlbmNvZGluZyB0aGF0IHJlamVjdHMgaW52YWxpZCBVVEYtOCBjb2RlXG4vLyBwb2ludHMgYXMgdXNlZCBieSBDRVNVLTguXG52YXIgU3RyaW5nRGVjb2RlciA9IGV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSAoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCAnJyk7XG4gIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKTtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICAvLyBDRVNVLTggcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDMtYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIC8vIFVURi0xNiByZXByZXNlbnRzIGVhY2ggb2YgU3Vycm9nYXRlIFBhaXIgYnkgMi1ieXRlc1xuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMjtcbiAgICAgIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSB1dGYxNkRldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIC8vIEJhc2UtNjQgc3RvcmVzIDMgYnl0ZXMgaW4gNCBjaGFycywgYW5kIHBhZHMgdGhlIHJlbWFpbmRlci5cbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHBhc3NUaHJvdWdoV3JpdGU7XG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbm91Z2ggc3BhY2UgdG8gc3RvcmUgYWxsIGJ5dGVzIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4gVVRGLTggbmVlZHMgNFxuICAvLyBieXRlcywgYnV0IENFU1UtOCBtYXkgcmVxdWlyZSB1cCB0byA2ICgzIGJ5dGVzIHBlciBzdXJyb2dhdGUpLlxuICB0aGlzLmNoYXJCdWZmZXIgPSBuZXcgQnVmZmVyKDYpO1xuICAvLyBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXJyZW50IGluY29tcGxldGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIuXG4gIHRoaXMuY2hhclJlY2VpdmVkID0gMDtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJMZW5ndGggPSAwO1xufTtcblxuXG4vLyB3cml0ZSBkZWNvZGVzIHRoZSBnaXZlbiBidWZmZXIgYW5kIHJldHVybnMgaXQgYXMgSlMgc3RyaW5nIHRoYXQgaXNcbi8vIGd1YXJhbnRlZWQgdG8gbm90IGNvbnRhaW4gYW55IHBhcnRpYWwgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLiBBbnkgcGFydGlhbFxuLy8gY2hhcmFjdGVyIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBpcyBidWZmZXJlZCB1cCwgYW5kIHdpbGwgYmVcbi8vIHJldHVybmVkIHdoZW4gY2FsbGluZyB3cml0ZSBhZ2FpbiB3aXRoIHRoZSByZW1haW5pbmcgYnl0ZXMuXG4vL1xuLy8gTm90ZTogQ29udmVydGluZyBhIEJ1ZmZlciBjb250YWluaW5nIGFuIG9ycGhhbiBzdXJyb2dhdGUgdG8gYSBTdHJpbmdcbi8vIGN1cnJlbnRseSB3b3JrcywgYnV0IGNvbnZlcnRpbmcgYSBTdHJpbmcgdG8gYSBCdWZmZXIgKHZpYSBgbmV3IEJ1ZmZlcmAsIG9yXG4vLyBCdWZmZXIjd3JpdGUpIHdpbGwgcmVwbGFjZSBpbmNvbXBsZXRlIHN1cnJvZ2F0ZXMgd2l0aCB0aGUgdW5pY29kZVxuLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBTZWUgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjExNzMwMDkvIC5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciBjaGFyU3RyID0gJyc7XG4gIC8vIGlmIG91ciBsYXN0IHdyaXRlIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBtdWx0aWJ5dGUgY2hhcmFjdGVyXG4gIHdoaWxlICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgcmVtYWluaW5nIGJ5dGVzIHRoaXMgYnVmZmVyIGhhcyB0byBvZmZlciBmb3IgdGhpcyBjaGFyXG4gICAgdmFyIGF2YWlsYWJsZSA9IChidWZmZXIubGVuZ3RoID49IHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkKSA/XG4gICAgICAgIHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkIDpcbiAgICAgICAgYnVmZmVyLmxlbmd0aDtcblxuICAgIC8vIGFkZCB0aGUgbmV3IGJ5dGVzIHRvIHRoZSBjaGFyIGJ1ZmZlclxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgdGhpcy5jaGFyUmVjZWl2ZWQsIDAsIGF2YWlsYWJsZSk7XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgKz0gYXZhaWxhYmxlO1xuXG4gICAgaWYgKHRoaXMuY2hhclJlY2VpdmVkIDwgdGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgICAvLyBzdGlsbCBub3QgZW5vdWdoIGNoYXJzIGluIHRoaXMgYnVmZmVyPyB3YWl0IGZvciBtb3JlIC4uLlxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBieXRlcyBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlclxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShhdmFpbGFibGUsIGJ1ZmZlci5sZW5ndGgpO1xuXG4gICAgLy8gZ2V0IHRoZSBjaGFyYWN0ZXIgdGhhdCB3YXMgc3BsaXRcbiAgICBjaGFyU3RyID0gdGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsIHRoaXMuY2hhckxlbmd0aCkudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG5cbiAgICAvLyBDRVNVLTg6IGxlYWQgc3Vycm9nYXRlIChEODAwLURCRkYpIGlzIGFsc28gdGhlIGluY29tcGxldGUgY2hhcmFjdGVyXG4gICAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGNoYXJTdHIubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCArPSB0aGlzLnN1cnJvZ2F0ZVNpemU7XG4gICAgICBjaGFyU3RyID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgPSB0aGlzLmNoYXJMZW5ndGggPSAwO1xuXG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgYnl0ZXMgaW4gdGhpcyBidWZmZXIsIGp1c3QgZW1pdCBvdXIgY2hhclxuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY2hhclN0cjtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgYW5kIHNldCBjaGFyTGVuZ3RoIC8gY2hhclJlY2VpdmVkXG4gIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKTtcblxuICB2YXIgZW5kID0gYnVmZmVyLmxlbmd0aDtcbiAgaWYgKHRoaXMuY2hhckxlbmd0aCkge1xuICAgIC8vIGJ1ZmZlciB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgYnl0ZXMgd2UgZ290XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQsIGVuZCk7XG4gICAgZW5kIC09IHRoaXMuY2hhclJlY2VpdmVkO1xuICB9XG5cbiAgY2hhclN0ciArPSBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgZW5kKTtcblxuICB2YXIgZW5kID0gY2hhclN0ci5sZW5ndGggLSAxO1xuICB2YXIgY2hhckNvZGUgPSBjaGFyU3RyLmNoYXJDb2RlQXQoZW5kKTtcbiAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICBpZiAoY2hhckNvZGUgPj0gMHhEODAwICYmIGNoYXJDb2RlIDw9IDB4REJGRikge1xuICAgIHZhciBzaXplID0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgIHRoaXMuY2hhckxlbmd0aCArPSBzaXplO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IHNpemU7XG4gICAgdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCBzaXplLCAwLCBzaXplKTtcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIDAsIDAsIHNpemUpO1xuICAgIHJldHVybiBjaGFyU3RyLnN1YnN0cmluZygwLCBlbmQpO1xuICB9XG5cbiAgLy8gb3IganVzdCBlbWl0IHRoZSBjaGFyU3RyXG4gIHJldHVybiBjaGFyU3RyO1xufTtcblxuLy8gZGV0ZWN0SW5jb21wbGV0ZUNoYXIgZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIFVURi04IGNoYXJhY3RlciBhdFxuLy8gdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiBJZiBzbywgaXQgc2V0cyB0aGlzLmNoYXJMZW5ndGggdG8gdGhlIGJ5dGVcbi8vIGxlbmd0aCB0aGF0IGNoYXJhY3RlciwgYW5kIHNldHMgdGhpcy5jaGFyUmVjZWl2ZWQgdG8gdGhlIG51bWJlciBvZiBieXRlc1xuLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGlzIGNoYXJhY3Rlci5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmRldGVjdEluY29tcGxldGVDaGFyID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB3ZSBoYXZlIHRvIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhpcyBidWZmZXJcbiAgdmFyIGkgPSAoYnVmZmVyLmxlbmd0aCA+PSAzKSA/IDMgOiBidWZmZXIubGVuZ3RoO1xuXG4gIC8vIEZpZ3VyZSBvdXQgaWYgb25lIG9mIHRoZSBsYXN0IGkgYnl0ZXMgb2Ygb3VyIGJ1ZmZlciBhbm5vdW5jZXMgYW5cbiAgLy8gaW5jb21wbGV0ZSBjaGFyLlxuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSBpXTtcblxuICAgIC8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04I0Rlc2NyaXB0aW9uXG5cbiAgICAvLyAxMTBYWFhYWFxuICAgIGlmIChpID09IDEgJiYgYyA+PiA1ID09IDB4MDYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDI7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTEwWFhYWFxuICAgIGlmIChpIDw9IDIgJiYgYyA+PiA0ID09IDB4MEUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTExMFhYWFxuICAgIGlmIChpIDw9IDMgJiYgYyA+PiAzID09IDB4MUUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBpO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciByZXMgPSAnJztcbiAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoKVxuICAgIHJlcyA9IHRoaXMud3JpdGUoYnVmZmVyKTtcblxuICBpZiAodGhpcy5jaGFyUmVjZWl2ZWQpIHtcbiAgICB2YXIgY3IgPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgICB2YXIgYnVmID0gdGhpcy5jaGFyQnVmZmVyO1xuICAgIHZhciBlbmMgPSB0aGlzLmVuY29kaW5nO1xuICAgIHJlcyArPSBidWYuc2xpY2UoMCwgY3IpLnRvU3RyaW5nKGVuYyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gcGFzc1Rocm91Z2hXcml0ZShidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpIHtcbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBidWZmZXIubGVuZ3RoICUgMjtcbiAgdGhpcy5jaGFyTGVuZ3RoID0gdGhpcy5jaGFyUmVjZWl2ZWQgPyAyIDogMDtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDM7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMyA6IDA7XG59XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJ2YXIgaW5kZXhPZiA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcblxudmFyIE9iamVjdF9rZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cykgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSByZXMucHVzaChrZXkpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufTtcblxudmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgaWYgKHhzLmZvckVhY2gpIHJldHVybiB4cy5mb3JFYWNoKGZuKVxuICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbih4c1tpXSwgaSwgeHMpO1xuICAgIH1cbn07XG5cbnZhciBkZWZpbmVQcm9wID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ18nLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG5cbnZhciBnbG9iYWxzID0gWydBcnJheScsICdCb29sZWFuJywgJ0RhdGUnLCAnRXJyb3InLCAnRXZhbEVycm9yJywgJ0Z1bmN0aW9uJyxcbidJbmZpbml0eScsICdKU09OJywgJ01hdGgnLCAnTmFOJywgJ051bWJlcicsICdPYmplY3QnLCAnUmFuZ2VFcnJvcicsXG4nUmVmZXJlbmNlRXJyb3InLCAnUmVnRXhwJywgJ1N0cmluZycsICdTeW50YXhFcnJvcicsICdUeXBlRXJyb3InLCAnVVJJRXJyb3InLFxuJ2RlY29kZVVSSScsICdkZWNvZGVVUklDb21wb25lbnQnLCAnZW5jb2RlVVJJJywgJ2VuY29kZVVSSUNvbXBvbmVudCcsICdlc2NhcGUnLFxuJ2V2YWwnLCAnaXNGaW5pdGUnLCAnaXNOYU4nLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICd1bmRlZmluZWQnLCAndW5lc2NhcGUnXTtcblxuZnVuY3Rpb24gQ29udGV4dCgpIHt9XG5Db250ZXh0LnByb3RvdHlwZSA9IHt9O1xuXG52YXIgU2NyaXB0ID0gZXhwb3J0cy5TY3JpcHQgPSBmdW5jdGlvbiBOb2RlU2NyaXB0IChjb2RlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpIHJldHVybiBuZXcgU2NyaXB0KGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKCEoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7XG4gICAgfVxuICAgIFxuICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZiAoIWlmcmFtZS5zdHlsZSkgaWZyYW1lLnN0eWxlID0ge307XG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICB2YXIgd0V2YWwgPSB3aW4uZXZhbCwgd0V4ZWNTY3JpcHQgPSB3aW4uZXhlY1NjcmlwdDtcblxuICAgIGlmICghd0V2YWwgJiYgd0V4ZWNTY3JpcHQpIHtcbiAgICAgICAgLy8gd2luLmV2YWwoKSBtYWdpY2FsbHkgYXBwZWFycyB3aGVuIHRoaXMgaXMgY2FsbGVkIGluIElFOlxuICAgICAgICB3RXhlY1NjcmlwdC5jYWxsKHdpbiwgJ251bGwnKTtcbiAgICAgICAgd0V2YWwgPSB3aW4uZXZhbDtcbiAgICB9XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB3aW5ba2V5XSA9IGNvbnRleHRba2V5XTtcbiAgICB9KTtcbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGNvbnRleHRba2V5XSkge1xuICAgICAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB2YXIgd2luS2V5cyA9IE9iamVjdF9rZXlzKHdpbik7XG5cbiAgICB2YXIgcmVzID0gd0V2YWwuY2FsbCh3aW4sIHRoaXMuY29kZSk7XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyh3aW4pLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIC8vIEF2b2lkIGNvcHlpbmcgY2lyY3VsYXIgb2JqZWN0cyBsaWtlIGB0b3BgIGFuZCBgd2luZG93YCBieSBvbmx5XG4gICAgICAgIC8vIHVwZGF0aW5nIGV4aXN0aW5nIGNvbnRleHQgcHJvcGVydGllcyBvciBuZXcgcHJvcGVydGllcyBpbiB0aGUgYHdpbmBcbiAgICAgICAgLy8gdGhhdCB3YXMgb25seSBpbnRyb2R1Y2VkIGFmdGVyIHRoZSBldmFsLlxuICAgICAgICBpZiAoa2V5IGluIGNvbnRleHQgfHwgaW5kZXhPZih3aW5LZXlzLCBrZXkpID09PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gd2luW2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvckVhY2goZ2xvYmFscywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gY29udGV4dCkpIHtcbiAgICAgICAgICAgIGRlZmluZVByb3AoY29udGV4dCwga2V5LCB3aW5ba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgXG4gICAgcmV0dXJuIHJlcztcbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXZhbCh0aGlzLmNvZGUpOyAvLyBtYXliZS4uLlxufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5Jbk5ld0NvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjdHggPSBTY3JpcHQuY3JlYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB2YXIgcmVzID0gdGhpcy5ydW5JbkNvbnRleHQoY3R4KTtcblxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY3R4KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBjb250ZXh0W2tleV0gPSBjdHhba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG59O1xuXG5mb3JFYWNoKE9iamVjdF9rZXlzKFNjcmlwdC5wcm90b3R5cGUpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGV4cG9ydHNbbmFtZV0gPSBTY3JpcHRbbmFtZV0gPSBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgcyA9IFNjcmlwdChjb2RlKTtcbiAgICAgICAgcmV0dXJuIHNbbmFtZV0uYXBwbHkocywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9O1xufSk7XG5cbmV4cG9ydHMuY3JlYXRlU2NyaXB0ID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5TY3JpcHQoY29kZSk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBTY3JpcHQuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQ29udGV4dCgpO1xuICAgIGlmKHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGNvbnRleHQpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jO1xudmFyIENvbWJpbmVkQnVmZmVyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLkNvbWJpbmVkQnVmZmVyO1xudmFyIHV0ZjggPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvdXRmOCcpO1xudmFyIFVucGFja2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzXCIpLlVucGFja2VyO1xuXG5kZXNjcmliZSgnYnVmZmVycycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIGhhdmUgaGVscGZ1bCB0b1N0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcbiAgICBiLndyaXRlSW50OCgxKTtcbiAgICBiLndyaXRlSW50OCg4KTtcbiAgICBiLndyaXRlSW50OCgxNSk7XG4gICAgYi53cml0ZUludDgoMTI3KTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgc3RyID0gYi50b1N0cmluZygpO1xuICAgIHZhciBoZXggPSBiLnRvSGV4KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBzdHIgKS50b0NvbnRhaW4oXCIoIHBvc2l0aW9uPTQgKVxcbiAgMDEgMDggMGYgN2ZcIik7XG4gICAgZXhwZWN0KGhleCkudG9CZShcIjAxIDA4IDBmIDdmIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQ4KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50OCgwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMTYtYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQxNiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0VUludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50MzIoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDgtYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDgoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDgoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0SW50MTYoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQzMigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIGxpc3QgY29ycmVjdGx5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDUpO1xuICAgIGIud3JpdGVVSW50OCgweDkwIHwgMHgyKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2EnKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2InKTtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGhleCA9IGIudG9IZXgoKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGhleCkudG9CZShcIjkyIDgxIDYxIDgxIDYyIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgbGlzdCBjb3JyZWN0bHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4OTIpO1xuICAgIGIud3JpdGVVSW50OCgweDgxKTtcbiAgICBiLndyaXRlVUludDgoMHg2MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4ODEpO1xuICAgIGIud3JpdGVVSW50OCgweDYyKTtcbiAgICBiLnJlc2V0KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRhdGEgPSBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGIgKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGF0YVswXSkudG9CZSgnYScpO1xuICAgIGV4cGVjdChkYXRhWzFdKS50b0JlKCdiJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb21iaW5lZEJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHJlYWQgaW50OCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIxID0gYWxsb2MoMSk7XG4gICAgdmFyIGIyID0gYWxsb2MoMSk7XG4gICAgYjEucHV0SW50OCgwLCAxKTtcbiAgICBiMi5wdXRJbnQ4KDAsIDIpO1xuXG4gICAgdmFyIGIgPSBuZXcgQ29tYmluZWRCdWZmZXIoW2IxLGIyXSk7XG4gICAgXG4gICAgLy8gV2hlblxuICAgIHZhciBmaXJzdCA9IGIucmVhZEludDgoKTtcbiAgICB2YXIgc2Vjb25kID0gYi5yZWFkSW50OCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChmaXJzdCkudG9CZSgxKTtcbiAgICBleHBlY3Qoc2Vjb25kKS50b0JlKDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgZGl2aWRlZCBmbG9hdDY0JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgaW5uZXIgPSBhbGxvYyg4KTtcbiAgICBpbm5lci5wdXRGbG9hdDY0KDAsIDAuMSk7XG5cbiAgICB2YXIgYiA9IG5ldyBDb21iaW5lZEJ1ZmZlcihbaW5uZXIucmVhZFNsaWNlKDQpLGlubmVyLnJlYWRTbGljZSg0KV0pO1xuICAgIFxuICAgIC8vIFdoZW5cbiAgICB2YXIgcmVhZCA9IGIucmVhZEZsb2F0NjQoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVhZCkudG9CZSgwLjEpO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB3cml0ZVN0cmluZyhiLCBzdHIpIHtcbiAgdmFyIGJ5dGVzID0gdXRmOC5lbmNvZGUoc3RyKTtcbiAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gIGIud3JpdGVVSW50OCgweDgwIHwgc2l6ZSk7XG4gIGIud3JpdGVCeXRlcyhieXRlcyk7XG4gIHJldHVybiBiO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBDaHVua2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NodW5raW5nJykuQ2h1bmtlcjtcbnZhciBEZWNodW5rZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2h1bmtpbmcnKS5EZWNodW5rZXI7XG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2M7XG52YXIgQ29tYmluZWRCdWZmZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuQ29tYmluZWRCdWZmZXI7XG52YXIgRHVtbXlDaGFubmVsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLWR1bW15LmpzJykuY2hhbm5lbDtcblxuZGVzY3JpYmUoJ0NodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBjaHVuayBzaW1wbGUgZGF0YScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQzMigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwOCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGNodW5rIGJsb2JzIGxhcmdlciB0aGFuIHRoZSBvdXRwdXQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCwgNCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUJ5dGVzKGJ5dGVzKCAxLDIsMyw0LDUsNiApKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBjaC50b0hleCgpICkudG9CZShcIjAwIDAyIDAxIDAyIDAwIDAyIDAzIDA0IDAwIDAyIDA1IDA2IFwiKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgaW5jbHVkZSBtZXNzYWdlIGJvdW5kYXJpZXMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MzIoMSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwNCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwNCAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEZWNodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCB1bmNodW5rIGEgc2ltcGxlIG1lc3NhZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtZXNzYWdlcyA9IFtdO1xuICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihkZWNodW5rZXIpO1xuICAgIGRlY2h1bmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihidWZmZXIpIHsgbWVzc2FnZXMucHVzaChidWZmZXIpOyB9O1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQxNigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigzKTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIG1lc3NhZ2VzWzBdLnRvSGV4KCkgKS50b0JlKCBcIjAwIDAxIDAwIDAyIDAwIDAzIFwiICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG1lc3NhZ2Ugc3BsaXQgYXQgYW55IHBvaW50JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBBbmQgZ2l2ZW4gdGhlIGZvbGxvd2luZyBtZXNzYWdlXG4gICAgY2h1bmtlci53cml0ZUludDgoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDIpO1xuICAgIGNodW5rZXIud3JpdGVJbnQzMigzKTtcbiAgICBjaHVua2VyLndyaXRlVUludDgoNCk7XG4gICAgY2h1bmtlci53cml0ZVVJbnQzMig1KTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIHZhciBjaHVua2VkID0gY2gudG9CdWZmZXIoKTtcblxuICAgIC8vIFdoZW4gSSB0cnkgc3BsaXR0aW5nIHRoaXMgY2h1bmtlZCBkYXRhIGF0IGV2ZXJ5IHBvc3NpYmxlIHBvc2l0aW9uXG4gICAgLy8gaW50byB0d28gc2VwYXJhdGUgYnVmZmVycywgYW5kIHNlbmQgdGhvc2UgdG8gdGhlIGRlY2h1bmtlclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2h1bmtlZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNsaWNlMSA9IGNodW5rZWQuZ2V0U2xpY2UoIDAsIGkgKTtcbiAgICAgIHZhciBzbGljZTIgPSBjaHVua2VkLmdldFNsaWNlKCBpLCBjaHVua2VkLmxlbmd0aCAtIGkgKTtcblxuICAgICAgLy8gRGVjaHVuayB0aGUgc2xpY2VzXG4gICAgICB2YXIgbWVzc2FnZXMgPSBbXTtcbiAgICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgICBkZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYnVmZmVyKSB7IG1lc3NhZ2VzLnB1c2goYnVmZmVyKTsgfTtcbiAgICAgIGRlY2h1bmtlci53cml0ZSggc2xpY2UxICk7XG4gICAgICBkZWNodW5rZXIud3JpdGUoIHNsaWNlMiApO1xuXG4gICAgICAvLyBUaGVuLCB0aGUgb3V0cHV0IHNob3VsZCBiZSBjb3JyZWN0XG4gICAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICAgIGV4cGVjdCggbWVzc2FnZXNbMF0udG9IZXgoKSApLnRvQmUoIFwiMDEgMDAgMDIgMDAgMDAgMDAgMDMgMDQgMDAgMDAgMDAgMDUgXCIgKTtcbiAgICB9O1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBieXRlcygpIHtcbiAgdmFyIGIgPSBhbGxvYyggYXJndW1lbnRzLmxlbmd0aCApO1xuICBmb3IoIHZhciBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuICAgIGIud3JpdGVVSW50OCggYXJndW1lbnRzW2ldICk7XG4gIH1cbiAgYi5wb3NpdGlvbiA9IDA7XG4gIHJldHVybiBiO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIER1bW15Q2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcycpO1xudmFyIGNvbm5lY3QgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL2Nvbm5lY3Rvci5qc1wiKS5jb25uZWN0O1xuXG5kZXNjcmliZSgnY29ubmVjdG9yJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIGJhc2ljIG1lc3NhZ2VzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiKVxuXG4gICAgLy8gV2hlblxuICAgIGNvbm4uaW5pdGlhbGl6ZSggXCJteWRyaXZlci8wLjAuMFwiLCB7c2NoZW1lOiBcImJhc2ljXCIsIHByaW5jaXBhbDogXCJuZW80alwiLCBjcmVkZW50aWFsczogXCJuZW80alwifSwgIHtcbiAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiggbXNnICkge1xuICAgICAgICBleHBlY3QoIG1zZyApLm5vdC50b0JlTnVsbCgpO1xuICAgICAgICBjb25uLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcbiAgaXQoJ3Nob3VsZCByZXRyaWV2ZSBzdHJlYW0nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIpXG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0gKTtcbiAgICBjb25uLnJ1biggXCJSRVRVUk4gMS4wXCIsIHt9ICk7XG4gICAgY29ubi5wdWxsQWxsKCB7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uKCByZWNvcmQgKSB7XG4gICAgICAgIHJlY29yZHMucHVzaCggcmVjb3JkICk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uKCB0YWlsICkge1xuICAgICAgICBleHBlY3QoIHJlY29yZHNbMF1bMF0gKS50b0JlKCAxICk7XG4gICAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbm4uc3luYygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHVzZSBEdW1teUNoYW5uZWwgdG8gcmVhZCB3aGF0IGdldHMgd3JpdHRlbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBvYnNlcnZlciA9IER1bW15Q2hhbm5lbC5vYnNlcnZlcjtcbiAgICB2YXIgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIsIHtjaGFubmVsOkR1bW15Q2hhbm5lbC5jaGFubmVsfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0gKTtcbiAgICBjb25uLnJ1biggXCJSRVRVUk4gMVwiLCB7fSApO1xuICAgIGNvbm4uc3luYygpO1xuICAgIGV4cGVjdCggb2JzZXJ2ZXIuaW5zdGFuY2UudG9IZXgoKSApLnRvQmUoICc2MCA2MCBiMCAxNyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA0MSBiMiAwMSA4ZSA2ZCA3OSA2NCA3MiA2OSA3NiA2NSA3MiAyZiAzMCAyZSAzMCAyZSAzMCBhMyA4NiA3MyA2MyA2OCA2NSA2ZCA2NSA4NSA2MiA2MSA3MyA2OSA2MyA4OSA3MCA3MiA2OSA2ZSA2MyA2OSA3MCA2MSA2YyA4NSA2ZSA2NSA2ZiAzNCA2YSA4YiA2MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyA3MyA4NSA2ZSA2NSA2ZiAzNCA2YSAwMCAwMCAwMCAwYyBiMiAxMCA4OCA1MiA0NSA1NCA1NSA1MiA0ZSAyMCAzMSBhMCAwMCAwMCAnICk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3ZpZGUgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbm5lY3RpbmcgdG8gaHR0cC1wb3J0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdDo3NDc0XCIsIHtlbmNyeXB0ZWQ6ZmFsc2V9KTtcblxuICAgIC8vIFdoZW5cbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sICB7XG4gICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24oIG1zZyApIHtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgLy9vbmx5IG5vZGUgZ2V0cyB0aGUgcHJldHR5IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgaWYoIHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJykuYXZhaWxhYmxlICkge1xuICAgICAgICAgIGV4cGVjdChlcnIubWVzc2FnZSkudG9CZShcIlNlcnZlciByZXNwb25kZWQgSFRUUC4gTWFrZSBzdXJlIHlvdSBhcmUgbm90IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBodHRwIGVuZHBvaW50IFwiICtcbiAgICAgICAgICAgIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbiBcbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYyxcbiAgICBwYWNrc3RyZWFtID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzXCIpLFxuICAgIGludGVnZXIgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVnZXIuanNcIiksXG4gICAgUGFja2VyID0gcGFja3N0cmVhbS5QYWNrZXIsXG4gICAgVW5wYWNrZXIgPSBwYWNrc3RyZWFtLlVucGFja2VyLFxuICAgIFN0cnVjdHVyZSA9IHBhY2tzdHJlYW0uU3RydWN0dXJlLFxuICAgIEludGVnZXIgPSBpbnRlZ2VyLkludGVnZXI7XG5cbmRlc2NyaWJlKCdwYWNrc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cblxuICBpdCgnc2hvdWxkIHBhY2sgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiwgaTtcbiAgICAvLyB0ZXN0IHNtYWxsIG51bWJlcnNcbiAgICBmb3IobiA9IC05OTk7IG4gPD0gOTk5OyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIobik7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICAgIC8vIHBvc2l0aXZlIG51bWJlcnNcbiAgICBmb3IobiA9IDE2OyBuIDw9IDE2IDsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KDIsIG4pKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgLy8gbmVnYXRpdmUgbnVtYmVyc1xuICAgIGZvcihuID0gMDsgbiA8PSA2MyA7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcigtTWF0aC5wb3coMiwgbikpO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJpbmdzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIlwiICkgKS50b0JlKCBcIlwiICk7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcImFiY2RlZmcxMjM1NjdcIiApICkudG9CZSggXCJhYmNkZWZnMTIzNTY3XCIgKTtcbiAgICB2YXIgc3RyID0gQXJyYXkoNjU1MzYgKyAxKS5qb2luKCdhJyk7IC8vIDIgXiAxNiArIDFcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soc3RyLCBzdHIubGVuZ3RoICsgOCkpLnRvQmUoc3RyKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJ1Y3R1cmVzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBuZXcgU3RydWN0dXJlKDEsIFtcIkhlbGxvLCB3b3JsZCEhIVwiXSApICkuZmllbGRzWzBdICkgIFxuICAgICAudG9CZSggXCJIZWxsbywgd29ybGQhISFcIiApO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIGxpc3RzJywgZnVuY3Rpb24oKSB7XG4gICB2YXIgbGlzdCA9IFsnYScsICdiJ107XG4gICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCApO1xuICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMF0gKS50b0JlKCBsaXN0WzBdICk7XG4gICBleHBlY3QoIHJvdW5kdHJpcHBlZFsxXSApLnRvQmUoIGxpc3RbMV0gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYWNrIGxvbmcgbGlzdHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGlzdExlbmd0aCA9IDI1NjtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpc3QucHVzaChudWxsKVxuICAgIH1cbiAgICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCwgMTQwMCApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzBdICkudG9CZSggbGlzdFswXSApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzFdICkudG9CZSggbGlzdFsxXSApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBwYWNrQW5kVW5wYWNrKCB2YWwsIGJ1ZmZlclNpemUgKSB7XG4gIGJ1ZmZlclNpemUgPSBidWZmZXJTaXplIHx8IDEyODtcbiAgdmFyIGJ1ZmZlciA9IGFsbG9jKGJ1ZmZlclNpemUpO1xuICBuZXcgUGFja2VyKCBidWZmZXIgKS5wYWNrYWJsZSggdmFsICkoKTtcbiAgYnVmZmVyLnJlc2V0KCk7XG4gIHJldHVybiBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGJ1ZmZlciApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBQb29sID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3Bvb2wnKS5Qb29sO1xuXG5kZXNjcmliZSgnUG9vbCcsIGZ1bmN0aW9uKCkge1xuICBpdCgnYWxsb2NhdGVzIGlmIHBvb2wgaXMgZW1wdHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG5cbiAgaXQoJ3Bvb2xzIGlmIHJlc291cmNlcyBhcmUgcmV0dXJuZWQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ2ZyZWVzIGlmIHBvb2wgcmVhY2hlcyBtYXggc2l6ZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IHRyYWNrcyBkZXN0cm95ZWQgcmVzb3VyY2VzXG4gICAgdmFyIGNvdW50ZXIgPSAwLFxuICAgICAgICBkZXN0cm95ZWQgPSBbXTtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKFxuICAgICAgZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiB0cnVlOyB9LFxuICAgICAgMiAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG4gICAgcjIuY2xvc2UoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlc3Ryb3llZC5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMF0uaWQgKS50b0JlKCByMi5pZCApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgdmFsaWRhdGUgcmV0dXJucyBmYWxzZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgMTAwMCAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZXN0cm95ZWQubGVuZ3RoICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggZGVzdHJveWVkWzBdLmlkICkudG9CZSggcjAuaWQgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFsxXS5pZCApLnRvQmUoIHIxLmlkICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIFJlc291cmNlKCBpZCwgcmVsZWFzZSApIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLmlkID0gaWQ7XG4gIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsgcmVsZWFzZShzZWxmKTsgfTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJyk7XG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgaGFzRmVhdHVyZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXNcIik7XG5cbmRlc2NyaWJlKCd0cnVzdC1zaWduZWQtY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlcjtcblxuICBpdCgnc2hvdWxkIHJlamVjdCB1bmtub3duIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTXG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb20uY2VydGlmaWNhdGVcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGV4cGVjdCggZXJyLm1lc3NhZ2UgKS50b0NvbnRhaW4oIFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkXCIgKTtcbiAgICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBrbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1wiYnVpbGQvbmVvNGovY2VydGlmaWNhdGVzL25lbzRqLmNlcnRcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBkb25lICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIGlmKCBkcml2ZXIgKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cblxuZGVzY3JpYmUoJ3RydXN0LW9uLWZpcnN0LXVzZScsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG5cbiAgaXQoXCJzaG91bGQgY3JlYXRlIGtub3duX2hvc3RzIGZpbGUgaW5jbHVkaW5nIGZ1bGwgcGF0aCBpZiBpdCBkb2Vzbid0IGV4aXN0XCIsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgLy8gTm9uIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgIHZhciBrbm93bkhvc3RzRGlyID0gcGF0aC5qb2luKFwiYnVpbGRcIiwgXCJob3N0c1wiKTtcbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBwYXRoLmpvaW4oa25vd25Ib3N0c0RpciwgXCJrbm93bl9ob3N0c1wiKTtcbiAgICB0cnkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfSBjYXRjaCAoXykgeyB9XG4gICAgdHJ5IHtcbiAgICAgIGZzLnJtZGlyU3luYyhrbm93bkhvc3RzRGlyKTtcbiAgICB9IGNhdGNoIChfKSB7IH1cblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAvLyBUaGVuIHdlIGdldCB0byBoZXJlLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlIGtub3duX2hvc3RzIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkXG4gICAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyBmcy5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKSB9KS5ub3QudG9UaHJvdygpXG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goIGZ1bmN0aW9uKCl7XG4gICAgICAvLyBKdXN0IGhlcmUgdG8gZ3JhY2VmdWxseSBleGl0IHRlc3Qgb24gZmFpbHVyZSBzbyB3ZSBkb24ndCBnZXQgdGltZW91dHNcbiAgICAgIC8vIHdoZW4gZG9uZSgpIGlzbid0IGNhbGxlZC5cbiAgICAgIGV4cGVjdCggJ3RoaXMnICkudG9CZSggJ3RvIG5ldmVyIGhhcHBlbicgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGhvc3QgZmlsZSBjb250YWlucyB0d28gaG9zdCBkdXBsaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIGRyaXZlci5zZXNzaW9uKCk7IC8vIHdyaXRlIGludG8gdGhlIGtub3duSG9zdCBmaWxlXG5cbiAgICAvLyBkdXBsaWNhdGUgdGhlIHNhbWUgc2VydmVySWQgdHdpY2VcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRleHQgPSBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4Jyk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCB0ZXh0ICsgdGV4dCk7XG4gICAgfSwgMTAwMCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKFwiUkVUVVJOIHRydWUgQVMgYVwiKS50aGVuKCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIC8vIFRoZW4gd2UgZ2V0IHRvIGhlcmUuXG4gICAgICAgIGV4cGVjdCggZGF0YS5yZWNvcmRzWzBdLmdldCgnYScpICkudG9CZSggdHJ1ZSApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9LCAyMDAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgcHJldmlvdXNseSB1bi1zZWVuIGhvc3RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIWhhc0ZlYXR1cmUoXCJ0cnVzdF9vbl9maXJzdF91c2VcIikgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBcImJ1aWxkL2tub3duX2hvc3RzXCI7XG4gICAgaWYoIGZzLmV4aXN0c1N5bmMoa25vd25Ib3N0c1BhdGgpICkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfVxuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgLy8gVGhlbiB3ZSBnZXQgdG8gaGVyZS5cbiAgICAgIC8vIEFuZCB0aGVuIHRoZSBrbm93bl9ob3N0cyBmaWxlIHNob3VsZCBoYXZlIGNvcnJlY3QgY29udGVudHNcbiAgICAgIGV4cGVjdCggZnMucmVhZEZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCAndXRmOCcpICkudG9Db250YWluKCBcImxvY2FsaG9zdDo3Njg3XCIgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZHVwbGljYXRlIGZpbmdlcnByaW50IGVudHJpZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IFwiYnVpbGQva25vd25faG9zdHNcIjtcbiAgICBpZiggZnMuZXhpc3RzU3luYyhrbm93bkhvc3RzUGF0aCkgKSB7XG4gICAgICBmcy51bmxpbmtTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJycpO1xuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gICAgZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVzID0ge307XG4gICAgICBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4JylcbiAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gISEgKGxpbmUudHJpbSgpKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIGlmICghbGluZXNbbGluZV0pIHtcbiAgICAgICAgICAgICAgbGluZXNbbGluZV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNbbGluZV0rKztcbiAgICAgICAgICB9KTtcblxuICAgICAgdmFyIGR1cGxpY2F0ZWRMaW5lcyA9IE9iamVjdFxuICAgICAgICAgIC5rZXlzKGxpbmVzKVxuICAgICAgICAgIC5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmVzW2xpbmVdO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihjb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50ID4gMTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5sZW5ndGg7XG5cbiAgICAgIGV4cGVjdCggZHVwbGljYXRlZExpbmVzICkudG9CZSggMCApO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDEwMDApO1xuICB9KTtcbiAgXG4gIGl0KCdzaG91bGQgc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBpZiBkYXRhYmFzZSBjZXJ0IGRvZXMgbm90IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb21fa25vd25faG9zdHNcIjtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0NvbnRhaW4oXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBcIiArXG4gICAgICAgIFwiYW5kIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIGxvY2FsaG9zdDo3Njg3XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgdXRmOCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC91dGY4Jyk7XG52YXIgYnVmZmVycyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKTtcblxuZGVzY3JpYmUoJ3V0ZjgnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGEgbmljZSBjbGVhbiBidWZmZXIgcG9zaXRpb24gYWZ0ZXIgc2VyaWFsaXppbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGJ1ZmZlci5wb3NpdGlvbiApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHBvc2l0aW9uIG9mIHNpbmdsZSBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCAtIDEpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlY29kZWQgKS50b0JlKCBcImVsbG8sIHdvcmxkIVwiICk7XG4gICAgZXhwZWN0KGJ1ZmZlci5wb3NpdGlvbikudG9FcXVhbCgxMylcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIHN1YnN0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoXCJoZWxsbywgd29ybGQhXCIpO1xuICAgIGJ1ZmZlci5yZWFkSW50OCgpO1xuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoYnVmZmVyLCAzKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoNClcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIHV0ZjgnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiw6XDpMO2MTIzXCIgKSApLnRvQmUoIFwiw6XDpMO2MTIzXCIgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBhIGNvbXBsZXRlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYXPDpWZxd2VyXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUobXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgdXRmOCBmcm9tIHBhcnQgb2YgYSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcVwiO1xuICAgIHZhciBleHBlY3RNc2cgPSBtc2cuc3Vic3RyaW5nKDAsIG1zZy5sZW5ndGgtMSk7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgdW5yZWxhdGVkRGF0YSA9IGJ1ZmZlcnMuYWxsb2MoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCB1bnJlbGF0ZWREYXRhXSApO1xuXG4gICAgLy8gV2hlbiBcbiAgICAvLyBXZSByZWFkIGFsbCBidXQgdGhlIHVucmVsYXRlZERhdGEgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBidWZiXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgY29tYmluZWQubGVuZ3RoIC0gMSAtIHVucmVsYXRlZERhdGEubGVuZ3RoICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoZXhwZWN0TXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBwb3NpdGlvbiBpbiB0aGUgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDIpO1xuXG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoXCJjZGVmZ2hcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDgpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCBidWZmZXIgYWNyb3NzIGJ1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFiY2RlZmdoaWprbFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCA0KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGVjb2RlZCkudG9CZShcImZnaGlcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDkpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCB3aXRoaW4gYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgMik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ1wiKTtcbiAgICBleHBlY3QoY29tYmluZWQucG9zaXRpb24pLnRvQmUoNylcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggc3RyICkge1xuICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoIHN0ciApO1xuICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdkcml2ZXInLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXNzaW9ucycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHNlc3Npb24gKS5ub3QudG9CZU51bGwoKTtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgY29ubmVjdGlvbiBlcnJvcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdGVcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAvL3RoZSBlcnJvciBtZXNzYWdlIGlzIGRpZmZlcmVudCB3aGV0aGVyIGluIGJyb3dzZXIgb3Igbm9kZVxuICAgICAgZXhwZWN0KGVyci5tZXNzYWdlKS5ub3QudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBlYXJseSBvbiB3cm9uZyBjcmVkZW50aWFscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIndobyB3b3VsZCB1c2Ugc3VjaCBhIHBhc3N3b3JkXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgLy90aGUgZXJyb3IgbWVzc2FnZSBpcyBkaWZmZXJlbnQgd2hldGhlciBpbiBicm93c2VyIG9yIG5vZGVcbiAgICAgIGV4cGVjdChlcnIuZmllbGRzWzBdLmNvZGUpLnRvRXF1YWwoJ05lby5DbGllbnRFcnJvci5TZWN1cml0eS5VbmF1dGhvcml6ZWQnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5kaWNhdGUgc3VjY2VzcyBlYXJseSBvbiBjb3JyZWN0IGNyZWRlbnRpYWxzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKG1ldGEpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlY29yZCA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVjb3JkXCIpLlJlY29yZDtcbnZhciBOZW80akVycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9lcnJvclwiKS5OZW80akVycm9yO1xuXG5cbmRlc2NyaWJlKCdSZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KFwibmFtZVwiKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBrZXknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBmdW5jdGlvbigpIHsgcmVjb3JkLmdldChcImFnZVwiKSB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKFxuICAgICAgXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ2FnZScsIGF2YWlsYWJsZSBrZXkgYXJlOiBbbmFtZV0uXCIpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QocmVjb3JkLmdldCgwKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyByZWNvcmQuZ2V0KDEpIH0pLnRvVGhyb3cobmV3IE5lbzRqRXJyb3IoXG4gICAgICBcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICcxJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgK1xuICAgICAgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBsZW5ndGgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW10sIFtdKS5sZW5ndGggKS50b0JlKDApO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdKS5sZW5ndGggKS50b0JlKDEpO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiXSwgW1wiQm9iXCIsIDQ1XSkubGVuZ3RoICkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBmb3JFYWNoIHRocm91Z2ggdGhlIHJlY29yZCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIl0sIFtcIkJvYlwiLCA0NV0gKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAvLyBXaGVuXG4gICAgcmVjb3JkLmZvckVhY2goIGZ1bmN0aW9uKCB2YWx1ZSwga2V5LCByZWNvcmQgKSB7XG4gICAgICByZXN1bHQucHVzaCggW3ZhbHVlLCBrZXksIHJlY29yZF0gKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtbXCJCb2JcIiwgXCJuYW1lXCIsIHJlY29yZF0sIFs0NSwgXCJhZ2VcIiwgcmVjb3JkXV0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdyZXN1bHQgc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlciwgc2Vzc2lvbjtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2hhaW5pbmcgYHRoZW5gLCByZXR1cm5pbmcgYSBuZXcgdGhpbmcgaW4gZWFjaCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCBcIlJFVFVSTiAxXCIpXG4gICAgICAudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBcImZpcnN0XCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcImZpcnN0XCIgKTtcbiAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcInNlY29uZFwiICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2F0Y2hpbmcgZXhjZXB0aW9uIHRocm93biBpbiBgdGhlbmAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1biggXCJSRVRVUk4gMVwiKVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBd2F5IHdpdGggeW91IVwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoIFwiQXdheSB3aXRoIHlvdSFcIiApO1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG52YXIgU3RhdGVtZW50VHlwZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVzdWx0LXN1bW1hcnlcIikuc3RhdGVtZW50VHlwZTtcbnZhciBTZXNzaW9uID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9zZXNzaW9uXCIpO1xuXG5kZXNjcmliZSgnc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGJlIGlkZW1wb3RlbnQgJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKG51bGwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIrKztcbiAgICB9KTtcbiAgICBfc2Vzc2lvbi5jbG9zZSgpO1xuICAgIGV4cGVjdChjb3VudGVyKS50b0JlKDEpO1xuICAgIF9zZXNzaW9uLmNsb3NlKCk7XG4gICAgZXhwZWN0KGNvdW50ZXIpLnRvQmUoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGJhc2ljIHJ1bi9zdWJzY3JpYmUgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICB2YXIgcmVjb3JkcyA9IFtdO1xuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGtlZXAgY29udGV4dCBpbiBzdWJzY3JpYmUgbWV0aG9kcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZnVuY3Rpb24gbXlPYnNlcnZlcigpIHtcbiAgICAgIHRoaXMubG9jYWwgPSAnaGVsbG8nO1xuICAgICAgdmFyIHByaXZhdGVMb2NhbCA9ICdoZWxsbyc7XG4gICAgICB0aGlzLm9uTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZShuZXcgbXlPYnNlcnZlcigpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjYWxsIG9ic2VydmVycyBvbkVycm9yIG9uIGVycm9yICcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuc3Vic2NyaWJlKHtcbiAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSB7dGV4dDogXCJSRVRVUk4gMSA9IHtwYXJhbX0gQVMgYVwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBydW4vdGhlbi90aGVuL3RoZW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpXG4gICAgICAudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgKS50aGVuKFxuICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUoMSk7XG4gICAgICB9XG4gICAgKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBiYXNpYyBydW4vY2F0Y2ggJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuY2F0Y2goXG4gICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICApXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHN1bW1hcml6ZSBtZXRob2QgZm9yIGJhc2ljIG1ldGFkYXRhICcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgc3RhdGVtZW50ID0gXCJDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG5cIjtcbiAgICB2YXIgcGFyYW1zID0ge3Byb3A6IFwic3RyaW5nXCJ9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnQudGV4dCkudG9CZShzdGF0ZW1lbnQpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0JlKHBhcmFtcyk7XG4gICAgICAgIGV4cGVjdChzdW0udXBkYXRlU3RhdGlzdGljcy5jb250YWluc1VwZGF0ZXMoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS51cGRhdGVTdGF0aXN0aWNzLm5vZGVzQ3JlYXRlZCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudFR5cGUpLnRvQmUoU3RhdGVtZW50VHlwZS5SRUFEX1dSSVRFKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGVtcHR5IHBhcmFtZXRlciBtYXAgb24gY2FsbCB3aXRoIG5vIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiQ1JFQVRFIChuOkxhYmVsIHtwcm9wOidzdHJpbmcnfSkgUkVUVVJOIG5cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudClcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0VxdWFsKHt9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHBsYW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gQ1JFQVRFIChuOkxhYmVsIHtwcm9wOntwcm9wfX0pIFJFVFVSTiBuXCI7XG4gICAgdmFyIHBhcmFtcyA9IHtwcm9wOiBcInN0cmluZ1wifTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnBsYW4uaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnQ3JlYXRlTm9kZScpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcHJvZmlsZSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUFJPRklMRSBNQVRDSCAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gblwiO1xuICAgIHZhciBwYXJhbXMgPSB7cHJvcDogXCJzdHJpbmdcIn07XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uXG4gICAgICAucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUGxhbigpKS50b0JlKHRydWUpOyAvL1doZW4gdGhlcmUncyBhIHByb2ZpbGUsIHRoZXJlJ3MgYSBwbGFuXG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUub3BlcmF0b3JUeXBlKS50b0JlKCdQcm9kdWNlUmVzdWx0cycpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuYXJndW1lbnRzLnJ1bnRpbWUpLnRvQmUoJ0lOVEVSUFJFVEVEJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5pZGVudGlmaWVyc1swXSkudG9CZSgnbicpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuY2hpbGRyZW5bMF0ub3BlcmF0b3JUeXBlKS50b0JlKCdGaWx0ZXInKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLnJvd3MpLnRvQmUoMCk7XG4gICAgICAgIC8vZXhwZWN0KHN1bS5wcm9maWxlLmRiSGl0cykudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgY3lwaGVyIG5vdGlmaWNhdGlvbnMgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gTUFUQ0ggKG4pLCAobSkgUkVUVVJOIG4sIG1cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLmNvZGUpLnRvQmUoXCJOZW8uQ2xpZW50Tm90aWZpY2F0aW9uLlN0YXRlbWVudC5DYXJ0ZXNpYW5Qcm9kdWN0V2FybmluZ1wiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnRpdGxlKS50b0JlKFwiVGhpcyBxdWVyeSBidWlsZHMgYSBjYXJ0ZXNpYW4gcHJvZHVjdCBiZXR3ZWVuIGRpc2Nvbm5lY3RlZCBwYXR0ZXJucy5cIik7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9uc1swXS5wb3NpdGlvbi5jb2x1bW4pLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHVzaW5nIHRoZSBzZXNzaW9uIHdoZW4gaGF2aW5nIGFuIG9wZW4gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy9UaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoXCJTdGF0ZW1lbnRzIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgb24gYSBcIlxuICAgICAgICAgICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCJcbiAgICAgICAgICArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBvcGVuaW5nIG11bHRpcGxlIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3Qoc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGxvdHMgb2YgZGF0YScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgc2Vzc2lvbi5ydW4oXCJVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgeCBDUkVBVEUgKDpBVFRSQUNUSU9OIHtwcm9wOiAncHJvcCd9KVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBSRVRVUk4gblwiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlID0gcmVjb3JkLmdldCgnbicpO1xuICAgICAgICAgICAgICAgIGV4cGVjdChub2RlLmxhYmVsc1swXSkudG9FcXVhbChcIkFUVFJBQ1RJT05cIik7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUucHJvcGVydGllcy5wcm9wKS50b0VxdWFsKFwicHJvcFwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcblxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIGxvbmcgcnVubmluZyBxdWVyeSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vZ2l2ZW4gYSBsb25nIHJ1bm5pbmcgcXVlcnlcbiAgICBzZXNzaW9uLnJ1bihcInVud2luZCByYW5nZSgxLDEwMDAwMDApIGFzIHggY3JlYXRlIChuIHtwcm9wOnh9KSBkZWxldGUgblwiKTtcblxuICAgIC8vd2FpdCBzb21lIHRpbWUgdGhhbiBjbG9zZSB0aGUgc2Vzc2lvbiBhbmQgcnVuXG4gICAgLy9hIG5ldyBxdWVyeVxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgdmFyIGFub3RoZXJTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBhbm90aGVyU2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIGFzIGFcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaWdub3JlKSB7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9LCAxNTAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG5pY2VseSBvbiB1bnBhY2thYmxlIHZhbHVlcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHVucGFja2FibGUgPSBmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9O1xuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUkVUVVJOIHtwYXJhbX1cIjtcbiAgICB2YXIgcGFyYW1zID0ge3BhcmFtOiB1bnBhY2thYmxlfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGlnbm9yZSkge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxufSk7XG5cblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCd0cmFuc2FjdGlvbicsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXIsIHNlc3Npb247XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBERVRBQ0ggREVMRVRFIG5cIikudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbW1pdCBzaW1wbGUgY2FzZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMilcIik7XG4gICAgdHguY29tbWl0KClcbiAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDEpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKVxuICAgICAgICAgICAgICAudG9CZSgxKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBpbnRlcmFjdGl2ZSBzZXNzaW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiUkVUVVJOICdmb28nIEFTIHJlc1wiKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIHR4LnJ1bihcIkNSRUFURSAoe25hbWU6IHtwYXJhbX19KVwiLCB7cGFyYW06IHJlc3VsdC5yZWNvcmRzWzBdLmdldCgncmVzJyl9KTtcbiAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChhIHtuYW1lOidmb28nfSkgUkVUVVJOIGNvdW50KGEpXCIpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KGEpJykudG9JbnQoKSkudG9CZSgxKTtcbiAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlcyB3aXRoIHN1YnNjcmliZScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlcyB3aXRoIGNhdGNoJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgb24gY29tbWl0JywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuXG4gICAgdHguY29tbWl0KClcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gY29tbWl0dGluZyBvbiBhIGZhaWxlZCBxdWVyeScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHguY29tbWl0KClcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSB3aGVuIGNvbW1pdHRpbmcgd2hlbiBhbm90aGVyIHN0YXRlbWVudCBmYWlscycsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIHJvbGxiYWNrcycsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuICAgIHR4LnJvbGxiYWNrKClcbiAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDEpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMCk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKVxuICAgICAgICAgICAgICAudG9CZSgwKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gY29tbWl0dGluZyBvbiBhIHJvbGxlZCBiYWNrIHF1ZXJ5JywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKVxuXG4gICAgdHguY29tbWl0KClcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcnVubmluZyBvbiBhIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKTtcblxuICAgIHR4LnJ1bihcIlJFVFVSTiA0MlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcnVubmluZyB3aGVuIGEgcHJldmlvdXMgc3RhdGVtZW50IGZhaWxlZCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHgucnVuKFwiUkVUVVJOIDQyXCIpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0eC5yb2xsYmFjaygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiB0cnlpbmcgdG8gcm9sbCBiYWNrIGEgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5yb2xsYmFjaygpO1xuXG4gICAgdHgucm9sbGJhY2soKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgnZmxvYXRpbmcgcG9pbnQgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAxLjAgJywgdGVzdFZhbCggMSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAwLjAgJywgdGVzdFZhbCggMC4wICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHByZXR0eSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMy40MDI4MjM1ZSszOCApICk7IC8vIE1heCAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggKSApOyAvLyBNYXggNjQtYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggMS40ZS00NSApICk7IC8vIE1pbiAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBzbWFsbCBmbG9hdCAnLCB0ZXN0VmFsKCA0LjllLTMyNCApICk7IC8vIE1pbiA2NC1iaXRcbn0pO1xuXG5kZXNjcmliZSgnaW50ZWdlciB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAwICcsIHRlc3RWYWwoIG5lbzRqLmludCgwKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIC0xICcsIHRlc3RWYWwoIG5lbzRqLmludCgtMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBsYXJnZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4ODAwMDAwMDAwMDAwMDAwMFwiKSApICk7XG59KTtcblxuZGVzY3JpYmUoJ2Jvb2xlYW4gdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCB0cnVlICcsICB0ZXN0VmFsKCB0cnVlICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZhbHNlICcsIHRlc3RWYWwoIGZhbHNlICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnc3RyaW5nIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgc3RyaW5nICcsICAgdGVzdFZhbCggXCJcIiApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzaW1wbGUgc3RyaW5nICcsICB0ZXN0VmFsKCBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYXdlc29tZSBzdHJpbmcgJywgdGVzdFZhbCggXCJBbGwgbWFrdCDDpXQgVGVuZ2lsLCB2w6VyIGJlZnJpYXJlLlwiICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IGxpc3RzICcsICAgdGVzdFZhbCggW10gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGxpc3RzICcsICAgdGVzdFZhbCggWyB1bmRlZmluZWQsIDQgXSwgWyBudWxsLCA0IF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgbGlzdHMgJywgICB0ZXN0VmFsKCBbIDEsMiwzIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYm9vbGVhbiBsaXN0cyAnLCB0ZXN0VmFsKCBbIHRydWUsIGZhbHNlIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3RyaW5nIGxpc3RzICcsICB0ZXN0VmFsKCBbIFwiXCIsIFwiaGVsbG8hXCIgXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBsaXN0IGxpc3RzICcsICAgIHRlc3RWYWwoIFsgW10sIFsxLDIsM10gXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBtYXAgbGlzdHMgJywgICAgIHRlc3RWYWwoIFsge30sIHthOjEyfSBdICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbWFwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgbWFwcyAnLCB0ZXN0VmFsKCB7fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBiYXNpYyBtYXBzICcsIHRlc3RWYWwoIHthOjEsIGI6e30sIGM6W10sIGQ6e2U6MX19ICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBtYXBzICcsIHRlc3RWYWwoIHtmb286IHVuZGVmaW5lZCwgYmFyOiBudWxsfSwge2JhcjogbnVsbH0gKSApO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIG5vZGVzICcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKG46VXNlciB7bmFtZTonTGlzYSd9KSBSRVRVUk4gbiwgaWQobilcIikudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgdmFyIG5vZGUgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ24nKTtcblxuICAgICAgICBleHBlY3QoIG5vZGUucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggbm9kZS5sYWJlbHMgKS50b0VxdWFsKCBbXCJVc2VyXCJdICk7XG4gICAgICAgIC8vIGV4cGVjdCggbm9kZS5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChuKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdyZWxhdGlvbnNoaXAgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcmVsYXRpb25zaGlwcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKCktW3I6VXNlciB7bmFtZTonTGlzYSd9XS0+KCkgUkVUVVJOIHIsIGlkKHIpXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciByZWwgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3InKTtcblxuICAgICAgICBleHBlY3QoIHJlbC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCByZWwudHlwZSApLnRvRXF1YWwoIFwiVXNlclwiICk7XG4gICAgICAgIC8vIGV4cGVjdCggcmVsLmlkZW50aXR5ICkudG9FcXVhbCggcnNbMF1bJ2lkKHIpJ10gKTsgLy8gVE9ET1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BhdGggdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcGF0aHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIHA9KDpVc2VyIHsgbmFtZTonTGlzYScgfSk8LVtyOktOT1dTIHtzaW5jZToxMjM0LjB9XS0oKSBSRVRVUk4gcFwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBwYXRoID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdwJyk7XG5cbiAgICAgICAgZXhwZWN0KCBwYXRoLnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIHBhdGguZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcblxuICAgICAgICAvLyBBY2Nlc3NpbmcgcGF0aCBzZWdtZW50c1xuICAgICAgICBleHBlY3QoIHBhdGgubGVuZ3RoICkudG9FcXVhbCggMSApO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgc2VnbWVudCA9IHBhdGguc2VnbWVudHNbaV07XG4gICAgICAgICAgLy8gVGhlIGRpcmVjdGlvbiBvZiB0aGUgcGF0aCBzZWdtZW50IGdvZXMgZnJvbSBsaXNhIHRvIHRoZSBibGFuayBub2RlXG4gICAgICAgICAgZXhwZWN0KCBzZWdtZW50LnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5lbmQucHJvcGVydGllcyApLnRvRXF1YWwoIHsgfSApO1xuICAgICAgICAgIC8vIFdoaWNoIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSByZWxhdGlvbnNoaXAgaXRzZWxmIVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5yZWxhdGlvbnNoaXAucHJvcGVydGllcyApLnRvRXF1YWwoIHsgc2luY2U6IDEyMzQgfSApO1xuICAgICAgICB9XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHRlc3RWYWwoIHZhbCwgZXhwZWN0ZWQgKSB7XG4gIHJldHVybiBmdW5jdGlvbiggZG9uZSApIHtcbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4ge3ZhbH0gYXMgdlwiLCB7dmFsOiB2YWx9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG4gICAgICAgIGV4cGVjdCggcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCd2JykgKS50b0VxdWFsKCBleHBlY3RlZCB8fCB2YWwgKTtcbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmxvZyhlcnIpOyB9KTtcbiAgfVxufVxuIl19 diff --git a/lib/v1/driver.js b/lib/v1/driver.js index 2713fdea2..43c653cbc 100644 --- a/lib/v1/driver.js +++ b/lib/v1/driver.js @@ -213,6 +213,13 @@ var _ConnectionStreamObserver = (function (_StreamObserver) { this._hasFailed = true; } } + }, { + key: 'onCompleted', + value: function onCompleted(message) { + if (this._driver.onCompleted) { + this._driver.onCompleted(message); + } + } }]); return _ConnectionStreamObserver; diff --git a/lib/v1/internal/ch-node.js b/lib/v1/internal/ch-node.js index 7550c2925..ad88da303 100644 --- a/lib/v1/internal/ch-node.js +++ b/lib/v1/internal/ch-node.js @@ -62,16 +62,35 @@ function userHome() { return process.env[process.platform == 'win32' ? 'USERPROFILE' : 'HOME']; } +function mkFullPath(pathToCreate) { + try { + _fs2['default'].mkdirSync(pathToCreate); + } catch (e) { + if (e.code === 'ENOENT') { + // Create parent dir + mkFullPath(_path2['default'].dirname(pathToCreate)); + // And now try again + mkFullPath(pathToCreate); + return; + } + if (e.code === 'EEXIST') { + return; + } + throw e; + } +} + function loadFingerprint(serverId, knownHostsPath, cb) { - if (!_fs2['default'].existsSync(knownHostsPath)) { - cb(null); - return; + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (e) { + return cb(null); } var found = false; require('readline').createInterface({ input: _fs2['default'].createReadStream(knownHostsPath) }).on('line', function (line) { - if (line.startsWith(serverId)) { + if (!found && line.startsWith(serverId)) { found = true; cb(line.split(" ")[1]); } @@ -82,11 +101,31 @@ function loadFingerprint(serverId, knownHostsPath, cb) { }); } -function storeFingerprint(serverId, knownHostsPath, fingerprint) { +var _lockFingerprintFromAppending = {}; +function storeFingerprint(serverId, knownHostsPath, fingerprint, cb) { + // we check if the serverId has been appended + if (!!_lockFingerprintFromAppending[serverId]) { + // if it has, we ignore it + return cb(null); + } + + // we make the line as appended + // ( 1 is more efficient to store than true because true is an oddball ) + _lockFingerprintFromAppending[serverId] = 1; + + // If file doesn't exist, create full path to it + try { + _fs2['default'].accessSync(knownHostsPath); + } catch (_) { + mkFullPath(_path2['default'].dirname(knownHostsPath)); + } + _fs2['default'].appendFile(knownHostsPath, serverId + " " + fingerprint + _os.EOL, "utf8", function (err) { + delete _lockFingerprintFromAppending[serverId]; if (err) { console.log(err); } + return cb(err); }); } @@ -140,8 +179,12 @@ var TrustStrategy = { if (knownFingerprint === serverFingerprint) { onSuccess(); } else if (knownFingerprint == null) { - storeFingerprint(serverId, knownHostsPath, serverFingerprint); - onSuccess(); + storeFingerprint(serverId, knownHostsPath, serverFingerprint, function (err) { + if (err) { + return onFailure(err); + } + return onSuccess(); + }); } else { onFailure((0, _error.newError)("Database encryption certificate has changed, and no longer " + "matches the certificate stored for " + serverId + " in `" + knownHostsPath + "`. As a security precaution, this driver will not automatically trust the new " + "certificate, because doing so would allow an attacker to pretend to be the Neo4j " + "instance we want to connect to. The certificate provided by the server looks like: " + serverCert + ". If you trust that this certificate is valid, simply remove the line " + "starting with " + serverId + " in `" + knownHostsPath + "`, and the driver will " + "update the file with the new certificate. You can configure which file the driver " + "should use to store this information by setting `knownHosts` to another path in " + "your driver configuration - and you can disable encryption there as well using " + "`encrypted:false`.")); } diff --git a/lib/v1/internal/connector.js b/lib/v1/internal/connector.js index d92c650b0..f63a5e49d 100644 --- a/lib/v1/internal/connector.js +++ b/lib/v1/internal/connector.js @@ -193,6 +193,7 @@ var _mappers = { */ var Connection = (function () { + /** * @constructor * @param channel - channel with a 'write' function and a 'onmessage' @@ -370,17 +371,26 @@ var Connection = (function () { }, { key: "initialize", value: function initialize(clientName, token, observer) { + var _this2 = this; + this._queueObserver(observer); - this._packer.packStruct(INIT, [clientName, token]); + this._packer.packStruct(INIT, [this._packable(clientName), this._packable(token)], function (err) { + return _this2._handleFatalError(err); + }); this._chunker.messageBoundary(); + this.sync(); } /** Queue a RUN-message to be sent to the database */ }, { key: "run", value: function run(statement, params, observer) { + var _this3 = this; + this._queueObserver(observer); - this._packer.packStruct(RUN, [statement, params]); + this._packer.packStruct(RUN, [this._packable(statement), this._packable(params)], function (err) { + return _this3._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -388,8 +398,12 @@ var Connection = (function () { }, { key: "pullAll", value: function pullAll(observer) { + var _this4 = this; + this._queueObserver(observer); - this._packer.packStruct(PULL_ALL); + this._packer.packStruct(PULL_ALL, [], function (err) { + return _this4._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -397,8 +411,12 @@ var Connection = (function () { }, { key: "discardAll", value: function discardAll(observer) { + var _this5 = this; + this._queueObserver(observer); - this._packer.packStruct(DISCARD_ALL); + this._packer.packStruct(DISCARD_ALL, [], function (err) { + return _this5._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -406,6 +424,8 @@ var Connection = (function () { }, { key: "reset", value: function reset(observer) { + var _this6 = this; + this._isHandlingFailure = true; var self = this; var wrappedObs = { @@ -419,7 +439,9 @@ var Connection = (function () { } }; this._queueObserver(wrappedObs); - this._packer.packStruct(RESET); + this._packer.packStruct(RESET, [], function (err) { + return _this6._handleFatalError(err); + }); this._chunker.messageBoundary(); } @@ -427,8 +449,12 @@ var Connection = (function () { }, { key: "_ackFailure", value: function _ackFailure(observer) { + var _this7 = this; + this._queueObserver(observer); - this._packer.packStruct(ACK_FAILURE); + this._packer.packStruct(ACK_FAILURE, [], function (err) { + return _this7._handleFatalError(err); + }); this._chunker.messageBoundary(); } }, { @@ -477,6 +503,15 @@ var Connection = (function () { value: function close(cb) { this._ch.close(cb); } + }, { + key: "_packable", + value: function _packable(value) { + var _this8 = this; + + return this._packer.packable(value, function (err) { + return _this8._handleFatalError(err); + }); + } }]); return Connection; diff --git a/lib/v1/internal/packstream.js b/lib/v1/internal/packstream.js index e93fa5ad1..806ebab5f 100644 --- a/lib/v1/internal/packstream.js +++ b/lib/v1/internal/packstream.js @@ -117,57 +117,98 @@ var Packer = (function () { * @access private */ + /** + * Creates a packable function out of the provided value + * @param x the value to pack + * @param onError callback for the case when value cannot be packed + * @returns Function + */ + _createClass(Packer, [{ - key: "pack", - value: function pack(x) { + key: "packable", + value: function packable(x, onError) { + var _this = this; + if (x === null) { - this._ch.writeUInt8(NULL); + return function () { + return _this._ch.writeUInt8(NULL); + }; } else if (x === true) { - this._ch.writeUInt8(TRUE); + return function () { + return _this._ch.writeUInt8(TRUE); + }; } else if (x === false) { - this._ch.writeUInt8(FALSE); + return function () { + return _this._ch.writeUInt8(FALSE); + }; } else if (typeof x == "number") { - this.packFloat(x); + return function () { + return _this.packFloat(x); + }; } else if (typeof x == "string") { - this.packString(x); + return function () { + return _this.packString(x, onError); + }; } else if (x instanceof _integer.Integer) { - this.packInteger(x); + return function () { + return _this.packInteger(x); + }; } else if (x instanceof Array) { - this.packListHeader(x.length); - for (var i = 0; i < x.length; i++) { - this.pack(x[i] === undefined ? null : x[i]); - } + return function () { + _this.packListHeader(x.length, onError); + for (var _i = 0; _i < x.length; _i++) { + _this.packable(x[_i] === undefined ? null : x[_i], onError)(); + } + }; } else if (x instanceof Structure) { - this.packStruct(x.signature, x.fields); + var packableFields = []; + for (var i = 0; i < x.fields.length; i++) { + packableFields[i] = this.packable(x.fields[i], onError); + } + return function () { + return _this.packStruct(x.signature, packableFields); + }; } else if (typeof x == "object") { - var keys = Object.keys(x); - - var count = 0; - for (var i = 0; i < keys.length; i++) { - if (x[keys[i]] !== undefined) { - count++; + return function () { + var keys = Object.keys(x); + + var count = 0; + for (var _i2 = 0; _i2 < keys.length; _i2++) { + if (x[keys[_i2]] !== undefined) { + count++; + } } - } - - this.packMapHeader(count); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (x[key] !== undefined) { - this.packString(key); - this.pack(x[key]); + _this.packMapHeader(count, onError); + for (var _i3 = 0; _i3 < keys.length; _i3++) { + var key = keys[_i3]; + if (x[key] !== undefined) { + _this.packString(key); + _this.packable(x[key], onError)(); + } } - } + }; } else { - throw (0, _error.newError)("Cannot pack this value: " + x); + if (onError) { + onError((0, _error.newError)("Cannot pack this value: " + x)); + } + return function () { + return undefined; + }; } } + + /** + * Packs a struct + * @param signature the signature of the struct + * @param packableFields the fields of the struct, make sure you call `packable on all fields` + */ }, { key: "packStruct", - value: function packStruct(signature, fields) { - fields = fields || []; - this.packStructHeader(fields.length, signature); - for (var i = 0; i < fields.length; i++) { - this.pack(fields[i]); + value: function packStruct(signature, packableFields, onError) { + packableFields = packableFields || []; + this.packStructHeader(packableFields.length, signature, onError); + for (var i = 0; i < packableFields.length; i++) { + packableFields[i](); } } }, { @@ -201,7 +242,7 @@ var Packer = (function () { } }, { key: "packString", - value: function packString(x) { + value: function packString(x, onError) { var bytes = _utf82["default"].encode(x); var size = bytes.length; if (size < 0x10) { @@ -224,12 +265,12 @@ var Packer = (function () { this._ch.writeUInt8(size % 256); this._ch.writeBytes(bytes); } else { - throw (0, _error.newError)("UTF-8 strings of size " + size + " are not supported"); + onError((0, _error.newError)("UTF-8 strings of size " + size + " are not supported")); } } }, { key: "packListHeader", - value: function packListHeader(size) { + value: function packListHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_LIST | size); } else if (size < 0x100) { @@ -246,12 +287,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Lists of size " + size + " are not supported"); + onError((0, _error.newError)("Lists of size " + size + " are not supported")); } } }, { key: "packMapHeader", - value: function packMapHeader(size) { + value: function packMapHeader(size, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -268,12 +309,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Maps of size " + size + " are not supported"); + onError((0, _error.newError)("Maps of size " + size + " are not supported")); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature) { + value: function packStructHeader(size, signature, onError) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -286,7 +327,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - throw (0, _error.newError)("Structures of size " + size + " are not supported"); + onError((0, _error.newError)("Structures of size " + size + " are not supported")); } } }]); diff --git a/src/v1/driver.js b/src/v1/driver.js index f9dc16671..eda9e7c29 100644 --- a/src/v1/driver.js +++ b/src/v1/driver.js @@ -160,6 +160,11 @@ class _ConnectionStreamObserver extends StreamObserver { this._hasFailed = true; } } + onCompleted(message) { + if(this._driver.onCompleted) { + this._driver.onCompleted(message); + } + } } let USER_AGENT = "neo4j-javascript/" + VERSION; diff --git a/test/v1/driver.test.js b/test/v1/driver.test.js index a14b22d91..24889beeb 100644 --- a/test/v1/driver.test.js +++ b/test/v1/driver.test.js @@ -62,4 +62,17 @@ describe('driver', function() { // When driver.session(); }); + + it('should indicate success early on correct credentials', function(done) { + // Given + var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); + + // Expect + driver.onCompleted = function (meta) { + done(); + }; + + // When + driver.session(); + }); }); From acfe28e2b7e713c3b24945afa9a8eb329baeb034 Mon Sep 17 00:00:00 2001 From: Eve Bright Date: Wed, 31 Aug 2016 14:17:20 +0100 Subject: [PATCH 2/2] Removed transpiled files from pr --- lib/browser/neo4j-web.js | 5346 +++++++++++++++----------------- lib/browser/neo4j-web.min.js | 28 +- lib/browser/neo4j-web.test.js | 5495 +++++++++++++++------------------ lib/v1/driver.js | 7 - lib/v1/internal/ch-node.js | 57 +- lib/v1/internal/connector.js | 47 +- lib/v1/internal/packstream.js | 125 +- 7 files changed, 5097 insertions(+), 6008 deletions(-) diff --git a/lib/browser/neo4j-web.js b/lib/browser/neo4j-web.js index f028fc8f8..c3b966417 100644 --- a/lib/browser/neo4j-web.js +++ b/lib/browser/neo4j-web.js @@ -72,7 +72,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":1,"inherits":93,"vm":137}],3:[function(require,module,exports){ +},{"../asn1":1,"inherits":92,"vm":135}],3:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -190,7 +190,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":4,"buffer":46,"inherits":93}],4:[function(require,module,exports){ +},{"../base":4,"buffer":46,"inherits":92}],4:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -264,7 +264,7 @@ module.exports = Node; var stateProps = [ 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit', 'contains' + 'implicit' ]; Node.prototype.clone = function clone() { @@ -469,17 +469,17 @@ Node.prototype.contains = function contains(item) { // Decoding // -Node.prototype._decode = function decode(input, options) { +Node.prototype._decode = function decode(input) { var state = this._baseState; // Decode root node if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input, options)); + return input.wrapResult(state.children[0]._decode(input)); var result = state['default']; var present = true; - var prevKey = null; + var prevKey; if (state.key !== null) prevKey = input.enterKey(state.key); @@ -498,9 +498,9 @@ Node.prototype._decode = function decode(input, options) { var save = input.save(); try { if (state.choice === null) - this._decodeGeneric(state.tag, input, options); + this._decodeGeneric(state.tag, input); else - this._decodeChoice(input, options); + this._decodeChoice(input); present = true; } catch (e) { present = false; @@ -528,8 +528,6 @@ Node.prototype._decode = function decode(input, options) { input = explicit; } - var start = input.offset; - // Unwrap implicit and normal values if (state.use === null && state.choice === null) { if (state.any) @@ -548,19 +546,13 @@ Node.prototype._decode = function decode(input, options) { input = body; } - if (options && options.track && state.tag !== null) - options.track(input.path(), start, input.length, 'tagged'); - - if (options && options.track && state.tag !== null) - options.track(input.path(), input.offset, input.length, 'content'); - // Select proper method for tag if (state.any) result = result; else if (state.choice === null) - result = this._decodeGeneric(state.tag, input, options); + result = this._decodeGeneric(state.tag, input); else - result = this._decodeChoice(input, options); + result = this._decodeChoice(input); if (input.isError(result)) return result; @@ -570,15 +562,14 @@ Node.prototype._decode = function decode(input, options) { state.children.forEach(function decodeChildren(child) { // NOTE: We are ignoring errors here, to let parser continue with other // parts of encoded data - child._decode(input, options); + child._decode(input); }); } // Decode contained/encoded by schema, only in bit or octet strings if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj) - ._decode(data, options); + result = this._getUse(state.contains, input._reporterState.obj)._decode(data); } } @@ -589,40 +580,35 @@ Node.prototype._decode = function decode(input, options) { // Set key if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result); - else if (prevKey !== null) - input.exitKey(prevKey); return result; }; -Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { +Node.prototype._decodeGeneric = function decodeGeneric(tag, input) { var state = this._baseState; if (tag === 'seq' || tag === 'set') return null; if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0], options); + return this._decodeList(input, tag, state.args[0]); else if (/str$/.test(tag)) - return this._decodeStr(input, tag, options); + return this._decodeStr(input, tag); else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1], options); + return this._decodeObjid(input, state.args[0], state.args[1]); else if (tag === 'objid') - return this._decodeObjid(input, null, null, options); + return this._decodeObjid(input, null, null); else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag, options); + return this._decodeTime(input, tag); else if (tag === 'null_') - return this._decodeNull(input, options); + return this._decodeNull(input); else if (tag === 'bool') - return this._decodeBool(input, options); + return this._decodeBool(input); else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0], options); - - if (state.use !== null) { - return this._getUse(state.use, input._reporterState.obj) - ._decode(input, options); - } else { + return this._decodeInt(input, state.args && state.args[0]); + else if (state.use !== null) + return this._getUse(state.use, input._reporterState.obj)._decode(input); + else return input.error('unknown tag: ' + tag); - } }; Node.prototype._getUse = function _getUse(entity, obj) { @@ -639,7 +625,7 @@ Node.prototype._getUse = function _getUse(entity, obj) { return state.useDecoder; }; -Node.prototype._decodeChoice = function decodeChoice(input, options) { +Node.prototype._decodeChoice = function decodeChoice(input) { var state = this._baseState; var result = null; var match = false; @@ -648,7 +634,7 @@ Node.prototype._decodeChoice = function decodeChoice(input, options) { var save = input.save(); var node = state.choice[key]; try { - var value = node._decode(input, options); + var value = node._decode(input); if (input.isError(value)) return false; @@ -863,24 +849,14 @@ Reporter.prototype.enterKey = function enterKey(key) { return this._reporterState.path.push(key); }; -Reporter.prototype.exitKey = function exitKey(index) { - var state = this._reporterState; - - state.path = state.path.slice(0, index - 1); -}; - Reporter.prototype.leaveKey = function leaveKey(index, key, value) { var state = this._reporterState; - this.exitKey(index); + state.path = state.path.slice(0, index - 1); if (state.obj !== null) state.obj[key] = value; }; -Reporter.prototype.path = function path() { - return this._reporterState.path.join('/'); -}; - Reporter.prototype.enterObject = function enterObject() { var state = this._reporterState; @@ -952,7 +928,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":93}],7:[function(require,module,exports){ +},{"inherits":92}],7:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -1128,15 +1104,14 @@ DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { } }; -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, - options) { +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder) { var result = []; while (!buffer.isEmpty()) { var possibleEnd = this._peekTag(buffer, 'end'); if (buffer.isError(possibleEnd)) return possibleEnd; - var res = decoder.decode(buffer, 'der', options); + var res = decoder.decode(buffer, 'der'); if (buffer.isError(res) && possibleEnd) break; result.push(res); @@ -1341,7 +1316,7 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":1,"inherits":93}],10:[function(require,module,exports){ +},{"../../asn1":1,"inherits":92}],10:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); @@ -1398,7 +1373,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":9,"buffer":46,"inherits":93}],12:[function(require,module,exports){ +},{"./der":9,"buffer":46,"inherits":92}],12:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -1693,7 +1668,7 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":1,"buffer":46,"inherits":93}],13:[function(require,module,exports){ +},{"../../asn1":1,"buffer":46,"inherits":92}],13:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); @@ -1722,7 +1697,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":12,"inherits":93}],15:[function(require,module,exports){ +},{"./der":12,"inherits":92}],15:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { @@ -1906,12 +1881,8 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; } BN.isBN = function isBN (num) { - if (num instanceof BN) { - return true; - } - return num !== null && typeof num === 'object' && - num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + num.constructor.name === 'BN' && Array.isArray(num.words); }; BN.max = function max (left, right) { @@ -3952,10 +3923,6 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; assert(this.negative === 0, 'imaskn works only with positive numbers'); - if (this.length <= s) { - return this; - } - if (r !== 0) { s++; } @@ -5620,7 +5587,7 @@ function xorTest (a, b) { } }).call(this,require("buffer").Buffer) -},{"./aes":19,"./ghash":24,"buffer":46,"buffer-xor":45,"cipher-base":48,"inherits":93}],21:[function(require,module,exports){ +},{"./aes":19,"./ghash":24,"buffer":46,"buffer-xor":45,"cipher-base":47,"inherits":92}],21:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -5774,7 +5741,7 @@ exports.createDecipher = createDecipher exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":48,"evp_bytestokey":84,"inherits":93}],23:[function(require,module,exports){ +},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":47,"evp_bytestokey":83,"inherits":92}],23:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -5900,7 +5867,7 @@ exports.createCipheriv = createCipheriv exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":48,"evp_bytestokey":84,"inherits":93}],24:[function(require,module,exports){ +},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,"buffer":46,"cipher-base":47,"evp_bytestokey":83,"inherits":92}],24:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -6378,7 +6345,7 @@ StreamCipher.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"./aes":19,"buffer":46,"cipher-base":48,"inherits":93}],34:[function(require,module,exports){ +},{"./aes":19,"buffer":46,"cipher-base":47,"inherits":92}],34:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -6453,7 +6420,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":21,"browserify-aes/modes":25,"browserify-des":35,"browserify-des/modes":36,"evp_bytestokey":84}],35:[function(require,module,exports){ +},{"browserify-aes/browser":21,"browserify-aes/modes":25,"browserify-des":35,"browserify-des/modes":36,"evp_bytestokey":83}],35:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -6500,7 +6467,7 @@ DES.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"cipher-base":48,"des.js":56,"inherits":93}],36:[function(require,module,exports){ +},{"buffer":46,"cipher-base":47,"des.js":55,"inherits":92}],36:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -6753,7 +6720,7 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"./algos":38,"./sign":41,"./verify":42,"buffer":46,"create-hash":51,"inherits":93,"stream":122}],40:[function(require,module,exports){ +},{"./algos":38,"./sign":41,"./verify":42,"buffer":46,"create-hash":50,"inherits":92,"stream":132}],40:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -6956,7 +6923,7 @@ module.exports.getKey = getKey module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":40,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hmac":54,"elliptic":66,"parse-asn1":101}],42:[function(require,module,exports){ +},{"./curves":40,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hmac":53,"elliptic":65,"parse-asn1":101}],42:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -7063,7 +7030,7 @@ function checkValue (b, q) { module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":40,"bn.js":16,"buffer":46,"elliptic":66,"parse-asn1":101}],43:[function(require,module,exports){ +},{"./curves":40,"bn.js":16,"buffer":46,"elliptic":65,"parse-asn1":101}],43:[function(require,module,exports){ arguments[4][18][0].apply(exports,arguments) },{"dup":18}],44:[function(require,module,exports){ (function (global){ @@ -8743,14 +8710,7 @@ function blitBuffer (src, dst, offset, length) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":15,"ieee754":91,"isarray":47}],47:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],48:[function(require,module,exports){ +},{"base64-js":15,"ieee754":90,"isarray":94}],47:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -8844,7 +8804,7 @@ CipherBase.prototype._toString = function (value, enc, final) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"inherits":93,"stream":122,"string_decoder":135}],49:[function(require,module,exports){ +},{"buffer":46,"inherits":92,"stream":132,"string_decoder":133}],48:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -8955,7 +8915,7 @@ function objectToString(o) { } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":94}],50:[function(require,module,exports){ +},{"../../is-buffer/index.js":93}],49:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -9081,7 +9041,7 @@ function formatReturnValue(bn, enc, len) { } }).call(this,require("buffer").Buffer) -},{"bn.js":16,"buffer":46,"elliptic":66}],51:[function(require,module,exports){ +},{"bn.js":16,"buffer":46,"elliptic":65}],50:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -9137,7 +9097,7 @@ module.exports = function createHash (alg) { } }).call(this,require("buffer").Buffer) -},{"./md5":53,"buffer":46,"cipher-base":48,"inherits":93,"ripemd160":113,"sha.js":115}],52:[function(require,module,exports){ +},{"./md5":52,"buffer":46,"cipher-base":47,"inherits":92,"ripemd160":123,"sha.js":125}],51:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -9174,7 +9134,7 @@ function hash(buf, fn, hashSize, bigEndian) { } exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":46}],53:[function(require,module,exports){ +},{"buffer":46}],52:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -9331,7 +9291,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":52}],54:[function(require,module,exports){ +},{"./helpers":51}],53:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -9403,7 +9363,7 @@ module.exports = function createHmac(alg, key) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash/browser":51,"inherits":93,"stream":122}],55:[function(require,module,exports){ +},{"buffer":46,"create-hash/browser":50,"inherits":92,"stream":132}],54:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -9482,7 +9442,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":34,"browserify-sign":39,"browserify-sign/algos":38,"create-ecdh":50,"create-hash":51,"create-hmac":54,"diffie-hellman":62,"pbkdf2":103,"public-encrypt":106,"randombytes":112}],56:[function(require,module,exports){ +},{"browserify-cipher":34,"browserify-sign":39,"browserify-sign/algos":38,"create-ecdh":49,"create-hash":50,"create-hmac":53,"diffie-hellman":61,"pbkdf2":103,"public-encrypt":106,"randombytes":112}],55:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -9491,7 +9451,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":57,"./des/cipher":58,"./des/des":59,"./des/ede":60,"./des/utils":61}],57:[function(require,module,exports){ +},{"./des/cbc":56,"./des/cipher":57,"./des/des":58,"./des/ede":59,"./des/utils":60}],56:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9558,7 +9518,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":93,"minimalistic-assert":96}],58:[function(require,module,exports){ +},{"inherits":92,"minimalistic-assert":96}],57:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9701,7 +9661,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":96}],59:[function(require,module,exports){ +},{"minimalistic-assert":96}],58:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9846,7 +9806,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":56,"inherits":93,"minimalistic-assert":96}],60:[function(require,module,exports){ +},{"../des":55,"inherits":92,"minimalistic-assert":96}],59:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -9903,7 +9863,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":56,"inherits":93,"minimalistic-assert":96}],61:[function(require,module,exports){ +},{"../des":55,"inherits":92,"minimalistic-assert":96}],60:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -10161,7 +10121,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],62:[function(require,module,exports){ +},{}],61:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -10207,7 +10167,7 @@ exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffi exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":63,"./lib/generatePrime":64,"./lib/primes.json":65,"buffer":46}],63:[function(require,module,exports){ +},{"./lib/dh":62,"./lib/generatePrime":63,"./lib/primes.json":64,"buffer":46}],62:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -10375,7 +10335,7 @@ function formatReturnValue(bn, enc) { } }).call(this,require("buffer").Buffer) -},{"./generatePrime":64,"bn.js":16,"buffer":46,"miller-rabin":95,"randombytes":112}],64:[function(require,module,exports){ +},{"./generatePrime":63,"bn.js":16,"buffer":46,"miller-rabin":95,"randombytes":112}],63:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -10482,7 +10442,7 @@ function findPrime(bits, gen) { } -},{"bn.js":16,"miller-rabin":95,"randombytes":112}],65:[function(require,module,exports){ +},{"bn.js":16,"miller-rabin":95,"randombytes":112}],64:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -10517,7 +10477,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],66:[function(require,module,exports){ +},{}],65:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -10533,7 +10493,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":82,"./elliptic/curve":69,"./elliptic/curves":72,"./elliptic/ec":73,"./elliptic/eddsa":76,"./elliptic/hmac-drbg":79,"./elliptic/utils":81,"brorand":17}],67:[function(require,module,exports){ +},{"../package.json":81,"./elliptic/curve":68,"./elliptic/curves":71,"./elliptic/ec":72,"./elliptic/eddsa":75,"./elliptic/hmac-drbg":78,"./elliptic/utils":80,"brorand":17}],66:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -10910,7 +10870,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":66,"bn.js":16}],68:[function(require,module,exports){ +},{"../../elliptic":65,"bn.js":16}],67:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -11345,7 +11305,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],69:[function(require,module,exports){ +},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],68:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -11355,7 +11315,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":67,"./edwards":68,"./mont":70,"./short":71}],70:[function(require,module,exports){ +},{"./base":66,"./edwards":67,"./mont":69,"./short":70}],69:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -11537,7 +11497,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],71:[function(require,module,exports){ +},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],70:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -12477,7 +12437,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":66,"../curve":69,"bn.js":16,"inherits":93}],72:[function(require,module,exports){ +},{"../../elliptic":65,"../curve":68,"bn.js":16,"inherits":92}],71:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -12684,7 +12644,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":66,"./precomputed/secp256k1":80,"hash.js":85}],73:[function(require,module,exports){ +},{"../elliptic":65,"./precomputed/secp256k1":79,"hash.js":84}],72:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -12922,7 +12882,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":66,"./key":74,"./signature":75,"bn.js":16}],74:[function(require,module,exports){ +},{"../../elliptic":65,"./key":73,"./signature":74,"bn.js":16}],73:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -13031,7 +12991,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"bn.js":16}],75:[function(require,module,exports){ +},{"bn.js":16}],74:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -13168,7 +13128,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":66,"bn.js":16}],76:[function(require,module,exports){ +},{"../../elliptic":65,"bn.js":16}],75:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -13288,7 +13248,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":66,"./key":77,"./signature":78,"hash.js":85}],77:[function(require,module,exports){ +},{"../../elliptic":65,"./key":76,"./signature":77,"hash.js":84}],76:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -13386,7 +13346,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":66}],78:[function(require,module,exports){ +},{"../../elliptic":65}],77:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -13454,7 +13414,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":66,"bn.js":16}],79:[function(require,module,exports){ +},{"../../elliptic":65,"bn.js":16}],78:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -13570,7 +13530,7 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { return utils.encode(res, enc); }; -},{"../elliptic":66,"hash.js":85}],80:[function(require,module,exports){ +},{"../elliptic":65,"hash.js":84}],79:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -14352,7 +14312,7 @@ module.exports = { } }; -},{}],81:[function(require,module,exports){ +},{}],80:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -14526,12 +14486,19 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":16}],82:[function(require,module,exports){ +},{"bn.js":16}],81:[function(require,module,exports){ module.exports={ "_args": [ [ - "elliptic@^6.0.0", - "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign" + { + "name": "elliptic", + "raw": "elliptic@^6.0.0", + "rawSpec": "^6.0.0", + "scope": null, + "spec": ">=6.0.0 <7.0.0", + "type": "range" + }, + "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign" ] ], "_from": "elliptic@>=6.0.0 <7.0.0", @@ -14562,11 +14529,11 @@ module.exports={ "/browserify-sign", "/create-ecdh" ], - "_resolved": "http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", + "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", "_shasum": "17781f2109ab0ec686b146bdcff5d2e8c6aeceda", "_shrinkwrap": null, "_spec": "elliptic@^6.0.0", - "_where": "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign", + "_where": "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign", "author": { "email": "fedor@indutny.com", "name": "Fedor Indutny" @@ -14638,7 +14605,7 @@ module.exports={ "version": "6.3.1" } -},{}],83:[function(require,module,exports){ +},{}],82:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -14941,7 +14908,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],84:[function(require,module,exports){ +},{}],83:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -15013,7 +14980,7 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash/md5":53}],85:[function(require,module,exports){ +},{"buffer":46,"create-hash/md5":52}],84:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -15030,7 +14997,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":86,"./hash/hmac":87,"./hash/ripemd":88,"./hash/sha":89,"./hash/utils":90}],86:[function(require,module,exports){ +},{"./hash/common":85,"./hash/hmac":86,"./hash/ripemd":87,"./hash/sha":88,"./hash/utils":89}],85:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -15123,7 +15090,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":85}],87:[function(require,module,exports){ +},{"../hash":84}],86:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -15173,7 +15140,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":85}],88:[function(require,module,exports){ +},{"../hash":84}],87:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -15319,7 +15286,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":85}],89:[function(require,module,exports){ +},{"../hash":84}],88:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -15885,7 +15852,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":85}],90:[function(require,module,exports){ +},{"../hash":84}],89:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -16144,7 +16111,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":93}],91:[function(require,module,exports){ +},{"inherits":92}],90:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -16230,7 +16197,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],92:[function(require,module,exports){ +},{}],91:[function(require,module,exports){ var indexOf = [].indexOf; @@ -16241,7 +16208,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],93:[function(require,module,exports){ +},{}],92:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -16266,28 +16233,31 @@ if (typeof Object.create === 'function') { } } -},{}],94:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer +},{}],93:[function(require,module,exports){ +/** + * Determine if an object is Buffer * - * @author Feross Aboukhadijeh - * @license MIT + * Author: Feross Aboukhadijeh + * License: MIT + * + * `npm install is-buffer` */ -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) + return !!(obj != null && + (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor) + (obj.constructor && + typeof obj.constructor.isBuffer === 'function' && + obj.constructor.isBuffer(obj)) + )) } -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} +},{}],94:[function(require,module,exports){ +var toString = {}.toString; -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; },{}],95:[function(require,module,exports){ var bn = require('bn.js'); @@ -16631,7 +16601,7 @@ module.exports = function (okey, password) { } }).call(this,require("buffer").Buffer) -},{"browserify-aes":21,"buffer":46,"evp_bytestokey":84}],101:[function(require,module,exports){ +},{"browserify-aes":21,"buffer":46,"evp_bytestokey":83}],101:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -17048,7 +17018,7 @@ function pbkdf2Sync (password, salt, iterations, keylen, digest) { } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hmac":54}],104:[function(require,module,exports){ +},{"buffer":46,"create-hmac":53}],104:[function(require,module,exports){ (function (process){ 'use strict'; @@ -17097,6 +17067,7 @@ function nextTick(fn, arg1, arg2, arg3) { }).call(this,require('_process')) },{"_process":105}],105:[function(require,module,exports){ // shim for using process in browser + var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it @@ -17108,63 +17079,21 @@ var cachedSetTimeout; var cachedClearTimeout; (function () { - try { - cachedSetTimeout = setTimeout; - } catch (e) { - cachedSetTimeout = function () { - throw new Error('setTimeout is not defined'); - } + try { + cachedSetTimeout = setTimeout; + } catch (e) { + cachedSetTimeout = function () { + throw new Error('setTimeout is not defined'); } - try { - cachedClearTimeout = clearTimeout; - } catch (e) { - cachedClearTimeout = function () { - throw new Error('clearTimeout is not defined'); - } + } + try { + cachedClearTimeout = clearTimeout; + } catch (e) { + cachedClearTimeout = function () { + throw new Error('clearTimeout is not defined'); } + } } ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} var queue = []; var draining = false; var currentQueue; @@ -17189,7 +17118,7 @@ function drainQueue() { if (draining) { return; } - var timeout = runTimeout(cleanUpNextTick); + var timeout = cachedSetTimeout(cleanUpNextTick); draining = true; var len = queue.length; @@ -17206,7 +17135,7 @@ function drainQueue() { } currentQueue = null; draining = false; - runClearTimeout(timeout); + cachedClearTimeout(timeout); } process.nextTick = function (fun) { @@ -17218,7 +17147,7 @@ process.nextTick = function (fun) { } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { - runTimeout(drainQueue); + cachedSetTimeout(drainQueue, 0); } }; @@ -17287,7 +17216,7 @@ function i2ops(c) { return out; } }).call(this,require("buffer").Buffer) -},{"buffer":46,"create-hash":51}],108:[function(require,module,exports){ +},{"buffer":46,"create-hash":50}],108:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -17398,7 +17327,7 @@ function compare(a, b){ return dif; } }).call(this,require("buffer").Buffer) -},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":51,"parse-asn1":101}],109:[function(require,module,exports){ +},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":50,"parse-asn1":101}],109:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -17496,7 +17425,7 @@ function nonZero(len, crypto) { return out; } }).call(this,require("buffer").Buffer) -},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":51,"parse-asn1":101,"randombytes":112}],110:[function(require,module,exports){ +},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,"buffer":46,"create-hash":50,"parse-asn1":101,"randombytes":112}],110:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -17559,1283 +17488,1216 @@ function randomBytes (size, cb) { }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) },{"_process":105,"buffer":46}],113:[function(require,module,exports){ -(function (Buffer){ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/** @preserve -(c) 2012 by Cédric Mesnil. All rights reserved. +module.exports = require("./lib/_stream_duplex.js") -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +},{"./lib/_stream_duplex.js":114}],114:[function(require,module,exports){ +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. - - 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. +'use strict'; -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 HOLDER 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. -*/ +/**/ -// constants table -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] +module.exports = Duplex; -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] +/**/ +var processNextTick = require('process-nextick-args'); +/**/ -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] -var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); -function bytesToWords (bytes) { - var words = [] - for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { - words[b >>> 5] |= bytes[i] << (24 - b % 32) - } - return words -} +util.inherits(Duplex, Readable); -function wordsToBytes (words) { - var bytes = [] - for (var b = 0; b < words.length * 32; b += 8) { - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) - } - return bytes +var keys = objectKeys(Writable.prototype); +for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } -function processBlock (H, M, offset) { - // swap endian - for (var i = 0; i < 16; i++) { - var offset_i = offset + i - var M_offset_i = M[offset_i] +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ) - } + Readable.call(this, options); + Writable.call(this, options); - // Working variables - var al, bl, cl, dl, el - var ar, br, cr, dr, er + if (options && options.readable === false) this.readable = false; - ar = al = H[0] - br = bl = H[1] - cr = cl = H[2] - dr = dl = H[3] - er = el = H[4] + if (options && options.writable === false) this.writable = false; - // computation - var t - for (i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0 - if (i < 16) { - t += f1(bl, cl, dl) + hl[0] - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1] - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2] - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3] - } else {// if (i<80) { - t += f5(bl, cl, dl) + hl[4] - } - t = t | 0 - t = rotl(t, sl[i]) - t = (t + el) | 0 - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = t + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - t = (ar + M[offset + zr[i]]) | 0 - if (i < 16) { - t += f5(br, cr, dr) + hr[0] - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1] - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2] - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3] - } else {// if (i<80) { - t += f1(br, cr, dr) + hr[4] - } + this.once('end', onend); +} - t = t | 0 - t = rotl(t, sr[i]) - t = (t + er) | 0 - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = t - } +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; - // intermediate hash value - t = (H[1] + cl + dr) | 0 - H[1] = (H[2] + dl + er) | 0 - H[2] = (H[3] + el + ar) | 0 - H[3] = (H[4] + al + br) | 0 - H[4] = (H[0] + bl + cr) | 0 - H[0] = t + // no more data can be written. + // But allow more writes to happen in this tick. + processNextTick(onEndNT, this); } -function f1 (x, y, z) { - return ((x) ^ (y) ^ (z)) +function onEndNT(self) { + self.end(); } -function f2 (x, y, z) { - return (((x) & (y)) | ((~x) & (z))) +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } } +},{"./_stream_readable":116,"./_stream_writable":118,"core-util-is":48,"inherits":92,"process-nextick-args":104}],115:[function(require,module,exports){ +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. -function f3 (x, y, z) { - return (((x) | (~(y))) ^ (z)) -} +'use strict'; -function f4 (x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))) -} +module.exports = PassThrough; -function f5 (x, y, z) { - return ((x) ^ ((y) | (~(z)))) -} +var Transform = require('./_stream_transform'); -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); } -function ripemd160 (message) { - var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":117,"core-util-is":48,"inherits":92}],116:[function(require,module,exports){ +(function (process){ +'use strict'; - if (typeof message === 'string') { - message = new Buffer(message, 'utf8') - } +module.exports = Readable; - var m = bytesToWords(message) +/**/ +var processNextTick = require('process-nextick-args'); +/**/ - var nBitsLeft = message.length * 8 - var nBitsTotal = message.length * 8 +/**/ +var isArray = require('isarray'); +/**/ - // Add padding - m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) - m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ) +Readable.ReadableState = ReadableState; - for (var i = 0; i < m.length; i += 16) { - processBlock(H, m, i) - } +/**/ +var EE = require('events').EventEmitter; - // swap endian - for (i = 0; i < 5; i++) { - // shortcut - var H_i = H[i] +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) +/**/ +var Stream; +(function () { + try { + Stream = require('st' + 'ream'); + } catch (_) {} finally { + if (!Stream) Stream = require('events').EventEmitter; } +})(); +/**/ - var digestbytes = wordsToBytes(H) - return new Buffer(digestbytes) -} +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ -module.exports = ripemd160 +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -}).call(this,require("buffer").Buffer) -},{"buffer":46}],114:[function(require,module,exports){ -(function (Buffer){ -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = new Buffer(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 - this._s = 0 +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; } +/**/ -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = new Buffer(data, enc) - } +var StringDecoder; - var l = this._len += data.length - var s = this._s || 0 - var f = 0 - var buffer = this._block +util.inherits(Readable, Stream); - while (s < l) { - var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) - var ch = (t - f) +var hasPrependListener = typeof EE.prototype.prependListener === 'function'; - for (var i = 0; i < ch; i++) { - buffer[(s % this._blockSize) + i] = data[i + f] - } +function prependListener(emitter, event, fn) { + if (hasPrependListener) return emitter.prependListener(event, fn); - s += ch - f += ch + // This is a brutally ugly hack to make sure that our error handler + // is attached before any userland ones. NEVER DO THIS. This is here + // only because this code needs to continue to work with older versions + // of Node.js that do not include the prependListener() method. The goal + // is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} - if ((s % this._blockSize) === 0) { - this._update(buffer) - } - } - this._s = s +var Duplex; +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); - return this -} + options = options || {}; -Hash.prototype.digest = function (enc) { - // Suppose the length of the message M, in bits, is l - var l = this._len * 8 + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; - // Append the bit 1 to the end of the message - this._block[this._len % this._blockSize] = 0x80 + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize - this._block.fill(0, this._len % this._blockSize + 1) + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - if (l % (this._blockSize * 8) >= this._finalSize * 8) { - this._update(this._block) - this._block.fill(0) - } + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; - // to this append the block which is equal to the number l written in binary - // TODO: handle case where l is > Math.pow(2, 29) - this._block.writeInt32BE(l, this._blockSize - 4) + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; - var hash = this._update(this._block) || this._hash() + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; - return enc ? hash.toString(enc) : hash -} + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') -} + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; -module.exports = Hash + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; -}).call(this,require("buffer").Buffer) -},{"buffer":46}],115:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + // if true, a maybeReadMore has been scheduled + this.readingMore = false; - return new Algorithm() + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } } -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') +var Duplex; +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); -},{"./sha":116,"./sha1":117,"./sha224":118,"./sha256":119,"./sha384":120,"./sha512":121}],116:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ + if (!(this instanceof Readable)) return new Readable(options); -var inherits = require('inherits') -var Hash = require('./hash') + this._readableState = new ReadableState(options, this); -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] + // legacy + this.readable = true; -var W = new Array(80) + if (options && typeof options.read === 'function') this._read = options.read; -function Sha () { - this.init() - this._w = W + Stream.call(this); +} - Hash.call(this, 64, 56) -} - -inherits(Sha, Hash) - -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; - return this -} + if (!state.objectMode && typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = bufferShim.from(chunk, encoding); + encoding = ''; + } + } -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} + return readableAddChunk(this, state, chunk, encoding, false); +}; -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; -Sha.prototype._update = function (M) { - var W = this._w +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var _e = new Error('stream.unshift() after end event'); + stream.emit('error', _e); + } else { + var skipAdd; + if (state.decoder && !addToFront && !encoding) { + chunk = state.decoder.write(chunk); + skipAdd = !state.objectMode && chunk.length === 0; + } - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 + if (!addToFront) state.reading = false; - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + // Don't add to the buffer if we've decoded to an empty string chunk and + // we're not in object mode + if (!skipAdd) { + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + if (state.needReadable) emitReadable(stream); + } + } - e = d - d = c - c = rotl30(b) - b = a - a = t + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; } - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 + return needMoreData(state); } -Sha.prototype._hash = function () { - var H = new Buffer(20) +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; - return H +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; } -module.exports = Sha +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) return 0; -}).call(this,require("buffer").Buffer) -},{"./hash":114,"buffer":46,"inherits":93}],117:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ + if (state.objectMode) return n === 0 ? 0 : 1; -var inherits = require('inherits') -var Hash = require('./hash') + if (n === null || isNaN(n)) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; + } -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] + if (n <= 0) return 0; -var W = new Array(80) + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); -function Sha1 () { - this.init() - this._w = W + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else { + return state.length; + } + } - Hash.call(this, 64, 56) + return n; } -inherits(Sha1, Hash) - -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + var state = this._readableState; + var nOrig = n; - return this -} + if (typeof n !== 'number' || n > 0) state.emittedReadable = false; -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} + n = howMuchToRead(n, state); -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d -} + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. -Sha1.prototype._update = function (M) { - var W = this._w + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) - - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - - e = d - d = c - c = rotl30(b) - b = a - a = t + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); } - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} - -Sha1.prototype._hash = function () { - var H = new Buffer(20) + if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (doRead && !state.reading) n = howMuchToRead(nOrig, state); - return H -} + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; -module.exports = Sha1 + if (ret === null) { + state.needReadable = true; + n = 0; + } -}).call(this,require("buffer").Buffer) -},{"./hash":114,"buffer":46,"inherits":93}],118:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ + state.length -= n; -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) state.needReadable = true; -var W = new Array(64) + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended && state.length === 0) endReadable(this); -function Sha224 () { - this.init() + if (ret !== null) this.emit('data', ret); - this._w = W // new Array(64) + return ret; +}; - Hash.call(this, 64, 56) +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; } -inherits(Sha224, Sha256) - -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; - return this + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); } -Sha224.prototype._hash = function () { - var H = new Buffer(28) - - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); + } +} - return H +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); } -module.exports = Sha224 +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + processNextTick(maybeReadMore_, stream, state); + } +} -}).call(this,require("buffer").Buffer) -},{"./hash":114,"./sha256":119,"buffer":46,"inherits":93}],119:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} -var inherits = require('inherits') -var Hash = require('./hash') +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('not implemented')); +}; -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; -var W = new Array(64) + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); -function Sha256 () { - this.init() + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - this._w = W // new Array(64) + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); - Hash.call(this, 64, 56) -} + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); + } + } -inherits(Sha256, Hash) + function onend() { + debug('onend'); + dest.end(); + } -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); - return this -} + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); -function ch (x, y, z) { - return z ^ (x & (y ^ z)) -} + cleanedUp = true; -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} - -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} - -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + if (false === ret) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + } + src.pause(); + } + } -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } -Sha256.prototype._update = function (M) { - var W = this._w + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 + // tell the dest that it's being piped to + dest.emit('pipe', src); - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); } - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; } -Sha256.prototype._hash = function () { - var H = new Buffer(32) +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; - return H -} + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; -module.exports = Sha256 + if (!dest) dest = state.pipes; -}).call(this,require("buffer").Buffer) -},{"./hash":114,"buffer":46,"inherits":93}],120:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this); + return this; + } -var W = new Array(160) + // slow case. multiple pipe destinations. -function Sha384 () { - this.init() - this._w = W + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; - Hash.call(this, 128, 112) -} + for (var _i = 0; _i < len; _i++) { + dests[_i].emit('unpipe', this); + }return this; + } -inherits(Sha384, SHA512) + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) return this; -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 + dest.emit('unpipe', this); - return this -} + return this; +}; -Sha384.prototype._hash = function () { - var H = new Buffer(48) +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) + // If listening to data, and it has not explicitly been paused, + // then call resume to start the flow of data on the next tick. + if (ev === 'data' && false !== this._readableState.flowing) { + this.resume(); } - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) + if (ev === 'readable' && !this._readableState.endEmitted) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + processNextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this, state); + } + } + } - return H + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); } -module.exports = Sha384 +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; -}).call(this,require("buffer").Buffer) -},{"./hash":114,"./sha512":121,"buffer":46,"inherits":93}],121:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var Hash = require('./hash') +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + processNextTick(resume_, stream, state); + } +} -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] - -var W = new Array(160) - -function Sha512 () { - this.init() - this._w = W +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } - Hash.call(this, 128, 112) + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); } -inherits(Sha512, Hash) - -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 - - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; - return this +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + if (state.flowing) { + do { + var chunk = stream.read(); + } while (null !== chunk && state.flowing); + } } -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} + var self = this; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); + } -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} + self.push(null); + }); -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) -} + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) -} + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function (ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; -Sha512.prototype._update = function (M) { - var W = this._w + return self; +}; - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 +// exposed for testing purposes only. +Readable._fromList = fromList; - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) - } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) + // nothing in the list, definitely empty. + if (list.length === 0) return null; - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) + if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) ret = '';else ret = bufferShim.allocUnsafe(n); - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var _buf = list[0]; + var cpy = Math.min(n - c, _buf.length); - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] + if (stringMode) ret += _buf.slice(0, cpy);else _buf.copy(ret, c, 0, cpy); - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + if (cpy < _buf.length) list[0] = _buf.slice(cpy);else list.shift(); - W[i] = Wih - W[i + 1] = Wil + c += cpy; + } + } } - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] + return ret; +} - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) +function endReadable(stream) { + var state = stream._readableState; - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] + if (!state.endEmitted) { + state.ended = true; + processNextTick(endReadableNT, state, stream); + } +} - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 - - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); } - - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 } -Sha512.prototype._hash = function () { - var H = new Buffer(64) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; } - - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) - - return H + return -1; } - -module.exports = Sha512 - -}).call(this,require("buffer").Buffer) -},{"./hash":114,"buffer":46,"inherits":93}],122:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. +}).call(this,require('_process')) +},{"./_stream_duplex":114,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":48,"events":82,"inherits":92,"isarray":94,"process-nextick-args":104,"string_decoder/":133,"util":18}],117:[function(require,module,exports){ +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) // -// 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: +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. // -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. +// Here's how this works: // -// 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. - -module.exports = Stream; +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. -var EE = require('events').EventEmitter; -var inherits = require('inherits'); +'use strict'; -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); +module.exports = Transform; -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; +var Duplex = require('./_stream_duplex'); +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ +util.inherits(Transform, Duplex); -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform(stream, er, data); + }; -function Stream() { - EE.call(this); + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; } -Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; - source.on('data', ondata); + var cb = ts.writecb; - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } + if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - dest.on('drain', ondrain); + ts.writechunk = null; + ts.writecb = null; - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } + if (data !== null && data !== undefined) stream.push(data); - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; + cb(er); - dest.end(); + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); } +} +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } + Duplex.call(this, options); - source.on('error', onerror); - dest.on('error', onerror); + this._transformState = new TransformState(this); - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); + // when the writable side finishes, then flush out anything remaining. + var stream = this; - source.removeListener('end', onend); - source.removeListener('close', onclose); + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - source.removeListener('error', onerror); - dest.removeListener('error', onerror); + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; - dest.removeListener('close', cleanup); + if (typeof options.flush === 'function') this._flush = options.flush; } - source.on('end', cleanup); - source.on('close', cleanup); + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er) { + done(stream, er); + });else done(stream); + }); +} - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); }; -},{"events":83,"inherits":93,"readable-stream/duplex.js":124,"readable-stream/passthrough.js":131,"readable-stream/readable.js":132,"readable-stream/transform.js":133,"readable-stream/writable.js":134}],123:[function(require,module,exports){ -arguments[4][47][0].apply(exports,arguments) -},{"dup":47}],124:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") - -},{"./lib/_stream_duplex.js":125}],125:[function(require,module,exports){ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('Not implemented'); }; -/**/ - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } -} -},{"./_stream_readable":127,"./_stream_writable":129,"core-util-is":49,"inherits":93,"process-nextick-args":104}],126:[function(require,module,exports){ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. +}; -'use strict'; +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; -module.exports = PassThrough; + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; -var Transform = require('./_stream_transform'); +function done(stream, er) { + if (er) return stream.emit('error', er); -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; -util.inherits(PassThrough, Transform); + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); + if (ts.transforming) throw new Error('Calling transform done when still transforming'); - Transform.call(this, options); + return stream.push(null); } - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":128,"core-util-is":49,"inherits":93}],127:[function(require,module,exports){ +},{"./_stream_duplex":114,"core-util-is":48,"inherits":92}],118:[function(require,module,exports){ (function (process){ +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + 'use strict'; -module.exports = Readable; +module.exports = Writable; /**/ var processNextTick = require('process-nextick-args'); /**/ /**/ -var isArray = require('isarray'); +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; /**/ -Readable.ReadableState = ReadableState; +Writable.WritableState = WritableState; /**/ -var EE = require('events').EventEmitter; +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; +/**/ +var internalUtil = { + deprecate: require('util-deprecate') }; /**/ @@ -18855,52 +18717,32 @@ var Buffer = require('buffer').Buffer; var bufferShim = require('buffer-shims'); /**/ -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var BufferList = require('./internal/streams/BufferList'); -var StringDecoder; +util.inherits(Writable, Stream); -util.inherits(Readable, Stream); +function nop() {} -function prependListener(emitter, event, fn) { - if (typeof emitter.prependListener === 'function') { - return emitter.prependListener(event, fn); - } else { - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; - } +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; } var Duplex; -function ReadableState(options, stream) { +function WritableState(options, stream) { Duplex = Duplex || require('./_stream_duplex'); options = options || {}; - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away + // object stream flag to indicate whether or not this stream + // contains buffers or objects. this.objectMode = !!options.objectMode; - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() var hwm = options.highWaterMark; var defaultHwm = this.objectMode ? 16 : 16 * 1024; this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; @@ -18908,1658 +18750,1634 @@ function ReadableState(options, stream) { // cast to ints. this.highWaterMark = ~ ~this.highWaterMark; - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + // when 'finish' is emitted + this.finished = false; - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. this.defaultEncoding = options.defaultEncoding || 'utf8'; - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + // a flag to see when we're in the middle of a write. + this.writing = false; - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} + // when true all writes will be buffered until .uncork() call + this.corked = 0; -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; - if (!(this instanceof Readable)) return new Readable(options); + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - this._readableState = new ReadableState(options, this); + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; - // legacy - this.readable = true; + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; - if (options && typeof options.read === 'function') this._read = options.read; + // the amount that is being written when _write is called. + this.writelen = 0; - Stream.call(this); -} + this.bufferedRequest = null; + this.lastBufferedRequest = null; -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = bufferShim.from(chunk, encoding); - encoding = ''; - } - } + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; - return readableAddChunk(this, state, chunk, encoding, false); -}; + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; + // count buffered requests + this.bufferedRequestCount = 0; -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function writableStateGetBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; }; -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') + }); + } catch (_) {} +})(); - if (!addToFront) state.reading = false; +var Duplex; +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - if (state.needReadable) emitReadable(stream); - } - } + this._writableState = new WritableState(options, this); - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } + // legacy. + this.writable = true; - return needMoreData(state); -} + if (options) { + if (typeof options.write === 'function') this._write = options.write; -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); + if (typeof options.writev === 'function') this._writev = options.writev; + } + + Stream.call(this); } -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); }; -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + processNextTick(cb, er); } -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + // Always throw error if a null is written + // if we are not in object mode then throw + // if it is not a buffer, string, or undefined. + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; + if (er) { + stream.emit('error', er); + processNextTick(cb, er); + valid = false; } - return state.length; + return valid; } -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; } - n = howMuchToRead(n, state); + if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); } - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. + return ret; +}; - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); +Writable.prototype.cork = function () { + var state = this._writableState; - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } + state.corked++; +}; - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } +Writable.prototype.uncork = function () { + var state = this._writableState; - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; + if (state.corked) { + state.corked--; - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } +}; - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = bufferShim.from(chunk, encoding); } + return chunk; +} - if (ret !== null) this.emit('data', ret); +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); - return ret; -}; + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} + state.length += len; -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); } - state.ended = true; - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); + return ret; } -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; } -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) processNextTick(cb, er);else cb(er); -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } + stream._writableState.errorEmitted = true; + stream.emit('error', er); } -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; } -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + onwriteStateUpdate(state); - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); } - } - function onend() { - debug('onend'); - dest.end(); + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } } +} - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} - cleanedUp = true; +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); + var count = 0; + while (entry) { + buffer[count] = entry; + entry = entry.next; + count += 1; } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); + doWrite(stream, state, true, state.length, buffer, '', holder.finish); - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; - // tell the dest that it's being piped to - dest.emit('pipe', src); + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); + if (entry === null) state.lastBufferedRequest = null; } - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; } -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('not implemented')); +}; - // slow case. multiple pipe destinations. +Writable.prototype._writev = null; - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; } - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); } - return res; + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); }; -Readable.prototype.addListener = Readable.prototype.on; -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); } } -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else { + prefinish(stream, state); + } } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); + return need; } -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) processNextTick(cb);else stream.once('finish', cb); } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} + state.ended = true; + stream.writable = false; } -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } + this.next = null; + this.entry = null; - self.push(null); - }); + this.finish = function (err) { + var entry = _this.entry; + _this.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = _this; + } else { + state.corkedRequestsFree = _this; + } + }; +} +}).call(this,require('_process')) +},{"./_stream_duplex":114,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":48,"events":82,"inherits":92,"process-nextick-args":104,"util-deprecate":134}],119:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); +},{"./lib/_stream_passthrough.js":115}],120:[function(require,module,exports){ +(function (process){ +var Stream = (function (){ + try { + return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify + } catch(_){} +}()); +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = Stream || exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; +if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; +} - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); +}).call(this,require('_process')) +},{"./lib/_stream_duplex.js":114,"./lib/_stream_passthrough.js":115,"./lib/_stream_readable.js":116,"./lib/_stream_transform.js":117,"./lib/_stream_writable.js":118,"_process":105}],121:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } +},{"./lib/_stream_transform.js":117}],122:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); +},{"./lib/_stream_writable.js":118}],123:[function(require,module,exports){ +(function (Buffer){ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** @preserve +(c) 2012 by Cédric Mesnil. All rights reserved. - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - return self; -}; + - 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. -// exposed for testing purposes only. -Readable._fromList = fromList; +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 HOLDER 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. +*/ -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; +// constants table +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] - return ret; -} +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] +var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] + +function bytesToWords (bytes) { + var words = [] + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { + words[b >>> 5] |= bytes[i] << (24 - b % 32) } - return ret; + return words } -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; +function wordsToBytes (words) { + var bytes = [] + for (var b = 0; b < words.length * 32; b += 8) { + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) } - list.length -= c; - return ret; + return bytes } -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = bufferShim.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; +function processBlock (H, M, offset) { + // swap endian + for (var i = 0; i < 16; i++) { + var offset_i = offset + i + var M_offset_i = M[offset_i] + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ) } - list.length -= c; - return ret; -} -function endReadable(stream) { - var state = stream._readableState; + // Working variables + var al, bl, cl, dl, el + var ar, br, cr, dr, er - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + ar = al = H[0] + br = bl = H[1] + cr = cl = H[2] + dr = dl = H[3] + er = el = H[4] - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} + // computation + var t + for (i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0 + if (i < 16) { + t += f1(bl, cl, dl) + hl[0] + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1] + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2] + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3] + } else {// if (i<80) { + t += f5(bl, cl, dl) + hl[4] + } + t = t | 0 + t = rotl(t, sl[i]) + t = (t + el) | 0 + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = t -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); + t = (ar + M[offset + zr[i]]) | 0 + if (i < 16) { + t += f5(br, cr, dr) + hr[0] + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1] + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2] + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3] + } else {// if (i<80) { + t += f1(br, cr, dr) + hr[4] + } + + t = t | 0 + t = rotl(t, sr[i]) + t = (t + er) | 0 + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = t } + + // intermediate hash value + t = (H[1] + cl + dr) | 0 + H[1] = (H[2] + dl + er) | 0 + H[2] = (H[3] + el + ar) | 0 + H[3] = (H[4] + al + br) | 0 + H[4] = (H[0] + bl + cr) | 0 + H[0] = t } -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } +function f1 (x, y, z) { + return ((x) ^ (y) ^ (z)) } -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; +function f2 (x, y, z) { + return (((x) & (y)) | ((~x) & (z))) } -}).call(this,require('_process')) -},{"./_stream_duplex":125,"./internal/streams/BufferList":130,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":49,"events":83,"inherits":93,"isarray":123,"process-nextick-args":104,"string_decoder/":135,"util":18}],128:[function(require,module,exports){ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +function f3 (x, y, z) { + return (((x) | (~(y))) ^ (z)) +} -util.inherits(Transform, Duplex); +function f4 (x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))) +} -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; +function f5 (x, y, z) { + return ((x) ^ ((y) | (~(z)))) +} - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) } -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; +function ripemd160 (message) { + var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] - var cb = ts.writecb; + if (typeof message === 'string') { + message = new Buffer(message, 'utf8') + } - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); + var m = bytesToWords(message) - ts.writechunk = null; - ts.writecb = null; + var nBitsLeft = message.length * 8 + var nBitsTotal = message.length * 8 - if (data !== null && data !== undefined) stream.push(data); + // Add padding + m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) + m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ) - cb(er); + for (var i = 0; i < m.length; i += 16) { + processBlock(H, m, i) + } - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); + // swap endian + for (i = 0; i < 5; i++) { + // shortcut + var H_i = H[i] + + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) } + + var digestbytes = wordsToBytes(H) + return new Buffer(digestbytes) } -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); +module.exports = ripemd160 - Duplex.call(this, options); +}).call(this,require("buffer").Buffer) +},{"buffer":46}],124:[function(require,module,exports){ +(function (Buffer){ +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = new Buffer(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 + this._s = 0 +} - this._transformState = new TransformState(this); +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = new Buffer(data, enc) + } - // when the writable side finishes, then flush out anything remaining. - var stream = this; + var l = this._len += data.length + var s = this._s || 0 + var f = 0 + var buffer = this._block - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + while (s < l) { + var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) + var ch = (t - f) - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; + for (var i = 0; i < ch; i++) { + buffer[(s % this._blockSize) + i] = data[i + f] + } - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; + s += ch + f += ch - if (typeof options.flush === 'function') this._flush = options.flush; + if ((s % this._blockSize) === 0) { + this._update(buffer) + } } + this._s = s - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); + return this } -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; +Hash.prototype.digest = function (enc) { + // Suppose the length of the message M, in bits, is l + var l = this._len * 8 -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; + // Append the bit 1 to the end of the message + this._block[this._len % this._blockSize] = 0x80 -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; + // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize + this._block.fill(0, this._len % this._blockSize + 1) - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; + if (l % (this._blockSize * 8) >= this._finalSize * 8) { + this._update(this._block) + this._block.fill(0) } -}; - -function done(stream, er) { - if (er) return stream.emit('error', er); - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; + // to this append the block which is equal to the number l written in binary + // TODO: handle case where l is > Math.pow(2, 29) + this._block.writeInt32BE(l, this._blockSize - 4) - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); + var hash = this._update(this._block) || this._hash() - if (ts.transforming) throw new Error('Calling transform done when still transforming'); + return enc ? hash.toString(enc) : hash +} - return stream.push(null); +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') } -},{"./_stream_duplex":125,"core-util-is":49,"inherits":93}],129:[function(require,module,exports){ -(function (process){ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. -'use strict'; +module.exports = Hash -module.exports = Writable; +}).call(this,require("buffer").Buffer) +},{"buffer":46}],125:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() -/**/ -var processNextTick = require('process-nextick-args'); -/**/ + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ + return new Algorithm() +} -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +exports.sha = require('./sha') +exports.sha1 = require('./sha1') +exports.sha224 = require('./sha224') +exports.sha256 = require('./sha256') +exports.sha384 = require('./sha384') +exports.sha512 = require('./sha512') -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ +},{"./sha":126,"./sha1":127,"./sha224":128,"./sha256":129,"./sha384":130,"./sha512":131}],126:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ +var inherits = require('inherits') +var Hash = require('./hash') -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] -util.inherits(Writable, Stream); +var W = new Array(80) -function nop() {} +function Sha () { + this.init() + this._w = W -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; + Hash.call(this, 64, 56) } -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; +inherits(Sha, Hash) - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + return this +} - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; +Sha.prototype._update = function (M) { + var W = this._w - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] - // a flag to see when we're in the middle of a write. - this.writing = false; + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - // when true all writes will be buffered until .uncork() call - this.corked = 0; + e = d + d = c + c = rotl30(b) + b = a + a = t + } - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; +Sha.prototype._hash = function () { + var H = new Buffer(20) - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; + return H +} - // the amount that is being written when _write is called. - this.writelen = 0; +module.exports = Sha - this.bufferedRequest = null; - this.lastBufferedRequest = null; +}).call(this,require("buffer").Buffer) +},{"./hash":124,"buffer":46,"inherits":92}],127:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; +var inherits = require('inherits') +var Hash = require('./hash') - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; +var W = new Array(80) - // count buffered requests - this.bufferedRequestCount = 0; +function Sha1 () { + this.init() + this._w = W - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); + Hash.call(this, 64, 56) } -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); - -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); +inherits(Sha1, Hash) - this._writableState = new WritableState(options, this); +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - // legacy. - this.writable = true; + return this +} - if (options) { - if (typeof options.write === 'function') this._write = options.write; +function rotl1 (num) { + return (num << 1) | (num >>> 31) +} - if (typeof options.writev === 'function') this._writev = options.writev; - } +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} - Stream.call(this); +function rotl30 (num) { + return (num << 30) | (num >>> 2) } -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d } -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; +Sha1.prototype._update = function (M) { + var W = this._w - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) - if (typeof cb !== 'function') cb = nop; + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); + e = d + d = c + c = rotl30(b) + b = a + a = t } - return ret; -}; + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 +} -Writable.prototype.cork = function () { - var state = this._writableState; +Sha1.prototype._hash = function () { + var H = new Buffer(20) - state.corked++; -}; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) -Writable.prototype.uncork = function () { - var state = this._writableState; + return H +} - if (state.corked) { - state.corked--; +module.exports = Sha1 - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; +}).call(this,require("buffer").Buffer) +},{"./hash":124,"buffer":46,"inherits":92}],128:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; +var inherits = require('inherits') +var Sha256 = require('./sha256') +var Hash = require('./hash') -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = bufferShim.from(chunk, encoding); - } - return chunk; -} +var W = new Array(64) -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); +function Sha224 () { + this.init() - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; + this._w = W // new Array(64) - state.length += len; + Hash.call(this, 64, 56) +} - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; +inherits(Sha224, Sha256) - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 - return ret; + return this } -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} +Sha224.prototype._hash = function () { + var H = new Buffer(28) -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) - stream._writableState.errorEmitted = true; - stream.emit('error', er); + return H } -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} +module.exports = Sha224 -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; +}).call(this,require("buffer").Buffer) +},{"./hash":124,"./sha256":129,"buffer":46,"inherits":92}],129:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - onwriteStateUpdate(state); +var inherits = require('inherits') +var Hash = require('./hash') - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } +var W = new Array(64) - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} +function Sha256 () { + this.init() -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); + this._w = W // new Array(64) + + Hash.call(this, 64, 56) } -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); +inherits(Sha256, Hash) + +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 + + return this +} + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 + + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 } -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; +Sha256.prototype._hash = function () { + var H = new Buffer(32) - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } + return H +} - doWrite(stream, state, true, state.length, buffer, '', holder.finish); +module.exports = Sha256 - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; +}).call(this,require("buffer").Buffer) +},{"./hash":124,"buffer":46,"inherits":92}],130:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var SHA512 = require('./sha512') +var Hash = require('./hash') - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } +var W = new Array(160) - if (entry === null) state.lastBufferedRequest = null; +function Sha384 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha384, SHA512) + +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d + + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 + + return this +} + +Sha384.prototype._hash = function () { + var H = new Buffer(48) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) } - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + + return H } -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; +module.exports = Sha384 -Writable.prototype._writev = null; +}).call(this,require("buffer").Buffer) +},{"./hash":124,"./sha512":131,"buffer":46,"inherits":92}],131:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var Hash = require('./hash') -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] + +var W = new Array(160) + +function Sha512 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha512, Hash) + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 + + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this +} + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) + + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] + + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + + W[i] = Wih + W[i + 1] = Wil + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] + + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) + + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] + + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) + + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } + + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} + +Sha512.prototype._hash = function () { + var H = new Buffer(64) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) + + return H +} + +module.exports = Sha512 + +}).call(this,require("buffer").Buffer) +},{"./hash":124,"buffer":46,"inherits":92}],132:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +function Stream() { + EE.call(this); } -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } } -} -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); } } - return need; -} -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); } - state.ended = true; - stream.writable = false; -} -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; - this.next = null; - this.entry = null; + dest.end(); + } - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} -}).call(this,require('_process')) -},{"./_stream_duplex":125,"_process":105,"buffer":46,"buffer-shims":44,"core-util-is":49,"events":83,"inherits":93,"process-nextick-args":104,"util-deprecate":136}],130:[function(require,module,exports){ -'use strict'; -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ + function onclose() { + if (didOnEnd) return; + didOnEnd = true; -module.exports = BufferList; + if (typeof dest.destroy === 'function') dest.destroy(); + } -function BufferList() { - this.head = null; - this.tail = null; - this.length = 0; -} + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } -BufferList.prototype.push = function (v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; -}; + source.on('error', onerror); + dest.on('error', onerror); -BufferList.prototype.unshift = function (v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; -}; + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); -BufferList.prototype.shift = function () { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; -}; + source.removeListener('end', onend); + source.removeListener('close', onclose); -BufferList.prototype.clear = function () { - this.head = this.tail = null; - this.length = 0; -}; + source.removeListener('error', onerror); + dest.removeListener('error', onerror); -BufferList.prototype.join = function (s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; -}; + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); -BufferList.prototype.concat = function (n) { - if (this.length === 0) return bufferShim.alloc(0); - if (this.length === 1) return this.head.data; - var ret = bufferShim.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - p.data.copy(ret, i); - i += p.data.length; - p = p.next; + dest.removeListener('close', cleanup); } - return ret; -}; -},{"buffer":46,"buffer-shims":44}],131:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") -},{"./lib/_stream_passthrough.js":126}],132:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); + source.on('end', cleanup); + source.on('close', cleanup); -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} + dest.on('close', cleanup); -}).call(this,require('_process')) -},{"./lib/_stream_duplex.js":125,"./lib/_stream_passthrough.js":126,"./lib/_stream_readable.js":127,"./lib/_stream_transform.js":128,"./lib/_stream_writable.js":129,"_process":105}],133:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") + dest.emit('pipe', source); -},{"./lib/_stream_transform.js":128}],134:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; -},{"./lib/_stream_writable.js":129}],135:[function(require,module,exports){ +},{"events":82,"inherits":92,"readable-stream/duplex.js":113,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],133:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -20782,7 +20600,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":46}],136:[function(require,module,exports){ +},{"buffer":46}],134:[function(require,module,exports){ (function (global){ /** @@ -20853,7 +20671,7 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],137:[function(require,module,exports){ +},{}],135:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -20993,7 +20811,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":92}],138:[function(require,module,exports){ +},{"indexof":91}],136:[function(require,module,exports){ (function (process,global){ /*! * @overview es6-promise - a tiny implementation of Promises/A+. @@ -21963,7 +21781,7 @@ exports.createContext = Script.createContext = function (context) { }).call(this); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":105}],139:[function(require,module,exports){ +},{"_process":105}],137:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -21974,7 +21792,7 @@ module.exports = { TextDecoder: encoding.TextDecoder, }; -},{"./lib/encoding.js":141}],140:[function(require,module,exports){ +},{"./lib/encoding.js":139}],138:[function(require,module,exports){ (function(global) { 'use strict'; global["encoding-indexes"] = { @@ -22014,7 +21832,7 @@ module.exports = { }; }(this)); -},{}],141:[function(require,module,exports){ +},{}],139:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -25111,7 +24929,7 @@ if (typeof module !== "undefined" && module.exports) { global['TextDecoder'] = TextDecoder; }(this)); -},{"./encoding-indexes.js":140}],142:[function(require,module,exports){ +},{"./encoding-indexes.js":138}],140:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25148,7 +24966,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./v1/index":146}],143:[function(require,module,exports){ +},{"./v1/index":144}],141:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25364,13 +25182,6 @@ var _ConnectionStreamObserver = (function (_StreamObserver) { this._hasFailed = true; } } - }, { - key: 'onCompleted', - value: function onCompleted(message) { - if (this._driver.onCompleted) { - this._driver.onCompleted(message); - } - } }]); return _ConnectionStreamObserver; @@ -25440,7 +25251,7 @@ function driver(url, authToken) { exports.Driver = Driver; exports.driver = driver; -},{"../version":164,"./internal/connector":152,"./internal/pool":156,"./internal/stream-observer":157,"./session":162}],144:[function(require,module,exports){ +},{"../version":162,"./internal/connector":150,"./internal/pool":154,"./internal/stream-observer":155,"./session":160}],142:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25502,7 +25313,7 @@ var Neo4jError = (function (_Error) { exports.newError = newError; exports.Neo4jError = Neo4jError; -},{}],145:[function(require,module,exports){ +},{}],143:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25723,7 +25534,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],146:[function(require,module,exports){ +},{}],144:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -25777,7 +25588,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./driver":143,"./error":144,"./graph-types":145,"./integer":147}],147:[function(require,module,exports){ +},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -26640,7 +26451,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./error":144}],148:[function(require,module,exports){ +},{"./error":142}],146:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27369,7 +27180,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"./../error":144,"buffer":46}],149:[function(require,module,exports){ +},{"./../error":142,"buffer":46}],147:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27434,35 +27245,16 @@ function userHome() { return process.env[process.platform == 'win32' ? 'USERPROFILE' : 'HOME']; } -function mkFullPath(pathToCreate) { - try { - _fs2['default'].mkdirSync(pathToCreate); - } catch (e) { - if (e.code === 'ENOENT') { - // Create parent dir - mkFullPath(_path2['default'].dirname(pathToCreate)); - // And now try again - mkFullPath(pathToCreate); - return; - } - if (e.code === 'EEXIST') { - return; - } - throw e; - } -} - function loadFingerprint(serverId, knownHostsPath, cb) { - try { - _fs2['default'].accessSync(knownHostsPath); - } catch (e) { - return cb(null); + if (!_fs2['default'].existsSync(knownHostsPath)) { + cb(null); + return; } var found = false; require('readline').createInterface({ input: _fs2['default'].createReadStream(knownHostsPath) }).on('line', function (line) { - if (!found && line.startsWith(serverId)) { + if (line.startsWith(serverId)) { found = true; cb(line.split(" ")[1]); } @@ -27473,31 +27265,11 @@ function loadFingerprint(serverId, knownHostsPath, cb) { }); } -var _lockFingerprintFromAppending = {}; -function storeFingerprint(serverId, knownHostsPath, fingerprint, cb) { - // we check if the serverId has been appended - if (!!_lockFingerprintFromAppending[serverId]) { - // if it has, we ignore it - return cb(null); - } - - // we make the line as appended - // ( 1 is more efficient to store than true because true is an oddball ) - _lockFingerprintFromAppending[serverId] = 1; - - // If file doesn't exist, create full path to it - try { - _fs2['default'].accessSync(knownHostsPath); - } catch (_) { - mkFullPath(_path2['default'].dirname(knownHostsPath)); - } - +function storeFingerprint(serverId, knownHostsPath, fingerprint) { _fs2['default'].appendFile(knownHostsPath, serverId + " " + fingerprint + _os.EOL, "utf8", function (err) { - delete _lockFingerprintFromAppending[serverId]; if (err) { console.log(err); } - return cb(err); }); } @@ -27551,12 +27323,8 @@ var TrustStrategy = { if (knownFingerprint === serverFingerprint) { onSuccess(); } else if (knownFingerprint == null) { - storeFingerprint(serverId, knownHostsPath, serverFingerprint, function (err) { - if (err) { - return onFailure(err); - } - return onSuccess(); - }); + storeFingerprint(serverId, knownHostsPath, serverFingerprint); + onSuccess(); } else { onFailure((0, _error.newError)("Database encryption certificate has changed, and no longer " + "matches the certificate stored for " + serverId + " in `" + knownHostsPath + "`. As a security precaution, this driver will not automatically trust the new " + "certificate, because doing so would allow an attacker to pretend to be the Neo4j " + "instance we want to connect to. The certificate provided by the server looks like: " + serverCert + ". If you trust that this certificate is valid, simply remove the line " + "starting with " + serverId + " in `" + knownHostsPath + "`, and the driver will " + "update the file with the new certificate. You can configure which file the driver " + "should use to store this information by setting `knownHosts` to another path in " + "your driver configuration - and you can disable encryption there as well using " + "`encrypted:false`.")); } @@ -27696,7 +27464,7 @@ try { exports['default'] = _nodeChannelModule; module.exports = exports['default']; -},{"./../error":144,"./buf":148,"crypto":55,"fs":43,"net":43,"os":97,"path":102,"readline":43,"tls":43}],150:[function(require,module,exports){ +},{"./../error":142,"./buf":146,"crypto":54,"fs":43,"net":43,"os":97,"path":102,"readline":43,"tls":43}],148:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -27850,7 +27618,7 @@ var _websocketChannelModule = { channel: WebSocketChannel, available: available exports["default"] = _websocketChannelModule; module.exports = exports["default"]; -},{"./../error":144,"./buf":148,"./log":154}],151:[function(require,module,exports){ +},{"./../error":142,"./buf":146,"./log":152}],149:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28106,7 +27874,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./buf":148}],152:[function(require,module,exports){ +},{"./buf":146}],150:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28302,7 +28070,6 @@ var _mappers = { */ var Connection = (function () { - /** * @constructor * @param channel - channel with a 'write' function and a 'onmessage' @@ -28480,26 +28247,17 @@ var Connection = (function () { }, { key: "initialize", value: function initialize(clientName, token, observer) { - var _this2 = this; - this._queueObserver(observer); - this._packer.packStruct(INIT, [this._packable(clientName), this._packable(token)], function (err) { - return _this2._handleFatalError(err); - }); + this._packer.packStruct(INIT, [clientName, token]); this._chunker.messageBoundary(); - this.sync(); } /** Queue a RUN-message to be sent to the database */ }, { key: "run", value: function run(statement, params, observer) { - var _this3 = this; - this._queueObserver(observer); - this._packer.packStruct(RUN, [this._packable(statement), this._packable(params)], function (err) { - return _this3._handleFatalError(err); - }); + this._packer.packStruct(RUN, [statement, params]); this._chunker.messageBoundary(); } @@ -28507,12 +28265,8 @@ var Connection = (function () { }, { key: "pullAll", value: function pullAll(observer) { - var _this4 = this; - this._queueObserver(observer); - this._packer.packStruct(PULL_ALL, [], function (err) { - return _this4._handleFatalError(err); - }); + this._packer.packStruct(PULL_ALL); this._chunker.messageBoundary(); } @@ -28520,12 +28274,8 @@ var Connection = (function () { }, { key: "discardAll", value: function discardAll(observer) { - var _this5 = this; - this._queueObserver(observer); - this._packer.packStruct(DISCARD_ALL, [], function (err) { - return _this5._handleFatalError(err); - }); + this._packer.packStruct(DISCARD_ALL); this._chunker.messageBoundary(); } @@ -28533,8 +28283,6 @@ var Connection = (function () { }, { key: "reset", value: function reset(observer) { - var _this6 = this; - this._isHandlingFailure = true; var self = this; var wrappedObs = { @@ -28548,9 +28296,7 @@ var Connection = (function () { } }; this._queueObserver(wrappedObs); - this._packer.packStruct(RESET, [], function (err) { - return _this6._handleFatalError(err); - }); + this._packer.packStruct(RESET); this._chunker.messageBoundary(); } @@ -28558,12 +28304,8 @@ var Connection = (function () { }, { key: "_ackFailure", value: function _ackFailure(observer) { - var _this7 = this; - this._queueObserver(observer); - this._packer.packStruct(ACK_FAILURE, [], function (err) { - return _this7._handleFatalError(err); - }); + this._packer.packStruct(ACK_FAILURE); this._chunker.messageBoundary(); } }, { @@ -28612,15 +28354,6 @@ var Connection = (function () { value: function close(cb) { this._ch.close(cb); } - }, { - key: "_packable", - value: function _packable(value) { - var _this8 = this; - - return this._packer.packable(value, function (err) { - return _this8._handleFatalError(err); - }); - } }]); return Connection; @@ -28648,7 +28381,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"../graph-types":145,"../integer":147,"./../error":144,"./buf":148,"./ch-node":149,"./ch-websocket":150,"./chunking":151,"./features":153,"./packstream":155}],153:[function(require,module,exports){ +},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28697,7 +28430,7 @@ function hasFeature(name) { exports['default'] = hasFeature; module.exports = exports['default']; -},{"tls":43}],154:[function(require,module,exports){ +},{"tls":43}],152:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28729,7 +28462,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],155:[function(require,module,exports){ +},{}],153:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -28849,98 +28582,57 @@ var Packer = (function () { * @access private */ - /** - * Creates a packable function out of the provided value - * @param x the value to pack - * @param onError callback for the case when value cannot be packed - * @returns Function - */ - _createClass(Packer, [{ - key: "packable", - value: function packable(x, onError) { - var _this = this; - + key: "pack", + value: function pack(x) { if (x === null) { - return function () { - return _this._ch.writeUInt8(NULL); - }; + this._ch.writeUInt8(NULL); } else if (x === true) { - return function () { - return _this._ch.writeUInt8(TRUE); - }; + this._ch.writeUInt8(TRUE); } else if (x === false) { - return function () { - return _this._ch.writeUInt8(FALSE); - }; + this._ch.writeUInt8(FALSE); } else if (typeof x == "number") { - return function () { - return _this.packFloat(x); - }; + this.packFloat(x); } else if (typeof x == "string") { - return function () { - return _this.packString(x, onError); - }; + this.packString(x); } else if (x instanceof _integer.Integer) { - return function () { - return _this.packInteger(x); - }; + this.packInteger(x); } else if (x instanceof Array) { - return function () { - _this.packListHeader(x.length, onError); - for (var _i = 0; _i < x.length; _i++) { - _this.packable(x[_i] === undefined ? null : x[_i], onError)(); - } - }; - } else if (x instanceof Structure) { - var packableFields = []; - for (var i = 0; i < x.fields.length; i++) { - packableFields[i] = this.packable(x.fields[i], onError); + this.packListHeader(x.length); + for (var i = 0; i < x.length; i++) { + this.pack(x[i] === undefined ? null : x[i]); } - return function () { - return _this.packStruct(x.signature, packableFields); - }; + } else if (x instanceof Structure) { + this.packStruct(x.signature, x.fields); } else if (typeof x == "object") { - return function () { - var keys = Object.keys(x); + var keys = Object.keys(x); - var count = 0; - for (var _i2 = 0; _i2 < keys.length; _i2++) { - if (x[keys[_i2]] !== undefined) { - count++; - } + var count = 0; + for (var i = 0; i < keys.length; i++) { + if (x[keys[i]] !== undefined) { + count++; } - _this.packMapHeader(count, onError); - for (var _i3 = 0; _i3 < keys.length; _i3++) { - var key = keys[_i3]; - if (x[key] !== undefined) { - _this.packString(key); - _this.packable(x[key], onError)(); - } + } + + this.packMapHeader(count); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (x[key] !== undefined) { + this.packString(key); + this.pack(x[key]); } - }; - } else { - if (onError) { - onError((0, _error.newError)("Cannot pack this value: " + x)); } - return function () { - return undefined; - }; + } else { + throw (0, _error.newError)("Cannot pack this value: " + x); } } - - /** - * Packs a struct - * @param signature the signature of the struct - * @param packableFields the fields of the struct, make sure you call `packable on all fields` - */ }, { key: "packStruct", - value: function packStruct(signature, packableFields, onError) { - packableFields = packableFields || []; - this.packStructHeader(packableFields.length, signature, onError); - for (var i = 0; i < packableFields.length; i++) { - packableFields[i](); + value: function packStruct(signature, fields) { + fields = fields || []; + this.packStructHeader(fields.length, signature); + for (var i = 0; i < fields.length; i++) { + this.pack(fields[i]); } } }, { @@ -28974,7 +28666,7 @@ var Packer = (function () { } }, { key: "packString", - value: function packString(x, onError) { + value: function packString(x) { var bytes = _utf82["default"].encode(x); var size = bytes.length; if (size < 0x10) { @@ -28997,12 +28689,12 @@ var Packer = (function () { this._ch.writeUInt8(size % 256); this._ch.writeBytes(bytes); } else { - onError((0, _error.newError)("UTF-8 strings of size " + size + " are not supported")); + throw (0, _error.newError)("UTF-8 strings of size " + size + " are not supported"); } } }, { key: "packListHeader", - value: function packListHeader(size, onError) { + value: function packListHeader(size) { if (size < 0x10) { this._ch.writeUInt8(TINY_LIST | size); } else if (size < 0x100) { @@ -29019,12 +28711,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Lists of size " + size + " are not supported")); + throw (0, _error.newError)("Lists of size " + size + " are not supported"); } } }, { key: "packMapHeader", - value: function packMapHeader(size, onError) { + value: function packMapHeader(size) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -29041,12 +28733,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Maps of size " + size + " are not supported")); + throw (0, _error.newError)("Maps of size " + size + " are not supported"); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature, onError) { + value: function packStructHeader(size, signature) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -29059,7 +28751,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Structures of size " + size + " are not supported")); + throw (0, _error.newError)("Structures of size " + size + " are not supported"); } } }]); @@ -29187,7 +28879,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{"../integer":147,"./../error":144,"./buf":148,"./log":154,"./utf8":158}],156:[function(require,module,exports){ +},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29278,7 +28970,7 @@ exports["default"] = { }; module.exports = exports["default"]; -},{}],157:[function(require,module,exports){ +},{}],155:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29436,7 +29128,7 @@ var StreamObserver = (function () { exports["default"] = StreamObserver; module.exports = exports["default"]; -},{"../record":159}],158:[function(require,module,exports){ +},{"../record":157}],156:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29567,7 +29259,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports['default'] = platformObj; module.exports = exports['default']; -},{"../../external/text-encoding/index":139,"./../error":144,"./buf":148,"buffer":46,"string_decoder":135}],159:[function(require,module,exports){ +},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,"buffer":46,"string_decoder":133}],157:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -29699,7 +29391,7 @@ var Record = (function () { exports.Record = Record; -},{"./error":144}],160:[function(require,module,exports){ +},{"./error":142}],158:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30046,7 +29738,7 @@ exports['default'] = { }; module.exports = exports['default']; -},{"./integer":147}],161:[function(require,module,exports){ +},{"./integer":145}],159:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30200,7 +29892,7 @@ var Result = (function () { exports['default'] = Result; module.exports = exports['default']; -},{"../external/es6-promise":138,"./result-summary":160}],162:[function(require,module,exports){ +},{"../external/es6-promise":136,"./result-summary":158}],160:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30349,7 +30041,7 @@ var Session = (function () { exports['default'] = Session; module.exports = exports['default']; -},{"./error":144,"./internal/stream-observer":157,"./result":161,"./transaction":163}],163:[function(require,module,exports){ +},{"./error":142,"./internal/stream-observer":155,"./result":159,"./transaction":161}],161:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30593,7 +30285,7 @@ function _runDiscardAll(msg, conn, observer) { exports['default'] = Transaction; module.exports = exports['default']; -},{"./internal/stream-observer":157,"./result":161}],164:[function(require,module,exports){ +},{"./internal/stream-observer":155,"./result":159}],162:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -30628,5 +30320,5 @@ Object.defineProperty(exports, "__esModule", { exports["default"] = { VERSION: "0.0.0-dev" }; module.exports = exports["default"]; -},{}]},{},[142])(142) +},{}]},{},[140])(140) }); \ No newline at end of file diff --git a/lib/browser/neo4j-web.min.js b/lib/browser/neo4j-web.min.js index 97d543dcf..9bf639e4d 100644 --- a/lib/browser/neo4j-web.min.js +++ b/lib/browser/neo4j-web.min.js @@ -1,18 +1,18 @@ -!function(l){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=l();else if("function"==typeof define&&define.amd)define([],l);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.neo4j=l()}}(function(){var define,module,exports;return function l(n,u,e){function t(i,o){if(!u[i]){if(!n[i]){var a="function"==typeof require&&require;if(!o&&a)return a(i,!0);if(r)return r(i,!0);var s=new Error("Cannot find module '"+i+"'");throw s.code="MODULE_NOT_FOUND",s}var f=u[i]={exports:{}};n[i][0].call(f.exports,function(l){var u=n[i][1][l];return t(u?u:l)},f,f.exports,l,n,u,e)}return u[i].exports}for(var r="function"==typeof require&&require,i=0;i>6],t=0===(32&u);if(31===(31&u)){var r=u;for(u=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;u<<=7,u|=127&r}}else u&=31;var i=c.tag[u];return{cls:e,primitive:t,tag:u,tagStr:i}}function i(l,n,u){var e=l.readUInt8(u);if(l.isError(e))return e;if(!n&&128===e)return null;if(0===(128&e))return e;var t=127&e;if(t>=4)return l.error("length octect is too long");e=0;for(var r=0;r=31?e.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[u||"universal"]<<6)}var o=l("inherits"),a=l("buffer").Buffer,s=l("../../asn1"),f=s.base,c=s.constants.der;n.exports=e,e.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,u,e){var t=i(l,n,u,this.reporter);if(e.length<128){var r=new a(2);return r[0]=t,r[1]=e.length,this._createEncoderBuffer([r,e])}for(var o=1,s=e.length;s>=256;s>>=8)o++;var r=new a(2+o);r[0]=t,r[1]=128|o;for(var s=1+o,f=e.length;f>0;s--,f>>=8)r[s]=255&f;return this._createEncoderBuffer([r,e])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var u=new a(2*l.length),e=0;e=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,e=0;e=128;r>>=7)t++}for(var i=new a(t),o=i.length-1,e=l.length-1;e>=0;e--){var r=l[e];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var u,e=new Date(l);return"gentime"===n?u=[r(e.getFullYear()),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):"utctime"===n?u=[r(e.getFullYear()%100),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(u,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!a.isBuffer(l)){var u=l.toArray();!l.sign&&128&u[0]&&u.unshift(0),l=new a(u)}if(a.isBuffer(l)){var e=l.length;0===l.length&&e++;var t=new a(e);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var e=1,r=l;r>=256;r>>=8)e++;for(var t=new Array(e),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new a(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,u){var e,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,u).join()),r.length!==t.defaultBuffer.length)return!1;for(e=0;e0)throw new Error("Invalid string. Length must be a multiple of 4");var f=l.length;a="="===l.charAt(f-2)?2:"="===l.charAt(f-1)?1:0,s=new r(3*l.length/4-a),i=a>0?l.length-4:l.length;var c=0;for(e=0,t=0;e>16),u((65280&o)>>8),u(255&o);return 2===a?(o=n(l.charAt(e))<<2|n(l.charAt(e+1))>>4,u(255&o)):1===a&&(o=n(l.charAt(e))<<10|n(l.charAt(e+1))<<4|n(l.charAt(e+2))>>2,u(o>>8&255),u(255&o)),s}function t(l){function n(l){return e.charAt(l)}function u(l){return n(l>>18&63)+n(l>>12&63)+n(l>>6&63)+n(63&l)}var t,r,i,o=l.length%3,a="";for(t=0,i=l.length-o;t>2),a+=n(r<<4&63),a+="==";break;case 2:r=(l[l.length-2]<<8)+l[l.length-1],a+=n(r>>10),a+=n(r>>4&63),a+=n(r<<2&63),a+="="}return a}var r="undefined"!=typeof Uint8Array?Uint8Array:Array,i="+".charCodeAt(0),o="/".charCodeAt(0),a="0".charCodeAt(0),s="a".charCodeAt(0),f="A".charCodeAt(0),c="-".charCodeAt(0),h="_".charCodeAt(0);l.toByteArray=u,l.fromByteArray=t}("undefined"==typeof u?this.base64js={}:u)},{}],16:[function(l,n,u){!function(n,u){"use strict";function e(l,n){if(!l)throw new Error(n||"Assertion failed")}function t(l,n){l.super_=n;var u=function(){};u.prototype=n.prototype,l.prototype=new u,l.prototype.constructor=l}function r(l,n,u){return r.isBN(l)?l:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==l&&("le"!==n&&"be"!==n||(u=n,n=10),this._init(l||0,n||10,u||"be"))))}function i(l,n,u){for(var e=0,t=Math.min(l.length,u),r=n;r=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return e}function o(l,n,u,e){for(var t=0,r=Math.min(l.length,u),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function a(l){for(var n=new Array(l.bitLength()),u=0;u>>t}return n}function s(l,n,u){u.negative=n.negative^l.negative;var e=l.length+n.length|0;u.length=e,e=e-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,a=i/67108864|0;u.words[0]=o;for(var s=1;s>>26,c=67108863&a,h=Math.min(s,n.length-1),d=Math.max(0,s-l.length+1);d<=h;d++){var p=s-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}u.words[s]=0|c,a=0|f}return 0!==a?u.words[s]=0|a:u.length--,u.strip()}function f(l,n,u){u.negative=n.negative^l.negative,u.length=l.length+n.length;for(var e=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}u.words[r]=o,e=i,i=t}return 0!==e?u.words[r]=e:u.length--,u.strip()}function c(l,n,u){var e=new h;return e.mulp(l,n,u)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else e(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){g.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:u.BN=r,r.BN=r,r.wordSize=26;var _;try{_=l("buffer").Buffer}catch(w){}r.isBN=function(l){return l instanceof r||null!==l&&"object"==typeof l&&l.constructor.wordSize===r.wordSize&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,u){if("number"==typeof l)return this._initNumber(l,n,u);if("object"==typeof l)return this._initArray(l,n,u);"hex"===n&&(n=16),e(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initNumber=function(l,n,u){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(e(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initArray=function(l,n,u){if(e("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===u)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var u=0;u=n;u-=6)t=i(l,u,u+6),this.words[e]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,e++);u+6!==n&&(t=i(l,n,u+6),this.words[e]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,u){this.words=[0],this.length=1;for(var e=0,t=1;t<=67108863;t*=n)e++;e--,t=t/n|0;for(var r=l.length-u,i=r%e,a=Math.min(r,r-i)+u,s=0,f=u;f1&&0===this.words[this.length-1];)this.length--; -return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var u;if(16===l||"hex"===l){u="";for(var t=0,r=0,i=0;i>>24-t&16777215,u=0!==r||i!==this.length-1?k[6-a.length]+a+u:a+u,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(u=r.toString(16)+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}if(l===(0|l)&&l>=2&&l<=36){var s=S[l],f=E[l];u="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),u=c.isZero()?h+u:k[s-h.length]+h+u}for(this.isZero()&&(u="0"+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}e(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&e(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return e("undefined"!=typeof _),this.toArrayLike(_,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,u){var t=this.byteLength(),r=u||Math.max(1,t);e(t<=r,"byte array longer than desired length"),e(r>0,"Requested array length <= 0"),this.strip();var i,o,a="le"===n,s=new l(r),f=this.clone();if(a){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),s[o]=i;for(;o=4096&&(u+=13,n>>>=13),n>=64&&(u+=7,n>>>=7),n>=8&&(u+=4,n>>>=4),n>=2&&(u+=2,n>>>=2),u+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,u=0;return 0===(8191&n)&&(u+=13,n>>>=13),0===(127&n)&&(u+=7,n>>>=7),0===(15&n)&&(u+=4,n>>>=4),0===(3&n)&&(u+=2,n>>>=2),0===(1&n)&&u++,u},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var u=0;ul.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,u;this.length>l.length?(n=this,u=l):(n=l,u=this);for(var e=0;el.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){e("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),u=l%26;this._expand(n),u>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-u),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){e("number"==typeof l&&l>=0);var u=l/26|0,t=l%26;return this._expand(u+1),n?this.words[u]=this.words[u]|1<l.length?(u=this,e=l):(u=l,e=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=u.length,0!==t)this.words[this.length]=t,this.length++;else if(u!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var u=this.cmp(l);if(0===u)return this.negative=0,this.length=1,this.words[0]=0,this;var e,t;u>0?(e=this,t=l):(e=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],y=8191&v,g=v>>>13,m=0|i[3],_=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,A=M>>>13,x=0|i[6],B=8191&x,j=x>>>13,R=0|i[7],O=8191&R,C=R>>>13,P=0|i[8],U=8191&P,T=P>>>13,L=0|i[9],N=8191&L,D=L>>>13,q=0|o[0],z=8191&q,F=q>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,Z=0|o[3],G=8191&Z,J=Z>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],ul=8191&nl,el=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],al=8191&ol,sl=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;u.negative=l.negative^n.negative,u.length=19,e=Math.imul(c,z),t=Math.imul(c,F),t=t+Math.imul(h,z)|0,r=Math.imul(h,F);var vl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,e=Math.imul(p,z),t=Math.imul(p,F),t=t+Math.imul(b,z)|0,r=Math.imul(b,F),e=e+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var yl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,e=Math.imul(y,z),t=Math.imul(y,F),t=t+Math.imul(g,z)|0,r=Math.imul(g,F),e=e+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,e=e+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var gl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,e=Math.imul(_,z),t=Math.imul(_,F),t=t+Math.imul(w,z)|0,r=Math.imul(w,F),e=e+Math.imul(y,H)|0,t=t+Math.imul(y,V)|0,t=t+Math.imul(g,H)|0,r=r+Math.imul(g,V)|0,e=e+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,e=e+Math.imul(c,G)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,G)|0,r=r+Math.imul(h,J)|0;var ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,e=Math.imul(S,z),t=Math.imul(S,F),t=t+Math.imul(E,z)|0,r=Math.imul(E,F),e=e+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,e=e+Math.imul(y,W)|0,t=t+Math.imul(y,X)|0,t=t+Math.imul(g,W)|0,r=r+Math.imul(g,X)|0,e=e+Math.imul(p,G)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,G)|0,r=r+Math.imul(b,J)|0,e=e+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var _l=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,e=Math.imul(I,z),t=Math.imul(I,F),t=t+Math.imul(A,z)|0,r=Math.imul(A,F),e=e+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,e=e+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,e=e+Math.imul(y,G)|0,t=t+Math.imul(y,J)|0,t=t+Math.imul(g,G)|0,r=r+Math.imul(g,J)|0,e=e+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,e=e+Math.imul(c,ul)|0,t=t+Math.imul(c,el)|0,t=t+Math.imul(h,ul)|0,r=r+Math.imul(h,el)|0;var wl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,e=Math.imul(B,z),t=Math.imul(B,F),t=t+Math.imul(j,z)|0,r=Math.imul(j,F),e=e+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(A,H)|0,r=r+Math.imul(A,V)|0,e=e+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,e=e+Math.imul(_,G)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(w,G)|0,r=r+Math.imul(w,J)|0,e=e+Math.imul(y,Q)|0,t=t+Math.imul(y,ll)|0,t=t+Math.imul(g,Q)|0,r=r+Math.imul(g,ll)|0,e=e+Math.imul(p,ul)|0,t=t+Math.imul(p,el)|0,t=t+Math.imul(b,ul)|0,r=r+Math.imul(b,el)|0,e=e+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,e=Math.imul(O,z),t=Math.imul(O,F),t=t+Math.imul(C,z)|0,r=Math.imul(C,F),e=e+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,e=e+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(A,W)|0,r=r+Math.imul(A,X)|0,e=e+Math.imul(S,G)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,G)|0,r=r+Math.imul(E,J)|0,e=e+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,e=e+Math.imul(y,ul)|0,t=t+Math.imul(y,el)|0,t=t+Math.imul(g,ul)|0,r=r+Math.imul(g,el)|0,e=e+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,e=e+Math.imul(c,al)|0,t=t+Math.imul(c,sl)|0,t=t+Math.imul(h,al)|0,r=r+Math.imul(h,sl)|0;var Sl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,e=Math.imul(U,z),t=Math.imul(U,F),t=t+Math.imul(T,z)|0,r=Math.imul(T,F),e=e+Math.imul(O,H)|0,t=t+Math.imul(O,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,e=e+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,e=e+Math.imul(I,G)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(A,G)|0,r=r+Math.imul(A,J)|0,e=e+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,e=e+Math.imul(_,ul)|0,t=t+Math.imul(_,el)|0,t=t+Math.imul(w,ul)|0,r=r+Math.imul(w,el)|0,e=e+Math.imul(y,rl)|0,t=t+Math.imul(y,il)|0,t=t+Math.imul(g,rl)|0,r=r+Math.imul(g,il)|0,e=e+Math.imul(p,al)|0,t=t+Math.imul(p,sl)|0,t=t+Math.imul(b,al)|0,r=r+Math.imul(b,sl)|0,e=e+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,e=Math.imul(N,z),t=Math.imul(N,F),t=t+Math.imul(D,z)|0,r=Math.imul(D,F),e=e+Math.imul(U,H)|0,t=t+Math.imul(U,V)|0,t=t+Math.imul(T,H)|0,r=r+Math.imul(T,V)|0,e=e+Math.imul(O,W)|0,t=t+Math.imul(O,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,e=e+Math.imul(B,G)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(j,G)|0,r=r+Math.imul(j,J)|0,e=e+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(A,Q)|0,r=r+Math.imul(A,ll)|0,e=e+Math.imul(S,ul)|0,t=t+Math.imul(S,el)|0,t=t+Math.imul(E,ul)|0,r=r+Math.imul(E,el)|0,e=e+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,e=e+Math.imul(y,al)|0,t=t+Math.imul(y,sl)|0,t=t+Math.imul(g,al)|0,r=r+Math.imul(g,sl)|0,e=e+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,e=e+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,e=Math.imul(N,H),t=Math.imul(N,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),e=e+Math.imul(U,W)|0,t=t+Math.imul(U,X)|0,t=t+Math.imul(T,W)|0,r=r+Math.imul(T,X)|0,e=e+Math.imul(O,G)|0,t=t+Math.imul(O,J)|0,t=t+Math.imul(C,G)|0,r=r+Math.imul(C,J)|0,e=e+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,e=e+Math.imul(I,ul)|0,t=t+Math.imul(I,el)|0,t=t+Math.imul(A,ul)|0,r=r+Math.imul(A,el)|0,e=e+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,e=e+Math.imul(_,al)|0,t=t+Math.imul(_,sl)|0,t=t+Math.imul(w,al)|0,r=r+Math.imul(w,sl)|0,e=e+Math.imul(y,cl)|0,t=t+Math.imul(y,hl)|0,t=t+Math.imul(g,cl)|0,r=r+Math.imul(g,hl)|0,e=e+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,e=Math.imul(N,W),t=Math.imul(N,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),e=e+Math.imul(U,G)|0,t=t+Math.imul(U,J)|0,t=t+Math.imul(T,G)|0,r=r+Math.imul(T,J)|0,e=e+Math.imul(O,Q)|0,t=t+Math.imul(O,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,e=e+Math.imul(B,ul)|0,t=t+Math.imul(B,el)|0,t=t+Math.imul(j,ul)|0,r=r+Math.imul(j,el)|0,e=e+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(A,rl)|0,r=r+Math.imul(A,il)|0,e=e+Math.imul(S,al)|0,t=t+Math.imul(S,sl)|0,t=t+Math.imul(E,al)|0,r=r+Math.imul(E,sl)|0,e=e+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,e=e+Math.imul(y,pl)|0,t=t+Math.imul(y,bl)|0,t=t+Math.imul(g,pl)|0,r=r+Math.imul(g,bl)|0;var Al=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,e=Math.imul(N,G),t=Math.imul(N,J),t=t+Math.imul(D,G)|0,r=Math.imul(D,J),e=e+Math.imul(U,Q)|0,t=t+Math.imul(U,ll)|0,t=t+Math.imul(T,Q)|0,r=r+Math.imul(T,ll)|0,e=e+Math.imul(O,ul)|0,t=t+Math.imul(O,el)|0,t=t+Math.imul(C,ul)|0,r=r+Math.imul(C,el)|0,e=e+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,e=e+Math.imul(I,al)|0,t=t+Math.imul(I,sl)|0,t=t+Math.imul(A,al)|0,r=r+Math.imul(A,sl)|0,e=e+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,e=e+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var xl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,e=Math.imul(N,Q),t=Math.imul(N,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),e=e+Math.imul(U,ul)|0,t=t+Math.imul(U,el)|0,t=t+Math.imul(T,ul)|0,r=r+Math.imul(T,el)|0,e=e+Math.imul(O,rl)|0,t=t+Math.imul(O,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,e=e+Math.imul(B,al)|0,t=t+Math.imul(B,sl)|0,t=t+Math.imul(j,al)|0,r=r+Math.imul(j,sl)|0,e=e+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(A,cl)|0,r=r+Math.imul(A,hl)|0,e=e+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var Bl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,e=Math.imul(N,ul),t=Math.imul(N,el),t=t+Math.imul(D,ul)|0,r=Math.imul(D,el),e=e+Math.imul(U,rl)|0,t=t+Math.imul(U,il)|0,t=t+Math.imul(T,rl)|0,r=r+Math.imul(T,il)|0,e=e+Math.imul(O,al)|0,t=t+Math.imul(O,sl)|0,t=t+Math.imul(C,al)|0,r=r+Math.imul(C,sl)|0,e=e+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,e=e+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(A,pl)|0,r=r+Math.imul(A,bl)|0;var jl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,e=Math.imul(N,rl),t=Math.imul(N,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),e=e+Math.imul(U,al)|0,t=t+Math.imul(U,sl)|0,t=t+Math.imul(T,al)|0,r=r+Math.imul(T,sl)|0,e=e+Math.imul(O,cl)|0,t=t+Math.imul(O,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,e=e+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Rl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,e=Math.imul(N,al),t=Math.imul(N,sl),t=t+Math.imul(D,al)|0,r=Math.imul(D,sl),e=e+Math.imul(U,cl)|0,t=t+Math.imul(U,hl)|0,t=t+Math.imul(T,cl)|0,r=r+Math.imul(T,hl)|0,e=e+Math.imul(O,pl)|0,t=t+Math.imul(O,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Ol=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,e=Math.imul(N,cl),t=Math.imul(N,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),e=e+Math.imul(U,pl)|0,t=t+Math.imul(U,bl)|0,t=t+Math.imul(T,pl)|0,r=r+Math.imul(T,bl)|0;var Cl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,e=Math.imul(N,pl),t=Math.imul(N,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Pl=(s+e|0)+((8191&t)<<13)|0;return s=(r+(t>>>13)|0)+(Pl>>>26)|0,Pl&=67108863,a[0]=vl,a[1]=yl,a[2]=gl,a[3]=ml,a[4]=_l,a[5]=wl,a[6]=kl,a[7]=Sl,a[8]=El,a[9]=Ml,a[10]=Il,a[11]=Al,a[12]=xl,a[13]=Bl,a[14]=jl,a[15]=Rl,a[16]=Ol,a[17]=Cl,a[18]=Pl,0!==s&&(a[19]=s,u.length++),u};Math.imul||(M=s),r.prototype.mulTo=function(l,n){var u,e=this.length+l.length;return u=10===this.length&&10===l.length?M(this,l,n):e<63?s(this,l,n):e<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),u=r.prototype._countBits(l)-1,e=0;e>=1;return e},h.prototype.permute=function(l,n,u,e,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,u[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[u]=67108863&r}return 0!==n&&(this.words[u]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=a(l);if(0===n.length)return new r(1);for(var u=this,e=0;e=0);var n,u=l%26,t=(l-u)/26,r=67108863>>>26-u<<26-u;if(0!==u){var i=0;for(n=0;n>>26-u}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,s=0;s=0&&(0!==f||s>=t);s--){var c=0|this.words[s];this.words[s]=f<<26-r|c>>>r,f=c&o}return a&&0!==f&&(a.words[a.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,u){return e(0===this.negative),this.iushrn(l,n,u)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){e("number"==typeof l&&l>=0);var n=l%26,u=(l-n)/26,t=1<=0);var n=l%26,u=(l-n)/26;if(e(0===this.negative,"imaskn works only with positive numbers"),this.length<=u)return this;if(0!==n&&u++,this.length=Math.min(u,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(e("number"==typeof l),e(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(a/67108864|0),this.words[t+u]=67108863&i}for(;t>26,this.words[t+u]=67108863&i;if(0===o)return this.strip();for(e(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var u=this.length-l.length,e=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);u=26-o,0!==u&&(t=t.ushln(u),e.iushln(u),i=0|t.words[t.length-1]);var a,s=e.length-t.length;if("mod"!==n){a=new r(null),a.length=s+1,a.words=new Array(a.length);for(var f=0;f=0;h--){var d=67108864*(0|e.words[t.length+h])+(0|e.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),e._ishlnsubmul(t,d,h);0!==e.negative;)d--,e.negative=0,e._ishlnsubmul(t,1,h),e.isZero()||(e.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),e.strip(),"div"!==n&&0!==u&&e.iushrn(u),{div:a||null,mod:e}},r.prototype.divmod=function(l,n,u){if(e(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var u=0!==n.div.negative?n.mod.isub(l):n.mod,e=l.ushrn(1),t=l.andln(1),r=u.cmp(e);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){e(l<=67108863);for(var n=(1<<26)%l,u=0,t=this.length-1;t>=0;t--)u=(n*u+(0|this.words[t]))%l;return u},r.prototype.idivn=function(l){e(l<=67108863);for(var n=0,u=this.length-1;u>=0;u--){var t=(0|this.words[u])+67108864*n;this.words[u]=t/l|0,n=t%l}return this.strip()},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),a=new r(1),s=0;n.isEven()&&u.isEven();)n.iushrn(1),u.iushrn(1),++s;for(var f=u.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(u.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(u.iushrn(p);p-- >0;)(o.isOdd()||a.isOdd())&&(o.iadd(f),a.isub(c)),o.iushrn(1),a.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(o),i.isub(a)):(u.isub(n),o.isub(t),a.isub(i))}return{a:o,b:a,gcd:u.iushln(s)}},r.prototype._invmp=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=u.clone();n.cmpn(1)>0&&u.cmpn(1)>0;){for(var a=0,s=1;0===(n.words[0]&s)&&a<26;++a,s<<=1);if(a>0)for(n.iushrn(a);a-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(u.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(u.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(i)):(u.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),u=l.clone();n.negative=0,u.negative=0;for(var e=0;n.isEven()&&u.isEven();e++)n.iushrn(1),u.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;u.isEven();)u.iushrn(1);var t=n.cmp(u);if(t<0){var r=n;n=u,u=r}else if(0===t||0===u.cmpn(1))break;n.isub(u)}return u.iushln(e)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){e("number"==typeof l);var n=l%26,u=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var u;if(this.length>1)u=1;else{n&&(l=-l),e(l<=67108863,"Number is too big");var t=0|this.words[0];u=t===l?0:tl.length)return 1;if(this.length=0;u--){var e=0|this.words[u],t=0|l.words[u];if(e!==t){et&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new g(l)},r.prototype.toRed=function(l){return e(!this.red,"Already a number in reduction context"),e(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return e(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return e(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return e(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return e(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return e(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return e(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return e(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return e(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return e(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return e(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){ -return e(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return e(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return e(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,u=l;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),n=u.bitLength();while(n>this.n);var e=n0?u.isub(this.p):u.strip(),u},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var u=4194303,e=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,u=0;u>>=26,l.words[u]=t,n=e}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function A(l){if(I[l])return I[l];var A;if("k256"===l)A=new p;else if("p224"===l)A=new b;else if("p192"===l)A=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);A=new y}return I[l]=A,A},g.prototype._verify1=function(l){e(0===l.negative,"red works only with positives"),e(l.red,"red works only with red numbers")},g.prototype._verify2=function(l,n){e(0===(l.negative|n.negative),"red works only with positives"),e(l.red&&l.red===n.red,"red works only with red numbers")},g.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},g.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},g.prototype.add=function(l,n){this._verify2(l,n);var u=l.add(n);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},g.prototype.iadd=function(l,n){this._verify2(l,n);var u=l.iadd(n);return u.cmp(this.m)>=0&&u.isub(this.m),u},g.prototype.sub=function(l,n){this._verify2(l,n);var u=l.sub(n);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},g.prototype.isub=function(l,n){this._verify2(l,n);var u=l.isub(n);return u.cmpn(0)<0&&u.iadd(this.m),u},g.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},g.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},g.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},g.prototype.isqr=function(l){return this.imul(l,l.clone())},g.prototype.sqr=function(l){return this.mul(l,l)},g.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(e(n%2===1),3===n){var u=this.m.add(new r(1)).iushrn(2);return this.pow(l,u)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);e(!t.isZero());var o=new r(1).toRed(this),a=o.redNeg(),s=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,s).cmp(a);)f.redIAdd(a);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();e(v=0;t--){for(var f=n.words[t],c=s-1;c>=0;c--){var h=f>>c&1;i!==e[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,a++,(a===u||0===t&&0===c)&&(i=this.mul(i,e[o]),a=0,o=0)):a=0}s=26}return i},g.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},g.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,g),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var u=l.imul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var u=l.mul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],17:[function(l,n,u){function e(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new e(null)),t.generate(l)},n.exports.Rand=e,e.prototype.generate=function(l){return this._rand(l)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.crypto.getRandomValues(n),n}:window.msCrypto&&window.msCrypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.msCrypto.getRandomValues(n),n}:e.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var r=l("crypto");e.prototype._rand=function(l){return r.randomBytes(l)}}catch(i){e.prototype._rand=function(l){for(var n=new Uint8Array(l),u=0;uo||l<0?(u=Math.abs(l)%o,l<0?o-u:u):l}function e(l){for(var n=0;n>>8^255&u^99,this.SBOX[t]=u,this.INV_SBOX[u]=t,r=l[t],i=l[r],o=l[i],e=257*l[u]^16843008*u,this.SUB_MIX[0][t]=e<<24|e>>>8,this.SUB_MIX[1][t]=e<<16|e>>>16,this.SUB_MIX[2][t]=e<<8|e>>>24,this.SUB_MIX[3][t]=e,e=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][u]=e<<24|e>>>8,this.INV_SUB_MIX[1][u]=e<<16|e>>>16,this.INV_SUB_MIX[2][u]=e<<8|e>>>24,this.INV_SUB_MIX[3][u]=e,0===t?t=a=1:(t=r^l[l[l[o^r]]],a^=l[l[a]]);return!0};var a=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,u,e,t,r;for(u=this._key,n=u.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],e=0;e>>24,r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r],r^=a.RCON[e/n|0]<<24):n>6&&e%n===4?r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r]:void 0,this._keySchedule[e-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^a.INV_SUB_MIX[1][a.SBOX[r>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[r>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var u=this._doCryptBlock(n,this._keySchedule,a.SUB_MIX,a.SBOX),e=new l(16);return e.writeUInt32BE(u[0],0),e.writeUInt32BE(u[1],4),e.writeUInt32BE(u[2],8),e.writeUInt32BE(u[3],12),e},i.prototype.decryptBlock=function(n){n=r(new l(n));var u=[n[3],n[1]];n[1]=u[0],n[3]=u[1];var e=this._doCryptBlock(n,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX),t=new l(16);return t.writeUInt32BE(e[0],0),t.writeUInt32BE(e[3],4),t.writeUInt32BE(e[2],8),t.writeUInt32BE(e[1],12),t},i.prototype.scrub=function(){e(this._keySchedule),e(this._invKeySchedule),e(this._key)},i.prototype._doCryptBlock=function(l,u,e,t){var r,i,o,a,s,f,c,h,d;i=l[0]^u[0],o=l[1]^u[1],a=l[2]^u[2],s=l[3]^u[3],r=4;for(var p=1;p>>24]^e[1][o>>>16&255]^e[2][a>>>8&255]^e[3][255&s]^u[r++],c=e[0][o>>>24]^e[1][a>>>16&255]^e[2][s>>>8&255]^e[3][255&i]^u[r++],h=e[0][a>>>24]^e[1][s>>>16&255]^e[2][i>>>8&255]^e[3][255&o]^u[r++],d=e[0][s>>>24]^e[1][i>>>16&255]^e[2][o>>>8&255]^e[3][255&a]^u[r++],i=f,o=c,a=h,s=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[a>>>8&255]<<8|t[255&s])^u[r++],c=(t[o>>>24]<<24|t[a>>>16&255]<<16|t[s>>>8&255]<<8|t[255&i])^u[r++],h=(t[a>>>24]<<24|t[s>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^u[r++],d=(t[s>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&a])^u[r++],[n(f),n(c),n(h),n(d)]},u.AES=i}).call(this,l("buffer").Buffer)},{buffer:46}],20:[function(l,n,u){(function(u){function e(l,n,t,o){if(!(this instanceof e))return new e(l,n,t);i.call(this),this._finID=u.concat([t,new u([0,0,0,1])]),t=u.concat([t,new u([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new u(t.length),this._cache=new u(""),this._secCache=new u(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var s=new u(4);s.fill(0),this._ghash=new a(this._cipher.encryptBlock(s)),this._authTag=null,this._called=!1}function t(l,n){var u=0;l.length!==n.length&&u++;for(var e=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};u.createDecipher=o,u.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,buffer:46,"cipher-base":48,evp_bytestokey:84,inherits:93}],23:[function(l,n,u){(function(n){function e(l,u,r){return this instanceof e?(a.call(this),this._cache=new t,this._cipher=new o.AES(u),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new e(l,u,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,u,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof u&&(u=new n(u)),u.length!==r.key/8)throw new TypeError("invalid key length "+u.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],u,t):"auth"===r.type?new d(p[r.mode],u,t):new e(p[r.mode],u,t)}function i(l,n){var u=f[l.toLowerCase()];if(!u)throw new TypeError("invalid suite type");var e=c(n,!1,u.key,u.iv);return r(l,e.key,e.iv)}var o=l("./aes"),a=l("cipher-base"),s=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");s(e,a),e.prototype._update=function(l){this._cache.add(l);for(var u,e,t=[];u=this._cache.get();)e=this._mode.encrypt(this,u),t.push(e);return n.concat(t)},e.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},e.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,u=new n(l),e=-1;++ea||l<0?(u=Math.abs(l)%a,l<0?a-u:u):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=u,u.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,u&&(r[0]=r[0]^225<<24)}this.state=t(o)},u.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var u;this.cache.length>=16;)u=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(u)},u.prototype["final"]=function(n,u){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,u])),this.state};var a=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:46}],25:[function(l,n,u){u["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},u["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},u["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},u["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},u["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},u["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},u.aes128=u["aes-128-cbc"],u.aes192=u["aes-192-cbc"],u.aes256=u["aes-256-cbc"],u["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},u["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},u["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},u["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},u["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},u["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},u["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},u["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},u["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},u["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},u["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},u["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},u["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},u["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},u["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},u["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},u["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},u["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],26:[function(l,n,u){var e=l("buffer-xor");u.encrypt=function(l,n){var u=e(n,l._prev);return l._prev=l._cipher.encryptBlock(u),l._prev},u.decrypt=function(l,n){var u=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return e(t,u)}},{"buffer-xor":45}],27:[function(l,n,u){(function(n){function e(l,u,e){var r=u.length,i=t(u,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,e?u:i]),i}var t=l("buffer-xor");u.encrypt=function(l,u,t){for(var r,i=new n("");u.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=u.length)){i=n.concat([i,e(l,u,t)]);break}r=l._cache.length,i=n.concat([i,e(l,u.slice(0,r),t)]),u=u.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:46,"buffer-xor":45}],28:[function(l,n,u){(function(l){function n(l,n,u){for(var t,r,i,o=-1,a=8,s=0;++o>o%8,l._prev=e(l._prev,u?r:i);return s}function e(n,u){var e=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([u])]);++t>7;return r}u.encrypt=function(u,e,t){for(var r=e.length,i=new l(r),o=-1;++o=0||!u.umod(l.prime1)||!u.umod(l.prime2);)u=new i(o(n));return u}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46,randombytes:112}],38:[function(l,n,u){(function(l){"use strict";u["RSA-SHA224"]=u.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},u["RSA-SHA256"]=u.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},u["RSA-SHA384"]=u.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},u["RSA-SHA512"]=u.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},u["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},u["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},u.DSA=u["DSA-SHA1"]=u["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},u["DSA-SHA224"]=u["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224",id:new l("","hex")},u["DSA-SHA256"]=u["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},u["DSA-SHA384"]=u["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},u["DSA-SHA512"]=u["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},u["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},u["RSA-RIPEMD160"]=u.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},u["RSA-MD5"]=u.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:46}],39:[function(l,n,u){(function(u){function e(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new e(l)}function i(l){return new t(l)}var o=l("./algos"),a=l("create-hash"),s=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),s(e,c.Writable),e.prototype._write=function(l,n,u){this._hash.update(l),u()},e.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},e.prototype.sign=function(l,n){this.end();var e=this._hash.digest(),t=f(u.concat([this._tag,e]),l,this._hashType,this._signType);return n?t.toString(n):t},s(t,c.Writable),t.prototype._write=function(l,n,u){this._hash.update(l),u()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,e){"string"==typeof n&&(n=new u(n,e)),this.end();var t=this._hash.digest();return h(n,u.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":38,"./sign":41,"./verify":42,buffer:46,"create-hash":51,inherits:93,stream:122}],40:[function(l,n,u){"use strict";u["1.3.132.0.10"]="secp256k1",u["1.3.132.0.33"]="p224",u["1.2.840.10045.3.1.1"]="p192",u["1.2.840.10045.3.1.7"]="p256",u["1.3.132.0.34"]="p384",u["1.3.132.0.35"]="p521"},{}],41:[function(l,n,u){(function(u){function e(l,n,u,e){var i=v(n);if(i.curve){if("ecdsa"!==e)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==e)throw new Error("wrong private key type");return r(l,i,u)}if("rsa"!==e)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),a=[0,1];l.length+a.length+10&&u.ishrn(e),u}function s(l,n){l=a(l,n),l=l.mod(n);var e=new u(l.toArray());if(e.length=n)throw new Error("invalid sig")}var o=l("./curves"),a=l("elliptic"),s=l("parse-asn1"),f=l("bn.js"),c=a.ec;n.exports=e}).call(this,l("buffer").Buffer)},{"./curves":40,"bn.js":16,buffer:46,elliptic:66,"parse-asn1":101}],43:[function(l,n,u){arguments[4][18][0].apply(u,arguments)},{dup:18}],44:[function(l,n,u){(function(n){"use strict";var e=l("buffer"),t=e.Buffer,r=e.SlowBuffer,i=e.kMaxLength||2147483647;u.alloc=function(l,n,u){if("function"==typeof t.alloc)return t.alloc(l,n,u);if("number"==typeof u)throw new TypeError("encoding must not be number");if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var e=u,r=n;void 0===r&&(e=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var a=new t(r,e),s=a.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},u.from=function(l,u,e){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,u,e);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,u);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=u;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=e;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},u.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:46}],45:[function(l,n,u){(function(l){n.exports=function(n,u){for(var e=Math.min(n.length,u.length),t=new l(e),r=0;r1?arguments[1]:"utf8"):a(this,l)):arguments.length>1?new r(l,arguments[1]):new r(l)}function i(l,n){if(l=b(l,n<0?0:0|v(n)),!r.TYPED_ARRAY_SUPPORT)for(var u=0;u>>1;return u&&(l.parent=J),l}function v(l){if(l>=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function y(l,n){if(!(this instanceof y))return new y(l,n);var u=new r(l,n);return delete u.parent,u}function g(l,n){"string"!=typeof l&&(l=""+l);var u=l.length;if(0===u)return 0;for(var e=!1;;)switch(n){case"ascii":case"binary":case"raw":case"raws":return u;case"utf8":case"utf-8":return K(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return Y(l).length;default:if(e)return K(l).length;n=(""+n).toLowerCase(),e=!0}}function m(l,n,u){var e=!1;if(n=0|n,u=void 0===u||u===1/0?this.length:0|u,l||(l="utf8"),n<0&&(n=0),u>this.length&&(u=this.length),u<=n)return"";for(;;)switch(l){case"hex":return R(this,n,u);case"utf8":case"utf-8":return A(this,n,u);case"ascii":return B(this,n,u);case"binary":return j(this,n,u);case"base64":return I(this,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,n,u);default:if(e)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),e=!0}}function _(l,n,u,e){u=Number(u)||0;var t=l.length-u;e?(e=Number(e),e>t&&(e=t)):e=t;var r=n.length;if(r%2!==0)throw new Error("Invalid hex string");e>r/2&&(e=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=u){var a,s,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:a=l[t+1],128===(192&a)&&(c=(31&r)<<6|63&a,c>127&&(i=c));break;case 3:a=l[t+1],s=l[t+2],128===(192&a)&&128===(192&s)&&(c=(15&r)<<12|(63&a)<<6|63&s,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:a=l[t+1],s=l[t+2],f=l[t+3],128===(192&a)&&128===(192&s)&&128===(192&f)&&(c=(15&r)<<18|(63&a)<<12|(63&s)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,e.push(i>>>10&1023|55296),i=56320|1023&i),e.push(i),t+=o}return x(e)}function x(l){var n=l.length;if(n<=$)return String.fromCharCode.apply(String,l);for(var u="",e=0;ee)&&(u=e);for(var t="",r=n;ru)throw new RangeError("Trying to access beyond buffer length")}function P(l,n,u,e,t,i){if(!r.isBuffer(l))throw new TypeError("buffer must be a Buffer instance");if(n>t||nl.length)throw new RangeError("index out of range")}function U(l,n,u,e){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-u,2);t>>8*(e?t:1-t)}function T(l,n,u,e){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-u,4);t>>8*(e?t:3-t)&255}function L(l,n,u,e,t,r){if(n>t||nl.length)throw new RangeError("index out of range");if(u<0)throw new RangeError("index out of range")}function N(l,n,u,e,t){return t||L(l,n,u,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(l,n,u,e,23,4),u+4}function D(l,n,u,e,t){return t||L(l,n,u,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(l,n,u,e,52,8),u+8}function q(l){if(l=z(l).replace(ll,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function z(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function F(l){return l<16?"0"+l.toString(16):l.toString(16)}function K(l,n){n=n||1/0;for(var u,e=l.length,t=null,r=[],i=0;i55295&&u<57344){if(!t){if(u>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===e){(n-=3)>-1&&r.push(239,191,189);continue}t=u;continue}if(u<56320){(n-=3)>-1&&r.push(239,191,189),t=u;continue}u=(t-55296<<10|u-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,u<128){if((n-=1)<0)break;r.push(u)}else if(u<2048){if((n-=2)<0)break;r.push(u>>6|192,63&u|128)}else if(u<65536){if((n-=3)<0)break;r.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return r}function H(l){for(var n=[],u=0;u>8,t=u%256,r.push(t),r.push(e);return r}function Y(l){return X.toByteArray(q(l))}function W(l,n,u,e){for(var t=0;t=n.length||t>=l.length);t++)n[t+u]=l[t];return t}var X=l("base64-js"),Z=l("ieee754"),G=l("isarray");u.Buffer=r,u.SlowBuffer=y,u.INSPECT_MAX_BYTES=50,r.poolSize=8192;var J={};r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:e(),r.TYPED_ARRAY_SUPPORT?(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array):(r.prototype.length=void 0,r.prototype.parent=void 0),r.isBuffer=function(l){return!(null==l||!l._isBuffer)},r.compare=function(l,n){if(!r.isBuffer(l)||!r.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var u=l.length,e=n.length,t=0,i=Math.min(u,e);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},r.prototype.compare=function(l){if(!r.isBuffer(l))throw new TypeError("Argument must be a Buffer");return this===l?0:r.compare(this,l)},r.prototype.indexOf=function(l,n){function u(l,n,u){for(var e=-1,t=0;u+t2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(n<0&&(n=Math.max(this.length+n,0)),"string"==typeof l)return 0===l.length?-1:String.prototype.indexOf.call(this,l,n);if(r.isBuffer(l))return u(this,l,n);if("number"==typeof l)return r.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,l,n):u(this,[l],n);throw new TypeError("val must be string, number or Buffer")},r.prototype.get=function(l){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(l)},r.prototype.set=function(l,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(l,n)},r.prototype.write=function(l,n,u,e){if(void 0===n)e="utf8",u=this.length,n=0;else if(void 0===u&&"string"==typeof n)e=n,u=this.length,n=0;else if(isFinite(n))n=0|n,isFinite(u)?(u=0|u,void 0===e&&(e="utf8")):(e=u,u=void 0);else{var t=e;e=n,n=0|u,u=t}var r=this.length-n;if((void 0===u||u>r)&&(u=r),l.length>0&&(u<0||n<0)||n>this.length)throw new RangeError("attempt to write outside buffer bounds");e||(e="utf8");for(var i=!1;;)switch(e){case"hex":return _(this,l,n,u);case"utf8":case"utf-8":return w(this,l,n,u);case"ascii":return k(this,l,n,u);case"binary":return S(this,l,n,u);case"base64":return E(this,l,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,l,n,u);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),i=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;r.prototype.slice=function(l,n){var u=this.length;l=~~l,n=void 0===n?u:~~n,l<0?(l+=u,l<0&&(l=0)):l>u&&(l=u),n<0?(n+=u,n<0&&(n=0)):n>u&&(n=u),n0&&(t*=256);)e+=this[l+--n]*t;return e},r.prototype.readUInt8=function(l,n){return n||C(l,1,this.length),this[l]},r.prototype.readUInt16LE=function(l,n){return n||C(l,2,this.length),this[l]|this[l+1]<<8},r.prototype.readUInt16BE=function(l,n){return n||C(l,2,this.length),this[l]<<8|this[l+1]},r.prototype.readUInt32LE=function(l,n){return n||C(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},r.prototype.readUInt32BE=function(l,n){return n||C(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},r.prototype.readIntLE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=this[l],t=1,r=0;++r=t&&(e-=Math.pow(2,8*n)),e},r.prototype.readIntBE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=n,t=1,r=this[l+--e];e>0&&(t*=256);)r+=this[l+--e]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},r.prototype.readInt8=function(l,n){return n||C(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},r.prototype.readInt16LE=function(l,n){n||C(l,2,this.length);var u=this[l]|this[l+1]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt16BE=function(l,n){n||C(l,2,this.length);var u=this[l+1]|this[l]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt32LE=function(l,n){return n||C(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},r.prototype.readInt32BE=function(l,n){return n||C(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},r.prototype.readFloatLE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!0,23,4)},r.prototype.readFloatBE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!1,23,4)},r.prototype.readDoubleLE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!0,52,8)},r.prototype.readDoubleBE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!1,52,8)},r.prototype.writeUIntLE=function(l,n,u,e){l=+l,n=0|n,u=0|u,e||P(this,l,n,u,Math.pow(2,8*u),0);var t=1,r=0;for(this[n]=255&l;++r=0&&(r*=256);)this[n+t]=l/r&255;return n+u},r.prototype.writeUInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,255,0),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},r.prototype.writeUInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeUInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeUInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):T(this,l,n,!0),n+4},r.prototype.writeUInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeIntLE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=0,i=1,o=l<0?1:0;for(this[n]=255&l;++r>0)-o&255;return n+u},r.prototype.writeIntBE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=u-1,i=1,o=l<0?1:0;for(this[n+r]=255&l;--r>=0&&(i*=256);)this[n+r]=(l/i>>0)-o&255;return n+u},r.prototype.writeInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,127,-128),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},r.prototype.writeInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):T(this,l,n,!0),n+4},r.prototype.writeInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeFloatLE=function(l,n,u){return N(this,l,n,!0,u)},r.prototype.writeFloatBE=function(l,n,u){return N(this,l,n,!1,u)},r.prototype.writeDoubleLE=function(l,n,u){return D(this,l,n,!0,u)},r.prototype.writeDoubleBE=function(l,n,u){return D(this,l,n,!1,u)},r.prototype.copy=function(l,n,u,e){if(u||(u=0),e||0===e||(e=this.length),n>=l.length&&(n=l.length),n||(n=0),e>0&&e=this.length)throw new RangeError("sourceStart out of bounds");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),l.length-n=0;t--)l[t+n]=this[t+u];else if(i<1e3||!r.TYPED_ARRAY_SUPPORT)for(t=0;t=this.length)throw new RangeError("start out of bounds");if(u<0||u>this.length)throw new RangeError("end out of bounds");var e;if("number"==typeof l)for(e=n;e>5]|=128<>>9<<4)+14]=n;for(var u=1732584193,e=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(u>>16);return e<<16|65535&u}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,e,16)}},{"./helpers":52}],54:[function(l,n,u){(function(u){"use strict";function e(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new u(n));var e="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>e?n=t(l).update(n).digest():n.length0;e--)n+=this._buffer(l,n),u+=this._flushBuffer(t,u);return n+=this._buffer(l,n),t},e.prototype["final"]=function(l){var n;l&&(n=this.update(l));var u;return u="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(u):u},e.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];u=a.r28shl(u,i),e=a.r28shl(e,i),a.pc2(u,e,l.keys,t)}},t.prototype._update=function(l,n,u,e){var t=this._desState,r=a.readUInt32BE(l,n),i=a.readUInt32BE(l,n+4);a.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],a.writeUInt32BE(u,r,e),a.writeUInt32BE(u,i,e+4)},t.prototype._pad=function(l,n){for(var u=l.length-n,e=n;e>>0,r=d}a.rip(i,r,e,t)},t.prototype._decrypt=function(l,n,u,e,t){for(var r=u,i=n,o=l.keys.length-2;o>=0;o-=2){var s=l.keys[o],f=l.keys[o+1];a.expand(r,l.tmp,0),s^=l.tmp[0],f^=l.tmp[1];var c=a.substitute(s,f),h=a.permute(c),d=r;r=(i^h)>>>0,i=d}a.rip(r,i,e,t)}},{"../des":56,inherits:93,"minimalistic-assert":96}],60:[function(l,n,u){"use strict";function e(l,n){r.equal(n.length,24,"Invalid key length");var u=n.slice(0,8),e=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[s.create({type:"encrypt",key:u}),s.create({type:"decrypt",key:e}),s.create({type:"encrypt",key:t})]:this.ciphers=[s.create({type:"decrypt",key:t}),s.create({type:"encrypt",key:e}),s.create({type:"decrypt",key:u})]}function t(l){a.call(this,l);var n=new e(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),a=o.Cipher,s=o.DES;i(t,a),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,u,e){var t=this._edeState;t.ciphers[0]._update(l,n,u,e),t.ciphers[1]._update(u,e,u,e),t.ciphers[2]._update(u,e,u,e)},t.prototype._pad=s.prototype._pad,t.prototype._unpad=s.prototype._unpad},{"../des":56,inherits:93,"minimalistic-assert":96}],61:[function(l,n,u){"use strict";u.readUInt32BE=function(l,n){var u=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return u>>>0},u.writeUInt32BE=function(l,n,u){l[0+u]=n>>>24,l[1+u]=n>>>16&255,l[2+u]=n>>>8&255,l[3+u]=255&n},u.ip=function(l,n,u,e){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}u[e+0]=t>>>0,u[e+1]=r>>>0},u.rip=function(l,n,u,e){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.pc1=function(l,n,u,e){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.r28shl=function(l,n){return l<>>28-n};var e=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];u.pc2=function(l,n,u,t){for(var r=0,i=0,o=e.length>>>1,a=0;a>>e[a]&1;for(var a=o;a>>e[a]&1;u[t+0]=r>>>0,u[t+1]=i>>>0},u.expand=function(l,n,u){var e=0,t=0;e=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)e<<=6,e|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[u+0]=e>>>0,n[u+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];u.substitute=function(l,n){for(var u=0,e=0;e<4;e++){var r=l>>>18-6*e&63,i=t[64*e+r];u<<=4,u|=i}for(var e=0;e<4;e++){var r=n>>>18-6*e&63,i=t[256+64*e+r];u<<=4,u|=i}return u>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];u.permute=function(l){for(var n=0,u=0;u>>r[u]&1;return n>>>0},u.padSplit=function(l,n,u){for(var e=l.toString(2);e.lengthl;)u.ishrn(1);if(u.isEven()&&u.iadd(h),u.testn(1)||u.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;u.mod(b).cmp(v);)u.iadd(g)}else for(;u.mod(s).cmp(y);)u.iadd(g);if(e=u.shrn(1),t(e)&&t(u)&&r(e)&&r(u)&&c.test(e)&&c.test(u))return u}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var a=l("bn.js"),s=new a(24),f=l("miller-rabin"),c=new f,h=new a(1),d=new a(2),p=new a(5),b=(new a(16),new a(8),new a(10)),v=new a(3),y=(new a(7),new a(11)),g=new a(4),m=(new a(12),null)},{"bn.js":16,"miller-rabin":95,randombytes:112}],65:[function(l,n,u){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],66:[function(l,n,u){"use strict";var e=u;e.version=l("../package.json").version,e.utils=l("./elliptic/utils"),e.rand=l("brorand"),e.hmacDRBG=l("./elliptic/hmac-drbg"),e.curve=l("./elliptic/curve"),e.curves=l("./elliptic/curves"),e.ec=l("./elliptic/ec"),e.eddsa=l("./elliptic/eddsa")},{"../package.json":82,"./elliptic/curve":69,"./elliptic/curves":72,"./elliptic/ec":73,"./elliptic/eddsa":76,"./elliptic/hmac-drbg":79,"./elliptic/utils":81,brorand:17}],67:[function(l,n,u){"use strict";function e(l,n){this.type=l,this.p=new r(n.p,16),this.red=n.prime?r.red(n.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=n.n&&new r(n.n,16),this.g=n.g&&this.pointFromJSON(n.g,n.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var u=this.n&&this.p.div(this.n);!u||u.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function t(l,n){this.curve=l,this.type=n,this.precomputed=null}var r=l("bn.js"),i=l("../../elliptic"),o=i.utils,a=o.getNAF,s=o.getJSF,f=o.assert;n.exports=e,e.prototype.point=function(){throw new Error("Not implemented")},e.prototype.validate=function(){throw new Error("Not implemented")},e.prototype._fixedNafMul=function(l,n){f(l.precomputed);var u=l._getDoubles(),e=a(n,1),t=(1<=i;n--)o=(o<<1)+e[n];r.push(o)}for(var s=this.jpoint(null,null,null),c=this.jpoint(null,null,null),h=t;h>0;h--){for(var i=0;i=0;o--){for(var n=0;o>=0&&0===r[o];o--)n++;if(o>=0&&n++,i=i.dblp(n),o<0)break;var s=r[o];f(0!==s),i="affine"===l.type?s>0?i.mixedAdd(t[s-1>>1]):i.mixedAdd(t[-s-1>>1].neg()):s>0?i.add(t[s-1>>1]):i.add(t[-s-1>>1].neg())}return"affine"===l.type?i.toP():i},e.prototype._wnafMulAdd=function(l,n,u,e,t){for(var r=this._wnafT1,i=this._wnafT2,o=this._wnafT3,f=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===r[p]&&1===r[b]){var v=[n[p],null,null,n[b]];0===n[p].y.cmp(n[b].y)?(v[1]=n[p].add(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg())):0===n[p].y.cmp(n[b].y.redNeg())?(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].add(n[b].neg())):(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=s(u[p],u[b]);f=Math.max(g[0].length,f),o[p]=new Array(f),o[b]=new Array(f);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var M=!0,m=0;m=0&&E++,k=k.dblp(E),c<0)break;for(var m=0;m0?h=i[m][I-1>>1]:I<0&&(h=i[m][-I-1>>1].neg()),k="affine"===h.type?k.mixedAdd(h):k.add(h))}}for(var c=0;c=Math.ceil((l.bitLength()+1)/n.step)},t.prototype._getDoubles=function(l,n){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var u=[this],e=this,t=0;t":""},t.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},t.prototype._extDbl=function(){var l=this.x.redSqr(),n=this.y.redSqr(),u=this.z.redSqr();u=u.redIAdd(u);var e=this.curve._mulA(l),t=this.x.redAdd(this.y).redSqr().redISub(l).redISub(n),r=e.redAdd(n),i=r.redSub(u),o=e.redSub(n),a=t.redMul(i),s=r.redMul(o),f=t.redMul(o),c=i.redMul(r);return this.curve.point(a,s,c,f)},t.prototype._projDbl=function(){var l,n,u,e=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),r=this.y.redSqr();if(this.curve.twisted){var i=this.curve._mulA(t),o=i.redAdd(r);if(this.zOne)l=e.redSub(t).redSub(r).redMul(o.redSub(this.curve.two)),n=o.redMul(i.redSub(r)),u=o.redSqr().redSub(o).redSub(o);else{var a=this.z.redSqr(),s=o.redSub(a).redISub(a);l=e.redSub(t).redISub(r).redMul(s),n=o.redMul(i.redSub(r)),u=o.redMul(s)}}else{var i=t.redAdd(r),a=this.curve._mulC(this.c.redMul(this.z)).redSqr(),s=i.redSub(a).redSub(a);l=this.curve._mulC(e.redISub(i)).redMul(s),n=this.curve._mulC(i).redMul(t.redISub(r)),u=i.redMul(s)}return this.curve.point(l,n,u)},t.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},t.prototype._extAdd=function(l){var n=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),u=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),e=this.t.redMul(this.curve.dd).redMul(l.t),t=this.z.redMul(l.z.redAdd(l.z)),r=u.redSub(n),i=t.redSub(e),o=t.redAdd(e),a=u.redAdd(n),s=r.redMul(i),f=o.redMul(a),c=r.redMul(a),h=i.redMul(o);return this.curve.point(s,f,h,c)},t.prototype._projAdd=function(l){var n,u,e=this.z.redMul(l.z),t=e.redSqr(),r=this.x.redMul(l.x),i=this.y.redMul(l.y),o=this.curve.d.redMul(r).redMul(i),a=t.redSub(o),s=t.redAdd(o),f=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(r).redISub(i),c=e.redMul(a).redMul(f);return this.curve.twisted?(n=e.redMul(s).redMul(i.redSub(this.curve._mulA(r))),u=a.redMul(s)):(n=e.redMul(s).redMul(i.redSub(r)),u=this.curve._mulC(a).redMul(s)),this.curve.point(c,n,u)},t.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},t.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!1)},t.prototype.jmulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!0)},t.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},t.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()},t.prototype.getY=function(){return this.normalize(),this.y.fromRed()},t.prototype.eq=function(l){return this===l||0===this.getX().cmp(l.getX())&&0===this.getY().cmp(l.getY())},t.prototype.eqXToP=function(l){var n=l.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(n))return!0;for(var u=l.clone(),e=this.curve.redN.redMul(this.z);;){if(u.iadd(this.curve.n),u.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(e),0===this.x.cmp(n))return!0}return!1},t.prototype.toP=t.prototype.normalize,t.prototype.mixedAdd=t.prototype.add},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],69:[function(l,n,u){"use strict";var e=u;e.base=l("./base"),e["short"]=l("./short"),e.mont=l("./mont"),e.edwards=l("./edwards")},{"./base":67,"./edwards":68,"./mont":70,"./short":71}],70:[function(l,n,u){"use strict";function e(l){a.call(this,"mont",l),this.a=new i(l.a,16).toRed(this.red), -this.b=new i(l.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function t(l,n,u){a.BasePoint.call(this,l,"projective"),null===n&&null===u?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(n,16),this.z=new i(u,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var r=l("../curve"),i=l("bn.js"),o=l("inherits"),a=r.base,s=l("../../elliptic"),f=s.utils;o(e,a),n.exports=e,e.prototype.validate=function(l){var n=l.normalize().x,u=n.redSqr(),e=u.redMul(n).redAdd(u.redMul(this.a)).redAdd(n),t=e.redSqrt();return 0===t.redSqr().cmp(e)},o(t,a.BasePoint),e.prototype.decodePoint=function(l,n){return this.point(f.toArray(l,n),1)},e.prototype.point=function(l,n){return new t(this,l,n)},e.prototype.pointFromJSON=function(l){return t.fromJSON(this,l)},t.prototype.precompute=function(){},t.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},t.fromJSON=function(l,n){return new t(l,n[0],n[1]||l.one)},t.prototype.inspect=function(){return this.isInfinity()?"":""},t.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},t.prototype.dbl=function(){var l=this.x.redAdd(this.z),n=l.redSqr(),u=this.x.redSub(this.z),e=u.redSqr(),t=n.redSub(e),r=n.redMul(e),i=t.redMul(e.redAdd(this.curve.a24.redMul(t)));return this.curve.point(r,i)},t.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.diffAdd=function(l,n){var u=this.x.redAdd(this.z),e=this.x.redSub(this.z),t=l.x.redAdd(l.z),r=l.x.redSub(l.z),i=r.redMul(u),o=t.redMul(e),a=n.z.redMul(i.redAdd(o).redSqr()),s=n.x.redMul(i.redISub(o).redSqr());return this.curve.point(a,s)},t.prototype.mul=function(l){for(var n=l.clone(),u=this,e=this.curve.point(null,null),t=this,r=[];0!==n.cmpn(0);n.iushrn(1))r.push(n.andln(1));for(var i=r.length-1;i>=0;i--)0===r[i]?(u=u.diffAdd(e,t),e=e.dbl()):(e=u.diffAdd(e,t),u=u.dbl());return e},t.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.eq=function(l){return 0===this.getX().cmp(l.getX())},t.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],71:[function(l,n,u){"use strict";function e(l){f.call(this,"short",l),this.a=new a(l.a,16).toRed(this.red),this.b=new a(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function t(l,n,u,e){f.BasePoint.call(this,l,"affine"),null===n&&null===u?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(n,16),this.y=new a(u,16),e&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function r(l,n,u,e){f.BasePoint.call(this,l,"jacobian"),null===n&&null===u&&null===e?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(n,16),this.y=new a(u,16),this.z=new a(e,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var i=l("../curve"),o=l("../../elliptic"),a=l("bn.js"),s=l("inherits"),f=i.base,c=o.utils.assert;s(e,f),n.exports=e,e.prototype._getEndomorphism=function(l){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var n,u;if(l.beta)n=new a(l.beta,16).toRed(this.red);else{var e=this._getEndoRoots(this.p);n=e[0].cmp(e[1])<0?e[0]:e[1],n=n.toRed(this.red)}if(l.lambda)u=new a(l.lambda,16);else{var t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(n))?u=t[0]:(u=t[1],c(0===this.g.mul(u).x.cmp(this.g.x.redMul(n))))}var r;return r=l.basis?l.basis.map(function(l){return{a:new a(l.a,16),b:new a(l.b,16)}}):this._getEndoBasis(u),{beta:n,lambda:u,basis:r}}},e.prototype._getEndoRoots=function(l){var n=l===this.p?this.red:a.mont(l),u=new a(2).toRed(n).redInvm(),e=u.redNeg(),t=new a(3).toRed(n).redNeg().redSqrt().redMul(u),r=e.redAdd(t).fromRed(),i=e.redSub(t).fromRed();return[r,i]},e.prototype._getEndoBasis=function(l){for(var n,u,e,t,r,i,o,s,f,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=l,d=this.n.clone(),p=new a(1),b=new a(0),v=new a(0),y=new a(1),g=0;0!==h.cmpn(0);){var m=d.div(h);s=d.sub(m.mul(h)),f=v.sub(m.mul(p));var _=y.sub(m.mul(b));if(!e&&s.cmp(c)<0)n=o.neg(),u=p,e=s.neg(),t=f;else if(e&&2===++g)break;o=s,d=h,h=s,v=p,p=f,y=b,b=_}r=s.neg(),i=f;var w=e.sqr().add(t.sqr()),k=r.sqr().add(i.sqr());return k.cmp(w)>=0&&(r=n,i=u),e.negative&&(e=e.neg(),t=t.neg()),r.negative&&(r=r.neg(),i=i.neg()),[{a:e,b:t},{a:r,b:i}]},e.prototype._endoSplit=function(l){var n=this.endo.basis,u=n[0],e=n[1],t=e.b.mul(l).divRound(this.n),r=u.b.neg().mul(l).divRound(this.n),i=t.mul(u.a),o=r.mul(e.a),a=t.mul(u.b),s=r.mul(e.b),f=l.sub(i).sub(o),c=a.add(s).neg();return{k1:f,k2:c}},e.prototype.pointFromX=function(l,n){l=new a(l,16),l.red||(l=l.toRed(this.red));var u=l.redSqr().redMul(l).redIAdd(l.redMul(this.a)).redIAdd(this.b),e=u.redSqrt();if(0!==e.redSqr().redSub(u).cmp(this.zero))throw new Error("invalid point");var t=e.fromRed().isOdd();return(n&&!t||!n&&t)&&(e=e.redNeg()),this.point(l,e)},e.prototype.validate=function(l){if(l.inf)return!0;var n=l.x,u=l.y,e=this.a.redMul(n),t=n.redSqr().redMul(n).redIAdd(e).redIAdd(this.b);return 0===u.redSqr().redISub(t).cmpn(0)},e.prototype._endoWnafMulAdd=function(l,n,u){for(var e=this._endoWnafT1,t=this._endoWnafT2,r=0;r":""},t.prototype.isInfinity=function(){return this.inf},t.prototype.add=function(l){if(this.inf)return l;if(l.inf)return this;if(this.eq(l))return this.dbl();if(this.neg().eq(l))return this.curve.point(null,null);if(0===this.x.cmp(l.x))return this.curve.point(null,null);var n=this.y.redSub(l.y);0!==n.cmpn(0)&&(n=n.redMul(this.x.redSub(l.x).redInvm()));var u=n.redSqr().redISub(this.x).redISub(l.x),e=n.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,e)},t.prototype.dbl=function(){if(this.inf)return this;var l=this.y.redAdd(this.y);if(0===l.cmpn(0))return this.curve.point(null,null);var n=this.curve.a,u=this.x.redSqr(),e=l.redInvm(),t=u.redAdd(u).redIAdd(u).redIAdd(n).redMul(e),r=t.redSqr().redISub(this.x.redAdd(this.x)),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},t.prototype.getX=function(){return this.x.fromRed()},t.prototype.getY=function(){return this.y.fromRed()},t.prototype.mul=function(l){return l=new a(l,16),this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve.endo?this.curve._endoWnafMulAdd([this],[l]):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t):this.curve._wnafMulAdd(1,e,t,2)},t.prototype.jmulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t,!0):this.curve._wnafMulAdd(1,e,t,2,!0)},t.prototype.eq=function(l){return this===l||this.inf===l.inf&&(this.inf||0===this.x.cmp(l.x)&&0===this.y.cmp(l.y))},t.prototype.neg=function(l){if(this.inf)return this;var n=this.curve.point(this.x,this.y.redNeg());if(l&&this.precomputed){var u=this.precomputed,e=function(l){return l.neg()};n.precomputed={naf:u.naf&&{wnd:u.naf.wnd,points:u.naf.points.map(e)},doubles:u.doubles&&{step:u.doubles.step,points:u.doubles.points.map(e)}}}return n},t.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var l=this.curve.jpoint(this.x,this.y,this.curve.one);return l},s(r,f.BasePoint),e.prototype.jpoint=function(l,n,u){return new r(this,l,n,u)},r.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var l=this.z.redInvm(),n=l.redSqr(),u=this.x.redMul(n),e=this.y.redMul(n).redMul(l);return this.curve.point(u,e)},r.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},r.prototype.add=function(l){if(this.isInfinity())return l;if(l.isInfinity())return this;var n=l.z.redSqr(),u=this.z.redSqr(),e=this.x.redMul(n),t=l.x.redMul(u),r=this.y.redMul(n.redMul(l.z)),i=l.y.redMul(u.redMul(this.z)),o=e.redSub(t),a=r.redSub(i);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=o.redSqr(),f=s.redMul(o),c=e.redMul(s),h=a.redSqr().redIAdd(f).redISub(c).redISub(c),d=a.redMul(c.redISub(h)).redISub(r.redMul(f)),p=this.z.redMul(l.z).redMul(o);return this.curve.jpoint(h,d,p)},r.prototype.mixedAdd=function(l){if(this.isInfinity())return l.toJ();if(l.isInfinity())return this;var n=this.z.redSqr(),u=this.x,e=l.x.redMul(n),t=this.y,r=l.y.redMul(n).redMul(this.z),i=u.redSub(e),o=t.redSub(r);if(0===i.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=i.redSqr(),s=a.redMul(i),f=u.redMul(a),c=o.redSqr().redIAdd(s).redISub(f).redISub(f),h=o.redMul(f.redISub(c)).redISub(t.redMul(s)),d=this.z.redMul(i);return this.curve.jpoint(c,h,d)},r.prototype.dblp=function(l){if(0===l)return this;if(this.isInfinity())return this;if(!l)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var n=this,u=0;u=0)return!1;if(u.redIAdd(t),0===this.x.cmp(u))return!0}return!1},r.prototype.inspect=function(){return this.isInfinity()?"":""},r.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":66,"../curve":69,"bn.js":16,inherits:93}],72:[function(l,n,u){"use strict";function e(l){"short"===l.type?this.curve=new o.curve["short"](l):"edwards"===l.type?this.curve=new o.curve.edwards(l):this.curve=new o.curve.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function t(l,n){Object.defineProperty(r,l,{configurable:!0,enumerable:!0,get:function(){var u=new e(n);return Object.defineProperty(r,l,{configurable:!0,enumerable:!0,value:u}),u}})}var r=u,i=l("hash.js"),o=l("../elliptic"),a=o.utils.assert;r.PresetCurve=e,t("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),t("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),t("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),t("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),t("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),t("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),t("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var s;try{s=l("./precomputed/secp256k1")}catch(f){s=void 0}t("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",s]})},{"../elliptic":66,"./precomputed/secp256k1":80,"hash.js":85}],73:[function(l,n,u){"use strict";function e(l){return this instanceof e?("string"==typeof l&&(o(r.curves.hasOwnProperty(l),"Unknown curve "+l),l=r.curves[l]),l instanceof r.curves.PresetCurve&&(l={curve:l}),this.curve=l.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=l.curve.g,this.g.precompute(l.curve.n.bitLength()+1),void(this.hash=l.hash||l.curve.hash)):new e(l)}var t=l("bn.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=l("./key"),s=l("./signature");n.exports=e,e.prototype.keyPair=function(l){return new a(this,l)},e.prototype.keyFromPrivate=function(l,n){return a.fromPrivate(this,l,n)},e.prototype.keyFromPublic=function(l,n){return a.fromPublic(this,l,n)},e.prototype.genKeyPair=function(l){l||(l={});for(var n=new r.hmacDRBG({hash:this.hash,pers:l.pers,entropy:l.entropy||r.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),u=this.n.byteLength(),e=this.n.sub(new t(2));;){var i=new t(n.generate(u));if(!(i.cmp(e)>0))return i.iaddn(1),this.keyFromPrivate(i)}},e.prototype._truncateToN=function(l,n){var u=8*l.byteLength()-this.n.bitLength();return u>0&&(l=l.ushrn(u)),!n&&l.cmp(this.n)>=0?l.sub(this.n):l},e.prototype.sign=function(l,n,u,e){"object"==typeof u&&(e=u,u=null),e||(e={}),n=this.keyFromPrivate(n,u),l=this._truncateToN(new t(l,16));for(var i=this.n.byteLength(),o=n.getPrivate().toArray("be",i),a=l.toArray("be",i),f=new r.hmacDRBG({hash:this.hash,entropy:o,nonce:a,pers:e.pers,persEnc:e.persEnc}),c=this.n.sub(new t(1)),h=0;!0;h++){var d=e.k?e.k(h):new t(f.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(c)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=d.invm(this.n).mul(v.mul(n.getPrivate()).iadd(l));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return e.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new s({r:v,s:y,recoveryParam:g})}}}}}},e.prototype.verify=function(l,n,u,e){l=this._truncateToN(new t(l,16)),u=this.keyFromPublic(u,e),n=new s(n,"hex");var r=n.r,i=n.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var o=i.invm(this.n),a=o.mul(l).umod(this.n),f=o.mul(r).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(a,u.getPublic(),f);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(r)}var c=this.g.jmulAdd(a,u.getPublic(),f);return!c.isInfinity()&&c.eqXToP(r)},e.prototype.recoverPubKey=function(l,n,u,e){o((3&u)===u,"The recovery param is more than two bits"),n=new s(n,e);var r=this.n,i=new t(l),a=n.r,f=n.s,c=1&u,h=u>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=r.sub(i),p=n.r.invm(r);return this.g.mulAdd(d,a,f).mul(p)},e.prototype.getKeyRecoveryParam=function(l,n,u,e){if(n=new s(n,e),null!==n.recoveryParam)return n.recoveryParam;for(var t=0;t<4;t++){var r;try{r=this.recoverPubKey(l,n,t)}catch(l){continue}if(r.eq(u))return t}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":66,"./key":74,"./signature":75,"bn.js":16}],74:[function(l,n,u){"use strict";function e(l,n){this.ec=l,this.priv=null,this.pub=null,n.priv&&this._importPrivate(n.priv,n.privEnc),n.pub&&this._importPublic(n.pub,n.pubEnc)}var t=l("bn.js");n.exports=e,e.fromPublic=function(l,n,u){return n instanceof e?n:new e(l,{pub:n,pubEnc:u})},e.fromPrivate=function(l,n,u){return n instanceof e?n:new e(l,{priv:n,privEnc:u})},e.prototype.validate=function(){var l=this.getPublic();return l.isInfinity()?{result:!1,reason:"Invalid public key"}:l.validate()?l.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},e.prototype.getPublic=function(l,n){return"string"==typeof l&&(n=l,l=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),n?this.pub.encode(n,l):this.pub},e.prototype.getPrivate=function(l){return"hex"===l?this.priv.toString(16,2):this.priv},e.prototype._importPrivate=function(l,n){this.priv=new t(l,n||16),this.priv=this.priv.umod(this.ec.curve.n)},e.prototype._importPublic=function(l,n){return l.x||l.y?void(this.pub=this.ec.curve.point(l.x,l.y)):void(this.pub=this.ec.curve.decodePoint(l,n))},e.prototype.derive=function(l){return l.mul(this.priv).getX()},e.prototype.sign=function(l,n,u){return this.ec.sign(l,this,n,u)},e.prototype.verify=function(l,n){return this.ec.verify(l,n,this)},e.prototype.inspect=function(){return""}},{"bn.js":16}],75:[function(l,n,u){"use strict";function e(l,n){return l instanceof e?l:void(this._importDER(l,n)||(c(l.r&&l.s,"Signature without r or s"),this.r=new a(l.r,16),this.s=new a(l.s,16),void 0===l.recoveryParam?this.recoveryParam=null:this.recoveryParam=l.recoveryParam))}function t(){this.place=0}function r(l,n){var u=l[n.place++];if(!(128&u))return u;for(var e=15&u,t=0,r=0,i=n.place;r>>3);for(l.push(128|u);--u;)l.push(n>>>(u<<3)&255);l.push(n)}var a=l("bn.js"),s=l("../../elliptic"),f=s.utils,c=f.assert;n.exports=e,e.prototype._importDER=function(l,n){l=f.toArray(l,n);var u=new t;if(48!==l[u.place++])return!1;var e=r(l,u);if(e+u.place!==l.length)return!1;if(2!==l[u.place++])return!1;var i=r(l,u),o=l.slice(u.place,i+u.place);if(u.place+=i,2!==l[u.place++])return!1;var s=r(l,u);if(l.length!==s+u.place)return!1;var c=l.slice(u.place,s+u.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new a(o),this.s=new a(c),this.recoveryParam=null,!0},e.prototype.toDER=function(l){var n=this.r.toArray(),u=this.s.toArray();for(128&n[0]&&(n=[0].concat(n)),128&u[0]&&(u=[0].concat(u)),n=i(n),u=i(u);!(u[0]||128&u[1]);)u=u.slice(1);var e=[2];o(e,n.length),e=e.concat(n),e.push(2),o(e,u.length);var t=e.concat(u),r=[48];return o(r,t.length),r=r.concat(t),f.encode(r,l)}},{"../../elliptic":66,"bn.js":16}],76:[function(l,n,u){"use strict";function e(l){if(o("ed25519"===l,"only tested with ed25519 so far"),!(this instanceof e))return new e(l);var l=r.curves[l].curve;this.curve=l,this.g=l.g,this.g.precompute(l.n.bitLength()+1),this.pointClass=l.point().constructor,this.encodingLength=Math.ceil(l.n.bitLength()/8),this.hash=t.sha512}var t=l("hash.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=i.parseBytes,s=l("./key"),f=l("./signature");n.exports=e,e.prototype.sign=function(l,n){l=a(l);var u=this.keyFromSecret(n),e=this.hashInt(u.messagePrefix(),l),t=this.g.mul(e),r=this.encodePoint(t),i=this.hashInt(r,u.pubBytes(),l).mul(u.priv()),o=e.add(i).umod(this.curve.n);return this.makeSignature({R:t,S:o,Rencoded:r})},e.prototype.verify=function(l,n,u){l=a(l),n=this.makeSignature(n);var e=this.keyFromPublic(u),t=this.hashInt(n.Rencoded(),e.pubBytes(),l),r=this.g.mul(n.S()),i=n.R().add(e.pub().mul(t));return i.eq(r)},e.prototype.hashInt=function(){for(var l=this.hash(),n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,u,t)}var t=l("hash.js"),r=l("../elliptic"),i=r.utils,o=i.assert;n.exports=e,e.prototype._init=function(l,n,u){var e=l.concat(n).concat(u);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(u||[])),this.reseed=1},e.prototype.generate=function(l,n,u,e){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(e=u,u=n,n=null),u&&(u=i.toArray(u,e),this._update(u));for(var t=[];t.length>8,i=255&t;r?u.push(r,i):u.push(i)}return u}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",u=0;u=0;){var r;if(t.isOdd()){var i=t.andln(e-1);r=i>(e>>1)-1?(e>>1)-i:i,t.isubn(r)}else r=0;u.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(e-1)?n+1:1,a=1;a0||n.cmpn(-t)>0;){var r=l.andln(3)+e&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var a=l.andln(7)+e&7;o=3!==a&&5!==a||2!==i?r:-r}u[0].push(o);var s;if(0===(1&i))s=0;else{var a=n.andln(7)+t&7;s=3!==a&&5!==a||2!==r?i:-i}u[1].push(s),2*e===o+1&&(e=1-e),2*t===s+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return u}function a(l,n,u){var e="_"+n;l.prototype[n]=function(){return void 0!==this[e]?this[e]:this[e]=u.call(this)}}function s(l){return"string"==typeof l?c.toArray(l,"hex"):l}function f(l){return new h(l,"hex","le")}var c=u,h=l("bn.js");c.assert=function(l,n){if(!l)throw new Error(n||"Assertion failed")},c.toArray=e,c.zero2=t,c.toHex=r,c.encode=function(l,n){return"hex"===n?r(l):l},c.getNAF=i,c.getJSF=o,c.cachedProperty=a,c.parseBytes=s,c.intFromLE=f},{"bn.js":16}],82:[function(l,n,u){n.exports={_args:[["elliptic@^6.0.0","/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.3.1",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"6.0.0",_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.1.tgz_1465921413402_0.5202967382501811"},_npmUser:{email:"fedor@indutny.com",name:"indutny"},_npmVersion:"3.8.6",_phantomChildren:{},_requested:{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz",_shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign",author:{email:"fedor@indutny.com",name:"Fedor Indutny"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz"},files:["lib"],gitHead:"c53f5cf3d832c0073eb4a4ed423a464cbce68f3e",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{email:"fedor@indutny.com",name:"indutny"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.3.1"}},{}],83:[function(l,n,u){function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},e.prototype.emit=function(l){var n,u,e,r,a,s;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;throw TypeError('Uncaught, unspecified "error" event.')}if(u=this._events[l],o(u))return!1;if(t(u))switch(arguments.length){case 1:u.call(this);break;case 2:u.call(this,arguments[1]);break;case 3:u.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,r=new Array(e-1),a=1;a0&&this._events[l].length>u&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(l,n){function u(){this.removeListener(l,u),e||(e=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var e=!1;return u.listener=n,this.on(l,u),this},e.prototype.removeListener=function(l,n){var u,e,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(u=this._events[l],r=u.length,e=-1,u===n||t(u.listener)&&u.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(u)){for(o=r;o-- >0;)if(u[o]===n||u[o].listener&&u[o].listener===n){e=o;break}if(e<0)return this;1===u.length?(u.length=0,delete this._events[l]):u.splice(e,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},e.prototype.removeAllListeners=function(l){var n,u;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(u=this._events[l],t(u))this.removeListener(l,u);else for(;u.length;)this.removeListener(l,u[u.length-1]);return delete this._events[l],this},e.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},e.listenerCount=function(l,n){var u;return u=l._events&&l._events[n]?t(l._events[n])?1:l._events[n].length:0}},{}],84:[function(l,n,u){(function(u){function e(l,n,e,r){u.isBuffer(l)||(l=new u(l,"binary")),n&&!u.isBuffer(n)&&(n=new u(n,"binary")),e/=8,r=r||0;for(var i,o,a=0,s=0,f=new u(e),c=new u(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(u.concat(d)),d=[],o=0,e>0)for(;;){if(0===e)break;if(o===i.length)break;f[a++]=i[o],e--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[s++]=i[o],r--,o++}if(0===e&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var u=l.length%this._delta8;this.pending=l.slice(l.length-u,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-u,this.endian);for(var e=0;e>>24&255,e[t++]=l>>>16&255,e[t++]=l>>>8&255,e[t++]=255&l}else{e[t++]=255&l,e[t++]=l>>>8&255,e[t++]=l>>>16&255,e[t++]=l>>>24&255,e[t++]=0,e[t++]=0,e[t++]=0,e[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,u,e){return 0===l?a(n,u,e):1===l||3===l?f(n,u,e):2===l?s(n,u,e):void 0}function v(l,n,u,e,t,r){var i=l&u^~l&t;return i<0&&(i+=4294967296),i}function y(l,n,u,e,t,r){var i=n&e^~n&r;return i<0&&(i+=4294967296),i}function g(l,n,u,e,t,r){var i=l&u^l&t^u&t;return i<0&&(i+=4294967296),i}function m(l,n,u,e,t,r){var i=n&e^n&r^e&r;return i<0&&(i+=4294967296),i}function _(l,n){var u=T(l,n,28),e=T(n,l,2),t=T(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function w(l,n){var u=L(l,n,28),e=L(n,l,2),t=L(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function k(l,n){var u=T(l,n,14),e=T(l,n,18),t=T(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function S(l,n){var u=L(l,n,14),e=L(l,n,18),t=L(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function E(l,n){var u=T(l,n,1),e=T(l,n,8),t=N(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function M(l,n){var u=L(l,n,1),e=L(l,n,8),t=D(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function I(l,n){var u=T(l,n,19),e=T(n,l,29),t=N(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}function A(l,n){var u=L(l,n,19),e=L(n,l,29),t=D(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}var x=l("../hash"),B=x.utils,j=B.assert,R=B.rotr32,O=B.rotl32,C=B.sum32,P=B.sum32_4,U=B.sum32_5,T=B.rotr64_hi,L=B.rotr64_lo,N=B.shr64_hi,D=B.shr64_lo,q=B.sum64,z=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,H=B.sum64_4_lo,V=B.sum64_5_hi,Y=B.sum64_5_lo,W=x.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Z=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],G=[1518500249,1859775393,2400959708,3395469782];B.inherits(e,W),u.sha256=e,e.blockSize=512,e.outSize=256,e.hmacStrength=192,e.padLength=64,e.prototype._update=function(l,n){for(var u=this.W,e=0;e<16;e++)u[e]=l[n+e];for(;e>8,i=255&t;r?u.push(r,i):u.push(i)}else for(var e=0;e>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var u="",e=0;e>>0}return r}function f(l,n){for(var u=new Array(4*l.length),e=0,t=0;e>>24,u[t+1]=r>>>16&255,u[t+2]=r>>>8&255,u[t+3]=255&r):(u[t+3]=r>>>24,u[t+2]=r>>>16&255,u[t+1]=r>>>8&255,u[t]=255&r)}return u}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,u){return l+n+u>>>0}function b(l,n,u,e){return l+n+u+e>>>0}function v(l,n,u,e,t){return l+n+u+e+t>>>0}function y(l,n){if(!l)throw new Error(n||"Assertion failed")}function g(l,n,u,e){var t=l[n],r=l[n+1],i=e+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,u,e){var t=n+e>>>0,r=(t>>0}function _(l,n,u,e){var t=n+e;return t>>>0}function w(l,n,u,e,t,r,i,o){var a=0,s=n;s=s+e>>>0,a+=s>>0,a+=s>>0,a+=s>>0}function k(l,n,u,e,t,r,i,o){var a=n+e+r+o;return a>>>0}function S(l,n,u,e,t,r,i,o,a,s){var f=0,c=n;c=c+e>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,u,e,t,r,i,o,a,s){var f=n+e+r+o+s;return f>>>0}function M(l,n,u){var e=n<<32-u|l>>>u;return e>>>0}function I(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}function A(l,n,u){return l>>>u}function x(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}var B=u,j=l("inherits");B.toArray=e,B.toHex=t,B.htonl=r,B.toHex32=i,B.zero2=o,B.zero8=a,B.join32=s,B.split32=f,B.rotr32=c,B.rotl32=h,B.sum32=d,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=j,u.sum64=g,u.sum64_hi=m,u.sum64_lo=_,u.sum64_4_hi=w,u.sum64_4_lo=k,u.sum64_5_hi=S,u.sum64_5_lo=E,u.rotr64_hi=M,u.rotr64_lo=I,u.shr64_hi=A,u.shr64_lo=x},{inherits:93}],91:[function(l,n,u){u.read=function(l,n,u,e,t){var r,i,o=8*t-e-1,a=(1<>1,f=-7,c=u?t-1:0,h=u?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=e;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-s;else{if(r===a)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,e),r-=s}return(d?-1:1)*i*Math.pow(2,r-e)},u.write=function(l,n,u,e,t,r){var i,o,a,s=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=e?0:r-1,p=e?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-i))<1&&(i--,a*=2),n+=i+c>=1?h/a:h*Math.pow(2,1-c),n*a>=2&&(i++,a/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*a-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[u+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[u+d]=255&i,d+=p,i/=256,s-=8);l[u+d-p]|=128*b}},{}],92:[function(l,n,u){var e=[].indexOf;n.exports=function(l,n){if(e)return l.indexOf(n);for(var u=0;u>=7-e),new t(u)},e.prototype.test=function(l,n,u){var e=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,e/48|0));for(var o=l.subn(1),a=o.subn(1),s=0;!o.testn(s);s++);for(var f=l.shrn(s),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(a);u&&u(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(e).redPow(s);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p=0;e--){var t=l[e];"."===t?l.splice(e,1):".."===t?(l.splice(e,1),u++):u&&(l.splice(e,1),u--)}if(n)for(;u--;u)l.unshift("..");return l}function e(l,n){if(l.filter)return l.filter(n);for(var u=[],e=0;e=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(u=i+"/"+u,t="/"===i.charAt(0))}return u=n(e(u.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+u||"."},u.normalize=function(l){var t=u.isAbsolute(l),r="/"===i(l,-1);return l=n(e(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},u.isAbsolute=function(l){return"/"===l.charAt(0)},u.join=function(){var l=Array.prototype.slice.call(arguments,0);return u.normalize(e(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},u.relative=function(l,n){function e(l){for(var n=0;n=0&&""===l[u];u--);return n>u?[]:l.slice(n,u-n+1)}l=u.resolve(l).substr(1),n=u.resolve(n).substr(1);for(var t=e(l.split("/")),r=e(n.split("/")),i=Math.min(t.length,r.length),o=i,a=0;ai)throw new TypeError("Bad key length");o=o||"sha1",n.isBuffer(l)||(l=new n(l,"binary")),n.isBuffer(u)||(u=new n(u,"binary"));var a,s=1,f=new n(t),c=new n(u.length+4);u.copy(c,0,0,u.length);for(var h,d,p=1;p<=s;p++){c.writeUInt32BE(p,u.length);var b=r(o,l).update(c).digest();a||(a=b.length,d=new n(a),s=Math.ceil(t/a),h=t-(s-1)*a),b.copy(d,0,0,a);for(var v=1;v1)for(var u=1;u=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==e.toString("hex")&&!u||"0001"!==e.toString("hex")&&u)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new u(l),n=new u(n);var e=0,t=l.length;l.length!==n.length&&(e++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new s(n).cmp(a.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new s(n),a):f(n,a);var p=new u(c-d.length);if(p.fill(0),d=u.concat([p,d],c),4===o)return e(a,d);if(1===o)return t(a,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":51,"parse-asn1":101}],109:[function(l,n,u){(function(u){function e(l,n){var e=l.modulus.byteLength(),t=n.length,r=a("sha1").update(new u("")).digest(),i=r.length,h=2*i;if(t>e-h-2)throw new Error("message too long");var d=new u(e-t-h-2);d.fill(0);var p=e-i-1,b=o(i),v=f(u.concat([r,d,new u([1]),n],p),s(b,p)),y=f(b,s(v,i));return new c(u.concat([new u([0]),y,v],e))}function t(l,n,e){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return e?(o=new u(i-t-3),o.fill(255)):o=r(i-t-3),new c(u.concat([new u([0,e?1:2]),o,new u([0]),n],i))}function r(l,n){for(var e,t=new u(l),r=0,i=o(2*l),a=0;r=0)throw new Error("data too long for modulus")}return u?d(o,a):h(o,a)}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":51,"parse-asn1":101,randombytes:112}],110:[function(l,n,u){(function(u){function e(l,n){return new u(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=e}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46}],111:[function(l,n,u){n.exports=function(l,n){for(var u=l.length,e=-1;++e65536)throw new Error("requested too many random bytes");var r=new u.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new e(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=u.crypto||u.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:105,buffer:46}],113:[function(l,n,u){(function(l){function u(l){for(var n=[],u=0,e=0;u>>5]|=l[u]<<24-e%32;return n}function e(l){for(var n=[],u=0;u<32*l.length;u+=8)n.push(l[u>>>5]>>>24-u%32&255);return n}function t(l,n,u){for(var e=0;e<16;e++){var t=u+e,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var g,m,_,w,k,S,E,M,I,A;S=g=l[0],E=m=l[1],M=_=l[2],I=w=l[3],A=k=l[4];var x;for(e=0;e<80;e+=1)x=g+n[u+h[e]]|0,x+=e<16?r(m,_,w)+v[0]:e<32?i(m,_,w)+v[1]:e<48?o(m,_,w)+v[2]:e<64?a(m,_,w)+v[3]:s(m,_,w)+v[4],x=0|x,x=f(x,p[e]),x=x+k|0,g=k,k=w,w=f(_,10),_=m,m=x,x=S+n[u+d[e]]|0,x+=e<16?s(E,M,I)+y[0]:e<32?a(E,M,I)+y[1]:e<48?o(E,M,I)+y[2]:e<64?i(E,M,I)+y[3]:r(E,M,I)+y[4],x=0|x,x=f(x,b[e]),x=x+A|0,S=A,A=I,I=f(M,10),M=E,E=x;x=l[1]+_+I|0,l[1]=l[2]+w+A|0,l[2]=l[3]+k+S|0,l[3]=l[4]+g+E|0,l[4]=l[0]+m+M|0,l[0]=x}function r(l,n,u){return l^n^u}function i(l,n,u){return l&n|~l&u}function o(l,n,u){return(l|~n)^u}function a(l,n,u){return l&u|n&~u}function s(l,n,u){return l^(n|~u)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=u(n),o=8*n.length,a=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);for(var s=0;s>>24)|4278255360&(f<<24|f>>>8)}var c=e(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:46}],114:[function(l,n,u){(function(l){function u(n,u){this._block=new l(n),this._finalSize=u,this._blockSize=n,this._len=0,this._s=0}u.prototype.update=function(n,u){"string"==typeof n&&(u=u||"utf8",n=new l(n,u));for(var e=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var u=this._update(this._block)||this._hash();return l?u.toString(l):u},u.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=u}).call(this,l("buffer").Buffer)},{buffer:46}],115:[function(l,n,u){var u=n.exports=function(l){l=l.toLowerCase();var n=u[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};u.sha=l("./sha"),u.sha1=l("./sha1"),u.sha224=l("./sha224"),u.sha256=l("./sha256"),u.sha384=l("./sha384"),u.sha512=l("./sha512")},{"./sha":116,"./sha1":117,"./sha224":118,"./sha256":119,"./sha384":120,"./sha512":121}],116:[function(l,n,u){(function(u){function e(){this.init(),this._w=f,a.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var o=l("inherits"),a=l("./hash"),s=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(e,a),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(u)+i(d,e,o,a)+f+n[h]+s[d]|0;f=a,a=o,o=r(e),e=u,u=p}this._a=u+this._a|0,this._b=e+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],117:[function(l,n,u){(function(u){function e(){this.init(),this._w=c,s.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var a=l("inherits"),s=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);a(e,s),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,a=0|this._c,s=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(u)+o(p,e,a,s)+c+n[d]+f[p]|0;c=s,s=a,a=i(e),e=u,u=b}this._a=u+this._a|0,this._b=e+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=c+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],118:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(e,r),e.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},e.prototype._hash=function(){var l=new u(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,"./sha256":119,buffer:46,inherits:93}],119:[function(l,n,u){(function(u){function e(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function a(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function s(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(e,c),e.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)n[y]=l.readInt32BE(4*y);for(;y<64;++y)n[y]=s(n[y-2])+n[y-7]+a(n[y-15])+n[y-16]|0;for(var g=0;g<64;++g){var m=v+o(d)+t(d,p,b)+h[g]+n[g]|0,_=i(u)+r(u,e,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=e,e=u,u=m+_|0}this._a=u+this._a|0,this._b=e+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},e.prototype._hash=function(){var l=new u(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],120:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(e,r),e.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,"./sha512":121,buffer:46,inherits:93}],121:[function(l,n,u){(function(u){function e(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(e,p),e.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._ah,e=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,g=0|this._gh,m=0|this._hh,_=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,A=0|this._hl,x=0;x<32;x+=2)n[x]=l.readInt32BE(4*x),n[x+1]=l.readInt32BE(4*x+4);for(;x<160;x+=2){var B=n[x-30],j=n[x-30+1],R=a(B,j),O=s(j,B);B=n[x-4],j=n[x-4+1];var C=f(B,j),P=c(j,B),U=n[x-14],T=n[x-14+1],L=n[x-32],N=n[x-32+1],D=O+T|0,q=R+U+h(D,O)|0;D=D+P|0,q=q+C+h(D,P)|0,D=D+N|0,q=q+L+h(D,N)|0,n[x]=q,n[x+1]=D}for(var z=0;z<160;z+=2){q=n[z],D=n[z+1];var F=r(u,e,d),K=r(_,w,k),H=i(u,_),V=i(_,u),Y=o(v,E),W=o(E,v),X=b[z],Z=b[z+1],G=t(v,y,g),J=t(E,M,I),$=A+W|0,Q=m+Y+h($,A)|0;$=$+J|0,Q=Q+G+h($,J)|0,$=$+Z|0,Q=Q+X+h($,Z)|0,$=$+D|0,Q=Q+q+h($,D)|0;var ll=V+K|0,nl=H+F+h(ll,V)|0;m=g,A=I,g=y,I=M,y=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=e,k=w,e=u,w=_,_=$+ll|0,u=Q+nl+h(_,$)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+A|0,this._ah=this._ah+u+h(this._al,_)|0,this._bh=this._bh+e+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+y+h(this._fl,M)|0,this._gh=this._gh+g+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,A)|0},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":114,buffer:46,inherits:93}],122:[function(l,n,u){function e(){t.call(this)}n.exports=e;var t=l("events").EventEmitter,r=l("inherits");r(e,t),e.Readable=l("readable-stream/readable.js"),e.Writable=l("readable-stream/writable.js"),e.Duplex=l("readable-stream/duplex.js"),e.Transform=l("readable-stream/transform.js"),e.PassThrough=l("readable-stream/passthrough.js"),e.Stream=e,e.prototype.pipe=function(l,n){function u(n){l.writable&&!1===l.write(n)&&s.pause&&s.pause()}function e(){s.readable&&s.resume&&s.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(a(),0===t.listenerCount(this,"error"))throw l}function a(){s.removeListener("data",u),l.removeListener("drain",e),s.removeListener("end",r),s.removeListener("close",i),s.removeListener("error",o),l.removeListener("error",o),s.removeListener("end",a),s.removeListener("close",a),l.removeListener("close",a)}var s=this;s.on("data",u),l.on("drain",e),l._isStdio||n&&n.end===!1||(s.on("end",r),s.on("close",i));var f=!1;return s.on("error",o),l.on("error",o),s.on("end",a),s.on("close",a),l.on("close",a),l.emit("pipe",s),l}},{events:83,inherits:93,"readable-stream/duplex.js":124,"readable-stream/passthrough.js":131,"readable-stream/readable.js":132,"readable-stream/transform.js":133,"readable-stream/writable.js":134}],123:[function(l,n,u){arguments[4][47][0].apply(u,arguments)},{dup:47}],124:[function(l,n,u){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":125}],125:[function(l,n,u){"use strict";function e(l){return this instanceof e?(s.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new e(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var u in l)n.push(u);return n};n.exports=e;var o=l("process-nextick-args"),a=l("core-util-is");a.inherits=l("inherits");var s=l("./_stream_readable"),f=l("./_stream_writable");a.inherits(e,s);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var a=new Error("stream.unshift() after end event");l.emit("error",a)}else{var s;!n.decoder||t||e||(u=n.decoder.write(u),s=!n.objectMode&&0===u.length),t||(n.reading=!1),s||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",u),l.read(0)):(n.length+=n.objectMode?1:u.length,t?n.buffer.unshift(u):n.buffer.push(u),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=z?l=z:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function s(l,n){return l<=0||0===n.length&&n.ended?0:n.objectMode?1:l!==l?n.flowing&&n.length?n.buffer.head.data.length:n.length:(l>n.highWaterMark&&(n.highWaterMark=a(l)),l<=n.length?l:n.ended?n.length:(n.needReadable=!0,0))}function f(l,n){var u=null;return C.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(u=new TypeError("Invalid non-string/buffer chunk")),u}function c(l,n){if(!n.ended){if(n.decoder){var u=n.decoder.end();u&&u.length&&(n.buffer.push(u),n.length+=n.objectMode?1:u.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(L("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?B(d,l):d(l))}function d(l){L("emit readable"),l.emit("readable"),_(l)}function p(l,n){n.readingMore||(n.readingMore=!0,B(b,l,n))}function b(l,n){for(var u=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=n.length?(u=n.decoder?n.buffer.join(""):1===n.buffer.length?n.buffer.head.data:n.buffer.concat(n.length),n.buffer.clear()):u=k(l,n.buffer,n.decoder),u}function k(l,n,u){var e;return lr.length?r.length:l;if(t+=i===r.length?r:r.slice(0,l),l-=i,0===l){i===r.length?(++e,u.next?n.head=u.next:n.head=n.tail=null):(n.head=u,u.data=r.slice(i));break}++e}return n.length-=e,t}function E(l,n){var u=P.allocUnsafe(l),e=n.head,t=1;for(e.data.copy(u),l-=e.data.length;e=e.next;){var r=e.data,i=l>r.length?r.length:l;if(r.copy(u,u.length-l,0,i),l-=i,0===l){i===r.length?(++t,e.next?n.head=e.next:n.head=n.tail=null):(n.head=e,e.data=r.slice(i));break}++t}return n.length-=t,u}function M(l){var n=l._readableState;if(n.length>0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,B(I,n,l))}function I(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function A(l,n){for(var u=0,e=l.length;u=n.highWaterMark||n.ended))return L("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?M(this):h(this),null;if(l=s(l,n),0===l&&n.ended)return 0===n.length&&M(this),null;var e=n.needReadable;L("need readable",e),(0===n.length||n.length-l0?w(l,n):null,null===t?(n.needReadable=!0,l=0):n.length-=l,0===n.length&&(n.ended||(n.needReadable=!0),u!==l&&n.ended&&M(this)),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("not implemented"))},r.prototype.pipe=function(l,n){function t(l){L("onunpipe"),l===h&&i()}function r(){L("onend"),l.end()}function i(){L("cleanup"),l.removeListener("close",s),l.removeListener("finish",f),l.removeListener("drain",y),l.removeListener("error",a),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),g=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||y()}function o(n){L("ondata"),m=!1;var u=l.write(n);!1!==u||m||((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&x(d.pipes,l)!==-1)&&!g&&(L("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,m=!0),h.pause())}function a(n){L("onerror",n),c(),l.removeListener("error",a),0===O(l,"error")&&l.emit("error",n)}function s(){l.removeListener("finish",f),c()}function f(){L("onfinish"),l.removeListener("close",s),c()}function c(){L("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,L("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==u.stdout&&l!==u.stderr,b=p?r:i;d.endEmitted?B(b):h.once("end",b),l.on("unpipe",t);var y=v(h);l.on("drain",y);var g=!1,m=!1;return h.on("data",o),e(l,"error",a),l.once("close",s),l.once("finish",f),l.emit("pipe",h),d.flowing||(L("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var u=n.pipes,e=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:S;i.WritableState=r;var M=l("core-util-is");M.inherits=l("inherits");var I,A={deprecate:l("util-deprecate")};!function(){try{I=l("stream")}catch(n){}finally{I||(I=l("events").EventEmitter)}}();var x=l("buffer").Buffer,B=l("buffer-shims");M.inherits(i,I);var j;r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var j;i.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,u){var t=this._writableState,r=!1;return"function"==typeof n&&(u=n,n=null),x.isBuffer(l)?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof u&&(u=e),t.ended?o(this,u):a(this,t,l,u)&&(t.pendingcb++,r=f(this,t,l,n,u)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||y(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,u){u(new Error("not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,u){var e=this._writableState;"function"==typeof l?(u=l,l=null,n=null):"function"==typeof n&&(u=n,n=null),null!==l&&void 0!==l&&this.write(l,n),e.corked&&(e.corked=1,this.uncork()),e.ending||e.finished||w(this,e,u)}}).call(this,l("_process"))},{"./_stream_duplex":125,_process:105,buffer:46,"buffer-shims":44,"core-util-is":49,events:83,inherits:93,"process-nextick-args":104,"util-deprecate":136}],130:[function(l,n,u){"use strict";function e(){this.head=null,this.tail=null,this.length=0}var t=(l("buffer").Buffer,l("buffer-shims"));n.exports=e,e.prototype.push=function(l){var n={data:l,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function(l){var n={data:l,next:this.head};0===this.length&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function(){if(0!==this.length){var l=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,l}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(l){if(0===this.length)return"";for(var n=this.head,u=""+n.data;n=n.next;)u+=l+n.data;return u},e.prototype.concat=function(l){if(0===this.length)return t.alloc(0);if(1===this.length)return this.head.data;for(var n=t.allocUnsafe(l>>>0),u=this.head,e=0;u;)u.data.copy(n,e),e+=u.data.length,u=u.next;return n}},{buffer:46,"buffer-shims":44}],131:[function(l,n,u){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":126}],132:[function(l,n,u){(function(e){var t=function(){try{return l("stream")}catch(n){}}();u=n.exports=l("./lib/_stream_readable.js"),u.Stream=t||u,u.Readable=u,u.Writable=l("./lib/_stream_writable.js"),u.Duplex=l("./lib/_stream_duplex.js"),u.Transform=l("./lib/_stream_transform.js"),u.PassThrough=l("./lib/_stream_passthrough.js"),!e.browser&&"disable"===e.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":125,"./lib/_stream_passthrough.js":126,"./lib/_stream_readable.js":127,"./lib/_stream_transform.js":128,"./lib/_stream_writable.js":129,_process:105}],133:[function(l,n,u){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":128}],134:[function(l,n,u){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":129}],135:[function(l,n,u){function e(l){if(l&&!a(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,a=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},s=u.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),e(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i;break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};s.prototype.write=function(l){for(var n="";this.charLength;){var u=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,u),this.charReceived+=u,this.charReceived=55296&&e<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,e=n.charCodeAt(t);if(e>=55296&&e<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},s.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var u=l[l.length-n];if(1==n&&u>>5==6){this.charLength=2;break}if(n<=2&&u>>4==14){this.charLength=3;break}if(n<=3&&u>>3==30){this.charLength=4;break}}this.charReceived=n},s.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var u=this.charReceived,e=this.charBuffer,t=this.encoding;n+=e.slice(0,u).toString(t)}return n}},{buffer:46}],136:[function(l,n,u){(function(l){function u(l,n){function u(){if(!t){if(e("throwDeprecation"))throw new Error(n);e("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(e("noDeprecation"))return l;var t=!1;return u}function e(n){try{if(!l.localStorage)return!1}catch(u){return!1}var e=l.localStorage[n];return null!=e&&"true"===String(e).toLowerCase()}n.exports=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],137:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var u in l)n.push(u);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var u=0;u>6],t=0===(32&u);if(31===(31&u)){var r=u;for(u=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;u<<=7,u|=127&r}}else u&=31;var i=c.tag[u];return{cls:e,primitive:t,tag:u,tagStr:i}}function i(l,n,u){var e=l.readUInt8(u);if(l.isError(e))return e;if(!n&&128===e)return null;if(0===(128&e))return e;var t=127&e;if(t>=4)return l.error("length octect is too long");e=0;for(var r=0;r=31?e.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[u||"universal"]<<6)}var o=l("inherits"),a=l("buffer").Buffer,s=l("../../asn1"),f=s.base,c=s.constants.der;n.exports=e,e.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,u,e){var t=i(l,n,u,this.reporter);if(e.length<128){var r=new a(2);return r[0]=t,r[1]=e.length,this._createEncoderBuffer([r,e])}for(var o=1,s=e.length;s>=256;s>>=8)o++;var r=new a(2+o);r[0]=t,r[1]=128|o;for(var s=1+o,f=e.length;f>0;s--,f>>=8)r[s]=255&f;return this._createEncoderBuffer([r,e])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var u=new a(2*l.length),e=0;e=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,e=0;e=128;r>>=7)t++}for(var i=new a(t),o=i.length-1,e=l.length-1;e>=0;e--){var r=l[e];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var u,e=new Date(l);return"gentime"===n?u=[r(e.getFullYear()),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):"utctime"===n?u=[r(e.getFullYear()%100),r(e.getUTCMonth()+1),r(e.getUTCDate()),r(e.getUTCHours()),r(e.getUTCMinutes()),r(e.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(u,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!a.isBuffer(l)){var u=l.toArray();!l.sign&&128&u[0]&&u.unshift(0),l=new a(u)}if(a.isBuffer(l)){var e=l.length;0===l.length&&e++;var t=new a(e);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var e=1,r=l;r>=256;r>>=8)e++;for(var t=new Array(e),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new a(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,u){var e,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,u).join()),r.length!==t.defaultBuffer.length)return!1;for(e=0;e0)throw new Error("Invalid string. Length must be a multiple of 4");var f=l.length;a="="===l.charAt(f-2)?2:"="===l.charAt(f-1)?1:0,s=new r(3*l.length/4-a),i=a>0?l.length-4:l.length;var c=0;for(e=0,t=0;e>16),u((65280&o)>>8),u(255&o);return 2===a?(o=n(l.charAt(e))<<2|n(l.charAt(e+1))>>4,u(255&o)):1===a&&(o=n(l.charAt(e))<<10|n(l.charAt(e+1))<<4|n(l.charAt(e+2))>>2,u(o>>8&255),u(255&o)),s}function t(l){function n(l){return e.charAt(l)}function u(l){return n(l>>18&63)+n(l>>12&63)+n(l>>6&63)+n(63&l)}var t,r,i,o=l.length%3,a="";for(t=0,i=l.length-o;t>2),a+=n(r<<4&63),a+="==";break;case 2:r=(l[l.length-2]<<8)+l[l.length-1],a+=n(r>>10),a+=n(r>>4&63),a+=n(r<<2&63),a+="="}return a}var r="undefined"!=typeof Uint8Array?Uint8Array:Array,i="+".charCodeAt(0),o="/".charCodeAt(0),a="0".charCodeAt(0),s="a".charCodeAt(0),f="A".charCodeAt(0),c="-".charCodeAt(0),h="_".charCodeAt(0);l.toByteArray=u,l.fromByteArray=t}("undefined"==typeof u?this.base64js={}:u)},{}],16:[function(l,n,u){!function(n,u){"use strict";function e(l,n){if(!l)throw new Error(n||"Assertion failed")}function t(l,n){l.super_=n;var u=function(){};u.prototype=n.prototype,l.prototype=new u,l.prototype.constructor=l}function r(l,n,u){return r.isBN(l)?l:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==l&&("le"!==n&&"be"!==n||(u=n,n=10),this._init(l||0,n||10,u||"be"))))}function i(l,n,u){for(var e=0,t=Math.min(l.length,u),r=n;r=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return e}function o(l,n,u,e){for(var t=0,r=Math.min(l.length,u),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function a(l){for(var n=new Array(l.bitLength()),u=0;u>>t}return n}function s(l,n,u){u.negative=n.negative^l.negative;var e=l.length+n.length|0;u.length=e,e=e-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,a=i/67108864|0;u.words[0]=o;for(var s=1;s>>26,c=67108863&a,h=Math.min(s,n.length-1),d=Math.max(0,s-l.length+1);d<=h;d++){var p=s-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}u.words[s]=0|c,a=0|f}return 0!==a?u.words[s]=0|a:u.length--,u.strip()}function f(l,n,u){u.negative=n.negative^l.negative,u.length=l.length+n.length;for(var e=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}u.words[r]=o,e=i,i=t}return 0!==e?u.words[r]=e:u.length--,u.strip()}function c(l,n,u){var e=new h;return e.mulp(l,n,u)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else e(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){g.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:u.BN=r,r.BN=r,r.wordSize=26;var _;try{_=l("buffer").Buffer}catch(w){}r.isBN=function(l){return null!==l&&"object"==typeof l&&"BN"===l.constructor.name&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,u){if("number"==typeof l)return this._initNumber(l,n,u);if("object"==typeof l)return this._initArray(l,n,u);"hex"===n&&(n=16),e(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initNumber=function(l,n,u){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(e(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===u&&this._initArray(this.toArray(),n,u)},r.prototype._initArray=function(l,n,u){if(e("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===u)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var u=0;u=n;u-=6)t=i(l,u,u+6),this.words[e]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,e++);u+6!==n&&(t=i(l,n,u+6),this.words[e]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,u){this.words=[0],this.length=1;for(var e=0,t=1;t<=67108863;t*=n)e++;e--,t=t/n|0;for(var r=l.length-u,i=r%e,a=Math.min(r,r-i)+u,s=0,f=u;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176]; +r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var u;if(16===l||"hex"===l){u="";for(var t=0,r=0,i=0;i>>24-t&16777215,u=0!==r||i!==this.length-1?k[6-a.length]+a+u:a+u,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(u=r.toString(16)+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}if(l===(0|l)&&l>=2&&l<=36){var s=S[l],f=E[l];u="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),u=c.isZero()?h+u:k[s-h.length]+h+u}for(this.isZero()&&(u="0"+u);u.length%n!==0;)u="0"+u;return 0!==this.negative&&(u="-"+u),u}e(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&e(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return e("undefined"!=typeof _),this.toArrayLike(_,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,u){var t=this.byteLength(),r=u||Math.max(1,t);e(t<=r,"byte array longer than desired length"),e(r>0,"Requested array length <= 0"),this.strip();var i,o,a="le"===n,s=new l(r),f=this.clone();if(a){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),s[o]=i;for(;o=4096&&(u+=13,n>>>=13),n>=64&&(u+=7,n>>>=7),n>=8&&(u+=4,n>>>=4),n>=2&&(u+=2,n>>>=2),u+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,u=0;return 0===(8191&n)&&(u+=13,n>>>=13),0===(127&n)&&(u+=7,n>>>=7),0===(15&n)&&(u+=4,n>>>=4),0===(3&n)&&(u+=2,n>>>=2),0===(1&n)&&u++,u},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var u=0;ul.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,u;this.length>l.length?(n=this,u=l):(n=l,u=this);for(var e=0;el.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){e("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),u=l%26;this._expand(n),u>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-u),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){e("number"==typeof l&&l>=0);var u=l/26|0,t=l%26;return this._expand(u+1),n?this.words[u]=this.words[u]|1<l.length?(u=this,e=l):(u=l,e=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=u.length,0!==t)this.words[this.length]=t,this.length++;else if(u!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var u=this.cmp(l);if(0===u)return this.negative=0,this.length=1,this.words[0]=0,this;var e,t;u>0?(e=this,t=l):(e=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],y=8191&v,g=v>>>13,m=0|i[3],_=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,A=M>>>13,x=0|i[6],B=8191&x,j=x>>>13,R=0|i[7],O=8191&R,C=R>>>13,P=0|i[8],U=8191&P,T=P>>>13,L=0|i[9],N=8191&L,D=L>>>13,q=0|o[0],z=8191&q,F=q>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,Z=0|o[3],G=8191&Z,J=Z>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],ul=8191&nl,el=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],al=8191&ol,sl=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;u.negative=l.negative^n.negative,u.length=19,e=Math.imul(c,z),t=Math.imul(c,F),t=t+Math.imul(h,z)|0,r=Math.imul(h,F);var vl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,e=Math.imul(p,z),t=Math.imul(p,F),t=t+Math.imul(b,z)|0,r=Math.imul(b,F),e=e+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var yl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,e=Math.imul(y,z),t=Math.imul(y,F),t=t+Math.imul(g,z)|0,r=Math.imul(g,F),e=e+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,e=e+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var gl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,e=Math.imul(_,z),t=Math.imul(_,F),t=t+Math.imul(w,z)|0,r=Math.imul(w,F),e=e+Math.imul(y,H)|0,t=t+Math.imul(y,V)|0,t=t+Math.imul(g,H)|0,r=r+Math.imul(g,V)|0,e=e+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,e=e+Math.imul(c,G)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,G)|0,r=r+Math.imul(h,J)|0;var ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,e=Math.imul(S,z),t=Math.imul(S,F),t=t+Math.imul(E,z)|0,r=Math.imul(E,F),e=e+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,e=e+Math.imul(y,W)|0,t=t+Math.imul(y,X)|0,t=t+Math.imul(g,W)|0,r=r+Math.imul(g,X)|0,e=e+Math.imul(p,G)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,G)|0,r=r+Math.imul(b,J)|0,e=e+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var _l=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,e=Math.imul(I,z),t=Math.imul(I,F),t=t+Math.imul(A,z)|0,r=Math.imul(A,F),e=e+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,e=e+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,e=e+Math.imul(y,G)|0,t=t+Math.imul(y,J)|0,t=t+Math.imul(g,G)|0,r=r+Math.imul(g,J)|0,e=e+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,e=e+Math.imul(c,ul)|0,t=t+Math.imul(c,el)|0,t=t+Math.imul(h,ul)|0,r=r+Math.imul(h,el)|0;var wl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,e=Math.imul(B,z),t=Math.imul(B,F),t=t+Math.imul(j,z)|0,r=Math.imul(j,F),e=e+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(A,H)|0,r=r+Math.imul(A,V)|0,e=e+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,e=e+Math.imul(_,G)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(w,G)|0,r=r+Math.imul(w,J)|0,e=e+Math.imul(y,Q)|0,t=t+Math.imul(y,ll)|0,t=t+Math.imul(g,Q)|0,r=r+Math.imul(g,ll)|0,e=e+Math.imul(p,ul)|0,t=t+Math.imul(p,el)|0,t=t+Math.imul(b,ul)|0,r=r+Math.imul(b,el)|0,e=e+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,e=Math.imul(O,z),t=Math.imul(O,F),t=t+Math.imul(C,z)|0,r=Math.imul(C,F),e=e+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,e=e+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(A,W)|0,r=r+Math.imul(A,X)|0,e=e+Math.imul(S,G)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,G)|0,r=r+Math.imul(E,J)|0,e=e+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,e=e+Math.imul(y,ul)|0,t=t+Math.imul(y,el)|0,t=t+Math.imul(g,ul)|0,r=r+Math.imul(g,el)|0,e=e+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,e=e+Math.imul(c,al)|0,t=t+Math.imul(c,sl)|0,t=t+Math.imul(h,al)|0,r=r+Math.imul(h,sl)|0;var Sl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,e=Math.imul(U,z),t=Math.imul(U,F),t=t+Math.imul(T,z)|0,r=Math.imul(T,F),e=e+Math.imul(O,H)|0,t=t+Math.imul(O,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,e=e+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,e=e+Math.imul(I,G)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(A,G)|0,r=r+Math.imul(A,J)|0,e=e+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,e=e+Math.imul(_,ul)|0,t=t+Math.imul(_,el)|0,t=t+Math.imul(w,ul)|0,r=r+Math.imul(w,el)|0,e=e+Math.imul(y,rl)|0,t=t+Math.imul(y,il)|0,t=t+Math.imul(g,rl)|0,r=r+Math.imul(g,il)|0,e=e+Math.imul(p,al)|0,t=t+Math.imul(p,sl)|0,t=t+Math.imul(b,al)|0,r=r+Math.imul(b,sl)|0,e=e+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,e=Math.imul(N,z),t=Math.imul(N,F),t=t+Math.imul(D,z)|0,r=Math.imul(D,F),e=e+Math.imul(U,H)|0,t=t+Math.imul(U,V)|0,t=t+Math.imul(T,H)|0,r=r+Math.imul(T,V)|0,e=e+Math.imul(O,W)|0,t=t+Math.imul(O,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,e=e+Math.imul(B,G)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(j,G)|0,r=r+Math.imul(j,J)|0,e=e+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(A,Q)|0,r=r+Math.imul(A,ll)|0,e=e+Math.imul(S,ul)|0,t=t+Math.imul(S,el)|0,t=t+Math.imul(E,ul)|0,r=r+Math.imul(E,el)|0,e=e+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,e=e+Math.imul(y,al)|0,t=t+Math.imul(y,sl)|0,t=t+Math.imul(g,al)|0,r=r+Math.imul(g,sl)|0,e=e+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,e=e+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,e=Math.imul(N,H),t=Math.imul(N,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),e=e+Math.imul(U,W)|0,t=t+Math.imul(U,X)|0,t=t+Math.imul(T,W)|0,r=r+Math.imul(T,X)|0,e=e+Math.imul(O,G)|0,t=t+Math.imul(O,J)|0,t=t+Math.imul(C,G)|0,r=r+Math.imul(C,J)|0,e=e+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,e=e+Math.imul(I,ul)|0,t=t+Math.imul(I,el)|0,t=t+Math.imul(A,ul)|0,r=r+Math.imul(A,el)|0,e=e+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,e=e+Math.imul(_,al)|0,t=t+Math.imul(_,sl)|0,t=t+Math.imul(w,al)|0,r=r+Math.imul(w,sl)|0,e=e+Math.imul(y,cl)|0,t=t+Math.imul(y,hl)|0,t=t+Math.imul(g,cl)|0,r=r+Math.imul(g,hl)|0,e=e+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,e=Math.imul(N,W),t=Math.imul(N,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),e=e+Math.imul(U,G)|0,t=t+Math.imul(U,J)|0,t=t+Math.imul(T,G)|0,r=r+Math.imul(T,J)|0,e=e+Math.imul(O,Q)|0,t=t+Math.imul(O,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,e=e+Math.imul(B,ul)|0,t=t+Math.imul(B,el)|0,t=t+Math.imul(j,ul)|0,r=r+Math.imul(j,el)|0,e=e+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(A,rl)|0,r=r+Math.imul(A,il)|0,e=e+Math.imul(S,al)|0,t=t+Math.imul(S,sl)|0,t=t+Math.imul(E,al)|0,r=r+Math.imul(E,sl)|0,e=e+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,e=e+Math.imul(y,pl)|0,t=t+Math.imul(y,bl)|0,t=t+Math.imul(g,pl)|0,r=r+Math.imul(g,bl)|0;var Al=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,e=Math.imul(N,G),t=Math.imul(N,J),t=t+Math.imul(D,G)|0,r=Math.imul(D,J),e=e+Math.imul(U,Q)|0,t=t+Math.imul(U,ll)|0,t=t+Math.imul(T,Q)|0,r=r+Math.imul(T,ll)|0,e=e+Math.imul(O,ul)|0,t=t+Math.imul(O,el)|0,t=t+Math.imul(C,ul)|0,r=r+Math.imul(C,el)|0,e=e+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,e=e+Math.imul(I,al)|0,t=t+Math.imul(I,sl)|0,t=t+Math.imul(A,al)|0,r=r+Math.imul(A,sl)|0,e=e+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,e=e+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var xl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,e=Math.imul(N,Q),t=Math.imul(N,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),e=e+Math.imul(U,ul)|0,t=t+Math.imul(U,el)|0,t=t+Math.imul(T,ul)|0,r=r+Math.imul(T,el)|0,e=e+Math.imul(O,rl)|0,t=t+Math.imul(O,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,e=e+Math.imul(B,al)|0,t=t+Math.imul(B,sl)|0,t=t+Math.imul(j,al)|0,r=r+Math.imul(j,sl)|0,e=e+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(A,cl)|0,r=r+Math.imul(A,hl)|0,e=e+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var Bl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,e=Math.imul(N,ul),t=Math.imul(N,el),t=t+Math.imul(D,ul)|0,r=Math.imul(D,el),e=e+Math.imul(U,rl)|0,t=t+Math.imul(U,il)|0,t=t+Math.imul(T,rl)|0,r=r+Math.imul(T,il)|0,e=e+Math.imul(O,al)|0,t=t+Math.imul(O,sl)|0,t=t+Math.imul(C,al)|0,r=r+Math.imul(C,sl)|0,e=e+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,e=e+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(A,pl)|0,r=r+Math.imul(A,bl)|0;var jl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,e=Math.imul(N,rl),t=Math.imul(N,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),e=e+Math.imul(U,al)|0,t=t+Math.imul(U,sl)|0,t=t+Math.imul(T,al)|0,r=r+Math.imul(T,sl)|0,e=e+Math.imul(O,cl)|0,t=t+Math.imul(O,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,e=e+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Rl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,e=Math.imul(N,al),t=Math.imul(N,sl),t=t+Math.imul(D,al)|0,r=Math.imul(D,sl),e=e+Math.imul(U,cl)|0,t=t+Math.imul(U,hl)|0,t=t+Math.imul(T,cl)|0,r=r+Math.imul(T,hl)|0,e=e+Math.imul(O,pl)|0,t=t+Math.imul(O,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Ol=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,e=Math.imul(N,cl),t=Math.imul(N,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),e=e+Math.imul(U,pl)|0,t=t+Math.imul(U,bl)|0,t=t+Math.imul(T,pl)|0,r=r+Math.imul(T,bl)|0;var Cl=(s+e|0)+((8191&t)<<13)|0;s=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,e=Math.imul(N,pl),t=Math.imul(N,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Pl=(s+e|0)+((8191&t)<<13)|0;return s=(r+(t>>>13)|0)+(Pl>>>26)|0,Pl&=67108863,a[0]=vl,a[1]=yl,a[2]=gl,a[3]=ml,a[4]=_l,a[5]=wl,a[6]=kl,a[7]=Sl,a[8]=El,a[9]=Ml,a[10]=Il,a[11]=Al,a[12]=xl,a[13]=Bl,a[14]=jl,a[15]=Rl,a[16]=Ol,a[17]=Cl,a[18]=Pl,0!==s&&(a[19]=s,u.length++),u};Math.imul||(M=s),r.prototype.mulTo=function(l,n){var u,e=this.length+l.length;return u=10===this.length&&10===l.length?M(this,l,n):e<63?s(this,l,n):e<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),u=r.prototype._countBits(l)-1,e=0;e>=1;return e},h.prototype.permute=function(l,n,u,e,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,u[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[u]=67108863&r}return 0!==n&&(this.words[u]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=a(l);if(0===n.length)return new r(1);for(var u=this,e=0;e=0);var n,u=l%26,t=(l-u)/26,r=67108863>>>26-u<<26-u;if(0!==u){var i=0;for(n=0;n>>26-u}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,s=0;s=0&&(0!==f||s>=t);s--){var c=0|this.words[s];this.words[s]=f<<26-r|c>>>r,f=c&o}return a&&0!==f&&(a.words[a.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,u){return e(0===this.negative),this.iushrn(l,n,u)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){e("number"==typeof l&&l>=0);var n=l%26,u=(l-n)/26,t=1<=0);var n=l%26,u=(l-n)/26;if(e(0===this.negative,"imaskn works only with positive numbers"),0!==n&&u++,this.length=Math.min(u,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(e("number"==typeof l),e(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(a/67108864|0),this.words[t+u]=67108863&i}for(;t>26,this.words[t+u]=67108863&i;if(0===o)return this.strip();for(e(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var u=this.length-l.length,e=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);u=26-o,0!==u&&(t=t.ushln(u),e.iushln(u),i=0|t.words[t.length-1]);var a,s=e.length-t.length;if("mod"!==n){a=new r(null),a.length=s+1,a.words=new Array(a.length);for(var f=0;f=0;h--){var d=67108864*(0|e.words[t.length+h])+(0|e.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),e._ishlnsubmul(t,d,h);0!==e.negative;)d--,e.negative=0,e._ishlnsubmul(t,1,h),e.isZero()||(e.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),e.strip(),"div"!==n&&0!==u&&e.iushrn(u),{div:a||null,mod:e}},r.prototype.divmod=function(l,n,u){if(e(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),u&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var u=0!==n.div.negative?n.mod.isub(l):n.mod,e=l.ushrn(1),t=l.andln(1),r=u.cmp(e);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){e(l<=67108863);for(var n=(1<<26)%l,u=0,t=this.length-1;t>=0;t--)u=(n*u+(0|this.words[t]))%l;return u},r.prototype.idivn=function(l){e(l<=67108863);for(var n=0,u=this.length-1;u>=0;u--){var t=(0|this.words[u])+67108864*n;this.words[u]=t/l|0,n=t%l}return this.strip()},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),a=new r(1),s=0;n.isEven()&&u.isEven();)n.iushrn(1),u.iushrn(1),++s;for(var f=u.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(u.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(u.iushrn(p);p-- >0;)(o.isOdd()||a.isOdd())&&(o.iadd(f),a.isub(c)),o.iushrn(1),a.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(o),i.isub(a)):(u.isub(n),o.isub(t),a.isub(i))}return{a:o,b:a,gcd:u.iushln(s)}},r.prototype._invmp=function(l){e(0===l.negative),e(!l.isZero());var n=this,u=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=u.clone();n.cmpn(1)>0&&u.cmpn(1)>0;){for(var a=0,s=1;0===(n.words[0]&s)&&a<26;++a,s<<=1);if(a>0)for(n.iushrn(a);a-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(u.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(u.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(u)>=0?(n.isub(u),t.isub(i)):(u.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),u=l.clone();n.negative=0,u.negative=0;for(var e=0;n.isEven()&&u.isEven();e++)n.iushrn(1),u.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;u.isEven();)u.iushrn(1);var t=n.cmp(u);if(t<0){var r=n;n=u,u=r}else if(0===t||0===u.cmpn(1))break;n.isub(u)}return u.iushln(e)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){e("number"==typeof l);var n=l%26,u=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var u;if(this.length>1)u=1;else{n&&(l=-l),e(l<=67108863,"Number is too big");var t=0|this.words[0];u=t===l?0:tl.length)return 1;if(this.length=0;u--){var e=0|this.words[u],t=0|l.words[u];if(e!==t){et&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new g(l)},r.prototype.toRed=function(l){return e(!this.red,"Already a number in reduction context"),e(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return e(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return e(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return e(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return e(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return e(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return e(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return e(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return e(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return e(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return e(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return e(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return e(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return e(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,u=l;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),n=u.bitLength();while(n>this.n);var e=n0?u.isub(this.p):u.strip(),u},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var u=4194303,e=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,u=0;u>>=26,l.words[u]=t,n=e}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function A(l){if(I[l])return I[l];var A;if("k256"===l)A=new p;else if("p224"===l)A=new b;else if("p192"===l)A=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);A=new y}return I[l]=A,A},g.prototype._verify1=function(l){e(0===l.negative,"red works only with positives"),e(l.red,"red works only with red numbers")},g.prototype._verify2=function(l,n){e(0===(l.negative|n.negative),"red works only with positives"),e(l.red&&l.red===n.red,"red works only with red numbers")},g.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},g.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},g.prototype.add=function(l,n){this._verify2(l,n);var u=l.add(n);return u.cmp(this.m)>=0&&u.isub(this.m),u._forceRed(this)},g.prototype.iadd=function(l,n){this._verify2(l,n);var u=l.iadd(n);return u.cmp(this.m)>=0&&u.isub(this.m),u},g.prototype.sub=function(l,n){this._verify2(l,n);var u=l.sub(n);return u.cmpn(0)<0&&u.iadd(this.m),u._forceRed(this)},g.prototype.isub=function(l,n){this._verify2(l,n);var u=l.isub(n);return u.cmpn(0)<0&&u.iadd(this.m),u},g.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},g.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},g.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},g.prototype.isqr=function(l){return this.imul(l,l.clone())},g.prototype.sqr=function(l){return this.mul(l,l)},g.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(e(n%2===1),3===n){var u=this.m.add(new r(1)).iushrn(2);return this.pow(l,u)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);e(!t.isZero());var o=new r(1).toRed(this),a=o.redNeg(),s=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,s).cmp(a);)f.redIAdd(a);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();e(v=0;t--){for(var f=n.words[t],c=s-1;c>=0;c--){var h=f>>c&1;i!==e[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,a++,(a===u||0===t&&0===c)&&(i=this.mul(i,e[o]),a=0,o=0)):a=0}s=26}return i},g.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},g.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,g),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var u=l.imul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var u=l.mul(n),e=u.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=u.isub(e).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],17:[function(l,n,u){function e(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new e(null)),t.generate(l)},n.exports.Rand=e,e.prototype.generate=function(l){return this._rand(l)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.crypto.getRandomValues(n),n}:window.msCrypto&&window.msCrypto.getRandomValues?e.prototype._rand=function(l){var n=new Uint8Array(l);return window.msCrypto.getRandomValues(n),n}:e.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var r=l("crypto");e.prototype._rand=function(l){return r.randomBytes(l)}}catch(i){e.prototype._rand=function(l){for(var n=new Uint8Array(l),u=0;uo||l<0?(u=Math.abs(l)%o,l<0?o-u:u):l}function e(l){for(var n=0;n>>8^255&u^99,this.SBOX[t]=u,this.INV_SBOX[u]=t,r=l[t],i=l[r],o=l[i],e=257*l[u]^16843008*u,this.SUB_MIX[0][t]=e<<24|e>>>8,this.SUB_MIX[1][t]=e<<16|e>>>16,this.SUB_MIX[2][t]=e<<8|e>>>24,this.SUB_MIX[3][t]=e,e=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][u]=e<<24|e>>>8,this.INV_SUB_MIX[1][u]=e<<16|e>>>16,this.INV_SUB_MIX[2][u]=e<<8|e>>>24,this.INV_SUB_MIX[3][u]=e,0===t?t=a=1:(t=r^l[l[l[o^r]]],a^=l[l[a]]);return!0};var a=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,u,e,t,r;for(u=this._key,n=u.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],e=0;e>>24,r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r],r^=a.RCON[e/n|0]<<24):n>6&&e%n===4?r=a.SBOX[r>>>24]<<24|a.SBOX[r>>>16&255]<<16|a.SBOX[r>>>8&255]<<8|a.SBOX[255&r]:void 0,this._keySchedule[e-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^a.INV_SUB_MIX[1][a.SBOX[r>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[r>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var u=this._doCryptBlock(n,this._keySchedule,a.SUB_MIX,a.SBOX),e=new l(16);return e.writeUInt32BE(u[0],0),e.writeUInt32BE(u[1],4),e.writeUInt32BE(u[2],8),e.writeUInt32BE(u[3],12),e},i.prototype.decryptBlock=function(n){n=r(new l(n));var u=[n[3],n[1]];n[1]=u[0],n[3]=u[1];var e=this._doCryptBlock(n,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX),t=new l(16);return t.writeUInt32BE(e[0],0),t.writeUInt32BE(e[3],4),t.writeUInt32BE(e[2],8),t.writeUInt32BE(e[1],12),t},i.prototype.scrub=function(){e(this._keySchedule),e(this._invKeySchedule),e(this._key)},i.prototype._doCryptBlock=function(l,u,e,t){var r,i,o,a,s,f,c,h,d;i=l[0]^u[0],o=l[1]^u[1],a=l[2]^u[2],s=l[3]^u[3],r=4;for(var p=1;p>>24]^e[1][o>>>16&255]^e[2][a>>>8&255]^e[3][255&s]^u[r++],c=e[0][o>>>24]^e[1][a>>>16&255]^e[2][s>>>8&255]^e[3][255&i]^u[r++],h=e[0][a>>>24]^e[1][s>>>16&255]^e[2][i>>>8&255]^e[3][255&o]^u[r++],d=e[0][s>>>24]^e[1][i>>>16&255]^e[2][o>>>8&255]^e[3][255&a]^u[r++],i=f,o=c,a=h,s=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[a>>>8&255]<<8|t[255&s])^u[r++],c=(t[o>>>24]<<24|t[a>>>16&255]<<16|t[s>>>8&255]<<8|t[255&i])^u[r++],h=(t[a>>>24]<<24|t[s>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^u[r++],d=(t[s>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&a])^u[r++],[n(f),n(c),n(h),n(d)]},u.AES=i}).call(this,l("buffer").Buffer)},{buffer:46}],20:[function(l,n,u){(function(u){function e(l,n,t,o){if(!(this instanceof e))return new e(l,n,t);i.call(this),this._finID=u.concat([t,new u([0,0,0,1])]),t=u.concat([t,new u([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new u(t.length),this._cache=new u(""),this._secCache=new u(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var s=new u(4);s.fill(0),this._ghash=new a(this._cipher.encryptBlock(s)),this._authTag=null,this._called=!1}function t(l,n){var u=0;l.length!==n.length&&u++;for(var e=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};u.createDecipher=o,u.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":19,"./authCipher":20,"./modes":25,"./modes/cbc":26,"./modes/cfb":27,"./modes/cfb1":28,"./modes/cfb8":29,"./modes/ctr":30,"./modes/ecb":31,"./modes/ofb":32,"./streamCipher":33,buffer:46,"cipher-base":47,evp_bytestokey:83,inherits:92}],23:[function(l,n,u){(function(n){function e(l,u,r){return this instanceof e?(a.call(this),this._cache=new t,this._cipher=new o.AES(u),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new e(l,u,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,u,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof u&&(u=new n(u)),u.length!==r.key/8)throw new TypeError("invalid key length "+u.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],u,t):"auth"===r.type?new d(p[r.mode],u,t):new e(p[r.mode],u,t)}function i(l,n){var u=f[l.toLowerCase()];if(!u)throw new TypeError("invalid suite type");var e=c(n,!1,u.key,u.iv);return r(l,e.key,e.iv)}var o=l("./aes"),a=l("cipher-base"),s=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");s(e,a),e.prototype._update=function(l){this._cache.add(l);for(var u,e,t=[];u=this._cache.get();)e=this._mode.encrypt(this,u),t.push(e);return n.concat(t)},e.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},e.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,u=new n(l),e=-1;++ea||l<0?(u=Math.abs(l)%a,l<0?a-u:u):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=u,u.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,u&&(r[0]=r[0]^225<<24)}this.state=t(o)},u.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var u;this.cache.length>=16;)u=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(u)},u.prototype["final"]=function(n,u){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,u])),this.state};var a=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:46}],25:[function(l,n,u){u["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},u["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},u["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},u["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},u["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},u["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},u.aes128=u["aes-128-cbc"],u.aes192=u["aes-192-cbc"],u.aes256=u["aes-256-cbc"],u["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},u["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},u["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},u["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},u["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},u["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},u["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},u["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},u["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},u["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},u["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},u["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},u["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},u["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},u["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},u["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},u["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},u["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],26:[function(l,n,u){var e=l("buffer-xor");u.encrypt=function(l,n){var u=e(n,l._prev);return l._prev=l._cipher.encryptBlock(u),l._prev},u.decrypt=function(l,n){var u=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return e(t,u)}},{"buffer-xor":45}],27:[function(l,n,u){(function(n){function e(l,u,e){var r=u.length,i=t(u,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,e?u:i]),i}var t=l("buffer-xor");u.encrypt=function(l,u,t){for(var r,i=new n("");u.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=u.length)){i=n.concat([i,e(l,u,t)]);break}r=l._cache.length,i=n.concat([i,e(l,u.slice(0,r),t)]),u=u.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:46,"buffer-xor":45}],28:[function(l,n,u){(function(l){function n(l,n,u){for(var t,r,i,o=-1,a=8,s=0;++o>o%8,l._prev=e(l._prev,u?r:i);return s}function e(n,u){var e=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([u])]);++t>7;return r}u.encrypt=function(u,e,t){for(var r=e.length,i=new l(r),o=-1;++o=0||!u.umod(l.prime1)||!u.umod(l.prime2);)u=new i(o(n));return u}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46,randombytes:112}],38:[function(l,n,u){(function(l){"use strict";u["RSA-SHA224"]=u.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},u["RSA-SHA256"]=u.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},u["RSA-SHA384"]=u.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},u["RSA-SHA512"]=u.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},u["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},u["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},u.DSA=u["DSA-SHA1"]=u["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},u["DSA-SHA224"]=u["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224",id:new l("","hex")},u["DSA-SHA256"]=u["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},u["DSA-SHA384"]=u["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},u["DSA-SHA512"]=u["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},u["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},u["RSA-RIPEMD160"]=u.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},u["RSA-MD5"]=u.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:46}],39:[function(l,n,u){(function(u){function e(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=a(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new e(l)}function i(l){return new t(l)}var o=l("./algos"),a=l("create-hash"),s=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),s(e,c.Writable),e.prototype._write=function(l,n,u){this._hash.update(l),u()},e.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},e.prototype.sign=function(l,n){this.end();var e=this._hash.digest(),t=f(u.concat([this._tag,e]),l,this._hashType,this._signType);return n?t.toString(n):t},s(t,c.Writable),t.prototype._write=function(l,n,u){this._hash.update(l),u()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new u(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,e){"string"==typeof n&&(n=new u(n,e)),this.end();var t=this._hash.digest();return h(n,u.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":38,"./sign":41,"./verify":42,buffer:46,"create-hash":50,inherits:92,stream:132}],40:[function(l,n,u){"use strict";u["1.3.132.0.10"]="secp256k1",u["1.3.132.0.33"]="p224",u["1.2.840.10045.3.1.1"]="p192",u["1.2.840.10045.3.1.7"]="p256",u["1.3.132.0.34"]="p384",u["1.3.132.0.35"]="p521"},{}],41:[function(l,n,u){(function(u){function e(l,n,u,e){var i=v(n);if(i.curve){if("ecdsa"!==e)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==e)throw new Error("wrong private key type");return r(l,i,u)}if("rsa"!==e)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),a=[0,1];l.length+a.length+10&&u.ishrn(e),u}function s(l,n){l=a(l,n),l=l.mod(n);var e=new u(l.toArray());if(e.length=n)throw new Error("invalid sig")}var o=l("./curves"),a=l("elliptic"),s=l("parse-asn1"),f=l("bn.js"),c=a.ec;n.exports=e}).call(this,l("buffer").Buffer)},{"./curves":40,"bn.js":16,buffer:46,elliptic:65,"parse-asn1":101}],43:[function(l,n,u){arguments[4][18][0].apply(u,arguments)},{dup:18}],44:[function(l,n,u){(function(n){"use strict";var e=l("buffer"),t=e.Buffer,r=e.SlowBuffer,i=e.kMaxLength||2147483647;u.alloc=function(l,n,u){if("function"==typeof t.alloc)return t.alloc(l,n,u);if("number"==typeof u)throw new TypeError("encoding must not be number"); +if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var e=u,r=n;void 0===r&&(e=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var a=new t(r,e),s=a.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},u.from=function(l,u,e){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,u,e);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,u);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=u;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=e;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},u.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:46}],45:[function(l,n,u){(function(l){n.exports=function(n,u){for(var e=Math.min(n.length,u.length),t=new l(e),r=0;r1?arguments[1]:"utf8"):a(this,l)):arguments.length>1?new r(l,arguments[1]):new r(l)}function i(l,n){if(l=b(l,n<0?0:0|v(n)),!r.TYPED_ARRAY_SUPPORT)for(var u=0;u>>1;return u&&(l.parent=J),l}function v(l){if(l>=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function y(l,n){if(!(this instanceof y))return new y(l,n);var u=new r(l,n);return delete u.parent,u}function g(l,n){"string"!=typeof l&&(l=""+l);var u=l.length;if(0===u)return 0;for(var e=!1;;)switch(n){case"ascii":case"binary":case"raw":case"raws":return u;case"utf8":case"utf-8":return K(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return Y(l).length;default:if(e)return K(l).length;n=(""+n).toLowerCase(),e=!0}}function m(l,n,u){var e=!1;if(n=0|n,u=void 0===u||u===1/0?this.length:0|u,l||(l="utf8"),n<0&&(n=0),u>this.length&&(u=this.length),u<=n)return"";for(;;)switch(l){case"hex":return R(this,n,u);case"utf8":case"utf-8":return A(this,n,u);case"ascii":return B(this,n,u);case"binary":return j(this,n,u);case"base64":return I(this,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,n,u);default:if(e)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),e=!0}}function _(l,n,u,e){u=Number(u)||0;var t=l.length-u;e?(e=Number(e),e>t&&(e=t)):e=t;var r=n.length;if(r%2!==0)throw new Error("Invalid hex string");e>r/2&&(e=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=u){var a,s,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:a=l[t+1],128===(192&a)&&(c=(31&r)<<6|63&a,c>127&&(i=c));break;case 3:a=l[t+1],s=l[t+2],128===(192&a)&&128===(192&s)&&(c=(15&r)<<12|(63&a)<<6|63&s,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:a=l[t+1],s=l[t+2],f=l[t+3],128===(192&a)&&128===(192&s)&&128===(192&f)&&(c=(15&r)<<18|(63&a)<<12|(63&s)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,e.push(i>>>10&1023|55296),i=56320|1023&i),e.push(i),t+=o}return x(e)}function x(l){var n=l.length;if(n<=$)return String.fromCharCode.apply(String,l);for(var u="",e=0;ee)&&(u=e);for(var t="",r=n;ru)throw new RangeError("Trying to access beyond buffer length")}function P(l,n,u,e,t,i){if(!r.isBuffer(l))throw new TypeError("buffer must be a Buffer instance");if(n>t||nl.length)throw new RangeError("index out of range")}function U(l,n,u,e){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-u,2);t>>8*(e?t:1-t)}function T(l,n,u,e){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-u,4);t>>8*(e?t:3-t)&255}function L(l,n,u,e,t,r){if(n>t||nl.length)throw new RangeError("index out of range");if(u<0)throw new RangeError("index out of range")}function N(l,n,u,e,t){return t||L(l,n,u,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(l,n,u,e,23,4),u+4}function D(l,n,u,e,t){return t||L(l,n,u,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(l,n,u,e,52,8),u+8}function q(l){if(l=z(l).replace(ll,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function z(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function F(l){return l<16?"0"+l.toString(16):l.toString(16)}function K(l,n){n=n||1/0;for(var u,e=l.length,t=null,r=[],i=0;i55295&&u<57344){if(!t){if(u>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===e){(n-=3)>-1&&r.push(239,191,189);continue}t=u;continue}if(u<56320){(n-=3)>-1&&r.push(239,191,189),t=u;continue}u=(t-55296<<10|u-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,u<128){if((n-=1)<0)break;r.push(u)}else if(u<2048){if((n-=2)<0)break;r.push(u>>6|192,63&u|128)}else if(u<65536){if((n-=3)<0)break;r.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return r}function H(l){for(var n=[],u=0;u>8,t=u%256,r.push(t),r.push(e);return r}function Y(l){return X.toByteArray(q(l))}function W(l,n,u,e){for(var t=0;t=n.length||t>=l.length);t++)n[t+u]=l[t];return t}var X=l("base64-js"),Z=l("ieee754"),G=l("isarray");u.Buffer=r,u.SlowBuffer=y,u.INSPECT_MAX_BYTES=50,r.poolSize=8192;var J={};r.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:e(),r.TYPED_ARRAY_SUPPORT?(r.prototype.__proto__=Uint8Array.prototype,r.__proto__=Uint8Array):(r.prototype.length=void 0,r.prototype.parent=void 0),r.isBuffer=function(l){return!(null==l||!l._isBuffer)},r.compare=function(l,n){if(!r.isBuffer(l)||!r.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var u=l.length,e=n.length,t=0,i=Math.min(u,e);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},r.prototype.compare=function(l){if(!r.isBuffer(l))throw new TypeError("Argument must be a Buffer");return this===l?0:r.compare(this,l)},r.prototype.indexOf=function(l,n){function u(l,n,u){for(var e=-1,t=0;u+t2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n>>=0,0===this.length)return-1;if(n>=this.length)return-1;if(n<0&&(n=Math.max(this.length+n,0)),"string"==typeof l)return 0===l.length?-1:String.prototype.indexOf.call(this,l,n);if(r.isBuffer(l))return u(this,l,n);if("number"==typeof l)return r.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,l,n):u(this,[l],n);throw new TypeError("val must be string, number or Buffer")},r.prototype.get=function(l){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(l)},r.prototype.set=function(l,n){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(l,n)},r.prototype.write=function(l,n,u,e){if(void 0===n)e="utf8",u=this.length,n=0;else if(void 0===u&&"string"==typeof n)e=n,u=this.length,n=0;else if(isFinite(n))n=0|n,isFinite(u)?(u=0|u,void 0===e&&(e="utf8")):(e=u,u=void 0);else{var t=e;e=n,n=0|u,u=t}var r=this.length-n;if((void 0===u||u>r)&&(u=r),l.length>0&&(u<0||n<0)||n>this.length)throw new RangeError("attempt to write outside buffer bounds");e||(e="utf8");for(var i=!1;;)switch(e){case"hex":return _(this,l,n,u);case"utf8":case"utf-8":return w(this,l,n,u);case"ascii":return k(this,l,n,u);case"binary":return S(this,l,n,u);case"base64":return E(this,l,n,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,l,n,u);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),i=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;r.prototype.slice=function(l,n){var u=this.length;l=~~l,n=void 0===n?u:~~n,l<0?(l+=u,l<0&&(l=0)):l>u&&(l=u),n<0?(n+=u,n<0&&(n=0)):n>u&&(n=u),n0&&(t*=256);)e+=this[l+--n]*t;return e},r.prototype.readUInt8=function(l,n){return n||C(l,1,this.length),this[l]},r.prototype.readUInt16LE=function(l,n){return n||C(l,2,this.length),this[l]|this[l+1]<<8},r.prototype.readUInt16BE=function(l,n){return n||C(l,2,this.length),this[l]<<8|this[l+1]},r.prototype.readUInt32LE=function(l,n){return n||C(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},r.prototype.readUInt32BE=function(l,n){return n||C(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},r.prototype.readIntLE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=this[l],t=1,r=0;++r=t&&(e-=Math.pow(2,8*n)),e},r.prototype.readIntBE=function(l,n,u){l=0|l,n=0|n,u||C(l,n,this.length);for(var e=n,t=1,r=this[l+--e];e>0&&(t*=256);)r+=this[l+--e]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},r.prototype.readInt8=function(l,n){return n||C(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},r.prototype.readInt16LE=function(l,n){n||C(l,2,this.length);var u=this[l]|this[l+1]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt16BE=function(l,n){n||C(l,2,this.length);var u=this[l+1]|this[l]<<8;return 32768&u?4294901760|u:u},r.prototype.readInt32LE=function(l,n){return n||C(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},r.prototype.readInt32BE=function(l,n){return n||C(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},r.prototype.readFloatLE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!0,23,4)},r.prototype.readFloatBE=function(l,n){return n||C(l,4,this.length),Z.read(this,l,!1,23,4)},r.prototype.readDoubleLE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!0,52,8)},r.prototype.readDoubleBE=function(l,n){return n||C(l,8,this.length),Z.read(this,l,!1,52,8)},r.prototype.writeUIntLE=function(l,n,u,e){l=+l,n=0|n,u=0|u,e||P(this,l,n,u,Math.pow(2,8*u),0);var t=1,r=0;for(this[n]=255&l;++r=0&&(r*=256);)this[n+t]=l/r&255;return n+u},r.prototype.writeUInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,255,0),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},r.prototype.writeUInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeUInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,65535,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeUInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):T(this,l,n,!0),n+4},r.prototype.writeUInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,4294967295,0),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeIntLE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=0,i=1,o=l<0?1:0;for(this[n]=255&l;++r>0)-o&255;return n+u},r.prototype.writeIntBE=function(l,n,u,e){if(l=+l,n=0|n,!e){var t=Math.pow(2,8*u-1);P(this,l,n,u,t-1,-t)}var r=u-1,i=1,o=l<0?1:0;for(this[n+r]=255&l;--r>=0&&(i*=256);)this[n+r]=(l/i>>0)-o&255;return n+u},r.prototype.writeInt8=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,1,127,-128),r.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},r.prototype.writeInt16LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):U(this,l,n,!0),n+2},r.prototype.writeInt16BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,2,32767,-32768),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):U(this,l,n,!1),n+2},r.prototype.writeInt32LE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),r.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):T(this,l,n,!0),n+4},r.prototype.writeInt32BE=function(l,n,u){return l=+l,n=0|n,u||P(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),r.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):T(this,l,n,!1),n+4},r.prototype.writeFloatLE=function(l,n,u){return N(this,l,n,!0,u)},r.prototype.writeFloatBE=function(l,n,u){return N(this,l,n,!1,u)},r.prototype.writeDoubleLE=function(l,n,u){return D(this,l,n,!0,u)},r.prototype.writeDoubleBE=function(l,n,u){return D(this,l,n,!1,u)},r.prototype.copy=function(l,n,u,e){if(u||(u=0),e||0===e||(e=this.length),n>=l.length&&(n=l.length),n||(n=0),e>0&&e=this.length)throw new RangeError("sourceStart out of bounds");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),l.length-n=0;t--)l[t+n]=this[t+u];else if(i<1e3||!r.TYPED_ARRAY_SUPPORT)for(t=0;t=this.length)throw new RangeError("start out of bounds");if(u<0||u>this.length)throw new RangeError("end out of bounds");var e;if("number"==typeof l)for(e=n;e>5]|=128<>>9<<4)+14]=n;for(var u=1732584193,e=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(u>>16);return e<<16|65535&u}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,e,16)}},{"./helpers":51}],53:[function(l,n,u){(function(u){"use strict";function e(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new u(n));var e="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>e?n=t(l).update(n).digest():n.length0;e--)n+=this._buffer(l,n),u+=this._flushBuffer(t,u);return n+=this._buffer(l,n),t},e.prototype["final"]=function(l){var n;l&&(n=this.update(l));var u;return u="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(u):u},e.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];u=a.r28shl(u,i),e=a.r28shl(e,i),a.pc2(u,e,l.keys,t)}},t.prototype._update=function(l,n,u,e){var t=this._desState,r=a.readUInt32BE(l,n),i=a.readUInt32BE(l,n+4);a.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],a.writeUInt32BE(u,r,e),a.writeUInt32BE(u,i,e+4)},t.prototype._pad=function(l,n){for(var u=l.length-n,e=n;e>>0,r=d}a.rip(i,r,e,t)},t.prototype._decrypt=function(l,n,u,e,t){for(var r=u,i=n,o=l.keys.length-2;o>=0;o-=2){var s=l.keys[o],f=l.keys[o+1];a.expand(r,l.tmp,0),s^=l.tmp[0],f^=l.tmp[1];var c=a.substitute(s,f),h=a.permute(c),d=r;r=(i^h)>>>0,i=d}a.rip(r,i,e,t)}},{"../des":55,inherits:92,"minimalistic-assert":96}],59:[function(l,n,u){"use strict";function e(l,n){r.equal(n.length,24,"Invalid key length");var u=n.slice(0,8),e=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[s.create({type:"encrypt",key:u}),s.create({type:"decrypt",key:e}),s.create({type:"encrypt",key:t})]:this.ciphers=[s.create({type:"decrypt",key:t}),s.create({type:"encrypt",key:e}),s.create({type:"decrypt",key:u})]}function t(l){a.call(this,l);var n=new e(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),a=o.Cipher,s=o.DES;i(t,a),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,u,e){var t=this._edeState;t.ciphers[0]._update(l,n,u,e),t.ciphers[1]._update(u,e,u,e),t.ciphers[2]._update(u,e,u,e)},t.prototype._pad=s.prototype._pad,t.prototype._unpad=s.prototype._unpad},{"../des":55,inherits:92,"minimalistic-assert":96}],60:[function(l,n,u){"use strict";u.readUInt32BE=function(l,n){var u=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return u>>>0},u.writeUInt32BE=function(l,n,u){l[0+u]=n>>>24,l[1+u]=n>>>16&255,l[2+u]=n>>>8&255,l[3+u]=255&n},u.ip=function(l,n,u,e){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}u[e+0]=t>>>0,u[e+1]=r>>>0},u.rip=function(l,n,u,e){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.pc1=function(l,n,u,e){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;u[e+0]=t>>>0,u[e+1]=r>>>0},u.r28shl=function(l,n){return l<>>28-n};var e=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];u.pc2=function(l,n,u,t){for(var r=0,i=0,o=e.length>>>1,a=0;a>>e[a]&1;for(var a=o;a>>e[a]&1;u[t+0]=r>>>0,u[t+1]=i>>>0},u.expand=function(l,n,u){var e=0,t=0;e=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)e<<=6,e|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[u+0]=e>>>0,n[u+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];u.substitute=function(l,n){for(var u=0,e=0;e<4;e++){var r=l>>>18-6*e&63,i=t[64*e+r];u<<=4,u|=i}for(var e=0;e<4;e++){var r=n>>>18-6*e&63,i=t[256+64*e+r];u<<=4,u|=i}return u>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];u.permute=function(l){for(var n=0,u=0;u>>r[u]&1;return n>>>0},u.padSplit=function(l,n,u){for(var e=l.toString(2);e.lengthl;)u.ishrn(1);if(u.isEven()&&u.iadd(h),u.testn(1)||u.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;u.mod(b).cmp(v);)u.iadd(g)}else for(;u.mod(s).cmp(y);)u.iadd(g);if(e=u.shrn(1),t(e)&&t(u)&&r(e)&&r(u)&&c.test(e)&&c.test(u))return u}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var a=l("bn.js"),s=new a(24),f=l("miller-rabin"),c=new f,h=new a(1),d=new a(2),p=new a(5),b=(new a(16),new a(8),new a(10)),v=new a(3),y=(new a(7),new a(11)),g=new a(4),m=(new a(12),null)},{"bn.js":16,"miller-rabin":95,randombytes:112}],64:[function(l,n,u){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],65:[function(l,n,u){"use strict";var e=u;e.version=l("../package.json").version,e.utils=l("./elliptic/utils"),e.rand=l("brorand"),e.hmacDRBG=l("./elliptic/hmac-drbg"),e.curve=l("./elliptic/curve"),e.curves=l("./elliptic/curves"),e.ec=l("./elliptic/ec"),e.eddsa=l("./elliptic/eddsa")},{"../package.json":81,"./elliptic/curve":68,"./elliptic/curves":71,"./elliptic/ec":72,"./elliptic/eddsa":75,"./elliptic/hmac-drbg":78,"./elliptic/utils":80,brorand:17}],66:[function(l,n,u){"use strict";function e(l,n){this.type=l,this.p=new r(n.p,16),this.red=n.prime?r.red(n.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=n.n&&new r(n.n,16),this.g=n.g&&this.pointFromJSON(n.g,n.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var u=this.n&&this.p.div(this.n);!u||u.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function t(l,n){this.curve=l,this.type=n,this.precomputed=null}var r=l("bn.js"),i=l("../../elliptic"),o=i.utils,a=o.getNAF,s=o.getJSF,f=o.assert;n.exports=e,e.prototype.point=function(){throw new Error("Not implemented")},e.prototype.validate=function(){throw new Error("Not implemented")},e.prototype._fixedNafMul=function(l,n){f(l.precomputed);var u=l._getDoubles(),e=a(n,1),t=(1<=i;n--)o=(o<<1)+e[n];r.push(o)}for(var s=this.jpoint(null,null,null),c=this.jpoint(null,null,null),h=t;h>0;h--){for(var i=0;i=0;o--){for(var n=0;o>=0&&0===r[o];o--)n++;if(o>=0&&n++,i=i.dblp(n),o<0)break;var s=r[o];f(0!==s),i="affine"===l.type?s>0?i.mixedAdd(t[s-1>>1]):i.mixedAdd(t[-s-1>>1].neg()):s>0?i.add(t[s-1>>1]):i.add(t[-s-1>>1].neg())}return"affine"===l.type?i.toP():i},e.prototype._wnafMulAdd=function(l,n,u,e,t){for(var r=this._wnafT1,i=this._wnafT2,o=this._wnafT3,f=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===r[p]&&1===r[b]){var v=[n[p],null,null,n[b]];0===n[p].y.cmp(n[b].y)?(v[1]=n[p].add(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg())):0===n[p].y.cmp(n[b].y.redNeg())?(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].add(n[b].neg())):(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=s(u[p],u[b]);f=Math.max(g[0].length,f),o[p]=new Array(f),o[b]=new Array(f);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var M=!0,m=0;m=0&&E++,k=k.dblp(E),c<0)break;for(var m=0;m0?h=i[m][I-1>>1]:I<0&&(h=i[m][-I-1>>1].neg()),k="affine"===h.type?k.mixedAdd(h):k.add(h))}}for(var c=0;c=Math.ceil((l.bitLength()+1)/n.step)},t.prototype._getDoubles=function(l,n){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var u=[this],e=this,t=0;t":""},t.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},t.prototype._extDbl=function(){var l=this.x.redSqr(),n=this.y.redSqr(),u=this.z.redSqr();u=u.redIAdd(u);var e=this.curve._mulA(l),t=this.x.redAdd(this.y).redSqr().redISub(l).redISub(n),r=e.redAdd(n),i=r.redSub(u),o=e.redSub(n),a=t.redMul(i),s=r.redMul(o),f=t.redMul(o),c=i.redMul(r);return this.curve.point(a,s,c,f)},t.prototype._projDbl=function(){var l,n,u,e=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),r=this.y.redSqr();if(this.curve.twisted){var i=this.curve._mulA(t),o=i.redAdd(r);if(this.zOne)l=e.redSub(t).redSub(r).redMul(o.redSub(this.curve.two)),n=o.redMul(i.redSub(r)),u=o.redSqr().redSub(o).redSub(o);else{var a=this.z.redSqr(),s=o.redSub(a).redISub(a);l=e.redSub(t).redISub(r).redMul(s),n=o.redMul(i.redSub(r)),u=o.redMul(s)}}else{var i=t.redAdd(r),a=this.curve._mulC(this.c.redMul(this.z)).redSqr(),s=i.redSub(a).redSub(a);l=this.curve._mulC(e.redISub(i)).redMul(s),n=this.curve._mulC(i).redMul(t.redISub(r)),u=i.redMul(s)}return this.curve.point(l,n,u)},t.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},t.prototype._extAdd=function(l){var n=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),u=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),e=this.t.redMul(this.curve.dd).redMul(l.t),t=this.z.redMul(l.z.redAdd(l.z)),r=u.redSub(n),i=t.redSub(e),o=t.redAdd(e),a=u.redAdd(n),s=r.redMul(i),f=o.redMul(a),c=r.redMul(a),h=i.redMul(o);return this.curve.point(s,f,h,c)},t.prototype._projAdd=function(l){var n,u,e=this.z.redMul(l.z),t=e.redSqr(),r=this.x.redMul(l.x),i=this.y.redMul(l.y),o=this.curve.d.redMul(r).redMul(i),a=t.redSub(o),s=t.redAdd(o),f=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(r).redISub(i),c=e.redMul(a).redMul(f);return this.curve.twisted?(n=e.redMul(s).redMul(i.redSub(this.curve._mulA(r))),u=a.redMul(s)):(n=e.redMul(s).redMul(i.redSub(r)),u=this.curve._mulC(a).redMul(s)),this.curve.point(c,n,u)},t.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},t.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!1)},t.prototype.jmulAdd=function(l,n,u){return this.curve._wnafMulAdd(1,[this,n],[l,u],2,!0)},t.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},t.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()},t.prototype.getY=function(){return this.normalize(),this.y.fromRed()},t.prototype.eq=function(l){return this===l||0===this.getX().cmp(l.getX())&&0===this.getY().cmp(l.getY())},t.prototype.eqXToP=function(l){var n=l.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(n))return!0;for(var u=l.clone(),e=this.curve.redN.redMul(this.z);;){if(u.iadd(this.curve.n),u.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(e),0===this.x.cmp(n))return!0}return!1},t.prototype.toP=t.prototype.normalize,t.prototype.mixedAdd=t.prototype.add},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],68:[function(l,n,u){"use strict";var e=u;e.base=l("./base"),e["short"]=l("./short"),e.mont=l("./mont"),e.edwards=l("./edwards")},{"./base":66,"./edwards":67,"./mont":69,"./short":70}],69:[function(l,n,u){"use strict";function e(l){a.call(this,"mont",l),this.a=new i(l.a,16).toRed(this.red),this.b=new i(l.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function t(l,n,u){a.BasePoint.call(this,l,"projective"),null===n&&null===u?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(n,16),this.z=new i(u,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var r=l("../curve"),i=l("bn.js"),o=l("inherits"),a=r.base,s=l("../../elliptic"),f=s.utils;o(e,a),n.exports=e,e.prototype.validate=function(l){var n=l.normalize().x,u=n.redSqr(),e=u.redMul(n).redAdd(u.redMul(this.a)).redAdd(n),t=e.redSqrt();return 0===t.redSqr().cmp(e)},o(t,a.BasePoint),e.prototype.decodePoint=function(l,n){return this.point(f.toArray(l,n),1)},e.prototype.point=function(l,n){return new t(this,l,n)},e.prototype.pointFromJSON=function(l){return t.fromJSON(this,l)},t.prototype.precompute=function(){},t.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},t.fromJSON=function(l,n){return new t(l,n[0],n[1]||l.one)},t.prototype.inspect=function(){ +return this.isInfinity()?"":""},t.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},t.prototype.dbl=function(){var l=this.x.redAdd(this.z),n=l.redSqr(),u=this.x.redSub(this.z),e=u.redSqr(),t=n.redSub(e),r=n.redMul(e),i=t.redMul(e.redAdd(this.curve.a24.redMul(t)));return this.curve.point(r,i)},t.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.diffAdd=function(l,n){var u=this.x.redAdd(this.z),e=this.x.redSub(this.z),t=l.x.redAdd(l.z),r=l.x.redSub(l.z),i=r.redMul(u),o=t.redMul(e),a=n.z.redMul(i.redAdd(o).redSqr()),s=n.x.redMul(i.redISub(o).redSqr());return this.curve.point(a,s)},t.prototype.mul=function(l){for(var n=l.clone(),u=this,e=this.curve.point(null,null),t=this,r=[];0!==n.cmpn(0);n.iushrn(1))r.push(n.andln(1));for(var i=r.length-1;i>=0;i--)0===r[i]?(u=u.diffAdd(e,t),e=e.dbl()):(e=u.diffAdd(e,t),u=u.dbl());return e},t.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.eq=function(l){return 0===this.getX().cmp(l.getX())},t.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],70:[function(l,n,u){"use strict";function e(l){f.call(this,"short",l),this.a=new a(l.a,16).toRed(this.red),this.b=new a(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function t(l,n,u,e){f.BasePoint.call(this,l,"affine"),null===n&&null===u?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(n,16),this.y=new a(u,16),e&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function r(l,n,u,e){f.BasePoint.call(this,l,"jacobian"),null===n&&null===u&&null===e?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(n,16),this.y=new a(u,16),this.z=new a(e,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var i=l("../curve"),o=l("../../elliptic"),a=l("bn.js"),s=l("inherits"),f=i.base,c=o.utils.assert;s(e,f),n.exports=e,e.prototype._getEndomorphism=function(l){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var n,u;if(l.beta)n=new a(l.beta,16).toRed(this.red);else{var e=this._getEndoRoots(this.p);n=e[0].cmp(e[1])<0?e[0]:e[1],n=n.toRed(this.red)}if(l.lambda)u=new a(l.lambda,16);else{var t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(n))?u=t[0]:(u=t[1],c(0===this.g.mul(u).x.cmp(this.g.x.redMul(n))))}var r;return r=l.basis?l.basis.map(function(l){return{a:new a(l.a,16),b:new a(l.b,16)}}):this._getEndoBasis(u),{beta:n,lambda:u,basis:r}}},e.prototype._getEndoRoots=function(l){var n=l===this.p?this.red:a.mont(l),u=new a(2).toRed(n).redInvm(),e=u.redNeg(),t=new a(3).toRed(n).redNeg().redSqrt().redMul(u),r=e.redAdd(t).fromRed(),i=e.redSub(t).fromRed();return[r,i]},e.prototype._getEndoBasis=function(l){for(var n,u,e,t,r,i,o,s,f,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=l,d=this.n.clone(),p=new a(1),b=new a(0),v=new a(0),y=new a(1),g=0;0!==h.cmpn(0);){var m=d.div(h);s=d.sub(m.mul(h)),f=v.sub(m.mul(p));var _=y.sub(m.mul(b));if(!e&&s.cmp(c)<0)n=o.neg(),u=p,e=s.neg(),t=f;else if(e&&2===++g)break;o=s,d=h,h=s,v=p,p=f,y=b,b=_}r=s.neg(),i=f;var w=e.sqr().add(t.sqr()),k=r.sqr().add(i.sqr());return k.cmp(w)>=0&&(r=n,i=u),e.negative&&(e=e.neg(),t=t.neg()),r.negative&&(r=r.neg(),i=i.neg()),[{a:e,b:t},{a:r,b:i}]},e.prototype._endoSplit=function(l){var n=this.endo.basis,u=n[0],e=n[1],t=e.b.mul(l).divRound(this.n),r=u.b.neg().mul(l).divRound(this.n),i=t.mul(u.a),o=r.mul(e.a),a=t.mul(u.b),s=r.mul(e.b),f=l.sub(i).sub(o),c=a.add(s).neg();return{k1:f,k2:c}},e.prototype.pointFromX=function(l,n){l=new a(l,16),l.red||(l=l.toRed(this.red));var u=l.redSqr().redMul(l).redIAdd(l.redMul(this.a)).redIAdd(this.b),e=u.redSqrt();if(0!==e.redSqr().redSub(u).cmp(this.zero))throw new Error("invalid point");var t=e.fromRed().isOdd();return(n&&!t||!n&&t)&&(e=e.redNeg()),this.point(l,e)},e.prototype.validate=function(l){if(l.inf)return!0;var n=l.x,u=l.y,e=this.a.redMul(n),t=n.redSqr().redMul(n).redIAdd(e).redIAdd(this.b);return 0===u.redSqr().redISub(t).cmpn(0)},e.prototype._endoWnafMulAdd=function(l,n,u){for(var e=this._endoWnafT1,t=this._endoWnafT2,r=0;r":""},t.prototype.isInfinity=function(){return this.inf},t.prototype.add=function(l){if(this.inf)return l;if(l.inf)return this;if(this.eq(l))return this.dbl();if(this.neg().eq(l))return this.curve.point(null,null);if(0===this.x.cmp(l.x))return this.curve.point(null,null);var n=this.y.redSub(l.y);0!==n.cmpn(0)&&(n=n.redMul(this.x.redSub(l.x).redInvm()));var u=n.redSqr().redISub(this.x).redISub(l.x),e=n.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,e)},t.prototype.dbl=function(){if(this.inf)return this;var l=this.y.redAdd(this.y);if(0===l.cmpn(0))return this.curve.point(null,null);var n=this.curve.a,u=this.x.redSqr(),e=l.redInvm(),t=u.redAdd(u).redIAdd(u).redIAdd(n).redMul(e),r=t.redSqr().redISub(this.x.redAdd(this.x)),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},t.prototype.getX=function(){return this.x.fromRed()},t.prototype.getY=function(){return this.y.fromRed()},t.prototype.mul=function(l){return l=new a(l,16),this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve.endo?this.curve._endoWnafMulAdd([this],[l]):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t):this.curve._wnafMulAdd(1,e,t,2)},t.prototype.jmulAdd=function(l,n,u){var e=[this,n],t=[l,u];return this.curve.endo?this.curve._endoWnafMulAdd(e,t,!0):this.curve._wnafMulAdd(1,e,t,2,!0)},t.prototype.eq=function(l){return this===l||this.inf===l.inf&&(this.inf||0===this.x.cmp(l.x)&&0===this.y.cmp(l.y))},t.prototype.neg=function(l){if(this.inf)return this;var n=this.curve.point(this.x,this.y.redNeg());if(l&&this.precomputed){var u=this.precomputed,e=function(l){return l.neg()};n.precomputed={naf:u.naf&&{wnd:u.naf.wnd,points:u.naf.points.map(e)},doubles:u.doubles&&{step:u.doubles.step,points:u.doubles.points.map(e)}}}return n},t.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var l=this.curve.jpoint(this.x,this.y,this.curve.one);return l},s(r,f.BasePoint),e.prototype.jpoint=function(l,n,u){return new r(this,l,n,u)},r.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var l=this.z.redInvm(),n=l.redSqr(),u=this.x.redMul(n),e=this.y.redMul(n).redMul(l);return this.curve.point(u,e)},r.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},r.prototype.add=function(l){if(this.isInfinity())return l;if(l.isInfinity())return this;var n=l.z.redSqr(),u=this.z.redSqr(),e=this.x.redMul(n),t=l.x.redMul(u),r=this.y.redMul(n.redMul(l.z)),i=l.y.redMul(u.redMul(this.z)),o=e.redSub(t),a=r.redSub(i);if(0===o.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=o.redSqr(),f=s.redMul(o),c=e.redMul(s),h=a.redSqr().redIAdd(f).redISub(c).redISub(c),d=a.redMul(c.redISub(h)).redISub(r.redMul(f)),p=this.z.redMul(l.z).redMul(o);return this.curve.jpoint(h,d,p)},r.prototype.mixedAdd=function(l){if(this.isInfinity())return l.toJ();if(l.isInfinity())return this;var n=this.z.redSqr(),u=this.x,e=l.x.redMul(n),t=this.y,r=l.y.redMul(n).redMul(this.z),i=u.redSub(e),o=t.redSub(r);if(0===i.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=i.redSqr(),s=a.redMul(i),f=u.redMul(a),c=o.redSqr().redIAdd(s).redISub(f).redISub(f),h=o.redMul(f.redISub(c)).redISub(t.redMul(s)),d=this.z.redMul(i);return this.curve.jpoint(c,h,d)},r.prototype.dblp=function(l){if(0===l)return this;if(this.isInfinity())return this;if(!l)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var n=this,u=0;u=0)return!1;if(u.redIAdd(t),0===this.x.cmp(u))return!0}return!1},r.prototype.inspect=function(){return this.isInfinity()?"":""},r.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":65,"../curve":68,"bn.js":16,inherits:92}],71:[function(l,n,u){"use strict";function e(l){"short"===l.type?this.curve=new o.curve["short"](l):"edwards"===l.type?this.curve=new o.curve.edwards(l):this.curve=new o.curve.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function t(l,n){Object.defineProperty(r,l,{configurable:!0,enumerable:!0,get:function(){var u=new e(n);return Object.defineProperty(r,l,{configurable:!0,enumerable:!0,value:u}),u}})}var r=u,i=l("hash.js"),o=l("../elliptic"),a=o.utils.assert;r.PresetCurve=e,t("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),t("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),t("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),t("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),t("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),t("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),t("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var s;try{s=l("./precomputed/secp256k1")}catch(f){s=void 0}t("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",s]})},{"../elliptic":65,"./precomputed/secp256k1":79,"hash.js":84}],72:[function(l,n,u){"use strict";function e(l){return this instanceof e?("string"==typeof l&&(o(r.curves.hasOwnProperty(l),"Unknown curve "+l),l=r.curves[l]),l instanceof r.curves.PresetCurve&&(l={curve:l}),this.curve=l.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=l.curve.g,this.g.precompute(l.curve.n.bitLength()+1),void(this.hash=l.hash||l.curve.hash)):new e(l)}var t=l("bn.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=l("./key"),s=l("./signature");n.exports=e,e.prototype.keyPair=function(l){return new a(this,l)},e.prototype.keyFromPrivate=function(l,n){return a.fromPrivate(this,l,n)},e.prototype.keyFromPublic=function(l,n){return a.fromPublic(this,l,n)},e.prototype.genKeyPair=function(l){l||(l={});for(var n=new r.hmacDRBG({hash:this.hash,pers:l.pers,entropy:l.entropy||r.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),u=this.n.byteLength(),e=this.n.sub(new t(2));;){var i=new t(n.generate(u));if(!(i.cmp(e)>0))return i.iaddn(1),this.keyFromPrivate(i)}},e.prototype._truncateToN=function(l,n){var u=8*l.byteLength()-this.n.bitLength();return u>0&&(l=l.ushrn(u)),!n&&l.cmp(this.n)>=0?l.sub(this.n):l},e.prototype.sign=function(l,n,u,e){"object"==typeof u&&(e=u,u=null),e||(e={}),n=this.keyFromPrivate(n,u),l=this._truncateToN(new t(l,16));for(var i=this.n.byteLength(),o=n.getPrivate().toArray("be",i),a=l.toArray("be",i),f=new r.hmacDRBG({hash:this.hash,entropy:o,nonce:a,pers:e.pers,persEnc:e.persEnc}),c=this.n.sub(new t(1)),h=0;!0;h++){var d=e.k?e.k(h):new t(f.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(c)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=d.invm(this.n).mul(v.mul(n.getPrivate()).iadd(l));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return e.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new s({r:v,s:y,recoveryParam:g})}}}}}},e.prototype.verify=function(l,n,u,e){l=this._truncateToN(new t(l,16)),u=this.keyFromPublic(u,e),n=new s(n,"hex");var r=n.r,i=n.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var o=i.invm(this.n),a=o.mul(l).umod(this.n),f=o.mul(r).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(a,u.getPublic(),f);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(r)}var c=this.g.jmulAdd(a,u.getPublic(),f);return!c.isInfinity()&&c.eqXToP(r)},e.prototype.recoverPubKey=function(l,n,u,e){o((3&u)===u,"The recovery param is more than two bits"),n=new s(n,e);var r=this.n,i=new t(l),a=n.r,f=n.s,c=1&u,h=u>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");a=h?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=r.sub(i),p=n.r.invm(r);return this.g.mulAdd(d,a,f).mul(p)},e.prototype.getKeyRecoveryParam=function(l,n,u,e){if(n=new s(n,e),null!==n.recoveryParam)return n.recoveryParam;for(var t=0;t<4;t++){var r;try{r=this.recoverPubKey(l,n,t)}catch(l){continue}if(r.eq(u))return t}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":65,"./key":73,"./signature":74,"bn.js":16}],73:[function(l,n,u){"use strict";function e(l,n){this.ec=l,this.priv=null,this.pub=null,n.priv&&this._importPrivate(n.priv,n.privEnc),n.pub&&this._importPublic(n.pub,n.pubEnc)}var t=l("bn.js");n.exports=e,e.fromPublic=function(l,n,u){return n instanceof e?n:new e(l,{pub:n,pubEnc:u})},e.fromPrivate=function(l,n,u){return n instanceof e?n:new e(l,{priv:n,privEnc:u})},e.prototype.validate=function(){var l=this.getPublic();return l.isInfinity()?{result:!1,reason:"Invalid public key"}:l.validate()?l.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},e.prototype.getPublic=function(l,n){return"string"==typeof l&&(n=l,l=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),n?this.pub.encode(n,l):this.pub},e.prototype.getPrivate=function(l){return"hex"===l?this.priv.toString(16,2):this.priv},e.prototype._importPrivate=function(l,n){this.priv=new t(l,n||16),this.priv=this.priv.umod(this.ec.curve.n)},e.prototype._importPublic=function(l,n){return l.x||l.y?void(this.pub=this.ec.curve.point(l.x,l.y)):void(this.pub=this.ec.curve.decodePoint(l,n))},e.prototype.derive=function(l){return l.mul(this.priv).getX()},e.prototype.sign=function(l,n,u){return this.ec.sign(l,this,n,u)},e.prototype.verify=function(l,n){return this.ec.verify(l,n,this)},e.prototype.inspect=function(){return""}},{"bn.js":16}],74:[function(l,n,u){"use strict";function e(l,n){return l instanceof e?l:void(this._importDER(l,n)||(c(l.r&&l.s,"Signature without r or s"),this.r=new a(l.r,16),this.s=new a(l.s,16),void 0===l.recoveryParam?this.recoveryParam=null:this.recoveryParam=l.recoveryParam))}function t(){this.place=0}function r(l,n){var u=l[n.place++];if(!(128&u))return u;for(var e=15&u,t=0,r=0,i=n.place;r>>3);for(l.push(128|u);--u;)l.push(n>>>(u<<3)&255);l.push(n)}var a=l("bn.js"),s=l("../../elliptic"),f=s.utils,c=f.assert;n.exports=e,e.prototype._importDER=function(l,n){l=f.toArray(l,n);var u=new t;if(48!==l[u.place++])return!1;var e=r(l,u);if(e+u.place!==l.length)return!1;if(2!==l[u.place++])return!1;var i=r(l,u),o=l.slice(u.place,i+u.place);if(u.place+=i,2!==l[u.place++])return!1;var s=r(l,u);if(l.length!==s+u.place)return!1;var c=l.slice(u.place,s+u.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new a(o),this.s=new a(c),this.recoveryParam=null,!0},e.prototype.toDER=function(l){var n=this.r.toArray(),u=this.s.toArray();for(128&n[0]&&(n=[0].concat(n)),128&u[0]&&(u=[0].concat(u)),n=i(n),u=i(u);!(u[0]||128&u[1]);)u=u.slice(1);var e=[2];o(e,n.length),e=e.concat(n),e.push(2),o(e,u.length);var t=e.concat(u),r=[48];return o(r,t.length),r=r.concat(t),f.encode(r,l)}},{"../../elliptic":65,"bn.js":16}],75:[function(l,n,u){"use strict";function e(l){if(o("ed25519"===l,"only tested with ed25519 so far"),!(this instanceof e))return new e(l);var l=r.curves[l].curve;this.curve=l,this.g=l.g,this.g.precompute(l.n.bitLength()+1),this.pointClass=l.point().constructor,this.encodingLength=Math.ceil(l.n.bitLength()/8),this.hash=t.sha512}var t=l("hash.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,a=i.parseBytes,s=l("./key"),f=l("./signature");n.exports=e,e.prototype.sign=function(l,n){l=a(l);var u=this.keyFromSecret(n),e=this.hashInt(u.messagePrefix(),l),t=this.g.mul(e),r=this.encodePoint(t),i=this.hashInt(r,u.pubBytes(),l).mul(u.priv()),o=e.add(i).umod(this.curve.n);return this.makeSignature({R:t,S:o,Rencoded:r})},e.prototype.verify=function(l,n,u){l=a(l),n=this.makeSignature(n);var e=this.keyFromPublic(u),t=this.hashInt(n.Rencoded(),e.pubBytes(),l),r=this.g.mul(n.S()),i=n.R().add(e.pub().mul(t));return i.eq(r)},e.prototype.hashInt=function(){for(var l=this.hash(),n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,u,t)}var t=l("hash.js"),r=l("../elliptic"),i=r.utils,o=i.assert;n.exports=e,e.prototype._init=function(l,n,u){var e=l.concat(n).concat(u);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(u||[])),this.reseed=1},e.prototype.generate=function(l,n,u,e){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(e=u,u=n,n=null),u&&(u=i.toArray(u,e),this._update(u));for(var t=[];t.length>8,i=255&t;r?u.push(r,i):u.push(i)}return u}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",u=0;u=0;){var r;if(t.isOdd()){var i=t.andln(e-1);r=i>(e>>1)-1?(e>>1)-i:i,t.isubn(r)}else r=0;u.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(e-1)?n+1:1,a=1;a0||n.cmpn(-t)>0;){var r=l.andln(3)+e&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var a=l.andln(7)+e&7;o=3!==a&&5!==a||2!==i?r:-r}u[0].push(o);var s;if(0===(1&i))s=0;else{var a=n.andln(7)+t&7;s=3!==a&&5!==a||2!==r?i:-i}u[1].push(s),2*e===o+1&&(e=1-e),2*t===s+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return u}function a(l,n,u){var e="_"+n;l.prototype[n]=function(){return void 0!==this[e]?this[e]:this[e]=u.call(this)}}function s(l){return"string"==typeof l?c.toArray(l,"hex"):l}function f(l){return new h(l,"hex","le")}var c=u,h=l("bn.js");c.assert=function(l,n){if(!l)throw new Error(n||"Assertion failed")},c.toArray=e,c.zero2=t,c.toHex=r,c.encode=function(l,n){return"hex"===n?r(l):l},c.getNAF=i,c.getJSF=o,c.cachedProperty=a,c.parseBytes=s,c.intFromLE=f},{"bn.js":16}],81:[function(l,n,u){n.exports={_args:[[{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},"/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.3.1",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"6.0.0",_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.1.tgz_1465921413402_0.5202967382501811"},_npmUser:{email:"fedor@indutny.com",name:"indutny"},_npmVersion:"3.8.6",_phantomChildren:{},_requested:{name:"elliptic",raw:"elliptic@^6.0.0",rawSpec:"^6.0.0",scope:null,spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz",_shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign",author:{email:"fedor@indutny.com",name:"Fedor Indutny"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"17781f2109ab0ec686b146bdcff5d2e8c6aeceda",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz"},files:["lib"],gitHead:"c53f5cf3d832c0073eb4a4ed423a464cbce68f3e",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{email:"fedor@indutny.com",name:"indutny"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.3.1"}},{}],82:[function(l,n,u){function e(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=e,e.EventEmitter=e,e.prototype._events=void 0,e.prototype._maxListeners=void 0,e.defaultMaxListeners=10,e.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},e.prototype.emit=function(l){var n,u,e,r,a,s;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;throw TypeError('Uncaught, unspecified "error" event.')}if(u=this._events[l],o(u))return!1;if(t(u))switch(arguments.length){case 1:u.call(this);break;case 2:u.call(this,arguments[1]);break;case 3:u.call(this,arguments[1],arguments[2]);break;default:for(e=arguments.length,r=new Array(e-1),a=1;a0&&this._events[l].length>u&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())}return this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(l,n){function u(){this.removeListener(l,u),e||(e=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var e=!1;return u.listener=n,this.on(l,u),this},e.prototype.removeListener=function(l,n){var u,e,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(u=this._events[l],r=u.length,e=-1,u===n||t(u.listener)&&u.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(u)){for(o=r;o-- >0;)if(u[o]===n||u[o].listener&&u[o].listener===n){e=o;break}if(e<0)return this;1===u.length?(u.length=0,delete this._events[l]):u.splice(e,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},e.prototype.removeAllListeners=function(l){var n,u;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(u=this._events[l],t(u))this.removeListener(l,u);else for(;u.length;)this.removeListener(l,u[u.length-1]);return delete this._events[l],this},e.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},e.listenerCount=function(l,n){var u;return u=l._events&&l._events[n]?t(l._events[n])?1:l._events[n].length:0}},{}],83:[function(l,n,u){(function(u){function e(l,n,e,r){u.isBuffer(l)||(l=new u(l,"binary")),n&&!u.isBuffer(n)&&(n=new u(n,"binary")),e/=8,r=r||0;for(var i,o,a=0,s=0,f=new u(e),c=new u(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(u.concat(d)),d=[],o=0,e>0)for(;;){if(0===e)break;if(o===i.length)break;f[a++]=i[o],e--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[s++]=i[o],r--,o++}if(0===e&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var u=l.length%this._delta8;this.pending=l.slice(l.length-u,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-u,this.endian);for(var e=0;e>>24&255,e[t++]=l>>>16&255,e[t++]=l>>>8&255,e[t++]=255&l}else{e[t++]=255&l,e[t++]=l>>>8&255,e[t++]=l>>>16&255,e[t++]=l>>>24&255,e[t++]=0,e[t++]=0,e[t++]=0,e[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,u,e){return 0===l?a(n,u,e):1===l||3===l?f(n,u,e):2===l?s(n,u,e):void 0}function v(l,n,u,e,t,r){var i=l&u^~l&t;return i<0&&(i+=4294967296),i}function y(l,n,u,e,t,r){var i=n&e^~n&r;return i<0&&(i+=4294967296),i}function g(l,n,u,e,t,r){var i=l&u^l&t^u&t;return i<0&&(i+=4294967296),i}function m(l,n,u,e,t,r){var i=n&e^n&r^e&r;return i<0&&(i+=4294967296),i}function _(l,n){var u=T(l,n,28),e=T(n,l,2),t=T(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function w(l,n){var u=L(l,n,28),e=L(n,l,2),t=L(n,l,7),r=u^e^t;return r<0&&(r+=4294967296),r}function k(l,n){var u=T(l,n,14),e=T(l,n,18),t=T(n,l,9),r=u^e^t; +return r<0&&(r+=4294967296),r}function S(l,n){var u=L(l,n,14),e=L(l,n,18),t=L(n,l,9),r=u^e^t;return r<0&&(r+=4294967296),r}function E(l,n){var u=T(l,n,1),e=T(l,n,8),t=N(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function M(l,n){var u=L(l,n,1),e=L(l,n,8),t=D(l,n,7),r=u^e^t;return r<0&&(r+=4294967296),r}function I(l,n){var u=T(l,n,19),e=T(n,l,29),t=N(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}function A(l,n){var u=L(l,n,19),e=L(n,l,29),t=D(l,n,6),r=u^e^t;return r<0&&(r+=4294967296),r}var x=l("../hash"),B=x.utils,j=B.assert,R=B.rotr32,O=B.rotl32,C=B.sum32,P=B.sum32_4,U=B.sum32_5,T=B.rotr64_hi,L=B.rotr64_lo,N=B.shr64_hi,D=B.shr64_lo,q=B.sum64,z=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,H=B.sum64_4_lo,V=B.sum64_5_hi,Y=B.sum64_5_lo,W=x.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],Z=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],G=[1518500249,1859775393,2400959708,3395469782];B.inherits(e,W),u.sha256=e,e.blockSize=512,e.outSize=256,e.hmacStrength=192,e.padLength=64,e.prototype._update=function(l,n){for(var u=this.W,e=0;e<16;e++)u[e]=l[n+e];for(;e>8,i=255&t;r?u.push(r,i):u.push(i)}else for(var e=0;e>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var u="",e=0;e>>0}return r}function f(l,n){for(var u=new Array(4*l.length),e=0,t=0;e>>24,u[t+1]=r>>>16&255,u[t+2]=r>>>8&255,u[t+3]=255&r):(u[t+3]=r>>>24,u[t+2]=r>>>16&255,u[t+1]=r>>>8&255,u[t]=255&r)}return u}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,u){return l+n+u>>>0}function b(l,n,u,e){return l+n+u+e>>>0}function v(l,n,u,e,t){return l+n+u+e+t>>>0}function y(l,n){if(!l)throw new Error(n||"Assertion failed")}function g(l,n,u,e){var t=l[n],r=l[n+1],i=e+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,u,e){var t=n+e>>>0,r=(t>>0}function _(l,n,u,e){var t=n+e;return t>>>0}function w(l,n,u,e,t,r,i,o){var a=0,s=n;s=s+e>>>0,a+=s>>0,a+=s>>0,a+=s>>0}function k(l,n,u,e,t,r,i,o){var a=n+e+r+o;return a>>>0}function S(l,n,u,e,t,r,i,o,a,s){var f=0,c=n;c=c+e>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,u,e,t,r,i,o,a,s){var f=n+e+r+o+s;return f>>>0}function M(l,n,u){var e=n<<32-u|l>>>u;return e>>>0}function I(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}function A(l,n,u){return l>>>u}function x(l,n,u){var e=l<<32-u|n>>>u;return e>>>0}var B=u,j=l("inherits");B.toArray=e,B.toHex=t,B.htonl=r,B.toHex32=i,B.zero2=o,B.zero8=a,B.join32=s,B.split32=f,B.rotr32=c,B.rotl32=h,B.sum32=d,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=j,u.sum64=g,u.sum64_hi=m,u.sum64_lo=_,u.sum64_4_hi=w,u.sum64_4_lo=k,u.sum64_5_hi=S,u.sum64_5_lo=E,u.rotr64_hi=M,u.rotr64_lo=I,u.shr64_hi=A,u.shr64_lo=x},{inherits:92}],90:[function(l,n,u){u.read=function(l,n,u,e,t){var r,i,o=8*t-e-1,a=(1<>1,f=-7,c=u?t-1:0,h=u?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=e;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-s;else{if(r===a)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,e),r-=s}return(d?-1:1)*i*Math.pow(2,r-e)},u.write=function(l,n,u,e,t,r){var i,o,a,s=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=e?0:r-1,p=e?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(a=Math.pow(2,-i))<1&&(i--,a*=2),n+=i+c>=1?h/a:h*Math.pow(2,1-c),n*a>=2&&(i++,a/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*a-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[u+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[u+d]=255&i,d+=p,i/=256,s-=8);l[u+d-p]|=128*b}},{}],91:[function(l,n,u){var e=[].indexOf;n.exports=function(l,n){if(e)return l.indexOf(n);for(var u=0;u>=7-e),new t(u)},e.prototype.test=function(l,n,u){var e=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,e/48|0));for(var o=l.subn(1),a=o.subn(1),s=0;!o.testn(s);s++);for(var f=l.shrn(s),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(a);u&&u(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(e).redPow(s);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p=0;e--){var t=l[e];"."===t?l.splice(e,1):".."===t?(l.splice(e,1),u++):u&&(l.splice(e,1),u--)}if(n)for(;u--;u)l.unshift("..");return l}function e(l,n){if(l.filter)return l.filter(n);for(var u=[],e=0;e=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(u=i+"/"+u,t="/"===i.charAt(0))}return u=n(e(u.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+u||"."},u.normalize=function(l){var t=u.isAbsolute(l),r="/"===i(l,-1);return l=n(e(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},u.isAbsolute=function(l){return"/"===l.charAt(0)},u.join=function(){var l=Array.prototype.slice.call(arguments,0);return u.normalize(e(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},u.relative=function(l,n){function e(l){for(var n=0;n=0&&""===l[u];u--);return n>u?[]:l.slice(n,u-n+1)}l=u.resolve(l).substr(1),n=u.resolve(n).substr(1);for(var t=e(l.split("/")),r=e(n.split("/")),i=Math.min(t.length,r.length),o=i,a=0;ai)throw new TypeError("Bad key length");o=o||"sha1",n.isBuffer(l)||(l=new n(l,"binary")),n.isBuffer(u)||(u=new n(u,"binary"));var a,s=1,f=new n(t),c=new n(u.length+4);u.copy(c,0,0,u.length);for(var h,d,p=1;p<=s;p++){c.writeUInt32BE(p,u.length);var b=r(o,l).update(c).digest();a||(a=b.length,d=new n(a),s=Math.ceil(t/a),h=t-(s-1)*a),b.copy(d,0,0,a);for(var v=1;v1)for(var u=1;u=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==e.toString("hex")&&!u||"0001"!==e.toString("hex")&&u)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new u(l),n=new u(n);var e=0,t=l.length;l.length!==n.length&&(e++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new s(n).cmp(a.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new s(n),a):f(n,a);var p=new u(c-d.length);if(p.fill(0),d=u.concat([p,d],c),4===o)return e(a,d);if(1===o)return t(a,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":50,"parse-asn1":101}],109:[function(l,n,u){(function(u){function e(l,n){var e=l.modulus.byteLength(),t=n.length,r=a("sha1").update(new u("")).digest(),i=r.length,h=2*i;if(t>e-h-2)throw new Error("message too long");var d=new u(e-t-h-2);d.fill(0);var p=e-i-1,b=o(i),v=f(u.concat([r,d,new u([1]),n],p),s(b,p)),y=f(b,s(v,i));return new c(u.concat([new u([0]),y,v],e))}function t(l,n,e){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return e?(o=new u(i-t-3),o.fill(255)):o=r(i-t-3),new c(u.concat([new u([0,e?1:2]),o,new u([0]),n],i))}function r(l,n){for(var e,t=new u(l),r=0,i=o(2*l),a=0;r=0)throw new Error("data too long for modulus")}return u?d(o,a):h(o,a)}}).call(this,l("buffer").Buffer)},{"./mgf":107,"./withPublic":110,"./xor":111,"bn.js":16,"browserify-rsa":37,buffer:46,"create-hash":50,"parse-asn1":101,randombytes:112}],110:[function(l,n,u){(function(u){function e(l,n){return new u(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=e}).call(this,l("buffer").Buffer)},{"bn.js":16,buffer:46}],111:[function(l,n,u){n.exports=function(l,n){for(var u=l.length,e=-1;++e65536)throw new Error("requested too many random bytes");var r=new u.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new e(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=u.crypto||u.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:105,buffer:46}],113:[function(l,n,u){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":114}],114:[function(l,n,u){"use strict";function e(l){return this instanceof e?(s.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new e(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var u in l)n.push(u);return n};n.exports=e;var o=l("process-nextick-args"),a=l("core-util-is");a.inherits=l("inherits");var s=l("./_stream_readable"),f=l("./_stream_writable");a.inherits(e,s);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var a=new Error("stream.unshift() after end event");l.emit("error",a)}else{var s;!n.decoder||t||e||(u=n.decoder.write(u),s=!n.objectMode&&0===u.length),t||(n.reading=!1),s||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",u),l.read(0)):(n.length+=n.objectMode?1:u.length,t?n.buffer.unshift(u):n.buffer.push(u),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=D?l=D:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function s(l,n){return 0===n.length&&n.ended?0:n.objectMode?0===l?0:1:null===l||isNaN(l)?n.flowing&&n.buffer.length?n.buffer[0].length:n.length:l<=0?0:(l>n.highWaterMark&&(n.highWaterMark=a(l)),l>n.length?n.ended?n.length:(n.needReadable=!0,0):l)}function f(l,n){var u=null;return R.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(u=new TypeError("Invalid non-string/buffer chunk")),u}function c(l,n){if(!n.ended){if(n.decoder){var u=n.decoder.end();u&&u.length&&(n.buffer.push(u),n.length+=n.objectMode?1:u.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(U("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?I(d,l):d(l))}function d(l){U("emit readable"),l.emit("readable"),_(l)}function p(l,n){n.readingMore||(n.readingMore=!0,I(b,l,n))}function b(l,n){for(var u=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=t)u=r?e.join(""):1===e.length?e[0]:R.concat(e,t),e.length=0;else if(l0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,I(S,n,l))}function S(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function E(l,n){for(var u=0,e=l.length;u0)&&(n.emittedReadable=!1),0===l&&n.needReadable&&(n.length>=n.highWaterMark||n.ended))return U("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?k(this):h(this),null;if(l=s(l,n),0===l&&n.ended)return 0===n.length&&k(this),null;var e=n.needReadable;U("need readable",e),(0===n.length||n.length-l0?w(l,n):null,null===t&&(n.needReadable=!0,l=0),n.length-=l,0!==n.length||n.ended||(n.needReadable=!0),u!==l&&n.ended&&0===n.length&&k(this),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("not implemented"))},r.prototype.pipe=function(l,n){function t(l){U("onunpipe"),l===h&&i()}function r(){U("onend"),l.end()}function i(){U("cleanup"),l.removeListener("close",s),l.removeListener("finish",f),l.removeListener("drain",y),l.removeListener("error",a),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),g=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||y()}function o(n){U("ondata");var u=l.write(n);!1===u&&((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&M(d.pipes,l)!==-1)&&!g&&(U("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++),h.pause())}function a(n){U("onerror",n),c(),l.removeListener("error",a),0===j(l,"error")&&l.emit("error",n)}function s(){l.removeListener("finish",f),c()}function f(){U("onfinish"),l.removeListener("close",s),c()}function c(){U("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,U("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==u.stdout&&l!==u.stderr,b=p?r:i;d.endEmitted?I(b):h.once("end",b),l.on("unpipe",t);var y=v(h);l.on("drain",y);var g=!1;return h.on("data",o),e(l,"error",a),l.once("close",s),l.once("finish",f),l.emit("pipe",h),d.flowing||(U("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var u=n.pipes,e=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:S;i.WritableState=r;var M=l("core-util-is");M.inherits=l("inherits");var I,A={deprecate:l("util-deprecate")};!function(){try{I=l("stream")}catch(n){}finally{I||(I=l("events").EventEmitter)}}();var x=l("buffer").Buffer,B=l("buffer-shims");M.inherits(i,I);var j;r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var j;i.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,u){var t=this._writableState,r=!1;return"function"==typeof n&&(u=n,n=null),x.isBuffer(l)?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof u&&(u=e),t.ended?o(this,u):a(this,t,l,u)&&(t.pendingcb++,r=f(this,t,l,n,u)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||y(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,u){u(new Error("not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,u){var e=this._writableState;"function"==typeof l?(u=l,l=null,n=null):"function"==typeof n&&(u=n,n=null),null!==l&&void 0!==l&&this.write(l,n),e.corked&&(e.corked=1,this.uncork()),e.ending||e.finished||w(this,e,u)}}).call(this,l("_process"))},{"./_stream_duplex":114,_process:105,buffer:46,"buffer-shims":44,"core-util-is":48,events:82,inherits:92,"process-nextick-args":104,"util-deprecate":134}],119:[function(l,n,u){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":115}],120:[function(l,n,u){(function(e){var t=function(){try{return l("stream")}catch(n){}}();u=n.exports=l("./lib/_stream_readable.js"),u.Stream=t||u,u.Readable=u,u.Writable=l("./lib/_stream_writable.js"),u.Duplex=l("./lib/_stream_duplex.js"),u.Transform=l("./lib/_stream_transform.js"),u.PassThrough=l("./lib/_stream_passthrough.js"),!e.browser&&"disable"===e.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":114,"./lib/_stream_passthrough.js":115,"./lib/_stream_readable.js":116,"./lib/_stream_transform.js":117,"./lib/_stream_writable.js":118,_process:105}],121:[function(l,n,u){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":117}],122:[function(l,n,u){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":118}],123:[function(l,n,u){(function(l){function u(l){for(var n=[],u=0,e=0;u>>5]|=l[u]<<24-e%32;return n}function e(l){for(var n=[],u=0;u<32*l.length;u+=8)n.push(l[u>>>5]>>>24-u%32&255);return n}function t(l,n,u){for(var e=0;e<16;e++){var t=u+e,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var g,m,_,w,k,S,E,M,I,A;S=g=l[0],E=m=l[1],M=_=l[2],I=w=l[3],A=k=l[4];var x;for(e=0;e<80;e+=1)x=g+n[u+h[e]]|0,x+=e<16?r(m,_,w)+v[0]:e<32?i(m,_,w)+v[1]:e<48?o(m,_,w)+v[2]:e<64?a(m,_,w)+v[3]:s(m,_,w)+v[4],x=0|x,x=f(x,p[e]),x=x+k|0,g=k,k=w,w=f(_,10),_=m,m=x,x=S+n[u+d[e]]|0,x+=e<16?s(E,M,I)+y[0]:e<32?a(E,M,I)+y[1]:e<48?o(E,M,I)+y[2]:e<64?i(E,M,I)+y[3]:r(E,M,I)+y[4],x=0|x,x=f(x,b[e]),x=x+A|0,S=A,A=I,I=f(M,10),M=E,E=x;x=l[1]+_+I|0,l[1]=l[2]+w+A|0,l[2]=l[3]+k+S|0,l[3]=l[4]+g+E|0,l[4]=l[0]+m+M|0,l[0]=x}function r(l,n,u){return l^n^u}function i(l,n,u){return l&n|~l&u}function o(l,n,u){return(l|~n)^u}function a(l,n,u){return l&u|n&~u}function s(l,n,u){return l^(n|~u)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=u(n),o=8*n.length,a=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);for(var s=0;s>>24)|4278255360&(f<<24|f>>>8)}var c=e(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:46}],124:[function(l,n,u){(function(l){function u(n,u){this._block=new l(n),this._finalSize=u,this._blockSize=n,this._len=0,this._s=0}u.prototype.update=function(n,u){"string"==typeof n&&(u=u||"utf8",n=new l(n,u));for(var e=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var u=this._update(this._block)||this._hash();return l?u.toString(l):u},u.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=u}).call(this,l("buffer").Buffer)},{buffer:46}],125:[function(l,n,u){var u=n.exports=function(l){l=l.toLowerCase();var n=u[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};u.sha=l("./sha"),u.sha1=l("./sha1"),u.sha224=l("./sha224"),u.sha256=l("./sha256"),u.sha384=l("./sha384"),u.sha512=l("./sha512")},{"./sha":126,"./sha1":127,"./sha224":128,"./sha256":129,"./sha384":130,"./sha512":131}],126:[function(l,n,u){(function(u){function e(){this.init(),this._w=f,a.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var o=l("inherits"),a=l("./hash"),s=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(e,a),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(u)+i(d,e,o,a)+f+n[h]+s[d]|0;f=a,a=o,o=r(e),e=u,u=p}this._a=u+this._a|0,this._b=e+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],127:[function(l,n,u){(function(u){function e(){this.init(),this._w=c,s.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,u,e){return 0===l?n&u|~n&e:2===l?n&u|n&e|u&e:n^u^e}var a=l("inherits"),s=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);a(e,s),e.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,a=0|this._c,s=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(u)+o(p,e,a,s)+c+n[d]+f[p]|0;c=s,s=a,a=i(e),e=u,u=b}this._a=u+this._a|0,this._b=e+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=c+this._e|0},e.prototype._hash=function(){var l=new u(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],128:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(e,r),e.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},e.prototype._hash=function(){var l=new u(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,"./sha256":129,buffer:46,inherits:92}],129:[function(l,n,u){(function(u){function e(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function a(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function s(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(e,c),e.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._a,e=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)n[y]=l.readInt32BE(4*y);for(;y<64;++y)n[y]=s(n[y-2])+n[y-7]+a(n[y-15])+n[y-16]|0;for(var g=0;g<64;++g){var m=v+o(d)+t(d,p,b)+h[g]+n[g]|0,_=i(u)+r(u,e,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=e,e=u,u=m+_|0}this._a=u+this._a|0,this._b=e+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},e.prototype._hash=function(){var l=new u(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],130:[function(l,n,u){(function(u){function e(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(e,r),e.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,"./sha512":131,buffer:46,inherits:92}],131:[function(l,n,u){(function(u){function e(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,u){return u^l&(n^u)}function r(l,n,u){return l&n|u&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(e,p),e.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},e.prototype._update=function(l){for(var n=this._w,u=0|this._ah,e=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,g=0|this._gh,m=0|this._hh,_=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,A=0|this._hl,x=0;x<32;x+=2)n[x]=l.readInt32BE(4*x),n[x+1]=l.readInt32BE(4*x+4);for(;x<160;x+=2){var B=n[x-30],j=n[x-30+1],R=a(B,j),O=s(j,B);B=n[x-4],j=n[x-4+1];var C=f(B,j),P=c(j,B),U=n[x-14],T=n[x-14+1],L=n[x-32],N=n[x-32+1],D=O+T|0,q=R+U+h(D,O)|0;D=D+P|0,q=q+C+h(D,P)|0,D=D+N|0,q=q+L+h(D,N)|0,n[x]=q,n[x+1]=D}for(var z=0;z<160;z+=2){q=n[z],D=n[z+1];var F=r(u,e,d),K=r(_,w,k),H=i(u,_),V=i(_,u),Y=o(v,E),W=o(E,v),X=b[z],Z=b[z+1],G=t(v,y,g),J=t(E,M,I),$=A+W|0,Q=m+Y+h($,A)|0;$=$+J|0,Q=Q+G+h($,J)|0,$=$+Z|0,Q=Q+X+h($,Z)|0,$=$+D|0,Q=Q+q+h($,D)|0;var ll=V+K|0,nl=H+F+h(ll,V)|0;m=g,A=I,g=y,I=M,y=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=e,k=w,e=u,w=_,_=$+ll|0,u=Q+nl+h(_,$)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+A|0,this._ah=this._ah+u+h(this._al,_)|0,this._bh=this._bh+e+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+y+h(this._fl,M)|0,this._gh=this._gh+g+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,A)|0},e.prototype._hash=function(){function l(l,u,e){n.writeInt32BE(l,e),n.writeInt32BE(u,e+4)}var n=new u(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=e}).call(this,l("buffer").Buffer)},{"./hash":124,buffer:46,inherits:92}],132:[function(l,n,u){function e(){t.call(this)}n.exports=e;var t=l("events").EventEmitter,r=l("inherits");r(e,t),e.Readable=l("readable-stream/readable.js"),e.Writable=l("readable-stream/writable.js"),e.Duplex=l("readable-stream/duplex.js"),e.Transform=l("readable-stream/transform.js"),e.PassThrough=l("readable-stream/passthrough.js"),e.Stream=e,e.prototype.pipe=function(l,n){function u(n){l.writable&&!1===l.write(n)&&s.pause&&s.pause()}function e(){s.readable&&s.resume&&s.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(a(),0===t.listenerCount(this,"error"))throw l}function a(){s.removeListener("data",u),l.removeListener("drain",e),s.removeListener("end",r),s.removeListener("close",i),s.removeListener("error",o),l.removeListener("error",o),s.removeListener("end",a),s.removeListener("close",a),l.removeListener("close",a)}var s=this;s.on("data",u),l.on("drain",e),l._isStdio||n&&n.end===!1||(s.on("end",r),s.on("close",i));var f=!1;return s.on("error",o),l.on("error",o),s.on("end",a),s.on("close",a),l.on("close",a),l.emit("pipe",s),l}},{events:82,inherits:92,"readable-stream/duplex.js":113,"readable-stream/passthrough.js":119,"readable-stream/readable.js":120,"readable-stream/transform.js":121,"readable-stream/writable.js":122}],133:[function(l,n,u){function e(l){if(l&&!a(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,a=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},s=u.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),e(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i; +break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};s.prototype.write=function(l){for(var n="";this.charLength;){var u=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,u),this.charReceived+=u,this.charReceived=55296&&e<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,e=n.charCodeAt(t);if(e>=55296&&e<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},s.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var u=l[l.length-n];if(1==n&&u>>5==6){this.charLength=2;break}if(n<=2&&u>>4==14){this.charLength=3;break}if(n<=3&&u>>3==30){this.charLength=4;break}}this.charReceived=n},s.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var u=this.charReceived,e=this.charBuffer,t=this.encoding;n+=e.slice(0,u).toString(t)}return n}},{buffer:46}],134:[function(l,n,u){(function(l){function u(l,n){function u(){if(!t){if(e("throwDeprecation"))throw new Error(n);e("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(e("noDeprecation"))return l;var t=!1;return u}function e(n){try{if(!l.localStorage)return!1}catch(u){return!1}var e=l.localStorage[n];return null!=e&&"true"===String(e).toLowerCase()}n.exports=u}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],135:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var u in l)n.push(u);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var u=0;u57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(e===u-1)t.push(65533);else{var i=l.charCodeAt(e+1);if(56320<=i&&i<=57343){var o=1023&r,a=1023&i;t.push(65536+(o<<10)+a),e+=1}else t.push(65533)}e+=1}return t}function r(l){for(var n="",u=0;u>10)+55296,(1023&e)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function a(l){throw TypeError("The code point "+l+" could not be encoded.")}function s(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var u=n.indexOf(l);return u===-1?null:u}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,u=0,e=0,t=p("gb18030");for(n=0;n>6*e)+t];e>0;){var i=u>>6*(e-1);r.push(128|63&i),e-=1}return r}}function S(l,u){var e=u.fatal;this.handler=function(u,t){if(t===F)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(e):r}}function E(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,l);return null===t&&a(e),t+128}}function M(l){var u=l.fatal,e=0,t=0,r=0;this.handler=function(l,i){if(i===F&&0===e&&0===t&&0===r)return K;i!==F||0===e&&0===t&&0===r||(e=0,t=0,r=0,o(u));var a;if(0!==r){a=null,n(i,48,57)&&(a=b(10*(126*(10*(e-129)+(t-48))+(r-129))+i-48));var s=[t,r,i];return e=0,t=0,r=0,null===a?(l.prepend(s),o(u)):a}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),e=0,t=0,o(u));if(0!==e){if(n(i,48,57))return t=i,null;var f=e,c=null;e=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),a=null===c?null:h(c,p("gb18030")),null===a&&n(i,0,127)&&l.prepend(i),null===a?o(u):a}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(e=i,null):o(u)}}function I(l,e){l.fatal;this.handler=function(l,t){if(t===F)return K;if(n(t,0,127))return t;if(e&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=u(r,190)+129,o=r%190,s=o<63?64:65;return[i,o+s]}if(e)return a(t);r=v(t);var f=u(u(u(r,10),126),10);r-=10*f*126*10;var c=u(u(r,10),126);r-=10*c*126;var h=u(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function A(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-a)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var s=null===i?null:h(i,p("big5"));return null===s&&n(t,0,127)&&l.prepend(t),null===s?o(u):s}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function x(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=g(e,p("big5"));if(null===t)return a(e);var r=u(t,157)+129;if(r<161)return a(e);var i=t%157,o=i<63?64:98;return[r,i+o]}}function B(l){var u=l.fatal,e=!1,t=0;this.handler=function(l,r){if(r===F&&0!==t)return t=0,o(u);if(r===F&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return e=!0,t=r,null;if(0!==t){var i=t;t=0;var a=null;return n(i,161,254)&&n(r,161,254)&&(a=h(94*(i-161)+(r-161),p(e?"jis0212":"jis0208"))),e=!1,n(r,161,254)||l.prepend(r),null===a?o(u):a}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(u)}}function j(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return[142,e-65377+161];8226===e&&(e=65293);var t=d(e,p("jis0208"));if(null===t)return a(e);var r=u(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var u=l.fatal,e={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=e.ASCII,r=e.ASCII,i=0,a=!1;this.handler=function(l,s){switch(t){default:case e.ASCII:return 27===s?(t=e.EscapeStart,null):n(s,0,127)&&14!==s&&15!==s&&27!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Roman:return 27===s?(t=e.EscapeStart,null):92===s?(a=!1,165):126===s?(a=!1,8254):n(s,0,127)&&14!==s&&15!==s&&27!==s&&92!==s&&126!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Katakana:return 27===s?(t=e.EscapeStart,null):n(s,33,95)?(a=!1,65377+s-33):s===F?K:(a=!1,o(u));case e.LeadByte:return 27===s?(t=e.EscapeStart,null):n(s,33,126)?(a=!1,i=s,t=e.TrailByte,null):s===F?K:(a=!1,o(u));case e.TrailByte:if(27===s)return t=e.EscapeStart,o(u);if(n(s,33,126)){t=e.LeadByte;var f=94*(i-33)+s-33,c=h(f,p("jis0208"));return null===c?o(u):c}return s===F?(t=e.LeadByte,l.prepend(s),o(u)):(t=e.LeadByte,o(u));case e.EscapeStart:return 36===s||40===s?(i=s,t=e.Escape,null):(l.prepend(s),a=!1,t=r,o(u));case e.Escape:var d=i;i=0;var b=null;if(40===d&&66===s&&(b=e.ASCII),40===d&&74===s&&(b=e.Roman),40===d&&73===s&&(b=e.Katakana),36!==d||64!==s&&66!==s||(b=e.LeadByte),null!==b){t=t=b;var v=a;return a=!0,v?o(u):null}return l.prepend([d,s]),a=!1,t=r,o(u)}}}function O(l){var e=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=e.ASCII;this.handler=function(l,r){if(r===F&&t!==e.ASCII)return l.prepend(r),[27,40,66];if(r===F&&t===e.ASCII)return K;if(t===e.ASCII&&n(r,0,127))return r;if(t===e.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==e.ASCII)return l.prepend(r),t=e.ASCII,[27,40,66];if((165===r||8254===r)&&t!==e.Roman)return l.prepend(r),t=e.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return a(r);if(t!==e.jis0208)return l.prepend(r),t=e.jis0208,[27,36,66];var o=u(i,94)+33,s=i%94+33;return[o,s]}}function C(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:65,s=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-s)+t-a);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(u):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(e=t,null):o(u)}}function P(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,128))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return e-65377+161;8226===e&&(e=65293);var t=y(e);if(null===t)return a(e);var r=u(t,188),i=r<31?129:193,o=t%188,s=o<63?64:65;return[r+i,o+s]}}function U(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var a=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===a?o(u):a}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function T(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,p("euc-kr"));if(null===t)return a(e);var r=u(t,190)+129,i=t%190+65;return[r,i]}}function L(l,n){var u=l>>8,e=255&l;return n?[u,e]:[e,u]}function N(l,u){var e=u.fatal,t=null,r=null;this.handler=function(u,i){if(i===F&&(null!==t||null!==r))return o(e);if(i===F&&null===t&&null===r)return K;if(null===t)return t=i,null;var a;if(a=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var s=r;return r=null,n(a,56320,57343)?65536+1024*(s-55296)+(a-56320):(u.prepend(L(a,l)),o(e))}return n(a,55296,56319)?(r=a,null):n(a,56320,57343)?o(e):a}}function D(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,65535))return L(e,l);var t=L((e-65536>>10)+55296,l),r=L((e-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:63360+u-128}}function z(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:n(u,63360,63487)?u-63360+128:a(u)}}var F=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():F},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;s.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var u;u="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=e(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(u),a=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t))}while(!o.endOfStream());this._decoder=null}return a.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0, -a.shift()):this._BOMseen=!0)),r(a)}},_.prototype={encode:function(l,n){l=l?String(l):"",n=e(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var u,r=[],o=new i(t(l));!o.endOfStream()&&(u=this._encoder.handler(o,o.read()),u!==K);)Array.isArray(u)?r.push.apply(r,u):r.push(u);if(!this._streaming){for(;;){if(u=this._encoder.handler(o,o.read()),u===K)break;Array.isArray(u)?r.push.apply(r,u):r.push(u)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,u=p(n);W[n]=function(l){return new S(u,l)},Y[n]=function(l){return new E(u,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new x(l)},W.big5=function(l){return new A(l)},Y["euc-jp"]=function(l){return new j(l)},W["euc-jp"]=function(l){return new B(l)},Y["iso-2022-jp"]=function(l){return new O(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new P(l)},W.shift_jis=function(l){return new C(l)},Y["euc-kr"]=function(l){return new T(l)},W["euc-kr"]=function(l){return new U(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new N((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new N((!1),l)},Y["x-user-defined"]=function(l){return new z(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=_),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":140}],142:[function(l,n,u){"use strict";function e(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(n[u]=l[u]);return n["default"]=l,n}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./v1/index"),r=e(t);u["default"]={v1:r},n.exports=u["default"]},{"./v1/index":146}],143:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);l.prototype=Object.create(n&&n.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(l,n):l.__proto__=n)}function r(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function i(l,n){var u=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return new v(l,g,n,u)}Object.defineProperty(u,"__esModule",{value:!0});var o=function(l,n,u){for(var e=!0;e;){var t=l,r=n,i=u;e=!1,null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,r);if(void 0!==o){if("value"in o)return o.value;var a=o.get;if(void 0===a)return;return a.call(i)}var s=Object.getPrototypeOf(t);if(null===s)return;l=s,n=r,u=i,e=!0,o=s=void 0}},a=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],146:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":143,"./error":144,"./graph-types":145,"./integer":147}],147:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":144,buffer:46}],149:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(l){try{v["default"].mkdirSync(l)}catch(n){if("ENOENT"===n.code)return i(g["default"].dirname(l)),void i(l);if("EEXIST"===n.code)return;throw n}}function o(n,u,e){try{v["default"].accessSync(u)}catch(t){return e(null)}var r=!1;l("readline").createInterface({input:v["default"].createReadStream(u)}).on("line",function(l){!r&&l.startsWith(n)&&(r=!0,e(l.split(" ")[1]))}).on("close",function(){r||e(null)})}function a(l,n,u,e){if(S[l])return e(null);S[l]=1;try{v["default"].accessSync(n)}catch(t){i(g["default"].dirname(n))}v["default"].appendFile(n,l+" "+u+m.EOL,"utf8",function(n){return delete S[l],n&&console.log(n),e(n)})}function s(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=h["default"].connect(l.port,l.host,n);return e.on("error",u),e}return E[l.trust]?E[l.trust](l,n,u):void u((0,w.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var f=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":148}],152:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(M,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary(),this.sync()}},{key:"run",value:function(l,n,u){var e=this;this._queueObserver(u),this._packer.packStruct(x,[this._packable(l),this._packable(n)],function(l){return e._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(j,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(B,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"reset",value:function(l){var n=this;this._isHandlingFailure=!0;var u=this,e={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){u._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(e),this._packer.packStruct(A,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){var n=this;this._queueObserver(l),this._packer.packStruct(I,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}},{key:"_packable",value:function(l){var n=this;return this._packer.packable(l,function(l){return n._handleFatalError(l)})}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":145,"../integer":147,"./../error":144,"./buf":148,"./ch-node":149,"./ch-websocket":150,"./chunking":151,"./features":153,"./packstream":155}],153:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],154:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"packable",value:function(l,n){var u=this;if(null===l)return function(){return u._ch.writeUInt8(p)};if(l===!0)return function(){return u._ch.writeUInt8(y)};if(l===!1)return function(){return u._ch.writeUInt8(v)};if("number"==typeof l)return function(){return u.packFloat(l)};if("string"==typeof l)return function(){return u.packString(l,n)};if(l instanceof a.Integer)return function(){return u.packInteger(l)};if(l instanceof Array)return function(){u.packListHeader(l.length,n);for(var e=0;e>0),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):e<4294967296?(this._ch.writeUInt8(E),this._ch.writeUInt8((e/16777216>>0)%256),this._ch.writeUInt8((e/65536>>0)%256),this._ch.writeUInt8((e/256>>0)%256),this._ch.writeUInt8(e%256),this._ch.writeBytes(u)):n((0,s.newError)("UTF-8 strings of size "+e+" are not supported"))}},{key:"packListHeader",value:function(l,n){l<16?this._ch.writeUInt8(c|l):l<256?(this._ch.writeUInt8(M),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Lists of size "+l+" are not supported"))}},{key:"packMapHeader",value:function(l,n){l<16?this._ch.writeUInt8(h|l):l<256?(this._ch.writeUInt8(x),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,s.newError)("Maps of size "+l+" are not supported"))}},{key:"packStructHeader",value:function(l,n,u){l<16?(this._ch.writeUInt8(d|l),this._ch.writeUInt8(n)):l<256?(this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n)):l<65536?(this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):u((0,s.newError)("Structures of size "+l+" are not supported"))}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":147,"./../error":144,"./buf":148,"./log":154,"./utf8":158}],156:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":159}],158:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":139,"./../error":144,"./buf":148,buffer:46,string_decoder:135}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":144}],160:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":147}],161:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(e===u-1)t.push(65533);else{var i=l.charCodeAt(e+1);if(56320<=i&&i<=57343){var o=1023&r,a=1023&i;t.push(65536+(o<<10)+a),e+=1}else t.push(65533)}e+=1}return t}function r(l){for(var n="",u=0;u>10)+55296,(1023&e)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function a(l){throw TypeError("The code point "+l+" could not be encoded.")}function s(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var u=n.indexOf(l);return u===-1?null:u}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,u=0,e=0,t=p("gb18030");for(n=0;n>6*e)+t];e>0;){var i=u>>6*(e-1);r.push(128|63&i),e-=1}return r}}function S(l,u){var e=u.fatal;this.handler=function(u,t){if(t===F)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(e):r}}function E(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,l);return null===t&&a(e),t+128}}function M(l){var u=l.fatal,e=0,t=0,r=0;this.handler=function(l,i){if(i===F&&0===e&&0===t&&0===r)return K;i!==F||0===e&&0===t&&0===r||(e=0,t=0,r=0,o(u));var a;if(0!==r){a=null,n(i,48,57)&&(a=b(10*(126*(10*(e-129)+(t-48))+(r-129))+i-48));var s=[t,r,i];return e=0,t=0,r=0,null===a?(l.prepend(s),o(u)):a}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),e=0,t=0,o(u));if(0!==e){if(n(i,48,57))return t=i,null;var f=e,c=null;e=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),a=null===c?null:h(c,p("gb18030")),null===a&&n(i,0,127)&&l.prepend(i),null===a?o(u):a}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(e=i,null):o(u)}}function I(l,e){l.fatal;this.handler=function(l,t){if(t===F)return K;if(n(t,0,127))return t;if(e&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=u(r,190)+129,o=r%190,s=o<63?64:65;return[i,o+s]}if(e)return a(t);r=v(t);var f=u(u(u(r,10),126),10);r-=10*f*126*10;var c=u(u(r,10),126);r-=10*c*126;var h=u(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function A(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-a)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var s=null===i?null:h(i,p("big5"));return null===s&&n(t,0,127)&&l.prepend(t),null===s?o(u):s}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function x(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=g(e,p("big5"));if(null===t)return a(e);var r=u(t,157)+129;if(r<161)return a(e);var i=t%157,o=i<63?64:98;return[r,i+o]}}function B(l){var u=l.fatal,e=!1,t=0;this.handler=function(l,r){if(r===F&&0!==t)return t=0,o(u);if(r===F&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return e=!0,t=r,null;if(0!==t){var i=t;t=0;var a=null;return n(i,161,254)&&n(r,161,254)&&(a=h(94*(i-161)+(r-161),p(e?"jis0212":"jis0208"))),e=!1,n(r,161,254)||l.prepend(r),null===a?o(u):a}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(u)}}function j(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return[142,e-65377+161];8226===e&&(e=65293);var t=d(e,p("jis0208"));if(null===t)return a(e);var r=u(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var u=l.fatal,e={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=e.ASCII,r=e.ASCII,i=0,a=!1;this.handler=function(l,s){switch(t){default:case e.ASCII:return 27===s?(t=e.EscapeStart,null):n(s,0,127)&&14!==s&&15!==s&&27!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Roman:return 27===s?(t=e.EscapeStart,null):92===s?(a=!1,165):126===s?(a=!1,8254):n(s,0,127)&&14!==s&&15!==s&&27!==s&&92!==s&&126!==s?(a=!1,s):s===F?K:(a=!1,o(u));case e.Katakana:return 27===s?(t=e.EscapeStart,null):n(s,33,95)?(a=!1,65377+s-33):s===F?K:(a=!1,o(u));case e.LeadByte:return 27===s?(t=e.EscapeStart,null):n(s,33,126)?(a=!1,i=s,t=e.TrailByte,null):s===F?K:(a=!1,o(u));case e.TrailByte:if(27===s)return t=e.EscapeStart,o(u);if(n(s,33,126)){t=e.LeadByte;var f=94*(i-33)+s-33,c=h(f,p("jis0208"));return null===c?o(u):c}return s===F?(t=e.LeadByte,l.prepend(s),o(u)):(t=e.LeadByte,o(u));case e.EscapeStart:return 36===s||40===s?(i=s,t=e.Escape,null):(l.prepend(s),a=!1,t=r,o(u));case e.Escape:var d=i;i=0;var b=null;if(40===d&&66===s&&(b=e.ASCII),40===d&&74===s&&(b=e.Roman),40===d&&73===s&&(b=e.Katakana),36!==d||64!==s&&66!==s||(b=e.LeadByte),null!==b){t=t=b;var v=a;return a=!0,v?o(u):null}return l.prepend([d,s]),a=!1,t=r,o(u)}}}function O(l){var e=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=e.ASCII;this.handler=function(l,r){if(r===F&&t!==e.ASCII)return l.prepend(r),[27,40,66];if(r===F&&t===e.ASCII)return K;if(t===e.ASCII&&n(r,0,127))return r;if(t===e.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==e.ASCII)return l.prepend(r),t=e.ASCII,[27,40,66];if((165===r||8254===r)&&t!==e.Roman)return l.prepend(r),t=e.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return a(r);if(t!==e.jis0208)return l.prepend(r),t=e.jis0208,[27,36,66];var o=u(i,94)+33,s=i%94+33;return[o,s]}}function C(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0;var a=t<127?64:65,s=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-s)+t-a);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(u):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(e=t,null):o(u)}}function P(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,128))return e;if(165===e)return 92;if(8254===e)return 126;if(n(e,65377,65439))return e-65377+161;8226===e&&(e=65293);var t=y(e);if(null===t)return a(e);var r=u(t,188),i=r<31?129:193,o=t%188,s=o<63?64:65;return[r+i,o+s]}}function U(l){var u=l.fatal,e=0;this.handler=function(l,t){if(t===F&&0!==e)return e=0,o(u);if(t===F&&0===e)return K;if(0!==e){var r=e,i=null;e=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var a=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===a?o(u):a}return n(t,0,127)?t:n(t,129,254)?(e=t,null):o(u)}}function T(l){l.fatal;this.handler=function(l,e){if(e===F)return K;if(n(e,0,127))return e;var t=d(e,p("euc-kr"));if(null===t)return a(e);var r=u(t,190)+129,i=t%190+65;return[r,i]}}function L(l,n){var u=l>>8,e=255&l;return n?[u,e]:[e,u]}function N(l,u){var e=u.fatal,t=null,r=null;this.handler=function(u,i){if(i===F&&(null!==t||null!==r))return o(e);if(i===F&&null===t&&null===r)return K;if(null===t)return t=i,null;var a;if(a=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var s=r;return r=null,n(a,56320,57343)?65536+1024*(s-55296)+(a-56320):(u.prepend(L(a,l)),o(e))}return n(a,55296,56319)?(r=a,null):n(a,56320,57343)?o(e):a}}function D(l,u){u.fatal;this.handler=function(u,e){if(e===F)return K;if(n(e,0,65535))return L(e,l);var t=L((e-65536>>10)+55296,l),r=L((e-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:63360+u-128}}function z(l){l.fatal;this.handler=function(l,u){return u===F?K:n(u,0,127)?u:n(u,63360,63487)?u-63360+128:a(u)}}var F=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():F},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;s.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var u;u="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=e(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(u),a=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?a.push.apply(a,t):a.push(t))}while(!o.endOfStream());this._decoder=null}return a.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0, +a.shift()):this._BOMseen=!0)),r(a)}},_.prototype={encode:function(l,n){l=l?String(l):"",n=e(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var u,r=[],o=new i(t(l));!o.endOfStream()&&(u=this._encoder.handler(o,o.read()),u!==K);)Array.isArray(u)?r.push.apply(r,u):r.push(u);if(!this._streaming){for(;;){if(u=this._encoder.handler(o,o.read()),u===K)break;Array.isArray(u)?r.push.apply(r,u):r.push(u)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,u=p(n);W[n]=function(l){return new S(u,l)},Y[n]=function(l){return new E(u,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new x(l)},W.big5=function(l){return new A(l)},Y["euc-jp"]=function(l){return new j(l)},W["euc-jp"]=function(l){return new B(l)},Y["iso-2022-jp"]=function(l){return new O(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new P(l)},W.shift_jis=function(l){return new C(l)},Y["euc-kr"]=function(l){return new T(l)},W["euc-kr"]=function(l){return new U(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new N((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new N((!1),l)},Y["x-user-defined"]=function(l){return new z(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=_),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":138}],140:[function(l,n,u){"use strict";function e(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&(n[u]=l[u]);return n["default"]=l,n}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./v1/index"),r=e(t);u["default"]={v1:r},n.exports=u["default"]},{"./v1/index":144}],141:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);l.prototype=Object.create(n&&n.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(l,n):l.__proto__=n)}function r(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function i(l,n){var u=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];return new v(l,g,n,u)}Object.defineProperty(u,"__esModule",{value:!0});var o=function(l,n,u){for(var e=!0;e;){var t=l,r=n,i=u;e=!1,null===t&&(t=Function.prototype);var o=Object.getOwnPropertyDescriptor(t,r);if(void 0!==o){if("value"in o)return o.value;var a=o.get;if(void 0===a)return;return a.call(i)}var s=Object.getPrototypeOf(t);if(null===s)return;l=s,n=r,u=i,e=!0,o=s=void 0}},a=function(){function l(l,n){for(var u=0;u0){l+=" {";for(var n=0;n0&&(l+=","),l+=u[n]+":"+JSON.stringify(this.properties[u[n]]);l+="}"}return l+=")"}}]),l}(),i=function(){function l(n,u,t,r,i){e(this,l),this.identity=n,this.start=u,this.end=t,this.type=r,this.properties=i}return t(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),o=function(){function l(n,u,t){e(this,l),this.identity=n,this.type=u,this.properties=t}return t(l,[{key:"bind",value:function(l,n){return new i(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=Object.keys(this.properties);if(n.length>0){l+=" {";for(var u=0;u0&&(l+=","),l+=n[u]+":"+JSON.stringify(this.properties[n[u]]);l+="}"}return l+="]->"}}]),l}(),a=function f(l,n,u){e(this,f),this.start=l,this.relationship=n,this.end=u},s=function c(l,n,u){e(this,c),this.start=l,this.end=n,this.segments=u,this.length=u.length};u["default"]={Node:r,Relationship:i,UnboundRelationship:o,Path:s,PathSegment:a},n.exports=u["default"]},{}],144:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0});var e=l("./integer"),t=l("./driver"),r=l("./graph-types"),i=l("./error");u["default"]={driver:t.driver,"int":e["int"],isInt:e.isInt,Neo4jError:i.Neo4jError,auth:{basic:function(l,n){return{scheme:"basic",principal:l,credentials:n}}},types:{Node:r.Node,Relationship:r.Relationship,UnboundRelationship:r.UnboundRelationship,PathSegment:r.PathSegment,Path:r.Path}},n.exports=u["default"]},{"./driver":141,"./error":142,"./graph-types":143,"./integer":145}],145:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,s=a.toString(n);if(u=o,u.isZero())return s+i;for(;s.length<6;)s="0"+s;i=""+s+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,u=31;u>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var u=this.isNegative(),e=n.isNegative();return u&&!e?-1:!u&&e?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+s,h+=d>>>16,d&=65535,h+=t+a,c+=h>>>16,h&=65535,c+=e+o,f+=c>>>16,c&=65535,f+=u+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(h)&&n.lessThan(h))return l.fromNumber(this.toNumber()*n.toNumber());var u=this.high>>>16,e=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,a=n.low>>>16,s=65535&n.low,f=0,c=0,d=0,p=0;return p+=r*s,d+=p>>>16,p&=65535,d+=t*s,c+=d>>>16,d&=65535,d+=r*a,c+=d>>>16,d&=65535,c+=e*s,f+=c>>>16,c&=65535,c+=t*a,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=u*s+e*a+t*o+r*i,f&=65535,l.fromBits(d<<16|p,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,r.newError)("division by zero");if(this.isZero())return l.ZERO;var u,e,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var i=this.shiftRight(1);return u=i.div(n).shiftLeft(1),u.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(e=this.subtract(n.multiply(u)),t=u.add(e.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,e=this;e.greaterThanOrEqual(n);){u=Math.max(1,Math.floor(e.toNumber()/n.toNumber()));for(var o=Math.ceil(Math.log(u)/Math.LN2),a=o<=48?1:Math.pow(2,o-48),s=l.fromNumber(u),f=s.multiply(n);f.isNegative()||f.greaterThan(e);)u-=a,s=l.fromNumber(u),f=s.multiply(n);s.isZero()&&(s=l.ONE),t=t.add(s),e=e.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();i.__isInteger__,Object.defineProperty(i.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),i.isInteger=function(l){return(l&&l.__isInteger__)===!0};var o={};i.fromInt=function(l){var n,u;return l=0|l,-128<=l&&l<128&&(u=o[l])?u:(n=new i(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(o[l]=n),n)},i.fromNumber=function(l){return isNaN(l)||!isFinite(l)?i.ZERO:l<=-c?i.MIN_VALUE:l+1>=c?i.MAX_VALUE:l<0?i.fromNumber(-l).negate():new i(l%s|0,l/s|0)},i.fromBits=function(l,n){return new i(l,n)},i.fromString=function(l,n){if(0===l.length)throw(0,r.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return i.ZERO;if(n=n||10,n<2||360)throw(0,r.newError)('number format error: interior "-" character: '+l);if(0===u)return i.fromString(l.substring(1),n).negate();for(var e=i.fromNumber(Math.pow(n,8)),t=i.ZERO,o=0;o>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var u=0,e=n.remaining();u0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=u.length))return u.getUInt8(l);l-=u.length}}},{key:"getInt8",value:function(l){for(var n=0;n=u.length))return u.getInt8(l);l-=u.length}}},{key:"getFloat64",value:function(l){for(var n=r(8),u=0;u<8;u++)n.putUInt8(u,this.getUInt8(l+u));return n.getFloat64(0)}}]),n}(f),p=function(l){function n(l){t(this,n);var u=l instanceof s.Buffer?l:new s.Buffer(l);i(Object.getPrototypeOf(n.prototype),"constructor",this).call(this,u.length),this._buffer=u}return e(n,l),o(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,u){if(!(u instanceof n))throw(0,a.newError)("Copying not yet implemented.");var e=Math.min(u.length-u.position,this.length-l);u._buffer.copy(this._buffer,l,u.position,u.position+e),u.position+=e}},{key:"getSlice",value:function(l,u){return new n(this._buffer.slice(l,l+u))}}]),n}(f),b=c;try{l.resolve("buffer"),b=p}catch(v){}u["default"]={BaseBuffer:f,HeapBuffer:c,SliceBuffer:h,CombinedBuffer:d,NodeBuffer:p,alloc:r},n.exports=u["default"]},{"./../error":142,buffer:46}],147:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(){var n=l,u=n("process");return u.env["win32"==u.platform?"USERPROFILE":"HOME"]}function i(n,u,e){if(!b["default"].existsSync(u))return void e(null);var t=!1;l("readline").createInterface({input:b["default"].createReadStream(u)}).on("line",function(l){l.startsWith(n)&&(t=!0,e(l.split(" ")[1]))}).on("close",function(){t||e(null)})}function o(l,n,u){b["default"].appendFile(n,l+" "+u+g.EOL,"utf8",function(l){l&&console.log(l)})}function a(l,n){var u=arguments.length<=2||void 0===arguments[2]?function(){return null}:arguments[2];if(l.encrypted===!1){var e=c["default"].connect(l.port,l.host,n);return e.on("error",u),e}return k[l.trust]?k[l.trust](l,n,u):void u((0,_.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_SIGNED_CERTIFICATES' or trust:'TRUST_ON_FIRST_USE' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:false`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j."))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=s["default"].alloc(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new s["default"].CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();u["default"]={Chunker:d,Dechunker:p},n.exports=u["default"]},{"./buf":146}],150:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function r(l){return l.match(q)[2]}function i(l){return l.match(q)[3]}function o(){}function a(l){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],u=n.channel||E;return new K(new u({host:r(l),port:i(l)||7687,encrypted:null==n.encrypted?(0,y["default"])("trust_on_first_use"):n.encrypted,trust:n.trust||((0,y["default"])("trust_on_first_use")?"TRUST_ON_FIRST_USE":"TRUST_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}))}Object.defineProperty(u,"__esModule",{value:!0});var s=function(){function l(l,n){for(var u=0;u0?(f=e[a-1],f instanceof k["default"].UnboundRelationship&&(e[a-1]=f=f.bind(r.identity,s.identity))):(f=e[-a-1],f instanceof k["default"].UnboundRelationship&&(e[-a-1]=f=f.bind(s.identity,r.identity))),i.push(new k["default"].PathSegment(r,f,s)),r=s}return new k["default"].Path(u[0],u[u.length-1],i)}},K=function(){function l(n){t(this,l),this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new b["default"].Dechunker,this._chunker=new b["default"].Chunker(n),this._packer=new m["default"].Packer(this._chunker),this._unpacker=new m["default"].Unpacker,this._isHandlingFailure=!1,this._isBroken=!1,this._unpacker.structMappers[U]=F.node,this._unpacker.structMappers[T]=F.rel,this._unpacker.structMappers[L]=F.unboundRel,this._unpacker.structMappers[N]=F.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,S.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,S.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var e=(0,_.alloc)(20);e.writeInt32(D),e.writeInt32(1),e.writeInt32(0),e.writeInt32(0),e.writeInt32(0),e.reset(),this._ch.write(e)}return s(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this;switch(l.signature){case O:this._currentObserver.onNext(l.fields[0]);break;case R:try{this._currentObserver.onCompleted(l.fields[0])}finally{this._currentObserver=this._pendingObservers.shift()}break;case P:try{this._currentObserver.onError(l),this._errorMsg=l}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||!function(){n._isHandlingFailure=!0;var l=n;n._ackFailure({onNext:o,onError:o,onCompleted:function(){l._isHandlingFailure=!1}})}()}break;case C:try{this._errorMsg&&this._currentObserver.onError?this._currentObserver.onError(this._errorMsg):this._currentObserver.onError&&this._currentObserver.onError(l)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,S.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(M,[l,n]),this._chunker.messageBoundary()}},{key:"run",value:function(l,n,u){this._queueObserver(u),this._packer.packStruct(x,[l,n]),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){this._queueObserver(l),this._packer.packStruct(j),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){this._queueObserver(l),this._packer.packStruct(B),this._chunker.messageBoundary()}},{key:"reset",value:function(l){this._isHandlingFailure=!0;var n=this,u={onNext:l?l.onNext:o,onError:l?l.onError:o,onCompleted:function(){n._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(u),this._packer.packStruct(A),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){this._queueObserver(l),this._packer.packStruct(I),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||z,l.onCompleted=l.onCompleted||o,l.onError=l.onError||o,l.onNext=l.onNext||o,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"close",value:function(l){this._ch.close(l)}}]),l}();u["default"]={connect:a,Connection:K},n.exports=u["default"]},{"../graph-types":143,"../integer":145,"./../error":142,"./buf":146,"./ch-node":147,"./ch-websocket":148,"./chunking":149,"./features":151,"./packstream":153}],151:[function(l,n,u){"use strict";function e(l){return t[l]&&t[l]()}Object.defineProperty(u,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate;return n.length>=1}catch(u){return!1}}};u["default"]=e,n.exports=u["default"]},{tls:43}],152:[function(l,n,u){"use strict";Object.defineProperty(u,"__esModule",{value:!0}),u["default"]={debug:function(l){console.log(l)}},n.exports=u["default"]},{}],153:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;u0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),P=function(){function l(n){t(this,l),this._ch=n}return r(l,[{key:"pack",value:function(l){if(null===l)this._ch.writeUInt8(p);else if(l===!0)this._ch.writeUInt8(y);else if(l===!1)this._ch.writeUInt8(v);else if("number"==typeof l)this.packFloat(l);else if("string"==typeof l)this.packString(l);else if(l instanceof a.Integer)this.packInteger(l);else if(l instanceof Array){this.packListHeader(l.length);for(var n=0;n>0),this._ch.writeUInt8(u%256),this._ch.writeBytes(n);else{if(!(u<4294967296))throw(0,s.newError)("UTF-8 strings of size "+u+" are not supported");this._ch.writeUInt8(E),this._ch.writeUInt8((u/16777216>>0)%256),this._ch.writeUInt8((u/65536>>0)%256),this._ch.writeUInt8((u/256>>0)%256),this._ch.writeUInt8(u%256),this._ch.writeBytes(n)}}},{key:"packListHeader",value:function(l){if(l<16)this._ch.writeUInt8(c|l);else if(l<256)this._ch.writeUInt8(M),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(I),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Lists of size "+l+" are not supported");this._ch.writeUInt8(A),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packMapHeader",value:function(l){if(l<16)this._ch.writeUInt8(h|l);else if(l<256)this._ch.writeUInt8(x),this._ch.writeUInt8(l);else if(l<65536)this._ch.writeUInt8(B),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256);else{if(!(l<4294967296))throw(0,s.newError)("Maps of size "+l+" are not supported");this._ch.writeUInt8(j),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)}}},{key:"packStructHeader",value:function(l,n){if(l<16)this._ch.writeUInt8(d|l),this._ch.writeUInt8(n);else if(l<256)this._ch.writeUInt8(R),this._ch.writeUInt8(l),this._ch.writeUInt8(n);else{if(!(l<65536))throw(0,s.newError)("Structures of size "+l+" are not supported");this._ch.writeUInt8(O),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)}}}]),l}(),U=function(){function l(){t(this,l),this.structMappers={}}return r(l,[{key:"unpackList",value:function(l,n){for(var u=[],e=0;e=0&&n<128)return(0,a["int"])(n);if(n>=240&&n<256)return(0,a["int"])(n-256);if(n==g)return(0,a["int"])(l.readInt8());if(n==m)return(0,a["int"])(l.readInt16());if(n==_){var u=l.readInt32();return(0,a["int"])(u)}if(n==w){var e=l.readInt32(),t=l.readInt32();return new a.Integer(t,e)}if(n==k)return o["default"].decode(l,l.readUInt8());if(n==S)return o["default"].decode(l,l.readUInt16());if(n==E)return o["default"].decode(l,l.readUInt32());if(n==M)return this.unpackList(l.readUInt8(),l);if(n==I)return this.unpackList(l.readUInt16(),l);if(n==A)return this.unpackList(l.readUInt32(),l);if(n==x)return this.unpackMap(l.readUInt8(),l);if(n==B)return this.unpackMap(l.readUInt16(),l);if(n==j)return this.unpackMap(l.readUInt32(),l);if(n==R)return this.unpackStruct(l.readUInt8(),l);if(n==O)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return o["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,s.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();u["default"]={Packer:P,Unpacker:U,Structure:C},n.exports=u["default"]},{"../integer":145,"./../error":142,"./buf":146,"./log":152,"./utf8":156}],154:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0?this._pool.pop():this._create(this._release)}},{key:"_release",value:function(l){this._pool.length>=this._maxIdle||!this._validate(l)?this._destroy(l):this._pool.push(l)}}]),l}();u["default"]={Pool:r},n.exports=u["default"]},{}],155:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();u["default"]=i,n.exports=u["default"]},{"../record":157}],156:[function(l,n,u){"use strict";function e(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(u,"__esModule",{value:!0});var t=l("./buf"),r=e(t),i=l("string_decoder"),o=l("./../error"),a={};try{!function(){l.resolve("buffer");var n=new i.StringDecoder("utf8"),u=l("buffer");a={encode:function(l){return new r["default"].NodeBuffer(new u.Buffer(l,"UTF-8"))},decode:function(l,u){if(l instanceof r["default"].NodeBuffer){var e=l.position,t=e+u;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof r["default"].CombinedBuffer){var i=c(l,u,function(l){return n.write(l._buffer)},function(){return n.end()});return i}throw(0,o.newError)("Don't know how to decode strings from `"+l+"`.")}}}()}catch(s){var f;!function(){f=l("../../external/text-encoding/index");var n=new f.TextEncoder("utf-8"),u=new f.TextDecoder("utf-8");a={encode:function(l){return new r["default"].HeapBuffer(n.encode(l).buffer)},decode:function(l,n){if(l instanceof r["default"].HeapBuffer)return u.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=r["default"].alloc(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var e=Math.min(n.length-r,t),i=n.readSlice(e);return n._updatePos(e),t=Math.max(t-i.length,0),r=0,l+u(i)},"");return i+e()};u["default"]=a,n.exports=u["default"]},{"../../external/text-encoding/index":137,"./../error":142,"./buf":146,buffer:46,string_decoder:133}],157:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}function t(l){var n={};return l.forEach(function(l,u){n[l]=u}),n}Object.defineProperty(u,"__esModule",{value:!0});var r=function(){function l(l,n){for(var u=0;uthis._fields.length-1||n<0)throw(0,i.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}}]),l}();u.Record=o},{"./error":142}],158:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),f=function(){function l(n){e(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return t(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),c={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};u["default"]={ResultSummary:i,statementType:c},n.exports=u["default"]},{"./integer":145}],159:[function(l,n,u){"use strict";function e(l,n){if(!(l instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(u,"__esModule",{value:!0});var t=function(){function l(l,n){for(var u=0;u> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Lists of size " + size + " are not supported")); + throw (0, _error.newError)("Lists of size " + size + " are not supported"); } } }, { key: "packMapHeader", - value: function packMapHeader(size, onError) { + value: function packMapHeader(size) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -8277,12 +8151,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Maps of size " + size + " are not supported")); + throw (0, _error.newError)("Maps of size " + size + " are not supported"); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature, onError) { + value: function packStructHeader(size, signature) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -8295,7 +8169,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Structures of size " + size + " are not supported")); + throw (0, _error.newError)("Structures of size " + size + " are not supported"); } } }]); @@ -8829,7 +8703,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports['default'] = platformObj; module.exports = exports['default']; -},{"../../external/text-encoding/index":2,"./../error":6,"./buf":10,"buffer":73,"string_decoder":162}],22:[function(require,module,exports){ +},{"../../external/text-encoding/index":2,"./../error":6,"./buf":10,"buffer":73,"string_decoder":160}],22:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -10050,7 +9924,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":28,"inherits":120,"vm":164}],30:[function(require,module,exports){ +},{"../asn1":28,"inherits":119,"vm":162}],30:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -10168,7 +10042,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":31,"buffer":73,"inherits":120}],31:[function(require,module,exports){ +},{"../base":31,"buffer":73,"inherits":119}],31:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -10242,7 +10116,7 @@ module.exports = Node; var stateProps = [ 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', - 'implicit', 'contains' + 'implicit' ]; Node.prototype.clone = function clone() { @@ -10447,17 +10321,17 @@ Node.prototype.contains = function contains(item) { // Decoding // -Node.prototype._decode = function decode(input, options) { +Node.prototype._decode = function decode(input) { var state = this._baseState; // Decode root node if (state.parent === null) - return input.wrapResult(state.children[0]._decode(input, options)); + return input.wrapResult(state.children[0]._decode(input)); var result = state['default']; var present = true; - var prevKey = null; + var prevKey; if (state.key !== null) prevKey = input.enterKey(state.key); @@ -10476,9 +10350,9 @@ Node.prototype._decode = function decode(input, options) { var save = input.save(); try { if (state.choice === null) - this._decodeGeneric(state.tag, input, options); + this._decodeGeneric(state.tag, input); else - this._decodeChoice(input, options); + this._decodeChoice(input); present = true; } catch (e) { present = false; @@ -10506,8 +10380,6 @@ Node.prototype._decode = function decode(input, options) { input = explicit; } - var start = input.offset; - // Unwrap implicit and normal values if (state.use === null && state.choice === null) { if (state.any) @@ -10526,19 +10398,13 @@ Node.prototype._decode = function decode(input, options) { input = body; } - if (options && options.track && state.tag !== null) - options.track(input.path(), start, input.length, 'tagged'); - - if (options && options.track && state.tag !== null) - options.track(input.path(), input.offset, input.length, 'content'); - // Select proper method for tag if (state.any) result = result; else if (state.choice === null) - result = this._decodeGeneric(state.tag, input, options); + result = this._decodeGeneric(state.tag, input); else - result = this._decodeChoice(input, options); + result = this._decodeChoice(input); if (input.isError(result)) return result; @@ -10548,15 +10414,14 @@ Node.prototype._decode = function decode(input, options) { state.children.forEach(function decodeChildren(child) { // NOTE: We are ignoring errors here, to let parser continue with other // parts of encoded data - child._decode(input, options); + child._decode(input); }); } // Decode contained/encoded by schema, only in bit or octet strings if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { var data = new DecoderBuffer(result); - result = this._getUse(state.contains, input._reporterState.obj) - ._decode(data, options); + result = this._getUse(state.contains, input._reporterState.obj)._decode(data); } } @@ -10567,40 +10432,35 @@ Node.prototype._decode = function decode(input, options) { // Set key if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result); - else if (prevKey !== null) - input.exitKey(prevKey); return result; }; -Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { +Node.prototype._decodeGeneric = function decodeGeneric(tag, input) { var state = this._baseState; if (tag === 'seq' || tag === 'set') return null; if (tag === 'seqof' || tag === 'setof') - return this._decodeList(input, tag, state.args[0], options); + return this._decodeList(input, tag, state.args[0]); else if (/str$/.test(tag)) - return this._decodeStr(input, tag, options); + return this._decodeStr(input, tag); else if (tag === 'objid' && state.args) - return this._decodeObjid(input, state.args[0], state.args[1], options); + return this._decodeObjid(input, state.args[0], state.args[1]); else if (tag === 'objid') - return this._decodeObjid(input, null, null, options); + return this._decodeObjid(input, null, null); else if (tag === 'gentime' || tag === 'utctime') - return this._decodeTime(input, tag, options); + return this._decodeTime(input, tag); else if (tag === 'null_') - return this._decodeNull(input, options); + return this._decodeNull(input); else if (tag === 'bool') - return this._decodeBool(input, options); + return this._decodeBool(input); else if (tag === 'int' || tag === 'enum') - return this._decodeInt(input, state.args && state.args[0], options); - - if (state.use !== null) { - return this._getUse(state.use, input._reporterState.obj) - ._decode(input, options); - } else { + return this._decodeInt(input, state.args && state.args[0]); + else if (state.use !== null) + return this._getUse(state.use, input._reporterState.obj)._decode(input); + else return input.error('unknown tag: ' + tag); - } }; Node.prototype._getUse = function _getUse(entity, obj) { @@ -10617,7 +10477,7 @@ Node.prototype._getUse = function _getUse(entity, obj) { return state.useDecoder; }; -Node.prototype._decodeChoice = function decodeChoice(input, options) { +Node.prototype._decodeChoice = function decodeChoice(input) { var state = this._baseState; var result = null; var match = false; @@ -10626,7 +10486,7 @@ Node.prototype._decodeChoice = function decodeChoice(input, options) { var save = input.save(); var node = state.choice[key]; try { - var value = node._decode(input, options); + var value = node._decode(input); if (input.isError(value)) return false; @@ -10841,24 +10701,14 @@ Reporter.prototype.enterKey = function enterKey(key) { return this._reporterState.path.push(key); }; -Reporter.prototype.exitKey = function exitKey(index) { - var state = this._reporterState; - - state.path = state.path.slice(0, index - 1); -}; - Reporter.prototype.leaveKey = function leaveKey(index, key, value) { var state = this._reporterState; - this.exitKey(index); + state.path = state.path.slice(0, index - 1); if (state.obj !== null) state.obj[key] = value; }; -Reporter.prototype.path = function path() { - return this._reporterState.path.join('/'); -}; - Reporter.prototype.enterObject = function enterObject() { var state = this._reporterState; @@ -10930,7 +10780,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":120}],34:[function(require,module,exports){ +},{"inherits":119}],34:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -11106,15 +10956,14 @@ DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { } }; -DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, - options) { +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder) { var result = []; while (!buffer.isEmpty()) { var possibleEnd = this._peekTag(buffer, 'end'); if (buffer.isError(possibleEnd)) return possibleEnd; - var res = decoder.decode(buffer, 'der', options); + var res = decoder.decode(buffer, 'der'); if (buffer.isError(res) && possibleEnd) break; result.push(res); @@ -11319,7 +11168,7 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":28,"inherits":120}],37:[function(require,module,exports){ +},{"../../asn1":28,"inherits":119}],37:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); @@ -11376,7 +11225,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":36,"buffer":73,"inherits":120}],39:[function(require,module,exports){ +},{"./der":36,"buffer":73,"inherits":119}],39:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -11671,7 +11520,7 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":28,"buffer":73,"inherits":120}],40:[function(require,module,exports){ +},{"../../asn1":28,"buffer":73,"inherits":119}],40:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); @@ -11700,7 +11549,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":39,"inherits":120}],42:[function(require,module,exports){ +},{"./der":39,"inherits":119}],42:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { @@ -11884,12 +11733,8 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; } BN.isBN = function isBN (num) { - if (num instanceof BN) { - return true; - } - return num !== null && typeof num === 'object' && - num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + num.constructor.name === 'BN' && Array.isArray(num.words); }; BN.max = function max (left, right) { @@ -13930,10 +13775,6 @@ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; assert(this.negative === 0, 'imaskn works only with positive numbers'); - if (this.length <= s) { - return this; - } - if (r !== 0) { s++; } @@ -15600,7 +15441,7 @@ function xorTest (a, b) { }).call(this,require("buffer").Buffer) -},{"./aes":46,"./ghash":51,"buffer":73,"buffer-xor":72,"cipher-base":75,"inherits":120}],48:[function(require,module,exports){ +},{"./aes":46,"./ghash":51,"buffer":73,"buffer-xor":72,"cipher-base":74,"inherits":119}],48:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -15755,7 +15596,7 @@ exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":75,"evp_bytestokey":111,"inherits":120}],50:[function(require,module,exports){ +},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":74,"evp_bytestokey":110,"inherits":119}],50:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -15882,7 +15723,7 @@ exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":75,"evp_bytestokey":111,"inherits":120}],51:[function(require,module,exports){ +},{"./aes":46,"./authCipher":47,"./modes":52,"./modes/cbc":53,"./modes/cfb":54,"./modes/cfb1":55,"./modes/cfb8":56,"./modes/ctr":57,"./modes/ecb":58,"./modes/ofb":59,"./streamCipher":60,"buffer":73,"cipher-base":74,"evp_bytestokey":110,"inherits":119}],51:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -16367,7 +16208,7 @@ StreamCipher.prototype._final = function () { }).call(this,require("buffer").Buffer) -},{"./aes":46,"buffer":73,"cipher-base":75,"inherits":120}],61:[function(require,module,exports){ +},{"./aes":46,"buffer":73,"cipher-base":74,"inherits":119}],61:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -16442,7 +16283,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":48,"browserify-aes/modes":52,"browserify-des":62,"browserify-des/modes":63,"evp_bytestokey":111}],62:[function(require,module,exports){ +},{"browserify-aes/browser":48,"browserify-aes/modes":52,"browserify-des":62,"browserify-des/modes":63,"evp_bytestokey":110}],62:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -16490,7 +16331,7 @@ DES.prototype._final = function () { }).call(this,require("buffer").Buffer) -},{"buffer":73,"cipher-base":75,"des.js":83,"inherits":120}],63:[function(require,module,exports){ +},{"buffer":73,"cipher-base":74,"des.js":82,"inherits":119}],63:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -16746,7 +16587,7 @@ module.exports = { }).call(this,require("buffer").Buffer) -},{"./algos":65,"./sign":68,"./verify":69,"buffer":73,"create-hash":78,"inherits":120,"stream":149}],67:[function(require,module,exports){ +},{"./algos":65,"./sign":68,"./verify":69,"buffer":73,"create-hash":77,"inherits":119,"stream":159}],67:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -16950,7 +16791,7 @@ module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":67,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hmac":81,"elliptic":93,"parse-asn1":128}],69:[function(require,module,exports){ +},{"./curves":67,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hmac":80,"elliptic":92,"parse-asn1":128}],69:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -17058,7 +16899,7 @@ module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":67,"bn.js":43,"buffer":73,"elliptic":93,"parse-asn1":128}],70:[function(require,module,exports){ +},{"./curves":67,"bn.js":43,"buffer":73,"elliptic":92,"parse-asn1":128}],70:[function(require,module,exports){ arguments[4][45][0].apply(exports,arguments) },{"dup":45}],71:[function(require,module,exports){ (function (global){ @@ -18741,14 +18582,7 @@ function blitBuffer (src, dst, offset, length) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":42,"ieee754":118,"isarray":74}],74:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],75:[function(require,module,exports){ +},{"base64-js":42,"ieee754":117,"isarray":121}],74:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -18843,7 +18677,7 @@ CipherBase.prototype._toString = function (value, enc, final) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"inherits":120,"stream":149,"string_decoder":162}],76:[function(require,module,exports){ +},{"buffer":73,"inherits":119,"stream":159,"string_decoder":160}],75:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -18955,7 +18789,7 @@ function objectToString(o) { }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":121}],77:[function(require,module,exports){ +},{"../../is-buffer/index.js":120}],76:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -19082,7 +18916,7 @@ function formatReturnValue(bn, enc, len) { }).call(this,require("buffer").Buffer) -},{"bn.js":43,"buffer":73,"elliptic":93}],78:[function(require,module,exports){ +},{"bn.js":43,"buffer":73,"elliptic":92}],77:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -19139,7 +18973,7 @@ module.exports = function createHash (alg) { }).call(this,require("buffer").Buffer) -},{"./md5":80,"buffer":73,"cipher-base":75,"inherits":120,"ripemd160":140,"sha.js":142}],79:[function(require,module,exports){ +},{"./md5":79,"buffer":73,"cipher-base":74,"inherits":119,"ripemd160":150,"sha.js":152}],78:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -19177,7 +19011,7 @@ function hash(buf, fn, hashSize, bigEndian) { exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":73}],80:[function(require,module,exports){ +},{"buffer":73}],79:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -19334,7 +19168,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":79}],81:[function(require,module,exports){ +},{"./helpers":78}],80:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -19407,7 +19241,7 @@ module.exports = function createHmac(alg, key) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash/browser":78,"inherits":120,"stream":149}],82:[function(require,module,exports){ +},{"buffer":73,"create-hash/browser":77,"inherits":119,"stream":159}],81:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -19486,7 +19320,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":61,"browserify-sign":66,"browserify-sign/algos":65,"create-ecdh":77,"create-hash":78,"create-hmac":81,"diffie-hellman":89,"pbkdf2":130,"public-encrypt":133,"randombytes":139}],83:[function(require,module,exports){ +},{"browserify-cipher":61,"browserify-sign":66,"browserify-sign/algos":65,"create-ecdh":76,"create-hash":77,"create-hmac":80,"diffie-hellman":88,"pbkdf2":130,"public-encrypt":133,"randombytes":139}],82:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -19495,7 +19329,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":84,"./des/cipher":85,"./des/des":86,"./des/ede":87,"./des/utils":88}],84:[function(require,module,exports){ +},{"./des/cbc":83,"./des/cipher":84,"./des/des":85,"./des/ede":86,"./des/utils":87}],83:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19562,7 +19396,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":120,"minimalistic-assert":123}],85:[function(require,module,exports){ +},{"inherits":119,"minimalistic-assert":123}],84:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19705,7 +19539,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":123}],86:[function(require,module,exports){ +},{"minimalistic-assert":123}],85:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19850,7 +19684,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":83,"inherits":120,"minimalistic-assert":123}],87:[function(require,module,exports){ +},{"../des":82,"inherits":119,"minimalistic-assert":123}],86:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -19907,7 +19741,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":83,"inherits":120,"minimalistic-assert":123}],88:[function(require,module,exports){ +},{"../des":82,"inherits":119,"minimalistic-assert":123}],87:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -20165,7 +19999,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],89:[function(require,module,exports){ +},{}],88:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -20212,7 +20046,7 @@ exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":90,"./lib/generatePrime":91,"./lib/primes.json":92,"buffer":73}],90:[function(require,module,exports){ +},{"./lib/dh":89,"./lib/generatePrime":90,"./lib/primes.json":91,"buffer":73}],89:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -20381,7 +20215,7 @@ function formatReturnValue(bn, enc) { }).call(this,require("buffer").Buffer) -},{"./generatePrime":91,"bn.js":43,"buffer":73,"miller-rabin":122,"randombytes":139}],91:[function(require,module,exports){ +},{"./generatePrime":90,"bn.js":43,"buffer":73,"miller-rabin":122,"randombytes":139}],90:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -20488,7 +20322,7 @@ function findPrime(bits, gen) { } -},{"bn.js":43,"miller-rabin":122,"randombytes":139}],92:[function(require,module,exports){ +},{"bn.js":43,"miller-rabin":122,"randombytes":139}],91:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -20523,7 +20357,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],93:[function(require,module,exports){ +},{}],92:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -20539,7 +20373,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":109,"./elliptic/curve":96,"./elliptic/curves":99,"./elliptic/ec":100,"./elliptic/eddsa":103,"./elliptic/hmac-drbg":106,"./elliptic/utils":108,"brorand":44}],94:[function(require,module,exports){ +},{"../package.json":108,"./elliptic/curve":95,"./elliptic/curves":98,"./elliptic/ec":99,"./elliptic/eddsa":102,"./elliptic/hmac-drbg":105,"./elliptic/utils":107,"brorand":44}],93:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -20916,7 +20750,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":93,"bn.js":43}],95:[function(require,module,exports){ +},{"../../elliptic":92,"bn.js":43}],94:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -21351,7 +21185,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],96:[function(require,module,exports){ +},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],95:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -21361,7 +21195,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":94,"./edwards":95,"./mont":97,"./short":98}],97:[function(require,module,exports){ +},{"./base":93,"./edwards":94,"./mont":96,"./short":97}],96:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -21543,7 +21377,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],98:[function(require,module,exports){ +},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],97:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -22483,7 +22317,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":93,"../curve":96,"bn.js":43,"inherits":120}],99:[function(require,module,exports){ +},{"../../elliptic":92,"../curve":95,"bn.js":43,"inherits":119}],98:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -22690,7 +22524,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":93,"./precomputed/secp256k1":107,"hash.js":112}],100:[function(require,module,exports){ +},{"../elliptic":92,"./precomputed/secp256k1":106,"hash.js":111}],99:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -22928,7 +22762,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":93,"./key":101,"./signature":102,"bn.js":43}],101:[function(require,module,exports){ +},{"../../elliptic":92,"./key":100,"./signature":101,"bn.js":43}],100:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -23037,7 +22871,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"bn.js":43}],102:[function(require,module,exports){ +},{"bn.js":43}],101:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -23174,7 +23008,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":93,"bn.js":43}],103:[function(require,module,exports){ +},{"../../elliptic":92,"bn.js":43}],102:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -23294,7 +23128,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":93,"./key":104,"./signature":105,"hash.js":112}],104:[function(require,module,exports){ +},{"../../elliptic":92,"./key":103,"./signature":104,"hash.js":111}],103:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -23392,7 +23226,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":93}],105:[function(require,module,exports){ +},{"../../elliptic":92}],104:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -23460,7 +23294,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":93,"bn.js":43}],106:[function(require,module,exports){ +},{"../../elliptic":92,"bn.js":43}],105:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -23576,7 +23410,7 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { return utils.encode(res, enc); }; -},{"../elliptic":93,"hash.js":112}],107:[function(require,module,exports){ +},{"../elliptic":92,"hash.js":111}],106:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -24358,7 +24192,7 @@ module.exports = { } }; -},{}],108:[function(require,module,exports){ +},{}],107:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -24532,12 +24366,19 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":43}],109:[function(require,module,exports){ +},{"bn.js":43}],108:[function(require,module,exports){ module.exports={ "_args": [ [ - "elliptic@^6.0.0", - "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign" + { + "name": "elliptic", + "raw": "elliptic@^6.0.0", + "rawSpec": "^6.0.0", + "scope": null, + "spec": ">=6.0.0 <7.0.0", + "type": "range" + }, + "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign" ] ], "_from": "elliptic@>=6.0.0 <7.0.0", @@ -24568,11 +24409,11 @@ module.exports={ "/browserify-sign", "/create-ecdh" ], - "_resolved": "http://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", + "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.1.tgz", "_shasum": "17781f2109ab0ec686b146bdcff5d2e8c6aeceda", "_shrinkwrap": null, "_spec": "elliptic@^6.0.0", - "_where": "/Users/evebright/development/neo4j-javascript-driver/node_modules/browserify-sign", + "_where": "/Users/pontusmelke/sources/neo4j-javascript-driver/node_modules/browserify-sign", "author": { "email": "fedor@indutny.com", "name": "Fedor Indutny" @@ -24644,7 +24485,7 @@ module.exports={ "version": "6.3.1" } -},{}],110:[function(require,module,exports){ +},{}],109:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -24947,7 +24788,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],111:[function(require,module,exports){ +},{}],110:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -25020,7 +24861,7 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash/md5":80}],112:[function(require,module,exports){ +},{"buffer":73,"create-hash/md5":79}],111:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -25037,7 +24878,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":113,"./hash/hmac":114,"./hash/ripemd":115,"./hash/sha":116,"./hash/utils":117}],113:[function(require,module,exports){ +},{"./hash/common":112,"./hash/hmac":113,"./hash/ripemd":114,"./hash/sha":115,"./hash/utils":116}],112:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -25130,7 +24971,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":112}],114:[function(require,module,exports){ +},{"../hash":111}],113:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -25180,7 +25021,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":112}],115:[function(require,module,exports){ +},{"../hash":111}],114:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -25326,7 +25167,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":112}],116:[function(require,module,exports){ +},{"../hash":111}],115:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -25892,7 +25733,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":112}],117:[function(require,module,exports){ +},{"../hash":111}],116:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -26151,7 +25992,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":120}],118:[function(require,module,exports){ +},{"inherits":119}],117:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -26237,7 +26078,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],119:[function(require,module,exports){ +},{}],118:[function(require,module,exports){ var indexOf = [].indexOf; @@ -26248,7 +26089,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],120:[function(require,module,exports){ +},{}],119:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -26273,28 +26114,31 @@ if (typeof Object.create === 'function') { } } -},{}],121:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer +},{}],120:[function(require,module,exports){ +/** + * Determine if an object is Buffer * - * @author Feross Aboukhadijeh - * @license MIT + * Author: Feross Aboukhadijeh + * License: MIT + * + * `npm install is-buffer` */ -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) + return !!(obj != null && + (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor) + (obj.constructor && + typeof obj.constructor.isBuffer === 'function' && + obj.constructor.isBuffer(obj)) + )) } -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} +},{}],121:[function(require,module,exports){ +var toString = {}.toString; -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; },{}],122:[function(require,module,exports){ var bn = require('bn.js'); @@ -26639,7 +26483,7 @@ module.exports = function (okey, password) { }).call(this,require("buffer").Buffer) -},{"browserify-aes":48,"buffer":73,"evp_bytestokey":111}],128:[function(require,module,exports){ +},{"browserify-aes":48,"buffer":73,"evp_bytestokey":110}],128:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -27059,7 +26903,7 @@ function pbkdf2Sync (password, salt, iterations, keylen, digest) { }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hmac":81}],131:[function(require,module,exports){ +},{"buffer":73,"create-hmac":80}],131:[function(require,module,exports){ (function (process){ 'use strict'; @@ -27109,6 +26953,7 @@ function nextTick(fn, arg1, arg2, arg3) { },{"_process":132}],132:[function(require,module,exports){ // shim for using process in browser + var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it @@ -27120,63 +26965,21 @@ var cachedSetTimeout; var cachedClearTimeout; (function () { - try { - cachedSetTimeout = setTimeout; - } catch (e) { - cachedSetTimeout = function () { - throw new Error('setTimeout is not defined'); - } + try { + cachedSetTimeout = setTimeout; + } catch (e) { + cachedSetTimeout = function () { + throw new Error('setTimeout is not defined'); } - try { - cachedClearTimeout = clearTimeout; - } catch (e) { - cachedClearTimeout = function () { - throw new Error('clearTimeout is not defined'); - } + } + try { + cachedClearTimeout = clearTimeout; + } catch (e) { + cachedClearTimeout = function () { + throw new Error('clearTimeout is not defined'); } + } } ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} var queue = []; var draining = false; var currentQueue; @@ -27201,7 +27004,7 @@ function drainQueue() { if (draining) { return; } - var timeout = runTimeout(cleanUpNextTick); + var timeout = cachedSetTimeout(cleanUpNextTick); draining = true; var len = queue.length; @@ -27218,7 +27021,7 @@ function drainQueue() { } currentQueue = null; draining = false; - runClearTimeout(timeout); + cachedClearTimeout(timeout); } process.nextTick = function (fun) { @@ -27230,7 +27033,7 @@ process.nextTick = function (fun) { } queue.push(new Item(fun, args)); if (queue.length === 1 && !draining) { - runTimeout(drainQueue); + cachedSetTimeout(drainQueue, 0); } }; @@ -27300,7 +27103,7 @@ function i2ops(c) { } }).call(this,require("buffer").Buffer) -},{"buffer":73,"create-hash":78}],135:[function(require,module,exports){ +},{"buffer":73,"create-hash":77}],135:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -27412,7 +27215,7 @@ function compare(a, b){ } }).call(this,require("buffer").Buffer) -},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":78,"parse-asn1":128}],136:[function(require,module,exports){ +},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":77,"parse-asn1":128}],136:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -27511,7 +27314,7 @@ function nonZero(len, crypto) { } }).call(this,require("buffer").Buffer) -},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":78,"parse-asn1":128,"randombytes":139}],137:[function(require,module,exports){ +},{"./mgf":134,"./withPublic":137,"./xor":138,"bn.js":43,"browserify-rsa":64,"buffer":73,"create-hash":77,"parse-asn1":128,"randombytes":139}],137:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -27576,1291 +27379,1217 @@ function randomBytes (size, cb) { }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) },{"_process":132,"buffer":73}],140:[function(require,module,exports){ -(function (Buffer){ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/** @preserve -(c) 2012 by Cédric Mesnil. All rights reserved. +module.exports = require("./lib/_stream_duplex.js") -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +},{"./lib/_stream_duplex.js":141}],141:[function(require,module,exports){ +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. - - 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. +'use strict'; -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 HOLDER 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. -*/ +/**/ -// constants table -var zl = [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -] +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ -var zr = [ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -] +module.exports = Duplex; -var sl = [ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -] +/**/ +var processNextTick = require('process-nextick-args'); +/**/ -var sr = [ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -] +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] -var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); -function bytesToWords (bytes) { - var words = [] - for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { - words[b >>> 5] |= bytes[i] << (24 - b % 32) - } - return words -} +util.inherits(Duplex, Readable); -function wordsToBytes (words) { - var bytes = [] - for (var b = 0; b < words.length * 32; b += 8) { - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) - } - return bytes +var keys = objectKeys(Writable.prototype); +for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } -function processBlock (H, M, offset) { - // swap endian - for (var i = 0; i < 16; i++) { - var offset_i = offset + i - var M_offset_i = M[offset_i] +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ) - } - - // Working variables - var al, bl, cl, dl, el - var ar, br, cr, dr, er - - ar = al = H[0] - br = bl = H[1] - cr = cl = H[2] - dr = dl = H[3] - er = el = H[4] - - // computation - var t - for (i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0 - if (i < 16) { - t += f1(bl, cl, dl) + hl[0] - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1] - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2] - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3] - } else {// if (i<80) { - t += f5(bl, cl, dl) + hl[4] - } - t = t | 0 - t = rotl(t, sl[i]) - t = (t + el) | 0 - al = el - el = dl - dl = rotl(cl, 10) - cl = bl - bl = t - - t = (ar + M[offset + zr[i]]) | 0 - if (i < 16) { - t += f5(br, cr, dr) + hr[0] - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1] - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2] - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3] - } else {// if (i<80) { - t += f1(br, cr, dr) + hr[4] - } - - t = t | 0 - t = rotl(t, sr[i]) - t = (t + er) | 0 - ar = er - er = dr - dr = rotl(cr, 10) - cr = br - br = t - } + Readable.call(this, options); + Writable.call(this, options); - // intermediate hash value - t = (H[1] + cl + dr) | 0 - H[1] = (H[2] + dl + er) | 0 - H[2] = (H[3] + el + ar) | 0 - H[3] = (H[4] + al + br) | 0 - H[4] = (H[0] + bl + cr) | 0 - H[0] = t -} + if (options && options.readable === false) this.readable = false; -function f1 (x, y, z) { - return ((x) ^ (y) ^ (z)) -} + if (options && options.writable === false) this.writable = false; -function f2 (x, y, z) { - return (((x) & (y)) | ((~x) & (z))) -} + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; -function f3 (x, y, z) { - return (((x) | (~(y))) ^ (z)) + this.once('end', onend); } -function f4 (x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))) -} +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; -function f5 (x, y, z) { - return ((x) ^ ((y) | (~(z)))) + // no more data can be written. + // But allow more writes to happen in this tick. + processNextTick(onEndNT, this); } -function rotl (x, n) { - return (x << n) | (x >>> (32 - n)) +function onEndNT(self) { + self.end(); } -function ripemd160 (message) { - var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] - - if (typeof message === 'string') { - message = new Buffer(message, 'utf8') +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); } +} +},{"./_stream_readable":143,"./_stream_writable":145,"core-util-is":75,"inherits":119,"process-nextick-args":131}],142:[function(require,module,exports){ +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. - var m = bytesToWords(message) +'use strict'; - var nBitsLeft = message.length * 8 - var nBitsTotal = message.length * 8 +module.exports = PassThrough; - // Add padding - m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) - m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ) +var Transform = require('./_stream_transform'); - for (var i = 0; i < m.length; i += 16) { - processBlock(H, m, i) - } +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - // swap endian - for (i = 0; i < 5; i++) { - // shortcut - var H_i = H[i] +util.inherits(PassThrough, Transform); - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) - } +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); - var digestbytes = wordsToBytes(H) - return new Buffer(digestbytes) + Transform.call(this, options); } -module.exports = ripemd160 - -}).call(this,require("buffer").Buffer) +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":144,"core-util-is":75,"inherits":119}],143:[function(require,module,exports){ +(function (process){ +'use strict'; -},{"buffer":73}],141:[function(require,module,exports){ -(function (Buffer){ -// prototype class for hash functions -function Hash (blockSize, finalSize) { - this._block = new Buffer(blockSize) - this._finalSize = finalSize - this._blockSize = blockSize - this._len = 0 - this._s = 0 -} +module.exports = Readable; -Hash.prototype.update = function (data, enc) { - if (typeof data === 'string') { - enc = enc || 'utf8' - data = new Buffer(data, enc) - } +/**/ +var processNextTick = require('process-nextick-args'); +/**/ - var l = this._len += data.length - var s = this._s || 0 - var f = 0 - var buffer = this._block +/**/ +var isArray = require('isarray'); +/**/ - while (s < l) { - var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) - var ch = (t - f) +Readable.ReadableState = ReadableState; - for (var i = 0; i < ch; i++) { - buffer[(s % this._blockSize) + i] = data[i + f] - } +/**/ +var EE = require('events').EventEmitter; - s += ch - f += ch +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ - if ((s % this._blockSize) === 0) { - this._update(buffer) - } +/**/ +var Stream; +(function () { + try { + Stream = require('st' + 'ream'); + } catch (_) {} finally { + if (!Stream) Stream = require('events').EventEmitter; } - this._s = s - - return this -} +})(); +/**/ -Hash.prototype.digest = function (enc) { - // Suppose the length of the message M, in bits, is l - var l = this._len * 8 +var Buffer = require('buffer').Buffer; +/**/ +var bufferShim = require('buffer-shims'); +/**/ - // Append the bit 1 to the end of the message - this._block[this._len % this._blockSize] = 0x80 +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ - // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize - this._block.fill(0, this._len % this._blockSize + 1) +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ - if (l % (this._blockSize * 8) >= this._finalSize * 8) { - this._update(this._block) - this._block.fill(0) - } +var StringDecoder; - // to this append the block which is equal to the number l written in binary - // TODO: handle case where l is > Math.pow(2, 29) - this._block.writeInt32BE(l, this._blockSize - 4) +util.inherits(Readable, Stream); - var hash = this._update(this._block) || this._hash() +var hasPrependListener = typeof EE.prototype.prependListener === 'function'; - return enc ? hash.toString(enc) : hash -} +function prependListener(emitter, event, fn) { + if (hasPrependListener) return emitter.prependListener(event, fn); -Hash.prototype._update = function () { - throw new Error('_update must be implemented by subclass') + // This is a brutally ugly hack to make sure that our error handler + // is attached before any userland ones. NEVER DO THIS. This is here + // only because this code needs to continue to work with older versions + // of Node.js that do not include the prependListener() method. The goal + // is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; } -module.exports = Hash +var Duplex; +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); -}).call(this,require("buffer").Buffer) + options = options || {}; -},{"buffer":73}],142:[function(require,module,exports){ -var exports = module.exports = function SHA (algorithm) { - algorithm = algorithm.toLowerCase() - - var Algorithm = exports[algorithm] - if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - - return new Algorithm() -} - -exports.sha = require('./sha') -exports.sha1 = require('./sha1') -exports.sha224 = require('./sha224') -exports.sha256 = require('./sha256') -exports.sha384 = require('./sha384') -exports.sha512 = require('./sha512') - -},{"./sha":143,"./sha1":144,"./sha224":145,"./sha256":146,"./sha384":147,"./sha512":148}],143:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined - * in FIPS PUB 180-1 - * This source code is derived from sha1.js of the same repository. - * The difference between SHA-0 and SHA-1 is just a bitwise rotate left - * operation was added. - */ + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; -var inherits = require('inherits') -var Hash = require('./hash') + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; -var W = new Array(80) + // cast to ints. + this.highWaterMark = ~ ~this.highWaterMark; -function Sha () { - this.init() - this._w = W + this.buffer = []; + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; - Hash.call(this, 64, 56) -} + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; -inherits(Sha, Hash) + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; -Sha.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - return this -} + // when piping, we only care about 'readable' events that happen + // after read()ing all the bytes and not getting any pushback. + this.ranOut = false; -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} + // if true, a maybeReadMore has been scheduled + this.readingMore = false; -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } } -Sha.prototype._update = function (M) { - var W = this._w +var Duplex; +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 + if (!(this instanceof Readable)) return new Readable(options); - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] + this._readableState = new ReadableState(options, this); - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + // legacy + this.readable = true; - e = d - d = c - c = rotl30(b) - b = a - a = t - } + if (options && typeof options.read === 'function') this._read = options.read; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 + Stream.call(this); } -Sha.prototype._hash = function () { - var H = new Buffer(20) +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) + if (!state.objectMode && typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = bufferShim.from(chunk, encoding); + encoding = ''; + } + } - return H -} + return readableAddChunk(this, state, chunk, encoding, false); +}; -module.exports = Sha +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + var state = this._readableState; + return readableAddChunk(this, state, chunk, '', true); +}; -}).call(this,require("buffer").Buffer) +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; -},{"./hash":141,"buffer":73,"inherits":120}],144:[function(require,module,exports){ -(function (Buffer){ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ +function readableAddChunk(stream, state, chunk, encoding, addToFront) { + var er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (state.ended && !addToFront) { + var e = new Error('stream.push() after EOF'); + stream.emit('error', e); + } else if (state.endEmitted && addToFront) { + var _e = new Error('stream.unshift() after end event'); + stream.emit('error', _e); + } else { + var skipAdd; + if (state.decoder && !addToFront && !encoding) { + chunk = state.decoder.write(chunk); + skipAdd = !state.objectMode && chunk.length === 0; + } -var inherits = require('inherits') -var Hash = require('./hash') + if (!addToFront) state.reading = false; -var K = [ - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 -] + // Don't add to the buffer if we've decoded to an empty string chunk and + // we're not in object mode + if (!skipAdd) { + // if we want the data now, just emit it. + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); -var W = new Array(80) + if (state.needReadable) emitReadable(stream); + } + } -function Sha1 () { - this.init() - this._w = W + maybeReadMore(stream, state); + } + } else if (!addToFront) { + state.reading = false; + } - Hash.call(this, 64, 56) + return needMoreData(state); } -inherits(Sha1, Hash) - -Sha1.prototype.init = function () { - this._a = 0x67452301 - this._b = 0xefcdab89 - this._c = 0x98badcfe - this._d = 0x10325476 - this._e = 0xc3d2e1f0 - - return this +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); } -function rotl1 (num) { - return (num << 1) | (num >>> 31) -} +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; -function rotl5 (num) { - return (num << 5) | (num >>> 27) -} - -function rotl30 (num) { - return (num << 30) | (num >>> 2) -} - -function ft (s, b, c, d) { - if (s === 0) return (b & c) | ((~b) & d) - if (s === 2) return (b & c) | (b & d) | (c & d) - return b ^ c ^ d +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; } -Sha1.prototype._update = function (M) { - var W = this._w - - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) +function howMuchToRead(n, state) { + if (state.length === 0 && state.ended) return 0; - for (var j = 0; j < 80; ++j) { - var s = ~~(j / 20) - var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 + if (state.objectMode) return n === 0 ? 0 : 1; - e = d - d = c - c = rotl30(b) - b = a - a = t + if (n === null || isNaN(n)) { + // only flow one buffer at a time + if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; } - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 -} + if (n <= 0) return 0; -Sha1.prototype._hash = function () { - var H = new Buffer(20) + // If we're asking for more than the target buffer level, + // then raise the water mark. Bump up to the next highest + // power of 2, to prevent increasing it excessively in tiny + // amounts. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - H.writeInt32BE(this._a | 0, 0) - H.writeInt32BE(this._b | 0, 4) - H.writeInt32BE(this._c | 0, 8) - H.writeInt32BE(this._d | 0, 12) - H.writeInt32BE(this._e | 0, 16) + // don't have that much. return null, unless we've ended. + if (n > state.length) { + if (!state.ended) { + state.needReadable = true; + return 0; + } else { + return state.length; + } + } - return H + return n; } -module.exports = Sha1 - -}).call(this,require("buffer").Buffer) +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + var state = this._readableState; + var nOrig = n; -},{"./hash":141,"buffer":73,"inherits":120}],145:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ + if (typeof n !== 'number' || n > 0) state.emittedReadable = false; -var inherits = require('inherits') -var Sha256 = require('./sha256') -var Hash = require('./hash') + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } -var W = new Array(64) + n = howMuchToRead(n, state); -function Sha224 () { - this.init() + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } - this._w = W // new Array(64) + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. - Hash.call(this, 64, 56) -} + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); -inherits(Sha224, Sha256) + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } -Sha224.prototype.init = function () { - this._a = 0xc1059ed8 - this._b = 0x367cd507 - this._c = 0x3070dd17 - this._d = 0xf70e5939 - this._e = 0xffc00b31 - this._f = 0x68581511 - this._g = 0x64f98fa7 - this._h = 0xbefa4fa4 + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } - return this -} + if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + } -Sha224.prototype._hash = function () { - var H = new Buffer(28) + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (doRead && !state.reading) n = howMuchToRead(nOrig, state); - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; - return H -} + if (ret === null) { + state.needReadable = true; + n = 0; + } -module.exports = Sha224 + state.length -= n; -}).call(this,require("buffer").Buffer) + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (state.length === 0 && !state.ended) state.needReadable = true; -},{"./hash":141,"./sha256":146,"buffer":73,"inherits":120}],146:[function(require,module,exports){ -(function (Buffer){ -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended && state.length === 0) endReadable(this); -var inherits = require('inherits') -var Hash = require('./hash') + if (ret !== null) this.emit('data', ret); -var K = [ - 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, - 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, - 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, - 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, - 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, - 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, - 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, - 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, - 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, - 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, - 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, - 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, - 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, - 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, - 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, - 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 -] + return ret; +}; -var W = new Array(64) +function chunkInvalid(state, chunk) { + var er = null; + if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} -function Sha256 () { - this.init() +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; - this._w = W // new Array(64) + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} - Hash.call(this, 64, 56) +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); + } } -inherits(Sha256, Hash) +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} -Sha256.prototype.init = function () { - this._a = 0x6a09e667 - this._b = 0xbb67ae85 - this._c = 0x3c6ef372 - this._d = 0xa54ff53a - this._e = 0x510e527f - this._f = 0x9b05688c - this._g = 0x1f83d9ab - this._h = 0x5be0cd19 - - return this +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + processNextTick(maybeReadMore_, stream, state); + } } -function ch (x, y, z) { - return z ^ (x & (y ^ z)) +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; } -function maj (x, y, z) { - return (x & y) | (z & (x | y)) -} +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('not implemented')); +}; -function sigma0 (x) { - return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) -} +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; -function sigma1 (x) { - return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) -} + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); -function gamma0 (x) { - return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) -} + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; -function gamma1 (x) { - return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) -} + var endFn = doEnd ? onend : cleanup; + if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); -Sha256.prototype._update = function (M) { - var W = this._w + dest.on('unpipe', onunpipe); + function onunpipe(readable) { + debug('onunpipe'); + if (readable === src) { + cleanup(); + } + } - var a = this._a | 0 - var b = this._b | 0 - var c = this._c | 0 - var d = this._d | 0 - var e = this._e | 0 - var f = this._f | 0 - var g = this._g | 0 - var h = this._h | 0 + function onend() { + debug('onend'); + dest.end(); + } - for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) - for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); - for (var j = 0; j < 64; ++j) { - var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 - var T2 = (sigma0(a) + maj(a, b, c)) | 0 + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', cleanup); + src.removeListener('data', ondata); - h = g - g = f - f = e - e = (d + T1) | 0 - d = c - c = b - b = a - a = (T1 + T2) | 0 - } + cleanedUp = true; - this._a = (a + this._a) | 0 - this._b = (b + this._b) | 0 - this._c = (c + this._c) | 0 - this._d = (d + this._d) | 0 - this._e = (e + this._e) | 0 - this._f = (f + this._f) | 0 - this._g = (g + this._g) | 0 - this._h = (h + this._h) | 0 -} + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } -Sha256.prototype._hash = function () { - var H = new Buffer(32) + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + if (false === ret) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + } + src.pause(); + } + } - H.writeInt32BE(this._a, 0) - H.writeInt32BE(this._b, 4) - H.writeInt32BE(this._c, 8) - H.writeInt32BE(this._d, 12) - H.writeInt32BE(this._e, 16) - H.writeInt32BE(this._f, 20) - H.writeInt32BE(this._g, 24) - H.writeInt32BE(this._h, 28) + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } - return H -} + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); -module.exports = Sha256 + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); -}).call(this,require("buffer").Buffer) + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } -},{"./hash":141,"buffer":73,"inherits":120}],147:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var SHA512 = require('./sha512') -var Hash = require('./hash') + // tell the dest that it's being piped to + dest.emit('pipe', src); -var W = new Array(160) + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } -function Sha384 () { - this.init() - this._w = W + return dest; +}; - Hash.call(this, 128, 112) +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; } -inherits(Sha384, SHA512) +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; -Sha384.prototype.init = function () { - this._ah = 0xcbbb9d5d - this._bh = 0x629a292a - this._ch = 0x9159015a - this._dh = 0x152fecd8 - this._eh = 0x67332667 - this._fh = 0x8eb44a87 - this._gh = 0xdb0c2e0d - this._hh = 0x47b5481d + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; - this._al = 0xc1059ed8 - this._bl = 0x367cd507 - this._cl = 0x3070dd17 - this._dl = 0xf70e5939 - this._el = 0xffc00b31 - this._fl = 0x68581511 - this._gl = 0x64f98fa7 - this._hl = 0xbefa4fa4 + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; - return this -} + if (!dest) dest = state.pipes; -Sha384.prototype._hash = function () { - var H = new Buffer(48) - - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this); + return this; } - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - - return H -} + // slow case. multiple pipe destinations. -module.exports = Sha384 + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; -}).call(this,require("buffer").Buffer) + for (var _i = 0; _i < len; _i++) { + dests[_i].emit('unpipe', this); + }return this; + } -},{"./hash":141,"./sha512":148,"buffer":73,"inherits":120}],148:[function(require,module,exports){ -(function (Buffer){ -var inherits = require('inherits') -var Hash = require('./hash') + // try to find the right one. + var i = indexOf(state.pipes, dest); + if (i === -1) return this; -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -] + state.pipes.splice(i, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; -var W = new Array(160) + dest.emit('unpipe', this); -function Sha512 () { - this.init() - this._w = W + return this; +}; - Hash.call(this, 128, 112) -} +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); -inherits(Sha512, Hash) + // If listening to data, and it has not explicitly been paused, + // then call resume to start the flow of data on the next tick. + if (ev === 'data' && false !== this._readableState.flowing) { + this.resume(); + } -Sha512.prototype.init = function () { - this._ah = 0x6a09e667 - this._bh = 0xbb67ae85 - this._ch = 0x3c6ef372 - this._dh = 0xa54ff53a - this._eh = 0x510e527f - this._fh = 0x9b05688c - this._gh = 0x1f83d9ab - this._hh = 0x5be0cd19 + if (ev === 'readable' && !this._readableState.endEmitted) { + var state = this._readableState; + if (!state.readableListening) { + state.readableListening = true; + state.emittedReadable = false; + state.needReadable = true; + if (!state.reading) { + processNextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this, state); + } + } + } - this._al = 0xf3bcc908 - this._bl = 0x84caa73b - this._cl = 0xfe94f82b - this._dl = 0x5f1d36f1 - this._el = 0xade682d1 - this._fl = 0x2b3e6c1f - this._gl = 0xfb41bd6b - this._hl = 0x137e2179 + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; - return this +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); } -function Ch (x, y, z) { - return z ^ (x & (y ^ z)) -} +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; -function maj (x, y, z) { - return (x & y) | (z & (x | y)) +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + processNextTick(resume_, stream, state); + } } -function sigma0 (x, xl) { - return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) -} +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } -function sigma1 (x, xl) { - return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); } -function Gamma0 (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) -} +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; -function Gamma0l (x, xl) { - return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + if (state.flowing) { + do { + var chunk = stream.read(); + } while (null !== chunk && state.flowing); + } } -function Gamma1 (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) -} +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var state = this._readableState; + var paused = false; -function Gamma1l (x, xl) { - return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) -} + var self = this; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) self.push(chunk); + } -function getCarry (a, b) { - return (a >>> 0) < (b >>> 0) ? 1 : 0 -} + self.push(null); + }); -Sha512.prototype._update = function (M) { - var W = this._w + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); - var ah = this._ah | 0 - var bh = this._bh | 0 - var ch = this._ch | 0 - var dh = this._dh | 0 - var eh = this._eh | 0 - var fh = this._fh | 0 - var gh = this._gh | 0 - var hh = this._hh | 0 + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - var al = this._al | 0 - var bl = this._bl | 0 - var cl = this._cl | 0 - var dl = this._dl | 0 - var el = this._el | 0 - var fl = this._fl | 0 - var gl = this._gl | 0 - var hl = this._hl | 0 + var ret = self.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); - for (var i = 0; i < 32; i += 2) { - W[i] = M.readInt32BE(i * 4) - W[i + 1] = M.readInt32BE(i * 4 + 4) + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } } - for (; i < 160; i += 2) { - var xh = W[i - 15 * 2] - var xl = W[i - 15 * 2 + 1] - var gamma0 = Gamma0(xh, xl) - var gamma0l = Gamma0l(xl, xh) - - xh = W[i - 2 * 2] - xl = W[i - 2 * 2 + 1] - var gamma1 = Gamma1(xh, xl) - var gamma1l = Gamma1l(xl, xh) - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7h = W[i - 7 * 2] - var Wi7l = W[i - 7 * 2 + 1] - var Wi16h = W[i - 16 * 2] - var Wi16l = W[i - 16 * 2 + 1] + // proxy certain important events. + var events = ['error', 'close', 'destroy', 'pause', 'resume']; + forEach(events, function (ev) { + stream.on(ev, self.emit.bind(self, ev)); + }); - var Wil = (gamma0l + Wi7l) | 0 - var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 - Wil = (Wil + gamma1l) | 0 - Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 - Wil = (Wil + Wi16l) | 0 - Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + // when we try to consume some more bytes, simply unpause the + // underlying stream. + self._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; - W[i] = Wih - W[i + 1] = Wil - } + return self; +}; - for (var j = 0; j < 160; j += 2) { - Wih = W[j] - Wil = W[j + 1] +// exposed for testing purposes only. +Readable._fromList = fromList; - var majh = maj(ah, bh, ch) - var majl = maj(al, bl, cl) +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +function fromList(n, state) { + var list = state.buffer; + var length = state.length; + var stringMode = !!state.decoder; + var objectMode = !!state.objectMode; + var ret; - var sigma0h = sigma0(ah, al) - var sigma0l = sigma0(al, ah) - var sigma1h = sigma1(eh, el) - var sigma1l = sigma1(el, eh) + // nothing in the list, definitely empty. + if (list.length === 0) return null; - // t1 = h + sigma1 + ch + K[j] + W[j] - var Kih = K[j] - var Kil = K[j + 1] + if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { + // read it all, truncate the array. + if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); + list.length = 0; + } else { + // read just some of it. + if (n < list[0].length) { + // just take a part of the first list item. + // slice is the same for buffers and strings. + var buf = list[0]; + ret = buf.slice(0, n); + list[0] = buf.slice(n); + } else if (n === list[0].length) { + // first list is a perfect match + ret = list.shift(); + } else { + // complex case. + // we have enough to cover it, but it spans past the first buffer. + if (stringMode) ret = '';else ret = bufferShim.allocUnsafe(n); - var chh = Ch(eh, fh, gh) - var chl = Ch(el, fl, gl) + var c = 0; + for (var i = 0, l = list.length; i < l && c < n; i++) { + var _buf = list[0]; + var cpy = Math.min(n - c, _buf.length); - var t1l = (hl + sigma1l) | 0 - var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 - t1l = (t1l + chl) | 0 - t1h = (t1h + chh + getCarry(t1l, chl)) | 0 - t1l = (t1l + Kil) | 0 - t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 - t1l = (t1l + Wil) | 0 - t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + if (stringMode) ret += _buf.slice(0, cpy);else _buf.copy(ret, c, 0, cpy); - // t2 = sigma0 + maj - var t2l = (sigma0l + majl) | 0 - var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + if (cpy < _buf.length) list[0] = _buf.slice(cpy);else list.shift(); - hh = gh - hl = gl - gh = fh - gl = fl - fh = eh - fl = el - el = (dl + t1l) | 0 - eh = (dh + t1h + getCarry(el, dl)) | 0 - dh = ch - dl = cl - ch = bh - cl = bl - bh = ah - bl = al - al = (t1l + t2l) | 0 - ah = (t1h + t2h + getCarry(al, t1l)) | 0 + c += cpy; + } + } } - this._al = (this._al + al) | 0 - this._bl = (this._bl + bl) | 0 - this._cl = (this._cl + cl) | 0 - this._dl = (this._dl + dl) | 0 - this._el = (this._el + el) | 0 - this._fl = (this._fl + fl) | 0 - this._gl = (this._gl + gl) | 0 - this._hl = (this._hl + hl) | 0 - - this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 - this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 - this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 - this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 - this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 - this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 - this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 - this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 + return ret; } -Sha512.prototype._hash = function () { - var H = new Buffer(64) +function endReadable(stream) { + var state = stream._readableState; - function writeInt64BE (h, l, offset) { - H.writeInt32BE(h, offset) - H.writeInt32BE(l, offset + 4) - } + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - writeInt64BE(this._ah, this._al, 0) - writeInt64BE(this._bh, this._bl, 8) - writeInt64BE(this._ch, this._cl, 16) - writeInt64BE(this._dh, this._dl, 24) - writeInt64BE(this._eh, this._el, 32) - writeInt64BE(this._fh, this._fl, 40) - writeInt64BE(this._gh, this._gl, 48) - writeInt64BE(this._hh, this._hl, 56) + if (!state.endEmitted) { + state.ended = true; + processNextTick(endReadableNT, state, stream); + } +} - return H +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } } -module.exports = Sha512 +function forEach(xs, f) { + for (var i = 0, l = xs.length; i < l; i++) { + f(xs[i], i); + } +} -}).call(this,require("buffer").Buffer) +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this,require('_process')) -},{"./hash":141,"buffer":73,"inherits":120}],149:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. +},{"./_stream_duplex":141,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":75,"events":109,"inherits":119,"isarray":121,"process-nextick-args":131,"string_decoder/":160,"util":45}],144:[function(require,module,exports){ +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) // -// 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: +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. // -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. +// Here's how this works: // -// 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. - -module.exports = Stream; +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. -var EE = require('events').EventEmitter; -var inherits = require('inherits'); +'use strict'; -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); +module.exports = Transform; -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; +var Duplex = require('./_stream_duplex'); +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ +util.inherits(Transform, Duplex); -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. +function TransformState(stream) { + this.afterTransform = function (er, data) { + return afterTransform(stream, er, data); + }; -function Stream() { - EE.call(this); + this.needTransform = false; + this.transforming = false; + this.writecb = null; + this.writechunk = null; + this.writeencoding = null; } -Stream.prototype.pipe = function(dest, options) { - var source = this; +function afterTransform(stream, er, data) { + var ts = stream._transformState; + ts.transforming = false; - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } + var cb = ts.writecb; - source.on('data', ondata); + if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); + ts.writechunk = null; + ts.writecb = null; - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } + if (data !== null && data !== undefined) stream.push(data); - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; + cb(er); - dest.end(); + var rs = stream._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + stream._read(rs.highWaterMark); } +} +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } + Duplex.call(this, options); - source.on('error', onerror); - dest.on('error', onerror); + this._transformState = new TransformState(this); - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); + // when the writable side finishes, then flush out anything remaining. + var stream = this; - source.removeListener('end', onend); - source.removeListener('close', onclose); + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - source.removeListener('error', onerror); - dest.removeListener('error', onerror); + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; - dest.removeListener('close', cleanup); + if (typeof options.flush === 'function') this._flush = options.flush; } - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); + this.once('prefinish', function () { + if (typeof this._flush === 'function') this._flush(function (er) { + done(stream, er); + });else done(stream); + }); +} - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); }; -},{"events":110,"inherits":120,"readable-stream/duplex.js":151,"readable-stream/passthrough.js":158,"readable-stream/readable.js":159,"readable-stream/transform.js":160,"readable-stream/writable.js":161}],150:[function(require,module,exports){ -arguments[4][74][0].apply(exports,arguments) -},{"dup":74}],151:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") - -},{"./lib/_stream_duplex.js":152}],152:[function(require,module,exports){ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('Not implemented'); }; -/**/ - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } -} -},{"./_stream_readable":154,"./_stream_writable":156,"core-util-is":76,"inherits":120,"process-nextick-args":131}],153:[function(require,module,exports){ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. +}; -'use strict'; +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; -module.exports = PassThrough; + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; -var Transform = require('./_stream_transform'); +function done(stream, er) { + if (er) return stream.emit('error', er); -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + var ws = stream._writableState; + var ts = stream._transformState; -util.inherits(PassThrough, Transform); + if (ws.length) throw new Error('Calling transform done when ws.length != 0'); -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); + if (ts.transforming) throw new Error('Calling transform done when still transforming'); - Transform.call(this, options); + return stream.push(null); } - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":155,"core-util-is":76,"inherits":120}],154:[function(require,module,exports){ +},{"./_stream_duplex":141,"core-util-is":75,"inherits":119}],145:[function(require,module,exports){ (function (process){ +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + 'use strict'; -module.exports = Readable; +module.exports = Writable; /**/ var processNextTick = require('process-nextick-args'); /**/ /**/ -var isArray = require('isarray'); +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; /**/ -Readable.ReadableState = ReadableState; +Writable.WritableState = WritableState; /**/ -var EE = require('events').EventEmitter; +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; +/**/ +var internalUtil = { + deprecate: require('util-deprecate') }; /**/ @@ -28880,52 +28609,32 @@ var Buffer = require('buffer').Buffer; var bufferShim = require('buffer-shims'); /**/ -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +util.inherits(Writable, Stream); -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ +function nop() {} -var BufferList = require('./internal/streams/BufferList'); -var StringDecoder; - -util.inherits(Readable, Stream); - -function prependListener(emitter, event, fn) { - if (typeof emitter.prependListener === 'function') { - return emitter.prependListener(event, fn); - } else { - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; - } +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; } var Duplex; -function ReadableState(options, stream) { +function WritableState(options, stream) { Duplex = Duplex || require('./_stream_duplex'); options = options || {}; - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away + // object stream flag to indicate whether or not this stream + // contains buffers or objects. this.objectMode = !!options.objectMode; - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() var hwm = options.highWaterMark; var defaultHwm = this.objectMode ? 16 : 16 * 1024; this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; @@ -28933,1661 +28642,1644 @@ function ReadableState(options, stream) { // cast to ints. this.highWaterMark = ~ ~this.highWaterMark; - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + // when 'finish' is emitted + this.finished = false; - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. this.defaultEncoding = options.defaultEncoding || 'utf8'; - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; + // a flag to see when we're in the middle of a write. + this.writing = false; - // if true, a maybeReadMore has been scheduled - this.readingMore = false; + // when true all writes will be buffered until .uncork() call + this.corked = 0; - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - if (!(this instanceof Readable)) return new Readable(options); + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; - this._readableState = new ReadableState(options, this); + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; - // legacy - this.readable = true; + // the amount that is being written when _write is called. + this.writelen = 0; - if (options && typeof options.read === 'function') this._read = options.read; + this.bufferedRequest = null; + this.lastBufferedRequest = null; - Stream.call(this); -} + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = bufferShim.from(chunk, encoding); - encoding = ''; - } - } + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - return readableAddChunk(this, state, chunk, encoding, false); -}; + // count buffered requests + this.bufferedRequestCount = 0; -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; +WritableState.prototype.getBuffer = function writableStateGetBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; }; -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') + }); + } catch (_) {} +})(); - if (!addToFront) state.reading = false; +var Duplex; +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + // Writable ctor is applied to Duplexes, though they're not + // instanceof Writable, they're instanceof Readable. + if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - if (state.needReadable) emitReadable(stream); - } - } + this._writableState = new WritableState(options, this); - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } + // legacy. + this.writable = true; - return needMoreData(state); -} + if (options) { + if (typeof options.write === 'function') this._write = options.write; -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); + if (typeof options.writev === 'function') this._writev = options.writev; + } + + Stream.call(this); } -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); }; -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + processNextTick(cb, er); } -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; +// If we get something that is not a buffer, string, null, or undefined, +// and we're not in objectMode, then that's an error. +// Otherwise stream chunks are all considered to be of length=1, and the +// watermarks determine how many objects to keep in the buffer, rather than +// how many bytes or characters. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + // Always throw error if a null is written + // if we are not in object mode then throw + // if it is not a buffer, string, or undefined. + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); } - return state.length; + if (er) { + stream.emit('error', er); + processNextTick(cb, er); + valid = false; + } + return valid; } -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; } - n = howMuchToRead(n, state); + if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, chunk, encoding, cb); } - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. + return ret; +}; - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); +Writable.prototype.cork = function () { + var state = this._writableState; - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } + state.corked++; +}; - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } +Writable.prototype.uncork = function () { + var state = this._writableState; - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; + if (state.corked) { + state.corked--; - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } +}; - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = bufferShim.from(chunk, encoding); } + return chunk; +} - if (ret !== null) this.emit('data', ret); +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, chunk, encoding, cb) { + chunk = decodeChunk(state, chunk, encoding); - return ret; -}; + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + var len = state.objectMode ? 1 : chunk.length; -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} + state.length += len; -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); } - state.ended = true; - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); + return ret; } -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; } -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) processNextTick(cb, er);else cb(er); -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } + stream._writableState.errorEmitted = true; + stream.emit('error', er); } -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; } -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; + onwriteStateUpdate(state); - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + while (entry) { + buffer[count] = entry; + entry = entry.next; + count += 1; + } + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequestCount = 0; + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function prefinish(stream, state) { + if (!state.prefinished) { + state.prefinished = true; + stream.emit('prefinish'); + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + if (state.pendingcb === 0) { + prefinish(stream, state); + state.finished = true; + stream.emit('finish'); + } else { + prefinish(stream, state); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) processNextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function (err) { + var entry = _this.entry; + _this.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = _this; + } else { + state.corkedRequestsFree = _this; + } + }; +} +}).call(this,require('_process')) + +},{"./_stream_duplex":141,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":75,"events":109,"inherits":119,"process-nextick-args":131,"util-deprecate":161}],146:[function(require,module,exports){ +module.exports = require("./lib/_stream_passthrough.js") + +},{"./lib/_stream_passthrough.js":142}],147:[function(require,module,exports){ +(function (process){ +var Stream = (function (){ + try { + return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify + } catch(_){} +}()); +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = Stream || exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; +} + +}).call(this,require('_process')) + +},{"./lib/_stream_duplex.js":141,"./lib/_stream_passthrough.js":142,"./lib/_stream_readable.js":143,"./lib/_stream_transform.js":144,"./lib/_stream_writable.js":145,"_process":132}],148:[function(require,module,exports){ +module.exports = require("./lib/_stream_transform.js") + +},{"./lib/_stream_transform.js":144}],149:[function(require,module,exports){ +module.exports = require("./lib/_stream_writable.js") + +},{"./lib/_stream_writable.js":145}],150:[function(require,module,exports){ +(function (Buffer){ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +/** @preserve +(c) 2012 by Cédric Mesnil. 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. + +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 HOLDER 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. +*/ + +// constants table +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] + +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] + +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] + +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E] +var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000] + +function bytesToWords (bytes) { + var words = [] + for (var i = 0, b = 0; i < bytes.length; i++, b += 8) { + words[b >>> 5] |= bytes[i] << (24 - b % 32) + } + return words +} + +function wordsToBytes (words) { + var bytes = [] + for (var b = 0; b < words.length * 32; b += 8) { + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF) + } + return bytes +} + +function processBlock (H, M, offset) { + // swap endian + for (var i = 0; i < 16; i++) { + var offset_i = offset + i + var M_offset_i = M[offset_i] + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ) + } + + // Working variables + var al, bl, cl, dl, el + var ar, br, cr, dr, er + + ar = al = H[0] + br = bl = H[1] + cr = cl = H[2] + dr = dl = H[3] + er = el = H[4] + + // computation + var t + for (i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0 + if (i < 16) { + t += f1(bl, cl, dl) + hl[0] + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1] + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2] + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3] + } else {// if (i<80) { + t += f5(bl, cl, dl) + hl[4] + } + t = t | 0 + t = rotl(t, sl[i]) + t = (t + el) | 0 + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = t + + t = (ar + M[offset + zr[i]]) | 0 + if (i < 16) { + t += f5(br, cr, dr) + hr[0] + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1] + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2] + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3] + } else {// if (i<80) { + t += f1(br, cr, dr) + hr[4] + } + + t = t | 0 + t = rotl(t, sr[i]) + t = (t + er) | 0 + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = t + } + + // intermediate hash value + t = (H[1] + cl + dr) | 0 + H[1] = (H[2] + dl + er) | 0 + H[2] = (H[3] + el + ar) | 0 + H[3] = (H[4] + al + br) | 0 + H[4] = (H[0] + bl + cr) | 0 + H[0] = t +} - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); +function f1 (x, y, z) { + return ((x) ^ (y) ^ (z)) +} - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } +function f2 (x, y, z) { + return (((x) & (y)) | ((~x) & (z))) +} - function onend() { - debug('onend'); - dest.end(); - } +function f3 (x, y, z) { + return (((x) | (~(y))) ^ (z)) +} - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); +function f4 (x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))) +} - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); +function f5 (x, y, z) { + return ((x) ^ ((y) | (~(z)))) +} - cleanedUp = true; +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } +function ripemd160 (message) { + var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0] - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } + if (typeof message === 'string') { + message = new Buffer(message, 'utf8') } - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } + var m = bytesToWords(message) - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); + var nBitsLeft = message.length * 8 + var nBitsTotal = message.length * 8 - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); + // Add padding + m[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32) + m[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ) - function unpipe() { - debug('unpipe'); - src.unpipe(dest); + for (var i = 0; i < m.length; i += 16) { + processBlock(H, m, i) } - // tell the dest that it's being piped to - dest.emit('pipe', src); + // swap endian + for (i = 0; i < 5; i++) { + // shortcut + var H_i = H[i] - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00) } - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; + var digestbytes = wordsToBytes(H) + return new Buffer(digestbytes) } -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } +module.exports = ripemd160 - // slow case. multiple pipe destinations. +}).call(this,require("buffer").Buffer) - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; +},{"buffer":73}],151:[function(require,module,exports){ +(function (Buffer){ +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = new Buffer(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 + this._s = 0 +} - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = new Buffer(data, enc) } - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; + var l = this._len += data.length + var s = this._s || 0 + var f = 0 + var buffer = this._block - dest.emit('unpipe', this); + while (s < l) { + var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize)) + var ch = (t - f) - return this; -}; + for (var i = 0; i < ch; i++) { + buffer[(s % this._blockSize) + i] = data[i + f] + } -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); + s += ch + f += ch - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } + if ((s % this._blockSize) === 0) { + this._update(buffer) } } + this._s = s - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); + return this } -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); +Hash.prototype.digest = function (enc) { + // Suppose the length of the message M, in bits, is l + var l = this._len * 8 + + // Append the bit 1 to the end of the message + this._block[this._len % this._blockSize] = 0x80 + + // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize + this._block.fill(0, this._len % this._blockSize + 1) + + if (l % (this._blockSize * 8) >= this._finalSize * 8) { + this._update(this._block) + this._block.fill(0) } - return this; -}; -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} + // to this append the block which is equal to the number l written in binary + // TODO: handle case where l is > Math.pow(2, 29) + this._block.writeInt32BE(l, this._blockSize - 4) -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } + var hash = this._update(this._block) || this._hash() - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); + return enc ? hash.toString(enc) : hash } -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') } -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; +module.exports = Hash - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } +}).call(this,require("buffer").Buffer) - self.push(null); - }); +},{"buffer":73}],152:[function(require,module,exports){ +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + return new Algorithm() +} - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); +exports.sha = require('./sha') +exports.sha1 = require('./sha1') +exports.sha224 = require('./sha224') +exports.sha256 = require('./sha256') +exports.sha384 = require('./sha384') +exports.sha512 = require('./sha512') - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } +},{"./sha":153,"./sha1":154,"./sha224":155,"./sha256":156,"./sha384":157,"./sha512":158}],153:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined + * in FIPS PUB 180-1 + * This source code is derived from sha1.js of the same repository. + * The difference between SHA-0 and SHA-1 is just a bitwise rotate left + * operation was added. + */ - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); +var inherits = require('inherits') +var Hash = require('./hash') - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] - return self; -}; +var W = new Array(80) -// exposed for testing purposes only. -Readable._fromList = fromList; +function Sha () { + this.init() + this._w = W -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; + Hash.call(this, 64, 56) +} - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } +inherits(Sha, Hash) - return ret; +Sha.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 + + return this } -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; +function rotl5 (num) { + return (num << 5) | (num >>> 27) } -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; +function rotl30 (num) { + return (num << 30) | (num >>> 2) } -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = bufferShim.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d } -function endReadable(stream) { - var state = stream._readableState; +Sha.prototype._update = function (M) { + var W = this._w - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16] -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); + e = d + d = c + c = rotl30(b) + b = a + a = t } -} -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 } -}).call(this,require('_process')) -},{"./_stream_duplex":152,"./internal/streams/BufferList":157,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":76,"events":110,"inherits":120,"isarray":150,"process-nextick-args":131,"string_decoder/":162,"util":45}],155:[function(require,module,exports){ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. +Sha.prototype._hash = function () { + var H = new Buffer(20) -'use strict'; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) -module.exports = Transform; + return H +} -var Duplex = require('./_stream_duplex'); +module.exports = Sha -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ +}).call(this,require("buffer").Buffer) -util.inherits(Transform, Duplex); +},{"./hash":151,"buffer":73,"inherits":119}],154:[function(require,module,exports){ +(function (Buffer){ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; +var inherits = require('inherits') +var Hash = require('./hash') - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} +var K = [ + 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0 +] -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; +var W = new Array(80) - var cb = ts.writecb; +function Sha1 () { + this.init() + this._w = W - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); + Hash.call(this, 64, 56) +} - ts.writechunk = null; - ts.writecb = null; +inherits(Sha1, Hash) - if (data !== null && data !== undefined) stream.push(data); +Sha1.prototype.init = function () { + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 - cb(er); + return this +} - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } +function rotl1 (num) { + return (num << 1) | (num >>> 31) } -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); +function rotl5 (num) { + return (num << 5) | (num >>> 27) +} - Duplex.call(this, options); +function rotl30 (num) { + return (num << 30) | (num >>> 2) +} - this._transformState = new TransformState(this); +function ft (s, b, c, d) { + if (s === 0) return (b & c) | ((~b) & d) + if (s === 2) return (b & c) | (b & d) | (c & d) + return b ^ c ^ d +} - // when the writable side finishes, then flush out anything remaining. - var stream = this; +Sha1.prototype._update = function (M) { + var W = this._w - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]) - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20) + var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0 - if (typeof options.flush === 'function') this._flush = options.flush; + e = d + d = c + c = rotl30(b) + b = a + a = t } - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 } -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; +Sha1.prototype._hash = function () { + var H = new Buffer(20) -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; + H.writeInt32BE(this._a | 0, 0) + H.writeInt32BE(this._b | 0, 4) + H.writeInt32BE(this._c | 0, 8) + H.writeInt32BE(this._d | 0, 12) + H.writeInt32BE(this._e | 0, 16) -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; + return H +} -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; +module.exports = Sha1 - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; +}).call(this,require("buffer").Buffer) -function done(stream, er) { - if (er) return stream.emit('error', er); +},{"./hash":151,"buffer":73,"inherits":119}],155:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; +var inherits = require('inherits') +var Sha256 = require('./sha256') +var Hash = require('./hash') - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); +var W = new Array(64) - if (ts.transforming) throw new Error('Calling transform done when still transforming'); +function Sha224 () { + this.init() - return stream.push(null); + this._w = W // new Array(64) + + Hash.call(this, 64, 56) } -},{"./_stream_duplex":152,"core-util-is":76,"inherits":120}],156:[function(require,module,exports){ -(function (process){ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. -'use strict'; +inherits(Sha224, Sha256) -module.exports = Writable; +Sha224.prototype.init = function () { + this._a = 0xc1059ed8 + this._b = 0x367cd507 + this._c = 0x3070dd17 + this._d = 0xf70e5939 + this._e = 0xffc00b31 + this._f = 0x68581511 + this._g = 0x64f98fa7 + this._h = 0xbefa4fa4 -/**/ -var processNextTick = require('process-nextick-args'); -/**/ + return this +} -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ +Sha224.prototype._hash = function () { + var H = new Buffer(28) -Writable.WritableState = WritableState; + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ + return H +} + +module.exports = Sha224 + +}).call(this,require("buffer").Buffer) + +},{"./hash":151,"./sha256":156,"buffer":73,"inherits":119}],156:[function(require,module,exports){ +(function (Buffer){ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ +var inherits = require('inherits') +var Hash = require('./hash') -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ +var W = new Array(64) -util.inherits(Writable, Stream); +function Sha256 () { + this.init() -function nop() {} + this._w = W // new Array(64) -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; + Hash.call(this, 64, 56) } -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; +inherits(Sha256, Hash) - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + return this +} - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} - // a flag to see when we're in the middle of a write. - this.writing = false; +Sha256.prototype._update = function (M) { + var W = this._w - // when true all writes will be buffered until .uncork() call - this.corked = 0; + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} - // the amount that is being written when _write is called. - this.writelen = 0; +Sha256.prototype._hash = function () { + var H = new Buffer(32) - this.bufferedRequest = null; - this.lastBufferedRequest = null; + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; + return H +} - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; +module.exports = Sha256 - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; +}).call(this,require("buffer").Buffer) - // count buffered requests - this.bufferedRequestCount = 0; +},{"./hash":151,"buffer":73,"inherits":119}],157:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var SHA512 = require('./sha512') +var Hash = require('./hash') - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} +var W = new Array(160) -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; +function Sha384 () { + this.init() + this._w = W -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); + Hash.call(this, 128, 112) +} -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); +inherits(Sha384, SHA512) - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); +Sha384.prototype.init = function () { + this._ah = 0xcbbb9d5d + this._bh = 0x629a292a + this._ch = 0x9159015a + this._dh = 0x152fecd8 + this._eh = 0x67332667 + this._fh = 0x8eb44a87 + this._gh = 0xdb0c2e0d + this._hh = 0x47b5481d - this._writableState = new WritableState(options, this); + this._al = 0xc1059ed8 + this._bl = 0x367cd507 + this._cl = 0x3070dd17 + this._dl = 0xf70e5939 + this._el = 0xffc00b31 + this._fl = 0x68581511 + this._gl = 0x64f98fa7 + this._hl = 0xbefa4fa4 - // legacy. - this.writable = true; + return this +} - if (options) { - if (typeof options.write === 'function') this._write = options.write; +Sha384.prototype._hash = function () { + var H = new Buffer(48) - if (typeof options.writev === 'function') this._writev = options.writev; + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) } - Stream.call(this); + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + + return H } -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; +module.exports = Sha384 -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} +}).call(this,require("buffer").Buffer) -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; -} +},{"./hash":151,"./sha512":158,"buffer":73,"inherits":119}],158:[function(require,module,exports){ +(function (Buffer){ +var inherits = require('inherits') +var Hash = require('./hash') -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } +var W = new Array(160) - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; +function Sha512 () { + this.init() + this._w = W - if (typeof cb !== 'function') cb = nop; + Hash.call(this, 128, 112) +} - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } +inherits(Sha512, Hash) - return ret; -}; +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 -Writable.prototype.cork = function () { - var state = this._writableState; + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 - state.corked++; -}; + return this +} -Writable.prototype.uncork = function () { - var state = this._writableState; +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} - if (state.corked) { - state.corked--; +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = bufferShim.from(chunk, encoding); - } - return chunk; +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) } -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} - state.length += len; +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) - return ret; -} + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); + W[i] = Wih + W[i + 1] = Wil + } - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) - onwriteStateUpdate(state); + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 } -} -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 } -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; +Sha512.prototype._hash = function () { + var H = new Buffer(64) - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } - doWrite(stream, state, true, state.length, buffer, '', holder.finish); + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; + return H +} - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } +module.exports = Sha512 - if (entry === null) state.lastBufferedRequest = null; - } +}).call(this,require("buffer").Buffer) - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} +},{"./hash":151,"buffer":73,"inherits":119}],159:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; +module.exports = Stream; -Writable.prototype._writev = null; +var EE = require('events').EventEmitter; +var inherits = require('inherits'); -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +function Stream() { + EE.call(this); } -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} +Stream.prototype.pipe = function(dest, options) { + var source = this; -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } } } - return need; -} -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } } - state.ended = true; - stream.writable = false; -} -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; + dest.on('drain', ondrain); - this.next = null; - this.entry = null; + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} -}).call(this,require('_process')) + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; -},{"./_stream_duplex":152,"_process":132,"buffer":73,"buffer-shims":71,"core-util-is":76,"events":110,"inherits":120,"process-nextick-args":131,"util-deprecate":163}],157:[function(require,module,exports){ -'use strict'; + dest.end(); + } -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ -module.exports = BufferList; + function onclose() { + if (didOnEnd) return; + didOnEnd = true; -function BufferList() { - this.head = null; - this.tail = null; - this.length = 0; -} + if (typeof dest.destroy === 'function') dest.destroy(); + } -BufferList.prototype.push = function (v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; -}; + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } -BufferList.prototype.unshift = function (v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; -}; + source.on('error', onerror); + dest.on('error', onerror); -BufferList.prototype.shift = function () { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; -}; + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); -BufferList.prototype.clear = function () { - this.head = this.tail = null; - this.length = 0; -}; + source.removeListener('end', onend); + source.removeListener('close', onclose); -BufferList.prototype.join = function (s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; -}; + source.removeListener('error', onerror); + dest.removeListener('error', onerror); -BufferList.prototype.concat = function (n) { - if (this.length === 0) return bufferShim.alloc(0); - if (this.length === 1) return this.head.data; - var ret = bufferShim.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - p.data.copy(ret, i); - i += p.data.length; - p = p.next; - } - return ret; -}; -},{"buffer":73,"buffer-shims":71}],158:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); -},{"./lib/_stream_passthrough.js":153}],159:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); + dest.removeListener('close', cleanup); + } -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} + source.on('end', cleanup); + source.on('close', cleanup); -}).call(this,require('_process')) + dest.on('close', cleanup); -},{"./lib/_stream_duplex.js":152,"./lib/_stream_passthrough.js":153,"./lib/_stream_readable.js":154,"./lib/_stream_transform.js":155,"./lib/_stream_writable.js":156,"_process":132}],160:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") + dest.emit('pipe', source); -},{"./lib/_stream_transform.js":155}],161:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; -},{"./lib/_stream_writable.js":156}],162:[function(require,module,exports){ +},{"events":109,"inherits":119,"readable-stream/duplex.js":140,"readable-stream/passthrough.js":146,"readable-stream/readable.js":147,"readable-stream/transform.js":148,"readable-stream/writable.js":149}],160:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -30810,7 +30502,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":73}],163:[function(require,module,exports){ +},{"buffer":73}],161:[function(require,module,exports){ (function (global){ /** @@ -30882,7 +30574,7 @@ function config (name) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],164:[function(require,module,exports){ +},{}],162:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -31022,7 +30714,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":119}],165:[function(require,module,exports){ +},{"indexof":118}],163:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31230,7 +30922,7 @@ function writeString(b, str) { return b; } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18,"../../lib/v1/internal/utf8":21}],166:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18,"../../lib/v1/internal/utf8":21}],164:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31370,7 +31062,7 @@ function bytes() { return b; } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/chunking":14}],167:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/chunking":14}],165:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31467,7 +31159,7 @@ describe('connector', function () { }); }); -},{"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/connector.js":15}],168:[function(require,module,exports){ +},{"../../lib/v1/internal/ch-dummy.js":11,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/connector.js":15}],166:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31498,7 +31190,6 @@ var alloc = require('../../lib/v1/internal/buf').alloc, Integer = integer.Integer; describe('packstream', function () { - it('should pack integers', function () { var n, i; // test small numbers @@ -31548,12 +31239,12 @@ describe('packstream', function () { function packAndUnpack(val, bufferSize) { bufferSize = bufferSize || 128; var buffer = alloc(bufferSize); - new Packer(buffer).packable(val)(); + new Packer(buffer).pack(val); buffer.reset(); return new Unpacker().unpack(buffer); } -},{"../../lib/v1/integer.js":9,"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18}],169:[function(require,module,exports){ +},{"../../lib/v1/integer.js":9,"../../lib/v1/internal/buf":10,"../../lib/v1/internal/packstream.js":18}],167:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31671,7 +31362,7 @@ function Resource(id, release) { }; } -},{"../../lib/v1/internal/pool":19}],170:[function(require,module,exports){ +},{"../../lib/v1/internal/pool":19}],168:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -31695,7 +31386,6 @@ function Resource(id, release) { var NodeChannel = require('../../lib/v1/internal/ch-node.js'); var neo4j = require("../../lib/v1"); var fs = require("fs"); -var path = require('path'); var hasFeature = require("../../lib/v1/internal/features"); describe('trust-signed-certificates', function () { @@ -31752,84 +31442,6 @@ describe('trust-on-first-use', function () { var driver; - it("should create known_hosts file including full path if it doesn't exist", function (done) { - // Assuming we only run this test on NodeJS with TOFU support - if (!hasFeature("trust_on_first_use")) { - done(); - return; - } - - // Given - // Non existing directory - var knownHostsDir = path.join("build", "hosts"); - var knownHostsPath = path.join(knownHostsDir, "known_hosts"); - try { - fs.unlinkSync(knownHostsPath); - } catch (_) {} - try { - fs.rmdirSync(knownHostsDir); - } catch (_) {} - - var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { - encrypted: true, - trust: "TRUST_ON_FIRST_USE", - knownHosts: knownHostsPath - }); - - // When - driver.session().run("RETURN 1").then(function () { - // Then we get to here. - // And then the known_hosts file should have been created - expect(function () { - fs.accessSync(knownHostsPath); - }).not.toThrow(); - done(); - })["catch"](function () { - // Just here to gracefully exit test on failure so we don't get timeouts - // when done() isn't called. - expect('this').toBe('to never happen'); - done(); - }); - }); - - it('should not throw an error if the host file contains two host duplicates', function (done) { - 'use strict'; - // Assuming we only run this test on NodeJS with TOFU support - if (!hasFeature("trust_on_first_use")) { - done(); - return; - } - - // Given - var knownHostsPath = "build/known_hosts"; - if (fs.existsSync(knownHostsPath)) { - fs.unlinkSync(knownHostsPath); - } - - driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { - encrypted: true, - trust: "TRUST_ON_FIRST_USE", - knownHosts: knownHostsPath - }); - - driver.session(); // write into the knownHost file - - // duplicate the same serverId twice - setTimeout(function () { - var text = fs.readFileSync(knownHostsPath, 'utf8'); - fs.writeFileSync(knownHostsPath, text + text); - }, 1000); - - // When - setTimeout(function () { - driver.session().run("RETURN true AS a").then(function (data) { - // Then we get to here. - expect(data.records[0].get('a')).toBe(true); - done(); - }); - }, 2000); - }); - it('should accept previously un-seen hosts', function (done) { // Assuming we only run this test on NodeJS with TOFU support if (!hasFeature("trust_on_first_use")) { @@ -31858,53 +31470,6 @@ describe('trust-on-first-use', function () { }); }); - it('should not duplicate fingerprint entries', function (done) { - // Assuming we only run this test on NodeJS with TOFU support - if (!hasFeature("trust_on_first_use")) { - done(); - return; - } - - // Given - var knownHostsPath = "build/known_hosts"; - if (fs.existsSync(knownHostsPath)) { - fs.unlinkSync(knownHostsPath); - } - fs.writeFileSync(knownHostsPath, ''); - - driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j"), { - encrypted: true, - trust: "TRUST_ON_FIRST_USE", - knownHosts: knownHostsPath - }); - - // When - driver.session(); - driver.session(); - - // Then - setTimeout(function () { - var lines = {}; - fs.readFileSync(knownHostsPath, 'utf8').split('\n').filter(function (line) { - return !!line.trim(); - }).forEach(function (line) { - if (!lines[line]) { - lines[line] = 0; - } - lines[line]++; - }); - - var duplicatedLines = Object.keys(lines).map(function (line) { - return lines[line]; - }).filter(function (count) { - return count > 1; - }).length; - - expect(duplicatedLines).toBe(0); - done(); - }, 1000); - }); - it('should should give helpful error if database cert does not match stored certificate', function (done) { // Assuming we only run this test on NodeJS with TOFU support if (!hasFeature("trust_on_first_use")) { @@ -31935,7 +31500,7 @@ describe('trust-on-first-use', function () { }); }); -},{"../../lib/v1":8,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/features":16,"fs":70,"path":129}],171:[function(require,module,exports){ +},{"../../lib/v1":8,"../../lib/v1/internal/ch-node.js":12,"../../lib/v1/internal/features":16,"fs":70}],169:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32099,7 +31664,7 @@ function packAndUnpack(str) { return utf8.decode(buffer, buffer.length); } -},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/utf8":21}],172:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":10,"../../lib/v1/internal/utf8":21}],170:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32151,37 +31716,9 @@ describe('driver', function () { // When driver.session(); }); - - it('should fail early on wrong credentials', function (done) { - // Given - var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "who would use such a password")); - - // Expect - driver.onError = function (err) { - //the error message is different whether in browser or node - expect(err.fields[0].code).toEqual('Neo.ClientError.Security.Unauthorized'); - done(); - }; - - // When - driver.session(); - }); - - it('should indicate success early on correct credentials', function (done) { - // Given - var driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", "neo4j")); - - // Expect - driver.onCompleted = function (meta) { - done(); - }; - - // When - driver.session(); - }); }); -},{"../../lib/v1":8}],173:[function(require,module,exports){ +},{"../../lib/v1":8}],171:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32265,7 +31802,7 @@ describe('Record', function () { }); }); -},{"../../lib/v1/error":6,"../../lib/v1/record":22}],174:[function(require,module,exports){ +},{"../../lib/v1/error":6,"../../lib/v1/record":22}],172:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32327,7 +31864,7 @@ describe('result stream', function () { }); }); -},{"../../lib/v1":8}],175:[function(require,module,exports){ +},{"../../lib/v1":8}],173:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32599,23 +32136,9 @@ describe('session', function () { }, 1000); }, 1500); }); - - it('should fail nicely on unpackable values ', function (done) { - // Given - var unpackable = function unpackable() { - throw Error(); - }; - - var statement = "RETURN {param}"; - var params = { param: unpackable }; - // When & Then - session.run(statement, params)["catch"](function (ignore) { - done(); - }); - }); }); -},{"../../lib/v1":8,"../../lib/v1/result-summary":23,"../../lib/v1/session":25}],176:[function(require,module,exports){ +},{"../../lib/v1":8,"../../lib/v1/result-summary":23,"../../lib/v1/session":25}],174:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32814,7 +32337,7 @@ describe('transaction', function () { }); }); -},{"../../lib/v1":8}],177:[function(require,module,exports){ +},{"../../lib/v1":8}],175:[function(require,module,exports){ /** * Copyright (c) 2002-2016 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] @@ -32966,5 +32489,5 @@ function testVal(val, expected) { }; } -},{"../../lib/v1":8}]},{},[165,166,167,168,169,170,171,172,173,174,175,176,177]) -//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvZXM2LXByb21pc2UuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvZHJpdmVyLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvZXJyb3IuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9ncmFwaC10eXBlcy5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2luZGV4LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZWdlci5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2J1Zi5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLWR1bW15LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NodW5raW5nLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvY29ubmVjdG9yLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9sb2cuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvcG9vbC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlci5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3V0ZjguanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZWNvcmQuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZXN1bHQtc3VtbWFyeS5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Jlc3VsdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Nlc3Npb24uanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS90cmFuc2FjdGlvbi5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3ZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2FwaS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvYnVmZmVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2Uvbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvcmVwb3J0ZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9wZW0uanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL3BlbS5qcyIsIm5vZGVfbW9kdWxlcy9iYXNlNjQtanMvbGliL2I2NC5qcyIsIm5vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanMiLCJub2RlX21vZHVsZXMvYnJvcmFuZC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyLXJlc29sdmUvZW1wdHkuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NiYy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiMS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmI4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2N0ci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9lY2IuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvb2ZiLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL3N0cmVhbUNpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWNpcGhlci9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktZGVzL21vZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktcnNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9hbGdvcy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9zaWduLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi92ZXJpZnkuanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXNoaW1zL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci14b3IvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jaXBoZXItYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvbWQ1LmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZWRlLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2RoLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9nZW5lcmF0ZVByaW1lLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9wcmltZXMuanNvbiIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvaG1hYy1kcmJnLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9wcmVjb21wdXRlZC9zZWNwMjU2azEuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL3BhY2thZ2UuanNvbiIsIm5vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwibm9kZV9tb2R1bGVzL2V2cF9ieXRlc3Rva2V5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2guanMiLCJub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9jb21tb24uanMiLCJub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9obWFjLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvcmlwZW1kLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvaWVlZTc1NC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmRleG9mL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvaXMtYnVmZmVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbGxlci1yYWJpbi9saWIvbXIuanMiLCJub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWFzc2VydC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9vcy1icm93c2VyaWZ5L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hZXNpZC5qc29uIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2ZpeFByb2MuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yaXBlbWQxNjAvbGliL3JpcGVtZDE2MC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyNTYuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhNTEyLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9zdHJpbmdfZGVjb2Rlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3ZtLWJyb3dzZXJpZnkvaW5kZXguanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvYnVmLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY2h1bmtpbmcudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9jb25uZWN0b3IudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9wYWNrc3RyZWFtLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvcG9vbC50ZXN0LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3Rscy50ZXN0LmpzIiwiL1VzZXJzL2V2ZWJyaWdodC9kZXZlbG9wbWVudC9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3V0ZjgudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9kcml2ZXIudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9yZWNvcmQudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9yZXN1bHQudGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9zZXNzaW9uLnRlc3QuanMiLCIvVXNlcnMvZXZlYnJpZ2h0L2RldmVsb3BtZW50L25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvdjEvdHJhbnNhY3Rpb24udGVzdC5qcyIsIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS90eXBlcy50ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNTVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcGdHQSxZQUFZLENBQUM7O0FBRWIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQzNDLE9BQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyxDQUFDOztBQUVILElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQUUsTUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEFBQUMsU0FBUyxFQUFFLE9BQU8sTUFBTSxFQUFFO0FBQUUsUUFBSSxNQUFNLEdBQUcsR0FBRztRQUFFLFFBQVEsR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUcsQ0FBQyxBQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQUFBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEFBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUFFLGVBQU8sU0FBUyxDQUFDO09BQUUsTUFBTTtBQUFFLFdBQUcsR0FBRyxNQUFNLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVycEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZO0FBQUUsV0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQUUsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFD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TyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcDBCcEMsWUFBWSxDQUFDOztBQUViLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQzs7QUFFSCxJQUFJLElBQUksR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUFFLE1BQUksTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLFNBQVMsRUFBRSxPQUFPLE1BQU0sRUFBRTtBQUFFLFFBQUksTUFBTSxHQUFHLEVBQUU7UUFBRSxRQUFRLEdBQUcsR0FBRztRQUFFLFFBQVEsR0FBRyxHQUFHLENBQUMsQUFBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEFBQUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxBQUFDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUFFLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FBQztPQUFFLE1BQU07QUFBRSxVQUFFLEdBQUcsTUFBTSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEFBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsQUFBQyxTQUFTLFNBQVMsQ0FBQztPQUFFO0tBQUUsTUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7QUFBRSxhQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7S0FBRSxNQUFNO0FBQUUsVUFBSSxNQUFN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QVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuQyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN2QyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxVQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ2xDOzs7Ozs7R0FNRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUMvQixVQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7QUFDM0IsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkMsVUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxD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QyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQy9CLFdBQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BFLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3BCLFlBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ25CLENBQUM7R0FDSDtBQUNELFlBQVUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQzdDLFdBQU8sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDM0UsWUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDcEIsWUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7S0FDbkIsQ0FBQztHQUNIO0FBQ0QsTUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7QUFDakMsUUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDNUIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzNCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkIsUUFBUSxHQUFHLEVBQUUsQ0FBQzs7QUFFbEIsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMzQyxVQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1VBQ3RCLFFBQVEsR0FBRyxLQUFLLENB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QUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ3pCLE1BQU0sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0QsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsWUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDekIsTUFBTSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDOUQsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDMUIsTUFBTSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDdEUsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsWUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7T0FDMUIsTUFBTTtBQUNMLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVCLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLFlBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQzFCO0tBQ0Y7R0FDRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFdBQVc7QUFDaEIsU0FBSyxFQUFFLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRTtBQUMzQixVQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxR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QUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztPQUM5RCxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUMzQixlQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3BELE1BQU0sSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzVCLGVBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDckQsTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFDNUIsZUFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNyRCxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtBQUMxQixlQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ25ELE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO0FBQzNCLGVBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDcEQsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDM0IsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNwRCxNQUFNLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUM3QixlQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3RELE1BQU0sSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQzlCLGVBQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxF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QUFFLFlBQVksRUFBRTtBQUMzQyxPQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMsQ0FBQztBQUNILE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUM5QyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzs7O0FDaENwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNybkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuMkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pEQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzVnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNoUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2WEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzV3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM3U0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcGpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDalFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3JHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNyRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzdGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN0SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMvSEE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3g2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNuTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM3Z0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9EQTtBQUNBOzs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDaEJBO0FBQ0E7O0FDREE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzdOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZIQSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDdkQsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsY0FBYyxDQUFDO0FBQ3pFLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQ2pELElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzs7QUFFdkUsUUFBUSxDQUFDLFNBQVMsRUFBRSxZQUFXO0FBQzdCLElBQUUsQ0FBQyw4QkFBOEIsRUFBRSxZQUFXOztBQUU1QyxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsS0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNmLEtBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hCLEtBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7OztBQUdqQixRQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkIsUUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDOzs7QUFHcEIsVUFBTSxDQUFFLEdBQUcsQ0FBRSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pELFVBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7R0FDbEMsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQywrQ0FBK0MsRUFBRSxZQUFXOztBQUU3RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUIsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsUUFBUSxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR25CLFlBQU0sQ0FBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ25DO0dBQ0YsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyxnREFBZ0QsRUFBRSxZQUFXOztBQUU5RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsU0FBUyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR3BCLFlBQU0sQ0FBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ3BDO0dBQ0YsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyxnREFBZ0QsRUFBRSxZQUFXOztBQUU5RCxRQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRWpCLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7OztBQUd2QixPQUFDLENBQUMsU0FBUyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQzs7O0FBR3BCLFlBQU0sQ0FBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDO0tBQ3BDO0dBQ0Ys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QyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7S0FBRSxDQUFDLENBQUM7R0FDakQsQ0FBQTtDQUNGIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qIVxuICogQG92ZXJ2aWV3IGVzNi1wcm9taXNlIC0gYSB0aW55IGltcGxlbWVudGF0aW9uIG9mIFByb21pc2VzL0ErLlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTQgWWVodWRhIEthdHosIFRvbSBEYWxlLCBTdGVmYW4gUGVubmVyIGFuZCBjb250cmlidXRvcnMgKENvbnZlcnNpb24gdG8gRVM2IEFQSSBieSBKYWtlIEFyY2hpYmFsZClcbiAqIEBsaWNlbnNlICAgTGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2VcbiAqICAgICAgICAgICAgU2VlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qYWtlYXJjaGliYWxkL2VzNi1wcm9taXNlL21hc3Rlci9MSUNFTlNFXG4gKiBAdmVyc2lvbiAgIDMuMC4yXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4oZnVuY3Rpb24gKCkge1xuICBcInVzZSBzdHJpY3RcIjtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRvYmplY3RPckZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNNYXliZVRoZW5hYmxlKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGw7XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheTtcbiAgaWYgKCFBcnJheS5pc0FycmF5KSB7XG4gICAgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheSA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0FycmF5ID0gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRfaXNBcnJheTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPSAwO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJHRvU3RyaW5nID0gKHt9KS50b1N0cmluZztcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQ7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkY3VzdG9tU2NoZWR1bGVyRm47XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwID0gZnVuY3Rpb24gYXNhcChjYWxsYmFjaywgYXJnKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2xpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW5dID0gY2FsbGJhY2s7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2xpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gKyAxXSA9IGFyZztcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuICs9IDI7XG4gICAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPT09IDIpIHtcbiAgICAgIC8vIElmIGxlbiBpcyAyLCB0aGF0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byBzY2hlZHVsZSBhbiBhc3luYyBmbHVzaC5cbiAgICAgIC8vIElmIGFkZGl0aW9uYWwgY2FsbGJhY2tzIGFyZSBxdWV1ZWQgYmVmb3JlIHRoZSBxdWV1ZSBpcyBmbHVzaGVkLCB0aGV5XG4gICAgICAvLyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIGZsdXNoIHRoYXQgd2UgYXJlIHNjaGVkdWxpbmcuXG4gICAgICBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbihsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHNjaGVkdWxlRmx1c2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldFNjaGVkdWxlcihzY2hlZHVsZUZuKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuID0gc2NoZWR1bGVGbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRBc2FwKGFzYXBGbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwID0gYXNhcEZuO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB1bmRlZmluZWQ7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3Nlckdsb2JhbCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93IHx8IHt9O1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3Nlckdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGlzTm9kZSA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiAoe30pLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJztcblxuICAvLyB0ZXN0IGZvciB3ZWIgd29ya2VyIGJ1dCBub3QgaW4gSUUxMFxuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGlzV29ya2VyID0gdHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIE1lc3NhZ2VDaGFubmVsICE9PSAndW5kZWZpbmVkJztcblxuICAvLyBub2RlXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VOZXh0VGljaygpIHtcbiAgICAvLyBub2RlIHZlcnNpb24gMC4xMC54IGRpc3BsYXlzIGEgZGVwcmVjYXRpb24gd2FybmluZyB3aGVuIG5leHRUaWNrIGlzIHVzZWQgcmVjdXJzaXZlbHlcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2N1am9qcy93aGVuL2lzc3Vlcy80MTAgZm9yIGRldGFpbHNcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICAvLyB2ZXJ0eFxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlVmVydHhUaW1lcigpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHZlcnR4TmV4dChsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTXV0YXRpb25PYnNlcnZlcigpIHtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDA7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlcihsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gpO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IGl0ZXJhdGlvbnMgPSArK2l0ZXJhdGlvbnMgJSAyO1xuICAgIH07XG4gIH1cblxuICAvLyB3ZWIgd29ya2VyXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VNZXNzYWdlQ2hhbm5lbCgpIHtcbiAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKDApO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlU2V0VGltZW91dCgpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2V0VGltZW91dChsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2gsIDEpO1xuICAgIH07XG4gIH1cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlID0gbmV3IEFycmF5KDEwMDApO1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkZmx1c2goKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuOyBpICs9IDIpIHtcbiAgICAgIHZhciBjYWxsYmFjayA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtpXTtcbiAgICAgIHZhciBhcmcgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaSArIDFdO1xuXG4gICAgICBjYWxsYmFjayhhcmcpO1xuXG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaV0gPSB1bmRlZmluZWQ7XG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaSArIDFdID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRsZW4gPSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJGF0dGVtcHRWZXJ0eCgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIHIgPSByZXF1aXJlO1xuICAgICAgdmFyIHZlcnR4ID0gcigndmVydHgnKTtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQgPSB2ZXJ0eC5ydW5Pbkxvb3AgfHwgdmVydHgucnVuT25Db250ZXh0O1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VWZXJ0eFRpbWVyKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VTZXRUaW1lb3V0KCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoO1xuICAvLyBEZWNpZGUgd2hhdCBhc3luYyBtZXRob2QgdG8gdXNlIHRvIHRyaWdnZXJpbmcgcHJvY2Vzc2luZyBvZiBxdWV1ZWQgY2FsbGJhY2tzOlxuICBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGlzTm9kZSkge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU5leHRUaWNrKCk7XG4gIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJEJyb3dzZXJNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHNjaGVkdWxlRmx1c2ggPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTXV0YXRpb25PYnNlcnZlcigpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc1dvcmtlcikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU1lc3NhZ2VDaGFubmVsKCk7XG4gIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJXaW5kb3cgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGF0dGVtcHRWZXJ0eCgpO1xuICB9IGVsc2Uge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVNldFRpbWVvdXQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3AoKSB7fVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HID0gdm9pZCAwO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEID0gMTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEID0gMjtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IgPSBuZXcgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRXJyb3JPYmplY3QoKTtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzZWxmRnVsZmlsbG1lbnQoKSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoXCJZb3UgY2Fubm90IHJlc29sdmUgYSBwcm9taXNlIHdpdGggaXRzZWxmXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkY2Fubm90UmV0dXJuT3duKCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKCdBIHByb21pc2VzIGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuJyk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRnZXRUaGVuKHByb21pc2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHByb21pc2UudGhlbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRHRVRfVEhFTl9FUlJPUjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlUaGVuKHRoZW4sIHZhbHVlLCBmdWxmaWxsbWVudEhhbmRsZXIsIHJlamVjdGlvbkhhbmRsZXIpIHtcbiAgICB0cnkge1xuICAgICAgdGhlbi5jYWxsKHZhbHVlLCBmdWxmaWxsbWVudEhhbmRsZXIsIHJlamVjdGlvbkhhbmRsZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZUZvcmVpZ25UaGVuYWJsZShwcm9taXNlLCB0aGVuYWJsZSwgdGhlbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICB2YXIgc2VhbGVkID0gZmFsc2U7XG4gICAgICB2YXIgZXJyb3IgPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlUaGVuKHRoZW4sIHRoZW5hYmxlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHNlYWxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWFsZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhlbmFibGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgaWYgKHNlYWxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWFsZWQgPSB0cnVlO1xuXG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgICAgfSwgJ1NldHRsZTogJyArIChwcm9taXNlLl9sYWJlbCB8fCAnIHVua25vd24gcHJvbWlzZScpKTtcblxuICAgICAgaWYgKCFzZWFsZWQgJiYgZXJyb3IpIHtcbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LCBwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZU93blRoZW5hYmxlKHByb21pc2UsIHRoZW5hYmxlKSB7XG4gICAgaWYgKHRoZW5hYmxlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIHRoZW5hYmxlLl9yZXN1bHQpO1xuICAgIH0gZWxzZSBpZiAodGhlbmFibGUuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHRoZW5hYmxlLl9yZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUodGhlbmFibGUsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGhhbmRsZU1heWJlVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSkge1xuICAgIGlmIChtYXliZVRoZW5hYmxlLmNvbnN0cnVjdG9yID09PSBwcm9taXNlLmNvbnN0cnVjdG9yKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVPd25UaGVuYWJsZShwcm9taXNlLCBtYXliZVRoZW5hYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRoZW4gPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRnZXRUaGVuKG1heWJlVGhlbmFibGUpO1xuXG4gICAgICBpZiAodGhlbiA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1IpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SLmVycm9yKTtcbiAgICAgIH0gZWxzZSBpZiAodGhlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSk7XG4gICAgICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNGdW5jdGlvbih0aGVuKSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVGb3JlaWduVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSwgdGhlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIG1heWJlVGhlbmFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpIHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzZWxmRnVsZmlsbG1lbnQoKSk7XG4gICAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJG9iamVjdE9yRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVNYXliZVRoZW5hYmxlKHByb21pc2UsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaFJlamVjdGlvbihwcm9taXNlKSB7XG4gICAgaWYgKHByb21pc2UuX29uZXJyb3IpIHtcbiAgICAgIHByb21pc2UuX29uZXJyb3IocHJvbWlzZS5fcmVzdWx0KTtcbiAgICB9XG5cbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoKHByb21pc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSkge1xuICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX3Jlc3VsdCA9IHZhbHVlO1xuICAgIHByb21pc2UuX3N0YXRlID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEO1xuXG4gICAgaWYgKHByb21pc2UuX3N1YnNjcmliZXJzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaCwgcHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbikge1xuICAgIGlmIChwcm9taXNlLl9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcm9taXNlLl9zdGF0ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEO1xuICAgIHByb21pc2UuX3Jlc3VsdCA9IHJlYXNvbjtcblxuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2hSZWplY3Rpb24sIHByb21pc2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHBhcmVudCwgY2hpbGQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKSB7XG4gICAgdmFyIHN1YnNjcmliZXJzID0gcGFyZW50Ll9zdWJzY3JpYmVycztcbiAgICB2YXIgbGVuZ3RoID0gc3Vic2NyaWJlcnMubGVuZ3RoO1xuXG4gICAgcGFyZW50Ll9vbmVycm9yID0gbnVsbDtcblxuICAgIHN1YnNjcmliZXJzW2xlbmd0aF0gPSBjaGlsZDtcbiAgICBzdWJzY3JpYmVyc1tsZW5ndGggKyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRURdID0gb25GdWxmaWxsbWVudDtcbiAgICBzdWJzY3JpYmVyc1tsZW5ndGggKyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRF0gPSBvblJlamVjdGlvbjtcblxuICAgIGlmIChsZW5ndGggPT09IDAgJiYgcGFyZW50Ll9zdGF0ZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaCwgcGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoKHByb21pc2UpIHtcbiAgICB2YXIgc3Vic2NyaWJlcnMgPSBwcm9taXNlLl9zdWJzY3JpYmVycztcbiAgICB2YXIgc2V0dGxlZCA9IHByb21pc2UuX3N0YXRlO1xuXG4gICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjaGlsZCxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGRldGFpbCA9IHByb21pc2UuX3Jlc3VsdDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2NyaWJlcnMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgIGNoaWxkID0gc3Vic2NyaWJlcnNbaV07XG4gICAgICBjYWxsYmFjayA9IHN1YnNjcmliZXJzW2kgKyBzZXR0bGVkXTtcblxuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHNldHRsZWQsIGNoaWxkLCBjYWxsYmFjaywgZGV0YWlsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKGRldGFpbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvbWlzZS5fc3Vic2NyaWJlcnMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEVycm9yT2JqZWN0KCkge1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUiA9IG5ldyBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRFcnJvck9iamVjdCgpO1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHRyeUNhdGNoKGNhbGxiYWNrLCBkZXRhaWwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGRldGFpbCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SLmVycm9yID0gZTtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRUUllfQ0FUQ0hfRVJST1I7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaW52b2tlQ2FsbGJhY2soc2V0dGxlZCwgcHJvbWlzZSwgY2FsbGJhY2ssIGRldGFpbCkge1xuICAgIHZhciBoYXNDYWxsYmFjayA9IGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNGdW5jdGlvbihjYWxsYmFjayksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgc3VjY2VlZGVkLFxuICAgICAgICBmYWlsZWQ7XG5cbiAgICBpZiAoaGFzQ2FsbGJhY2spIHtcbiAgICAgIHZhbHVlID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5Q2F0Y2goY2FsbGJhY2ssIGRldGFpbCk7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SKSB7XG4gICAgICAgIGZhaWxlZCA9IHRydWU7XG4gICAgICAgIGVycm9yID0gdmFsdWUuZXJyb3I7XG4gICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9taXNlID09PSB2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkY2Fubm90UmV0dXJuT3duKCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZGV0YWlsO1xuICAgICAgc3VjY2VlZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIC8vIG5vb3BcbiAgICB9IGVsc2UgaWYgKGhhc0NhbGxiYWNrICYmIHN1Y2NlZWRlZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoZmFpbGVkKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9IGVsc2UgaWYgKHNldHRsZWQgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2V0dGxlZCA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGluaXRpYWxpemVQcm9taXNlKHByb21pc2UsIHJlc29sdmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc29sdmVyKGZ1bmN0aW9uIHJlc29sdmVQcm9taXNlKHZhbHVlKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSwgZnVuY3Rpb24gcmVqZWN0UHJvbWlzZShyZWFzb24pIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IoQ29uc3RydWN0b3IsIGlucHV0KSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgZW51bWVyYXRvci5faW5zdGFuY2VDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAgIGVudW1lcmF0b3IucHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcblxuICAgIGlmIChlbnVtZXJhdG9yLl92YWxpZGF0ZUlucHV0KGlucHV0KSkge1xuICAgICAgZW51bWVyYXRvci5faW5wdXQgPSBpbnB1dDtcbiAgICAgIGVudW1lcmF0b3IubGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgICAgZW51bWVyYXRvci5fcmVtYWluaW5nID0gaW5wdXQubGVuZ3RoO1xuXG4gICAgICBlbnVtZXJhdG9yLl9pbml0KCk7XG5cbiAgICAgIGlmIChlbnVtZXJhdG9yLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudW1lcmF0b3IubGVuZ3RoID0gZW51bWVyYXRvci5sZW5ndGggfHwgMDtcbiAgICAgICAgZW51bWVyYXRvci5fZW51bWVyYXRlKCk7XG4gICAgICAgIGlmIChlbnVtZXJhdG9yLl9yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QoZW51bWVyYXRvci5wcm9taXNlLCBlbnVtZXJhdG9yLl92YWxpZGF0aW9uRXJyb3IoKSk7XG4gICAgfVxuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheShpbnB1dCk7XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl92YWxpZGF0aW9uRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcignQXJyYXkgTWV0aG9kcyBtdXN0IGJlIHByb3ZpZGVkIGFuIEFycmF5Jyk7XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX3Jlc3VsdCA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3I7XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9lbnVtZXJhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgdmFyIGxlbmd0aCA9IGVudW1lcmF0b3IubGVuZ3RoO1xuICAgIHZhciBwcm9taXNlID0gZW51bWVyYXRvci5wcm9taXNlO1xuICAgIHZhciBpbnB1dCA9IGVudW1lcmF0b3IuX2lucHV0O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HICYmIGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgZW51bWVyYXRvci5fZWFjaEVudHJ5KGlucHV0W2ldLCBpKTtcbiAgICB9XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9lYWNoRW50cnkgPSBmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG4gICAgdmFyIGMgPSBlbnVtZXJhdG9yLl9pbnN0YW5jZUNvbnN0cnVjdG9yO1xuXG4gICAgaWYgKGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNNYXliZVRoZW5hYmxlKGVudHJ5KSkge1xuICAgICAgaWYgKGVudHJ5LmNvbnN0cnVjdG9yID09PSBjICYmIGVudHJ5Ll9zdGF0ZSAhPT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORykge1xuICAgICAgICBlbnRyeS5fb25lcnJvciA9IG51bGw7XG4gICAgICAgIGVudW1lcmF0b3IuX3NldHRsZWRBdChlbnRyeS5fc3RhdGUsIGksIGVudHJ5Ll9yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW51bWVyYXRvci5fd2lsbFNldHRsZUF0KGMucmVzb2x2ZShlbnRyeSksIGkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbnVtZXJhdG9yLl9yZW1haW5pbmctLTtcbiAgICAgIGVudW1lcmF0b3IuX3Jlc3VsdFtpXSA9IGVudHJ5O1xuICAgIH1cbiAgfTtcblxuICBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkRW51bWVyYXRvci5wcm90b3R5cGUuX3NldHRsZWRBdCA9IGZ1bmN0aW9uIChzdGF0ZSwgaSwgdmFsdWUpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG4gICAgdmFyIHByb21pc2UgPSBlbnVtZXJhdG9yLnByb21pc2U7XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIGVudW1lcmF0b3IuX3JlbWFpbmluZy0tO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnVtZXJhdG9yLl9yZXN1bHRbaV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW51bWVyYXRvci5fcmVtYWluaW5nID09PSAwKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgfVxuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fd2lsbFNldHRsZUF0ID0gZnVuY3Rpb24gKHByb21pc2UsIGkpIHtcbiAgICB2YXIgZW51bWVyYXRvciA9IHRoaXM7XG5cbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUocHJvbWlzZSwgdW5kZWZpbmVkLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIGVudW1lcmF0b3IuX3NldHRsZWRBdChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQsIGksIHZhbHVlKTtcbiAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQsIGksIHJlYXNvbik7XG4gICAgfSk7XG4gIH07XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkYWxsKGVudHJpZXMpIHtcbiAgICByZXR1cm4gbmV3IGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRkZWZhdWx0KHRoaXMsIGVudHJpZXMpLnByb21pc2U7XG4gIH1cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJGFsbCQkYWxsO1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRyYWNlKGVudHJpZXMpIHtcbiAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcblxuICAgIGlmICghbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0FycmF5KGVudHJpZXMpKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbmV3IFR5cGVFcnJvcignWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLicpKTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcblxuICAgIGZ1bmN0aW9uIG9uRnVsZmlsbG1lbnQodmFsdWUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uUmVqZWN0aW9uKHJlYXNvbikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HICYmIGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKENvbnN0cnVjdG9yLnJlc29sdmUoZW50cmllc1tpXSksIHVuZGVmaW5lZCwgb25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkcmFjZTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkcmVzb2x2ZShvYmplY3QpIHtcbiAgICAvKmpzaGludCB2YWxpZHRoaXM6dHJ1ZSAqL1xuICAgIHZhciBDb25zdHJ1Y3RvciA9IHRoaXM7XG5cbiAgICBpZiAob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdC5jb25zdHJ1Y3RvciA9PT0gQ29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCBvYmplY3QpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZXNvbHZlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkcmVzb2x2ZTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRyZWplY3QocmVhc29uKSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gbmV3IENvbnN0cnVjdG9yKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3ApO1xuICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZWplY3QkJGRlZmF1bHQgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyZWplY3QkJHJlamVjdDtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGNvdW50ZXIgPSAwO1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc1Jlc29sdmVyKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYSByZXNvbHZlciBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIHByb21pc2UgY29uc3RydWN0b3InKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc05ldygpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uXCIpO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2U7XG4gIC8qKlxuICAgIFByb21pc2Ugb2JqZWN0cyByZXByZXNlbnQgdGhlIGV2ZW50dWFsIHJlc3VsdCBvZiBhbiBhc3luY2hyb25vdXMgb3BlcmF0aW9uLiBUaGVcbiAgICBwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyBgdGhlbmAgbWV0aG9kLCB3aGljaFxuICAgIHJlZ2lzdGVycyBjYWxsYmFja3MgdG8gcmVjZWl2ZSBlaXRoZXIgYSBwcm9taXNlJ3MgZXZlbnR1YWwgdmFsdWUgb3IgdGhlIHJlYXNvblxuICAgIHdoeSB0aGUgcHJvbWlzZSBjYW5ub3QgYmUgZnVsZmlsbGVkLlxuICAgICBUZXJtaW5vbG9neVxuICAgIC0tLS0tLS0tLS0tXG4gICAgIC0gYHByb21pc2VgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB3aXRoIGEgYHRoZW5gIG1ldGhvZCB3aG9zZSBiZWhhdmlvciBjb25mb3JtcyB0byB0aGlzIHNwZWNpZmljYXRpb24uXG4gICAgLSBgdGhlbmFibGVgIGlzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYSBgdGhlbmAgbWV0aG9kLlxuICAgIC0gYHZhbHVlYCBpcyBhbnkgbGVnYWwgSmF2YVNjcmlwdCB2YWx1ZSAoaW5jbHVkaW5nIHVuZGVmaW5lZCwgYSB0aGVuYWJsZSwgb3IgYSBwcm9taXNlKS5cbiAgICAtIGBleGNlcHRpb25gIGlzIGEgdmFsdWUgdGhhdCBpcyB0aHJvd24gdXNpbmcgdGhlIHRocm93IHN0YXRlbWVudC5cbiAgICAtIGByZWFzb25gIGlzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2h5IGEgcHJvbWlzZSB3YXMgcmVqZWN0ZWQuXG4gICAgLSBgc2V0dGxlZGAgdGhlIGZpbmFsIHJlc3Rpbmcgc3RhdGUgb2YgYSBwcm9taXNlLCBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuXG4gICAgIEEgcHJvbWlzZSBjYW4gYmUgaW4gb25lIG9mIHRocmVlIHN0YXRlczogcGVuZGluZywgZnVsZmlsbGVkLCBvciByZWplY3RlZC5cbiAgICAgUHJvbWlzZXMgdGhhdCBhcmUgZnVsZmlsbGVkIGhhdmUgYSBmdWxmaWxsbWVudCB2YWx1ZSBhbmQgYXJlIGluIHRoZSBmdWxmaWxsZWRcbiAgICBzdGF0ZS4gIFByb21pc2VzIHRoYXQgYXJlIHJlamVjdGVkIGhhdmUgYSByZWplY3Rpb24gcmVhc29uIGFuZCBhcmUgaW4gdGhlXG4gICAgcmVqZWN0ZWQgc3RhdGUuICBBIGZ1bGZpbGxtZW50IHZhbHVlIGlzIG5ldmVyIGEgdGhlbmFibGUuXG4gICAgIFByb21pc2VzIGNhbiBhbHNvIGJlIHNhaWQgdG8gKnJlc29sdmUqIGEgdmFsdWUuICBJZiB0aGlzIHZhbHVlIGlzIGFsc28gYVxuICAgIHByb21pc2UsIHRoZW4gdGhlIG9yaWdpbmFsIHByb21pc2UncyBzZXR0bGVkIHN0YXRlIHdpbGwgbWF0Y2ggdGhlIHZhbHVlJ3NcbiAgICBzZXR0bGVkIHN0YXRlLiAgU28gYSBwcm9taXNlIHRoYXQgKnJlc29sdmVzKiBhIHByb21pc2UgdGhhdCByZWplY3RzIHdpbGxcbiAgICBpdHNlbGYgcmVqZWN0LCBhbmQgYSBwcm9taXNlIHRoYXQgKnJlc29sdmVzKiBhIHByb21pc2UgdGhhdCBmdWxmaWxscyB3aWxsXG4gICAgaXRzZWxmIGZ1bGZpbGwuXG4gICAgICBCYXNpYyBVc2FnZTpcbiAgICAtLS0tLS0tLS0tLS1cbiAgICAgYGBganNcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgLy8gb24gc3VjY2Vzc1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgLy8gb24gZmFpbHVyZVxuICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgfSk7XG4gICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgLy8gb24gZnVsZmlsbG1lbnRcbiAgICB9LCBmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgIC8vIG9uIHJlamVjdGlvblxuICAgIH0pO1xuICAgIGBgYFxuICAgICBBZHZhbmNlZCBVc2FnZTpcbiAgICAtLS0tLS0tLS0tLS0tLS1cbiAgICAgUHJvbWlzZXMgc2hpbmUgd2hlbiBhYnN0cmFjdGluZyBhd2F5IGFzeW5jaHJvbm91cyBpbnRlcmFjdGlvbnMgc3VjaCBhc1xuICAgIGBYTUxIdHRwUmVxdWVzdGBzLlxuICAgICBgYGBqc1xuICAgIGZ1bmN0aW9uIGdldEpTT04odXJsKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KXtcbiAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCk7XG4gICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2pzb24nO1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgICAgeGhyLnNlbmQoKTtcbiAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZXIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PT0gdGhpcy5ET05FKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICByZXNvbHZlKHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignZ2V0SlNPTjogYCcgKyB1cmwgKyAnYCBmYWlsZWQgd2l0aCBzdGF0dXM6IFsnICsgdGhpcy5zdGF0dXMgKyAnXScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgIGdldEpTT04oJy9wb3N0cy5qc29uJykudGhlbihmdW5jdGlvbihqc29uKSB7XG4gICAgICAvLyBvbiBmdWxmaWxsbWVudFxuICAgIH0sIGZ1bmN0aW9uKHJlYXNvbikge1xuICAgICAgLy8gb24gcmVqZWN0aW9uXG4gICAgfSk7XG4gICAgYGBgXG4gICAgIFVubGlrZSBjYWxsYmFja3MsIHByb21pc2VzIGFyZSBncmVhdCBjb21wb3NhYmxlIHByaW1pdGl2ZXMuXG4gICAgIGBgYGpzXG4gICAgUHJvbWlzZS5hbGwoW1xuICAgICAgZ2V0SlNPTignL3Bvc3RzJyksXG4gICAgICBnZXRKU09OKCcvY29tbWVudHMnKVxuICAgIF0pLnRoZW4oZnVuY3Rpb24odmFsdWVzKXtcbiAgICAgIHZhbHVlc1swXSAvLyA9PiBwb3N0c0pTT05cbiAgICAgIHZhbHVlc1sxXSAvLyA9PiBjb21tZW50c0pTT05cbiAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH0pO1xuICAgIGBgYFxuICAgICBAY2xhc3MgUHJvbWlzZVxuICAgIEBwYXJhbSB7ZnVuY3Rpb259IHJlc29sdmVyXG4gICAgVXNlZnVsIGZvciB0b29saW5nLlxuICAgIEBjb25zdHJ1Y3RvclxuICAqL1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZShyZXNvbHZlcikge1xuICAgIHRoaXMuX2lkID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGNvdW50ZXIrKztcbiAgICB0aGlzLl9zdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9yZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcblxuICAgIGlmIChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wICE9PSByZXNvbHZlcikge1xuICAgICAgaWYgKCFsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24ocmVzb2x2ZXIpKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc1Jlc29sdmVyKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZSkpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJG5lZWRzTmV3KCk7XG4gICAgICB9XG5cbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGluaXRpYWxpemVQcm9taXNlKHRoaXMsIHJlc29sdmVyKTtcbiAgICB9XG4gIH1cblxuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5hbGwgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGRlZmF1bHQ7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLnJhY2UgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRyYWNlJCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5yZXNvbHZlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucmVqZWN0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5fc2V0U2NoZWR1bGVyID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldFNjaGVkdWxlcjtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX3NldEFzYXAgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2V0QXNhcDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX2FzYXAgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcDtcblxuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLFxuXG4gICAgLyoqXG4gICAgICBUaGUgcHJpbWFyeSB3YXkgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhIHByb21pc2UgaXMgdGhyb3VnaCBpdHMgYHRoZW5gIG1ldGhvZCxcbiAgICAgIHdoaWNoIHJlZ2lzdGVycyBjYWxsYmFja3MgdG8gcmVjZWl2ZSBlaXRoZXIgYSBwcm9taXNlJ3MgZXZlbnR1YWwgdmFsdWUgb3IgdGhlXG4gICAgICByZWFzb24gd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbih1c2VyKXtcbiAgICAgICAgLy8gdXNlciBpcyBhdmFpbGFibGVcbiAgICAgIH0sIGZ1bmN0aW9uKHJlYXNvbil7XG4gICAgICAgIC8vIHVzZXIgaXMgdW5hdmFpbGFibGUsIGFuZCB5b3UgYXJlIGdpdmVuIHRoZSByZWFzb24gd2h5XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIENoYWluaW5nXG4gICAgICAtLS0tLS0tLVxuICAgICAgIFRoZSByZXR1cm4gdmFsdWUgb2YgYHRoZW5gIGlzIGl0c2VsZiBhIHByb21pc2UuICBUaGlzIHNlY29uZCwgJ2Rvd25zdHJlYW0nXG4gICAgICBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmlyc3QgcHJvbWlzZSdzIGZ1bGZpbGxtZW50XG4gICAgICBvciByZWplY3Rpb24gaGFuZGxlciwgb3IgcmVqZWN0ZWQgaWYgdGhlIGhhbmRsZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiAgICAgICBgYGBqc1xuICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHJldHVybiB1c2VyLm5hbWU7XG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIHJldHVybiAnZGVmYXVsdCBuYW1lJztcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHVzZXJOYW1lKSB7XG4gICAgICAgIC8vIElmIGBmaW5kVXNlcmAgZnVsZmlsbGVkLCBgdXNlck5hbWVgIHdpbGwgYmUgdGhlIHVzZXIncyBuYW1lLCBvdGhlcndpc2UgaXRcbiAgICAgICAgLy8gd2lsbCBiZSBgJ2RlZmF1bHQgbmFtZSdgXG4gICAgICB9KTtcbiAgICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3VuZCB1c2VyLCBidXQgc3RpbGwgdW5oYXBweScpO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BmaW5kVXNlcmAgcmVqZWN0ZWQgYW5kIHdlJ3JlIHVuaGFwcHknKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIC8vIG5ldmVyIHJlYWNoZWRcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgLy8gaWYgYGZpbmRVc2VyYCBmdWxmaWxsZWQsIGByZWFzb25gIHdpbGwgYmUgJ0ZvdW5kIHVzZXIsIGJ1dCBzdGlsbCB1bmhhcHB5Jy5cbiAgICAgICAgLy8gSWYgYGZpbmRVc2VyYCByZWplY3RlZCwgYHJlYXNvbmAgd2lsbCBiZSAnYGZpbmRVc2VyYCByZWplY3RlZCBhbmQgd2UncmUgdW5oYXBweScuXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgSWYgdGhlIGRvd25zdHJlYW0gcHJvbWlzZSBkb2VzIG5vdCBzcGVjaWZ5IGEgcmVqZWN0aW9uIGhhbmRsZXIsIHJlamVjdGlvbiByZWFzb25zIHdpbGwgYmUgcHJvcGFnYXRlZCBmdXJ0aGVyIGRvd25zdHJlYW0uXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICB0aHJvdyBuZXcgUGVkYWdvZ2ljYWxFeGNlcHRpb24oJ1Vwc3RyZWFtIGVycm9yJyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIFRoZSBgUGVkZ2Fnb2NpYWxFeGNlcHRpb25gIGlzIHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgZG93biB0byBoZXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEFzc2ltaWxhdGlvblxuICAgICAgLS0tLS0tLS0tLS0tXG4gICAgICAgU29tZXRpbWVzIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byBwcm9wYWdhdGUgdG8gYSBkb3duc3RyZWFtIHByb21pc2UgY2FuIG9ubHkgYmVcbiAgICAgIHJldHJpZXZlZCBhc3luY2hyb25vdXNseS4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgcmV0dXJuaW5nIGEgcHJvbWlzZSBpbiB0aGVcbiAgICAgIGZ1bGZpbGxtZW50IG9yIHJlamVjdGlvbiBoYW5kbGVyLiBUaGUgZG93bnN0cmVhbSBwcm9taXNlIHdpbGwgdGhlbiBiZSBwZW5kaW5nXG4gICAgICB1bnRpbCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBzZXR0bGVkLiBUaGlzIGlzIGNhbGxlZCAqYXNzaW1pbGF0aW9uKi5cbiAgICAgICBgYGBqc1xuICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHJldHVybiBmaW5kQ29tbWVudHNCeUF1dGhvcih1c2VyKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGNvbW1lbnRzKSB7XG4gICAgICAgIC8vIFRoZSB1c2VyJ3MgY29tbWVudHMgYXJlIG5vdyBhdmFpbGFibGVcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgSWYgdGhlIGFzc2ltbGlhdGVkIHByb21pc2UgcmVqZWN0cywgdGhlbiB0aGUgZG93bnN0cmVhbSBwcm9taXNlIHdpbGwgYWxzbyByZWplY3QuXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gZmluZENvbW1lbnRzQnlBdXRob3IodXNlcik7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykge1xuICAgICAgICAvLyBJZiBgZmluZENvbW1lbnRzQnlBdXRob3JgIGZ1bGZpbGxzLCB3ZSdsbCBoYXZlIHRoZSB2YWx1ZSBoZXJlXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIElmIGBmaW5kQ29tbWVudHNCeUF1dGhvcmAgcmVqZWN0cywgd2UnbGwgaGF2ZSB0aGUgcmVhc29uIGhlcmVcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgU2ltcGxlIEV4YW1wbGVcbiAgICAgIC0tLS0tLS0tLS0tLS0tXG4gICAgICAgU3luY2hyb25vdXMgRXhhbXBsZVxuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gZmluZFJlc3VsdCgpO1xuICAgICAgICAvLyBzdWNjZXNzXG4gICAgICB9IGNhdGNoKHJlYXNvbikge1xuICAgICAgICAvLyBmYWlsdXJlXG4gICAgICB9XG4gICAgICBgYGBcbiAgICAgICBFcnJiYWNrIEV4YW1wbGVcbiAgICAgICBgYGBqc1xuICAgICAgZmluZFJlc3VsdChmdW5jdGlvbihyZXN1bHQsIGVycil7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAvLyBmYWlsdXJlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFByb21pc2UgRXhhbXBsZTtcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICBmaW5kUmVzdWx0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpe1xuICAgICAgICAvLyBzdWNjZXNzXG4gICAgICB9LCBmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyBmYWlsdXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEFkdmFuY2VkIEV4YW1wbGVcbiAgICAgIC0tLS0tLS0tLS0tLS0tXG4gICAgICAgU3luY2hyb25vdXMgRXhhbXBsZVxuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIHZhciBhdXRob3IsIGJvb2tzO1xuICAgICAgIHRyeSB7XG4gICAgICAgIGF1dGhvciA9IGZpbmRBdXRob3IoKTtcbiAgICAgICAgYm9va3MgID0gZmluZEJvb2tzQnlBdXRob3IoYXV0aG9yKTtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfVxuICAgICAgYGBgXG4gICAgICAgRXJyYmFjayBFeGFtcGxlXG4gICAgICAgYGBganNcbiAgICAgICBmdW5jdGlvbiBmb3VuZEJvb2tzKGJvb2tzKSB7XG4gICAgICAgfVxuICAgICAgIGZ1bmN0aW9uIGZhaWx1cmUocmVhc29uKSB7XG4gICAgICAgfVxuICAgICAgIGZpbmRBdXRob3IoZnVuY3Rpb24oYXV0aG9yLCBlcnIpe1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgIC8vIGZhaWx1cmVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmluZEJvb29rc0J5QXV0aG9yKGF1dGhvciwgZnVuY3Rpb24oYm9va3MsIGVycikge1xuICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3VuZEJvb2tzKGJvb2tzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoKHJlYXNvbikge1xuICAgICAgICAgICAgICAgICAgZmFpbHVyZShyZWFzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgICAgZmFpbHVyZShlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdWNjZXNzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgUHJvbWlzZSBFeGFtcGxlO1xuICAgICAgIGBgYGphdmFzY3JpcHRcbiAgICAgIGZpbmRBdXRob3IoKS5cbiAgICAgICAgdGhlbihmaW5kQm9va3NCeUF1dGhvcikuXG4gICAgICAgIHRoZW4oZnVuY3Rpb24oYm9va3Mpe1xuICAgICAgICAgIC8vIGZvdW5kIGJvb2tzXG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBAbWV0aG9kIHRoZW5cbiAgICAgIEBwYXJhbSB7RnVuY3Rpb259IG9uRnVsZmlsbGVkXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBvblJlamVjdGVkXG4gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuXG4gICAgICBAcmV0dXJuIHtQcm9taXNlfVxuICAgICovXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbikge1xuICAgICAgdmFyIHBhcmVudCA9IHRoaXM7XG4gICAgICB2YXIgc3RhdGUgPSBwYXJlbnQuX3N0YXRlO1xuXG4gICAgICBpZiAoc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCAmJiAhb25GdWxmaWxsbWVudCB8fCBzdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQgJiYgIW9uUmVqZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hpbGQgPSBuZXcgdGhpcy5jb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJlbnQuX3Jlc3VsdDtcblxuICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50c1tzdGF0ZSAtIDFdO1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaW52b2tlQ2FsbGJhY2soc3RhdGUsIGNoaWxkLCBjYWxsYmFjaywgcmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRzdWJzY3JpYmUocGFyZW50LCBjaGlsZCwgb25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAgYGNhdGNoYCBpcyBzaW1wbHkgc3VnYXIgZm9yIGB0aGVuKHVuZGVmaW5lZCwgb25SZWplY3Rpb24pYCB3aGljaCBtYWtlcyBpdCB0aGUgc2FtZVxuICAgICAgYXMgdGhlIGNhdGNoIGJsb2NrIG9mIGEgdHJ5L2NhdGNoIHN0YXRlbWVudC5cbiAgICAgICBgYGBqc1xuICAgICAgZnVuY3Rpb24gZmluZEF1dGhvcigpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkbid0IGZpbmQgdGhhdCBhdXRob3InKTtcbiAgICAgIH1cbiAgICAgICAvLyBzeW5jaHJvbm91c1xuICAgICAgdHJ5IHtcbiAgICAgICAgZmluZEF1dGhvcigpO1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH1cbiAgICAgICAvLyBhc3luYyB3aXRoIHByb21pc2VzXG4gICAgICBmaW5kQXV0aG9yKCkuY2F0Y2goZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgQG1ldGhvZCBjYXRjaFxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3Rpb25cbiAgICAgIFVzZWZ1bCBmb3IgdG9vbGluZy5cbiAgICAgIEByZXR1cm4ge1Byb21pc2V9XG4gICAgKi9cbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiBfY2F0Y2gob25SZWplY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4obnVsbCwgb25SZWplY3Rpb24pO1xuICAgIH1cbiAgfTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRwb2x5ZmlsbCgpIHtcbiAgICB2YXIgbG9jYWw7XG5cbiAgICBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2FsID0gZ2xvYmFsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsb2NhbCA9IHNlbGY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvY2FsID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwb2x5ZmlsbCBmYWlsZWQgYmVjYXVzZSBnbG9iYWwgb2JqZWN0IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgUCA9IGxvY2FsLlByb21pc2U7XG5cbiAgICBpZiAoUCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUC5yZXNvbHZlKCkpID09PSAnW29iamVjdCBQcm9taXNlXScgJiYgIVAuY2FzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvY2FsLlByb21pc2UgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdDtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRwb2x5ZmlsbDtcblxuICB2YXIgbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZSA9IHtcbiAgICAnUHJvbWlzZSc6IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRkZWZhdWx0LFxuICAgICdwb2x5ZmlsbCc6IGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdFxuICB9O1xuXG4gIC8qIGdsb2JhbCBkZWZpbmU6dHJ1ZSBtb2R1bGU6dHJ1ZSB3aW5kb3c6IHRydWUgKi9cbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkge1xuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGVbJ2V4cG9ydHMnXSkge1xuICAgIG1vZHVsZVsnZXhwb3J0cyddID0gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aGlzWydFUzZQcm9taXNlJ10gPSBsaWIkZXM2JHByb21pc2UkdW1kJCRFUzZQcm9taXNlO1xuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJHBvbHlmaWxsJCRkZWZhdWx0KCk7XG59KS5jYWxsKHVuZGVmaW5lZCk7IiwiLy8gVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi5cbi8vIFNlZSBMSUNFTlNFLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG52YXIgZW5jb2RpbmcgPSByZXF1aXJlKFwiLi9saWIvZW5jb2RpbmcuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0RW5jb2RlcjogZW5jb2RpbmcuVGV4dEVuY29kZXIsXG4gIFRleHREZWNvZGVyOiBlbmNvZGluZy5UZXh0RGVjb2Rlcixcbn07XG4iLCIoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgZ2xvYmFsW1wiZW5jb2RpbmctaW5kZXhlc1wiXSA9IHtcbiAgXCJiaWc1XCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE3MzkyLDE5NTA2LDE3OTIzLDE3ODMwLDE3Nzg0LDE2MDM1OSwxOTgzMSwxNzg0MywxNjI5OTMsMTk2ODIsMTYzMDEzLDE1MjUzLDE4MjMwLDE4MjQ0LDE5NTI3LDE5NTIwLDE0ODE1OSwxNDQ5MTksMTYwNTk0LDE1OTM3MSwxNTk5NTQsMTk1NDMsMTcyODgxLDE4MjU1LDE3ODgyLDE5NTg5LDE2MjkyNCwxOTcxOSwxOTEwOCwxODA4MSwxNTg0OTksMjkyMjEsMTU0MTk2LDEzNzgyNywxNDY5NTAsMTQ3Mjk3LDI2MTg5LDIyMjY3LG51bGwsMzIxNDksMjI4MTMsMTY2ODQxLDE1ODYwLDM4NzA4LDE2Mjc5OSwyMzUxNSwxMzg1OTAsMjMyMDQsMTM4NjEsMTcxNjk2LDIzMjQ5LDIzNDc5LDIzODA0LDI2NDc4LDM0MTk1LDE3MDMwOSwyOTc5MywyOTg1MywxNDQ1MywxMzg1NzksMTQ1MDU0LDE1NTY4MSwxNjEwOCwxNTM4MjIsMTUwOTMsMzE0ODQsNDA4NTUsMTQ3ODA5LDE2NjE1NywxNDM4NTAsMTMzNzcwLDE0Mzk2NiwxNzE2MiwzMzkyNCw0MDg1NCwzNzkzNSwxODczNiwzNDMyMywyMjY3OCwzODczMCwzNzQwMCwzMTE4NCwzMTI4MiwyNjIwOCwyNzE3NywzNDk3MywyOTc3MiwzMTY4NSwyNjQ5OCwzMTI3NiwyMTA3MSwzNjkzNCwxMzU0MiwyOTYzNiwxNTUwNjUsMjk4OTQsNDA5MDMsMjI0NTEsMTg3MzUsMjE1ODAsMTY2ODksMTQ1MDM4LDIyNTUyLDMxMzQ2LDE2MjY2MSwzNTcyNywxODA5NCwxNTkzNjgsMTY3NjksMTU1MDMzLDMxNjYyLDE0MDQ3Niw0MDkwNCwxNDA0ODEsMTQwNDg5LDE0MDQ5Miw0MDkwNSwzNDA1MiwxNDQ4MjcsMTY1NjQsNDA5MDYsMTc2MzMsMTc1NjE1LDI1MjgxLDI4NzgyLDQwOTA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI3MzYsMTI3MzcsMTI3MzgsMTI3MzksMTI3NDAsMTMxMzQwLDEyNzQxLDEzMTI4MSwxMzEyNzcsMTI3NDIsMTI3NDMsMTMxMjc1LDEzOTI0MCwxMjc0NCwxMzEyNzQsMTI3NDUsMTI3NDYsMTI3NDcsMTI3NDgsMTMxMzQyLDEyNzQ5LDEyNzUwLDI1NiwxOTMsNDYxLDE5MiwyNzQsMjAxLDI4MiwyMDAsMzMyLDIxMSw0NjUsMjEwLG51bGwsNzg3MCxudWxsLDc4NzIsMjAyLDI1NywyMjUsNDYyLDIyNCw1OTMsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsbnVsbCw3ODcxLG51bGwsNzg3MywyMzQsNjA5LDkxNzgsOTE3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzI5NjksMTM1NDkzLG51bGwsMjU4NjYsbnVsbCxudWxsLDIwMDI5LDI4MzgxLDQwMjcwLDM3MzQzLG51bGwsbnVsbCwxNjE1ODksMjU3NDUsMjAyNTAsMjAyNjQsMjAzOTIsMjA4MjIsMjA4NTIsMjA4OTIsMjA5NjQsMjExNTMsMjExNjAsMjEzMDcsMjEzMjYsMjE0NTcsMjE0NjQsMjIyNDIsMjI3NjgsMjI3ODgsMjI3OTEsMjI4MzQsMjI4MzYsMjMzOTgsMjM0NTQsMjM0NTUsMjM3MDYsMjQxOTgsMjQ2MzUsMjU5OTMsMjY2MjIsMjY2MjgsMjY3MjUsMjc5ODIsMjg4NjAsMzAwMDUsMzI0MjAsMzI0MjgsMzI0NDIsMzI0NTUsMzI0NjMsMzI0NzksMzI1MTgsMzI1NjcsMzM0MDIsMzM0ODcsMzM2NDcsMzUyNzAsMzU3NzQsMzU4MTAsMzY3MTAsMzY3MTEsMzY3MTgsMjk3MTMsMzE5OTYsMzIyMDUsMjY5NTAsMzE0MzMsMjEwMzEsbnVsbCxudWxsLG51bGwsbnVsbCwzNzI2MCwzMDkwNCwzNzIxNCwzMjk1NixudWxsLDM2MTA3LDMzMDE0LDEzMzYwNyxudWxsLG51bGwsMzI5MjcsNDA2NDcsMTk2NjEsNDAzOTMsNDA0NjAsMTk1MTgsMTcxNTEwLDE1OTc1OCw0MDQ1OCwxNzIzMzksMTM3NjEsbnVsbCwyODMxNCwzMzM0MiwyOTk3NyxudWxsLDE4NzA1LDM5NTMyLDM5NTY3LDQwODU3LDMxMTExLDE2NDk3MiwxMzg2OTgsMTMyNTYwLDE0MjA1NCwyMDAwNCwyMDA5NywyMDA5NiwyMDEwMywyMDE1OSwyMDIwMywyMDI3OSwxMzM4OCwyMDQxMywxNTk0NCwyMDQ4MywyMDYxNiwxMzQzNywxMzQ1OSwxMzQ3NywyMDg3MCwyMjc4OSwyMDk1NSwyMDk4OCwyMDk5NywyMDEwNSwyMTExMywyMTEzNiwyMTI4NywxMzc2NywyMTQxNywxMzY0OSwyMTQyNCwxMzY1MSwyMTQ0MiwyMTUzOSwxMzY3NywxMzY4MiwxMzk1MywyMTY1MSwyMTY2NywyMTY4NCwyMTY4OSwyMTcxMiwyMTc0MywyMTc4NCwyMTc5NSwyMTgwMCwxMzcyMCwyMTgyMywxMzczMywxMzc1OSwyMTk3NSwxMzc2NSwxNjMyMDQsMjE3OTcsbnVsbCwxMzQyMTAsMTM0NDIxLDE1MTg1MSwyMTkwNCwxNDI1MzQsMTQ4MjgsMTMxOTA1LDM2NDIyLDE1MDk2OCwxNjkxODksMTY0NjcsMTY0MDMwLDMwNTg2LDE0MjM5MiwxNDkwMCwxODM4OSwxNjQxODksMTU4MTk0LDE1MTAxOCwyNTgyMSwxMzQ1MjQsMTM1MDkyLDEzNDM1NywxMzU0MTIsMjU3NDEsMzY0NzgsMTM0ODA2LDEzNDE1NSwxMzUwMTIsMTQyNTA1LDE2NDQzOCwxNDg2OTEsbnVsbCwxMzQ0NzAsMTcwNTczLDE2NDA3MywxODQyMCwxNTEyMDcsMTQyNTMwLDM5NjAyLDE0OTUxLDE2OTQ2MCwxNjM2NSwxMzU3NCwxNTIyNjMsMTY5OTQwLDE2MTk5MiwxNDI2NjAsNDAzMDIsMzg5MzMsbnVsbCwxNzM2OSwxNTU4MTMsMjU3ODAsMjE3MzEsMTQyNjY4LDE0MjI4MiwxMzUyODcsMTQ4NDMsMTM1Mjc5LDE1NzQwMiwxNTc0NjIsMTYyMjA4LDI1ODM0LDE1MTYzNCwxMzQyMTEsMzY0NTYsMTM5NjgxLDE2NjczMiwxMzI5MTMsbnVsbCwxODQ0MywxMzE0OTcsMTYzNzgsMjI2NDMsMTQyNzMzLG51bGwsMTQ4OTM2LDEzMjM0OCwxNTU3OTksMTM0OTg4LDEzNDU1MCwyMTg4MSwxNjU3MSwxNzMzOCxudWxsLDE5MTI0LDE0MTkyNiwxMzUzMjUsMzMxOTQsMzkxNTcsMTM0NTU2LDI1NDY1LDE0ODQ2LDE0MTE3MywzNjI4OCwyMjE3NywyNTcyNCwxNTkzOSxudWxsLDE3MzU2OSwxMzQ2NjUsMTQyMDMxLDE0MjUzNyxudWxsLDEzNTM2OCwxNDU4NTgsMTQ3MzgsMTQ4NTQsMTY0NTA3LDEzNjg4LDE1NTIwOSwxMzk0NjMsMjIwOTgsMTM0OTYxLDE0MjUxNCwxNjk3NjAsMTM1MDAsMjc3MDksMTUxMDk5LG51bGwsbnVsbCwxNjExNDAsMTQyOTg3LDEzOTc4NCwxNzM2NTksMTY3MTE3LDEzNDc3OCwxMzQxOTYsMTU3NzI0LDMyNjU5LDEzNTM3NSwxNDEzMTUsMTQxNjI1LDEzODE5LDE1MjAzNSwxMzQ3OTYsMTM1MDUzLDEzNDgyNiwxNjI3NSwxMzQ5NjAsMTM0NDcxLDEzNTUwMywxMzQ3MzIsbnVsbCwxMzQ4MjcsMTM0MDU3LDEzNDQ3MiwxMzUzNjAsMTM1NDg1LDE2Mzc3LDE0MDk1MCwyNTY1MCwxMzUwODUsMTQ0MzcyLDE2MTMzNywxNDIyODYsMTM0NTI2LDEzNDUyNywxNDI0MTcsMTQyNDIxLDE0ODcyLDEzNDgwOCwxMzUzNjcsMTM0OTU4LDE3MzYxOCwxNTg1NDQsMTY3MTIyLDE2NzMyMSwxNjcxMTQsMzgzMTQsMjE3MDgsMzM0NzYsMjE5NDUsbnVsbCwxNzE3MTUsMzk5NzQsMzk2MDYsMTYxNjMwLDE0MjgzMCwyODk5MiwzMzEzMywzMzAwNCwyMzU4MCwxNTcwNDIsMzMwNzYsMTQyMzEsMjEzNDMsMTY0MDI5LDM3MzAyLDEzNDkwNiwxMzQ2NzEsMTM0Nzc1LDEzNDkwNywxMzc4OSwxNTEwMTksMTM4MzMsMTM0MzU4LDIyMTkxLDE0MTIzNywxMzUzNjksMTM0NjcyLDEzNDc3NiwxMzUyODgsMTM1NDk2LDE2NDM1OSwxMzYyNzcsMTM0Nzc3LDE1MTEyMCwxNDI3NTYsMjMxMjQsMTM1MTk3LDEzNTE5OCwxMzU0MTMsMTM1NDE0LDIyNDI4LDEzNDY3MywxNjE0MjgsMTY0NTU3LDEzNTA5MywxMzQ3NzksMTUxOTM0LDE0MDgzLDEzNTA5NCwxMzU1NTIsMTUyMjgwLDE3MjczMywxNDk5NzgsMTM3Mjc0LDE0NzgzMSwxNjQ0NzYsMjI2ODEsMjEwOTYsMTM4NTAsMTUzNDA1LDMxNjY2LDIzNDAwLDE4NDMyLDE5MjQ0LDQwNzQzLDE4OTE5LDM5OTY3LDM5ODIxLDE1NDQ4NCwxNDM2NzcsMjIwMTEsMTM4MTAsMjIxNTMsMjAwMDgsMjI3ODYsMTM4MTc3LDE5NDY4MCwzODczNywxMzEyMDYsMjAwNTksMjAxNTUsMTM2MzAsMjM1ODcsMjQ0MDEsMjQ1MTYsMTQ1ODYsMjUxNjQsMjU5MDksMjc1MTQsMjc3MDEsMjc3MDYsMjg3ODAsMjkyMjcsMjAwMTIsMjkzNTcsMTQ5NzM3LDMyNTk0LDMxMDM1LDMxOTkzLDMyNTk1LDE1NjI2NiwxMzUwNSxudWxsLDE1NjQ5MSwzMjc3MCwzMjg5NiwxNTcyMDIsMTU4MDMzLDIxMzQxLDM0OTE2LDM1MjY1LDE2MTk3MCwzNTc0NCwzNjEyNSwzODAyMSwzODI2NCwzODI3MSwzODM3NiwxNjc0MzksMzg4ODYsMzkwMjksMzkxMTgsMzkxMzQsMzkyNjcsMTcwMDAwLDQwMDYwLDQwNDc5LDQwNjQ0LDI3NTAzLDYzNzUxLDIwMDIzLDEzMTIwNywzODQyOSwyNTE0MywzODA1MCxudWxsLDIwNTM5LDI4MTU4LDE3MTEyMyw0MDg3MCwxNTgxNywzNDk1OSwxNDc3OTAsMjg3OTEsMjM3OTcsMTkyMzIsMTUyMDEzLDEzNjU3LDE1NDkyOCwyNDg2NiwxNjY0NTAsMzY3NzUsMzczNjYsMjkwNzMsMjYzOTMsMjk2MjYsMTQ0MDAxLDE3MjI5NSwxNTQ5OSwxMzc2MDAsMTkyMTYsMzA5NDgsMjk2OTgsMjA5MTAsMTY1NjQ3LDE2MzkzLDI3MjM1LDE3MjczMCwxNjkzMSwzNDMxOSwxMzM3NDMsMzEyNzQsMTcwMzExLDE2NjYzNCwzODc0MSwyODc0OSwyMTI4NCwxMzkzOTAsMzc4NzYsMzA0MjUsMTY2MzcxLDQwODcxLDMwNjg1LDIwMTMxLDIwNDY0LDIwNjY4LDIwMDE1LDIwMjQ3LDQwODcyLDIxNTU2LDMyMTM5LDIyNjc0LDIyNzM2LDEzODY3OCwyNDIxMCwyNDIxNywyNDUxNCwxNDEwNzQsMjU5OTUsMTQ0Mzc3LDI2OTA1LDI3MjAzLDE0NjUzMSwyNzkwMyxudWxsLDI5MTg0LDE0ODc0MSwyOTU4MCwxNjA5MSwxNTAwMzUsMjMzMTcsMjk4ODEsMzU3MTUsMTU0Nzg4LDE1MzIzNywzMTM3OSwzMTcyNCwzMTkzOSwzMjM2NCwzMzUyOCwzNDE5OSw0MDg3MywzNDk2MCw0MDg3NCwzNjUzNyw0MDg3NSwzNjgxNSwzNDE0MywzOTM5MiwzNzQwOSw0MDg3NiwxNjczNTMsMTM2MjU1LDE2NDk3LDE3MDU4LDIzMDY2LG51bGwsbnVsbCxudWxsLDM5MDE2LDI2NDc1LDE3MDE0LDIyMzMzLG51bGwsMzQyNjIsMTQ5ODgzLDMzNDcxLDE2MDAxMywxOTU4NSwxNTkwOTIsMjM5MzEsMTU4NDg1LDE1OTY3OCw0MDg3Nyw0MDg3OCwyMzQ0Niw0MDg3OSwyNjM0MywzMjM0NywyODI0NywzMTE3OCwxNTc1MiwxNzYwMywxNDM5NTgsMTQxMjA2LDE3MzA2LDE3NzE4LG51bGwsMjM3NjUsMTQ2MjAyLDM1NTc3LDIzNjcyLDE1NjM0LDE0NDcyMSwyMzkyOCw0MDg4MiwyOTAxNSwxNzc1MiwxNDc2OTIsMTM4Nzg3LDE5NTc1LDE0NzEyLDEzMzg2LDEzMTQ5MiwxNTg3ODUsMzU1MzIsMjA0MDQsMTMxNjQxLDIyOTc1LDMzMTMyLDM4OTk4LDE3MDIzNCwyNDM3OSwxMzQwNDcsbnVsbCwxMzk3MTMsMTY2MjUzLDE2NjQyLDE4MTA3LDE2ODA1NywxNjEzNSw0MDg4MywxNzI0NjksMTY2MzIsMTQyOTQsMTgxNjcsMTU4NzkwLDE2NzY0LDE2NTU1NCwxNjA3NjcsMTc3NzMsMTQ1NDgsMTUyNzMwLDE3NzYxLDE3NjkxLDE5ODQ5LDE5NTc5LDE5ODMwLDE3ODk4LDE2MzI4LDE1MDI4NywxMzkyMSwxNzYzMCwxNzU5NywxNjg3NywyMzg3MCwyMzg4MCwyMzg5NCwxNTg2OCwxNDM1MSwyMzk3MiwyMzk5MywxNDM2OCwxNDM5MiwyNDEzMCwyNDI1MywyNDM1NywyNDQ1MSwxNDYwMCwxNDYxMiwxNDY1NSwxNDY2OSwyNDc5MSwyNDg5MywyMzc4MSwxNDcyOSwyNTAxNSwyNTAxNywyNTAzOSwxNDc3NiwyNTEzMiwyNTIzMiwyNTMxNywyNTM2OCwxNDg0MCwyMjE5MywxNDg1MSwyNTU3MCwyNTU5NSwyNTYwNywyNTY5MCwxNDkyMywyNTc5MiwyMzgyOSwyMjA0OSw0MDg2MywxNDk5OSwyNTk5MCwxNTAzNywyNjExMSwyNjE5NSwxNTA5MCwyNjI1OCwxNTEzOCwyNjM5MCwxNTE3MCwyNjUzMiwyNjYyNCwxNTE5MiwyNjY5OCwyNjc1NiwxNTIxOCwxNTIxNywxNTIyNywyNjg4OSwyNjk0NywyOTI3NiwyNjk4MCwyNzAzOSwyNzAxMywxNTI5MiwyNzA5NCwxNTMyNSwyNzIzNywyNzI1MiwyNzI0OSwyNzI2NiwxNTM0MCwyNzI4OSwxNTM0NiwyNzMwNywyNzMxNywyNzM0OCwyNzM4MiwyNzUyMSwyNzU4NSwyNzYyNiwyNzc2NSwyNzgxOCwxNTU2MywyNzkwNiwyNzkxMCwyNzk0MiwyODAzMywxNTU5OSwyODA2OCwyODA4MSwyODE4MSwyODE4NCwyODIwMSwyODI5NCwxNjYzMzYsMjgzNDcsMjgzODYsMjgzNzgsNDA4MzEsMjgzOTIsMjgzOTMsMjg0NTIsMjg0NjgsMTU2ODYsMTQ3MjY1LDI4NTQ1LDI4NjA2LDE1NzIyLDE1NzMzLDI5MTExLDIzNzA1LDE1NzU0LDI4NzE2LDE1NzYxLDI4NzUyLDI4NzU2LDI4NzgzLDI4Nzk5LDI4ODA5LDEzMTg3NywxNzM0NSwxMzgwOSwxMzQ4NzIsMTQ3MTU5LDIyNDYyLDE1OTQ0MywyODk5MCwxNTM1NjgsMTM5MDIsMjcwNDIsMTY2ODg5LDIzNDEyLDMxMzA1LDE1MzgyNSwxNjkxNzcsMzEzMzMsMzEzNTcsMTU0MDI4LDMxNDE5LDMxNDA4LDMxNDI2LDMxNDI3LDI5MTM3LDE1NjgxMywxNjg0MiwzMTQ1MCwzMTQ1MywzMTQ2NiwxNjg3OSwyMTY4MiwxNTQ2MjUsMzE0OTksMzE1NzMsMzE1MjksMTUyMzM0LDE1NDg3OCwzMTY1MCwzMTU5OSwzMzY5MiwxNTQ1NDgsMTU4ODQ3LDMxNjk2LDMzODI1LDMxNjM0LDMxNjcyLDE1NDkxMiwxNTc4OSwxNTQ3MjUsMzM5MzgsMzE3MzgsMzE3NTAsMzE3OTcsMTU0ODE3LDMxODEyLDMxODc1LDE0OTYzNCwzMTkxMCwyNjIzNywxNDg4NTYsMzE5NDUsMzE5NDMsMzE5NzQsMzE4NjAsMzE5ODcsMzE5ODksMzE5NTAsMzIzNTksMTc2OTMsMTU5MzAwLDMyMDkzLDE1OTQ0NiwyOTgzNywzMjEzNywzMjE3MSwyODk4MSwzMjE3OSwzMjIxMCwxNDc1NDMsMTU1Njg5LDMyMjI4LDE1NjM1LDMyMjQ1LDEzNzIwOSwzMjIyOSwxNjQ3MTcsMzIyODUsMTU1OTM3LDE1NTk5NCwzMjM2NiwzMjQwMiwxNzE5NSwzNzk5NiwzMjI5NSwzMjU3NiwzMjU3NywzMjU4MywzMTAzMCwxNTYzNjgsMzkzOTMsMzI2NjMsMTU2NDk3LDMyNjc1LDEzNjgwMSwxMzExNzYsMTc3NTYsMTQ1MjU0LDE3NjY3LDE2NDY2NiwzMjc2MiwxNTY4MDksMzI3NzMsMzI3NzYsMzI3OTcsMzI4MDgsMzI4MTUsMTcyMTY3LDE1ODkxNSwzMjgyNywzMjgyOCwzMjg2NSwxNDEwNzYsMTg4MjUsMTU3MjIyLDE0NjkxNSwxNTc0MTYsMjY0MDUsMzI5MzUsMTY2NDcyLDMzMDMxLDMzMDUwLDIyNzA0LDE0MTA0NiwyNzc3NSwxNTY4MjQsMTUxNDgwLDI1ODMxLDEzNjMzMCwzMzMwNCwxMzczMTAsMjcyMTksMTUwMTE3LDE1MDE2NSwxNzUzMCwzMzMyMSwxMzM5MDEsMTU4MjkwLDE0NjgxNCwyMDQ3MywxMzY0NDUsMzQwMTgsMzM2MzQsMTU4NDc0LDE0OTkyNywxNDQ2ODgsMTM3MDc1LDE0NjkzNiwzMzQ1MCwyNjkwNywxOTQ5NjQsMTY4NTksMzQxMjMsMzM0ODgsMzM1NjIsMTM0Njc4LDEzNzE0MCwxNDAxNywxNDM3NDEsMTQ0NzMwLDMzNDAzLDMzNTA2LDMzNTYwLDE0NzA4MywxNTkxMzksMTU4NDY5LDE1ODYxNSwxNDQ4NDYsMTU4MDcsMzM1NjUsMjE5OTYsMzM2NjksMTc2NzUsMTU5MTQxLDMzNzA4LDMzNzI5LDMzNzQ3LDEzNDM4LDE1OTQ0NCwyNzIyMywzNDEzOCwxMzQ2MiwxNTkyOTgsMTQzMDg3LDMzODgwLDE1NDU5NiwzMzkwNSwxNTgyNywxNzYzNiwyNzMwMywzMzg2NiwxNDY2MTMsMzEwNjQsMzM5NjAsMTU4NjE0LDE1OTM1MSwxNTkyOTksMzQwMTQsMzM4MDcsMzM2ODEsMTc1NjgsMzM5MzksMzQwMjAsMTU0NzY5LDE2OTYwLDE1NDgxNiwxNzczMSwzNDEwMCwyMzI4MiwxNTkzODUsMTc3MDMsMzQxNjMsMTc2ODYsMjY1NTksMzQzMjYsMTY1NDEzLDE2NTQzNSwzNDI0MSwxNTk4ODAsMzQzMDYsMTM2NTc4LDE1OTk0OSwxOTQ5OTQsMTc3NzAsMzQzNDQsMTM4OTYsMTM3Mzc4LDIxNDk1LDE2MDY2NiwzNDQzMCwzNDY3MywxNzIyODAsMzQ3OTgsMTQyMzc1LDM0NzM3LDM0Nzc4LDM0ODMxLDIyMTEzLDM0NDEyLDI2NzEwLDE3OTM1LDM0ODg1LDM0ODg2LDE2MTI0OCwxNDY4NzMsMTYxMjUyLDM0OTEwLDM0OTcyLDE4MDExLDM0OTk2LDM0OTk3LDI1NTM3LDM1MDEzLDMwNTgzLDE2MTU1MSwzNTIwNywzNTIxMCwzNTIzOCwzNTI0MSwzNTIzOSwzNTI2MCwxNjY0MzcsMzUzMDMsMTYyMDg0LDE2MjQ5MywzNTQ4NCwzMDYxMSwzNzM3NCwzNTQ3MiwxNjIzOTMsMzE0NjUsMTYyNjE4LDE0NzM0MywxODE5NSwxNjI2MTYsMjkwNTIsMzU1OTYsMzU2MTUsMTUyNjI0LDE1MjkzMywzNTY0NywzNTY2MCwzNTY2MSwzNTQ5NywxNTAxMzgsMzU3MjgsMzU3MzksMzU1MDMsMTM2OTI3LDE3OTQxLDM0ODk1LDM1OTk1LDE2MzE1NiwxNjMyMTUsMTk1MDI4LDE0MTE3LDE2MzE1NSwzNjA1NCwxNjMyMjQsMTYzMjYxLDM2MTE0LDM2MDk5LDEzNzQ4OCwzNjA1OSwyODc2NCwzNjExMywxNTA3MjksMTYwODAsMzYyMTUsMzYyNjUsMTYzODQyLDEzNTE4OCwxNDk4OTgsMTUyMjgsMTY0Mjg0LDE2MDAxMiwzMTQ2MywzNjUyNSwzNjUzNCwzNjU0NywzNzU4OCwzNjYzMywzNjY1MywxNjQ3MDksMTY0ODgyLDM2NzczLDM3NjM1LDE3MjcwMywxMzM3MTIsMzY3ODcsMTg3MzAsMTY2MzY2LDE2NTE4MSwxNDY4NzUsMjQzMTIsMTQzOTcwLDM2ODU3LDE3MjA1MiwxNjU1NjQsMTY1MTIxLDE0MDA2OSwxNDcyMCwxNTk0NDcsMzY5MTksMTY1MTgwLDE2MjQ5NCwzNjk2MSwxNjUyMjgsMTY1Mzg3LDM3MDMyLDE2NTY1MSwzNzA2MCwxNjU2MDYsMzcwMzgsMzcxMTcsMzcyMjMsMTUwODgsMzcyODksMzczMTYsMzE5MTYsMTY2MTk1LDEzODg4OSwzNzM5MCwyNzgwNywzNzQ0MSwzNzQ3NCwxNTMwMTcsMzc1NjEsMTY2NTk4LDE0NjU4NywxNjY2NjgsMTUzMDUxLDEzNDQ0OSwzNzY3NiwzNzczOSwxNjY2MjUsMTY2ODkxLDI4ODE1LDIzMjM1LDE2NjYyNiwxNjY2MjksMTg3ODksMzc0NDQsMTY2ODkyLDE2Njk2OSwxNjY5MTEsMzc3NDcsMzc5NzksMzY1NDAsMzgyNzcsMzgzMTAsMzc5MjYsMzgzMDQsMjg2NjIsMTcwODEsMTQwOTIyLDE2NTU5MiwxMzU4MDQsMTQ2OTkwLDE4OTExLDI3Njc2LDM4NTIzLDM4NTUwLDE2NzQ4LDM4NTYzLDE1OTQ0NSwyNTA1MCwzODU4MiwzMDk2NSwxNjY2MjQsMzg1ODksMjE0NTIsMTg4NDksMTU4OTA0LDEzMTcwMCwxNTY2ODgsMTY4MTExLDE2ODE2NSwxNTAyMjUsMTM3NDkzLDE0NDEzOCwzODcwNSwzNDM3MCwzODcxMCwxODk1OSwxNzcyNSwxNzc5NywxNTAyNDksMjg3ODksMjMzNjEsMzg2ODMsMzg3NDgsMTY4NDA1LDM4NzQzLDIzMzcwLDE2ODQyNywzODc1MSwzNzkyNSwyMDY4OCwxNDM1NDMsMTQzNTQ4LDM4NzkzLDM4ODE1LDM4ODMzLDM4ODQ2LDM4ODQ4LDM4ODY2LDM4ODgwLDE1MjY4NCwzODg5NCwyOTcyNCwxNjkwMTEsMzg5MTEsMzg5MDEsMTY4OTg5LDE2MjE3MCwxOTE1MywzODk2NCwzODk2MywzODk4NywzOTAxNCwxNTExOCwxNjAxMTcsMTU2OTcsMTMyNjU2LDE0NzgwNCwxNTMzNTAsMzkxMTQsMzkwOTUsMzkxMTIsMzkxMTEsMTkxOTksMTU5MDE1LDEzNjkxNSwyMTkzNiwzOTEzNywzOTE0MiwzOTE0OCwzNzc1MiwzOTIyNSwxNTAwNTcsMTkzMTQsMTcwMDcxLDE3MDI0NSwzOTQxMywzOTQzNiwzOTQ4MywzOTQ0MCwzOTUxMiwxNTMzODEsMTQwMjAsMTY4MTEzLDE3MDk2NSwzOTY0OCwzOTY1MCwxNzA3NTcsMzk2NjgsMTk0NzAsMzk3MDAsMzk3MjUsMTY1Mzc2LDIwNTMyLDM5NzMyLDE1ODEyMCwxNDUzMSwxNDM0ODUsMzk3NjAsMzk3NDQsMTcxMzI2LDIzMTA5LDEzNzMxNSwzOTgyMiwxNDgwNDMsMzk5MzgsMzk5MzUsMzk5NDgsMTcxNjI0LDQwNDA0LDE3MTk1OSwxNzI0MzQsMTcyNDU5LDE3MjI1NywxNzIzMjMsMTcyNTExLDQwMzE4LDQwMzIzLDE3MjM0MCw0MDQ2MiwyNjc2MCw0MDM4OCwxMzk2MTEsMTcyNDM1LDE3MjU3NiwxMzc1MzEsMTcyNTk1LDQwMjQ5LDE3MjIxNywxNzI3MjQsNDA1OTIsNDA1OTcsNDA2MDYsNDA2MTAsMTk3NjQsNDA2MTgsNDA2MjMsMTQ4MzI0LDQwNjQxLDE1MjAwLDE0ODIxLDE1NjQ1LDIwMjc0LDE0MjcwLDE2Njk1NSw0MDcwNiw0MDcxMiwxOTM1MCwzNzkyNCwxNTkxMzgsNDA3MjcsNDA3MjYsNDA3NjEsMjIxNzUsMjIxNTQsNDA3NzMsMzkzNTIsMTY4MDc1LDM4ODk4LDMzOTE5LDQwODAyLDQwODA5LDMxNDUyLDQwODQ2LDI5MjA2LDE5MzkwLDE0OTg3NywxNDk5NDcsMjkwNDcsMTUwMDA4LDE0ODI5NiwxNTAwOTcsMjk1OTgsMTY2ODc0LDEzNzQ2NiwzMTEzNSwxNjYyNzAsMTY3NDc4LDM3NzM3LDM3ODc1LDE2NjQ2OCwzNzYxMiwzNzc2MSwzNzgzNSwxNjYyNTIsMTQ4NjY1LDI5MjA3LDE2MTA3LDMwNTc4LDMxMjk5LDI4ODgwLDE0ODU5NSwxNDg0NzIsMjkwNTQsMTM3MTk5LDI4ODM1LDEzNzQwNiwxNDQ3OTMsMTYwNzEsMTM3MzQ5LDE1MjYyMywxMzcyMDgsMTQxMTQsMTM2OTU1LDEzNzI3MywxNDA0OSwxMzcwNzYsMTM3NDI1LDE1NTQ2NywxNDExNSwxMzY4OTYsMjIzNjMsMTUwMDUzLDEzNjE5MCwxMzU4NDgsMTM2MTM0LDEzNjM3NCwzNDA1MSwxNDUwNjIsMzQwNTEsMzM4NzcsMTQ5OTA4LDE2MDEwMSwxNDY5OTMsMTUyOTI0LDE0NzE5NSwxNTk4MjYsMTc2NTIsMTQ1MTM0LDE3MDM5NywxNTk1MjYsMjY2MTcsMTQxMzEsMTUzODEsMTU4NDcsMjI2MzYsMTM3NTA2LDI2NjQwLDE2NDcxLDE0NTIxNSwxNDc2ODEsMTQ3NTk1LDE0NzcyNywxNTg3NTMsMjE3MDcsMjIxNzQsMTU3MzYxLDIyMTYyLDEzNTEzNSwxMzQwNTYsMTM0NjY5LDM3ODMwLDE2NjY3NSwzNzc4OCwyMDIxNiwyMDc3OSwxNDM2MSwxNDg1MzQsMjAxNTYsMTMyMTk3LDEzMTk2NywyMDI5OSwyMDM2MiwxNTMxNjksMjMxNDQsMTMxNDk5LDEzMjA0MywxNDc0NSwxMzE4NTAsMTMyMTE2LDEzMzY1LDIwMjY1LDEzMTc3NiwxNjc2MDMsMTMxNzAxLDM1NTQ2LDEzMTU5NiwyMDEyMCwyMDY4NSwyMDc0OSwyMDM4NiwyMDIyNywxNTAwMzAsMTQ3MDgyLDIwMjkwLDIwNTI2LDIwNTg4LDIwNjA5LDIwNDI4LDIwNDUzLDIwNTY4LDIwNzMyLDIwODI1LDIwODI3LDIwODI5LDIwODMwLDI4Mjc4LDE0NDc4OSwxNDcwMDEsMTQ3MTM1LDI4MDE4LDEzNzM0OCwxNDcwODEsMjA5MDQsMjA5MzEsMTMyNTc2LDE3NjI5LDEzMjI1OSwxMzIyNDIsMTMyMjQxLDM2MjE4LDE2NjU1NiwxMzI4NzgsMjEwODEsMjExNTYsMTMzMjM1LDIxMjE3LDM3NzQyLDE4MDQyLDI5MDY4LDE0ODM2NCwxMzQxNzYsMTQ5OTMyLDEzNTM5NiwyNzA4OSwxMzQ2ODUsMjk4MTcsMTYwOTQsMjk4NDksMjk3MTYsMjk3ODIsMjk1OTIsMTkzNDIsMTUwMjA0LDE0NzU5NywyMTQ1NiwxMzcwMCwyOTE5OSwxNDc2NTcsMjE5NDAsMTMxOTA5LDIxNzA5LDEzNDA4NiwyMjMwMSwzNzQ2OSwzODY0NCwzNzczNCwyMjQ5MywyMjQxMywyMjM5OSwxMzg4NiwyMjczMSwyMzE5MywxNjY0NzAsMTM2OTU0LDEzNzA3MSwxMzY5NzYsMjMwODQsMjI5NjgsMzc1MTksMjMxNjYsMjMyNDcsMjMwNTgsMTUzOTI2LDEzNzcxNSwxMzczMTMsMTQ4MTE3LDE0MDY5LDI3OTA5LDI5NzYzLDIzMDczLDE1NTI2NywyMzE2OSwxNjY4NzEsMTMyMTE1LDM3ODU2LDI5ODM2LDEzNTkzOSwyODkzMywxODgwMiwzNzg5NiwxNjYzOTUsMzc4MjEsMTQyNDAsMjM1ODIsMjM3MTAsMjQxNTgsMjQxMzYsMTM3NjIyLDEzNzU5NiwxNDYxNTgsMjQyNjksMjMzNzUsMTM3NDc1LDEzNzQ3NiwxNDA4MSwxMzczNzYsMTQwNDUsMTM2OTU4LDE0MDM1LDMzMDY2LDE2NjQ3MSwxMzg2ODIsMTQ0NDk4LDE2NjMxMiwyNDMzMiwyNDMzNCwxMzc1MTEsMTM3MTMxLDIzMTQ3LDEzNzAxOSwyMzM2NCwzNDMyNCwxNjEyNzcsMzQ5MTIsMjQ3MDIsMTQxNDA4LDE0MDg0MywyNDUzOSwxNjA1NiwxNDA3MTksMTQwNzM0LDE2ODA3MiwxNTk2MDMsMjUwMjQsMTMxMTM0LDEzMTE0MiwxNDA4MjcsMjQ5ODUsMjQ5ODQsMjQ2OTMsMTQyNDkxLDE0MjU5OSwxNDkyMDQsMTY4MjY5LDI1NzEzLDE0OTA5MywxNDIxODYsMTQ4ODksMTQyMTE0LDE0NDQ2NCwxNzAyMTgsMTQyOTY4LDI1Mzk5LDE3MzE0NywyNTc4MiwyNTM5MywyNTU1MywxNDk5ODcsMTQyNjk1LDI1MjUyLDE0MjQ5NywyNTY1OSwyNTk2MywyNjk5NCwxNTM0OCwxNDM1MDIsMTQ0MDQ1LDE0OTg5NywxNDQwNDMsMjE3NzMsMTQ0MDk2LDEzNzQzMywxNjkwMjMsMjYzMTgsMTQ0MDA5LDE0Mzc5NSwxNTA3MiwxNjc4NCwxNTI5NjQsMTY2NjkwLDE1Mjk3NSwxMzY5NTYsMTUyOTIzLDE1MjYxMywzMDk1OCwxNDM2MTksMTM3MjU4LDE0MzkyNCwxMzQxMiwxNDM4ODcsMTQzNzQ2LDE0ODE2OSwyNjI1NCwxNTkwMTIsMjYyMTksMTkzNDcsMjYxNjAsMTYxOTA0LDEzODczMSwyNjIxMSwxNDQwODIsMTQ0MDk3LDI2MTQyLDE1MzcxNCwxNDU0NSwxNDU0NjYsMTQ1MzQwLDE1MjU3LDE0NTMxNCwxNDQzODIsMjk5MDQsMTUyNTQsMjY1MTEsMTQ5MDM0LDI2ODA2LDI2NjU0LDE1MzAwLDI3MzI2LDE0NDM1LDE0NTM2NSwxNDg2MTUsMjcxODcsMjcyMTgsMjczMzcsMjczOTcsMTM3NDkwLDI1ODczLDI2Nzc2LDI3MjEyLDE1MzE5LDI3MjU4LDI3NDc5LDE0NzM5MiwxNDY1ODYsMzc3OTIsMzc2MTgsMTY2ODkwLDE2NjYwMywzNzUxMywxNjM4NzAsMTY2MzY0LDM3OTkxLDI4MDY5LDI4NDI3LDE0OTk5NiwyODAwNywxNDczMjcsMTU3NTksMjgxNjQsMTQ3NTE2LDIzMTAxLDI4MTcwLDIyNTk5LDI3OTQwLDMwNzg2LDI4OTg3LDE0ODI1MCwxNDgwODYsMjg5MTMsMjkyNjQsMjkzMTksMjkzMzIsMTQ5MzkxLDE0OTI4NSwyMDg1NywxNTAxODAsMTMyNTg3LDI5ODE4LDE0NzE5MiwxNDQ5OTEsMTUwMDkwLDE0OTc4MywxNTU2MTcsMTYxMzQsMTYwNDksMTUwMjM5LDE2Njk0NywxNDcyNTMsMjQ3NDMsMTYxMTUsMjk5MDAsMjk3NTYsMzc3NjcsMjk3NTEsMTc1NjcsMTU5MjEwLDE3NzQ1LDMwMDgzLDE2MjI3LDE1MDc0NSwxNTA3OTAsMTYyMTYsMzAwMzcsMzAzMjMsMTczNTEwLDE1MTI5LDI5ODAwLDE2NjYwNCwxNDk5MzEsMTQ5OTAyLDE1MDk5LDE1ODIxLDE1MDA5NCwxNjEyNywxNDk5NTcsMTQ5NzQ3LDM3MzcwLDIyMzIyLDM3Njk4LDE2NjYyNywxMzczMTYsMjA3MDMsMTUyMDk3LDE1MjAzOSwzMDU4NCwxNDM5MjIsMzA0NzgsMzA0NzksMzA1ODcsMTQ5MTQzLDE0NTI4MSwxNDk0MiwxNDk3NDQsMjk3NTIsMjk4NTEsMTYwNjMsMTUwMjAyLDE1MDIxNSwxNjU4NCwxNTAxNjYsMTU2MDc4LDM3NjM5LDE1Mjk2MSwzMDc1MCwzMDg2MSwzMDg1NiwzMDkzMCwyOTY0OCwzMTA2NSwxNjE2MDEsMTUzMzE1LDE2NjU0LDMxMTMxLDMzOTQyLDMxMTQxLDI3MTgxLDE0NzE5NCwzMTI5MCwzMTIyMCwxNjc1MCwxMzY5MzQsMTY2OTAsMzc0MjksMzEyMTcsMTM0NDc2LDE0OTkwMCwxMzE3MzcsMTQ2ODc0LDEzNzA3MCwxMzcxOSwyMTg2NywxMzY4MCwxMzk5NCwxMzE1NDAsMTM0MTU3LDMxNDU4LDIzMTI5LDE0MTA0NSwxNTQyODcsMTU0MjY4LDIzMDUzLDEzMTY3NSwzMDk2MCwyMzA4MiwxNTQ1NjYsMzE0ODYsMTY4ODksMzE4MzcsMzE4NTMsMTY5MTMsMTU0NTQ3LDE1NTMyNCwxNTUzMDIsMzE5NDksMTUwMDA5LDEzNzEzNiwzMTg4NiwzMTg2OCwzMTkxOCwyNzMxNCwzMjIyMCwzMjI2MywzMjIxMSwzMjU5MCwxNTYyNTcsMTU1OTk2LDE2MjYzMiwzMjE1MSwxNTUyNjYsMTcwMDIsMTU4NTgxLDEzMzM5OCwyNjU4MiwxMzExNTAsMTQ0ODQ3LDIyNDY4LDE1NjY5MCwxNTY2NjQsMTQ5ODU4LDMyNzMzLDMxNTI3LDEzMzE2NCwxNTQzNDUsMTU0OTQ3LDMxNTAwLDE1NTE1MCwzOTM5OCwzNDM3MywzOTUyMywyNzE2NCwxNDQ0NDcsMTQ4MTgsMTUwMDA3LDE1NzEwMSwzOTQ1NSwxNTcwODgsMzM5MjAsMTYwMDM5LDE1ODkyOSwxNzY0MiwzMzA3OSwxNzQxMCwzMjk2NiwzMzAzMywzMzA5MCwxNTc2MjAsMzkxMDcsMTU4Mjc0LDMzMzc4LDMzMzgxLDE1ODI4OSwzMzg3NSwxNTkxNDMsMzQzMjAsMTYwMjgzLDIzMTc0LDE2NzY3LDEzNzI4MCwyMzMzOSwxMzczNzcsMjMyNjgsMTM3NDMyLDM0NDY0LDE5NTAwNCwxNDY4MzEsMzQ4NjEsMTYwODAyLDIzMDQyLDM0OTI2LDIwMjkzLDM0OTUxLDM1MDA3LDM1MDQ2LDM1MTczLDM1MTQ5LDE1MzIxOSwzNTE1NiwxNjE2NjksMTYxNjY4LDE2NjkwMSwxNjY4NzMsMTY2ODEyLDE2NjM5MywxNjA0NSwzMzk1NSwxODE2NSwxODEyNywxNDMyMiwzNTM4OSwzNTM1NiwxNjkwMzIsMjQzOTcsMzc0MTksMTQ4MTAwLDI2MDY4LDI4OTY5LDI4ODY4LDEzNzI4NSw0MDMwMSwzNTk5OSwzNjA3MywxNjMyOTIsMjI5MzgsMzA2NTksMjMwMjQsMTcyNjIsMTQwMzYsMzYzOTQsMzY1MTksMTUwNTM3LDM2NjU2LDM2NjgyLDE3MTQwLDI3NzM2LDI4NjAzLDE0MDA2NSwxODU4NywyODUzNywyODI5OSwxMzcxNzgsMzk5MTMsMTQwMDUsMTQ5ODA3LDM3MDUxLDM3MDE1LDIxODczLDE4Njk0LDM3MzA3LDM3ODkyLDE2NjQ3NSwxNjQ4MiwxNjY2NTIsMzc5MjcsMTY2OTQxLDE2Njk3MSwzNDAyMSwzNTM3MSwzODI5NywzODMxMSwzODI5NSwzODI5NCwxNjcyMjAsMjk3NjUsMTYwNjYsMTQ5NzU5LDE1MDA4MiwxNDg0NTgsMTYxMDMsMTQzOTA5LDM4NTQzLDE2NzY1NSwxNjc1MjYsMTY3NTI1LDE2MDc2LDE0OTk5NywxNTAxMzYsMTQ3NDM4LDI5NzE0LDI5ODAzLDE2MTI0LDM4NzIxLDE2ODExMiwyNjY5NSwxODk3MywxNjgwODMsMTUzNTY3LDM4NzQ5LDM3NzM2LDE2NjI4MSwxNjY5NTAsMTY2NzAzLDE1NjYwNiwzNzU2MiwyMzMxMywzNTY4OSwxODc0OCwyOTY4OSwxNDc5OTUsMzg4MTEsMzg3NjksMzkyMjQsMTM0OTUwLDI0MDAxLDE2Njg1MywxNTAxOTQsMzg5NDMsMTY5MTc4LDM3NjIyLDE2OTQzMSwzNzM0OSwxNzYwMCwxNjY3MzYsMTUwMTE5LDE2Njc1NiwzOTEzMiwxNjY0NjksMTYxMjgsMzc0MTgsMTg3MjUsMzM4MTIsMzkyMjcsMzkyNDUsMTYyNTY2LDE1ODY5LDM5MzIzLDE5MzExLDM5MzM4LDM5NTE2LDE2Njc1NywxNTM4MDAsMjcyNzksMzk0NTcsMjMyOTQsMzk0NzEsMTcwMjI1LDE5MzQ0LDE3MDMxMiwzOTM1NiwxOTM4OSwxOTM1MSwzNzc1NywyMjY0MiwxMzU5MzgsMjI1NjIsMTQ5OTQ0LDEzNjQyNCwzMDc4OCwxNDEwODcsMTQ2ODcyLDI2ODIxLDE1NzQxLDM3OTc2LDE0NjMxLDI0OTEyLDE0MTE4NSwxNDE2NzUsMjQ4MzksNDAwMTUsNDAwMTksNDAwNTksMzk5ODksMzk5NTIsMzk4MDcsMzk4ODcsMTcxNTY1LDM5ODM5LDE3MjUzMywxNzIyODYsNDAyMjUsMTk2MzAsMTQ3NzE2LDQwNDcyLDE5NjMyLDQwMjA0LDE3MjQ2OCwxNzIyNjksMTcyMjc1LDE3MDI4Nyw0MDM1NywzMzk4MSwxNTkyNTAsMTU5NzExLDE1ODU5NCwzNDMwMCwxNzcxNSwxNTkxNDAsMTU5MzY0LDE1OTIxNiwzMzgyNCwzNDI4NiwxNTkyMzIsMTQ1MzY3LDE1NTc0OCwzMTIwMiwxNDQ3OTYsMTQ0OTYwLDE4NzMzLDE0OTk4MiwxNTcxNCwzNzg1MSwzNzU2NiwzNzcwNCwxMzE3NzUsMzA5MDUsMzc0OTUsMzc5NjUsMjA0NTIsMTMzNzYsMzY5NjQsMTUyOTI1LDMwNzgxLDMwODA0LDMwOTAyLDMwNzk1LDEzNzA0NywxNDM4MTcsMTQ5ODI1LDEzOTc4LDIwMzM4LDI4NjM0LDI4NjMzLDI4NzAyLDI4NzAyLDIxNTI0LDE0Nzg5MywyMjQ1OSwyMjc3MSwyMjQxMCw0MDIxNCwyMjQ4NywyODk4MCwxMzQ4NywxNDc4ODQsMjkxNjMsMTU4Nzg0LDE1MTQ0NywyMzMzNiwxMzcxNDEsMTY2NDczLDI0ODQ0LDIzMjQ2LDIzMDUxLDE3MDg0LDE0ODYxNiwxNDEyNCwxOTMyMywxNjYzOTYsMzc4MTksMzc4MTYsMTM3NDMwLDEzNDk0MSwzMzkwNiwxNTg5MTIsMTM2MjExLDE0ODIxOCwxNDIzNzQsMTQ4NDE3LDIyOTMyLDE0Njg3MSwxNTc1MDUsMzIxNjgsMTU1OTk1LDE1NTgxMiwxNDk5NDUsMTQ5ODk5LDE2NjM5NCwzNzYwNSwyOTY2NiwxNjEwNSwyOTg3NiwxNjY3NTUsMTM3Mzc1LDE2MDk3LDE1MDE5NSwyNzM1MiwyOTY4MywyOTY5MSwxNjA4NiwxNTAwNzgsMTUwMTY0LDEzNzE3NywxNTAxMTgsMTMyMDA3LDEzNjIyOCwxNDk5ODksMjk3NjgsMTQ5NzgyLDI4ODM3LDE0OTg3OCwzNzUwOCwyOTY3MCwzNzcyNywxMzIzNTAsMzc2ODEsMTY2NjA2LDE2NjQyMiwzNzc2NiwxNjY4ODcsMTUzMDQ1LDE4NzQxLDE2NjUzMCwyOTAzNSwxNDk4MjcsMTM0Mzk5LDIyMTgwLDEzMjYzNCwxMzQxMjMsMTM0MzI4LDIxNzYyLDMxMTcyLDEzNzIxMCwzMjI1NCwxMzY4OTgsMTUwMDk2LDEzNzI5OCwxNzcxMCwzNzg4OSwxNDA5MCwxNjY1OTIsMTQ5OTMzLDIyOTYwLDEzNzQwNywxMzczNDcsMTYwOTAwLDIzMjAxLDE0MDUwLDE0Njc3OSwxNDAwMCwzNzQ3MSwyMzE2MSwxNjY1MjksMTM3MzE0LDM3NzQ4LDE1NTY1LDEzMzgxMiwxOTA5NCwxNDczMCwyMDcyNCwxNTcyMSwxNTY5MiwxMzYwOTIsMjkwNDUsMTcxNDcsMTY0Mzc2LDI4MTc1LDE2ODE2NCwxNzY0MywyNzk5MSwxNjM0MDcsMjg3NzUsMjc4MjMsMTU1NzQsMTQ3NDM3LDE0Njk4OSwyODE2MiwyODQyOCwxNTcyNywxMzIwODUsMzAwMzMsMTQwMTIsMTM1MTIsMTgwNDgsMTYwOTAsMTg1NDUsMjI5ODAsMzc0ODYsMTg3NTAsMzY2NzMsMTY2OTQwLDE1ODY1NiwyMjU0NiwyMjQ3MiwxNDAzOCwxMzYyNzQsMjg5MjYsMTQ4MzIyLDE1MDEyOSwxNDMzMzEsMTM1ODU2LDE0MDIyMSwyNjgwOSwyNjk4MywxMzYwODgsMTQ0NjEzLDE2MjgwNCwxNDUxMTksMTY2NTMxLDE0NTM2NiwxNDQzNzgsMTUwNjg3LDI3MTYyLDE0NTA2OSwxNTg5MDMsMzM4NTQsMTc2MzEsMTc2MTQsMTU5MDE0LDE1OTA1NywxNTg4NTAsMTU5NzEwLDI4NDM5LDE2MDAwOSwzMzU5NywxMzcwMTgsMzM3NzMsMTU4ODQ4LDE1OTgyNywxMzcxNzksMjI5MjEsMjMxNzAsMTM3MTM5LDIzMTM3LDIzMTUzLDEzNzQ3NywxNDc5NjQsMTQxMjUsMjMwMjMsMTM3MDIwLDE0MDIzLDI5MDcwLDM3Nzc2LDI2MjY2LDE0ODEzMywyMzE1MCwyMzA4MywxNDgxMTUsMjcxNzksMTQ3MTkzLDE2MTU5MCwxNDg1NzEsMTQ4MTcwLDI4OTU3LDE0ODA1NywxNjYzNjksMjA0MDAsMTU5MDE2LDIzNzQ2LDE0ODY4NiwxNjM0MDUsMTQ4NDEzLDI3MTQ4LDE0ODA1NCwxMzU5NDAsMjg4MzgsMjg5NzksMTQ4NDU3LDE1NzgxLDI3ODcxLDE5NDU5NywxNTAwOTUsMzIzNTcsMjMwMTksMjM4NTUsMTU4NTksMjQ0MTIsMTUwMTA5LDEzNzE4MywzMjE2NCwzMzgzMCwyMTYzNywxNDYxNzAsMTQ0MTI4LDEzMTYwNCwyMjM5OCwxMzMzMzMsMTMyNjMzLDE2MzU3LDEzOTE2NiwxNzI3MjYsMjg2NzUsMTY4MjgzLDIzOTIwLDI5NTgzLDMxOTU1LDE2NjQ4OSwxNjg5OTIsMjA0MjQsMzI3NDMsMjkzODksMjk0NTYsMTYyNTQ4LDI5NDk2LDI5NDk3LDE1MzMzNCwyOTUwNSwyOTUxMiwxNjA0MSwxNjI1ODQsMzY5NzIsMjkxNzMsMTQ5NzQ2LDI5NjY1LDMzMjcwLDE2MDc0LDMwNDc2LDE2MDgxLDI3ODEwLDIyMjY5LDI5NzIxLDI5NzI2LDI5NzI3LDE2MDk4LDE2MTEyLDE2MTE2LDE2MTIyLDI5OTA3LDE2MTQyLDE2MjExLDMwMDE4LDMwMDYxLDMwMDY2LDMwMDkzLDE2MjUyLDMwMTUyLDMwMTcyLDE2MzIwLDMwMjg1LDE2MzQzLDMwMzI0LDE2MzQ4LDMwMzMwLDE1MTM4OCwyOTA2NCwyMjA1MSwzNTIwMCwyMjYzMywxNjQxMywzMDUzMSwxNjQ0MSwyNjQ2NSwxNjQ1MywxMzc4NywzMDYxNiwxNjQ5MCwxNjQ5NSwyMzY0NiwzMDY1NCwzMDY2NywyMjc3MCwzMDc0NCwyODg1NywzMDc0OCwxNjU1MiwzMDc3NywzMDc5MSwzMDgwMSwzMDgyMiwzMzg2NCwxNTI4ODUsMzEwMjcsMjY2MjcsMzEwMjYsMTY2NDMsMTY2NDksMzExMjEsMzExMjksMzY3OTUsMzEyMzgsMzY3OTYsMTY3NDMsMzEzNzcsMTY4MTgsMzE0MjAsMzM0MDEsMTY4MzYsMzE0MzksMzE0NTEsMTY4NDcsMjAwMDEsMzE1ODYsMzE1OTYsMzE2MTEsMzE3NjIsMzE3NzEsMTY5OTIsMTcwMTgsMzE4NjcsMzE5MDAsMTcwMzYsMzE5MjgsMTcwNDQsMzE5ODEsMzY3NTUsMjg4NjQsMTM0MzUxLDMyMjA3LDMyMjEyLDMyMjA4LDMyMjUzLDMyNjg2LDMyNjkyLDI5MzQzLDE3MzAzLDMyODAwLDMyODA1LDMxNTQ1LDMyODE0LDMyODE3LDMyODUyLDE1ODIwLDIyNDUyLDI4ODMyLDMyOTUxLDMzMDAxLDE3Mzg5LDMzMDM2LDI5NDgyLDMzMDM4LDMzMDQyLDMwMDQ4LDMzMDQ0LDE3NDA5LDE1MTYxLDMzMTEwLDMzMTEzLDMzMTE0LDE3NDI3LDIyNTg2LDMzMTQ4LDMzMTU2LDE3NDQ1LDMzMTcxLDE3NDUzLDMzMTg5LDIyNTExLDMzMjE3LDMzMjUyLDMzMzY0LDE3NTUxLDMzNDQ2LDMzMzk4LDMzNDgyLDMzNDk2LDMzNTM1LDE3NTg0LDMzNjIzLDM4NTA1LDI3MDE4LDMzNzk3LDI4OTE3LDMzODkyLDI0ODAzLDMzOTI4LDE3NjY4LDMzOTgyLDM0MDE3LDM0MDQwLDM0MDY0LDM0MTA0LDM0MTMwLDE3NzIzLDM0MTU5LDM0MTYwLDM0MjcyLDE3NzgzLDM0NDE4LDM0NDUwLDM0NDgyLDM0NTQzLDM4NDY5LDM0Njk5LDE3OTI2LDE3OTQzLDM0OTkwLDM1MDcxLDM1MTA4LDM1MTQzLDM1MjE3LDE2MjE1MSwzNTM2OSwzNTM4NCwzNTQ3NiwzNTUwOCwzNTkyMSwzNjA1MiwzNjA4MiwzNjEyNCwxODMyOCwyMjYyMywzNjI5MSwxODQxMywyMDIwNiwzNjQxMCwyMTk3NiwyMjM1NiwzNjQ2NSwyMjAwNSwzNjUyOCwxODQ4NywzNjU1OCwzNjU3OCwzNjU4MCwzNjU4OSwzNjU5NCwzNjc5MSwzNjgwMSwzNjgxMCwzNjgxMiwzNjkxNSwzOTM2NCwxODYwNSwzOTEzNiwzNzM5NSwxODcxOCwzNzQxNiwzNzQ2NCwzNzQ4MywzNzU1MywzNzU1MCwzNzU2NywzNzYwMywzNzYxMSwzNzYxOSwzNzYyMCwzNzYyOSwzNzY5OSwzNzc2NCwzNzgwNSwxODc1NywxODc2OSw0MDYzOSwzNzkxMSwyMTI0OSwzNzkxNywzNzkzMywzNzk1MCwxODc5NCwzNzk3MiwzODAwOSwzODE4OSwzODMwNiwxODg1NSwzODM4OCwzODQ1MSwxODkxNywyNjUyOCwxODk4MCwzODcyMCwxODk5NywzODgzNCwzODg1MCwyMjEwMCwxOTE3MiwyNDgwOCwzOTA5NywxOTIyNSwzOTE1MywyMjU5NiwzOTE4MiwzOTE5MywyMDkxNiwzOTE5NiwzOTIyMywzOTIzNCwzOTI2MSwzOTI2NiwxOTMxMiwzOTM2NSwxOTM1NywzOTQ4NCwzOTY5NSwzMTM2MywzOTc4NSwzOTgwOSwzOTkwMSwzOTkyMSwzOTkyNCwxOTU2NSwzOTk2OCwxNDE5MSwxMzgxNzgsNDAyNjUsMzk5OTQsNDA3MDIsMjIwOTYsNDAzMzksNDAzODEsNDAzODQsNDA0NDQsMzgxMzQsMzY3OTAsNDA1NzEsNDA2MjAsNDA2MjUsNDA2MzcsNDA2NDYsMzgxMDgsNDA2NzQsNDA2ODksNDA2OTYsMzE0MzIsNDA3NzIsMTMxMjIwLDEzMTc2NywxMzIwMDAsMjY5MDYsMzgwODMsMjI5NTYsMTMyMzExLDIyNTkyLDM4MDgxLDE0MjY1LDEzMjU2NSwxMzI2MjksMTMyNzI2LDEzNjg5MCwyMjM1OSwyOTA0MywxMzM4MjYsMTMzODM3LDEzNDA3OSwyMTYxMCwxOTQ2MTksMTM0MDkxLDIxNjYyLDEzNDEzOSwxMzQyMDMsMTM0MjI3LDEzNDI0NSwxMzQyNjgsMjQ4MDcsMTM0Mjg1LDIyMTM4LDEzNDMyNSwxMzQzNjUsMTM0MzgxLDEzNDUxMSwxMzQ1NzgsMTM0NjAwLDI2OTY1LDM5OTgzLDM0NzI1LDEzNDY2MCwxMzQ2NzAsMTM0ODcxLDEzNTA1NiwxMzQ5NTcsMTM0NzcxLDIzNTg0LDEzNTEwMCwyNDA3NSwxMzUyNjAsMTM1MjQ3LDEzNTI4NiwyNjM5OCwxMzUyOTEsMTM1MzA0LDEzNTMxOCwxMzg5NSwxMzUzNTksMTM1Mzc5LDEzNTQ3MSwxMzU0ODMsMjEzNDgsMzM5NjUsMTM1OTA3LDEzNjA1MywxMzU5OTAsMzU3MTMsMTM2NTY3LDEzNjcyOSwxMzcxNTUsMTM3MTU5LDIwMDg4LDI4ODU5LDEzNzI2MSwxMzc1NzgsMTM3NzczLDEzNzc5NywxMzgyODIsMTM4MzUyLDEzODQxMiwxMzg5NTIsMjUyODMsMTM4OTY1LDEzOTAyOSwyOTA4MCwyNjcwOSwxMzkzMzMsMjcxMTMsMTQwMjQsMTM5OTAwLDE0MDI0NywxNDAyODIsMTQxMDk4LDE0MTQyNSwxNDE2NDcsMzM1MzMsMTQxNjcxLDE0MTcxNSwxNDIwMzcsMzUyMzcsMTQyMDU2LDM2NzY4LDE0MjA5NCwzODg0MCwxNDIxNDMsMzg5ODMsMzk2MTMsMTQyNDEyLG51bGwsMTQyNDcyLDE0MjUxOSwxNTQ2MDAsMTQyNjAwLDE0MjYxMCwxNDI3NzUsMTQyNzQxLDE0MjkxNCwxNDMyMjAsMTQzMzA4LDE0MzQxMSwxNDM0NjIsMTQ0MTU5LDE0NDM1MCwyNDQ5NywyNjE4NCwyNjMwMywxNjI0MjUsMTQ0NzQzLDE0NDg4MywyOTE4NSwxNDk5NDYsMzA2NzksMTQ0OTIyLDE0NTE3NCwzMjM5MSwxMzE5MTAsMjI3MDksMjYzODIsMjY5MDQsMTQ2MDg3LDE2MTM2NywxNTU2MTgsMTQ2OTYxLDE0NzEyOSwxNjEyNzgsMTM5NDE4LDE4NjQwLDE5MTI4LDE0NzczNywxNjY1NTQsMTQ4MjA2LDE0ODIzNywxNDc1MTUsMTQ4Mjc2LDE0ODM3NCwxNTAwODUsMTMyNTU0LDIwOTQ2LDEzMjYyNSwyMjk0MywxMzg5MjAsMTUyOTQsMTQ2Njg3LDE0ODQ4NCwxNDg2OTQsMjI0MDgsMTQ5MTA4LDE0NzQ3LDE0OTI5NSwxNjUzNTIsMTcwNDQxLDE0MTc4LDEzOTcxNSwzNTY3OCwxNjY3MzQsMzkzODIsMTQ5NTIyLDE0OTc1NSwxNTAwMzcsMjkxOTMsMTUwMjA4LDEzNDI2NCwyMjg4NSwxNTEyMDUsMTUxNDMwLDEzMjk4NSwzNjU3MCwxNTE1OTYsMjExMzUsMjIzMzUsMjkwNDEsMTUyMjE3LDE1MjYwMSwxNDcyNzQsMTUwMTgzLDIxOTQ4LDE1MjY0NiwxNTI2ODYsMTU4NTQ2LDM3MzMyLDEzNDI3LDE1Mjg5NSwxNjEzMzAsMTUyOTI2LDE4MjAwLDE1MjkzMCwxNTI5MzQsMTUzNTQzLDE0OTgyMywxNTM2OTMsMjA1ODIsMTM1NjMsMTQ0MzMyLDI0Nzk4LDE1Mzg1OSwxODMwMCwxNjYyMTYsMTU0Mjg2LDE1NDUwNSwxNTQ2MzAsMTM4NjQwLDIyNDMzLDI5MDA5LDI4NTk4LDE1NTkwNiwxNjI4MzQsMzY5NTAsMTU2MDgyLDE1MTQ1MCwzNTY4MiwxNTY2NzQsMTU2NzQ2LDIzODk5LDE1ODcxMSwzNjY2MiwxNTY4MDQsMTM3NTAwLDM1NTYyLDE1MDAwNiwxNTY4MDgsMTQ3NDM5LDE1Njk0NiwxOTM5MiwxNTcxMTksMTU3MzY1LDE0MTA4MywzNzk4OSwxNTM1NjksMjQ5ODEsMjMwNzksMTk0NzY1LDIwNDExLDIyMjAxLDE0ODc2OSwxNTc0MzYsMjAwNzQsMTQ5ODEyLDM4NDg2LDI4MDQ3LDE1ODkwOSwxMzg0OCwzNTE5MSwxNTc1OTMsMTU3ODA2LDE1NjY4OSwxNTc3OTAsMjkxNTEsMTU3ODk1LDMxNTU0LDE2ODEyOCwxMzM2NDksMTU3OTkwLDM3MTI0LDE1ODAwOSwzMTMwMSw0MDQzMiwxNTgyMDIsMzk0NjIsMTU4MjUzLDEzOTE5LDE1Njc3NywxMzExMDUsMzExMDcsMTU4MjYwLDE1ODU1NSwyMzg1MiwxNDQ2NjUsMzM3NDMsMTU4NjIxLDE4MTI4LDE1ODg4NCwzMDAxMSwzNDkxNywxNTkxNTAsMjI3MTAsMTQxMDgsMTQwNjg1LDE1OTgxOSwxNjAyMDUsMTU0NDQsMTYwMzg0LDE2MDM4OSwzNzUwNSwxMzk2NDIsMTYwMzk1LDM3NjgwLDE2MDQ4NiwxNDk5NjgsMjc3MDUsMzgwNDcsMTYwODQ4LDEzNDkwNCwzNDg1NSwzNTA2MSwxNDE2MDYsMTY0OTc5LDEzNzEzNywyODM0NCwxNTAwNTgsMTM3MjQ4LDE0NzU2LDE0MDA5LDIzNTY4LDMxMjAzLDE3NzI3LDI2Mjk0LDE3MTE4MSwxNzAxNDgsMzUxMzksMTYxNzQwLDE2MTg4MCwyMjIzMCwxNjYwNywxMzY3MTQsMTQ3NTMsMTQ1MTk5LDE2NDA3MiwxMzYxMzMsMjkxMDEsMzM2MzgsMTYyMjY5LDE2ODM2MCwyMzE0MywxOTYzOSwxNTk5MTksMTY2MzE1LDE2MjMwMSwxNjIzMTQsMTYyNTcxLDE2MzE3NCwxNDc4MzQsMzE1NTUsMzExMDIsMTYzODQ5LDI4NTk3LDE3Mjc2NywyNzEzOSwxNjQ2MzIsMjE0MTAsMTU5MjM5LDM3ODIzLDI2Njc4LDM4NzQ5LDE2NDIwNywxNjM4NzUsMTU4MTMzLDEzNjE3MywxNDM5MTksMTYzOTEyLDIzOTQxLDE2Njk2MCwxNjM5NzEsMjIyOTMsMzg5NDcsMTY2MjE3LDIzOTc5LDE0OTg5NiwyNjA0NiwyNzA5MywyMTQ1OCwxNTAxODEsMTQ3MzI5LDE1Mzc3LDI2NDIyLDE2Mzk4NCwxNjQwODQsMTY0MTQyLDEzOTE2OSwxNjQxNzUsMTY0MjMzLDE2NDI3MSwxNjQzNzgsMTY0NjE0LDE2NDY1NSwxNjQ3NDYsMTM3NzAsMTY0OTY4LDE2NTU0NiwxODY4MiwyNTU3NCwxNjYyMzAsMzA3MjgsMzc0NjEsMTY2MzI4LDE3Mzk0LDE2NjM3NSwxNzM3NSwxNjYzNzYsMTY2NzI2LDE2Njg2OCwyMzAzMiwxNjY5MjEsMzY2MTksMTY3ODc3LDE2ODE3MiwzMTU2OSwxNjgyMDgsMTY4MjUyLDE1ODYzLDE2ODI4NiwxNTAyMTgsMzY4MTYsMjkzMjcsMjIxNTUsMTY5MTkxLDE2OTQ0OSwxNjkzOTIsMTY5NDAwLDE2OTc3OCwxNzAxOTMsMTcwMzEzLDE3MDM0NiwxNzA0MzUsMTcwNTM2LDE3MDc2NiwxNzEzNTQsMTcxNDE5LDMyNDE1LDE3MTc2OCwxNzE4MTEsMTk2MjAsMzgyMTUsMTcyNjkxLDI5MDkwLDE3Mjc5OSwxOTg1NywzNjg4MiwxNzM1MTUsMTk4NjgsMTM0MzAwLDM2Nzk4LDIxOTUzLDM2Nzk0LDE0MDQ2NCwzNjc5MywxNTAxNjMsMTc2NzMsMzIzODMsMjg1MDIsMjczMTMsMjAyMDIsMTM1NDAsMTY2NzAwLDE2MTk0OSwxNDEzOCwzNjQ4MCwxMzcyMDUsMTYzODc2LDE2Njc2NCwxNjY4MDksMTYyMzY2LDE1NzM1OSwxNTg1MSwxNjEzNjUsMTQ2NjE1LDE1MzE0MSwxNTM5NDIsMjAxMjIsMTU1MjY1LDE1NjI0OCwyMjIwNywxMzQ3NjUsMzYzNjYsMjM0MDUsMTQ3MDgwLDE1MDY4NiwyNTU2NiwyNTI5NiwxMzcyMDYsMTM3MzM5LDI1OTA0LDIyMDYxLDE1NDY5OCwyMTUzMCwxNTIzMzcsMTU4MTQsMTcxNDE2LDE5NTgxLDIyMDUwLDIyMDQ2LDMyNTg1LDE1NTM1MiwyMjkwMSwxNDY3NTIsMzQ2NzIsMTk5OTYsMTM1MTQ2LDEzNDQ3MywxNDUwODIsMzMwNDcsNDAyODYsMzYxMjAsMzAyNjcsNDAwMDUsMzAyODYsMzA2NDksMzc3MDEsMjE1NTQsMzMwOTYsMzM1MjcsMjIwNTMsMzMwNzQsMzM4MTYsMzI5NTcsMjE5OTQsMzEwNzQsMjIwODMsMjE1MjYsMTM0ODEzLDEzNzc0LDIyMDIxLDIyMDAxLDI2MzUzLDE2NDU3OCwxMzg2OSwzMDAwNCwyMjAwMCwyMTk0NiwyMTY1NSwyMTg3NCwxMzQyMDksMTM0Mjk0LDI0MjcyLDE1MTg4MCwxMzQ3NzQsMTQyNDM0LDEzNDgxOCw0MDYxOSwzMjA5MCwyMTk4MiwxMzUyODUsMjUyNDUsMzg3NjUsMjE2NTIsMzYwNDUsMjkxNzQsMzcyMzgsMjU1OTYsMjU1MjksMjU1OTgsMjE4NjUsMTQyMTQ3LDQwMDUwLDE0MzAyNywyMDg5MCwxMzUzNSwxMzQ1NjcsMjA5MDMsMjE1ODEsMjE3OTAsMjE3NzksMzAzMTAsMzYzOTcsMTU3ODM0LDMwMTI5LDMyOTUwLDM0ODIwLDM0Njk0LDM1MDE1LDMzMjA2LDMzODIwLDEzNTM2MSwxNzY0NCwyOTQ0NCwxNDkyNTQsMjM0NDAsMzM1NDcsMTU3ODQzLDIyMTM5LDE0MTA0NCwxNjMxMTksMTQ3ODc1LDE2MzE4NywxNTk0NDAsMTYwNDM4LDM3MjMyLDEzNTY0MSwzNzM4NCwxNDY2ODQsMTczNzM3LDEzNDgyOCwxMzQ5MDUsMjkyODYsMTM4NDAyLDE4MjU0LDE1MTQ5MCwxNjM4MzMsMTM1MTQ3LDE2NjM0LDQwMDI5LDI1ODg3LDE0Mjc1MiwxODY3NSwxNDk0NzIsMTcxMzg4LDEzNTE0OCwxMzQ2NjYsMjQ2NzQsMTYxMTg3LDEzNTE0OSxudWxsLDE1NTcyMCwxMzU1NTksMjkwOTEsMzIzOTgsNDAyNzIsMTk5OTQsMTk5NzIsMTM2ODcsMjMzMDksMjc4MjYsMjEzNTEsMTM5OTYsMTQ4MTIsMjEzNzMsMTM5ODksMTQ5MDE2LDIyNjgyLDE1MDM4MiwzMzMyNSwyMTU3OSwyMjQ0MiwxNTQyNjEsMTMzNDk3LG51bGwsMTQ5MzAsMTQwMzg5LDI5NTU2LDE3MTY5MiwxOTcyMSwzOTkxNywxNDY2ODYsMTcxODI0LDE5NTQ3LDE1MTQ2NSwxNjkzNzQsMTcxOTk4LDMzODg0LDE0Njg3MCwxNjA0MzQsMTU3NjE5LDE0NTE4NCwyNTM5MCwzMjAzNywxNDcxOTEsMTQ2OTg4LDE0ODkwLDM2ODcyLDIxMTk2LDE1OTg4LDEzOTQ2LDE3ODk3LDEzMjIzOCwzMDI3MiwyMzI4MCwxMzQ4MzgsMzA4NDIsMTYzNjMwLDIyNjk1LDE2NTc1LDIyMTQwLDM5ODE5LDIzOTI0LDMwMjkyLDE3MzEwOCw0MDU4MSwxOTY4MSwzMDIwMSwxNDMzMSwyNDg1NywxNDM1NzgsMTQ4NDY2LG51bGwsMjIxMDksMTM1ODQ5LDIyNDM5LDE0OTg1OSwxNzE1MjYsMjEwNDQsMTU5OTE4LDEzNzQxLDI3NzIyLDQwMzE2LDMxODMwLDM5NzM3LDIyNDk0LDEzNzA2OCwyMzYzNSwyNTgxMSwxNjkxNjgsMTU2NDY5LDE2MDEwMCwzNDQ3NywxMzQ0NDAsMTU5MDEwLDE1MDI0MiwxMzQ1MTMsbnVsbCwyMDk5MCwxMzkwMjMsMjM5NTAsMzg2NTksMTM4NzA1LDQwNTc3LDM2OTQwLDMxNTE5LDM5NjgyLDIzNzYxLDMxNjUxLDI1MTkyLDI1Mzk3LDM5Njc5LDMxNjk1LDM5NzIyLDMxODcwLDM5NzI2LDMxODEwLDMxODc4LDM5OTU3LDMxNzQwLDM5Njg5LDQwNzI3LDM5OTYzLDE0OTgyMiw0MDc5NCwyMTg3NSwyMzQ5MSwyMDQ3Nyw0MDYwMCwyMDQ2NiwyMTA4OCwxNTg3OCwyMTIwMSwyMjM3NSwyMDU2NiwyMjk2NywyNDA4MiwzODg1Niw0MDM2MywzNjcwMCwyMTYwOSwzODgzNiwzOTIzMiwzODg0MiwyMTI5MiwyNDg4MCwyNjkyNCwyMTQ2NiwzOTk0Niw0MDE5NCwxOTUxNSwzODQ2NSwyNzAwOCwyMDY0NiwzMDAyMiwxMzcwNjksMzkzODYsMjExMDcsbnVsbCwzNzIwOSwzODUyOSwzNzIxMixudWxsLDM3MjAxLDE2NzU3NSwyNTQ3MSwxNTkwMTEsMjczMzgsMjIwMzMsMzcyNjIsMzAwNzQsMjUyMjEsMTMyMDkyLDI5NTE5LDMxODU2LDE1NDY1NywxNDY2ODUsbnVsbCwxNDk3ODUsMzA0MjIsMzk4MzcsMjAwMTAsMTM0MzU2LDMzNzI2LDM0ODgyLG51bGwsMjM2MjYsMjcwNzIsMjA3MTcsMjIzOTQsMjEwMjMsMjQwNTMsMjAxNzQsMjc2OTcsMTMxNTcwLDIwMjgxLDIxNjYwLDIxNzIyLDIxMTQ2LDM2MjI2LDEzODIyLDI0MzMyLDEzODExLG51bGwsMjc0NzQsMzcyNDQsNDA4NjksMzk4MzEsMzg5NTgsMzkwOTIsMzk2MTAsNDA2MTYsNDA1ODAsMjkwNTAsMzE1MDgsbnVsbCwyNzY0MiwzNDg0MCwzMjYzMixudWxsLDIyMDQ4LDE3MzY0MiwzNjQ3MSw0MDc4NyxudWxsLDM2MzA4LDM2NDMxLDQwNDc2LDM2MzUzLDI1MjE4LDE2NDczMywzNjM5MiwzNjQ2OSwzMTQ0MywxNTAxMzUsMzEyOTQsMzA5MzYsMjc4ODIsMzU0MzEsMzAyMTUsMTY2NDkwLDQwNzQyLDI3ODU0LDM0Nzc0LDMwMTQ3LDE3MjcyMiwzMDgwMywxOTQ2MjQsMzYxMDgsMjk0MTAsMjk1NTMsMzU2MjksMjk0NDIsMjk5MzcsMzYwNzUsMTUwMjAzLDM0MzUxLDI0NTA2LDM0OTc2LDE3NTkxLG51bGwsMTM3Mjc1LDE1OTIzNyxudWxsLDM1NDU0LDE0MDU3MSxudWxsLDI0ODI5LDMwMzExLDM5NjM5LDQwMjYwLDM3NzQyLDM5ODIzLDM0ODA1LG51bGwsMzQ4MzEsMzYwODcsMjk0ODQsMzg2ODksMzk4NTYsMTM3ODIsMjkzNjIsMTk0NjMsMzE4MjUsMzkyNDIsMTU1OTkzLDI0OTIxLDE5NDYwLDQwNTk4LDI0OTU3LG51bGwsMjIzNjcsMjQ5NDMsMjUyNTQsMjUxNDUsMjUyOTQsMTQ5NDAsMjUwNTgsMjE0MTgsMTQ0MzczLDI1NDQ0LDI2NjI2LDEzNzc4LDIzODk1LDE2Njg1MCwzNjgyNiwxNjc0ODEsbnVsbCwyMDY5NywxMzg1NjYsMzA5ODIsMjEyOTgsMzg0NTYsMTM0OTcxLDE2NDg1LG51bGwsMzA3MTgsbnVsbCwzMTkzOCwxNTU0MTgsMzE5NjIsMzEyNzcsMzI4NzAsMzI4NjcsMzIwNzcsMjk5NTcsMjk5MzgsMzUyMjAsMzMzMDYsMjYzODAsMzI4NjYsMTYwOTAyLDMyODU5LDI5OTM2LDMzMDI3LDMwNTAwLDM1MjA5LDE1NzY0NCwzMDAzNSwxNTk0NDEsMzQ3MjksMzQ3NjYsMzMyMjQsMzQ3MDAsMzU0MDEsMzYwMTMsMzU2NTEsMzA1MDcsMjk5NDQsMzQwMTAsMTM4NzcsMjcwNTgsMzYyNjIsbnVsbCwzNTI0MSwyOTgwMCwyODA4OSwzNDc1MywxNDc0NzMsMjk5MjcsMTU4MzUsMjkwNDYsMjQ3NDAsMjQ5ODgsMTU1NjksMjkwMjYsMjQ2OTUsbnVsbCwzMjYyNSwxNjY3MDEsMjkyNjQsMjQ4MDksMTkzMjYsMjEwMjQsMTUzODQsMTQ2NjMxLDE1NTM1MSwxNjEzNjYsMTUyODgxLDEzNzU0MCwxMzU5MzQsMTcwMjQzLDE1OTE5NiwxNTk5MTcsMjM3NDUsMTU2MDc3LDE2NjQxNSwxNDUwMTUsMTMxMzEwLDE1Nzc2NiwxNTEzMTAsMTc3NjIsMjMzMjcsMTU2NDkyLDQwNzg0LDQwNjE0LDE1NjI2NywxMjI4OCw2NTI5MiwxMjI4OSwxMjI5MCw2NTI5NCw4MjMxLDY1MzA3LDY1MzA2LDY1MzExLDY1MjgxLDY1MDcyLDgyMzAsODIyOSw2NTEwNCw2NTEwNSw2NTEwNiwxODMsNjUxMDgsNjUxMDksNjUxMTAsNjUxMTEsNjUzNzIsODIxMSw2NTA3Myw4MjEyLDY1MDc1LDk1ODgsNjUwNzYsNjUxMDMsNjUyODgsNjUyODksNjUwNzcsNjUwNzgsNjUzNzEsNjUzNzMsNjUwNzksNjUwODAsMTIzMDgsMTIzMDksNjUwODEsNjUwODIsMTIzMDQsMTIzMDUsNjUwODMsNjUwODQsMTIyOTgsMTIyOTksNjUwODUsNjUwODYsMTIyOTYsMTIyOTcsNjUwODcsNjUwODgsMTIzMDAsMTIzMDEsNjUwODksNjUwOTAsMTIzMDIsMTIzMDMsNjUwOTEsNjUwOTIsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMxNywxMjMxOCw4MjQ1LDgyNDIsNjUyODMsNjUyODYsNjUyOTAsODI1MSwxNjcsMTIyOTEsOTY3NSw5Njc5LDk2NTEsOTY1MCw5Njc4LDk3MzQsOTczMyw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NjEsOTY2MCwxMjk2Myw4NDUzLDE3NSw2NTUwNyw2NTM0Myw3MTcsNjUwOTcsNjUwOTgsNjUxMDEsNjUxMDIsNjUwOTksNjUxMDAsNjUxMTksNjUxMjAsNjUxMjEsNjUyOTEsNjUyOTMsMjE1LDI0NywxNzcsODczMCw2NTMwOCw2NTMxMCw2NTMwOSw4ODA2LDg4MDcsODgwMCw4NzM0LDg3ODYsODgwMSw2NTEyMiw2NTEyMyw2NTEyNCw2NTEyNSw2NTEyNiw2NTM3NCw4NzQ1LDg3NDYsODg2OSw4NzM2LDg3MzUsODg5NSwxMzI2NiwxMzI2NSw4NzQ3LDg3NTAsODc1Nyw4NzU2LDk3OTIsOTc5NCw4ODUzLDg4NTcsODU5Myw4NTk1LDg1OTIsODU5NCw4NTk4LDg1OTksODYwMSw4NjAwLDg3NDEsODczOSw2NTI5NSw2NTM0MCw4NzI1LDY1MTI4LDY1Mjg0LDY1NTA5LDEyMzA2LDY1NTA0LDY1NTA1LDY1Mjg1LDY1MzEyLDg0NTEsODQ1Nyw2NTEyOSw2NTEzMCw2NTEzMSwxMzI2OSwxMzIxMiwxMzIxMywxMzIxNCwxMzI2MiwxMzIxNywxMzE5OCwxMzE5OSwxMzI1MiwxNzYsMjA4MjUsMjA4MjcsMjA4MzAsMjA4MjksMjA4MzMsMjA4MzUsMjE5OTEsMjk5MjksMzE5NTAsOTYwMSw5NjAyLDk2MDMsOTYwNCw5NjA1LDk2MDYsOTYwNyw5NjA4LDk2MTUsOTYxNCw5NjEzLDk2MTIsOTYxMSw5NjEwLDk2MDksOTUzMiw5NTI0LDk1MTYsOTUwOCw5NTAwLDk2MjAsOTQ3Miw5NDc0LDk2MjEsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTgxLDk1ODIsOTU4NCw5NTgzLDk1NTIsOTU2Niw5NTc4LDk1NjksOTY5OCw5Njk5LDk3MDEsOTcwMCw5NTg1LDk1ODYsOTU4Nyw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDEyMzIxLDEyMzIyLDEyMzIzLDEyMzI0LDEyMzI1LDEyMzI2LDEyMzI3LDEyMzI4LDEyMzI5LDIxMzEzLDIxMzE2LDIxMzE3LDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDEyNTQ5LDEyNTUwLDEyNTUxLDEyNTUyLDEyNTUzLDEyNTU0LDEyNTU1LDEyNTU2LDEyNTU3LDEyNTU4LDEyNTU5LDEyNTYwLDEyNTYxLDEyNTYyLDEyNTYzLDEyNTY0LDEyNTY1LDEyNTY2LDEyNTY3LDEyNTY4LDEyNTY5LDEyNTcwLDEyNTcxLDEyNTcyLDEyNTczLDEyNTc0LDEyNTc1LDEyNTc2LDEyNTc3LDEyNTc4LDEyNTc5LDEyNTgwLDEyNTgxLDEyNTgyLDEyNTgzLDEyNTg0LDEyNTg1LDcyOSw3MTMsNzE0LDcxMSw3MTUsOTIxNiw5MjE3LDkyMTgsOTIxOSw5MjIwLDkyMjEsOTIyMiw5MjIzLDkyMjQsOTIyNSw5MjI2LDkyMjcsOTIyOCw5MjI5LDkyMzAsOTIzMSw5MjMyLDkyMzMsOTIzNCw5MjM1LDkyMzYsOTIzNyw5MjM4LDkyMzksOTI0MCw5MjQxLDkyNDIsOTI0Myw5MjQ0LDkyNDUsOTI0Niw5MjQ3LDkyNDksODM2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk5NjgsMjAwNTcsMTk5NjksMTk5NzEsMjAwMzUsMjAwNjEsMjAxMDIsMjAxMDgsMjAxNTQsMjA3OTksMjA4MzcsMjA4NDMsMjA5NjAsMjA5OTIsMjA5OTMsMjExNDcsMjEyNjksMjEzMTMsMjEzNDAsMjE0NDgsMTk5NzcsMTk5NzksMTk5NzYsMTk5NzgsMjAwMTEsMjAwMjQsMjA5NjEsMjAwMzcsMjAwNDAsMjAwNjMsMjAwNjIsMjAxMTAsMjAxMjksMjA4MDAsMjA5OTUsMjEyNDIsMjEzMTUsMjE0NDksMjE0NzUsMjIzMDMsMjI3NjMsMjI4MDUsMjI4MjMsMjI4OTksMjMzNzYsMjMzNzcsMjMzNzksMjM1NDQsMjM1NjcsMjM1ODYsMjM2MDgsMjM2NjUsMjQwMjksMjQwMzcsMjQwNDksMjQwNTAsMjQwNTEsMjQwNjIsMjQxNzgsMjQzMTgsMjQzMzEsMjQzMzksMjUxNjUsMTk5ODUsMTk5ODQsMTk5ODEsMjAwMTMsMjAwMTYsMjAwMjUsMjAwNDMsMjM2MDksMjAxMDQsMjAxMTMsMjAxMTcsMjAxMTQsMjAxMTYsMjAxMzAsMjAxNjEsMjAxNjAsMjAxNjMsMjAxNjYsMjAxNjcsMjAxNzMsMjAxNzAsMjAxNzEsMjAxNjQsMjA4MDMsMjA4MDEsMjA4MzksMjA4NDUsMjA4NDYsMjA4NDQsMjA4ODcsMjA5ODIsMjA5OTgsMjA5OTksMjEwMDAsMjEyNDMsMjEyNDYsMjEyNDcsMjEyNzAsMjEzMDUsMjEzMjAsMjEzMTksMjEzMTcsMjEzNDIsMjEzODAsMjE0NTEsMjE0NTAsMjE0NTMsMjI3NjQsMjI4MjUsMjI4MjcsMjI4MjYsMjI4MjksMjMzODAsMjM1NjksMjM1ODgsMjM2MTAsMjM2NjMsMjQwNTIsMjQxODcsMjQzMTksMjQzNDAsMjQzNDEsMjQ1MTUsMjUwOTYsMjUxNDIsMjUxNjMsMjUxNjYsMjU5MDMsMjU5OTEsMjYwMDcsMjYwMjAsMjYwNDEsMjYwODUsMjYzNTIsMjYzNzYsMjY0MDgsMjc0MjQsMjc0OTAsMjc1MTMsMjc1OTUsMjc2MDQsMjc2MTEsMjc2NjMsMjc3MDAsMjg3NzksMjkyMjYsMjkyMzgsMjkyNDMsMjkyNTUsMjkyNzMsMjkyNzUsMjkzNTYsMjk1NzksMTk5OTMsMTk5OTAsMTk5ODksMTk5ODgsMTk5OTIsMjAwMjcsMjAwNDUsMjAwNDcsMjAwNDYsMjAxOTcsMjAxODQsMjAxODAsMjAxODEsMjAxODIsMjAxODMsMjAxOTUsMjAxOTYsMjAxODUsMjAxOTAsMjA4MDUsMjA4MDQsMjA4NzMsMjA4NzQsMjA5MDgsMjA5ODUsMjA5ODYsMjA5ODQsMjEwMDIsMjExNTIsMjExNTEsMjEyNTMsMjEyNTQsMjEyNzEsMjEyNzcsMjAxOTEsMjEzMjIsMjEzMjEsMjEzNDUsMjEzNDQsMjEzNTksMjEzNTgsMjE0MzUsMjE0ODcsMjE0NzYsMjE0OTEsMjE0ODQsMjE0ODYsMjE0ODEsMjE0ODAsMjE1MDAsMjE0OTYsMjE0OTMsMjE0ODMsMjE0NzgsMjE0ODIsMjE0OTAsMjE0ODksMjE0ODgsMjE0NzcsMjE0ODUsMjE0OTksMjIyMzUsMjIyMzQsMjI4MDYsMjI4MzAsMjI4MzMsMjI5MDAsMjI5MDIsMjMzODEsMjM0MjcsMjM2MTIsMjQwNDAsMjQwMzksMjQwMzgsMjQwNjYsMjQwNjcsMjQxNzksMjQxODgsMjQzMjEsMjQzNDQsMjQzNDMsMjQ1MTcsMjUwOTgsMjUxNzEsMjUxNzIsMjUxNzAsMjUxNjksMjYwMjEsMjYwODYsMjY0MTQsMjY0MTIsMjY0MTAsMjY0MTEsMjY0MTMsMjc0OTEsMjc1OTcsMjc2NjUsMjc2NjQsMjc3MDQsMjc3MTMsMjc3MTIsMjc3MTAsMjkzNTksMjk1NzIsMjk1NzcsMjk5MTYsMjk5MjYsMjk5NzYsMjk5ODMsMjk5OTIsMjk5OTMsMzAwMDAsMzAwMDEsMzAwMDIsMzAwMDMsMzAwOTEsMzAzMzMsMzAzODIsMzAzOTksMzA0NDYsMzA2ODMsMzA2OTAsMzA3MDcsMzEwMzQsMzExNjYsMzEzNDgsMzE0MzUsMTk5OTgsMTk5OTksMjAwNTAsMjAwNTEsMjAwNzMsMjAxMjEsMjAxMzIsMjAxMzQsMjAxMzMsMjAyMjMsMjAyMzMsMjAyNDksMjAyMzQsMjAyNDUsMjAyMzcsMjAyNDAsMjAyNDEsMjAyMzksMjAyMTAsMjAyMTQsMjAyMTksMjAyMDgsMjAyMTEsMjAyMjEsMjAyMjUsMjAyMzUsMjA4MDksMjA4MDcsMjA4MDYsMjA4MDgsMjA4NDAsMjA4NDksMjA4NzcsMjA5MTIsMjEwMTUsMjEwMDksMjEwMTAsMjEwMDYsMjEwMTQsMjExNTUsMjEyNTYsMjEyODEsMjEyODAsMjEzNjAsMjEzNjEsMjE1MTMsMjE1MTksMjE1MTYsMjE1MTQsMjE1MjAsMjE1MDUsMjE1MTUsMjE1MDgsMjE1MjEsMjE1MTcsMjE1MTIsMjE1MDcsMjE1MTgsMjE1MTAsMjE1MjIsMjIyNDAsMjIyMzgsMjIyMzcsMjIzMjMsMjIzMjAsMjIzMTIsMjIzMTcsMjIzMTYsMjIzMTksMjIzMTMsMjI4MDksMjI4MTAsMjI4MzksMjI4NDAsMjI5MTYsMjI5MDQsMjI5MTUsMjI5MDksMjI5MDUsMjI5MTQsMjI5MTMsMjMzODMsMjMzODQsMjM0MzEsMjM0MzIsMjM0MjksMjM0MzMsMjM1NDYsMjM1NzQsMjM2NzMsMjQwMzAsMjQwNzAsMjQxODIsMjQxODAsMjQzMzUsMjQzNDcsMjQ1MzcsMjQ1MzQsMjUxMDIsMjUxMDAsMjUxMDEsMjUxMDQsMjUxODcsMjUxNzksMjUxNzYsMjU5MTAsMjYwODksMjYwODgsMjYwOTIsMjYwOTMsMjYzNTQsMjYzNTUsMjYzNzcsMjY0MjksMjY0MjAsMjY0MTcsMjY0MjEsMjc0MjUsMjc0OTIsMjc1MTUsMjc2NzAsMjc3NDEsMjc3MzUsMjc3MzcsMjc3NDMsMjc3NDQsMjc3MjgsMjc3MzMsMjc3NDUsMjc3MzksMjc3MjUsMjc3MjYsMjg3ODQsMjkyNzksMjkyNzcsMzAzMzQsMzE0ODEsMzE4NTksMzE5OTIsMzI1NjYsMzI2NTAsMzI3MDEsMzI3NjksMzI3NzEsMzI3ODAsMzI3ODYsMzI4MTksMzI4OTUsMzI5MDUsMzI5MDcsMzI5MDgsMzMyNTEsMzMyNTgsMzMyNjcsMzMyNzYsMzMyOTIsMzMzMDcsMzMzMTEsMzMzOTAsMzMzOTQsMzM0MDYsMzQ0MTEsMzQ4ODAsMzQ4OTIsMzQ5MTUsMzUxOTksMzg0MzMsMjAwMTgsMjAxMzYsMjAzMDEsMjAzMDMsMjAyOTUsMjAzMTEsMjAzMTgsMjAyNzYsMjAzMTUsMjAzMDksMjAyNzIsMjAzMDQsMjAzMDUsMjAyODUsMjAyODIsMjAyODAsMjAyOTEsMjAzMDgsMjAyODQsMjAyOTQsMjAzMjMsMjAzMTYsMjAzMjAsMjAyNzEsMjAzMDIsMjAyNzgsMjAzMTMsMjAzMTcsMjAyOTYsMjAzMTQsMjA4MTIsMjA4MTEsMjA4MTMsMjA4NTMsMjA5MTgsMjA5MTksMjEwMjksMjEwMjgsMjEwMzMsMjEwMzQsMjEwMzIsMjExNjMsMjExNjEsMjExNjIsMjExNjQsMjEyODMsMjEzNjMsMjEzNjUsMjE1MzMsMjE1NDksMjE1MzQsMjE1NjYsMjE1NDIsMjE1ODIsMjE1NDMsMjE1NzQsMjE1NzEsMjE1NTUsMjE1NzYsMjE1NzAsMjE1MzEsMjE1NDUsMjE1NzgsMjE1NjEsMjE1NjMsMjE1NjAsMjE1NTAsMjE1NTcsMjE1NTgsMjE1MzYsMjE1NjQsMjE1NjgsMjE1NTMsMjE1NDcsMjE1MzUsMjE1NDgsMjIyNTAsMjIyNTYsMjIyNDQsMjIyNTEsMjIzNDYsMjIzNTMsMjIzMzYsMjIzNDksMjIzNDMsMjIzNTAsMjIzMzQsMjIzNTIsMjIzNTEsMjIzMzEsMjI3NjcsMjI4NDYsMjI5NDEsMjI5MzAsMjI5NTIsMjI5NDIsMjI5NDcsMjI5MzcsMjI5MzQsMjI5MjUsMjI5NDgsMjI5MzEsMjI5MjIsMjI5NDksMjMzODksMjMzODgsMjMzODYsMjMzODcsMjM0MzYsMjM0MzUsMjM0MzksMjM1OTYsMjM2MTYsMjM2MTcsMjM2MTUsMjM2MTQsMjM2OTYsMjM2OTcsMjM3MDAsMjM2OTIsMjQwNDMsMjQwNzYsMjQyMDcsMjQxOTksMjQyMDIsMjQzMTEsMjQzMjQsMjQzNTEsMjQ0MjAsMjQ0MTgsMjQ0MzksMjQ0NDEsMjQ1MzYsMjQ1MjQsMjQ1MzUsMjQ1MjUsMjQ1NjEsMjQ1NTUsMjQ1NjgsMjQ1NTQsMjUxMDYsMjUxMDUsMjUyMjAsMjUyMzksMjUyMzgsMjUyMTYsMjUyMDYsMjUyMjUsMjUxOTcsMjUyMjYsMjUyMTIsMjUyMTQsMjUyMDksMjUyMDMsMjUyMzQsMjUxOTksMjUyNDAsMjUxOTgsMjUyMzcsMjUyMzUsMjUyMzMsMjUyMjIsMjU5MTMsMjU5MTUsMjU5MTIsMjYwOTcsMjYzNTYsMjY0NjMsMjY0NDYsMjY0NDcsMjY0NDgsMjY0NDksMjY0NjAsMjY0NTQsMjY0NjIsMjY0NDEsMjY0MzgsMjY0NjQsMjY0NTEsMjY0NTUsMjc0OTMsMjc1OTksMjc3MTQsMjc3NDIsMjc4MDEsMjc3NzcsMjc3ODQsMjc3ODUsMjc3ODEsMjc4MDMsMjc3NTQsMjc3NzAsMjc3OTIsMjc3NjAsMjc3ODgsMjc3NTIsMjc3OTgsMjc3OTQsMjc3NzMsMjc3NzksMjc3NjIsMjc3NzQsMjc3NjQsMjc3ODIsMjc3NjYsMjc3ODksMjc3OTYsMjc4MDAsMjc3NzgsMjg3OTAsMjg3OTYsMjg3OTcsMjg3OTIsMjkyODIsMjkyODEsMjkyODAsMjkzODAsMjkzNzgsMjk1OTAsMjk5OTYsMjk5OTUsMzAwMDcsMzAwMDgsMzAzMzgsMzA0NDcsMzA2OTEsMzExNjksMzExNjgsMzExNjcsMzEzNTAsMzE5OTUsMzI1OTcsMzI5MTgsMzI5MTUsMzI5MjUsMzI5MjAsMzI5MjMsMzI5MjIsMzI5NDYsMzMzOTEsMzM0MjYsMzM0MTksMzM0MjEsMzUyMTEsMzUyODIsMzUzMjgsMzU4OTUsMzU5MTAsMzU5MjUsMzU5OTcsMzYxOTYsMzYyMDgsMzYyNzUsMzY1MjMsMzY1NTQsMzY3NjMsMzY3ODQsMzY4MDIsMzY4MDYsMzY4MDUsMzY4MDQsMjQwMzMsMzcwMDksMzcwMjYsMzcwMzQsMzcwMzAsMzcwMjcsMzcxOTMsMzczMTgsMzczMjQsMzg0NTAsMzg0NDYsMzg0NDksMzg0NDIsMzg0NDQsMjAwMDYsMjAwNTQsMjAwODMsMjAxMDcsMjAxMjMsMjAxMjYsMjAxMzksMjAxNDAsMjAzMzUsMjAzODEsMjAzNjUsMjAzMzksMjAzNTEsMjAzMzIsMjAzNzksMjAzNjMsMjAzNTgsMjAzNTUsMjAzMzYsMjAzNDEsMjAzNjAsMjAzMjksMjAzNDcsMjAzNzQsMjAzNTAsMjAzNjcsMjAzNjksMjAzNDYsMjA4MjAsMjA4MTgsMjA4MjEsMjA4NDEsMjA4NTUsMjA4NTQsMjA4NTYsMjA5MjUsMjA5ODksMjEwNTEsMjEwNDgsMjEwNDcsMjEwNTAsMjEwNDAsMjEwMzgsMjEwNDYsMjEwNTcsMjExODIsMjExNzksMjEzMzAsMjEzMzIsMjEzMzEsMjEzMjksMjEzNTAsMjEzNjcsMjEzNjgsMjEzNjksMjE0NjIsMjE0NjAsMjE0NjMsMjE2MTksMjE2MjEsMjE2NTQsMjE2MjQsMjE2NTMsMjE2MzIsMjE2MjcsMjE2MjMsMjE2MzYsMjE2NTAsMjE2MzgsMjE2MjgsMjE2NDgsMjE2MTcsMjE2MjIsMjE2NDQsMjE2NTgsMjE2MDIsMjE2MDgsMjE2NDMsMjE2MjksMjE2NDYsMjIyNjYsMjI0MDMsMjIzOTEsMjIzNzgsMjIzNzcsMjIzNjksMjIzNzQsMjIzNzIsMjIzOTYsMjI4MTIsMjI4NTcsMjI4NTUsMjI4NTYsMjI4NTIsMjI4NjgsMjI5NzQsMjI5NzEsMjI5OTYsMjI5NjksMjI5NTgsMjI5OTMsMjI5ODIsMjI5OTIsMjI5ODksMjI5ODcsMjI5OTUsMjI5ODYsMjI5NTksMjI5NjMsMjI5OTQsMjI5ODEsMjMzOTEsMjMzOTYsMjMzOTUsMjM0NDcsMjM0NTAsMjM0NDgsMjM0NTIsMjM0NDksMjM0NTEsMjM1NzgsMjM2MjQsMjM2MjEsMjM2MjIsMjM3MzUsMjM3MTMsMjM3MzYsMjM3MjEsMjM3MjMsMjM3MjksMjM3MzEsMjQwODgsMjQwOTAsMjQwODYsMjQwODUsMjQwOTEsMjQwODEsMjQxODQsMjQyMTgsMjQyMTUsMjQyMjAsMjQyMTMsMjQyMTQsMjQzMTAsMjQzNTgsMjQzNTksMjQzNjEsMjQ0NDgsMjQ0NDksMjQ0NDcsMjQ0NDQsMjQ1NDEsMjQ1NDQsMjQ1NzMsMjQ1NjUsMjQ1NzUsMjQ1OTEsMjQ1OTYsMjQ2MjMsMjQ2MjksMjQ1OTgsMjQ2MTgsMjQ1OTcsMjQ2MDksMjQ2MTUsMjQ2MTcsMjQ2MTksMjQ2MDMsMjUxMTAsMjUxMDksMjUxNTEsMjUxNTAsMjUxNTIsMjUyMTUsMjUyODksMjUyOTIsMjUyODQsMjUyNzksMjUyODIsMjUyNzMsMjUyOTgsMjUzMDcsMjUyNTksMjUyOTksMjUzMDAsMjUyOTEsMjUyODgsMjUyNTYsMjUyNzcsMjUyNzYsMjUyOTYsMjUzMDUsMjUyODcsMjUyOTMsMjUyNjksMjUzMDYsMjUyNjUsMjUzMDQsMjUzMDIsMjUzMDMsMjUyODYsMjUyNjAsMjUyOTQsMjU5MTgsMjYwMjMsMjYwNDQsMjYxMDYsMjYxMzIsMjYxMzEsMjYxMjQsMjYxMTgsMjYxMTQsMjYxMjYsMjYxMTIsMjYxMjcsMjYxMzMsMjYxMjIsMjYxMTksMjYzODEsMjYzNzksMjY0NzcsMjY1MDcsMjY1MTcsMjY0ODEsMjY1MjQsMjY0ODMsMjY0ODcsMjY1MDMsMjY1MjUsMjY1MTksMjY0NzksMjY0ODAsMjY0OTUsMjY1MDUsMjY0OTQsMjY1MTIsMjY0ODUsMjY1MjIsMjY1MTUsMjY0OTIsMjY0NzQsMjY0ODIsMjc0MjcsMjc0OTQsMjc0OTUsMjc1MTksMjc2NjcsMjc2NzUsMjc4NzUsMjc4ODAsMjc4OTEsMjc4MjUsMjc4NTIsMjc4NzcsMjc4MjcsMjc4MzcsMjc4MzgsMjc4MzYsMjc4NzQsMjc4MTksMjc4NjEsMjc4NTksMjc4MzIsMjc4NDQsMjc4MzMsMjc4NDEsMjc4MjIsMjc4NjMsMjc4NDUsMjc4ODksMjc4MzksMjc4MzUsMjc4NzMsMjc4NjcsMjc4NTAsMjc4MjAsMjc4ODcsMjc4NjgsMjc4NjIsMjc4NzIsMjg4MjEsMjg4MTQsMjg4MTgsMjg4MTAsMjg4MjUsMjkyMjgsMjkyMjksMjkyNDAsMjkyNTYsMjkyODcsMjkyODksMjkzNzYsMjkzOTAsMjk0MDEsMjkzOTksMjkzOTIsMjk2MDksMjk2MDgsMjk1OTksMjk2MTEsMjk2MDUsMzAwMTMsMzAxMDksMzAxMDUsMzAxMDYsMzAzNDAsMzA0MDIsMzA0NTAsMzA0NTIsMzA2OTMsMzA3MTcsMzEwMzgsMzEwNDAsMzEwNDEsMzExNzcsMzExNzYsMzEzNTQsMzEzNTMsMzE0ODIsMzE5OTgsMzI1OTYsMzI2NTIsMzI2NTEsMzI3NzMsMzI5NTQsMzI5MzMsMzI5MzAsMzI5NDUsMzI5MjksMzI5MzksMzI5MzcsMzI5NDgsMzI5MzgsMzI5NDMsMzMyNTMsMzMyNzgsMzMyOTMsMzM0NTksMzM0MzcsMzM0MzMsMzM0NTMsMzM0NjksMzM0MzksMzM0NjUsMzM0NTcsMzM0NTIsMzM0NDUsMzM0NTUsMzM0NjQsMzM0NDMsMzM0NTYsMzM0NzAsMzM0NjMsMzQzODIsMzQ0MTcsMjEwMjEsMzQ5MjAsMzY1NTUsMzY4MTQsMzY4MjAsMzY4MTcsMzcwNDUsMzcwNDgsMzcwNDEsMzcwNDYsMzczMTksMzczMjksMzgyNjMsMzgyNzIsMzg0MjgsMzg0NjQsMzg0NjMsMzg0NTksMzg0NjgsMzg0NjYsMzg1ODUsMzg2MzIsMzg3MzgsMzg3NTAsMjAxMjcsMjAxNDEsMjAxNDIsMjA0NDksMjA0MDUsMjAzOTksMjA0MTUsMjA0NDgsMjA0MzMsMjA0MzEsMjA0NDUsMjA0MTksMjA0MDYsMjA0NDAsMjA0NDcsMjA0MjYsMjA0MzksMjAzOTgsMjA0MzIsMjA0MjAsMjA0MTgsMjA0NDIsMjA0MzAsMjA0NDYsMjA0MDcsMjA4MjMsMjA4ODIsMjA4ODEsMjA4OTYsMjEwNzAsMjEwNTksMjEwNjYsMjEwNjksMjEwNjgsMjEwNjcsMjEwNjMsMjExOTEsMjExOTMsMjExODcsMjExODUsMjEyNjEsMjEzMzUsMjEzNzEsMjE0MDIsMjE0NjcsMjE2NzYsMjE2OTYsMjE2NzIsMjE3MTAsMjE3MDUsMjE2ODgsMjE2NzAsMjE2ODMsMjE3MDMsMjE2OTgsMjE2OTMsMjE2NzQsMjE2OTcsMjE3MDAsMjE3MDQsMjE2NzksMjE2NzUsMjE2ODEsMjE2OTEsMjE2NzMsMjE2NzEsMjE2OTUsMjIyNzEsMjI0MDIsMjI0MTEsMjI0MzIsMjI0MzUsMjI0MzQsMjI0NzgsMjI0NDYsMjI0MTksMjI4NjksMjI4NjUsMjI4NjMsMjI4NjIsMjI4NjQsMjMwMDQsMjMwMDAsMjMwMzksMjMwMTEsMjMwMTYsMjMwNDMsMjMwMTMsMjMwMTgsMjMwMDIsMjMwMTQsMjMwNDEsMjMwMzUsMjM0MDEsMjM0NTksMjM0NjIsMjM0NjAsMjM0NTgsMjM0NjEsMjM1NTMsMjM2MzAsMjM2MzEsMjM2MjksMjM2MjcsMjM3NjksMjM3NjIsMjQwNTUsMjQwOTMsMjQxMDEsMjQwOTUsMjQxODksMjQyMjQsMjQyMzAsMjQzMTQsMjQzMjgsMjQzNjUsMjQ0MjEsMjQ0NTYsMjQ0NTMsMjQ0NTgsMjQ0NTksMjQ0NTUsMjQ0NjAsMjQ0NTcsMjQ1OTQsMjQ2MDUsMjQ2MDgsMjQ2MTMsMjQ1OTAsMjQ2MTYsMjQ2NTMsMjQ2ODgsMjQ2ODAsMjQ2NzQsMjQ2NDYsMjQ2NDMsMjQ2ODQsMjQ2ODMsMjQ2ODIsMjQ2NzYsMjUxNTMsMjUzMDgsMjUzNjYsMjUzNTMsMjUzNDAsMjUzMjUsMjUzNDUsMjUzMjYsMjUzNDEsMjUzNTEsMjUzMjksMjUzMzUsMjUzMjcsMjUzMjQsMjUzNDIsMjUzMzIsMjUzNjEsMjUzNDYsMjU5MTksMjU5MjUsMjYwMjcsMjYwNDUsMjYwODIsMjYxNDksMjYxNTcsMjYxNDQsMjYxNTEsMjYxNTksMjYxNDMsMjYxNTIsMjYxNjEsMjYxNDgsMjYzNTksMjY2MjMsMjY1NzksMjY2MDksMjY1ODAsMjY1NzYsMjY2MDQsMjY1NTAsMjY1NDMsMjY2MTMsMjY2MDEsMjY2MDcsMjY1NjQsMjY1NzcsMjY1NDgsMjY1ODYsMjY1OTcsMjY1NTIsMjY1NzUsMjY1OTAsMjY2MTEsMjY1NDQsMjY1ODUsMjY1OTQsMjY1ODksMjY1NzgsMjc0OTgsMjc1MjMsMjc1MjYsMjc1NzMsMjc2MDIsMjc2MDcsMjc2NzksMjc4NDksMjc5MTUsMjc5NTQsMjc5NDYsMjc5NjksMjc5NDEsMjc5MTYsMjc5NTMsMjc5MzQsMjc5MjcsMjc5NjMsMjc5NjUsMjc5NjYsMjc5NTgsMjc5MzEsMjc4OTMsMjc5NjEsMjc5NDMsMjc5NjAsMjc5NDUsMjc5NTAsMjc5NTcsMjc5MTgsMjc5NDcsMjg4NDMsMjg4NTgsMjg4NTEsMjg4NDQsMjg4NDcsMjg4NDUsMjg4NTYsMjg4NDYsMjg4MzYsMjkyMzIsMjkyOTgsMjkyOTUsMjkzMDAsMjk0MTcsMjk0MDgsMjk0MDksMjk2MjMsMjk2NDIsMjk2MjcsMjk2MTgsMjk2NDUsMjk2MzIsMjk2MTksMjk5NzgsMjk5OTcsMzAwMzEsMzAwMjgsMzAwMzAsMzAwMjcsMzAxMjMsMzAxMTYsMzAxMTcsMzAxMTQsMzAxMTUsMzAzMjgsMzAzNDIsMzAzNDMsMzAzNDQsMzA0MDgsMzA0MDYsMzA0MDMsMzA0MDUsMzA0NjUsMzA0NTcsMzA0NTYsMzA0NzMsMzA0NzUsMzA0NjIsMzA0NjAsMzA0NzEsMzA2ODQsMzA3MjIsMzA3NDAsMzA3MzIsMzA3MzMsMzEwNDYsMzEwNDksMzEwNDgsMzEwNDcsMzExNjEsMzExNjIsMzExODUsMzExODYsMzExNzksMzEzNTksMzEzNjEsMzE0ODcsMzE0ODUsMzE4NjksMzIwMDIsMzIwMDUsMzIwMDAsMzIwMDksMzIwMDcsMzIwMDQsMzIwMDYsMzI1NjgsMzI2NTQsMzI3MDMsMzI3NzIsMzI3ODQsMzI3ODEsMzI3ODUsMzI4MjIsMzI5ODIsMzI5OTcsMzI5ODYsMzI5NjMsMzI5NjQsMzI5NzIsMzI5OTMsMzI5ODcsMzI5NzQsMzI5OTAsMzI5OTYsMzI5ODksMzMyNjgsMzMzMTQsMzM1MTEsMzM1MzksMzM1NDEsMzM1MDcsMzM0OTksMzM1MTAsMzM1NDAsMzM1MDksMzM1MzgsMzM1NDUsMzM0OTAsMzM0OTUsMzM1MjEsMzM1MzcsMzM1MDAsMzM0OTIsMzM0ODksMzM1MDIsMzM0OTEsMzM1MDMsMzM1MTksMzM1NDIsMzQzODQsMzQ0MjUsMzQ0MjcsMzQ0MjYsMzQ4OTMsMzQ5MjMsMzUyMDEsMzUyODQsMzUzMzYsMzUzMzAsMzUzMzEsMzU5OTgsMzYwMDAsMzYyMTIsMzYyMTEsMzYyNzYsMzY1NTcsMzY1NTYsMzY4NDgsMzY4MzgsMzY4MzQsMzY4NDIsMzY4MzcsMzY4NDUsMzY4NDMsMzY4MzYsMzY4NDAsMzcwNjYsMzcwNzAsMzcwNTcsMzcwNTksMzcxOTUsMzcxOTQsMzczMjUsMzgyNzQsMzg0ODAsMzg0NzUsMzg0NzYsMzg0NzcsMzg3NTQsMzg3NjEsMzg4NTksMzg4OTMsMzg4OTksMzg5MTMsMzkwODAsMzkxMzEsMzkxMzUsMzkzMTgsMzkzMjEsMjAwNTYsMjAxNDcsMjA0OTIsMjA0OTMsMjA1MTUsMjA0NjMsMjA1MTgsMjA1MTcsMjA0NzIsMjA1MjEsMjA1MDIsMjA0ODYsMjA1NDAsMjA1MTEsMjA1MDYsMjA0OTgsMjA0OTcsMjA0NzQsMjA0ODAsMjA1MDAsMjA1MjAsMjA0NjUsMjA1MTMsMjA0OTEsMjA1MDUsMjA1MDQsMjA0NjcsMjA0NjIsMjA1MjUsMjA1MjIsMjA0NzgsMjA1MjMsMjA0ODksMjA4NjAsMjA5MDAsMjA5MDEsMjA4OTgsMjA5NDEsMjA5NDAsMjA5MzQsMjA5MzksMjEwNzgsMjEwODQsMjEwNzYsMjEwODMsMjEwODUsMjEyOTAsMjEzNzUsMjE0MDcsMjE0MDUsMjE0NzEsMjE3MzYsMjE3NzYsMjE3NjEsMjE4MTUsMjE3NTYsMjE3MzMsMjE3NDYsMjE3NjYsMjE3NTQsMjE3ODAsMjE3MzcsMjE3NDEsMjE3MjksMjE3NjksMjE3NDIsMjE3MzgsMjE3MzQsMjE3OTksMjE3NjcsMjE3NTcsMjE3NzUsMjIyNzUsMjIyNzYsMjI0NjYsMjI0ODQsMjI0NzUsMjI0NjcsMjI1MzcsMjI3OTksMjI4NzEsMjI4NzIsMjI4NzQsMjMwNTcsMjMwNjQsMjMwNjgsMjMwNzEsMjMwNjcsMjMwNTksMjMwMjAsMjMwNzIsMjMwNzUsMjMwODEsMjMwNzcsMjMwNTIsMjMwNDksMjM0MDMsMjM2NDAsMjM0NzIsMjM0NzUsMjM0NzgsMjM0NzYsMjM0NzAsMjM0NzcsMjM0ODEsMjM0ODAsMjM1NTYsMjM2MzMsMjM2MzcsMjM2MzIsMjM3ODksMjM4MDUsMjM4MDMsMjM3ODYsMjM3ODQsMjM3OTIsMjM3OTgsMjM4MDksMjM3OTYsMjQwNDYsMjQxMDksMjQxMDcsMjQyMzUsMjQyMzcsMjQyMzEsMjQzNjksMjQ0NjYsMjQ0NjUsMjQ0NjQsMjQ2NjUsMjQ2NzUsMjQ2NzcsMjQ2NTYsMjQ2NjEsMjQ2ODUsMjQ2ODEsMjQ2ODcsMjQ3MDgsMjQ3MzUsMjQ3MzAsMjQ3MTcsMjQ3MjQsMjQ3MTYsMjQ3MDksMjQ3MjYsMjUxNTksMjUzMzEsMjUzNTIsMjUzNDMsMjU0MjIsMjU0MDYsMjUzOTEsMjU0MjksMjU0MTAsMjU0MTQsMjU0MjMsMjU0MTcsMjU0MDIsMjU0MjQsMjU0MDUsMjUzODYsMjUzODcsMjUzODQsMjU0MjEsMjU0MjAsMjU5MjgsMjU5MjksMjYwMDksMjYwNDksMjYwNTMsMjYxNzgsMjYxODUsMjYxOTEsMjYxNzksMjYxOTQsMjYxODgsMjYxODEsMjYxNzcsMjYzNjAsMjYzODgsMjYzODksMjYzOTEsMjY2NTcsMjY2ODAsMjY2OTYsMjY2OTQsMjY3MDcsMjY2ODEsMjY2OTAsMjY3MDgsMjY2NjUsMjY4MDMsMjY2NDcsMjY3MDAsMjY3MDUsMjY2ODUsMjY2MTIsMjY3MDQsMjY2ODgsMjY2ODQsMjY2OTEsMjY2NjYsMjY2OTMsMjY2NDMsMjY2NDgsMjY2ODksMjc1MzAsMjc1MjksMjc1NzUsMjc2ODMsMjc2ODcsMjc2ODgsMjc2ODYsMjc2ODQsMjc4ODgsMjgwMTAsMjgwNTMsMjgwNDAsMjgwMzksMjgwMDYsMjgwMjQsMjgwMjMsMjc5OTMsMjgwNTEsMjgwMTIsMjgwNDEsMjgwMTQsMjc5OTQsMjgwMjAsMjgwMDksMjgwNDQsMjgwNDIsMjgwMjUsMjgwMzcsMjgwMDUsMjgwNTIsMjg4NzQsMjg4ODgsMjg5MDAsMjg4ODksMjg4NzIsMjg4NzksMjkyNDEsMjkzMDUsMjk0MzYsMjk0MzMsMjk0MzcsMjk0MzIsMjk0MzEsMjk1NzQsMjk2NzcsMjk3MDUsMjk2NzgsMjk2NjQsMjk2NzQsMjk2NjIsMzAwMzYsMzAwNDUsMzAwNDQsMzAwNDIsMzAwNDEsMzAxNDIsMzAxNDksMzAxNTEsMzAxMzAsMzAxMzEsMzAxNDEsMzAxNDAsMzAxMzcsMzAxNDYsMzAxMzYsMzAzNDcsMzAzODQsMzA0MTAsMzA0MTMsMzA0MTQsMzA1MDUsMzA0OTUsMzA0OTYsMzA1MDQsMzA2OTcsMzA3NjgsMzA3NTksMzA3NzYsMzA3NDksMzA3NzIsMzA3NzUsMzA3NTcsMzA3NjUsMzA3NTIsMzA3NTEsMzA3NzAsMzEwNjEsMzEwNTYsMzEwNzIsMzEwNzEsMzEwNjIsMzEwNzAsMzEwNjksMzEwNjMsMzEwNjYsMzEyMDQsMzEyMDMsMzEyMDcsMzExOTksMzEyMDYsMzEyMDksMzExOTIsMzEzNjQsMzEzNjgsMzE0NDksMzE0OTQsMzE1MDUsMzE4ODEsMzIwMzMsMzIwMjMsMzIwMTEsMzIwMTAsMzIwMzIsMzIwMzQsMzIwMjAsMzIwMTYsMzIwMjEsMzIwMjYsMzIwMjgsMzIwMTMsMzIwMjUsMzIwMjcsMzI1NzAsMzI2MDcsMzI2NjAsMzI3MDksMzI3MDUsMzI3NzQsMzI3OTIsMzI3ODksMzI3OTMsMzI3OTEsMzI4MjksMzI4MzEsMzMwMDksMzMwMjYsMzMwMDgsMzMwMjksMzMwMDUsMzMwMTIsMzMwMzAsMzMwMTYsMzMwMTEsMzMwMzIsMzMwMjEsMzMwMzQsMzMwMjAsMzMwMDcsMzMyNjEsMzMyNjAsMzMyODAsMzMyOTYsMzMzMjIsMzMzMjMsMzMzMjAsMzMzMjQsMzM0NjcsMzM1NzksMzM2MTgsMzM2MjAsMzM2MTAsMzM1OTIsMzM2MTYsMzM2MDksMzM1ODksMzM1ODgsMzM2MTUsMzM1ODYsMzM1OTMsMzM1OTAsMzM1NTksMzM2MDAsMzM1ODUsMzM1NzYsMzM2MDMsMzQzODgsMzQ0NDIsMzQ0NzQsMzQ0NTEsMzQ0NjgsMzQ0NzMsMzQ0NDQsMzQ0NjcsMzQ0NjAsMzQ5MjgsMzQ5MzUsMzQ5NDUsMzQ5NDYsMzQ5NDEsMzQ5MzcsMzUzNTIsMzUzNDQsMzUzNDIsMzUzNDAsMzUzNDksMzUzMzgsMzUzNTEsMzUzNDcsMzUzNTAsMzUzNDMsMzUzNDUsMzU5MTIsMzU5NjIsMzU5NjEsMzYwMDEsMzYwMDIsMzYyMTUsMzY1MjQsMzY1NjIsMzY1NjQsMzY1NTksMzY3ODUsMzY4NjUsMzY4NzAsMzY4NTUsMzY4NjQsMzY4NTgsMzY4NTIsMzY4NjcsMzY4NjEsMzY4NjksMzY4NTYsMzcwMTMsMzcwODksMzcwODUsMzcwOTAsMzcyMDIsMzcxOTcsMzcxOTYsMzczMzYsMzczNDEsMzczMzUsMzczNDAsMzczMzcsMzgyNzUsMzg0OTgsMzg0OTksMzg0OTcsMzg0OTEsMzg0OTMsMzg1MDAsMzg0ODgsMzg0OTQsMzg1ODcsMzkxMzgsMzkzNDAsMzk1OTIsMzk2NDAsMzk3MTcsMzk3MzAsMzk3NDAsMjAwOTQsMjA2MDIsMjA2MDUsMjA1NzIsMjA1NTEsMjA1NDcsMjA1NTYsMjA1NzAsMjA1NTMsMjA1ODEsMjA1OTgsMjA1NTgsMjA1NjUsMjA1OTcsMjA1OTYsMjA1OTksMjA1NTksMjA0OTUsMjA1OTEsMjA1ODksMjA4MjgsMjA4ODUsMjA5NzYsMjEwOTgsMjExMDMsMjEyMDIsMjEyMDksMjEyMDgsMjEyMDUsMjEyNjQsMjEyNjMsMjEyNzMsMjEzMTEsMjEzMTIsMjEzMTAsMjE0NDMsMjYzNjQsMjE4MzAsMjE4NjYsMjE4NjIsMjE4MjgsMjE4NTQsMjE4NTcsMjE4MjcsMjE4MzQsMjE4MDksMjE4NDYsMjE4MzksMjE4NDUsMjE4MDcsMjE4NjAsMjE4MTYsMjE4MDYsMjE4NTIsMjE4MDQsMjE4NTksMjE4MTEsMjE4MjUsMjE4NDcsMjIyODAsMjIyODMsMjIyODEsMjI0OTUsMjI1MzMsMjI1MzgsMjI1MzQsMjI0OTYsMjI1MDAsMjI1MjIsMjI1MzAsMjI1ODEsMjI1MTksMjI1MjEsMjI4MTYsMjI4ODIsMjMwOTQsMjMxMDUsMjMxMTMsMjMxNDIsMjMxNDYsMjMxMDQsMjMxMDAsMjMxMzgsMjMxMzAsMjMxMTAsMjMxMTQsMjM0MDgsMjM0OTUsMjM0OTMsMjM0OTIsMjM0OTAsMjM0ODcsMjM0OTQsMjM1NjEsMjM1NjAsMjM1NTksMjM2NDgsMjM2NDQsMjM2NDUsMjM4MTUsMjM4MTQsMjM4MjIsMjM4MzUsMjM4MzAsMjM4NDIsMjM4MjUsMjM4NDksMjM4MjgsMjM4MzMsMjM4NDQsMjM4NDcsMjM4MzEsMjQwMzQsMjQxMjAsMjQxMTgsMjQxMTUsMjQxMTksMjQyNDcsMjQyNDgsMjQyNDYsMjQyNDUsMjQyNTQsMjQzNzMsMjQzNzUsMjQ0MDcsMjQ0MjgsMjQ0MjUsMjQ0MjcsMjQ0NzEsMjQ0NzMsMjQ0NzgsMjQ0NzIsMjQ0ODEsMjQ0ODAsMjQ0NzYsMjQ3MDMsMjQ3MzksMjQ3MTMsMjQ3MzYsMjQ3NDQsMjQ3NzksMjQ3NTYsMjQ4MDYsMjQ3NjUsMjQ3NzMsMjQ3NjMsMjQ3NTcsMjQ3OTYsMjQ3NjQsMjQ3OTIsMjQ3ODksMjQ3NzQsMjQ3OTksMjQ3NjAsMjQ3OTQsMjQ3NzUsMjUxMTQsMjUxMTUsMjUxNjAsMjU1MDQsMjU1MTEsMjU0NTgsMjU0OTQsMjU1MDYsMjU1MDksMjU0NjMsMjU0NDcsMjU0OTYsMjU1MTQsMjU0NTcsMjU1MTMsMjU0ODEsMjU0NzUsMjU0OTksMjU0NTEsMjU1MTIsMjU0NzYsMjU0ODAsMjU0OTcsMjU1MDUsMjU1MTYsMjU0OTAsMjU0ODcsMjU0NzIsMjU0NjcsMjU0NDksMjU0NDgsMjU0NjYsMjU5NDksMjU5NDIsMjU5MzcsMjU5NDUsMjU5NDMsMjE4NTUsMjU5MzUsMjU5NDQsMjU5NDEsMjU5NDAsMjYwMTIsMjYwMTEsMjYwMjgsMjYwNjMsMjYwNTksMjYwNjAsMjYwNjIsMjYyMDUsMjYyMDIsMjYyMTIsMjYyMTYsMjYyMTQsMjYyMDYsMjYzNjEsMjEyMDcsMjYzOTUsMjY3NTMsMjY3OTksMjY3ODYsMjY3NzEsMjY4MDUsMjY3NTEsMjY3NDIsMjY4MDEsMjY3OTEsMjY3NzUsMjY4MDAsMjY3NTUsMjY4MjAsMjY3OTcsMjY3NTgsMjY3NTcsMjY3NzIsMjY3ODEsMjY3OTIsMjY3ODMsMjY3ODUsMjY3NTQsMjc0NDIsMjc1NzgsMjc2MjcsMjc2MjgsMjc2OTEsMjgwNDYsMjgwOTIsMjgxNDcsMjgxMjEsMjgwODIsMjgxMjksMjgxMDgsMjgxMzIsMjgxNTUsMjgxNTQsMjgxNjUsMjgxMDMsMjgxMDcsMjgwNzksMjgxMTMsMjgwNzgsMjgxMjYsMjgxNTMsMjgwODgsMjgxNTEsMjgxNDksMjgxMDEsMjgxMTQsMjgxODYsMjgwODUsMjgxMjIsMjgxMzksMjgxMjAsMjgxMzgsMjgxNDUsMjgxNDIsMjgxMzYsMjgxMDIsMjgxMDAsMjgwNzQsMjgxNDAsMjgwOTUsMjgxMzQsMjg5MjEsMjg5MzcsMjg5MzgsMjg5MjUsMjg5MTEsMjkyNDUsMjkzMDksMjkzMTMsMjk0NjgsMjk0NjcsMjk0NjIsMjk0NTksMjk0NjUsMjk1NzUsMjk3MDEsMjk3MDYsMjk2OTksMjk3MDIsMjk2OTQsMjk3MDksMjk5MjAsMjk5NDIsMjk5NDMsMjk5ODAsMjk5ODYsMzAwNTMsMzAwNTQsMzAwNTAsMzAwNjQsMzAwOTUsMzAxNjQsMzAxNjUsMzAxMzMsMzAxNTQsMzAxNTcsMzAzNTAsMzA0MjAsMzA0MTgsMzA0MjcsMzA1MTksMzA1MjYsMzA1MjQsMzA1MTgsMzA1MjAsMzA1MjIsMzA4MjcsMzA3ODcsMzA3OTgsMzEwNzcsMzEwODAsMzEwODUsMzEyMjcsMzEzNzgsMzEzODEsMzE1MjAsMzE1MjgsMzE1MTUsMzE1MzIsMzE1MjYsMzE1MTMsMzE1MTgsMzE1MzQsMzE4OTAsMzE4OTUsMzE4OTMsMzIwNzAsMzIwNjcsMzIxMTMsMzIwNDYsMzIwNTcsMzIwNjAsMzIwNjQsMzIwNDgsMzIwNTEsMzIwNjgsMzIwNDcsMzIwNjYsMzIwNTAsMzIwNDksMzI1NzMsMzI2NzAsMzI2NjYsMzI3MTYsMzI3MTgsMzI3MjIsMzI3OTYsMzI4NDIsMzI4MzgsMzMwNzEsMzMwNDYsMzMwNTksMzMwNjcsMzMwNjUsMzMwNzIsMzMwNjAsMzMyODIsMzMzMzMsMzMzMzUsMzMzMzQsMzMzMzcsMzM2NzgsMzM2OTQsMzM2ODgsMzM2NTYsMzM2OTgsMzM2ODYsMzM3MjUsMzM3MDcsMzM2ODIsMzM2NzQsMzM2ODMsMzM2NzMsMzM2OTYsMzM2NTUsMzM2NTksMzM2NjAsMzM2NzAsMzM3MDMsMzQzODksMjQ0MjYsMzQ1MDMsMzQ0OTYsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MDIsMzQ1MDcsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ4OTksMzQ5NzQsMzQ5NTIsMzQ5ODcsMzQ5NjIsMzQ5NjYsMzQ5NTcsMzQ5NTUsMzUyMTksMzUyMTUsMzUzNzAsMzUzNTcsMzUzNjMsMzUzNjUsMzUzNzcsMzUzNzMsMzUzNTksMzUzNTUsMzUzNjIsMzU5MTMsMzU5MzAsMzYwMDksMzYwMTIsMzYwMTEsMzYwMDgsMzYwMTAsMzYwMDcsMzYxOTksMzYxOTgsMzYyODYsMzYyODIsMzY1NzEsMzY1NzUsMzY4ODksMzY4NzcsMzY4OTAsMzY4ODcsMzY4OTksMzY4OTUsMzY4OTMsMzY4ODAsMzY4ODUsMzY4OTQsMzY4OTYsMzY4NzksMzY4OTgsMzY4ODYsMzY4OTEsMzY4ODQsMzcwOTYsMzcxMDEsMzcxMTcsMzcyMDcsMzczMjYsMzczNjUsMzczNTAsMzczNDcsMzczNTEsMzczNTcsMzczNTMsMzgyODEsMzg1MDYsMzg1MTcsMzg1MTUsMzg1MjAsMzg1MTIsMzg1MTYsMzg1MTgsMzg1MTksMzg1MDgsMzg1OTIsMzg2MzQsMzg2MzMsMzE0NTYsMzE0NTUsMzg5MTQsMzg5MTUsMzk3NzAsNDAxNjUsNDA1NjUsNDA1NzUsNDA2MTMsNDA2MzUsMjA2NDIsMjA2MjEsMjA2MTMsMjA2MzMsMjA2MjUsMjA2MDgsMjA2MzAsMjA2MzIsMjA2MzQsMjYzNjgsMjA5NzcsMjExMDYsMjExMDgsMjExMDksMjEwOTcsMjEyMTQsMjEyMTMsMjEyMTEsMjEzMzgsMjE0MTMsMjE4ODMsMjE4ODgsMjE5MjcsMjE4ODQsMjE4OTgsMjE5MTcsMjE5MTIsMjE4OTAsMjE5MTYsMjE5MzAsMjE5MDgsMjE4OTUsMjE4OTksMjE4OTEsMjE5MzksMjE5MzQsMjE5MTksMjE4MjIsMjE5MzgsMjE5MTQsMjE5NDcsMjE5MzIsMjE5MzcsMjE4ODYsMjE4OTcsMjE5MzEsMjE5MTMsMjIyODUsMjI1NzUsMjI1NzAsMjI1ODAsMjI1NjQsMjI1NzYsMjI1NzcsMjI1NjEsMjI1NTcsMjI1NjAsMjI3NzcsMjI3NzgsMjI4ODAsMjMxNTksMjMxOTQsMjMxNjcsMjMxODYsMjMxOTUsMjMyMDcsMjM0MTEsMjM0MDksMjM1MDYsMjM1MDAsMjM1MDcsMjM1MDQsMjM1NjIsMjM1NjMsMjM2MDEsMjM4ODQsMjM4ODgsMjM4NjAsMjM4NzksMjQwNjEsMjQxMzMsMjQxMjUsMjQxMjgsMjQxMzEsMjQxOTAsMjQyNjYsMjQyNTcsMjQyNTgsMjQyNjAsMjQzODAsMjQ0MjksMjQ0ODksMjQ0OTAsMjQ0ODgsMjQ3ODUsMjQ4MDEsMjQ3NTQsMjQ3NTgsMjQ4MDAsMjQ4NjAsMjQ4NjcsMjQ4MjYsMjQ4NTMsMjQ4MTYsMjQ4MjcsMjQ4MjAsMjQ5MzYsMjQ4MTcsMjQ4NDYsMjQ4MjIsMjQ4NDEsMjQ4MzIsMjQ4NTAsMjUxMTksMjUxNjEsMjU1MDcsMjU0ODQsMjU1NTEsMjU1MzYsMjU1NzcsMjU1NDUsMjU1NDIsMjU1NDksMjU1NTQsMjU1NzEsMjU1NTIsMjU1NjksMjU1NTgsMjU1ODEsMjU1ODIsMjU0NjIsMjU1ODgsMjU1NzgsMjU1NjMsMjU2ODIsMjU1NjIsMjU1OTMsMjU5NTAsMjU5NTgsMjU5NTQsMjU5NTUsMjYwMDEsMjYwMDAsMjYwMzEsMjYyMjIsMjYyMjQsMjYyMjgsMjYyMzAsMjYyMjMsMjYyNTcsMjYyMzQsMjYyMzgsMjYyMzEsMjYzNjYsMjYzNjcsMjYzOTksMjYzOTcsMjY4NzQsMjY4MzcsMjY4NDgsMjY4NDAsMjY4MzksMjY4ODUsMjY4NDcsMjY4NjksMjY4NjIsMjY4NTUsMjY4NzMsMjY4MzQsMjY4NjYsMjY4NTEsMjY4MjcsMjY4MjksMjY4OTMsMjY4OTgsMjY4OTQsMjY4MjUsMjY4NDIsMjY5OTAsMjY4NzUsMjc0NTQsMjc0NTAsMjc0NTMsMjc1NDQsMjc1NDIsMjc1ODAsMjc2MzEsMjc2OTQsMjc2OTUsMjc2OTIsMjgyMDcsMjgyMTYsMjgyNDQsMjgxOTMsMjgyMTAsMjgyNjMsMjgyMzQsMjgxOTIsMjgxOTcsMjgxOTUsMjgxODcsMjgyNTEsMjgyNDgsMjgxOTYsMjgyNDYsMjgyNzAsMjgyMDUsMjgxOTgsMjgyNzEsMjgyMTIsMjgyMzcsMjgyMTgsMjgyMDQsMjgyMjcsMjgxODksMjgyMjIsMjgzNjMsMjgyOTcsMjgxODUsMjgyMzgsMjgyNTksMjgyMjgsMjgyNzQsMjgyNjUsMjgyNTUsMjg5NTMsMjg5NTQsMjg5NjYsMjg5NzYsMjg5NjEsMjg5ODIsMjkwMzgsMjg5NTYsMjkyNjAsMjkzMTYsMjkzMTIsMjk0OTQsMjk0NzcsMjk0OTIsMjk0ODEsMjk3NTQsMjk3MzgsMjk3NDcsMjk3MzAsMjk3MzMsMjk3NDksMjk3NTAsMjk3NDgsMjk3NDMsMjk3MjMsMjk3MzQsMjk3MzYsMjk5ODksMjk5OTAsMzAwNTksMzAwNTgsMzAxNzgsMzAxNzEsMzAxNzksMzAxNjksMzAxNjgsMzAxNzQsMzAxNzYsMzAzMzEsMzAzMzIsMzAzNTgsMzAzNTUsMzAzODgsMzA0MjgsMzA1NDMsMzA3MDEsMzA4MTMsMzA4MjgsMzA4MzEsMzEyNDUsMzEyNDAsMzEyNDMsMzEyMzcsMzEyMzIsMzEzODQsMzEzODMsMzEzODIsMzE0NjEsMzE0NTksMzE1NjEsMzE1NzQsMzE1NTgsMzE1NjgsMzE1NzAsMzE1NzIsMzE1NjUsMzE1NjMsMzE1NjcsMzE1NjksMzE5MDMsMzE5MDksMzIwOTQsMzIwODAsMzIxMDQsMzIwODUsMzIwNDMsMzIxMTAsMzIxMTQsMzIwOTcsMzIxMDIsMzIwOTgsMzIxMTIsMzIxMTUsMjE4OTIsMzI3MjQsMzI3MjUsMzI3NzksMzI4NTAsMzI5MDEsMzMxMDksMzMxMDgsMzMwOTksMzMxMDUsMzMxMDIsMzMwODEsMzMwOTQsMzMwODYsMzMxMDAsMzMxMDcsMzMxNDAsMzMyOTgsMzMzMDgsMzM3NjksMzM3OTUsMzM3ODQsMzM4MDUsMzM3NjAsMzM3MzMsMzM4MDMsMzM3MjksMzM3NzUsMzM3NzcsMzM3ODAsMzM4NzksMzM4MDIsMzM3NzYsMzM4MDQsMzM3NDAsMzM3ODksMzM3NzgsMzM3MzgsMzM4NDgsMzM4MDYsMzM3OTYsMzM3NTYsMzM3OTksMzM3NDgsMzM3NTksMzQzOTUsMzQ1MjcsMzQ1MjEsMzQ1NDEsMzQ1MTYsMzQ1MjMsMzQ1MzIsMzQ1MTIsMzQ1MjYsMzQ5MDMsMzUwMDksMzUwMTAsMzQ5OTMsMzUyMDMsMzUyMjIsMzUzODcsMzU0MjQsMzU0MTMsMzU0MjIsMzUzODgsMzUzOTMsMzU0MTIsMzU0MTksMzU0MDgsMzUzOTgsMzUzODAsMzUzODYsMzUzODIsMzU0MTQsMzU5MzcsMzU5NzAsMzYwMTUsMzYwMjgsMzYwMTksMzYwMjksMzYwMzMsMzYwMjcsMzYwMzIsMzYwMjAsMzYwMjMsMzYwMjIsMzYwMzEsMzYwMjQsMzYyMzQsMzYyMjksMzYyMjUsMzYzMDIsMzYzMTcsMzYyOTksMzYzMTQsMzYzMDUsMzYzMDAsMzYzMTUsMzYyOTQsMzY2MDMsMzY2MDAsMzY2MDQsMzY3NjQsMzY5MTAsMzY5MTcsMzY5MTMsMzY5MjAsMzY5MTQsMzY5MTgsMzcxMjIsMzcxMDksMzcxMjksMzcxMTgsMzcyMTksMzcyMjEsMzczMjcsMzczOTYsMzczOTcsMzc0MTEsMzczODUsMzc0MDYsMzczODksMzczOTIsMzczODMsMzczOTMsMzgyOTIsMzgyODcsMzgyODMsMzgyODksMzgyOTEsMzgyOTAsMzgyODYsMzg1MzgsMzg1NDIsMzg1MzksMzg1MjUsMzg1MzMsMzg1MzQsMzg1NDEsMzg1MTQsMzg1MzIsMzg1OTMsMzg1OTcsMzg1OTYsMzg1OTgsMzg1OTksMzg2MzksMzg2NDIsMzg4NjAsMzg5MTcsMzg5MTgsMzg5MjAsMzkxNDMsMzkxNDYsMzkxNTEsMzkxNDUsMzkxNTQsMzkxNDksMzkzNDIsMzkzNDEsNDA2NDMsNDA2NTMsNDA2NTcsMjAwOTgsMjA2NTMsMjA2NjEsMjA2NTgsMjA2NTksMjA2NzcsMjA2NzAsMjA2NTIsMjA2NjMsMjA2NjcsMjA2NTUsMjA2NzksMjExMTksMjExMTEsMjExMTcsMjEyMTUsMjEyMjIsMjEyMjAsMjEyMTgsMjEyMTksMjEyOTUsMjE5ODMsMjE5OTIsMjE5NzEsMjE5OTAsMjE5NjYsMjE5ODAsMjE5NTksMjE5NjksMjE5ODcsMjE5ODgsMjE5OTksMjE5NzgsMjE5ODUsMjE5NTcsMjE5NTgsMjE5ODksMjE5NjEsMjIyOTAsMjIyOTEsMjI2MjIsMjI2MDksMjI2MTYsMjI2MTUsMjI2MTgsMjI2MTIsMjI2MzUsMjI2MDQsMjI2MzcsMjI2MDIsMjI2MjYsMjI2MTAsMjI2MDMsMjI4ODcsMjMyMzMsMjMyNDEsMjMyNDQsMjMyMzAsMjMyMjksMjMyMjgsMjMyMTksMjMyMzQsMjMyMTgsMjM5MTMsMjM5MTksMjQxNDAsMjQxODUsMjQyNjUsMjQyNjQsMjQzMzgsMjQ0MDksMjQ0OTIsMjQ0OTQsMjQ4NTgsMjQ4NDcsMjQ5MDQsMjQ4NjMsMjQ4MTksMjQ4NTksMjQ4MjUsMjQ4MzMsMjQ4NDAsMjQ5MTAsMjQ5MDgsMjQ5MDAsMjQ5MDksMjQ4OTQsMjQ4ODQsMjQ4NzEsMjQ4NDUsMjQ4MzgsMjQ4ODcsMjUxMjEsMjUxMjIsMjU2MTksMjU2NjIsMjU2MzAsMjU2NDIsMjU2NDUsMjU2NjEsMjU2NDQsMjU2MTUsMjU2MjgsMjU2MjAsMjU2MTMsMjU2NTQsMjU2MjIsMjU2MjMsMjU2MDYsMjU5NjQsMjYwMTUsMjYwMzIsMjYyNjMsMjYyNDksMjYyNDcsMjYyNDgsMjYyNjIsMjYyNDQsMjYyNjQsMjYyNTMsMjYzNzEsMjcwMjgsMjY5ODksMjY5NzAsMjY5OTksMjY5NzYsMjY5NjQsMjY5OTcsMjY5MjgsMjcwMTAsMjY5NTQsMjY5ODQsMjY5ODcsMjY5NzQsMjY5NjMsMjcwMDEsMjcwMTQsMjY5NzMsMjY5NzksMjY5NzEsMjc0NjMsMjc1MDYsMjc1ODQsMjc1ODMsMjc2MDMsMjc2NDUsMjgzMjIsMjgzMzUsMjgzNzEsMjgzNDIsMjgzNTQsMjgzMDQsMjgzMTcsMjgzNTksMjgzNTcsMjgzMjUsMjgzMTIsMjgzNDgsMjgzNDYsMjgzMzEsMjgzNjksMjgzMTAsMjgzMTYsMjgzNTYsMjgzNzIsMjgzMzAsMjgzMjcsMjgzNDAsMjkwMDYsMjkwMTcsMjkwMzMsMjkwMjgsMjkwMDEsMjkwMzEsMjkwMjAsMjkwMzYsMjkwMzAsMjkwMDQsMjkwMjksMjkwMjIsMjg5OTgsMjkwMzIsMjkwMTQsMjkyNDIsMjkyNjYsMjk0OTUsMjk1MDksMjk1MDMsMjk1MDIsMjk4MDcsMjk3ODYsMjk3ODEsMjk3OTEsMjk3OTAsMjk3NjEsMjk3NTksMjk3ODUsMjk3ODcsMjk3ODgsMzAwNzAsMzAwNzIsMzAyMDgsMzAxOTIsMzAyMDksMzAxOTQsMzAxOTMsMzAyMDIsMzAyMDcsMzAxOTYsMzAxOTUsMzA0MzAsMzA0MzEsMzA1NTUsMzA1NzEsMzA1NjYsMzA1NTgsMzA1NjMsMzA1ODUsMzA1NzAsMzA1NzIsMzA1NTYsMzA1NjUsMzA1NjgsMzA1NjIsMzA3MDIsMzA4NjIsMzA4OTYsMzA4NzEsMzA4NzIsMzA4NjAsMzA4NTcsMzA4NDQsMzA4NjUsMzA4NjcsMzA4NDcsMzEwOTgsMzExMDMsMzExMDUsMzM4MzYsMzExNjUsMzEyNjAsMzEyNTgsMzEyNjQsMzEyNTIsMzEyNjMsMzEyNjIsMzEzOTEsMzEzOTIsMzE2MDcsMzE2ODAsMzE1ODQsMzE1OTgsMzE1OTEsMzE5MjEsMzE5MjMsMzE5MjUsMzIxNDcsMzIxMjEsMzIxNDUsMzIxMjksMzIxNDMsMzIwOTEsMzI2MjIsMzI2MTcsMzI2MTgsMzI2MjYsMzI2ODEsMzI2ODAsMzI2NzYsMzI4NTQsMzI4NTYsMzI5MDIsMzI5MDAsMzMxMzcsMzMxMzYsMzMxNDQsMzMxMjUsMzMxMzQsMzMxMzksMzMxMzEsMzMxNDUsMzMxNDYsMzMxMjYsMzMyODUsMzMzNTEsMzM5MjIsMzM5MTEsMzM4NTMsMzM4NDEsMzM5MDksMzM4OTQsMzM4OTksMzM4NjUsMzM5MDAsMzM4ODMsMzM4NTIsMzM4NDUsMzM4ODksMzM4OTEsMzM4OTcsMzM5MDEsMzM4NjIsMzQzOTgsMzQzOTYsMzQzOTksMzQ1NTMsMzQ1NzksMzQ1NjgsMzQ1NjcsMzQ1NjAsMzQ1NTgsMzQ1NTUsMzQ1NjIsMzQ1NjMsMzQ1NjYsMzQ1NzAsMzQ5MDUsMzUwMzksMzUwMjgsMzUwMzMsMzUwMzYsMzUwMzIsMzUwMzcsMzUwNDEsMzUwMTgsMzUwMjksMzUwMjYsMzUyMjgsMzUyOTksMzU0MzUsMzU0NDIsMzU0NDMsMzU0MzAsMzU0MzMsMzU0NDAsMzU0NjMsMzU0NTIsMzU0MjcsMzU0ODgsMzU0NDEsMzU0NjEsMzU0MzcsMzU0MjYsMzU0MzgsMzU0MzYsMzU0NDksMzU0NTEsMzUzOTAsMzU0MzIsMzU5MzgsMzU5NzgsMzU5NzcsMzYwNDIsMzYwMzksMzYwNDAsMzYwMzYsMzYwMTgsMzYwMzUsMzYwMzQsMzYwMzcsMzYzMjEsMzYzMTksMzYzMjgsMzYzMzUsMzYzMzksMzYzNDYsMzYzMzAsMzYzMjQsMzYzMjYsMzY1MzAsMzY2MTEsMzY2MTcsMzY2MDYsMzY2MTgsMzY3NjcsMzY3ODYsMzY5MzksMzY5MzgsMzY5NDcsMzY5MzAsMzY5NDgsMzY5MjQsMzY5NDksMzY5NDQsMzY5MzUsMzY5NDMsMzY5NDIsMzY5NDEsMzY5NDUsMzY5MjYsMzY5MjksMzcxMzgsMzcxNDMsMzcyMjgsMzcyMjYsMzcyMjUsMzczMjEsMzc0MzEsMzc0NjMsMzc0MzIsMzc0MzcsMzc0NDAsMzc0MzgsMzc0NjcsMzc0NTEsMzc0NzYsMzc0NTcsMzc0MjgsMzc0NDksMzc0NTMsMzc0NDUsMzc0MzMsMzc0MzksMzc0NjYsMzgyOTYsMzg1NTIsMzg1NDgsMzg1NDksMzg2MDUsMzg2MDMsMzg2MDEsMzg2MDIsMzg2NDcsMzg2NTEsMzg2NDksMzg2NDYsMzg3NDIsMzg3NzIsMzg3NzQsMzg5MjgsMzg5MjksMzg5MzEsMzg5MjIsMzg5MzAsMzg5MjQsMzkxNjQsMzkxNTYsMzkxNjUsMzkxNjYsMzkzNDcsMzkzNDUsMzkzNDgsMzk2NDksNDAxNjksNDA1NzgsNDA3MTgsNDA3MjMsNDA3MzYsMjA3MTEsMjA3MTgsMjA3MDksMjA2OTQsMjA3MTcsMjA2OTgsMjA2OTMsMjA2ODcsMjA2ODksMjA3MjEsMjA2ODYsMjA3MTMsMjA4MzQsMjA5NzksMjExMjMsMjExMjIsMjEyOTcsMjE0MjEsMjIwMTQsMjIwMTYsMjIwNDMsMjIwMzksMjIwMTMsMjIwMzYsMjIwMjIsMjIwMjUsMjIwMjksMjIwMzAsMjIwMDcsMjIwMzgsMjIwNDcsMjIwMjQsMjIwMzIsMjIwMDYsMjIyOTYsMjIyOTQsMjI2NDUsMjI2NTQsMjI2NTksMjI2NzUsMjI2NjYsMjI2NDksMjI2NjEsMjI2NTMsMjI3ODEsMjI4MjEsMjI4MTgsMjI4MjAsMjI4OTAsMjI4ODksMjMyNjUsMjMyNzAsMjMyNzMsMjMyNTUsMjMyNTQsMjMyNTYsMjMyNjcsMjM0MTMsMjM1MTgsMjM1MjcsMjM1MjEsMjM1MjUsMjM1MjYsMjM1MjgsMjM1MjIsMjM1MjQsMjM1MTksMjM1NjUsMjM2NTAsMjM5NDAsMjM5NDMsMjQxNTUsMjQxNjMsMjQxNDksMjQxNTEsMjQxNDgsMjQyNzUsMjQyNzgsMjQzMzAsMjQzOTAsMjQ0MzIsMjQ1MDUsMjQ5MDMsMjQ4OTUsMjQ5MDcsMjQ5NTEsMjQ5MzAsMjQ5MzEsMjQ5MjcsMjQ5MjIsMjQ5MjAsMjQ5NDksMjUxMzAsMjU3MzUsMjU2ODgsMjU2ODQsMjU3NjQsMjU3MjAsMjU2OTUsMjU3MjIsMjU2ODEsMjU3MDMsMjU2NTIsMjU3MDksMjU3MjMsMjU5NzAsMjYwMTcsMjYwNzEsMjYwNzAsMjYyNzQsMjYyODAsMjYyNjksMjcwMzYsMjcwNDgsMjcwMjksMjcwNzMsMjcwNTQsMjcwOTEsMjcwODMsMjcwMzUsMjcwNjMsMjcwNjcsMjcwNTEsMjcwNjAsMjcwODgsMjcwODUsMjcwNTMsMjcwODQsMjcwNDYsMjcwNzUsMjcwNDMsMjc0NjUsMjc0NjgsMjc2OTksMjg0NjcsMjg0MzYsMjg0MTQsMjg0MzUsMjg0MDQsMjg0NTcsMjg0NzgsMjg0NDgsMjg0NjAsMjg0MzEsMjg0MTgsMjg0NTAsMjg0MTUsMjgzOTksMjg0MjIsMjg0NjUsMjg0NzIsMjg0NjYsMjg0NTEsMjg0MzcsMjg0NTksMjg0NjMsMjg1NTIsMjg0NTgsMjgzOTYsMjg0MTcsMjg0MDIsMjgzNjQsMjg0MDcsMjkwNzYsMjkwODEsMjkwNTMsMjkwNjYsMjkwNjAsMjkwNzQsMjkyNDYsMjkzMzAsMjkzMzQsMjk1MDgsMjk1MjAsMjk3OTYsMjk3OTUsMjk4MDIsMjk4MDgsMjk4MDUsMjk5NTYsMzAwOTcsMzAyNDcsMzAyMjEsMzAyMTksMzAyMTcsMzAyMjcsMzA0MzMsMzA0MzUsMzA1OTYsMzA1ODksMzA1OTEsMzA1NjEsMzA5MTMsMzA4NzksMzA4ODcsMzA4OTksMzA4ODksMzA4ODMsMzExMTgsMzExMTksMzExMTcsMzEyNzgsMzEyODEsMzE0MDIsMzE0MDEsMzE0NjksMzE0NzEsMzE2NDksMzE2MzcsMzE2MjcsMzE2MDUsMzE2MzksMzE2NDUsMzE2MzYsMzE2MzEsMzE2NzIsMzE2MjMsMzE2MjAsMzE5MjksMzE5MzMsMzE5MzQsMzIxODcsMzIxNzYsMzIxNTYsMzIxODksMzIxOTAsMzIxNjAsMzIyMDIsMzIxODAsMzIxNzgsMzIxNzcsMzIxODYsMzIxNjIsMzIxOTEsMzIxODEsMzIxODQsMzIxNzMsMzIyMTAsMzIxOTksMzIxNzIsMzI2MjQsMzI3MzYsMzI3MzcsMzI3MzUsMzI4NjIsMzI4NTgsMzI5MDMsMzMxMDQsMzMxNTIsMzMxNjcsMzMxNjAsMzMxNjIsMzMxNTEsMzMxNTQsMzMyNTUsMzMyNzQsMzMyODcsMzMzMDAsMzMzMTAsMzMzNTUsMzM5OTMsMzM5ODMsMzM5OTAsMzM5ODgsMzM5NDUsMzM5NTAsMzM5NzAsMzM5NDgsMzM5OTUsMzM5NzYsMzM5ODQsMzQwMDMsMzM5MzYsMzM5ODAsMzQwMDEsMzM5OTQsMzQ2MjMsMzQ1ODgsMzQ2MTksMzQ1OTQsMzQ1OTcsMzQ2MTIsMzQ1ODQsMzQ2NDUsMzQ2MTUsMzQ2MDEsMzUwNTksMzUwNzQsMzUwNjAsMzUwNjUsMzUwNjQsMzUwNjksMzUwNDgsMzUwOTgsMzUwNTUsMzU0OTQsMzU0NjgsMzU0ODYsMzU0OTEsMzU0NjksMzU0ODksMzU0NzUsMzU0OTIsMzU0OTgsMzU0OTMsMzU0OTYsMzU0ODAsMzU0NzMsMzU0ODIsMzU0OTUsMzU5NDYsMzU5ODEsMzU5ODAsMzYwNTEsMzYwNDksMzYwNTAsMzYyMDMsMzYyNDksMzYyNDUsMzYzNDgsMzY2MjgsMzY2MjYsMzY2MjksMzY2MjcsMzY3NzEsMzY5NjAsMzY5NTIsMzY5NTYsMzY5NjMsMzY5NTMsMzY5NTgsMzY5NjIsMzY5NTcsMzY5NTUsMzcxNDUsMzcxNDQsMzcxNTAsMzcyMzcsMzcyNDAsMzcyMzksMzcyMzYsMzc0OTYsMzc1MDQsMzc1MDksMzc1MjgsMzc1MjYsMzc0OTksMzc1MjMsMzc1MzIsMzc1NDQsMzc1MDAsMzc1MjEsMzgzMDUsMzgzMTIsMzgzMTMsMzgzMDcsMzgzMDksMzgzMDgsMzg1NTMsMzg1NTYsMzg1NTUsMzg2MDQsMzg2MTAsMzg2NTYsMzg3ODAsMzg3ODksMzg5MDIsMzg5MzUsMzg5MzYsMzkwODcsMzkwODksMzkxNzEsMzkxNzMsMzkxODAsMzkxNzcsMzkzNjEsMzk1OTksMzk2MDAsMzk2NTQsMzk3NDUsMzk3NDYsNDAxODAsNDAxODIsNDAxNzksNDA2MzYsNDA3NjMsNDA3NzgsMjA3NDAsMjA3MzYsMjA3MzEsMjA3MjUsMjA3MjksMjA3MzgsMjA3NDQsMjA3NDUsMjA3NDEsMjA5NTYsMjExMjcsMjExMjgsMjExMjksMjExMzMsMjExMzAsMjEyMzIsMjE0MjYsMjIwNjIsMjIwNzUsMjIwNzMsMjIwNjYsMjIwNzksMjIwNjgsMjIwNTcsMjIwOTksMjIwOTQsMjIxMDMsMjIxMzIsMjIwNzAsMjIwNjMsMjIwNjQsMjI2NTYsMjI2ODcsMjI2ODYsMjI3MDcsMjI2ODQsMjI3MDIsMjI2OTcsMjI2OTQsMjI4OTMsMjMzMDUsMjMyOTEsMjMzMDcsMjMyODUsMjMzMDgsMjMzMDQsMjM1MzQsMjM1MzIsMjM1MjksMjM1MzEsMjM2NTIsMjM2NTMsMjM5NjUsMjM5NTYsMjQxNjIsMjQxNTksMjQxNjEsMjQyOTAsMjQyODIsMjQyODcsMjQyODUsMjQyOTEsMjQyODgsMjQzOTIsMjQ0MzMsMjQ1MDMsMjQ1MDEsMjQ5NTAsMjQ5MzUsMjQ5NDIsMjQ5MjUsMjQ5MTcsMjQ5NjIsMjQ5NTYsMjQ5NDQsMjQ5MzksMjQ5NTgsMjQ5OTksMjQ5NzYsMjUwMDMsMjQ5NzQsMjUwMDQsMjQ5ODYsMjQ5OTYsMjQ5ODAsMjUwMDYsMjUxMzQsMjU3MDUsMjU3MTEsMjU3MjEsMjU3NTgsMjU3NzgsMjU3MzYsMjU3NDQsMjU3NzYsMjU3NjUsMjU3NDcsMjU3NDksMjU3NjksMjU3NDYsMjU3NzQsMjU3NzMsMjU3NzEsMjU3NTQsMjU3NzIsMjU3NTMsMjU3NjIsMjU3NzksMjU5NzMsMjU5NzUsMjU5NzYsMjYyODYsMjYyODMsMjYyOTIsMjYyODksMjcxNzEsMjcxNjcsMjcxMTIsMjcxMzcsMjcxNjYsMjcxNjEsMjcxMzMsMjcxNjksMjcxNTUsMjcxNDYsMjcxMjMsMjcxMzgsMjcxNDEsMjcxMTcsMjcxNTMsMjc0NzIsMjc0NzAsMjc1NTYsMjc1ODksMjc1OTAsMjg0NzksMjg1NDAsMjg1NDgsMjg0OTcsMjg1MTgsMjg1MDAsMjg1NTAsMjg1MjUsMjg1MDcsMjg1MzYsMjg1MjYsMjg1NTgsMjg1MzgsMjg1MjgsMjg1MTYsMjg1NjcsMjg1MDQsMjgzNzMsMjg1MjcsMjg1MTIsMjg1MTEsMjkwODcsMjkxMDAsMjkxMDUsMjkwOTYsMjkyNzAsMjkzMzksMjk1MTgsMjk1MjcsMjk4MDEsMjk4MzUsMjk4MjcsMjk4MjIsMjk4MjQsMzAwNzksMzAyNDAsMzAyNDksMzAyMzksMzAyNDQsMzAyNDYsMzAyNDEsMzAyNDIsMzAzNjIsMzAzOTQsMzA0MzYsMzA2MDYsMzA1OTksMzA2MDQsMzA2MDksMzA2MDMsMzA5MjMsMzA5MTcsMzA5MDYsMzA5MjIsMzA5MTAsMzA5MzMsMzA5MDgsMzA5MjgsMzEyOTUsMzEyOTIsMzEyOTYsMzEyOTMsMzEyODcsMzEyOTEsMzE0MDcsMzE0MDYsMzE2NjEsMzE2NjUsMzE2ODQsMzE2NjgsMzE2ODYsMzE2ODcsMzE2ODEsMzE2NDgsMzE2OTIsMzE5NDYsMzIyMjQsMzIyNDQsMzIyMzksMzIyNTEsMzIyMTYsMzIyMzYsMzIyMjEsMzIyMzIsMzIyMjcsMzIyMTgsMzIyMjIsMzIyMzMsMzIxNTgsMzIyMTcsMzIyNDIsMzIyNDksMzI2MjksMzI2MzEsMzI2ODcsMzI3NDUsMzI4MDYsMzMxNzksMzMxODAsMzMxODEsMzMxODQsMzMxNzgsMzMxNzYsMzQwNzEsMzQxMDksMzQwNzQsMzQwMzAsMzQwOTIsMzQwOTMsMzQwNjcsMzQwNjUsMzQwODMsMzQwODEsMzQwNjgsMzQwMjgsMzQwODUsMzQwNDcsMzQwNTQsMzQ2OTAsMzQ2NzYsMzQ2NzgsMzQ2NTYsMzQ2NjIsMzQ2ODAsMzQ2NjQsMzQ2NDksMzQ2NDcsMzQ2MzYsMzQ2NDMsMzQ5MDcsMzQ5MDksMzUwODgsMzUwNzksMzUwOTAsMzUwOTEsMzUwOTMsMzUwODIsMzU1MTYsMzU1MzgsMzU1MjcsMzU1MjQsMzU0NzcsMzU1MzEsMzU1NzYsMzU1MDYsMzU1MjksMzU1MjIsMzU1MTksMzU1MDQsMzU1NDIsMzU1MzMsMzU1MTAsMzU1MTMsMzU1NDcsMzU5MTYsMzU5MTgsMzU5NDgsMzYwNjQsMzYwNjIsMzYwNzAsMzYwNjgsMzYwNzYsMzYwNzcsMzYwNjYsMzYwNjcsMzYwNjAsMzYwNzQsMzYwNjUsMzYyMDUsMzYyNTUsMzYyNTksMzYzOTUsMzYzNjgsMzYzODEsMzYzODYsMzYzNjcsMzYzOTMsMzYzODMsMzYzODUsMzYzODIsMzY1MzgsMzY2MzcsMzY2MzUsMzY2MzksMzY2NDksMzY2NDYsMzY2NTAsMzY2MzYsMzY2MzgsMzY2NDUsMzY5NjksMzY5NzQsMzY5NjgsMzY5NzMsMzY5ODMsMzcxNjgsMzcxNjUsMzcxNTksMzcxNjksMzcyNTUsMzcyNTcsMzcyNTksMzcyNTEsMzc1NzMsMzc1NjMsMzc1NTksMzc2MTAsMzc1NDgsMzc2MDQsMzc1NjksMzc1NTUsMzc1NjQsMzc1ODYsMzc1NzUsMzc2MTYsMzc1NTQsMzgzMTcsMzgzMjEsMzg2NjAsMzg2NjIsMzg2NjMsMzg2NjUsMzg3NTIsMzg3OTcsMzg3OTUsMzg3OTksMzg5NDUsMzg5NTUsMzg5NDAsMzkwOTEsMzkxNzgsMzkxODcsMzkxODYsMzkxOTIsMzkzODksMzkzNzYsMzkzOTEsMzkzODcsMzkzNzcsMzkzODEsMzkzNzgsMzkzODUsMzk2MDcsMzk2NjIsMzk2NjMsMzk3MTksMzk3NDksMzk3NDgsMzk3OTksMzk3OTEsNDAxOTgsNDAyMDEsNDAxOTUsNDA2MTcsNDA2MzgsNDA2NTQsMjI2OTYsNDA3ODYsMjA3NTQsMjA3NjAsMjA3NTYsMjA3NTIsMjA3NTcsMjA4NjQsMjA5MDYsMjA5NTcsMjExMzcsMjExMzksMjEyMzUsMjIxMDUsMjIxMjMsMjIxMzcsMjIxMjEsMjIxMTYsMjIxMzYsMjIxMjIsMjIxMjAsMjIxMTcsMjIxMjksMjIxMjcsMjIxMjQsMjIxMTQsMjIxMzQsMjI3MjEsMjI3MTgsMjI3MjcsMjI3MjUsMjI4OTQsMjMzMjUsMjMzNDgsMjM0MTYsMjM1MzYsMjM1NjYsMjQzOTQsMjUwMTAsMjQ5NzcsMjUwMDEsMjQ5NzAsMjUwMzcsMjUwMTQsMjUwMjIsMjUwMzQsMjUwMzIsMjUxMzYsMjU3OTcsMjU3OTMsMjU4MDMsMjU3ODcsMjU3ODgsMjU4MTgsMjU3OTYsMjU3OTksMjU3OTQsMjU4MDUsMjU3OTEsMjU4MTAsMjU4MTIsMjU3OTAsMjU5NzIsMjYzMTAsMjYzMTMsMjYyOTcsMjYzMDgsMjYzMTEsMjYyOTYsMjcxOTcsMjcxOTIsMjcxOTQsMjcyMjUsMjcyNDMsMjcyMjQsMjcxOTMsMjcyMDQsMjcyMzQsMjcyMzMsMjcyMTEsMjcyMDcsMjcxODksMjcyMzEsMjcyMDgsMjc0ODEsMjc1MTEsMjc2NTMsMjg2MTAsMjg1OTMsMjg1NzcsMjg2MTEsMjg1ODAsMjg2MDksMjg1ODMsMjg1OTUsMjg2MDgsMjg2MDEsMjg1OTgsMjg1ODIsMjg1NzYsMjg1OTYsMjkxMTgsMjkxMjksMjkxMzYsMjkxMzgsMjkxMjgsMjkxNDEsMjkxMTMsMjkxMzQsMjkxNDUsMjkxNDgsMjkxMjMsMjkxMjQsMjk1NDQsMjk4NTIsMjk4NTksMjk4NDgsMjk4NTUsMjk4NTQsMjk5MjIsMjk5NjQsMjk5NjUsMzAyNjAsMzAyNjQsMzAyNjYsMzA0MzksMzA0MzcsMzA2MjQsMzA2MjIsMzA2MjMsMzA2MjksMzA5NTIsMzA5MzgsMzA5NTYsMzA5NTEsMzExNDIsMzEzMDksMzEzMTAsMzEzMDIsMzEzMDgsMzEzMDcsMzE0MTgsMzE3MDUsMzE3NjEsMzE2ODksMzE3MTYsMzE3MDcsMzE3MTMsMzE3MjEsMzE3MTgsMzE5NTcsMzE5NTgsMzIyNjYsMzIyNzMsMzIyNjQsMzIyODMsMzIyOTEsMzIyODYsMzIyODUsMzIyNjUsMzIyNzIsMzI2MzMsMzI2OTAsMzI3NTIsMzI3NTMsMzI3NTAsMzI4MDgsMzMyMDMsMzMxOTMsMzMxOTIsMzMyNzUsMzMyODgsMzMzNjgsMzMzNjksMzQxMjIsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNTMsMzQxMTUsMzQxMjEsMzQxNTcsMzQxNTQsMzQxNDIsMzQ2OTEsMzQ3MTksMzQ3MTgsMzQ3MjIsMzQ3MDEsMzQ5MTMsMzUxMTQsMzUxMjIsMzUxMDksMzUxMTUsMzUxMDUsMzUyNDIsMzUyMzgsMzU1NTgsMzU1NzgsMzU1NjMsMzU1NjksMzU1ODQsMzU1NDgsMzU1NTksMzU1NjYsMzU1ODIsMzU1ODUsMzU1ODYsMzU1NzUsMzU1NjUsMzU1NzEsMzU1NzQsMzU1ODAsMzU5NDcsMzU5NDksMzU5ODcsMzYwODQsMzY0MjAsMzY0MDEsMzY0MDQsMzY0MTgsMzY0MDksMzY0MDUsMzY2NjcsMzY2NTUsMzY2NjQsMzY2NTksMzY3NzYsMzY3NzQsMzY5ODEsMzY5ODAsMzY5ODQsMzY5NzgsMzY5ODgsMzY5ODYsMzcxNzIsMzcyNjYsMzc2NjQsMzc2ODYsMzc2MjQsMzc2ODMsMzc2NzksMzc2NjYsMzc2MjgsMzc2NzUsMzc2MzYsMzc2NTgsMzc2NDgsMzc2NzAsMzc2NjUsMzc2NTMsMzc2NzgsMzc2NTcsMzgzMzEsMzg1NjcsMzg1NjgsMzg1NzAsMzg2MTMsMzg2NzAsMzg2NzMsMzg2NzgsMzg2NjksMzg2NzUsMzg2NzEsMzg3NDcsMzg3NDgsMzg3NTgsMzg4MDgsMzg5NjAsMzg5NjgsMzg5NzEsMzg5NjcsMzg5NTcsMzg5NjksMzg5NDgsMzkxODQsMzkyMDgsMzkxOTgsMzkxOTUsMzkyMDEsMzkxOTQsMzk0MDUsMzkzOTQsMzk0MDksMzk2MDgsMzk2MTIsMzk2NzUsMzk2NjEsMzk3MjAsMzk4MjUsNDAyMTMsNDAyMjcsNDAyMzAsNDAyMzIsNDAyMTAsNDAyMTksNDA2NjQsNDA2NjAsNDA4NDUsNDA4NjAsMjA3NzgsMjA3NjcsMjA3NjksMjA3ODYsMjEyMzcsMjIxNTgsMjIxNDQsMjIxNjAsMjIxNDksMjIxNTEsMjIxNTksMjI3NDEsMjI3MzksMjI3MzcsMjI3MzQsMjMzNDQsMjMzMzgsMjMzMzIsMjM0MTgsMjM2MDcsMjM2NTYsMjM5OTYsMjM5OTQsMjM5OTcsMjM5OTIsMjQxNzEsMjQzOTYsMjQ1MDksMjUwMzMsMjUwMjYsMjUwMzEsMjUwNjIsMjUwMzUsMjUxMzgsMjUxNDAsMjU4MDYsMjU4MDIsMjU4MTYsMjU4MjQsMjU4NDAsMjU4MzAsMjU4MzYsMjU4NDEsMjU4MjYsMjU4MzcsMjU5ODYsMjU5ODcsMjYzMjksMjYzMjYsMjcyNjQsMjcyODQsMjcyNjgsMjcyOTgsMjcyOTIsMjczNTUsMjcyOTksMjcyNjIsMjcyODcsMjcyODAsMjcyOTYsMjc0ODQsMjc1NjYsMjc2MTAsMjc2NTYsMjg2MzIsMjg2NTcsMjg2MzksMjg2NDAsMjg2MzUsMjg2NDQsMjg2NTEsMjg2NTUsMjg1NDQsMjg2NTIsMjg2NDEsMjg2NDksMjg2MjksMjg2NTQsMjg2NTYsMjkxNTksMjkxNTEsMjkxNjYsMjkxNTgsMjkxNTcsMjkxNjUsMjkxNjQsMjkxNzIsMjkxNTIsMjkyMzcsMjkyNTQsMjk1NTIsMjk1NTQsMjk4NjUsMjk4NzIsMjk4NjIsMjk4NjQsMzAyNzgsMzAyNzQsMzAyODQsMzA0NDIsMzA2NDMsMzA2MzQsMzA2NDAsMzA2MzYsMzA2MzEsMzA2MzcsMzA3MDMsMzA5NjcsMzA5NzAsMzA5NjQsMzA5NTksMzA5NzcsMzExNDMsMzExNDYsMzEzMTksMzE0MjMsMzE3NTEsMzE3NTcsMzE3NDIsMzE3MzUsMzE3NTYsMzE3MTIsMzE5NjgsMzE5NjQsMzE5NjYsMzE5NzAsMzE5NjcsMzE5NjEsMzE5NjUsMzIzMDIsMzIzMTgsMzIzMjYsMzIzMTEsMzIzMDYsMzIzMjMsMzIyOTksMzIzMTcsMzIzMDUsMzIzMjUsMzIzMjEsMzIzMDgsMzIzMTMsMzIzMjgsMzIzMDksMzIzMTksMzIzMDMsMzI1ODAsMzI3NTUsMzI3NjQsMzI4ODEsMzI4ODIsMzI4ODAsMzI4NzksMzI4ODMsMzMyMjIsMzMyMTksMzMyMTAsMzMyMTgsMzMyMTYsMzMyMTUsMzMyMTMsMzMyMjUsMzMyMTQsMzMyNTYsMzMyODksMzMzOTMsMzQyMTgsMzQxODAsMzQxNzQsMzQyMDQsMzQxOTMsMzQxOTYsMzQyMjMsMzQyMDMsMzQxODMsMzQyMTYsMzQxODYsMzQ0MDcsMzQ3NTIsMzQ3NjksMzQ3MzksMzQ3NzAsMzQ3NTgsMzQ3MzEsMzQ3NDcsMzQ3NDYsMzQ3NjAsMzQ3NjMsMzUxMzEsMzUxMjYsMzUxNDAsMzUxMjgsMzUxMzMsMzUyNDQsMzU1OTgsMzU2MDcsMzU2MDksMzU2MTEsMzU1OTQsMzU2MTYsMzU2MTMsMzU1ODgsMzU2MDAsMzU5MDUsMzU5MDMsMzU5NTUsMzYwOTAsMzYwOTMsMzYwOTIsMzYwODgsMzYwOTEsMzYyNjQsMzY0MjUsMzY0MjcsMzY0MjQsMzY0MjYsMzY2NzYsMzY2NzAsMzY2NzQsMzY2NzcsMzY2NzEsMzY5OTEsMzY5ODksMzY5OTYsMzY5OTMsMzY5OTQsMzY5OTIsMzcxNzcsMzcyODMsMzcyNzgsMzcyNzYsMzc3MDksMzc3NjIsMzc2NzIsMzc3NDksMzc3MDYsMzc3MzMsMzc3MDcsMzc2NTYsMzc3NTgsMzc3NDAsMzc3MjMsMzc3NDQsMzc3MjIsMzc3MTYsMzgzNDYsMzgzNDcsMzgzNDgsMzgzNDQsMzgzNDIsMzg1NzcsMzg1ODQsMzg2MTQsMzg2ODQsMzg2ODYsMzg4MTYsMzg4NjcsMzg5ODIsMzkwOTQsMzkyMjEsMzk0MjUsMzk0MjMsMzk4NTQsMzk4NTEsMzk4NTAsMzk4NTMsNDAyNTEsNDAyNTUsNDA1ODcsNDA2NTUsNDA2NzAsNDA2NjgsNDA2NjksNDA2NjcsNDA3NjYsNDA3NzksMjE0NzQsMjIxNjUsMjIxOTAsMjI3NDUsMjI3NDQsMjMzNTIsMjQ0MTMsMjUwNTksMjUxMzksMjU4NDQsMjU4NDIsMjU4NTQsMjU4NjIsMjU4NTAsMjU4NTEsMjU4NDcsMjYwMzksMjYzMzIsMjY0MDYsMjczMTUsMjczMDgsMjczMzEsMjczMjMsMjczMjAsMjczMzAsMjczMTAsMjczMTEsMjc0ODcsMjc1MTIsMjc1NjcsMjg2ODEsMjg2ODMsMjg2NzAsMjg2NzgsMjg2NjYsMjg2ODksMjg2ODcsMjkxNzksMjkxODAsMjkxODIsMjkxNzYsMjk1NTksMjk1NTcsMjk4NjMsMjk4ODcsMjk5NzMsMzAyOTQsMzAyOTYsMzAyOTAsMzA2NTMsMzA2NTUsMzA2NTEsMzA2NTIsMzA5OTAsMzExNTAsMzEzMjksMzEzMzAsMzEzMjgsMzE0MjgsMzE0MjksMzE3ODcsMzE3ODMsMzE3ODYsMzE3NzQsMzE3NzksMzE3NzcsMzE5NzUsMzIzNDAsMzIzNDEsMzIzNTAsMzIzNDYsMzIzNTMsMzIzMzgsMzIzNDUsMzI1ODQsMzI3NjEsMzI3NjMsMzI4ODcsMzI4ODYsMzMyMjksMzMyMzEsMzMyOTAsMzQyNTUsMzQyMTcsMzQyNTMsMzQyNTYsMzQyNDksMzQyMjQsMzQyMzQsMzQyMzMsMzQyMTQsMzQ3OTksMzQ3OTYsMzQ4MDIsMzQ3ODQsMzUyMDYsMzUyNTAsMzUzMTYsMzU2MjQsMzU2NDEsMzU2MjgsMzU2MjcsMzU5MjAsMzYxMDEsMzY0NDEsMzY0NTEsMzY0NTQsMzY0NTIsMzY0NDcsMzY0MzcsMzY1NDQsMzY2ODEsMzY2ODUsMzY5OTksMzY5OTUsMzcwMDAsMzcyOTEsMzcyOTIsMzczMjgsMzc3ODAsMzc3NzAsMzc3ODIsMzc3OTQsMzc4MTEsMzc4MDYsMzc4MDQsMzc4MDgsMzc3ODQsMzc3ODYsMzc3ODMsMzgzNTYsMzgzNTgsMzgzNTIsMzgzNTcsMzg2MjYsMzg2MjAsMzg2MTcsMzg2MTksMzg2MjIsMzg2OTIsMzg4MTksMzg4MjIsMzg4MjksMzg5MDUsMzg5ODksMzg5OTEsMzg5ODgsMzg5OTAsMzg5OTUsMzkwOTgsMzkyMzAsMzkyMzEsMzkyMjksMzkyMTQsMzkzMzMsMzk0MzgsMzk2MTcsMzk2ODMsMzk2ODYsMzk3NTksMzk3NTgsMzk3NTcsMzk4ODIsMzk4ODEsMzk5MzMsMzk4ODAsMzk4NzIsNDAyNzMsNDAyODUsNDAyODgsNDA2NzIsNDA3MjUsNDA3NDgsMjA3ODcsMjIxODEsMjI3NTAsMjI3NTEsMjI3NTQsMjM1NDEsNDA4NDgsMjQzMDAsMjUwNzQsMjUwNzksMjUwNzgsMjUwNzcsMjU4NTYsMjU4NzEsMjYzMzYsMjYzMzMsMjczNjUsMjczNTcsMjczNTQsMjczNDcsMjg2OTksMjg3MDMsMjg3MTIsMjg2OTgsMjg3MDEsMjg2OTMsMjg2OTYsMjkxOTAsMjkxOTcsMjkyNzIsMjkzNDYsMjk1NjAsMjk1NjIsMjk4ODUsMjk4OTgsMjk5MjMsMzAwODcsMzAwODYsMzAzMDMsMzAzMDUsMzA2NjMsMzEwMDEsMzExNTMsMzEzMzksMzEzMzcsMzE4MDYsMzE4MDcsMzE4MDAsMzE4MDUsMzE3OTksMzE4MDgsMzIzNjMsMzIzNjUsMzIzNzcsMzIzNjEsMzIzNjIsMzI2NDUsMzIzNzEsMzI2OTQsMzI2OTcsMzI2OTYsMzMyNDAsMzQyODEsMzQyNjksMzQyODIsMzQyNjEsMzQyNzYsMzQyNzcsMzQyOTUsMzQ4MTEsMzQ4MjEsMzQ4MjksMzQ4MDksMzQ4MTQsMzUxNjgsMzUxNjcsMzUxNTgsMzUxNjYsMzU2NDksMzU2NzYsMzU2NzIsMzU2NTcsMzU2NzQsMzU2NjIsMzU2NjMsMzU2NTQsMzU2NzMsMzYxMDQsMzYxMDYsMzY0NzYsMzY0NjYsMzY0ODcsMzY0NzAsMzY0NjAsMzY0NzQsMzY0NjgsMzY2OTIsMzY2ODYsMzY3ODEsMzcwMDIsMzcwMDMsMzcyOTcsMzcyOTQsMzc4NTcsMzc4NDEsMzc4NTUsMzc4MjcsMzc4MzIsMzc4NTIsMzc4NTMsMzc4NDYsMzc4NTgsMzc4MzcsMzc4NDgsMzc4NjAsMzc4NDcsMzc4NjQsMzgzNjQsMzg1ODAsMzg2MjcsMzg2OTgsMzg2OTUsMzg3NTMsMzg4NzYsMzg5MDcsMzkwMDYsMzkwMDAsMzkwMDMsMzkxMDAsMzkyMzcsMzkyNDEsMzk0NDYsMzk0NDksMzk2OTMsMzk5MTIsMzk5MTEsMzk4OTQsMzk4OTksNDAzMjksNDAyODksNDAzMDYsNDAyOTgsNDAzMDAsNDA1OTQsNDA1OTksNDA1OTUsNDA2MjgsMjEyNDAsMjIxODQsMjIxOTksMjIxOTgsMjIxOTYsMjIyMDQsMjI3NTYsMjMzNjAsMjMzNjMsMjM0MjEsMjM1NDIsMjQwMDksMjUwODAsMjUwODIsMjU4ODAsMjU4NzYsMjU4ODEsMjYzNDIsMjY0MDcsMjczNzIsMjg3MzQsMjg3MjAsMjg3MjIsMjkyMDAsMjk1NjMsMjk5MDMsMzAzMDYsMzAzMDksMzEwMTQsMzEwMTgsMzEwMjAsMzEwMTksMzE0MzEsMzE0NzgsMzE4MjAsMzE4MTEsMzE4MjEsMzE5ODMsMzE5ODQsMzY3ODIsMzIzODEsMzIzODAsMzIzODYsMzI1ODgsMzI3NjgsMzMyNDIsMzMzODIsMzQyOTksMzQyOTcsMzQzMjEsMzQyOTgsMzQzMTAsMzQzMTUsMzQzMTEsMzQzMTQsMzQ4MzYsMzQ4MzcsMzUxNzIsMzUyNTgsMzUzMjAsMzU2OTYsMzU2OTIsMzU2ODYsMzU2OTUsMzU2NzksMzU2OTEsMzYxMTEsMzYxMDksMzY0ODksMzY0ODEsMzY0ODUsMzY0ODIsMzczMDAsMzczMjMsMzc5MTIsMzc4OTEsMzc4ODUsMzgzNjksMzg3MDQsMzkxMDgsMzkyNTAsMzkyNDksMzkzMzYsMzk0NjcsMzk0NzIsMzk0NzksMzk0NzcsMzk5NTUsMzk5NDksNDA1NjksNDA2MjksNDA2ODAsNDA3NTEsNDA3OTksNDA4MDMsNDA4MDEsMjA3OTEsMjA3OTIsMjIyMDksMjIyMDgsMjIyMTAsMjI4MDQsMjM2NjAsMjQwMTMsMjUwODQsMjUwODYsMjU4ODUsMjU4ODQsMjYwMDUsMjYzNDUsMjczODcsMjczOTYsMjczODYsMjc1NzAsMjg3NDgsMjkyMTEsMjkzNTEsMjk5MTAsMjk5MDgsMzAzMTMsMzA2NzUsMzE4MjQsMzIzOTksMzIzOTYsMzI3MDAsMzQzMjcsMzQzNDksMzQzMzAsMzQ4NTEsMzQ4NTAsMzQ4NDksMzQ4NDcsMzUxNzgsMzUxODAsMzUyNjEsMzU3MDAsMzU3MDMsMzU3MDksMzYxMTUsMzY0OTAsMzY0OTMsMzY0OTEsMzY3MDMsMzY3ODMsMzczMDYsMzc5MzQsMzc5MzksMzc5NDEsMzc5NDYsMzc5NDQsMzc5MzgsMzc5MzEsMzgzNzAsMzg3MTIsMzg3MTMsMzg3MDYsMzg5MTEsMzkwMTUsMzkwMTMsMzkyNTUsMzk0OTMsMzk0OTEsMzk0ODgsMzk0ODYsMzk2MzEsMzk3NjQsMzk3NjEsMzk5ODEsMzk5NzMsNDAzNjcsNDAzNzIsNDAzODYsNDAzNzYsNDA2MDUsNDA2ODcsNDA3MjksNDA3OTYsNDA4MDYsNDA4MDcsMjA3OTYsMjA3OTUsMjIyMTYsMjIyMTgsMjIyMTcsMjM0MjMsMjQwMjAsMjQwMTgsMjQzOTgsMjUwODcsMjU4OTIsMjc0MDIsMjc0ODksMjg3NTMsMjg3NjAsMjk1NjgsMjk5MjQsMzAwOTAsMzAzMTgsMzAzMTYsMzExNTUsMzE4NDAsMzE4MzksMzI4OTQsMzI4OTMsMzMyNDcsMzUxODYsMzUxODMsMzUzMjQsMzU3MTIsMzYxMTgsMzYxMTksMzY0OTcsMzY0OTksMzY3MDUsMzcxOTIsMzc5NTYsMzc5NjksMzc5NzAsMzg3MTcsMzg3MTgsMzg4NTEsMzg4NDksMzkwMTksMzkyNTMsMzk1MDksMzk1MDEsMzk2MzQsMzk3MDYsNDAwMDksMzk5ODUsMzk5OTgsMzk5OTUsNDA0MDMsNDA0MDcsNDA3NTYsNDA4MTIsNDA4MTAsNDA4NTIsMjIyMjAsMjQwMjIsMjUwODgsMjU4OTEsMjU4OTksMjU4OTgsMjYzNDgsMjc0MDgsMjk5MTQsMzE0MzQsMzE4NDQsMzE4NDMsMzE4NDUsMzI0MDMsMzI0MDYsMzI0MDQsMzMyNTAsMzQzNjAsMzQzNjcsMzQ4NjUsMzU3MjIsMzcwMDgsMzcwMDcsMzc5ODcsMzc5ODQsMzc5ODgsMzg3NjAsMzkwMjMsMzkyNjAsMzk1MTQsMzk1MTUsMzk1MTEsMzk2MzUsMzk2MzYsMzk2MzMsNDAwMjAsNDAwMjMsNDAwMjIsNDA0MjEsNDA2MDcsNDA2OTIsMjIyMjUsMjI3NjEsMjU5MDAsMjg3NjYsMzAzMjEsMzAzMjIsMzA2NzksMzI1OTIsMzI2NDgsMzQ4NzAsMzQ4NzMsMzQ5MTQsMzU3MzEsMzU3MzAsMzU3MzQsMzMzOTksMzYxMjMsMzczMTIsMzc5OTQsMzg3MjIsMzg3MjgsMzg3MjQsMzg4NTQsMzkwMjQsMzk1MTksMzk3MTQsMzk3NjgsNDAwMzEsNDA0NDEsNDA0NDIsNDA1NzIsNDA1NzMsNDA3MTEsNDA4MjMsNDA4MTgsMjQzMDcsMjc0MTQsMjg3NzEsMzE4NTIsMzE4NTQsMzQ4NzUsMzUyNjQsMzY1MTMsMzczMTMsMzgwMDIsMzgwMDAsMzkwMjUsMzkyNjIsMzk2MzgsMzk3MTUsNDA2NTIsMjg3NzIsMzA2ODIsMzU3MzgsMzgwMDcsMzg4NTcsMzk1MjIsMzk1MjUsMzI0MTIsMzU3NDAsMzY1MjIsMzczMTcsMzgwMTMsMzgwMTQsMzgwMTIsNDAwNTUsNDAwNTYsNDA2OTUsMzU5MjQsMzgwMTUsNDA0NzQsMjkyMjQsMzk1MzAsMzk3MjksNDA0NzUsNDA0NzgsMzE4NTgsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksMjAwMjIsMjAwMzEsMjAxMDEsMjAxMjgsMjA4NjYsMjA4ODYsMjA5MDcsMjEyNDEsMjEzMDQsMjEzNTMsMjE0MzAsMjI3OTQsMjM0MjQsMjQwMjcsMTIwODMsMjQxOTEsMjQzMDgsMjQ0MDAsMjQ0MTcsMjU5MDgsMjYwODAsMzAwOTgsMzAzMjYsMzY3ODksMzg1ODIsMTY4LDcxMCwxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw2NTMzOSw2NTM0MSwxMDA0NSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4Njc5LDg2MzIsODYzMywxMjc1MSwxMzEyNzYsMjAwNTgsMTMxMjEwLDIwOTk0LDE3NTUzLDQwODgwLDIwODcyLDQwODgxLDE2MTI4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSwxMjQ0MywxMjQ0NCwxMTkwNCwxMTkwOCwxMTkxMCwxMTkxMSwxMTkxMiwxMTkxNCwxMTkxNiwxMTkxNywxMTkyNSwxMTkzMiwxMTkzMywxMTk0MSwxMTk0MywxMTk0NiwxMTk0OCwxMTk1MCwxMTk1OCwxMTk2NCwxMTk2NiwxMTk3NCwxMTk3OCwxMTk4MCwxMTk4MSwxMTk4MywxMTk5MCwxMTk5MSwxMTk5OCwxMjAwMyxudWxsLG51bGwsbnVsbCw2NDMsNTkyLDYwMyw1OTYsNjI5LDMzOSwyNDgsMzMxLDY1MCw2MTgsMjAwMzQsMjAwNjAsMjA5ODEsMjEyNzQsMjEzNzgsMTk5NzUsMTk5ODAsMjAwMzksMjAxMDksMjIyMzEsNjQwMTIsMjM2NjIsMjQ0MzUsMTk5ODMsMjA4NzEsMTk5ODIsMjAwMTQsMjAxMTUsMjAxNjIsMjAxNjksMjAxNjgsMjA4ODgsMjEyNDQsMjEzNTYsMjE0MzMsMjIzMDQsMjI3ODcsMjI4MjgsMjM1NjgsMjQwNjMsMjYwODEsMjc1NzEsMjc1OTYsMjc2NjgsMjkyNDcsMjAwMTcsMjAwMjgsMjAyMDAsMjAxODgsMjAyMDEsMjAxOTMsMjAxODksMjAxODYsMjEwMDQsMjEyNzYsMjEzMjQsMjIzMDYsMjIzMDcsMjI4MDcsMjI4MzEsMjM0MjUsMjM0MjgsMjM1NzAsMjM2MTEsMjM2NjgsMjM2NjcsMjQwNjgsMjQxOTIsMjQxOTQsMjQ1MjEsMjUwOTcsMjUxNjgsMjc2NjksMjc3MDIsMjc3MTUsMjc3MTEsMjc3MDcsMjkzNTgsMjkzNjAsMjk1NzgsMzExNjAsMzI5MDYsMzg0MzAsMjAyMzgsMjAyNDgsMjAyNjgsMjAyMTMsMjAyNDQsMjAyMDksMjAyMjQsMjAyMTUsMjAyMzIsMjAyNTMsMjAyMjYsMjAyMjksMjAyNTgsMjAyNDMsMjAyMjgsMjAyMTIsMjAyNDIsMjA5MTMsMjEwMTEsMjEwMDEsMjEwMDgsMjExNTgsMjEyODIsMjEyNzksMjEzMjUsMjEzODYsMjE1MTEsMjIyNDEsMjIyMzksMjIzMTgsMjIzMTQsMjIzMjQsMjI4NDQsMjI5MTIsMjI5MDgsMjI5MTcsMjI5MDcsMjI5MTAsMjI5MDMsMjI5MTEsMjMzODIsMjM1NzMsMjM1ODksMjM2NzYsMjM2NzQsMjM2NzUsMjM2NzgsMjQwMzEsMjQxODEsMjQxOTYsMjQzMjIsMjQzNDYsMjQ0MzYsMjQ1MzMsMjQ1MzIsMjQ1MjcsMjUxODAsMjUxODIsMjUxODgsMjUxODUsMjUxOTAsMjUxODYsMjUxNzcsMjUxODQsMjUxNzgsMjUxODksMjYwOTUsMjYwOTQsMjY0MzAsMjY0MjUsMjY0MjQsMjY0MjcsMjY0MjYsMjY0MzEsMjY0MjgsMjY0MTksMjc2NzIsMjc3MTgsMjc3MzAsMjc3NDAsMjc3MjcsMjc3MjIsMjc3MzIsMjc3MjMsMjc3MjQsMjg3ODUsMjkyNzgsMjkzNjQsMjkzNjUsMjk1ODIsMjk5OTQsMzAzMzUsMzEzNDksMzI1OTMsMzM0MDAsMzM0MDQsMzM0MDgsMzM0MDUsMzM0MDcsMzQzODEsMzUxOTgsMzcwMTcsMzcwMTUsMzcwMTYsMzcwMTksMzcwMTIsMzg0MzQsMzg0MzYsMzg0MzIsMzg0MzUsMjAzMTAsMjAyODMsMjAzMjIsMjAyOTcsMjAzMDcsMjAzMjQsMjAyODYsMjAzMjcsMjAzMDYsMjAzMTksMjAyODksMjAzMTIsMjAyNjksMjAyNzUsMjAyODcsMjAzMjEsMjA4NzksMjA5MjEsMjEwMjAsMjEwMjIsMjEwMjUsMjExNjUsMjExNjYsMjEyNTcsMjEzNDcsMjEzNjIsMjEzOTAsMjEzOTEsMjE1NTIsMjE1NTksMjE1NDYsMjE1ODgsMjE1NzMsMjE1MjksMjE1MzIsMjE1NDEsMjE1MjgsMjE1NjUsMjE1ODMsMjE1NjksMjE1NDQsMjE1NDAsMjE1NzUsMjIyNTQsMjIyNDcsMjIyNDUsMjIzMzcsMjIzNDEsMjIzNDgsMjIzNDUsMjIzNDcsMjIzNTQsMjI3OTAsMjI4NDgsMjI5NTAsMjI5MzYsMjI5NDQsMjI5MzUsMjI5MjYsMjI5NDYsMjI5MjgsMjI5MjcsMjI5NTEsMjI5NDUsMjM0MzgsMjM0NDIsMjM1OTIsMjM1OTQsMjM2OTMsMjM2OTUsMjM2ODgsMjM2OTEsMjM2ODksMjM2OTgsMjM2OTAsMjM2ODYsMjM2OTksMjM3MDEsMjQwMzIsMjQwNzQsMjQwNzgsMjQyMDMsMjQyMDEsMjQyMDQsMjQyMDAsMjQyMDUsMjQzMjUsMjQzNDksMjQ0NDAsMjQ0MzgsMjQ1MzAsMjQ1MjksMjQ1MjgsMjQ1NTcsMjQ1NTIsMjQ1NTgsMjQ1NjMsMjQ1NDUsMjQ1NDgsMjQ1NDcsMjQ1NzAsMjQ1NTksMjQ1NjcsMjQ1NzEsMjQ1NzYsMjQ1NjQsMjUxNDYsMjUyMTksMjUyMjgsMjUyMzAsMjUyMzEsMjUyMzYsMjUyMjMsMjUyMDEsMjUyMTEsMjUyMTAsMjUyMDAsMjUyMTcsMjUyMjQsMjUyMDcsMjUyMTMsMjUyMDIsMjUyMDQsMjU5MTEsMjYwOTYsMjYxMDAsMjYwOTksMjYwOTgsMjYxMDEsMjY0MzcsMjY0MzksMjY0NTcsMjY0NTMsMjY0NDQsMjY0NDAsMjY0NjEsMjY0NDUsMjY0NTgsMjY0NDMsMjc2MDAsMjc2NzMsMjc2NzQsMjc3NjgsMjc3NTEsMjc3NTUsMjc3ODAsMjc3ODcsMjc3OTEsMjc3NjEsMjc3NTksMjc3NTMsMjc4MDIsMjc3NTcsMjc3ODMsMjc3OTcsMjc4MDQsMjc3NTAsMjc3NjMsMjc3NDksMjc3NzEsMjc3OTAsMjg3ODgsMjg3OTQsMjkyODMsMjkzNzUsMjkzNzMsMjkzNzksMjkzODIsMjkzNzcsMjkzNzAsMjkzODEsMjk1ODksMjk1OTEsMjk1ODcsMjk1ODgsMjk1ODYsMzAwMTAsMzAwMDksMzAxMDAsMzAxMDEsMzAzMzcsMzEwMzcsMzI4MjAsMzI5MTcsMzI5MjEsMzI5MTIsMzI5MTQsMzI5MjQsMzM0MjQsMzM0MjMsMzM0MTMsMzM0MjIsMzM0MjUsMzM0MjcsMzM0MTgsMzM0MTEsMzM0MTIsMzU5NjAsMzY4MDksMzY3OTksMzcwMjMsMzcwMjUsMzcwMjksMzcwMjIsMzcwMzEsMzcwMjQsMzg0NDgsMzg0NDAsMzg0NDcsMzg0NDUsMjAwMTksMjAzNzYsMjAzNDgsMjAzNTcsMjAzNDksMjAzNTIsMjAzNTksMjAzNDIsMjAzNDAsMjAzNjEsMjAzNTYsMjAzNDMsMjAzMDAsMjAzNzUsMjAzMzAsMjAzNzgsMjAzNDUsMjAzNTMsMjAzNDQsMjAzNjgsMjAzODAsMjAzNzIsMjAzODIsMjAzNzAsMjAzNTQsMjAzNzMsMjAzMzEsMjAzMzQsMjA4OTQsMjA5MjQsMjA5MjYsMjEwNDUsMjEwNDIsMjEwNDMsMjEwNjIsMjEwNDEsMjExODAsMjEyNTgsMjEyNTksMjEzMDgsMjEzOTQsMjEzOTYsMjE2MzksMjE2MzEsMjE2MzMsMjE2NDksMjE2MzQsMjE2NDAsMjE2MTEsMjE2MjYsMjE2MzAsMjE2MDUsMjE2MTIsMjE2MjAsMjE2MDYsMjE2NDUsMjE2MTUsMjE2MDEsMjE2MDAsMjE2NTYsMjE2MDMsMjE2MDcsMjE2MDQsMjIyNjMsMjIyNjUsMjIzODMsMjIzODYsMjIzODEsMjIzNzksMjIzODUsMjIzODQsMjIzOTAsMjI0MDAsMjIzODksMjIzOTUsMjIzODcsMjIzODgsMjIzNzAsMjIzNzYsMjIzOTcsMjI3OTYsMjI4NTMsMjI5NjUsMjI5NzAsMjI5OTEsMjI5OTAsMjI5NjIsMjI5ODgsMjI5NzcsMjI5NjYsMjI5NzIsMjI5NzksMjI5OTgsMjI5NjEsMjI5NzMsMjI5NzYsMjI5ODQsMjI5NjQsMjI5ODMsMjMzOTQsMjMzOTcsMjM0NDMsMjM0NDUsMjM2MjAsMjM2MjMsMjM3MjYsMjM3MTYsMjM3MTIsMjM3MzMsMjM3MjcsMjM3MjAsMjM3MjQsMjM3MTEsMjM3MTUsMjM3MjUsMjM3MTQsMjM3MjIsMjM3MTksMjM3MDksMjM3MTcsMjM3MzQsMjM3MjgsMjM3MTgsMjQwODcsMjQwODQsMjQwODksMjQzNjAsMjQzNTQsMjQzNTUsMjQzNTYsMjQ0MDQsMjQ0NTAsMjQ0NDYsMjQ0NDUsMjQ1NDIsMjQ1NDksMjQ2MjEsMjQ2MTQsMjQ2MDEsMjQ2MjYsMjQ1ODcsMjQ2MjgsMjQ1ODYsMjQ1OTksMjQ2MjcsMjQ2MDIsMjQ2MDYsMjQ2MjAsMjQ2MTAsMjQ1ODksMjQ1OTIsMjQ2MjIsMjQ1OTUsMjQ1OTMsMjQ1ODgsMjQ1ODUsMjQ2MDQsMjUxMDgsMjUxNDksMjUyNjEsMjUyNjgsMjUyOTcsMjUyNzgsMjUyNTgsMjUyNzAsMjUyOTAsMjUyNjIsMjUyNjcsMjUyNjMsMjUyNzUsMjUyNTcsMjUyNjQsMjUyNzIsMjU5MTcsMjYwMjQsMjYwNDMsMjYxMjEsMjYxMDgsMjYxMTYsMjYxMzAsMjYxMjAsMjYxMDcsMjYxMTUsMjYxMjMsMjYxMjUsMjYxMTcsMjYxMDksMjYxMjksMjYxMjgsMjYzNTgsMjYzNzgsMjY1MDEsMjY0NzYsMjY1MTAsMjY1MTQsMjY0ODYsMjY0OTEsMjY1MjAsMjY1MDIsMjY1MDAsMjY0ODQsMjY1MDksMjY1MDgsMjY0OTAsMjY1MjcsMjY1MTMsMjY1MjEsMjY0OTksMjY0OTMsMjY0OTcsMjY0ODgsMjY0ODksMjY1MTYsMjc0MjksMjc1MjAsMjc1MTgsMjc2MTQsMjc2NzcsMjc3OTUsMjc4ODQsMjc4ODMsMjc4ODYsMjc4NjUsMjc4MzAsMjc4NjAsMjc4MjEsMjc4NzksMjc4MzEsMjc4NTYsMjc4NDIsMjc4MzQsMjc4NDMsMjc4NDYsMjc4ODUsMjc4OTAsMjc4NTgsMjc4NjksMjc4MjgsMjc3ODYsMjc4MDUsMjc3NzYsMjc4NzAsMjc4NDAsMjc5NTIsMjc4NTMsMjc4NDcsMjc4MjQsMjc4OTcsMjc4NTUsMjc4ODEsMjc4NTcsMjg4MjAsMjg4MjQsMjg4MDUsMjg4MTksMjg4MDYsMjg4MDQsMjg4MTcsMjg4MjIsMjg4MDIsMjg4MjYsMjg4MDMsMjkyOTAsMjkzOTgsMjkzODcsMjk0MDAsMjkzODUsMjk0MDQsMjkzOTQsMjkzOTYsMjk0MDIsMjkzODgsMjkzOTMsMjk2MDQsMjk2MDEsMjk2MTMsMjk2MDYsMjk2MDIsMjk2MDAsMjk2MTIsMjk1OTcsMjk5MTcsMjk5MjgsMzAwMTUsMzAwMTYsMzAwMTQsMzAwOTIsMzAxMDQsMzAzODMsMzA0NTEsMzA0NDksMzA0NDgsMzA0NTMsMzA3MTIsMzA3MTYsMzA3MTMsMzA3MTUsMzA3MTQsMzA3MTEsMzEwNDIsMzEwMzksMzExNzMsMzEzNTIsMzEzNTUsMzE0ODMsMzE4NjEsMzE5OTcsMzI4MjEsMzI5MTEsMzI5NDIsMzI5MzEsMzI5NTIsMzI5NDksMzI5NDEsMzMzMTIsMzM0NDAsMzM0NzIsMzM0NTEsMzM0MzQsMzM0MzIsMzM0MzUsMzM0NjEsMzM0NDcsMzM0NTQsMzM0NjgsMzM0MzgsMzM0NjYsMzM0NjAsMzM0NDgsMzM0NDEsMzM0NDksMzM0NzQsMzM0NDQsMzM0NzUsMzM0NjIsMzM0NDIsMzQ0MTYsMzQ0MTUsMzQ0MTMsMzQ0MTQsMzU5MjYsMzY4MTgsMzY4MTEsMzY4MTksMzY4MTMsMzY4MjIsMzY4MjEsMzY4MjMsMzcwNDIsMzcwNDQsMzcwMzksMzcwNDMsMzcwNDAsMzg0NTcsMzg0NjEsMzg0NjAsMzg0NTgsMzg0NjcsMjA0MjksMjA0MjEsMjA0MzUsMjA0MDIsMjA0MjUsMjA0MjcsMjA0MTcsMjA0MzYsMjA0NDQsMjA0NDEsMjA0MTEsMjA0MDMsMjA0NDMsMjA0MjMsMjA0MzgsMjA0MTAsMjA0MTYsMjA0MDksMjA0NjAsMjEwNjAsMjEwNjUsMjExODQsMjExODYsMjEzMDksMjEzNzIsMjEzOTksMjEzOTgsMjE0MDEsMjE0MDAsMjE2OTAsMjE2NjUsMjE2NzcsMjE2NjksMjE3MTEsMjE2OTksMzM1NDksMjE2ODcsMjE2NzgsMjE3MTgsMjE2ODYsMjE3MDEsMjE3MDIsMjE2NjQsMjE2MTYsMjE2OTIsMjE2NjYsMjE2OTQsMjE2MTgsMjE3MjYsMjE2ODAsMjI0NTMsMjI0MzAsMjI0MzEsMjI0MzYsMjI0MTIsMjI0MjMsMjI0MjksMjI0MjcsMjI0MjAsMjI0MjQsMjI0MTUsMjI0MjUsMjI0MzcsMjI0MjYsMjI0MjEsMjI3NzIsMjI3OTcsMjI4NjcsMjMwMDksMjMwMDYsMjMwMjIsMjMwNDAsMjMwMjUsMjMwMDUsMjMwMzQsMjMwMzcsMjMwMzYsMjMwMzAsMjMwMTIsMjMwMjYsMjMwMzEsMjMwMDMsMjMwMTcsMjMwMjcsMjMwMjksMjMwMDgsMjMwMzgsMjMwMjgsMjMwMjEsMjM0NjQsMjM2MjgsMjM3NjAsMjM3NjgsMjM3NTYsMjM3NjcsMjM3NTUsMjM3NzEsMjM3NzQsMjM3NzAsMjM3NTMsMjM3NTEsMjM3NTQsMjM3NjYsMjM3NjMsMjM3NjQsMjM3NTksMjM3NTIsMjM3NTAsMjM3NTgsMjM3NzUsMjM4MDAsMjQwNTcsMjQwOTcsMjQwOTgsMjQwOTksMjQwOTYsMjQxMDAsMjQyNDAsMjQyMjgsMjQyMjYsMjQyMTksMjQyMjcsMjQyMjksMjQzMjcsMjQzNjYsMjQ0MDYsMjQ0NTQsMjQ2MzEsMjQ2MzMsMjQ2NjAsMjQ2OTAsMjQ2NzAsMjQ2NDUsMjQ2NTksMjQ2NDcsMjQ2NDksMjQ2NjcsMjQ2NTIsMjQ2NDAsMjQ2NDIsMjQ2NzEsMjQ2MTIsMjQ2NDQsMjQ2NjQsMjQ2NzgsMjQ2ODYsMjUxNTQsMjUxNTUsMjUyOTUsMjUzNTcsMjUzNTUsMjUzMzMsMjUzNTgsMjUzNDcsMjUzMjMsMjUzMzcsMjUzNTksMjUzNTYsMjUzMzYsMjUzMzQsMjUzNDQsMjUzNjMsMjUzNjQsMjUzMzgsMjUzNjUsMjUzMzksMjUzMjgsMjU5MjEsMjU5MjMsMjYwMjYsMjYwNDcsMjYxNjYsMjYxNDUsMjYxNjIsMjYxNjUsMjYxNDAsMjYxNTAsMjYxNDYsMjYxNjMsMjYxNTUsMjYxNzAsMjYxNDEsMjYxNjQsMjYxNjksMjYxNTgsMjYzODMsMjYzODQsMjY1NjEsMjY2MTAsMjY1NjgsMjY1NTQsMjY1ODgsMjY1NTUsMjY2MTYsMjY1ODQsMjY1NjAsMjY1NTEsMjY1NjUsMjY2MDMsMjY1OTYsMjY1OTEsMjY1NDksMjY1NzMsMjY1NDcsMjY2MTUsMjY2MTQsMjY2MDYsMjY1OTUsMjY1NjIsMjY1NTMsMjY1NzQsMjY1OTksMjY2MDgsMjY1NDYsMjY2MjAsMjY1NjYsMjY2MDUsMjY1NzIsMjY1NDIsMjY1OTgsMjY1ODcsMjY2MTgsMjY1NjksMjY1NzAsMjY1NjMsMjY2MDIsMjY1NzEsMjc0MzIsMjc1MjIsMjc1MjQsMjc1NzQsMjc2MDYsMjc2MDgsMjc2MTYsMjc2ODAsMjc2ODEsMjc5NDQsMjc5NTYsMjc5NDksMjc5MzUsMjc5NjQsMjc5NjcsMjc5MjIsMjc5MTQsMjc4NjYsMjc5NTUsMjc5MDgsMjc5MjksMjc5NjIsMjc5MzAsMjc5MjEsMjc5MDQsMjc5MzMsMjc5NzAsMjc5MDUsMjc5MjgsMjc5NTksMjc5MDcsMjc5MTksMjc5NjgsMjc5MTEsMjc5MzYsMjc5NDgsMjc5MTIsMjc5MzgsMjc5MTMsMjc5MjAsMjg4NTUsMjg4MzEsMjg4NjIsMjg4NDksMjg4NDgsMjg4MzMsMjg4NTIsMjg4NTMsMjg4NDEsMjkyNDksMjkyNTcsMjkyNTgsMjkyOTIsMjkyOTYsMjkyOTksMjkyOTQsMjkzODYsMjk0MTIsMjk0MTYsMjk0MTksMjk0MDcsMjk0MTgsMjk0MTQsMjk0MTEsMjk1NzMsMjk2NDQsMjk2MzQsMjk2NDAsMjk2MzcsMjk2MjUsMjk2MjIsMjk2MjEsMjk2MjAsMjk2NzUsMjk2MzEsMjk2MzksMjk2MzAsMjk2MzUsMjk2MzgsMjk2MjQsMjk2NDMsMjk5MzIsMjk5MzQsMjk5OTgsMzAwMjMsMzAwMjQsMzAxMTksMzAxMjIsMzAzMjksMzA0MDQsMzA0NzIsMzA0NjcsMzA0NjgsMzA0NjksMzA0NzQsMzA0NTUsMzA0NTksMzA0NTgsMzA2OTUsMzA2OTYsMzA3MjYsMzA3MzcsMzA3MzgsMzA3MjUsMzA3MzYsMzA3MzUsMzA3MzQsMzA3MjksMzA3MjMsMzA3MzksMzEwNTAsMzEwNTIsMzEwNTEsMzEwNDUsMzEwNDQsMzExODksMzExODEsMzExODMsMzExOTAsMzExODIsMzEzNjAsMzEzNTgsMzE0NDEsMzE0ODgsMzE0ODksMzE4NjYsMzE4NjQsMzE4NjUsMzE4NzEsMzE4NzIsMzE4NzMsMzIwMDMsMzIwMDgsMzIwMDEsMzI2MDAsMzI2NTcsMzI2NTMsMzI3MDIsMzI3NzUsMzI3ODIsMzI3ODMsMzI3ODgsMzI4MjMsMzI5ODQsMzI5NjcsMzI5OTIsMzI5NzcsMzI5NjgsMzI5NjIsMzI5NzYsMzI5NjUsMzI5OTUsMzI5ODUsMzI5ODgsMzI5NzAsMzI5ODEsMzI5NjksMzI5NzUsMzI5ODMsMzI5OTgsMzI5NzMsMzMyNzksMzMzMTMsMzM0MjgsMzM0OTcsMzM1MzQsMzM1MjksMzM1NDMsMzM1MTIsMzM1MzYsMzM0OTMsMzM1OTQsMzM1MTUsMzM0OTQsMzM1MjQsMzM1MTYsMzM1MDUsMzM1MjIsMzM1MjUsMzM1NDgsMzM1MzEsMzM1MjYsMzM1MjAsMzM1MTQsMzM1MDgsMzM1MDQsMzM1MzAsMzM1MjMsMzM1MTcsMzQ0MjMsMzQ0MjAsMzQ0MjgsMzQ0MTksMzQ4ODEsMzQ4OTQsMzQ5MTksMzQ5MjIsMzQ5MjEsMzUyODMsMzUzMzIsMzUzMzUsMzYyMTAsMzY4MzUsMzY4MzMsMzY4NDYsMzY4MzIsMzcxMDUsMzcwNTMsMzcwNTUsMzcwNzcsMzcwNjEsMzcwNTQsMzcwNjMsMzcwNjcsMzcwNjQsMzczMzIsMzczMzEsMzg0ODQsMzg0NzksMzg0ODEsMzg0ODMsMzg0NzQsMzg0NzgsMjA1MTAsMjA0ODUsMjA0ODcsMjA0OTksMjA1MTQsMjA1MjgsMjA1MDcsMjA0NjksMjA0NjgsMjA1MzEsMjA1MzUsMjA1MjQsMjA0NzAsMjA0NzEsMjA1MDMsMjA1MDgsMjA1MTIsMjA1MTksMjA1MzMsMjA1MjcsMjA1MjksMjA0OTQsMjA4MjYsMjA4ODQsMjA4ODMsMjA5MzgsMjA5MzIsMjA5MzMsMjA5MzYsMjA5NDIsMjEwODksMjEwODIsMjEwNzQsMjEwODYsMjEwODcsMjEwNzcsMjEwOTAsMjExOTcsMjEyNjIsMjE0MDYsMjE3OTgsMjE3MzAsMjE3ODMsMjE3NzgsMjE3MzUsMjE3NDcsMjE3MzIsMjE3ODYsMjE3NTksMjE3NjQsMjE3NjgsMjE3MzksMjE3NzcsMjE3NjUsMjE3NDUsMjE3NzAsMjE3NTUsMjE3NTEsMjE3NTIsMjE3MjgsMjE3NzQsMjE3NjMsMjE3NzEsMjIyNzMsMjIyNzQsMjI0NzYsMjI1NzgsMjI0ODUsMjI0ODIsMjI0NTgsMjI0NzAsMjI0NjEsMjI0NjAsMjI0NTYsMjI0NTQsMjI0NjMsMjI0NzEsMjI0ODAsMjI0NTcsMjI0NjUsMjI3OTgsMjI4NTgsMjMwNjUsMjMwNjIsMjMwODUsMjMwODYsMjMwNjEsMjMwNTUsMjMwNjMsMjMwNTAsMjMwNzAsMjMwOTEsMjM0MDQsMjM0NjMsMjM0NjksMjM0NjgsMjM1NTUsMjM2MzgsMjM2MzYsMjM3ODgsMjM4MDcsMjM3OTAsMjM3OTMsMjM3OTksMjM4MDgsMjM4MDEsMjQxMDUsMjQxMDQsMjQyMzIsMjQyMzgsMjQyMzQsMjQyMzYsMjQzNzEsMjQzNjgsMjQ0MjMsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ3MzgsMjQ3MTIsMjQ3MDQsMjQ3MjIsMjQ3MDUsMjQ3MzMsMjQ3MDcsMjQ3MjUsMjQ3MzEsMjQ3MjcsMjQ3MTEsMjQ3MzIsMjQ3MTgsMjUxMTMsMjUxNTgsMjUzMzAsMjUzNjAsMjU0MzAsMjUzODgsMjU0MTIsMjU0MTMsMjUzOTgsMjU0MTEsMjU1NzIsMjU0MDEsMjU0MTksMjU0MTgsMjU0MDQsMjUzODUsMjU0MDksMjUzOTYsMjU0MzIsMjU0MjgsMjU0MzMsMjUzODksMjU0MTUsMjUzOTUsMjU0MzQsMjU0MjUsMjU0MDAsMjU0MzEsMjU0MDgsMjU0MTYsMjU5MzAsMjU5MjYsMjYwNTQsMjYwNTEsMjYwNTIsMjYwNTAsMjYxODYsMjYyMDcsMjYxODMsMjYxOTMsMjYzODYsMjYzODcsMjY2NTUsMjY2NTAsMjY2OTcsMjY2NzQsMjY2NzUsMjY2ODMsMjY2OTksMjY3MDMsMjY2NDYsMjY2NzMsMjY2NTIsMjY2NzcsMjY2NjcsMjY2NjksMjY2NzEsMjY3MDIsMjY2OTIsMjY2NzYsMjY2NTMsMjY2NDIsMjY2NDQsMjY2NjIsMjY2NjQsMjY2NzAsMjY3MDEsMjY2ODIsMjY2NjEsMjY2NTYsMjc0MzYsMjc0MzksMjc0MzcsMjc0NDEsMjc0NDQsMjc1MDEsMzI4OTgsMjc1MjgsMjc2MjIsMjc2MjAsMjc2MjQsMjc2MTksMjc2MTgsMjc2MjMsMjc2ODUsMjgwMjYsMjgwMDMsMjgwMDQsMjgwMjIsMjc5MTcsMjgwMDEsMjgwNTAsMjc5OTIsMjgwMDIsMjgwMTMsMjgwMTUsMjgwNDksMjgwNDUsMjgxNDMsMjgwMzEsMjgwMzgsMjc5OTgsMjgwMDcsMjgwMDAsMjgwNTUsMjgwMTYsMjgwMjgsMjc5OTksMjgwMzQsMjgwNTYsMjc5NTEsMjgwMDgsMjgwNDMsMjgwMzAsMjgwMzIsMjgwMzYsMjc5MjYsMjgwMzUsMjgwMjcsMjgwMjksMjgwMjEsMjgwNDgsMjg4OTIsMjg4ODMsMjg4ODEsMjg4OTMsMjg4NzUsMzI1NjksMjg4OTgsMjg4ODcsMjg4ODIsMjg4OTQsMjg4OTYsMjg4ODQsMjg4NzcsMjg4NjksMjg4NzAsMjg4NzEsMjg4OTAsMjg4NzgsMjg4OTcsMjkyNTAsMjkzMDQsMjkzMDMsMjkzMDIsMjk0NDAsMjk0MzQsMjk0MjgsMjk0MzgsMjk0MzAsMjk0MjcsMjk0MzUsMjk0NDEsMjk2NTEsMjk2NTcsMjk2NjksMjk2NTQsMjk2MjgsMjk2NzEsMjk2NjcsMjk2NzMsMjk2NjAsMjk2NTAsMjk2NTksMjk2NTIsMjk2NjEsMjk2NTgsMjk2NTUsMjk2NTYsMjk2NzIsMjk5MTgsMjk5MTksMjk5NDAsMjk5NDEsMjk5ODUsMzAwNDMsMzAwNDcsMzAxMjgsMzAxNDUsMzAxMzksMzAxNDgsMzAxNDQsMzAxNDMsMzAxMzQsMzAxMzgsMzAzNDYsMzA0MDksMzA0OTMsMzA0OTEsMzA0ODAsMzA0ODMsMzA0ODIsMzA0OTksMzA0ODEsMzA0ODUsMzA0ODksMzA0OTAsMzA0OTgsMzA1MDMsMzA3NTUsMzA3NjQsMzA3NTQsMzA3NzMsMzA3NjcsMzA3NjAsMzA3NjYsMzA3NjMsMzA3NTMsMzA3NjEsMzA3NzEsMzA3NjIsMzA3NjksMzEwNjAsMzEwNjcsMzEwNTUsMzEwNjgsMzEwNTksMzEwNTgsMzEwNTcsMzEyMTEsMzEyMTIsMzEyMDAsMzEyMTQsMzEyMTMsMzEyMTAsMzExOTYsMzExOTgsMzExOTcsMzEzNjYsMzEzNjksMzEzNjUsMzEzNzEsMzEzNzIsMzEzNzAsMzEzNjcsMzE0NDgsMzE1MDQsMzE0OTIsMzE1MDcsMzE0OTMsMzE1MDMsMzE0OTYsMzE0OTgsMzE1MDIsMzE0OTcsMzE1MDYsMzE4NzYsMzE4ODksMzE4ODIsMzE4ODQsMzE4ODAsMzE4ODUsMzE4NzcsMzIwMzAsMzIwMjksMzIwMTcsMzIwMTQsMzIwMjQsMzIwMjIsMzIwMTksMzIwMzEsMzIwMTgsMzIwMTUsMzIwMTIsMzI2MDQsMzI2MDksMzI2MDYsMzI2MDgsMzI2MDUsMzI2MDMsMzI2NjIsMzI2NTgsMzI3MDcsMzI3MDYsMzI3MDQsMzI3OTAsMzI4MzAsMzI4MjUsMzMwMTgsMzMwMTAsMzMwMTcsMzMwMTMsMzMwMjUsMzMwMTksMzMwMjQsMzMyODEsMzMzMjcsMzMzMTcsMzM1ODcsMzM1ODEsMzM2MDQsMzM1NjEsMzM2MTcsMzM1NzMsMzM2MjIsMzM1OTksMzM2MDEsMzM1NzQsMzM1NjQsMzM1NzAsMzM2MDIsMzM2MTQsMzM1NjMsMzM1NzgsMzM1NDQsMzM1OTYsMzM2MTMsMzM1NTgsMzM1NzIsMzM1NjgsMzM1OTEsMzM1ODMsMzM1NzcsMzM2MDcsMzM2MDUsMzM2MTIsMzM2MTksMzM1NjYsMzM1ODAsMzM2MTEsMzM1NzUsMzM2MDgsMzQzODcsMzQzODYsMzQ0NjYsMzQ0NzIsMzQ0NTQsMzQ0NDUsMzQ0NDksMzQ0NjIsMzQ0MzksMzQ0NTUsMzQ0MzgsMzQ0NDMsMzQ0NTgsMzQ0MzcsMzQ0NjksMzQ0NTcsMzQ0NjUsMzQ0NzEsMzQ0NTMsMzQ0NTYsMzQ0NDYsMzQ0NjEsMzQ0NDgsMzQ0NTIsMzQ4ODMsMzQ4ODQsMzQ5MjUsMzQ5MzMsMzQ5MzQsMzQ5MzAsMzQ5NDQsMzQ5MjksMzQ5NDMsMzQ5MjcsMzQ5NDcsMzQ5NDIsMzQ5MzIsMzQ5NDAsMzUzNDYsMzU5MTEsMzU5MjcsMzU5NjMsMzYwMDQsMzYwMDMsMzYyMTQsMzYyMTYsMzYyNzcsMzYyNzksMzYyNzgsMzY1NjEsMzY1NjMsMzY4NjIsMzY4NTMsMzY4NjYsMzY4NjMsMzY4NTksMzY4NjgsMzY4NjAsMzY4NTQsMzcwNzgsMzcwODgsMzcwODEsMzcwODIsMzcwOTEsMzcwODcsMzcwOTMsMzcwODAsMzcwODMsMzcwNzksMzcwODQsMzcwOTIsMzcyMDAsMzcxOTgsMzcxOTksMzczMzMsMzczNDYsMzczMzgsMzg0OTIsMzg0OTUsMzg1ODgsMzkxMzksMzk2NDcsMzk3MjcsMjAwOTUsMjA1OTIsMjA1ODYsMjA1NzcsMjA1NzQsMjA1NzYsMjA1NjMsMjA1NTUsMjA1NzMsMjA1OTQsMjA1NTIsMjA1NTcsMjA1NDUsMjA1NzEsMjA1NTQsMjA1NzgsMjA1MDEsMjA1NDksMjA1NzUsMjA1ODUsMjA1ODcsMjA1NzksMjA1ODAsMjA1NTAsMjA1NDQsMjA1OTAsMjA1OTUsMjA1NjcsMjA1NjEsMjA5NDQsMjEwOTksMjExMDEsMjExMDAsMjExMDIsMjEyMDYsMjEyMDMsMjEyOTMsMjE0MDQsMjE4NzcsMjE4NzgsMjE4MjAsMjE4MzcsMjE4NDAsMjE4MTIsMjE4MDIsMjE4NDEsMjE4NTgsMjE4MTQsMjE4MTMsMjE4MDgsMjE4NDIsMjE4MjksMjE3NzIsMjE4MTAsMjE4NjEsMjE4MzgsMjE4MTcsMjE4MzIsMjE4MDUsMjE4MTksMjE4MjQsMjE4MzUsMjIyODIsMjIyNzksMjI1MjMsMjI1NDgsMjI0OTgsMjI1MTgsMjI0OTIsMjI1MTYsMjI1MjgsMjI1MDksMjI1MjUsMjI1MzYsMjI1MjAsMjI1MzksMjI1MTUsMjI0NzksMjI1MzUsMjI1MTAsMjI0OTksMjI1MTQsMjI1MDEsMjI1MDgsMjI0OTcsMjI1NDIsMjI1MjQsMjI1NDQsMjI1MDMsMjI1MjksMjI1NDAsMjI1MTMsMjI1MDUsMjI1MTIsMjI1NDEsMjI1MzIsMjI4NzYsMjMxMzYsMjMxMjgsMjMxMjUsMjMxNDMsMjMxMzQsMjMwOTYsMjMwOTMsMjMxNDksMjMxMjAsMjMxMzUsMjMxNDEsMjMxNDgsMjMxMjMsMjMxNDAsMjMxMjcsMjMxMDcsMjMxMzMsMjMxMjIsMjMxMDgsMjMxMzEsMjMxMTIsMjMxODIsMjMxMDIsMjMxMTcsMjMwOTcsMjMxMTYsMjMxNTIsMjMxNDUsMjMxMTEsMjMxMjEsMjMxMjYsMjMxMDYsMjMxMzIsMjM0MTAsMjM0MDYsMjM0ODksMjM0ODgsMjM2NDEsMjM4MzgsMjM4MTksMjM4MzcsMjM4MzQsMjM4NDAsMjM4MjAsMjM4NDgsMjM4MjEsMjM4NDYsMjM4NDUsMjM4MjMsMjM4NTYsMjM4MjYsMjM4NDMsMjM4MzksMjM4NTQsMjQxMjYsMjQxMTYsMjQyNDEsMjQyNDQsMjQyNDksMjQyNDIsMjQyNDMsMjQzNzQsMjQzNzYsMjQ0NzUsMjQ0NzAsMjQ0NzksMjQ3MTQsMjQ3MjAsMjQ3MTAsMjQ3NjYsMjQ3NTIsMjQ3NjIsMjQ3ODcsMjQ3ODgsMjQ3ODMsMjQ4MDQsMjQ3OTMsMjQ3OTcsMjQ3NzYsMjQ3NTMsMjQ3OTUsMjQ3NTksMjQ3NzgsMjQ3NjcsMjQ3NzEsMjQ3ODEsMjQ3NjgsMjUzOTQsMjU0NDUsMjU0ODIsMjU0NzQsMjU0NjksMjU1MzMsMjU1MDIsMjU1MTcsMjU1MDEsMjU0OTUsMjU1MTUsMjU0ODYsMjU0NTUsMjU0NzksMjU0ODgsMjU0NTQsMjU1MTksMjU0NjEsMjU1MDAsMjU0NTMsMjU1MTgsMjU0NjgsMjU1MDgsMjU0MDMsMjU1MDMsMjU0NjQsMjU0NzcsMjU0NzMsMjU0ODksMjU0ODUsMjU0NTYsMjU5MzksMjYwNjEsMjYyMTMsMjYyMDksMjYyMDMsMjYyMDEsMjYyMDQsMjYyMTAsMjYzOTIsMjY3NDUsMjY3NTksMjY3NjgsMjY3ODAsMjY3MzMsMjY3MzQsMjY3OTgsMjY3OTUsMjY5NjYsMjY3MzUsMjY3ODcsMjY3OTYsMjY3OTMsMjY3NDEsMjY3NDAsMjY4MDIsMjY3NjcsMjY3NDMsMjY3NzAsMjY3NDgsMjY3MzEsMjY3MzgsMjY3OTQsMjY3NTIsMjY3MzcsMjY3NTAsMjY3NzksMjY3NzQsMjY3NjMsMjY3ODQsMjY3NjEsMjY3ODgsMjY3NDQsMjY3NDcsMjY3NjksMjY3NjQsMjY3NjIsMjY3NDksMjc0NDYsMjc0NDMsMjc0NDcsMjc0NDgsMjc1MzcsMjc1MzUsMjc1MzMsMjc1MzQsMjc1MzIsMjc2OTAsMjgwOTYsMjgwNzUsMjgwODQsMjgwODMsMjgyNzYsMjgwNzYsMjgxMzcsMjgxMzAsMjgwODcsMjgxNTAsMjgxMTYsMjgxNjAsMjgxMDQsMjgxMjgsMjgxMjcsMjgxMTgsMjgwOTQsMjgxMzMsMjgxMjQsMjgxMjUsMjgxMjMsMjgxNDgsMjgxMDYsMjgwOTMsMjgxNDEsMjgxNDQsMjgwOTAsMjgxMTcsMjgwOTgsMjgxMTEsMjgxMDUsMjgxMTIsMjgxNDYsMjgxMTUsMjgxNTcsMjgxMTksMjgxMDksMjgxMzEsMjgwOTEsMjg5MjIsMjg5NDEsMjg5MTksMjg5NTEsMjg5MTYsMjg5NDAsMjg5MTIsMjg5MzIsMjg5MTUsMjg5NDQsMjg5MjQsMjg5MjcsMjg5MzQsMjg5NDcsMjg5MjgsMjg5MjAsMjg5MTgsMjg5MzksMjg5MzAsMjg5NDIsMjkzMTAsMjkzMDcsMjkzMDgsMjkzMTEsMjk0NjksMjk0NjMsMjk0NDcsMjk0NTcsMjk0NjQsMjk0NTAsMjk0NDgsMjk0MzksMjk0NTUsMjk0NzAsMjk1NzYsMjk2ODYsMjk2ODgsMjk2ODUsMjk3MDAsMjk2OTcsMjk2OTMsMjk3MDMsMjk2OTYsMjk2OTAsMjk2OTIsMjk2OTUsMjk3MDgsMjk3MDcsMjk2ODQsMjk3MDQsMzAwNTIsMzAwNTEsMzAxNTgsMzAxNjIsMzAxNTksMzAxNTUsMzAxNTYsMzAxNjEsMzAxNjAsMzAzNTEsMzAzNDUsMzA0MTksMzA1MjEsMzA1MTEsMzA1MDksMzA1MTMsMzA1MTQsMzA1MTYsMzA1MTUsMzA1MjUsMzA1MDEsMzA1MjMsMzA1MTcsMzA3OTIsMzA4MDIsMzA3OTMsMzA3OTcsMzA3OTQsMzA3OTYsMzA3NTgsMzA3ODksMzA4MDAsMzEwNzYsMzEwNzksMzEwODEsMzEwODIsMzEwNzUsMzEwODMsMzEwNzMsMzExNjMsMzEyMjYsMzEyMjQsMzEyMjIsMzEyMjMsMzEzNzUsMzEzODAsMzEzNzYsMzE1NDEsMzE1NTksMzE1NDAsMzE1MjUsMzE1MzYsMzE1MjIsMzE1MjQsMzE1MzksMzE1MTIsMzE1MzAsMzE1MTcsMzE1MzcsMzE1MzEsMzE1MzMsMzE1MzUsMzE1MzgsMzE1NDQsMzE1MTQsMzE1MjMsMzE4OTIsMzE4OTYsMzE4OTQsMzE5MDcsMzIwNTMsMzIwNjEsMzIwNTYsMzIwNTQsMzIwNTgsMzIwNjksMzIwNDQsMzIwNDEsMzIwNjUsMzIwNzEsMzIwNjIsMzIwNjMsMzIwNzQsMzIwNTksMzIwNDAsMzI2MTEsMzI2NjEsMzI2NjgsMzI2NjksMzI2NjcsMzI3MTQsMzI3MTUsMzI3MTcsMzI3MjAsMzI3MjEsMzI3MTEsMzI3MTksMzI3MTMsMzI3OTksMzI3OTgsMzI3OTUsMzI4MzksMzI4MzUsMzI4NDAsMzMwNDgsMzMwNjEsMzMwNDksMzMwNTEsMzMwNjksMzMwNTUsMzMwNjgsMzMwNTQsMzMwNTcsMzMwNDUsMzMwNjMsMzMwNTMsMzMwNTgsMzMyOTcsMzMzMzYsMzMzMzEsMzMzMzgsMzMzMzIsMzMzMzAsMzMzOTYsMzM2ODAsMzM2OTksMzM3MDQsMzM2NzcsMzM2NTgsMzM2NTEsMzM3MDAsMzM2NTIsMzM2NzksMzM2NjUsMzM2ODUsMzM2ODksMzM2NTMsMzM2ODQsMzM3MDUsMzM2NjEsMzM2NjcsMzM2NzYsMzM2OTMsMzM2OTEsMzM3MDYsMzM2NzUsMzM2NjIsMzM3MDEsMzM3MTEsMzM2NzIsMzM2ODcsMzM3MTIsMzM2NjMsMzM3MDIsMzM2NzEsMzM3MTAsMzM2NTQsMzM2OTAsMzQzOTMsMzQzOTAsMzQ0OTUsMzQ0ODcsMzQ0OTgsMzQ0OTcsMzQ1MDEsMzQ0OTAsMzQ0ODAsMzQ1MDQsMzQ0ODksMzQ0ODMsMzQ0ODgsMzQ1MDgsMzQ0ODQsMzQ0OTEsMzQ0OTIsMzQ0OTksMzQ0OTMsMzQ0OTQsMzQ4OTgsMzQ5NTMsMzQ5NjUsMzQ5ODQsMzQ5NzgsMzQ5ODYsMzQ5NzAsMzQ5NjEsMzQ5NzcsMzQ5NzUsMzQ5NjgsMzQ5ODMsMzQ5NjksMzQ5NzEsMzQ5NjcsMzQ5ODAsMzQ5ODgsMzQ5NTYsMzQ5NjMsMzQ5NTgsMzUyMDIsMzUyODYsMzUyODksMzUyODUsMzUzNzYsMzUzNjcsMzUzNzIsMzUzNTgsMzU4OTcsMzU4OTksMzU5MzIsMzU5MzMsMzU5NjUsMzYwMDUsMzYyMjEsMzYyMTksMzYyMTcsMzYyODQsMzYyOTAsMzYyODEsMzYyODcsMzYyODksMzY1NjgsMzY1NzQsMzY1NzMsMzY1NzIsMzY1NjcsMzY1NzYsMzY1NzcsMzY5MDAsMzY4NzUsMzY4ODEsMzY4OTIsMzY4NzYsMzY4OTcsMzcxMDMsMzcwOTgsMzcxMDQsMzcxMDgsMzcxMDYsMzcxMDcsMzcwNzYsMzcwOTksMzcxMDAsMzcwOTcsMzcyMDYsMzcyMDgsMzcyMTAsMzcyMDMsMzcyMDUsMzczNTYsMzczNjQsMzczNjEsMzczNjMsMzczNjgsMzczNDgsMzczNjksMzczNTQsMzczNTUsMzczNjcsMzczNTIsMzczNTgsMzgyNjYsMzgyNzgsMzgyODAsMzg1MjQsMzg1MDksMzg1MDcsMzg1MTMsMzg1MTEsMzg1OTEsMzg3NjIsMzg5MTYsMzkxNDEsMzkzMTksMjA2MzUsMjA2MjksMjA2MjgsMjA2MzgsMjA2MTksMjA2NDMsMjA2MTEsMjA2MjAsMjA2MjIsMjA2MzcsMjA1ODQsMjA2MzYsMjA2MjYsMjA2MTAsMjA2MTUsMjA4MzEsMjA5NDgsMjEyNjYsMjEyNjUsMjE0MTIsMjE0MTUsMjE5MDUsMjE5MjgsMjE5MjUsMjE5MzMsMjE4NzksMjIwODUsMjE5MjIsMjE5MDcsMjE4OTYsMjE5MDMsMjE5NDEsMjE4ODksMjE5MjMsMjE5MDYsMjE5MjQsMjE4ODUsMjE5MDAsMjE5MjYsMjE4ODcsMjE5MDksMjE5MjEsMjE5MDIsMjIyODQsMjI1NjksMjI1ODMsMjI1NTMsMjI1NTgsMjI1NjcsMjI1NjMsMjI1NjgsMjI1MTcsMjI2MDAsMjI1NjUsMjI1NTYsMjI1NTUsMjI1NzksMjI1OTEsMjI1ODIsMjI1NzQsMjI1ODUsMjI1ODQsMjI1NzMsMjI1NzIsMjI1ODcsMjI4ODEsMjMyMTUsMjMxODgsMjMxOTksMjMxNjIsMjMyMDIsMjMxOTgsMjMxNjAsMjMyMDYsMjMxNjQsMjMyMDUsMjMyMTIsMjMxODksMjMyMTQsMjMwOTUsMjMxNzIsMjMxNzgsMjMxOTEsMjMxNzEsMjMxNzksMjMyMDksMjMxNjMsMjMxNjUsMjMxODAsMjMxOTYsMjMxODMsMjMxODcsMjMxOTcsMjM1MzAsMjM1MDEsMjM0OTksMjM1MDgsMjM1MDUsMjM0OTgsMjM1MDIsMjM1NjQsMjM2MDAsMjM4NjMsMjM4NzUsMjM5MTUsMjM4NzMsMjM4ODMsMjM4NzEsMjM4NjEsMjM4ODksMjM4ODYsMjM4OTMsMjM4NTksMjM4NjYsMjM4OTAsMjM4NjksMjM4NTcsMjM4OTcsMjM4NzQsMjM4NjUsMjM4ODEsMjM4NjQsMjM4NjgsMjM4NTgsMjM4NjIsMjM4NzIsMjM4NzcsMjQxMzIsMjQxMjksMjQ0MDgsMjQ0ODYsMjQ0ODUsMjQ0OTEsMjQ3NzcsMjQ3NjEsMjQ3ODAsMjQ4MDIsMjQ3ODIsMjQ3NzIsMjQ4NTIsMjQ4MTgsMjQ4NDIsMjQ4NTQsMjQ4MzcsMjQ4MjEsMjQ4NTEsMjQ4MjQsMjQ4MjgsMjQ4MzAsMjQ3NjksMjQ4MzUsMjQ4NTYsMjQ4NjEsMjQ4NDgsMjQ4MzEsMjQ4MzYsMjQ4NDMsMjUxNjIsMjU0OTIsMjU1MjEsMjU1MjAsMjU1NTAsMjU1NzMsMjU1NzYsMjU1ODMsMjU1MzksMjU3NTcsMjU1ODcsMjU1NDYsMjU1NjgsMjU1OTAsMjU1NTcsMjU1ODYsMjU1ODksMjU2OTcsMjU1NjcsMjU1MzQsMjU1NjUsMjU1NjQsMjU1NDAsMjU1NjAsMjU1NTUsMjU1MzgsMjU1NDMsMjU1NDgsMjU1NDcsMjU1NDQsMjU1ODQsMjU1NTksMjU1NjEsMjU5MDYsMjU5NTksMjU5NjIsMjU5NTYsMjU5NDgsMjU5NjAsMjU5NTcsMjU5OTYsMjYwMTMsMjYwMTQsMjYwMzAsMjYwNjQsMjYwNjYsMjYyMzYsMjYyMjAsMjYyMzUsMjYyNDAsMjYyMjUsMjYyMzMsMjYyMTgsMjYyMjYsMjYzNjksMjY4OTIsMjY4MzUsMjY4ODQsMjY4NDQsMjY5MjIsMjY4NjAsMjY4NTgsMjY4NjUsMjY4OTUsMjY4MzgsMjY4NzEsMjY4NTksMjY4NTIsMjY4NzAsMjY4OTksMjY4OTYsMjY4NjcsMjY4NDksMjY4ODcsMjY4MjgsMjY4ODgsMjY5OTIsMjY4MDQsMjY4OTcsMjY4NjMsMjY4MjIsMjY5MDAsMjY4NzIsMjY4MzIsMjY4NzcsMjY4NzYsMjY4NTYsMjY4OTEsMjY4OTAsMjY5MDMsMjY4MzAsMjY4MjQsMjY4NDUsMjY4NDYsMjY4NTQsMjY4NjgsMjY4MzMsMjY4ODYsMjY4MzYsMjY4NTcsMjY5MDEsMjY5MTcsMjY4MjMsMjc0NDksMjc0NTEsMjc0NTUsMjc0NTIsMjc1NDAsMjc1NDMsMjc1NDUsMjc1NDEsMjc1ODEsMjc2MzIsMjc2MzQsMjc2MzUsMjc2OTYsMjgxNTYsMjgyMzAsMjgyMzEsMjgxOTEsMjgyMzMsMjgyOTYsMjgyMjAsMjgyMjEsMjgyMjksMjgyNTgsMjgyMDMsMjgyMjMsMjgyMjUsMjgyNTMsMjgyNzUsMjgxODgsMjgyMTEsMjgyMzUsMjgyMjQsMjgyNDEsMjgyMTksMjgxNjMsMjgyMDYsMjgyNTQsMjgyNjQsMjgyNTIsMjgyNTcsMjgyMDksMjgyMDAsMjgyNTYsMjgyNzMsMjgyNjcsMjgyMTcsMjgxOTQsMjgyMDgsMjgyNDMsMjgyNjEsMjgxOTksMjgyODAsMjgyNjAsMjgyNzksMjgyNDUsMjgyODEsMjgyNDIsMjgyNjIsMjgyMTMsMjgyMTQsMjgyNTAsMjg5NjAsMjg5NTgsMjg5NzUsMjg5MjMsMjg5NzQsMjg5NzcsMjg5NjMsMjg5NjUsMjg5NjIsMjg5NzgsMjg5NTksMjg5NjgsMjg5ODYsMjg5NTUsMjkyNTksMjkyNzQsMjkzMjAsMjkzMjEsMjkzMTgsMjkzMTcsMjkzMjMsMjk0NTgsMjk0NTEsMjk0ODgsMjk0NzQsMjk0ODksMjk0OTEsMjk0NzksMjk0OTAsMjk0ODUsMjk0NzgsMjk0NzUsMjk0OTMsMjk0NTIsMjk3NDIsMjk3NDAsMjk3NDQsMjk3MzksMjk3MTgsMjk3MjIsMjk3MjksMjk3NDEsMjk3NDUsMjk3MzIsMjk3MzEsMjk3MjUsMjk3MzcsMjk3MjgsMjk3NDYsMjk5NDcsMjk5OTksMzAwNjMsMzAwNjAsMzAxODMsMzAxNzAsMzAxNzcsMzAxODIsMzAxNzMsMzAxNzUsMzAxODAsMzAxNjcsMzAzNTcsMzAzNTQsMzA0MjYsMzA1MzQsMzA1MzUsMzA1MzIsMzA1NDEsMzA1MzMsMzA1MzgsMzA1NDIsMzA1MzksMzA1NDAsMzA2ODYsMzA3MDAsMzA4MTYsMzA4MjAsMzA4MjEsMzA4MTIsMzA4MjksMzA4MzMsMzA4MjYsMzA4MzAsMzA4MzIsMzA4MjUsMzA4MjQsMzA4MTQsMzA4MTgsMzEwOTIsMzEwOTEsMzEwOTAsMzEwODgsMzEyMzQsMzEyNDIsMzEyMzUsMzEyNDQsMzEyMzYsMzEzODUsMzE0NjIsMzE0NjAsMzE1NjIsMzE1NDcsMzE1NTYsMzE1NjAsMzE1NjQsMzE1NjYsMzE1NTIsMzE1NzYsMzE1NTcsMzE5MDYsMzE5MDIsMzE5MTIsMzE5MDUsMzIwODgsMzIxMTEsMzIwOTksMzIwODMsMzIwODYsMzIxMDMsMzIxMDYsMzIwNzksMzIxMDksMzIwOTIsMzIxMDcsMzIwODIsMzIwODQsMzIxMDUsMzIwODEsMzIwOTUsMzIwNzgsMzI1NzQsMzI1NzUsMzI2MTMsMzI2MTQsMzI2NzQsMzI2NzIsMzI2NzMsMzI3MjcsMzI4NDksMzI4NDcsMzI4NDgsMzMwMjIsMzI5ODAsMzMwOTEsMzMwOTgsMzMxMDYsMzMxMDMsMzMwOTUsMzMwODUsMzMxMDEsMzMwODIsMzMyNTQsMzMyNjIsMzMyNzEsMzMyNzIsMzMyNzMsMzMyODQsMzMzNDAsMzMzNDEsMzMzNDMsMzMzOTcsMzM1OTUsMzM3NDMsMzM3ODUsMzM4MjcsMzM3MjgsMzM3NjgsMzM4MTAsMzM3NjcsMzM3NjQsMzM3ODgsMzM3ODIsMzM4MDgsMzM3MzQsMzM3MzYsMzM3NzEsMzM3NjMsMzM3MjcsMzM3OTMsMzM3NTcsMzM3NjUsMzM3NTIsMzM3OTEsMzM3NjEsMzM3MzksMzM3NDIsMzM3NTAsMzM3ODEsMzM3MzcsMzM4MDEsMzM4MDcsMzM3NTgsMzM4MDksMzM3OTgsMzM3MzAsMzM3NzksMzM3NDksMzM3ODYsMzM3MzUsMzM3NDUsMzM3NzAsMzM4MTEsMzM3MzEsMzM3NzIsMzM3NzQsMzM3MzIsMzM3ODcsMzM3NTEsMzM3NjIsMzM4MTksMzM3NTUsMzM3OTAsMzQ1MjAsMzQ1MzAsMzQ1MzQsMzQ1MTUsMzQ1MzEsMzQ1MjIsMzQ1MzgsMzQ1MjUsMzQ1MzksMzQ1MjQsMzQ1NDAsMzQ1MzcsMzQ1MTksMzQ1MzYsMzQ1MTMsMzQ4ODgsMzQ5MDIsMzQ5MDEsMzUwMDIsMzUwMzEsMzUwMDEsMzUwMDAsMzUwMDgsMzUwMDYsMzQ5OTgsMzUwMDQsMzQ5OTksMzUwMDUsMzQ5OTQsMzUwNzMsMzUwMTcsMzUyMjEsMzUyMjQsMzUyMjMsMzUyOTMsMzUyOTAsMzUyOTEsMzU0MDYsMzU0MDUsMzUzODUsMzU0MTcsMzUzOTIsMzU0MTUsMzU0MTYsMzUzOTYsMzUzOTcsMzU0MTAsMzU0MDAsMzU0MDksMzU0MDIsMzU0MDQsMzU0MDcsMzU5MzUsMzU5NjksMzU5NjgsMzYwMjYsMzYwMzAsMzYwMTYsMzYwMjUsMzYwMjEsMzYyMjgsMzYyMjQsMzYyMzMsMzYzMTIsMzYzMDcsMzYzMDEsMzYyOTUsMzYzMTAsMzYzMTYsMzYzMDMsMzYzMDksMzYzMTMsMzYyOTYsMzYzMTEsMzYyOTMsMzY1OTEsMzY1OTksMzY2MDIsMzY2MDEsMzY1ODIsMzY1OTAsMzY1ODEsMzY1OTcsMzY1ODMsMzY1ODQsMzY1OTgsMzY1ODcsMzY1OTMsMzY1ODgsMzY1OTYsMzY1ODUsMzY5MDksMzY5MTYsMzY5MTEsMzcxMjYsMzcxNjQsMzcxMjQsMzcxMTksMzcxMTYsMzcxMjgsMzcxMTMsMzcxMTUsMzcxMjEsMzcxMjAsMzcxMjcsMzcxMjUsMzcxMjMsMzcyMTcsMzcyMjAsMzcyMTUsMzcyMTgsMzcyMTYsMzczNzcsMzczODYsMzc0MTMsMzczNzksMzc0MDIsMzc0MTQsMzczOTEsMzczODgsMzczNzYsMzczOTQsMzczNzUsMzczNzMsMzczODIsMzczODAsMzc0MTUsMzczNzgsMzc0MDQsMzc0MTIsMzc0MDEsMzczOTksMzczODEsMzczOTgsMzgyNjcsMzgyODUsMzgyODQsMzgyODgsMzg1MzUsMzg1MjYsMzg1MzYsMzg1MzcsMzg1MzEsMzg1MjgsMzg1OTQsMzg2MDAsMzg1OTUsMzg2NDEsMzg2NDAsMzg3NjQsMzg3NjgsMzg3NjYsMzg5MTksMzkwODEsMzkxNDcsNDAxNjYsNDA2OTcsMjAwOTksMjAxMDAsMjAxNTAsMjA2NjksMjA2NzEsMjA2NzgsMjA2NTQsMjA2NzYsMjA2ODIsMjA2NjAsMjA2ODAsMjA2NzQsMjA2NTYsMjA2NzMsMjA2NjYsMjA2NTcsMjA2ODMsMjA2ODEsMjA2NjIsMjA2NjQsMjA5NTEsMjExMTQsMjExMTIsMjExMTUsMjExMTYsMjE5NTUsMjE5NzksMjE5NjQsMjE5NjgsMjE5NjMsMjE5NjIsMjE5ODEsMjE5NTIsMjE5NzIsMjE5NTYsMjE5OTMsMjE5NTEsMjE5NzAsMjE5MDEsMjE5NjcsMjE5NzMsMjE5ODYsMjE5NzQsMjE5NjAsMjIwMDIsMjE5NjUsMjE5NzcsMjE5NTQsMjIyOTIsMjI2MTEsMjI2MzIsMjI2MjgsMjI2MDcsMjI2MDUsMjI2MDEsMjI2MzksMjI2MTMsMjI2MDYsMjI2MjEsMjI2MTcsMjI2MjksMjI2MTksMjI1ODksMjI2MjcsMjI2NDEsMjI3ODAsMjMyMzksMjMyMzYsMjMyNDMsMjMyMjYsMjMyMjQsMjMyMTcsMjMyMjEsMjMyMTYsMjMyMzEsMjMyNDAsMjMyMjcsMjMyMzgsMjMyMjMsMjMyMzIsMjMyNDIsMjMyMjAsMjMyMjIsMjMyNDUsMjMyMjUsMjMxODQsMjM1MTAsMjM1MTIsMjM1MTMsMjM1ODMsMjM2MDMsMjM5MjEsMjM5MDcsMjM4ODIsMjM5MDksMjM5MjIsMjM5MTYsMjM5MDIsMjM5MTIsMjM5MTEsMjM5MDYsMjQwNDgsMjQxNDMsMjQxNDIsMjQxMzgsMjQxNDEsMjQxMzksMjQyNjEsMjQyNjgsMjQyNjIsMjQyNjcsMjQyNjMsMjQzODQsMjQ0OTUsMjQ0OTMsMjQ4MjMsMjQ5MDUsMjQ5MDYsMjQ4NzUsMjQ5MDEsMjQ4ODYsMjQ4ODIsMjQ4NzgsMjQ5MDIsMjQ4NzksMjQ5MTEsMjQ4NzMsMjQ4OTYsMjUxMjAsMzcyMjQsMjUxMjMsMjUxMjUsMjUxMjQsMjU1NDEsMjU1ODUsMjU1NzksMjU2MTYsMjU2MTgsMjU2MDksMjU2MzIsMjU2MzYsMjU2NTEsMjU2NjcsMjU2MzEsMjU2MjEsMjU2MjQsMjU2NTcsMjU2NTUsMjU2MzQsMjU2MzUsMjU2MTIsMjU2MzgsMjU2NDgsMjU2NDAsMjU2NjUsMjU2NTMsMjU2NDcsMjU2MTAsMjU2MjYsMjU2NjQsMjU2MzcsMjU2MzksMjU2MTEsMjU1NzUsMjU2MjcsMjU2NDYsMjU2MzMsMjU2MTQsMjU5NjcsMjYwMDIsMjYwNjcsMjYyNDYsMjYyNTIsMjYyNjEsMjYyNTYsMjYyNTEsMjYyNTAsMjYyNjUsMjYyNjAsMjYyMzIsMjY0MDAsMjY5ODIsMjY5NzUsMjY5MzYsMjY5NTgsMjY5NzgsMjY5OTMsMjY5NDMsMjY5NDksMjY5ODYsMjY5MzcsMjY5NDYsMjY5NjcsMjY5NjksMjcwMDIsMjY5NTIsMjY5NTMsMjY5MzMsMjY5ODgsMjY5MzEsMjY5NDEsMjY5ODEsMjY4NjQsMjcwMDAsMjY5MzIsMjY5ODUsMjY5NDQsMjY5OTEsMjY5NDgsMjY5OTgsMjY5NjgsMjY5NDUsMjY5OTYsMjY5NTYsMjY5MzksMjY5NTUsMjY5MzUsMjY5NzIsMjY5NTksMjY5NjEsMjY5MzAsMjY5NjIsMjY5MjcsMjcwMDMsMjY5NDAsMjc0NjIsMjc0NjEsMjc0NTksMjc0NTgsMjc0NjQsMjc0NTcsMjc1NDcsNjQwMTMsMjc2NDMsMjc2NDQsMjc2NDEsMjc2MzksMjc2NDAsMjgzMTUsMjgzNzQsMjgzNjAsMjgzMDMsMjgzNTIsMjgzMTksMjgzMDcsMjgzMDgsMjgzMjAsMjgzMzcsMjgzNDUsMjgzNTgsMjgzNzAsMjgzNDksMjgzNTMsMjgzMTgsMjgzNjEsMjgzNDMsMjgzMzYsMjgzNjUsMjgzMjYsMjgzNjcsMjgzMzgsMjgzNTAsMjgzNTUsMjgzODAsMjgzNzYsMjgzMTMsMjgzMDYsMjgzMDIsMjgzMDEsMjgzMjQsMjgzMjEsMjgzNTEsMjgzMzksMjgzNjgsMjgzNjIsMjgzMTEsMjgzMzQsMjgzMjMsMjg5OTksMjkwMTIsMjkwMTAsMjkwMjcsMjkwMjQsMjg5OTMsMjkwMjEsMjkwMjYsMjkwNDIsMjkwNDgsMjkwMzQsMjkwMjUsMjg5OTQsMjkwMTYsMjg5OTUsMjkwMDMsMjkwNDAsMjkwMjMsMjkwMDgsMjkwMTEsMjg5OTYsMjkwMDUsMjkwMTgsMjkyNjMsMjkzMjUsMjkzMjQsMjkzMjksMjkzMjgsMjkzMjYsMjk1MDAsMjk1MDYsMjk0OTksMjk0OTgsMjk1MDQsMjk1MTQsMjk1MTMsMjk3NjQsMjk3NzAsMjk3NzEsMjk3NzgsMjk3NzcsMjk3ODMsMjk3NjAsMjk3NzUsMjk3NzYsMjk3NzQsMjk3NjIsMjk3NjYsMjk3NzMsMjk3ODAsMjk5MjEsMjk5NTEsMjk5NTAsMjk5NDksMjk5ODEsMzAwNzMsMzAwNzEsMjcwMTEsMzAxOTEsMzAyMjMsMzAyMTEsMzAxOTksMzAyMDYsMzAyMDQsMzAyMDEsMzAyMDAsMzAyMjQsMzAyMDMsMzAxOTgsMzAxODksMzAxOTcsMzAyMDUsMzAzNjEsMzAzODksMzA0MjksMzA1NDksMzA1NTksMzA1NjAsMzA1NDYsMzA1NTAsMzA1NTQsMzA1NjksMzA1NjcsMzA1NDgsMzA1NTMsMzA1NzMsMzA2ODgsMzA4NTUsMzA4NzQsMzA4NjgsMzA4NjMsMzA4NTIsMzA4NjksMzA4NTMsMzA4NTQsMzA4ODEsMzA4NTEsMzA4NDEsMzA4NzMsMzA4NDgsMzA4NzAsMzA4NDMsMzExMDAsMzExMDYsMzExMDEsMzEwOTcsMzEyNDksMzEyNTYsMzEyNTcsMzEyNTAsMzEyNTUsMzEyNTMsMzEyNjYsMzEyNTEsMzEyNTksMzEyNDgsMzEzOTUsMzEzOTQsMzEzOTAsMzE0NjcsMzE1OTAsMzE1ODgsMzE1OTcsMzE2MDQsMzE1OTMsMzE2MDIsMzE1ODksMzE2MDMsMzE2MDEsMzE2MDAsMzE1ODUsMzE2MDgsMzE2MDYsMzE1ODcsMzE5MjIsMzE5MjQsMzE5MTksMzIxMzYsMzIxMzQsMzIxMjgsMzIxNDEsMzIxMjcsMzIxMzMsMzIxMjIsMzIxNDIsMzIxMjMsMzIxMzEsMzIxMjQsMzIxNDAsMzIxNDgsMzIxMzIsMzIxMjUsMzIxNDYsMzI2MjEsMzI2MTksMzI2MTUsMzI2MTYsMzI2MjAsMzI2NzgsMzI2NzcsMzI2NzksMzI3MzEsMzI3MzIsMzI4MDEsMzMxMjQsMzMxMjAsMzMxNDMsMzMxMTYsMzMxMjksMzMxMTUsMzMxMjIsMzMxMzgsMjY0MDEsMzMxMTgsMzMxNDIsMzMxMjcsMzMxMzUsMzMwOTIsMzMxMjEsMzMzMDksMzMzNTMsMzMzNDgsMzMzNDQsMzMzNDYsMzMzNDksMzQwMzMsMzM4NTUsMzM4NzgsMzM5MTAsMzM5MTMsMzM5MzUsMzM5MzMsMzM4OTMsMzM4NzMsMzM4NTYsMzM5MjYsMzM4OTUsMzM4NDAsMzM4NjksMzM5MTcsMzM4ODIsMzM4ODEsMzM5MDgsMzM5MDcsMzM4ODUsMzQwNTUsMzM4ODYsMzM4NDcsMzM4NTAsMzM4NDQsMzM5MTQsMzM4NTksMzM5MTIsMzM4NDIsMzM4NjEsMzM4MzMsMzM3NTMsMzM4NjcsMzM4MzksMzM4NTgsMzM4MzcsMzM4ODcsMzM5MDQsMzM4NDksMzM4NzAsMzM4NjgsMzM4NzQsMzM5MDMsMzM5ODksMzM5MzQsMzM4NTEsMzM4NjMsMzM4NDYsMzM4NDMsMzM4OTYsMzM5MTgsMzM4NjAsMzM4MzUsMzM4ODgsMzM4NzYsMzM5MDIsMzM4NzIsMzQ1NzEsMzQ1NjQsMzQ1NTEsMzQ1NzIsMzQ1NTQsMzQ1MTgsMzQ1NDksMzQ2MzcsMzQ1NTIsMzQ1NzQsMzQ1NjksMzQ1NjEsMzQ1NTAsMzQ1NzMsMzQ1NjUsMzUwMzAsMzUwMTksMzUwMjEsMzUwMjIsMzUwMzgsMzUwMzUsMzUwMzQsMzUwMjAsMzUwMjQsMzUyMDUsMzUyMjcsMzUyOTUsMzUzMDEsMzUzMDAsMzUyOTcsMzUyOTYsMzUyOTgsMzUyOTIsMzUzMDIsMzU0NDYsMzU0NjIsMzU0NTUsMzU0MjUsMzUzOTEsMzU0NDcsMzU0NTgsMzU0NjAsMzU0NDUsMzU0NTksMzU0NTcsMzU0NDQsMzU0NTAsMzU5MDAsMzU5MTUsMzU5MTQsMzU5NDEsMzU5NDAsMzU5NDIsMzU5NzQsMzU5NzIsMzU5NzMsMzYwNDQsMzYyMDAsMzYyMDEsMzYyNDEsMzYyMzYsMzYyMzgsMzYyMzksMzYyMzcsMzYyNDMsMzYyNDQsMzYyNDAsMzYyNDIsMzYzMzYsMzYzMjAsMzYzMzIsMzYzMzcsMzYzMzQsMzYzMDQsMzYzMjksMzYzMjMsMzYzMjIsMzYzMjcsMzYzMzgsMzYzMzEsMzYzNDAsMzY2MTQsMzY2MDcsMzY2MDksMzY2MDgsMzY2MTMsMzY2MTUsMzY2MTYsMzY2MTAsMzY2MTksMzY5NDYsMzY5MjcsMzY5MzIsMzY5MzcsMzY5MjUsMzcxMzYsMzcxMzMsMzcxMzUsMzcxMzcsMzcxNDIsMzcxNDAsMzcxMzEsMzcxMzQsMzcyMzAsMzcyMzEsMzc0NDgsMzc0NTgsMzc0MjQsMzc0MzQsMzc0NzgsMzc0MjcsMzc0NzcsMzc0NzAsMzc1MDcsMzc0MjIsMzc0NTAsMzc0NDYsMzc0ODUsMzc0ODQsMzc0NTUsMzc0NzIsMzc0NzksMzc0ODcsMzc0MzAsMzc0NzMsMzc0ODgsMzc0MjUsMzc0NjAsMzc0NzUsMzc0NTYsMzc0OTAsMzc0NTQsMzc0NTksMzc0NTIsMzc0NjIsMzc0MjYsMzgzMDMsMzgzMDAsMzgzMDIsMzgyOTksMzg1NDYsMzg1NDcsMzg1NDUsMzg1NTEsMzg2MDYsMzg2NTAsMzg2NTMsMzg2NDgsMzg2NDUsMzg3NzEsMzg3NzUsMzg3NzYsMzg3NzAsMzg5MjcsMzg5MjUsMzg5MjYsMzkwODQsMzkxNTgsMzkxNjEsMzkzNDMsMzkzNDYsMzkzNDQsMzkzNDksMzk1OTcsMzk1OTUsMzk3NzEsNDAxNzAsNDAxNzMsNDAxNjcsNDA1NzYsNDA3MDEsMjA3MTAsMjA2OTIsMjA2OTUsMjA3MTIsMjA3MjMsMjA2OTksMjA3MTQsMjA3MDEsMjA3MDgsMjA2OTEsMjA3MTYsMjA3MjAsMjA3MTksMjA3MDcsMjA3MDQsMjA5NTIsMjExMjAsMjExMjEsMjEyMjUsMjEyMjcsMjEyOTYsMjE0MjAsMjIwNTUsMjIwMzcsMjIwMjgsMjIwMzQsMjIwMTIsMjIwMzEsMjIwNDQsMjIwMTcsMjIwMzUsMjIwMTgsMjIwMTAsMjIwNDUsMjIwMjAsMjIwMTUsMjIwMDksMjI2NjUsMjI2NTIsMjI2NzIsMjI2ODAsMjI2NjIsMjI2NTcsMjI2NTUsMjI2NDQsMjI2NjcsMjI2NTAsMjI2NjMsMjI2NzMsMjI2NzAsMjI2NDYsMjI2NTgsMjI2NjQsMjI2NTEsMjI2NzYsMjI2NzEsMjI3ODIsMjI4OTEsMjMyNjAsMjMyNzgsMjMyNjksMjMyNTMsMjMyNzQsMjMyNTgsMjMyNzcsMjMyNzUsMjMyODMsMjMyNjYsMjMyNjQsMjMyNTksMjMyNzYsMjMyNjIsMjMyNjEsMjMyNTcsMjMyNzIsMjMyNjMsMjM0MTUsMjM1MjAsMjM1MjMsMjM2NTEsMjM5MzgsMjM5MzYsMjM5MzMsMjM5NDIsMjM5MzAsMjM5MzcsMjM5MjcsMjM5NDYsMjM5NDUsMjM5NDQsMjM5MzQsMjM5MzIsMjM5NDksMjM5MjksMjM5MzUsMjQxNTIsMjQxNTMsMjQxNDcsMjQyODAsMjQyNzMsMjQyNzksMjQyNzAsMjQyODQsMjQyNzcsMjQyODEsMjQyNzQsMjQyNzYsMjQzODgsMjQzODcsMjQ0MzEsMjQ1MDIsMjQ4NzYsMjQ4NzIsMjQ4OTcsMjQ5MjYsMjQ5NDUsMjQ5NDcsMjQ5MTQsMjQ5MTUsMjQ5NDYsMjQ5NDAsMjQ5NjAsMjQ5NDgsMjQ5MTYsMjQ5NTQsMjQ5MjMsMjQ5MzMsMjQ4OTEsMjQ5MzgsMjQ5MjksMjQ5MTgsMjUxMjksMjUxMjcsMjUxMzEsMjU2NDMsMjU2NzcsMjU2OTEsMjU2OTMsMjU3MTYsMjU3MTgsMjU3MTQsMjU3MTUsMjU3MjUsMjU3MTcsMjU3MDIsMjU3NjYsMjU2NzgsMjU3MzAsMjU2OTQsMjU2OTIsMjU2NzUsMjU2ODMsMjU2OTYsMjU2ODAsMjU3MjcsMjU2NjMsMjU3MDgsMjU3MDcsMjU2ODksMjU3MDEsMjU3MTksMjU5NzEsMjYwMTYsMjYyNzMsMjYyNzIsMjYyNzEsMjYzNzMsMjYzNzIsMjY0MDIsMjcwNTcsMjcwNjIsMjcwODEsMjcwNDAsMjcwODYsMjcwMzAsMjcwNTYsMjcwNTIsMjcwNjgsMjcwMjUsMjcwMzMsMjcwMjIsMjcwNDcsMjcwMjEsMjcwNDksMjcwNzAsMjcwNTUsMjcwNzEsMjcwNzYsMjcwNjksMjcwNDQsMjcwOTIsMjcwNjUsMjcwODIsMjcwMzQsMjcwODcsMjcwNTksMjcwMjcsMjcwNTAsMjcwNDEsMjcwMzgsMjcwOTcsMjcwMzEsMjcwMjQsMjcwNzQsMjcwNjEsMjcwNDUsMjcwNzgsMjc0NjYsMjc0NjksMjc0NjcsMjc1NTAsMjc1NTEsMjc1NTIsMjc1ODcsMjc1ODgsMjc2NDYsMjgzNjYsMjg0MDUsMjg0MDEsMjg0MTksMjg0NTMsMjg0MDgsMjg0NzEsMjg0MTEsMjg0NjIsMjg0MjUsMjg0OTQsMjg0NDEsMjg0NDIsMjg0NTUsMjg0NDAsMjg0NzUsMjg0MzQsMjgzOTcsMjg0MjYsMjg0NzAsMjg1MzEsMjg0MDksMjgzOTgsMjg0NjEsMjg0ODAsMjg0NjQsMjg0NzYsMjg0NjksMjgzOTUsMjg0MjMsMjg0MzAsMjg0ODMsMjg0MjEsMjg0MTMsMjg0MDYsMjg0NzMsMjg0NDQsMjg0MTIsMjg0NzQsMjg0NDcsMjg0MjksMjg0NDYsMjg0MjQsMjg0NDksMjkwNjMsMjkwNzIsMjkwNjUsMjkwNTYsMjkwNjEsMjkwNTgsMjkwNzEsMjkwNTEsMjkwNjIsMjkwNTcsMjkwNzksMjkyNTIsMjkyNjcsMjkzMzUsMjkzMzMsMjkzMzEsMjk1MDcsMjk1MTcsMjk1MjEsMjk1MTYsMjk3OTQsMjk4MTEsMjk4MDksMjk4MTMsMjk4MTAsMjk3OTksMjk4MDYsMjk5NTIsMjk5NTQsMjk5NTUsMzAwNzcsMzAwOTYsMzAyMzAsMzAyMTYsMzAyMjAsMzAyMjksMzAyMjUsMzAyMTgsMzAyMjgsMzAzOTIsMzA1OTMsMzA1ODgsMzA1OTcsMzA1OTQsMzA1NzQsMzA1OTIsMzA1NzUsMzA1OTAsMzA1OTUsMzA4OTgsMzA4OTAsMzA5MDAsMzA4OTMsMzA4ODgsMzA4NDYsMzA4OTEsMzA4NzgsMzA4ODUsMzA4ODAsMzA4OTIsMzA4ODIsMzA4ODQsMzExMjgsMzExMTQsMzExMTUsMzExMjYsMzExMjUsMzExMjQsMzExMjMsMzExMjcsMzExMTIsMzExMjIsMzExMjAsMzEyNzUsMzEzMDYsMzEyODAsMzEyNzksMzEyNzIsMzEyNzAsMzE0MDAsMzE0MDMsMzE0MDQsMzE0NzAsMzE2MjQsMzE2NDQsMzE2MjYsMzE2MzMsMzE2MzIsMzE2MzgsMzE2MjksMzE2MjgsMzE2NDMsMzE2MzAsMzE2MjEsMzE2NDAsMjExMjQsMzE2NDEsMzE2NTIsMzE2MTgsMzE5MzEsMzE5MzUsMzE5MzIsMzE5MzAsMzIxNjcsMzIxODMsMzIxOTQsMzIxNjMsMzIxNzAsMzIxOTMsMzIxOTIsMzIxOTcsMzIxNTcsMzIyMDYsMzIxOTYsMzIxOTgsMzIyMDMsMzIyMDQsMzIxNzUsMzIxODUsMzIxNTAsMzIxODgsMzIxNTksMzIxNjYsMzIxNzQsMzIxNjksMzIxNjEsMzIyMDEsMzI2MjcsMzI3MzgsMzI3MzksMzI3NDEsMzI3MzQsMzI4MDQsMzI4NjEsMzI4NjAsMzMxNjEsMzMxNTgsMzMxNTUsMzMxNTksMzMxNjUsMzMxNjQsMzMxNjMsMzMzMDEsMzM5NDMsMzM5NTYsMzM5NTMsMzM5NTEsMzM5NzgsMzM5OTgsMzM5ODYsMzM5NjQsMzM5NjYsMzM5NjMsMzM5NzcsMzM5NzIsMzM5ODUsMzM5OTcsMzM5NjIsMzM5NDYsMzM5NjksMzQwMDAsMzM5NDksMzM5NTksMzM5NzksMzM5NTQsMzM5NDAsMzM5OTEsMzM5OTYsMzM5NDcsMzM5NjEsMzM5NjcsMzM5NjAsMzQwMDYsMzM5NDQsMzM5NzQsMzM5OTksMzM5NTIsMzQwMDcsMzQwMDQsMzQwMDIsMzQwMTEsMzM5NjgsMzM5MzcsMzQ0MDEsMzQ2MTEsMzQ1OTUsMzQ2MDAsMzQ2NjcsMzQ2MjQsMzQ2MDYsMzQ1OTAsMzQ1OTMsMzQ1ODUsMzQ1ODcsMzQ2MjcsMzQ2MDQsMzQ2MjUsMzQ2MjIsMzQ2MzAsMzQ1OTIsMzQ2MTAsMzQ2MDIsMzQ2MDUsMzQ2MjAsMzQ1NzgsMzQ2MTgsMzQ2MDksMzQ2MTMsMzQ2MjYsMzQ1OTgsMzQ1OTksMzQ2MTYsMzQ1OTYsMzQ1ODYsMzQ2MDgsMzQ1NzcsMzUwNjMsMzUwNDcsMzUwNTcsMzUwNTgsMzUwNjYsMzUwNzAsMzUwNTQsMzUwNjgsMzUwNjIsMzUwNjcsMzUwNTYsMzUwNTIsMzUwNTEsMzUyMjksMzUyMzMsMzUyMzEsMzUyMzAsMzUzMDUsMzUzMDcsMzUzMDQsMzU0OTksMzU0ODEsMzU0NjcsMzU0NzQsMzU0NzEsMzU0NzgsMzU5MDEsMzU5NDQsMzU5NDUsMzYwNTMsMzYwNDcsMzYwNTUsMzYyNDYsMzYzNjEsMzYzNTQsMzYzNTEsMzYzNjUsMzYzNDksMzYzNjIsMzYzNTUsMzYzNTksMzYzNTgsMzYzNTcsMzYzNTAsMzYzNTIsMzYzNTYsMzY2MjQsMzY2MjUsMzY2MjIsMzY2MjEsMzcxNTUsMzcxNDgsMzcxNTIsMzcxNTQsMzcxNTEsMzcxNDksMzcxNDYsMzcxNTYsMzcxNTMsMzcxNDcsMzcyNDIsMzcyMzQsMzcyNDEsMzcyMzUsMzc1NDEsMzc1NDAsMzc0OTQsMzc1MzEsMzc0OTgsMzc1MzYsMzc1MjQsMzc1NDYsMzc1MTcsMzc1NDIsMzc1MzAsMzc1NDcsMzc0OTcsMzc1MjcsMzc1MDMsMzc1MzksMzc2MTQsMzc1MTgsMzc1MDYsMzc1MjUsMzc1MzgsMzc1MDEsMzc1MTIsMzc1MzcsMzc1MTQsMzc1MTAsMzc1MTYsMzc1MjksMzc1NDMsMzc1MDIsMzc1MTEsMzc1NDUsMzc1MzMsMzc1MTUsMzc0MjEsMzg1NTgsMzg1NjEsMzg2NTUsMzg3NDQsMzg3ODEsMzg3NzgsMzg3ODIsMzg3ODcsMzg3ODQsMzg3ODYsMzg3NzksMzg3ODgsMzg3ODUsMzg3ODMsMzg4NjIsMzg4NjEsMzg5MzQsMzkwODUsMzkwODYsMzkxNzAsMzkxNjgsMzkxNzUsMzkzMjUsMzkzMjQsMzkzNjMsMzkzNTMsMzkzNTUsMzkzNTQsMzkzNjIsMzkzNTcsMzkzNjcsMzk2MDEsMzk2NTEsMzk2NTUsMzk3NDIsMzk3NDMsMzk3NzYsMzk3NzcsMzk3NzUsNDAxNzcsNDAxNzgsNDAxODEsNDA2MTUsMjA3MzUsMjA3MzksMjA3ODQsMjA3MjgsMjA3NDIsMjA3NDMsMjA3MjYsMjA3MzQsMjA3NDcsMjA3NDgsMjA3MzMsMjA3NDYsMjExMzEsMjExMzIsMjEyMzMsMjEyMzEsMjIwODgsMjIwODIsMjIwOTIsMjIwNjksMjIwODEsMjIwOTAsMjIwODksMjIwODYsMjIxMDQsMjIxMDYsMjIwODAsMjIwNjcsMjIwNzcsMjIwNjAsMjIwNzgsMjIwNzIsMjIwNTgsMjIwNzQsMjIyOTgsMjI2OTksMjI2ODUsMjI3MDUsMjI2ODgsMjI2OTEsMjI3MDMsMjI3MDAsMjI2OTMsMjI2ODksMjI3ODMsMjMyOTUsMjMyODQsMjMyOTMsMjMyODcsMjMyODYsMjMyOTksMjMyODgsMjMyOTgsMjMyODksMjMyOTcsMjMzMDMsMjMzMDEsMjMzMTEsMjM2NTUsMjM5NjEsMjM5NTksMjM5NjcsMjM5NTQsMjM5NzAsMjM5NTUsMjM5NTcsMjM5NjgsMjM5NjQsMjM5NjksMjM5NjIsMjM5NjYsMjQxNjksMjQxNTcsMjQxNjAsMjQxNTYsMzIyNDMsMjQyODMsMjQyODYsMjQyODksMjQzOTMsMjQ0OTgsMjQ5NzEsMjQ5NjMsMjQ5NTMsMjUwMDksMjUwMDgsMjQ5OTQsMjQ5NjksMjQ5ODcsMjQ5NzksMjUwMDcsMjUwMDUsMjQ5OTEsMjQ5NzgsMjUwMDIsMjQ5OTMsMjQ5NzMsMjQ5MzQsMjUwMTEsMjUxMzMsMjU3MTAsMjU3MTIsMjU3NTAsMjU3NjAsMjU3MzMsMjU3NTEsMjU3NTYsMjU3NDMsMjU3MzksMjU3MzgsMjU3NDAsMjU3NjMsMjU3NTksMjU3MDQsMjU3NzcsMjU3NTIsMjU5NzQsMjU5NzgsMjU5NzcsMjU5NzksMjYwMzQsMjYwMzUsMjYyOTMsMjYyODgsMjYyODEsMjYyOTAsMjYyOTUsMjYyODIsMjYyODcsMjcxMzYsMjcxNDIsMjcxNTksMjcxMDksMjcxMjgsMjcxNTcsMjcxMjEsMjcxMDgsMjcxNjgsMjcxMzUsMjcxMTYsMjcxMDYsMjcxNjMsMjcxNjUsMjcxMzQsMjcxNzUsMjcxMjIsMjcxMTgsMjcxNTYsMjcxMjcsMjcxMTEsMjcyMDAsMjcxNDQsMjcxMTAsMjcxMzEsMjcxNDksMjcxMzIsMjcxMTUsMjcxNDUsMjcxNDAsMjcxNjAsMjcxNzMsMjcxNTEsMjcxMjYsMjcxNzQsMjcxNDMsMjcxMjQsMjcxNTgsMjc0NzMsMjc1NTcsMjc1NTUsMjc1NTQsMjc1NTgsMjc2NDksMjc2NDgsMjc2NDcsMjc2NTAsMjg0ODEsMjg0NTQsMjg1NDIsMjg1NTEsMjg2MTQsMjg1NjIsMjg1NTcsMjg1NTMsMjg1NTYsMjg1MTQsMjg0OTUsMjg1NDksMjg1MDYsMjg1NjYsMjg1MzQsMjg1MjQsMjg1NDYsMjg1MDEsMjg1MzAsMjg0OTgsMjg0OTYsMjg1MDMsMjg1NjQsMjg1NjMsMjg1MDksMjg0MTYsMjg1MTMsMjg1MjMsMjg1NDEsMjg1MTksMjg1NjAsMjg0OTksMjg1NTUsMjg1MjEsMjg1NDMsMjg1NjUsMjg1MTUsMjg1MzUsMjg1MjIsMjg1MzksMjkxMDYsMjkxMDMsMjkwODMsMjkxMDQsMjkwODgsMjkwODIsMjkwOTcsMjkxMDksMjkwODUsMjkwOTMsMjkwODYsMjkwOTIsMjkwODksMjkwOTgsMjkwODQsMjkwOTUsMjkxMDcsMjkzMzYsMjkzMzgsMjk1MjgsMjk1MjIsMjk1MzQsMjk1MzUsMjk1MzYsMjk1MzMsMjk1MzEsMjk1MzcsMjk1MzAsMjk1MjksMjk1MzgsMjk4MzEsMjk4MzMsMjk4MzQsMjk4MzAsMjk4MjUsMjk4MjEsMjk4MjksMjk4MzIsMjk4MjAsMjk4MTcsMjk5NjAsMjk5NTksMzAwNzgsMzAyNDUsMzAyMzgsMzAyMzMsMzAyMzcsMzAyMzYsMzAyNDMsMzAyMzQsMzAyNDgsMzAyMzUsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjMsMzA2MDUsMzA2MDcsMzA2MDEsMzA2MDAsMzA5MjUsMzA5MDcsMzA5MjcsMzA5MjQsMzA5MjksMzA5MjYsMzA5MzIsMzA5MjAsMzA5MTUsMzA5MTYsMzA5MjEsMzExMzAsMzExMzcsMzExMzYsMzExMzIsMzExMzgsMzExMzEsMjc1MTAsMzEyODksMzE0MTAsMzE0MTIsMzE0MTEsMzE2NzEsMzE2OTEsMzE2NzgsMzE2NjAsMzE2OTQsMzE2NjMsMzE2NzMsMzE2OTAsMzE2NjksMzE5NDEsMzE5NDQsMzE5NDgsMzE5NDcsMzIyNDcsMzIyMTksMzIyMzQsMzIyMzEsMzIyMTUsMzIyMjUsMzIyNTksMzIyNTAsMzIyMzAsMzIyNDYsMzIyNDEsMzIyNDAsMzIyMzgsMzIyMjMsMzI2MzAsMzI2ODQsMzI2ODgsMzI2ODUsMzI3NDksMzI3NDcsMzI3NDYsMzI3NDgsMzI3NDIsMzI3NDQsMzI4NjgsMzI4NzEsMzMxODcsMzMxODMsMzMxODIsMzMxNzMsMzMxODYsMzMxNzcsMzMxNzUsMzMzMDIsMzMzNTksMzMzNjMsMzMzNjIsMzMzNjAsMzMzNTgsMzMzNjEsMzQwODQsMzQxMDcsMzQwNjMsMzQwNDgsMzQwODksMzQwNjIsMzQwNTcsMzQwNjEsMzQwNzksMzQwNTgsMzQwODcsMzQwNzYsMzQwNDMsMzQwOTEsMzQwNDIsMzQwNTYsMzQwNjAsMzQwMzYsMzQwOTAsMzQwMzQsMzQwNjksMzQwMzksMzQwMjcsMzQwMzUsMzQwNDQsMzQwNjYsMzQwMjYsMzQwMjUsMzQwNzAsMzQwNDYsMzQwODgsMzQwNzcsMzQwOTQsMzQwNTAsMzQwNDUsMzQwNzgsMzQwMzgsMzQwOTcsMzQwODYsMzQwMjMsMzQwMjQsMzQwMzIsMzQwMzEsMzQwNDEsMzQwNzIsMzQwODAsMzQwOTYsMzQwNTksMzQwNzMsMzQwOTUsMzQ0MDIsMzQ2NDYsMzQ2NTksMzQ2NjAsMzQ2NzksMzQ3ODUsMzQ2NzUsMzQ2NDgsMzQ2NDQsMzQ2NTEsMzQ2NDIsMzQ2NTcsMzQ2NTAsMzQ2NDEsMzQ2NTQsMzQ2NjksMzQ2NjYsMzQ2NDAsMzQ2MzgsMzQ2NTUsMzQ2NTMsMzQ2NzEsMzQ2NjgsMzQ2ODIsMzQ2NzAsMzQ2NTIsMzQ2NjEsMzQ2MzksMzQ2ODMsMzQ2NzcsMzQ2NTgsMzQ2NjMsMzQ2NjUsMzQ5MDYsMzUwNzcsMzUwODQsMzUwOTIsMzUwODMsMzUwOTUsMzUwOTYsMzUwOTcsMzUwNzgsMzUwOTQsMzUwODksMzUwODYsMzUwODEsMzUyMzQsMzUyMzYsMzUyMzUsMzUzMDksMzUzMTIsMzUzMDgsMzU1MzUsMzU1MjYsMzU1MTIsMzU1MzksMzU1MzcsMzU1NDAsMzU1NDEsMzU1MTUsMzU1NDMsMzU1MTgsMzU1MjAsMzU1MjUsMzU1NDQsMzU1MjMsMzU1MTQsMzU1MTcsMzU1NDUsMzU5MDIsMzU5MTcsMzU5ODMsMzYwNjksMzYwNjMsMzYwNTcsMzYwNzIsMzYwNTgsMzYwNjEsMzYwNzEsMzYyNTYsMzYyNTIsMzYyNTcsMzYyNTEsMzYzODQsMzYzODcsMzYzODksMzYzODgsMzYzOTgsMzYzNzMsMzYzNzksMzYzNzQsMzYzNjksMzYzNzcsMzYzOTAsMzYzOTEsMzYzNzIsMzYzNzAsMzYzNzYsMzYzNzEsMzYzODAsMzYzNzUsMzYzNzgsMzY2NTIsMzY2NDQsMzY2MzIsMzY2MzQsMzY2NDAsMzY2NDMsMzY2MzAsMzY2MzEsMzY5NzksMzY5NzYsMzY5NzUsMzY5NjcsMzY5NzEsMzcxNjcsMzcxNjMsMzcxNjEsMzcxNjIsMzcxNzAsMzcxNTgsMzcxNjYsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNDksMzcyNTAsMzcyNTIsMzcyNDgsMzc1ODQsMzc1NzEsMzc1NzIsMzc1NjgsMzc1OTMsMzc1NTgsMzc1ODMsMzc2MTcsMzc1OTksMzc1OTIsMzc2MDksMzc1OTEsMzc1OTcsMzc1ODAsMzc2MTUsMzc1NzAsMzc2MDgsMzc1NzgsMzc1NzYsMzc1ODIsMzc2MDYsMzc1ODEsMzc1ODksMzc1NzcsMzc2MDAsMzc1OTgsMzc2MDcsMzc1ODUsMzc1ODcsMzc1NTcsMzc2MDEsMzc1NzQsMzc1NTYsMzgyNjgsMzgzMTYsMzgzMTUsMzgzMTgsMzgzMjAsMzg1NjQsMzg1NjIsMzg2MTEsMzg2NjEsMzg2NjQsMzg2NTgsMzg3NDYsMzg3OTQsMzg3OTgsMzg3OTIsMzg4NjQsMzg4NjMsMzg5NDIsMzg5NDEsMzg5NTAsMzg5NTMsMzg5NTIsMzg5NDQsMzg5MzksMzg5NTEsMzkwOTAsMzkxNzYsMzkxNjIsMzkxODUsMzkxODgsMzkxOTAsMzkxOTEsMzkxODksMzkzODgsMzkzNzMsMzkzNzUsMzkzNzksMzkzODAsMzkzNzQsMzkzNjksMzkzODIsMzkzODQsMzkzNzEsMzkzODMsMzkzNzIsMzk2MDMsMzk2NjAsMzk2NTksMzk2NjcsMzk2NjYsMzk2NjUsMzk3NTAsMzk3NDcsMzk3ODMsMzk3OTYsMzk3OTMsMzk3ODIsMzk3OTgsMzk3OTcsMzk3OTIsMzk3ODQsMzk3ODAsMzk3ODgsNDAxODgsNDAxODYsNDAxODksNDAxOTEsNDAxODMsNDAxOTksNDAxOTIsNDAxODUsNDAxODcsNDAyMDAsNDAxOTcsNDAxOTYsNDA1NzksNDA2NTksNDA3MTksNDA3MjAsMjA3NjQsMjA3NTUsMjA3NTksMjA3NjIsMjA3NTMsMjA5NTgsMjEzMDAsMjE0NzMsMjIxMjgsMjIxMTIsMjIxMjYsMjIxMzEsMjIxMTgsMjIxMTUsMjIxMjUsMjIxMzAsMjIxMTAsMjIxMzUsMjIzMDAsMjIyOTksMjI3MjgsMjI3MTcsMjI3MjksMjI3MTksMjI3MTQsMjI3MjIsMjI3MTYsMjI3MjYsMjMzMTksMjMzMjEsMjMzMjMsMjMzMjksMjMzMTYsMjMzMTUsMjMzMTIsMjMzMTgsMjMzMzYsMjMzMjIsMjMzMjgsMjMzMjYsMjM1MzUsMjM5ODAsMjM5ODUsMjM5NzcsMjM5NzUsMjM5ODksMjM5ODQsMjM5ODIsMjM5NzgsMjM5NzYsMjM5ODYsMjM5ODEsMjM5ODMsMjM5ODgsMjQxNjcsMjQxNjgsMjQxNjYsMjQxNzUsMjQyOTcsMjQyOTUsMjQyOTQsMjQyOTYsMjQyOTMsMjQzOTUsMjQ1MDgsMjQ5ODksMjUwMDAsMjQ5ODIsMjUwMjksMjUwMTIsMjUwMzAsMjUwMjUsMjUwMzYsMjUwMTgsMjUwMjMsMjUwMTYsMjQ5NzIsMjU4MTUsMjU4MTQsMjU4MDgsMjU4MDcsMjU4MDEsMjU3ODksMjU3MzcsMjU3OTUsMjU4MTksMjU4NDMsMjU4MTcsMjU5MDcsMjU5ODMsMjU5ODAsMjYwMTgsMjYzMTIsMjYzMDIsMjYzMDQsMjYzMTQsMjYzMTUsMjYzMTksMjYzMDEsMjYyOTksMjYyOTgsMjYzMTYsMjY0MDMsMjcxODgsMjcyMzgsMjcyMDksMjcyMzksMjcxODYsMjcyNDAsMjcxOTgsMjcyMjksMjcyNDUsMjcyNTQsMjcyMjcsMjcyMTcsMjcxNzYsMjcyMjYsMjcxOTUsMjcxOTksMjcyMDEsMjcyNDIsMjcyMzYsMjcyMTYsMjcyMTUsMjcyMjAsMjcyNDcsMjcyNDEsMjcyMzIsMjcxOTYsMjcyMzAsMjcyMjIsMjcyMjEsMjcyMTMsMjcyMTQsMjcyMDYsMjc0NzcsMjc0NzYsMjc0NzgsMjc1NTksMjc1NjIsMjc1NjMsMjc1OTIsMjc1OTEsMjc2NTIsMjc2NTEsMjc2NTQsMjg1ODksMjg2MTksMjg1NzksMjg2MTUsMjg2MDQsMjg2MjIsMjg2MTYsMjg1MTAsMjg2MTIsMjg2MDUsMjg1NzQsMjg2MTgsMjg1ODQsMjg2NzYsMjg1ODEsMjg1OTAsMjg2MDIsMjg1ODgsMjg1ODYsMjg2MjMsMjg2MDcsMjg2MDAsMjg1NzgsMjg2MTcsMjg1ODcsMjg2MjEsMjg1OTEsMjg1OTQsMjg1OTIsMjkxMjUsMjkxMjIsMjkxMTksMjkxMTIsMjkxNDIsMjkxMjAsMjkxMjEsMjkxMzEsMjkxNDAsMjkxMzAsMjkxMjcsMjkxMzUsMjkxMTcsMjkxNDQsMjkxMTYsMjkxMjYsMjkxNDYsMjkxNDcsMjkzNDEsMjkzNDIsMjk1NDUsMjk1NDIsMjk1NDMsMjk1NDgsMjk1NDEsMjk1NDcsMjk1NDYsMjk4MjMsMjk4NTAsMjk4NTYsMjk4NDQsMjk4NDIsMjk4NDUsMjk4NTcsMjk5NjMsMzAwODAsMzAyNTUsMzAyNTMsMzAyNTcsMzAyNjksMzAyNTksMzAyNjgsMzAyNjEsMzAyNTgsMzAyNTYsMzAzOTUsMzA0MzgsMzA2MTgsMzA2MjEsMzA2MjUsMzA2MjAsMzA2MTksMzA2MjYsMzA2MjcsMzA2MTMsMzA2MTcsMzA2MTUsMzA5NDEsMzA5NTMsMzA5NDksMzA5NTQsMzA5NDIsMzA5NDcsMzA5MzksMzA5NDUsMzA5NDYsMzA5NTcsMzA5NDMsMzA5NDQsMzExNDAsMzEzMDAsMzEzMDQsMzEzMDMsMzE0MTQsMzE0MTYsMzE0MTMsMzE0MDksMzE0MTUsMzE3MTAsMzE3MTUsMzE3MTksMzE3MDksMzE3MDEsMzE3MTcsMzE3MDYsMzE3MjAsMzE3MzcsMzE3MDAsMzE3MjIsMzE3MTQsMzE3MDgsMzE3MjMsMzE3MDQsMzE3MTEsMzE5NTQsMzE5NTYsMzE5NTksMzE5NTIsMzE5NTMsMzIyNzQsMzIyODksMzIyNzksMzIyNjgsMzIyODcsMzIyODgsMzIyNzUsMzIyNzAsMzIyODQsMzIyNzcsMzIyODIsMzIyOTAsMzIyNjcsMzIyNzEsMzIyNzgsMzIyNjksMzIyNzYsMzIyOTMsMzIyOTIsMzI1NzksMzI2MzUsMzI2MzYsMzI2MzQsMzI2ODksMzI3NTEsMzI4MTAsMzI4MDksMzI4NzYsMzMyMDEsMzMxOTAsMzMxOTgsMzMyMDksMzMyMDUsMzMxOTUsMzMyMDAsMzMxOTYsMzMyMDQsMzMyMDIsMzMyMDcsMzMxOTEsMzMyNjYsMzMzNjUsMzMzNjYsMzMzNjcsMzQxMzQsMzQxMTcsMzQxNTUsMzQxMjUsMzQxMzEsMzQxNDUsMzQxMzYsMzQxMTIsMzQxMTgsMzQxNDgsMzQxMTMsMzQxNDYsMzQxMTYsMzQxMjksMzQxMTksMzQxNDcsMzQxMTAsMzQxMzksMzQxNjEsMzQxMjYsMzQxNTgsMzQxNjUsMzQxMzMsMzQxNTEsMzQxNDQsMzQxODgsMzQxNTAsMzQxNDEsMzQxMzIsMzQxNDksMzQxNTYsMzQ0MDMsMzQ0MDUsMzQ0MDQsMzQ3MTUsMzQ3MDMsMzQ3MTEsMzQ3MDcsMzQ3MDYsMzQ2OTYsMzQ2ODksMzQ3MTAsMzQ3MTIsMzQ2ODEsMzQ2OTUsMzQ3MjMsMzQ2OTMsMzQ3MDQsMzQ3MDUsMzQ3MTcsMzQ2OTIsMzQ3MDgsMzQ3MTYsMzQ3MTQsMzQ2OTcsMzUxMDIsMzUxMTAsMzUxMjAsMzUxMTcsMzUxMTgsMzUxMTEsMzUxMjEsMzUxMDYsMzUxMTMsMzUxMDcsMzUxMTksMzUxMTYsMzUxMDMsMzUzMTMsMzU1NTIsMzU1NTQsMzU1NzAsMzU1NzIsMzU1NzMsMzU1NDksMzU2MDQsMzU1NTYsMzU1NTEsMzU1NjgsMzU1MjgsMzU1NTAsMzU1NTMsMzU1NjAsMzU1ODMsMzU1NjcsMzU1NzksMzU5ODUsMzU5ODYsMzU5ODQsMzYwODUsMzYwNzgsMzYwODEsMzYwODAsMzYwODMsMzYyMDQsMzYyMDYsMzYyNjEsMzYyNjMsMzY0MDMsMzY0MTQsMzY0MDgsMzY0MTYsMzY0MjEsMzY0MDYsMzY0MTIsMzY0MTMsMzY0MTcsMzY0MDAsMzY0MTUsMzY1NDEsMzY2NjIsMzY2NTQsMzY2NjEsMzY2NTgsMzY2NjUsMzY2NjMsMzY2NjAsMzY5ODIsMzY5ODUsMzY5ODcsMzY5OTgsMzcxMTQsMzcxNzEsMzcxNzMsMzcxNzQsMzcyNjcsMzcyNjQsMzcyNjUsMzcyNjEsMzcyNjMsMzc2NzEsMzc2NjIsMzc2NDAsMzc2NjMsMzc2MzgsMzc2NDcsMzc3NTQsMzc2ODgsMzc2OTIsMzc2NTksMzc2NjcsMzc2NTAsMzc2MzMsMzc3MDIsMzc2NzcsMzc2NDYsMzc2NDUsMzc1NzksMzc2NjEsMzc2MjYsMzc2NjksMzc2NTEsMzc2MjUsMzc2MjMsMzc2ODQsMzc2MzQsMzc2NjgsMzc2MzEsMzc2NzMsMzc2ODksMzc2ODUsMzc2NzQsMzc2NTIsMzc2NDQsMzc2NDMsMzc2MzAsMzc2NDEsMzc2MzIsMzc2MjcsMzc2NTQsMzgzMzIsMzgzNDksMzgzMzQsMzgzMjksMzgzMzAsMzgzMjYsMzgzMzUsMzgzMjUsMzgzMzMsMzg1NjksMzg2MTIsMzg2NjcsMzg2NzQsMzg2NzIsMzg4MDksMzg4MDcsMzg4MDQsMzg4OTYsMzg5MDQsMzg5NjUsMzg5NTksMzg5NjIsMzkyMDQsMzkxOTksMzkyMDcsMzkyMDksMzkzMjYsMzk0MDYsMzk0MDQsMzkzOTcsMzkzOTYsMzk0MDgsMzkzOTUsMzk0MDIsMzk0MDEsMzkzOTksMzk2MDksMzk2MTUsMzk2MDQsMzk2MTEsMzk2NzAsMzk2NzQsMzk2NzMsMzk2NzEsMzk3MzEsMzk4MDgsMzk4MTMsMzk4MTUsMzk4MDQsMzk4MDYsMzk4MDMsMzk4MTAsMzk4MjcsMzk4MjYsMzk4MjQsMzk4MDIsMzk4MjksMzk4MDUsMzk4MTYsNDAyMjksNDAyMTUsNDAyMjQsNDAyMjIsNDAyMTIsNDAyMzMsNDAyMjEsNDAyMTYsNDAyMjYsNDAyMDgsNDAyMTcsNDAyMjMsNDA1ODQsNDA1ODIsNDA1ODMsNDA2MjIsNDA2MjEsNDA2NjEsNDA2NjIsNDA2OTgsNDA3MjIsNDA3NjUsMjA3NzQsMjA3NzMsMjA3NzAsMjA3NzIsMjA3NjgsMjA3NzcsMjEyMzYsMjIxNjMsMjIxNTYsMjIxNTcsMjIxNTAsMjIxNDgsMjIxNDcsMjIxNDIsMjIxNDYsMjIxNDMsMjIxNDUsMjI3NDIsMjI3NDAsMjI3MzUsMjI3MzgsMjMzNDEsMjMzMzMsMjMzNDYsMjMzMzEsMjMzNDAsMjMzMzUsMjMzMzQsMjMzNDMsMjMzNDIsMjM0MTksMjM1MzcsMjM1MzgsMjM5OTEsMjQxNzIsMjQxNzAsMjQ1MTAsMjQ1MDcsMjUwMjcsMjUwMTMsMjUwMjAsMjUwNjMsMjUwNTYsMjUwNjEsMjUwNjAsMjUwNjQsMjUwNTQsMjU4MzksMjU4MzMsMjU4MjcsMjU4MzUsMjU4MjgsMjU4MzIsMjU5ODUsMjU5ODQsMjYwMzgsMjYwNzQsMjYzMjIsMjcyNzcsMjcyODYsMjcyNjUsMjczMDEsMjcyNzMsMjcyOTUsMjcyOTEsMjcyOTcsMjcyOTQsMjcyNzEsMjcyODMsMjcyNzgsMjcyODUsMjcyNjcsMjczMDQsMjczMDAsMjcyODEsMjcyNjMsMjczMDIsMjcyOTAsMjcyNjksMjcyNzYsMjcyODIsMjc0ODMsMjc1NjUsMjc2NTcsMjg2MjAsMjg1ODUsMjg2NjAsMjg2MjgsMjg2NDMsMjg2MzYsMjg2NTMsMjg2NDcsMjg2NDYsMjg2MzgsMjg2NTgsMjg2MzcsMjg2NDIsMjg2NDgsMjkxNTMsMjkxNjksMjkxNjAsMjkxNzAsMjkxNTYsMjkxNjgsMjkxNTQsMjk1NTUsMjk1NTAsMjk1NTEsMjk4NDcsMjk4NzQsMjk4NjcsMjk4NDAsMjk4NjYsMjk4NjksMjk4NzMsMjk4NjEsMjk4NzEsMjk5NjgsMjk5NjksMjk5NzAsMjk5NjcsMzAwODQsMzAyNzUsMzAyODAsMzAyODEsMzAyNzksMzAzNzIsMzA0NDEsMzA2NDUsMzA2MzUsMzA2NDIsMzA2NDcsMzA2NDYsMzA2NDQsMzA2NDEsMzA2MzIsMzA3MDQsMzA5NjMsMzA5NzMsMzA5NzgsMzA5NzEsMzA5NzIsMzA5NjIsMzA5ODEsMzA5NjksMzA5NzQsMzA5ODAsMzExNDcsMzExNDQsMzEzMjQsMzEzMjMsMzEzMTgsMzEzMjAsMzEzMTYsMzEzMjIsMzE0MjIsMzE0MjQsMzE0MjUsMzE3NDksMzE3NTksMzE3MzAsMzE3NDQsMzE3NDMsMzE3MzksMzE3NTgsMzE3MzIsMzE3NTUsMzE3MzEsMzE3NDYsMzE3NTMsMzE3NDcsMzE3NDUsMzE3MzYsMzE3NDEsMzE3NTAsMzE3MjgsMzE3MjksMzE3NjAsMzE3NTQsMzE5NzYsMzIzMDEsMzIzMTYsMzIzMjIsMzIzMDcsMzg5ODQsMzIzMTIsMzIyOTgsMzIzMjksMzIzMjAsMzIzMjcsMzIyOTcsMzIzMzIsMzIzMDQsMzIzMTUsMzIzMTAsMzIzMjQsMzIzMTQsMzI1ODEsMzI2MzksMzI2MzgsMzI2MzcsMzI3NTYsMzI3NTQsMzI4MTIsMzMyMTEsMzMyMjAsMzMyMjgsMzMyMjYsMzMyMjEsMzMyMjMsMzMyMTIsMzMyNTcsMzMzNzEsMzMzNzAsMzMzNzIsMzQxNzksMzQxNzYsMzQxOTEsMzQyMTUsMzQxOTcsMzQyMDgsMzQxODcsMzQyMTEsMzQxNzEsMzQyMTIsMzQyMDIsMzQyMDYsMzQxNjcsMzQxNzIsMzQxODUsMzQyMDksMzQxNzAsMzQxNjgsMzQxMzUsMzQxOTAsMzQxOTgsMzQxODIsMzQxODksMzQyMDEsMzQyMDUsMzQxNzcsMzQyMTAsMzQxNzgsMzQxODQsMzQxODEsMzQxNjksMzQxNjYsMzQyMDAsMzQxOTIsMzQyMDcsMzQ0MDgsMzQ3NTAsMzQ3MzAsMzQ3MzMsMzQ3NTcsMzQ3MzYsMzQ3MzIsMzQ3NDUsMzQ3NDEsMzQ3NDgsMzQ3MzQsMzQ3NjEsMzQ3NTUsMzQ3NTQsMzQ3NjQsMzQ3NDMsMzQ3MzUsMzQ3NTYsMzQ3NjIsMzQ3NDAsMzQ3NDIsMzQ3NTEsMzQ3NDQsMzQ3NDksMzQ3ODIsMzQ3MzgsMzUxMjUsMzUxMjMsMzUxMzIsMzUxMzQsMzUxMzcsMzUxNTQsMzUxMjcsMzUxMzgsMzUyNDUsMzUyNDcsMzUyNDYsMzUzMTQsMzUzMTUsMzU2MTQsMzU2MDgsMzU2MDYsMzU2MDEsMzU1ODksMzU1OTUsMzU2MTgsMzU1OTksMzU2MDIsMzU2MDUsMzU1OTEsMzU1OTcsMzU1OTIsMzU1OTAsMzU2MTIsMzU2MDMsMzU2MTAsMzU5MTksMzU5NTIsMzU5NTQsMzU5NTMsMzU5NTEsMzU5ODksMzU5ODgsMzYwODksMzYyMDcsMzY0MzAsMzY0MjksMzY0MzUsMzY0MzIsMzY0MjgsMzY0MjMsMzY2NzUsMzY2NzIsMzY5OTcsMzY5OTAsMzcxNzYsMzcyNzQsMzcyODIsMzcyNzUsMzcyNzMsMzcyNzksMzcyODEsMzcyNzcsMzcyODAsMzc3OTMsMzc3NjMsMzc4MDcsMzc3MzIsMzc3MTgsMzc3MDMsMzc3NTYsMzc3MjAsMzc3MjQsMzc3NTAsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MjgsMzc3NDEsMzc3NzUsMzc3MDgsMzc3MzgsMzc3NTMsMzc3MTksMzc3MTcsMzc3MTQsMzc3MTEsMzc3NDUsMzc3NTEsMzc3NTUsMzc3MjksMzc3MjYsMzc3MzEsMzc3MzUsMzc3NjAsMzc3MTAsMzc3MjEsMzgzNDMsMzgzMzYsMzgzNDUsMzgzMzksMzgzNDEsMzgzMjcsMzg1NzQsMzg1NzYsMzg1NzIsMzg2ODgsMzg2ODcsMzg2ODAsMzg2ODUsMzg2ODEsMzg4MTAsMzg4MTcsMzg4MTIsMzg4MTQsMzg4MTMsMzg4NjksMzg4NjgsMzg4OTcsMzg5NzcsMzg5ODAsMzg5ODYsMzg5ODUsMzg5ODEsMzg5NzksMzkyMDUsMzkyMTEsMzkyMTIsMzkyMTAsMzkyMTksMzkyMTgsMzkyMTUsMzkyMTMsMzkyMTcsMzkyMTYsMzkzMjAsMzkzMzEsMzkzMjksMzk0MjYsMzk0MTgsMzk0MTIsMzk0MTUsMzk0MTcsMzk0MTYsMzk0MTQsMzk0MTksMzk0MjEsMzk0MjIsMzk0MjAsMzk0MjcsMzk2MTQsMzk2NzgsMzk2NzcsMzk2ODEsMzk2NzYsMzk3NTIsMzk4MzQsMzk4NDgsMzk4MzgsMzk4MzUsMzk4NDYsMzk4NDEsMzk4NDUsMzk4NDQsMzk4MTQsMzk4NDIsMzk4NDAsMzk4NTUsNDAyNDMsNDAyNTcsNDAyOTUsNDAyNDYsNDAyMzgsNDAyMzksNDAyNDEsNDAyNDgsNDAyNDAsNDAyNjEsNDAyNTgsNDAyNTksNDAyNTQsNDAyNDcsNDAyNTYsNDAyNTMsMzI3NTcsNDAyMzcsNDA1ODYsNDA1ODUsNDA1ODksNDA2MjQsNDA2NDgsNDA2NjYsNDA2OTksNDA3MDMsNDA3NDAsNDA3MzksNDA3MzgsNDA3ODgsNDA4NjQsMjA3ODUsMjA3ODEsMjA3ODIsMjIxNjgsMjIxNzIsMjIxNjcsMjIxNzAsMjIxNzMsMjIxNjksMjI4OTYsMjMzNTYsMjM2NTcsMjM2NTgsMjQwMDAsMjQxNzMsMjQxNzQsMjUwNDgsMjUwNTUsMjUwNjksMjUwNzAsMjUwNzMsMjUwNjYsMjUwNzIsMjUwNjcsMjUwNDYsMjUwNjUsMjU4NTUsMjU4NjAsMjU4NTMsMjU4NDgsMjU4NTcsMjU4NTksMjU4NTIsMjYwMDQsMjYwNzUsMjYzMzAsMjYzMzEsMjYzMjgsMjczMzMsMjczMjEsMjczMjUsMjczNjEsMjczMzQsMjczMjIsMjczMTgsMjczMTksMjczMzUsMjczMTYsMjczMDksMjc0ODYsMjc1OTMsMjc2NTksMjg2NzksMjg2ODQsMjg2ODUsMjg2NzMsMjg2NzcsMjg2OTIsMjg2ODYsMjg2NzEsMjg2NzIsMjg2NjcsMjg3MTAsMjg2NjgsMjg2NjMsMjg2ODIsMjkxODUsMjkxODMsMjkxNzcsMjkxODcsMjkxODEsMjk1NTgsMjk4ODAsMjk4ODgsMjk4NzcsMjk4ODksMjk4ODYsMjk4NzgsMjk4ODMsMjk4OTAsMjk5NzIsMjk5NzEsMzAzMDAsMzAzMDgsMzAyOTcsMzAyODgsMzAyOTEsMzAyOTUsMzAyOTgsMzAzNzQsMzAzOTcsMzA0NDQsMzA2NTgsMzA2NTAsMzA5NzUsMzA5ODgsMzA5OTUsMzA5OTYsMzA5ODUsMzA5OTIsMzA5OTQsMzA5OTMsMzExNDksMzExNDgsMzEzMjcsMzE3NzIsMzE3ODUsMzE3NjksMzE3NzYsMzE3NzUsMzE3ODksMzE3NzMsMzE3ODIsMzE3ODQsMzE3NzgsMzE3ODEsMzE3OTIsMzIzNDgsMzIzMzYsMzIzNDIsMzIzNTUsMzIzNDQsMzIzNTQsMzIzNTEsMzIzMzcsMzIzNTIsMzIzNDMsMzIzMzksMzI2OTMsMzI2OTEsMzI3NTksMzI3NjAsMzI4ODUsMzMyMzMsMzMyMzQsMzMyMzIsMzMzNzUsMzMzNzQsMzQyMjgsMzQyNDYsMzQyNDAsMzQyNDMsMzQyNDIsMzQyMjcsMzQyMjksMzQyMzcsMzQyNDcsMzQyNDQsMzQyMzksMzQyNTEsMzQyNTQsMzQyNDgsMzQyNDUsMzQyMjUsMzQyMzAsMzQyNTgsMzQzNDAsMzQyMzIsMzQyMzEsMzQyMzgsMzQ0MDksMzQ3OTEsMzQ3OTAsMzQ3ODYsMzQ3NzksMzQ3OTUsMzQ3OTQsMzQ3ODksMzQ3ODMsMzQ4MDMsMzQ3ODgsMzQ3NzIsMzQ3ODAsMzQ3NzEsMzQ3OTcsMzQ3NzYsMzQ3ODcsMzQ3MjQsMzQ3NzUsMzQ3NzcsMzQ4MTcsMzQ4MDQsMzQ3OTIsMzQ3ODEsMzUxNTUsMzUxNDcsMzUxNTEsMzUxNDgsMzUxNDIsMzUxNTIsMzUxNTMsMzUxNDUsMzU2MjYsMzU2MjMsMzU2MTksMzU2MzUsMzU2MzIsMzU2MzcsMzU2NTUsMzU2MzEsMzU2NDQsMzU2NDYsMzU2MzMsMzU2MjEsMzU2MzksMzU2MjIsMzU2MzgsMzU2MzAsMzU2MjAsMzU2NDMsMzU2NDUsMzU2NDIsMzU5MDYsMzU5NTcsMzU5OTMsMzU5OTIsMzU5OTEsMzYwOTQsMzYxMDAsMzYwOTgsMzYwOTYsMzY0NDQsMzY0NTAsMzY0NDgsMzY0MzksMzY0MzgsMzY0NDYsMzY0NTMsMzY0NTUsMzY0NDMsMzY0NDIsMzY0NDksMzY0NDUsMzY0NTcsMzY0MzYsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODMsMzcxNjAsMzcxNzgsMzcxNzksMzcxODIsMzcyODgsMzcyODUsMzcyODcsMzcyOTUsMzcyOTAsMzc4MTMsMzc3NzIsMzc3NzgsMzc4MTUsMzc3ODcsMzc3ODksMzc3NjksMzc3OTksMzc3NzQsMzc4MDIsMzc3OTAsMzc3OTgsMzc3ODEsMzc3NjgsMzc3ODUsMzc3OTEsMzc3NzMsMzc4MDksMzc3NzcsMzc4MTAsMzc3OTYsMzc4MDAsMzc4MTIsMzc3OTUsMzc3OTcsMzgzNTQsMzgzNTUsMzgzNTMsMzg1NzksMzg2MTUsMzg2MTgsMjQwMDIsMzg2MjMsMzg2MTYsMzg2MjEsMzg2OTEsMzg2OTAsMzg2OTMsMzg4MjgsMzg4MzAsMzg4MjQsMzg4MjcsMzg4MjAsMzg4MjYsMzg4MTgsMzg4MjEsMzg4NzEsMzg4NzMsMzg4NzAsMzg4NzIsMzg5MDYsMzg5OTIsMzg5OTMsMzg5OTQsMzkwOTYsMzkyMzMsMzkyMjgsMzkyMjYsMzk0MzksMzk0MzUsMzk0MzMsMzk0MzcsMzk0MjgsMzk0NDEsMzk0MzQsMzk0MjksMzk0MzEsMzk0MzAsMzk2MTYsMzk2NDQsMzk2ODgsMzk2ODQsMzk2ODUsMzk3MjEsMzk3MzMsMzk3NTQsMzk3NTYsMzk3NTUsMzk4NzksMzk4NzgsMzk4NzUsMzk4NzEsMzk4NzMsMzk4NjEsMzk4NjQsMzk4OTEsMzk4NjIsMzk4NzYsMzk4NjUsMzk4NjksNDAyODQsNDAyNzUsNDAyNzEsNDAyNjYsNDAyODMsNDAyNjcsNDAyODEsNDAyNzgsNDAyNjgsNDAyNzksNDAyNzQsNDAyNzYsNDAyODcsNDAyODAsNDAyODIsNDA1OTAsNDA1ODgsNDA2NzEsNDA3MDUsNDA3MDQsNDA3MjYsNDA3NDEsNDA3NDcsNDA3NDYsNDA3NDUsNDA3NDQsNDA3ODAsNDA3ODksMjA3ODgsMjA3ODksMjExNDIsMjEyMzksMjE0MjgsMjIxODcsMjIxODksMjIxODIsMjIxODMsMjIxODYsMjIxODgsMjI3NDYsMjI3NDksMjI3NDcsMjI4MDIsMjMzNTcsMjMzNTgsMjMzNTksMjQwMDMsMjQxNzYsMjQ1MTEsMjUwODMsMjU4NjMsMjU4NzIsMjU4NjksMjU4NjUsMjU4NjgsMjU4NzAsMjU5ODgsMjYwNzgsMjYwNzcsMjYzMzQsMjczNjcsMjczNjAsMjczNDAsMjczNDUsMjczNTMsMjczMzksMjczNTksMjczNTYsMjczNDQsMjczNzEsMjczNDMsMjczNDEsMjczNTgsMjc0ODgsMjc1NjgsMjc2NjAsMjg2OTcsMjg3MTEsMjg3MDQsMjg2OTQsMjg3MTUsMjg3MDUsMjg3MDYsMjg3MDcsMjg3MTMsMjg2OTUsMjg3MDgsMjg3MDAsMjg3MTQsMjkxOTYsMjkxOTQsMjkxOTEsMjkxODYsMjkxODksMjkzNDksMjkzNTAsMjkzNDgsMjkzNDcsMjkzNDUsMjk4OTksMjk4OTMsMjk4NzksMjk4OTEsMjk5NzQsMzAzMDQsMzA2NjUsMzA2NjYsMzA2NjAsMzA3MDUsMzEwMDUsMzEwMDMsMzEwMDksMzEwMDQsMzA5OTksMzEwMDYsMzExNTIsMzEzMzUsMzEzMzYsMzE3OTUsMzE4MDQsMzE4MDEsMzE3ODgsMzE4MDMsMzE5ODAsMzE5NzgsMzIzNzQsMzIzNzMsMzIzNzYsMzIzNjgsMzIzNzUsMzIzNjcsMzIzNzgsMzIzNzAsMzIzNzIsMzIzNjAsMzI1ODcsMzI1ODYsMzI2NDMsMzI2NDYsMzI2OTUsMzI3NjUsMzI3NjYsMzI4ODgsMzMyMzksMzMyMzcsMzMzODAsMzMzNzcsMzMzNzksMzQyODMsMzQyODksMzQyODUsMzQyNjUsMzQyNzMsMzQyODAsMzQyNjYsMzQyNjMsMzQyODQsMzQyOTAsMzQyOTYsMzQyNjQsMzQyNzEsMzQyNzUsMzQyNjgsMzQyNTcsMzQyODgsMzQyNzgsMzQyODcsMzQyNzAsMzQyNzQsMzQ4MTYsMzQ4MTAsMzQ4MTksMzQ4MDYsMzQ4MDcsMzQ4MjUsMzQ4MjgsMzQ4MjcsMzQ4MjIsMzQ4MTIsMzQ4MjQsMzQ4MTUsMzQ4MjYsMzQ4MTgsMzUxNzAsMzUxNjIsMzUxNjMsMzUxNTksMzUxNjksMzUxNjQsMzUxNjAsMzUxNjUsMzUxNjEsMzUyMDgsMzUyNTUsMzUyNTQsMzUzMTgsMzU2NjQsMzU2NTYsMzU2NTgsMzU2NDgsMzU2NjcsMzU2NzAsMzU2NjgsMzU2NTksMzU2NjksMzU2NjUsMzU2NTAsMzU2NjYsMzU2NzEsMzU5MDcsMzU5NTksMzU5NTgsMzU5OTQsMzYxMDIsMzYxMDMsMzYxMDUsMzYyNjgsMzYyNjYsMzYyNjksMzYyNjcsMzY0NjEsMzY0NzIsMzY0NjcsMzY0NTgsMzY0NjMsMzY0NzUsMzY1NDYsMzY2OTAsMzY2ODksMzY2ODcsMzY2ODgsMzY2OTEsMzY3ODgsMzcxODQsMzcxODMsMzcyOTYsMzcyOTMsMzc4NTQsMzc4MzEsMzc4MzksMzc4MjYsMzc4NTAsMzc4NDAsMzc4ODEsMzc4NjgsMzc4MzYsMzc4NDksMzc4MDEsMzc4NjIsMzc4MzQsMzc4NDQsMzc4NzAsMzc4NTksMzc4NDUsMzc4MjgsMzc4MzgsMzc4MjQsMzc4NDIsMzc4NjMsMzgyNjksMzgzNjIsMzgzNjMsMzg2MjUsMzg2OTcsMzg2OTksMzg3MDAsMzg2OTYsMzg2OTQsMzg4MzUsMzg4MzksMzg4MzgsMzg4NzcsMzg4NzgsMzg4NzksMzkwMDQsMzkwMDEsMzkwMDUsMzg5OTksMzkxMDMsMzkxMDEsMzkwOTksMzkxMDIsMzkyNDAsMzkyMzksMzkyMzUsMzkzMzQsMzkzMzUsMzk0NTAsMzk0NDUsMzk0NjEsMzk0NTMsMzk0NjAsMzk0NTEsMzk0NTgsMzk0NTYsMzk0NjMsMzk0NTksMzk0NTQsMzk0NTIsMzk0NDQsMzk2MTgsMzk2OTEsMzk2OTAsMzk2OTQsMzk2OTIsMzk3MzUsMzk5MTQsMzk5MTUsMzk5MDQsMzk5MDIsMzk5MDgsMzk5MTAsMzk5MDYsMzk5MjAsMzk4OTIsMzk4OTUsMzk5MTYsMzk5MDAsMzk4OTcsMzk5MDksMzk4OTMsMzk5MDUsMzk4OTgsNDAzMTEsNDAzMjEsNDAzMzAsNDAzMjQsNDAzMjgsNDAzMDUsNDAzMjAsNDAzMTIsNDAzMjYsNDAzMzEsNDAzMzIsNDAzMTcsNDAyOTksNDAzMDgsNDAzMDksNDAzMDQsNDAyOTcsNDAzMjUsNDAzMDcsNDAzMTUsNDAzMjIsNDAzMDMsNDAzMTMsNDAzMTksNDAzMjcsNDAyOTYsNDA1OTYsNDA1OTMsNDA2NDAsNDA3MDAsNDA3NDksNDA3NjgsNDA3NjksNDA3ODEsNDA3OTAsNDA3OTEsNDA3OTIsMjEzMDMsMjIxOTQsMjIxOTcsMjIxOTUsMjI3NTUsMjMzNjUsMjQwMDYsMjQwMDcsMjQzMDIsMjQzMDMsMjQ1MTIsMjQ1MTMsMjUwODEsMjU4NzksMjU4NzgsMjU4NzcsMjU4NzUsMjYwNzksMjYzNDQsMjYzMzksMjYzNDAsMjczNzksMjczNzYsMjczNzAsMjczNjgsMjczODUsMjczNzcsMjczNzQsMjczNzUsMjg3MzIsMjg3MjUsMjg3MTksMjg3MjcsMjg3MjQsMjg3MjEsMjg3MzgsMjg3MjgsMjg3MzUsMjg3MzAsMjg3MjksMjg3MzYsMjg3MzEsMjg3MjMsMjg3MzcsMjkyMDMsMjkyMDQsMjkzNTIsMjk1NjUsMjk1NjQsMjk4ODIsMzAzNzksMzAzNzgsMzAzOTgsMzA0NDUsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NjksMzA3MDYsMzEwMTMsMzEwMTEsMzEwMTUsMzEwMTYsMzEwMTIsMzEwMTcsMzExNTQsMzEzNDIsMzEzNDAsMzEzNDEsMzE0NzksMzE4MTcsMzE4MTYsMzE4MTgsMzE4MTUsMzE4MTMsMzE5ODIsMzIzNzksMzIzODIsMzIzODUsMzIzODQsMzI2OTgsMzI3NjcsMzI4ODksMzMyNDMsMzMyNDEsMzMyOTEsMzMzODQsMzMzODUsMzQzMzgsMzQzMDMsMzQzMDUsMzQzMDIsMzQzMzEsMzQzMDQsMzQyOTQsMzQzMDgsMzQzMTMsMzQzMDksMzQzMTYsMzQzMDEsMzQ4NDEsMzQ4MzIsMzQ4MzMsMzQ4MzksMzQ4MzUsMzQ4MzgsMzUxNzEsMzUxNzQsMzUyNTcsMzUzMTksMzU2ODAsMzU2OTAsMzU2NzcsMzU2ODgsMzU2ODMsMzU2ODUsMzU2ODcsMzU2OTMsMzYyNzAsMzY0ODYsMzY0ODgsMzY0ODQsMzY2OTcsMzY2OTQsMzY2OTUsMzY2OTMsMzY2OTYsMzY2OTgsMzcwMDUsMzcxODcsMzcxODUsMzczMDMsMzczMDEsMzcyOTgsMzcyOTksMzc4OTksMzc5MDcsMzc4ODMsMzc5MjAsMzc5MDMsMzc5MDgsMzc4ODYsMzc5MDksMzc5MDQsMzc5MjgsMzc5MTMsMzc5MDEsMzc4NzcsMzc4ODgsMzc4NzksMzc4OTUsMzc5MDIsMzc5MTAsMzc5MDYsMzc4ODIsMzc4OTcsMzc4ODAsMzc4OTgsMzc4ODcsMzc4ODQsMzc5MDAsMzc4NzgsMzc5MDUsMzc4OTQsMzgzNjYsMzgzNjgsMzgzNjcsMzg3MDIsMzg3MDMsMzg4NDEsMzg4NDMsMzg5MDksMzg5MTAsMzkwMDgsMzkwMTAsMzkwMTEsMzkwMDcsMzkxMDUsMzkxMDYsMzkyNDgsMzkyNDYsMzkyNTcsMzkyNDQsMzkyNDMsMzkyNTEsMzk0NzQsMzk0NzYsMzk0NzMsMzk0NjgsMzk0NjYsMzk0NzgsMzk0NjUsMzk0NzAsMzk0ODAsMzk0NjksMzk2MjMsMzk2MjYsMzk2MjIsMzk2OTYsMzk2OTgsMzk2OTcsMzk5NDcsMzk5NDQsMzk5MjcsMzk5NDEsMzk5NTQsMzk5MjgsNDAwMDAsMzk5NDMsMzk5NTAsMzk5NDIsMzk5NTksMzk5NTYsMzk5NDUsNDAzNTEsNDAzNDUsNDAzNTYsNDAzNDksNDAzMzgsNDAzNDQsNDAzMzYsNDAzNDcsNDAzNTIsNDAzNDAsNDAzNDgsNDAzNjIsNDAzNDMsNDAzNTMsNDAzNDYsNDAzNTQsNDAzNjAsNDAzNTAsNDAzNTUsNDAzODMsNDAzNjEsNDAzNDIsNDAzNTgsNDAzNTksNDA2MDEsNDA2MDMsNDA2MDIsNDA2NzcsNDA2NzYsNDA2NzksNDA2NzgsNDA3NTIsNDA3NTAsNDA3OTUsNDA4MDAsNDA3OTgsNDA3OTcsNDA3OTMsNDA4NDksMjA3OTQsMjA3OTMsMjExNDQsMjExNDMsMjIyMTEsMjIyMDUsMjIyMDYsMjMzNjgsMjMzNjcsMjQwMTEsMjQwMTUsMjQzMDUsMjUwODUsMjU4ODMsMjczOTQsMjczODgsMjczOTUsMjczODQsMjczOTIsMjg3MzksMjg3NDAsMjg3NDYsMjg3NDQsMjg3NDUsMjg3NDEsMjg3NDIsMjkyMTMsMjkyMTAsMjkyMDksMjk1NjYsMjk5NzUsMzAzMTQsMzA2NzIsMzEwMjEsMzEwMjUsMzEwMjMsMzE4MjgsMzE4MjcsMzE5ODYsMzIzOTQsMzIzOTEsMzIzOTIsMzIzOTUsMzIzOTAsMzIzOTcsMzI1ODksMzI2OTksMzI4MTYsMzMyNDUsMzQzMjgsMzQzNDYsMzQzNDIsMzQzMzUsMzQzMzksMzQzMzIsMzQzMjksMzQzNDMsMzQzNTAsMzQzMzcsMzQzMzYsMzQzNDUsMzQzMzQsMzQzNDEsMzQ4NTcsMzQ4NDUsMzQ4NDMsMzQ4NDgsMzQ4NTIsMzQ4NDQsMzQ4NTksMzQ4OTAsMzUxODEsMzUxNzcsMzUxODIsMzUxNzksMzUzMjIsMzU3MDUsMzU3MDQsMzU2NTMsMzU3MDYsMzU3MDcsMzYxMTIsMzYxMTYsMzYyNzEsMzY0OTQsMzY0OTIsMzY3MDIsMzY2OTksMzY3MDEsMzcxOTAsMzcxODgsMzcxODksMzczMDUsMzc5NTEsMzc5NDcsMzc5NDIsMzc5MjksMzc5NDksMzc5NDgsMzc5MzYsMzc5NDUsMzc5MzAsMzc5NDMsMzc5MzIsMzc5NTIsMzc5MzcsMzgzNzMsMzgzNzIsMzgzNzEsMzg3MDksMzg3MTQsMzg4NDcsMzg4ODEsMzkwMTIsMzkxMTMsMzkxMTAsMzkxMDQsMzkyNTYsMzkyNTQsMzk0ODEsMzk0ODUsMzk0OTQsMzk0OTIsMzk0OTAsMzk0ODksMzk0ODIsMzk0ODcsMzk2MjksMzk3MDEsMzk3MDMsMzk3MDQsMzk3MDIsMzk3MzgsMzk3NjIsMzk5NzksMzk5NjUsMzk5NjQsMzk5ODAsMzk5NzEsMzk5NzYsMzk5NzcsMzk5NzIsMzk5NjksNDAzNzUsNDAzNzQsNDAzODAsNDAzODUsNDAzOTEsNDAzOTQsNDAzOTksNDAzODIsNDAzODksNDAzODcsNDAzNzksNDAzNzMsNDAzOTgsNDAzNzcsNDAzNzgsNDAzNjQsNDAzOTIsNDAzNjksNDAzNjUsNDAzOTYsNDAzNzEsNDAzOTcsNDAzNzAsNDA1NzAsNDA2MDQsNDA2ODMsNDA2ODYsNDA2ODUsNDA3MzEsNDA3MjgsNDA3MzAsNDA3NTMsNDA3ODIsNDA4MDUsNDA4MDQsNDA4NTAsMjAxNTMsMjIyMTQsMjIyMTMsMjIyMTksMjI4OTcsMjMzNzEsMjMzNzIsMjQwMjEsMjQwMTcsMjQzMDYsMjU4ODksMjU4ODgsMjU4OTQsMjU4OTAsMjc0MDMsMjc0MDAsMjc0MDEsMjc2NjEsMjg3NTcsMjg3NTgsMjg3NTksMjg3NTQsMjkyMTQsMjkyMTUsMjkzNTMsMjk1NjcsMjk5MTIsMjk5MDksMjk5MTMsMjk5MTEsMzAzMTcsMzAzODEsMzEwMjksMzExNTYsMzEzNDQsMzEzNDUsMzE4MzEsMzE4MzYsMzE4MzMsMzE4MzUsMzE4MzQsMzE5ODgsMzE5ODUsMzI0MDEsMzI1OTEsMzI2NDcsMzMyNDYsMzMzODcsMzQzNTYsMzQzNTcsMzQzNTUsMzQzNDgsMzQzNTQsMzQzNTgsMzQ4NjAsMzQ4NTYsMzQ4NTQsMzQ4NTgsMzQ4NTMsMzUxODUsMzUyNjMsMzUyNjIsMzUzMjMsMzU3MTAsMzU3MTYsMzU3MTQsMzU3MTgsMzU3MTcsMzU3MTEsMzYxMTcsMzY1MDEsMzY1MDAsMzY1MDYsMzY0OTgsMzY0OTYsMzY1MDIsMzY1MDMsMzY3MDQsMzY3MDYsMzcxOTEsMzc5NjQsMzc5NjgsMzc5NjIsMzc5NjMsMzc5NjcsMzc5NTksMzc5NTcsMzc5NjAsMzc5NjEsMzc5NTgsMzg3MTksMzg4ODMsMzkwMTgsMzkwMTcsMzkxMTUsMzkyNTIsMzkyNTksMzk1MDIsMzk1MDcsMzk1MDgsMzk1MDAsMzk1MDMsMzk0OTYsMzk0OTgsMzk0OTcsMzk1MDYsMzk1MDQsMzk2MzIsMzk3MDUsMzk3MjMsMzk3MzksMzk3NjYsMzk3NjUsNDAwMDYsNDAwMDgsMzk5OTksNDAwMDQsMzk5OTMsMzk5ODcsNDAwMDEsMzk5OTYsMzk5OTEsMzk5ODgsMzk5ODYsMzk5OTcsMzk5OTAsNDA0MTEsNDA0MDIsNDA0MTQsNDA0MTAsNDAzOTUsNDA0MDAsNDA0MTIsNDA0MDEsNDA0MTUsNDA0MjUsNDA0MDksNDA0MDgsNDA0MDYsNDA0MzcsNDA0MDUsNDA0MTMsNDA2MzAsNDA2ODgsNDA3NTcsNDA3NTUsNDA3NTQsNDA3NzAsNDA4MTEsNDA4NTMsNDA4NjYsMjA3OTcsMjExNDUsMjI3NjAsMjI3NTksMjI4OTgsMjMzNzMsMjQwMjQsMzQ4NjMsMjQzOTksMjUwODksMjUwOTEsMjUwOTIsMjU4OTcsMjU4OTMsMjYwMDYsMjYzNDcsMjc0MDksMjc0MTAsMjc0MDcsMjc1OTQsMjg3NjMsMjg3NjIsMjkyMTgsMjk1NzAsMjk1NjksMjk1NzEsMzAzMjAsMzA2NzYsMzE4NDcsMzE4NDYsMzI0MDUsMzMzODgsMzQzNjIsMzQzNjgsMzQzNjEsMzQzNjQsMzQzNTMsMzQzNjMsMzQzNjYsMzQ4NjQsMzQ4NjYsMzQ4NjIsMzQ4NjcsMzUxOTAsMzUxODgsMzUxODcsMzUzMjYsMzU3MjQsMzU3MjYsMzU3MjMsMzU3MjAsMzU5MDksMzYxMjEsMzY1MDQsMzY3MDgsMzY3MDcsMzczMDgsMzc5ODYsMzc5NzMsMzc5ODEsMzc5NzUsMzc5ODIsMzg4NTIsMzg4NTMsMzg5MTIsMzk1MTAsMzk1MTMsMzk3MTAsMzk3MTEsMzk3MTIsNDAwMTgsNDAwMjQsNDAwMTYsNDAwMTAsNDAwMTMsNDAwMTEsNDAwMjEsNDAwMjUsNDAwMTIsNDAwMTQsNDA0NDMsNDA0MzksNDA0MzEsNDA0MTksNDA0MjcsNDA0NDAsNDA0MjAsNDA0MzgsNDA0MTcsNDA0MzAsNDA0MjIsNDA0MzQsNDA0MzIsNDA0MTgsNDA0MjgsNDA0MzYsNDA0MzUsNDA0MjQsNDA0MjksNDA2NDIsNDA2NTYsNDA2OTAsNDA2OTEsNDA3MTAsNDA3MzIsNDA3NjAsNDA3NTksNDA3NTgsNDA3NzEsNDA3ODMsNDA4MTcsNDA4MTYsNDA4MTQsNDA4MTUsMjIyMjcsMjIyMjEsMjMzNzQsMjM2NjEsMjU5MDEsMjYzNDksMjYzNTAsMjc0MTEsMjg3NjcsMjg3NjksMjg3NjUsMjg3NjgsMjkyMTksMjk5MTUsMjk5MjUsMzA2NzcsMzEwMzIsMzExNTksMzExNTgsMzE4NTAsMzI0MDcsMzI2NDksMzMzODksMzQzNzEsMzQ4NzIsMzQ4NzEsMzQ4NjksMzQ4OTEsMzU3MzIsMzU3MzMsMzY1MTAsMzY1MTEsMzY1MTIsMzY1MDksMzczMTAsMzczMDksMzczMTQsMzc5OTUsMzc5OTIsMzc5OTMsMzg2MjksMzg3MjYsMzg3MjMsMzg3MjcsMzg4NTUsMzg4ODUsMzk1MTgsMzk2MzcsMzk3NjksNDAwMzUsNDAwMzksNDAwMzgsNDAwMzQsNDAwMzAsNDAwMzIsNDA0NTAsNDA0NDYsNDA0NTUsNDA0NTEsNDA0NTQsNDA0NTMsNDA0NDgsNDA0NDksNDA0NTcsNDA0NDcsNDA0NDUsNDA0NTIsNDA2MDgsNDA3MzQsNDA3NzQsNDA4MjAsNDA4MjEsNDA4MjIsMjIyMjgsMjU5MDIsMjYwNDAsMjc0MTYsMjc0MTcsMjc0MTUsMjc0MTgsMjg3NzAsMjkyMjIsMjkzNTQsMzA2ODAsMzA2ODEsMzEwMzMsMzE4NDksMzE4NTEsMzE5OTAsMzI0MTAsMzI0MDgsMzI0MTEsMzI0MDksMzMyNDgsMzMyNDksMzQzNzQsMzQzNzUsMzQzNzYsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTUsMzUzMjcsMzU3MzYsMzU3MzcsMzY1MTcsMzY1MTYsMzY1MTUsMzc5OTgsMzc5OTcsMzc5OTksMzgwMDEsMzgwMDMsMzg3MjksMzkwMjYsMzkyNjMsNDAwNDAsNDAwNDYsNDAwNDUsNDA0NTksNDA0NjEsNDA0NjQsNDA0NjMsNDA0NjYsNDA0NjUsNDA2MDksNDA2OTMsNDA3MTMsNDA3NzUsNDA4MjQsNDA4MjcsNDA4MjYsNDA4MjUsMjIzMDIsMjg3NzQsMzE4NTUsMzQ4NzYsMzYyNzQsMzY1MTgsMzczMTUsMzgwMDQsMzgwMDgsMzgwMDYsMzgwMDUsMzk1MjAsNDAwNTIsNDAwNTEsNDAwNDksNDAwNTMsNDA0NjgsNDA0NjcsNDA2OTQsNDA3MTQsNDA4NjgsMjg3NzYsMjg3NzMsMzE5OTEsMzQ0MTAsMzQ4NzgsMzQ4NzcsMzQ4NzksMzU3NDIsMzU5OTYsMzY1MjEsMzY1NTMsMzg3MzEsMzkwMjcsMzkwMjgsMzkxMTYsMzkyNjUsMzkzMzksMzk1MjQsMzk1MjYsMzk1MjcsMzk3MTYsNDA0NjksNDA0NzEsNDA3NzYsMjUwOTUsMjc0MjIsMjkyMjMsMzQzODAsMzY1MjAsMzgwMTgsMzgwMTYsMzgwMTcsMzk1MjksMzk1MjgsMzk3MjYsNDA0NzMsMjkyMjUsMzQzNzksMzU3NDMsMzgwMTksNDAwNTcsNDA2MzEsMzAzMjUsMzk1MzEsNDAwNTgsNDA0NzcsMjg3NzcsMjg3NzgsNDA2MTIsNDA4MzAsNDA3NzcsNDA4NTYsMzA4NDksMzc1NjEsMzUwMjMsMjI3MTUsMjQ2NTgsMzE5MTEsMjMyOTAsOTU1Niw5NTc0LDk1NTksOTU2OCw5NTgwLDk1NzEsOTU2Miw5NTc3LDk1NjUsOTU1NCw5NTcyLDk1NTcsOTU2Niw5NTc4LDk1NjksOTU2MCw5NTc1LDk1NjMsOTU1NSw5NTczLDk1NTgsOTU2Nyw5NTc5LDk1NzAsOTU2MSw5NTc2LDk1NjQsOTU1Myw5NTUyLDk1ODEsOTU4Miw5NTg0LDk1ODMsNjU1MTcsMTMyNDIzLDM3NTk1LDEzMjU3NSwxNDczOTcsMzQxMjQsMTcwNzcsMjk2NzksMjA5MTcsMTM4OTcsMTQ5ODI2LDE2NjM3MiwzNzcwMCwxMzc2OTEsMzM1MTgsMTQ2NjMyLDMwNzgwLDI2NDM2LDI1MzExLDE0OTgxMSwxNjYzMTQsMTMxNzQ0LDE1ODY0MywxMzU5NDEsMjAzOTUsMTQwNTI1LDIwNDg4LDE1OTAxNywxNjI0MzYsMTQ0ODk2LDE1MDE5MywxNDA1NjMsMjA1MjEsMTMxOTY2LDI0NDg0LDEzMTk2OCwxMzE5MTEsMjgzNzksMTMyMTI3LDIwNjA1LDIwNzM3LDEzNDM0LDIwNzUwLDM5MDIwLDE0MTQ3LDMzODE0LDE0OTkyNCwxMzIyMzEsMjA4MzIsMTQ0MzA4LDIwODQyLDEzNDE0MywxMzk1MTYsMTMxODEzLDE0MDU5MiwxMzI0OTQsMTQzOTIzLDEzNzYwMywyMzQyNiwzNDY4NSwxMzI1MzEsMTQ2NTg1LDIwOTE0LDIwOTIwLDQwMjQ0LDIwOTM3LDIwOTQzLDIwOTQ1LDE1NTgwLDIwOTQ3LDE1MDE4MiwyMDkxNSwyMDk2MiwyMTMxNCwyMDk3MywzMzc0MSwyNjk0MiwxNDUxOTcsMjQ0NDMsMjEwMDMsMjEwMzAsMjEwNTIsMjExNzMsMjEwNzksMjExNDAsMjExNzcsMjExODksMzE3NjUsMzQxMTQsMjEyMTYsMzQzMTcsMTU4NDgzLDIxMjUzLDE2NjYyMiwyMTgzMywyODM3NywxNDczMjgsMTMzNDYwLDE0NzQzNiwyMTI5OSwyMTMxNiwxMzQxMTQsMjc4NTEsMTM2OTk4LDI2NjUxLDI5NjUzLDI0NjUwLDE2MDQyLDE0NTQwLDEzNjkzNiwyOTE0OSwxNzU3MCwyMTM1NywyMTM2NCwxNjU1NDcsMjEzNzQsMjEzNzUsMTM2NTk4LDEzNjcyMywzMDY5NCwyMTM5NSwxNjY1NTUsMjE0MDgsMjE0MTksMjE0MjIsMjk2MDcsMTUzNDU4LDE2MjE3LDI5NTk2LDIxNDQxLDIxNDQ1LDI3NzIxLDIwMDQxLDIyNTI2LDIxNDY1LDE1MDE5LDEzNDAzMSwyMTQ3MiwxNDc0MzUsMTQyNzU1LDIxNDk0LDEzNDI2MywyMTUyMywyODc5MywyMTgwMywyNjE5OSwyNzk5NSwyMTYxMywxNTg1NDcsMTM0NTE2LDIxODUzLDIxNjQ3LDIxNjY4LDE4MzQyLDEzNjk3MywxMzQ4NzcsMTU3OTYsMTM0NDc3LDE2NjMzMiwxNDA5NTIsMjE4MzEsMTk2OTMsMjE1NTEsMjk3MTksMjE4OTQsMjE5MjksMjIwMjEsMTM3NDMxLDE0NzUxNCwxNzc0NiwxNDg1MzMsMjYyOTEsMTM1MzQ4LDIyMDcxLDI2MzE3LDE0NDAxMCwyNjI3NiwyNjI4NSwyMjA5MywyMjA5NSwzMDk2MSwyMjI1NywzODc5MSwyMTUwMiwyMjI3MiwyMjI1NSwyMjI1MywxNjY3NTgsMTM4NTksMTM1NzU5LDIyMzQyLDE0Nzg3NywyNzc1OCwyODgxMSwyMjMzOCwxNDAwMSwxNTg4NDYsMjI1MDIsMTM2MjE0LDIyNTMxLDEzNjI3NiwxNDgzMjMsMjI1NjYsMTUwNTE3LDIyNjIwLDIyNjk4LDEzNjY1LDIyNzUyLDIyNzQ4LDEzNTc0MCwyMjc3OSwyMzU1MSwyMjMzOSwxNzIzNjgsMTQ4MDg4LDM3ODQzLDEzNzI5LDIyODE1LDI2NzkwLDE0MDE5LDI4MjQ5LDEzNjc2NiwyMzA3NiwyMTg0MywxMzY4NTAsMzQwNTMsMjI5ODUsMTM0NDc4LDE1ODg0OSwxNTkwMTgsMTM3MTgwLDIzMDAxLDEzNzIxMSwxMzcxMzgsMTU5MTQyLDI4MDE3LDEzNzI1NiwxMzY5MTcsMjMwMzMsMTU5MzAxLDIzMjExLDIzMTM5LDE0MDU0LDE0OTkyOSwyMzE1OSwxNDA4OCwyMzE5MCwyOTc5NywyMzI1MSwxNTk2NDksMTQwNjI4LDE1NzQ5LDEzNzQ4OSwxNDEzMCwxMzY4ODgsMjQxOTUsMjEyMDAsMjM0MTQsMjU5OTIsMjM0MjAsMTYyMzE4LDE2Mzg4LDE4NTI1LDEzMTU4OCwyMzUwOSwyNDkyOCwxMzc3ODAsMTU0MDYwLDEzMjUxNywyMzUzOSwyMzQ1MywxOTcyOCwyMzU1NywxMzgwNTIsMjM1NzEsMjk2NDYsMjM1NzIsMTM4NDA1LDE1ODUwNCwyMzYyNSwxODY1MywyMzY4NSwyMzc4NSwyMzc5MSwyMzk0NywxMzg3NDUsMTM4ODA3LDIzODI0LDIzODMyLDIzODc4LDEzODkxNiwyMzczOCwyNDAyMywzMzUzMiwxNDM4MSwxNDk3NjEsMTM5MzM3LDEzOTYzNSwzMzQxNSwxNDM5MCwxNTI5OCwyNDExMCwyNzI3NCwyNDE4MSwyNDE4NiwxNDg2NjgsMTM0MzU1LDIxNDE0LDIwMTUxLDI0MjcyLDIxNDE2LDEzNzA3MywyNDA3MywyNDMwOCwxNjQ5OTQsMjQzMTMsMjQzMTUsMTQ0OTYsMjQzMTYsMjY2ODYsMzc5MTUsMjQzMzMsMTMxNTIxLDE5NDcwOCwxNTA3MCwxODYwNiwxMzU5OTQsMjQzNzgsMTU3ODMyLDE0MDI0MCwyNDQwOCwxNDA0MDEsMjQ0MTksMzg4NDUsMTU5MzQyLDI0NDM0LDM3Njk2LDE2NjQ1NCwyNDQ4NywyMzk5MCwxNTcxMSwxNTIxNDQsMTM5MTE0LDE1OTk5MiwxNDA5MDQsMzczMzQsMTMxNzQyLDE2NjQ0MSwyNDYyNSwyNjI0NSwxMzczMzUsMTQ2OTEsMTU4MTUsMTM4ODEsMjI0MTYsMTQxMjM2LDMxMDg5LDE1OTM2LDI0NzM0LDI0NzQwLDI0NzU1LDE0OTg5MCwxNDk5MDMsMTYyMzg3LDI5ODYwLDIwNzA1LDIzMjAwLDI0OTMyLDMzODI4LDI0ODk4LDE5NDcyNiwxNTk0NDIsMjQ5NjEsMjA5ODAsMTMyNjk0LDI0OTY3LDIzNDY2LDE0NzM4MywxNDE0MDcsMjUwNDMsMTY2ODEzLDE3MDMzMywyNTA0MCwxNDY0MiwxNDE2OTYsMTQxNTA1LDI0NjExLDI0OTI0LDI1ODg2LDI1NDgzLDEzMTM1MiwyNTI4NSwxMzcwNzIsMjUzMDEsMTQyODYxLDI1NDUyLDE0OTk4MywxNDg3MSwyNTY1NiwyNTU5MiwxMzYwNzgsMTM3MjEyLDI1NzQ0LDI4NTU0LDE0MjkwMiwzODkzMiwxNDc1OTYsMTUzMzczLDI1ODI1LDI1ODI5LDM4MDExLDE0OTUwLDI1NjU4LDE0OTM1LDI1OTMzLDI4NDM4LDE1MDA1NiwxNTAwNTEsMjU5ODksMjU5NjUsMjU5NTEsMTQzNDg2LDI2MDM3LDE0OTgyNCwxOTI1NSwyNjA2NSwxNjYwMCwxMzcyNTcsMjYwODAsMjYwODMsMjQ1NDMsMTQ0Mzg0LDI2MTM2LDE0Mzg2MywxNDM4NjQsMjYxODAsMTQzNzgwLDE0Mzc4MSwyNjE4NywxMzQ3NzMsMjYyMTUsMTUyMDM4LDI2MjI3LDI2MjI4LDEzODgxMywxNDM5MjEsMTY1MzY0LDE0MzgxNiwxNTIzMzksMzA2NjEsMTQxNTU5LDM5MzMyLDI2MzcwLDE0ODM4MCwxNTAwNDksMTUxNDcsMjcxMzAsMTQ1MzQ2LDI2NDYyLDI2NDcxLDI2NDY2LDE0NzkxNywxNjgxNzMsMjY1ODMsMTc2NDEsMjY2NTgsMjgyNDAsMzc0MzYsMjY2MjUsMTQ0MzU4LDE1OTEzNiwyNjcxNywxNDQ0OTUsMjcxMDUsMjcxNDcsMTY2NjIzLDI2OTk1LDI2ODE5LDE0NDg0NSwyNjg4MSwyNjg4MCwxNTY2NiwxNDg0OSwxNDQ5NTYsMTUyMzIsMjY1NDAsMjY5NzcsMTY2NDc0LDE3MTQ4LDI2OTM0LDI3MDMyLDE1MjY1LDEzMjA0MSwzMzYzNSwyMDYyNCwyNzEyOSwxNDQ5ODUsMTM5NTYyLDI3MjA1LDE0NTE1NSwyNzI5MywxNTM0NywyNjU0NSwyNzMzNiwxNjgzNDgsMTUzNzMsMjc0MjEsMTMzNDExLDI0Nzk4LDI3NDQ1LDI3NTA4LDE0MTI2MSwyODM0MSwxNDYxMzksMTMyMDIxLDEzNzU2MCwxNDE0NCwyMTUzNywxNDYyNjYsMjc2MTcsMTQ3MTk2LDI3NjEyLDI3NzAzLDE0MDQyNywxNDk3NDUsMTU4NTQ1LDI3NzM4LDMzMzE4LDI3NzY5LDE0Njg3NiwxNzYwNSwxNDY4NzcsMTQ3ODc2LDE0OTc3MiwxNDk3NjAsMTQ2NjMzLDE0MDUzLDE1NTk1LDEzNDQ1MCwzOTgxMSwxNDM4NjUsMTQwNDMzLDMyNjU1LDI2Njc5LDE1OTAxMywxNTkxMzcsMTU5MjExLDI4MDU0LDI3OTk2LDI4Mjg0LDI4NDIwLDE0OTg4NywxNDc1ODksMTU5MzQ2LDM0MDk5LDE1OTYwNCwyMDkzNSwyNzgwNCwyODE4OSwzMzgzOCwxNjY2ODksMjgyMDcsMTQ2OTkxLDI5Nzc5LDE0NzMzMCwzMTE4MCwyODIzOSwyMzE4NSwxNDM0MzUsMjg2NjQsMTQwOTMsMjg1NzMsMTQ2OTkyLDI4NDEwLDEzNjM0MywxNDc1MTcsMTc3NDksMzc4NzIsMjg0ODQsMjg1MDgsMTU2OTQsMjg1MzIsMTY4MzA0LDE1Njc1LDI4NTc1LDE0Nzc4MCwyODYyNywxNDc2MDEsMTQ3Nzk3LDE0NzUxMywxNDc0NDAsMTQ3MzgwLDE0Nzc3NSwyMDk1OSwxNDc3OTgsMTQ3Nzk5LDE0Nzc3NiwxNTYxMjUsMjg3NDcsMjg3OTgsMjg4MzksMjg4MDEsMjg4NzYsMjg4ODUsMjg4ODYsMjg4OTUsMTY2NDQsMTU4NDgsMjkxMDgsMjkwNzgsMTQ4MDg3LDI4OTcxLDI4OTk3LDIzMTc2LDI5MDAyLDI5MDM4LDIzNzA4LDE0ODMyNSwyOTAwNywzNzczMCwxNDgxNjEsMjg5NzIsMTQ4NTcwLDE1MDA1NSwxNTAwNTAsMjkxMTQsMTY2ODg4LDI4ODYxLDI5MTk4LDM3OTU0LDI5MjA1LDIyODAxLDM3OTU1LDI5MjIwLDM3Njk3LDE1MzA5MywyOTIzMCwyOTI0OCwxNDk4NzYsMjY4MTMsMjkyNjksMjkyNzEsMTU5NTcsMTQzNDI4LDI2NjM3LDI4NDc3LDI5MzE0LDI5NDgyLDI5NDgzLDE0OTUzOSwxNjU5MzEsMTg2NjksMTY1ODkyLDI5NDgwLDI5NDg2LDI5NjQ3LDI5NjEwLDEzNDIwMiwxNTgyNTQsMjk2NDEsMjk3NjksMTQ3OTM4LDEzNjkzNSwxNTAwNTIsMjYxNDcsMTQwMjEsMTQ5OTQzLDE0OTkwMSwxNTAwMTEsMjk2ODcsMjk3MTcsMjY4ODMsMTUwMDU0LDI5NzUzLDEzMjU0NywxNjA4NywyOTc4OCwxNDE0ODUsMjk3OTIsMTY3NjAyLDI5NzY3LDI5NjY4LDI5ODE0LDMzNzIxLDI5ODA0LDE0MTI4LDI5ODEyLDM3ODczLDI3MTgwLDI5ODI2LDE4NzcxLDE1MDE1NiwxNDc4MDcsMTUwMTM3LDE2Njc5OSwyMzM2NiwxNjY5MTUsMTM3Mzc0LDI5ODk2LDEzNzYwOCwyOTk2NiwyOTkyOSwyOTk4MiwxNjc2NDEsMTM3ODAzLDIzNTExLDE2NzU5NiwzNzc2NSwzMDAyOSwzMDAyNiwzMDA1NSwzMDA2MiwxNTE0MjYsMTYxMzIsMTUwODAzLDMwMDk0LDI5Nzg5LDMwMTEwLDMwMTMyLDMwMjEwLDMwMjUyLDMwMjg5LDMwMjg3LDMwMzE5LDMwMzI2LDE1NjY2MSwzMDM1MiwzMzI2MywxNDMyOCwxNTc5NjksMTU3OTY2LDMwMzY5LDMwMzczLDMwMzkxLDMwNDEyLDE1OTY0NywzMzg5MCwxNTE3MDksMTUxOTMzLDEzODc4MCwzMDQ5NCwzMDUwMiwzMDUyOCwyNTc3NSwxNTIwOTYsMzA1NTIsMTQ0MDQ0LDMwNjM5LDE2NjI0NCwxNjYyNDgsMTM2ODk3LDMwNzA4LDMwNzI5LDEzNjA1NCwxNTAwMzQsMjY4MjYsMzA4OTUsMzA5MTksMzA5MzEsMzg1NjUsMzEwMjIsMTUzMDU2LDMwOTM1LDMxMDI4LDMwODk3LDE2MTI5MiwzNjc5MiwzNDk0OCwxNjY2OTksMTU1Nzc5LDE0MDgyOCwzMTExMCwzNTA3MiwyNjg4MiwzMTEwNCwxNTM2ODcsMzExMzMsMTYyNjE3LDMxMDM2LDMxMTQ1LDI4MjAyLDE2MDAzOCwxNjA0MCwzMTE3NCwxNjgyMDUsMzExODhdLFxuICBcImV1Yy1rclwiOls0NDAzNCw0NDAzNSw0NDAzNyw0NDAzOCw0NDA0Myw0NDA0NCw0NDA0NSw0NDA0Niw0NDA0Nyw0NDA1Niw0NDA2Miw0NDA2Myw0NDA2NSw0NDA2Niw0NDA2Nyw0NDA2OSw0NDA3MCw0NDA3MSw0NDA3Miw0NDA3Myw0NDA3NCw0NDA3NSw0NDA3OCw0NDA4Miw0NDA4Myw0NDA4NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDA4NSw0NDA4Niw0NDA4Nyw0NDA5MCw0NDA5MSw0NDA5Myw0NDA5NCw0NDA5NSw0NDA5Nyw0NDA5OCw0NDA5OSw0NDEwMCw0NDEwMSw0NDEwMiw0NDEwMyw0NDEwNCw0NDEwNSw0NDEwNiw0NDEwOCw0NDExMCw0NDExMSw0NDExMiw0NDExMyw0NDExNCw0NDExNSw0NDExNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDExOCw0NDExOSw0NDEyMSw0NDEyMiw0NDEyMyw0NDEyNSw0NDEyNiw0NDEyNyw0NDEyOCw0NDEyOSw0NDEzMCw0NDEzMSw0NDEzMiw0NDEzMyw0NDEzNCw0NDEzNSw0NDEzNiw0NDEzNyw0NDEzOCw0NDEzOSw0NDE0MCw0NDE0MSw0NDE0Miw0NDE0Myw0NDE0Niw0NDE0Nyw0NDE0OSw0NDE1MCw0NDE1Myw0NDE1NSw0NDE1Niw0NDE1Nyw0NDE1OCw0NDE1OSw0NDE2Miw0NDE2Nyw0NDE2OCw0NDE3Myw0NDE3NCw0NDE3NSw0NDE3Nyw0NDE3OCw0NDE3OSw0NDE4MSw0NDE4Miw0NDE4Myw0NDE4NCw0NDE4NSw0NDE4Niw0NDE4Nyw0NDE5MCw0NDE5NCw0NDE5NSw0NDE5Niw0NDE5Nyw0NDE5OCw0NDE5OSw0NDIwMyw0NDIwNSw0NDIwNiw0NDIwOSw0NDIxMCw0NDIxMSw0NDIxMiw0NDIxMyw0NDIxNCw0NDIxNSw0NDIxOCw0NDIyMiw0NDIyMyw0NDIyNCw0NDIyNiw0NDIyNyw0NDIyOSw0NDIzMCw0NDIzMSw0NDIzMyw0NDIzNCw0NDIzNSw0NDIzNyw0NDIzOCw0NDIzOSw0NDI0MCw0NDI0MSw0NDI0Miw0NDI0Myw0NDI0NCw0NDI0Niw0NDI0OCw0NDI0OSw0NDI1MCw0NDI1MSw0NDI1Miw0NDI1Myw0NDI1NCw0NDI1NSw0NDI1OCw0NDI1OSw0NDI2MSw0NDI2Miw0NDI2NSw0NDI2Nyw0NDI2OSw0NDI3MCw0NDI3NCw0NDI3Niw0NDI3OSw0NDI4MCw0NDI4MSw0NDI4Miw0NDI4Myw0NDI4Niw0NDI4Nyw0NDI4OSw0NDI5MCw0NDI5MSw0NDI5Myw0NDI5NSw0NDI5Niw0NDI5Nyw0NDI5OCw0NDI5OSw0NDMwMiw0NDMwNCw0NDMwNiw0NDMwNyw0NDMwOCw0NDMwOSw0NDMxMCw0NDMxMSw0NDMxMyw0NDMxNCw0NDMxNSw0NDMxNyw0NDMxOCw0NDMxOSw0NDMyMSw0NDMyMiw0NDMyMyw0NDMyNCw0NDMyNSw0NDMyNiw0NDMyNyw0NDMyOCw0NDMzMCw0NDMzMSw0NDMzNCw0NDMzNSw0NDMzNiw0NDMzNyw0NDMzOCw0NDMzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDM0Miw0NDM0Myw0NDM0NSw0NDM0Niw0NDM0Nyw0NDM0OSw0NDM1MCw0NDM1MSw0NDM1Miw0NDM1Myw0NDM1NCw0NDM1NSw0NDM1OCw0NDM2MCw0NDM2Miw0NDM2Myw0NDM2NCw0NDM2NSw0NDM2Niw0NDM2Nyw0NDM2OSw0NDM3MCw0NDM3MSw0NDM3Myw0NDM3NCw0NDM3NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDM3Nyw0NDM3OCw0NDM3OSw0NDM4MCw0NDM4MSw0NDM4Miw0NDM4Myw0NDM4NCw0NDM4Niw0NDM4OCw0NDM4OSw0NDM5MCw0NDM5MSw0NDM5Miw0NDM5Myw0NDM5NCw0NDM5NSw0NDM5OCw0NDM5OSw0NDQwMSw0NDQwMiw0NDQwNyw0NDQwOCw0NDQwOSw0NDQxMCw0NDQxNCw0NDQxNiw0NDQxOSw0NDQyMCw0NDQyMSw0NDQyMiw0NDQyMyw0NDQyNiw0NDQyNyw0NDQyOSw0NDQzMCw0NDQzMSw0NDQzMyw0NDQzNCw0NDQzNSw0NDQzNiw0NDQzNyw0NDQzOCw0NDQzOSw0NDQ0MCw0NDQ0MSw0NDQ0Miw0NDQ0Myw0NDQ0Niw0NDQ0Nyw0NDQ0OCw0NDQ0OSw0NDQ1MCw0NDQ1MSw0NDQ1Myw0NDQ1NCw0NDQ1NSw0NDQ1Niw0NDQ1Nyw0NDQ1OCw0NDQ1OSw0NDQ2MCw0NDQ2MSw0NDQ2Miw0NDQ2Myw0NDQ2NCw0NDQ2NSw0NDQ2Niw0NDQ2Nyw0NDQ2OCw0NDQ2OSw0NDQ3MCw0NDQ3Miw0NDQ3Myw0NDQ3NCw0NDQ3NSw0NDQ3Niw0NDQ3Nyw0NDQ3OCw0NDQ3OSw0NDQ4Miw0NDQ4Myw0NDQ4NSw0NDQ4Niw0NDQ4Nyw0NDQ4OSw0NDQ5MCw0NDQ5MSw0NDQ5Miw0NDQ5Myw0NDQ5NCw0NDQ5NSw0NDQ5OCw0NDUwMCw0NDUwMSw0NDUwMiw0NDUwMyw0NDUwNCw0NDUwNSw0NDUwNiw0NDUwNyw0NDUwOSw0NDUxMCw0NDUxMSw0NDUxMyw0NDUxNCw0NDUxNSw0NDUxNyw0NDUxOCw0NDUxOSw0NDUyMCw0NDUyMSw0NDUyMiw0NDUyMyw0NDUyNCw0NDUyNSw0NDUyNiw0NDUyNyw0NDUyOCw0NDUyOSw0NDUzMCw0NDUzMSw0NDUzMiw0NDUzMyw0NDUzNCw0NDUzNSw0NDUzOCw0NDUzOSw0NDU0MSw0NDU0Miw0NDU0Niw0NDU0Nyw0NDU0OCw0NDU0OSw0NDU1MCw0NDU1MSw0NDU1NCw0NDU1Niw0NDU1OCw0NDU1OSw0NDU2MCw0NDU2MSw0NDU2Miw0NDU2Myw0NDU2NSw0NDU2Niw0NDU2Nyw0NDU2OCw0NDU2OSw0NDU3MCw0NDU3MSw0NDU3MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDU3Myw0NDU3NCw0NDU3NSw0NDU3Niw0NDU3Nyw0NDU3OCw0NDU3OSw0NDU4MCw0NDU4MSw0NDU4Miw0NDU4Myw0NDU4NCw0NDU4NSw0NDU4Niw0NDU4Nyw0NDU4OCw0NDU4OSw0NDU5MCw0NDU5MSw0NDU5NCw0NDU5NSw0NDU5Nyw0NDU5OCw0NDYwMSw0NDYwMyw0NDYwNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDYwNSw0NDYwNiw0NDYwNyw0NDYxMCw0NDYxMiw0NDYxNSw0NDYxNiw0NDYxNyw0NDYxOSw0NDYyMyw0NDYyNSw0NDYyNiw0NDYyNyw0NDYyOSw0NDYzMSw0NDYzMiw0NDYzMyw0NDYzNCw0NDYzNSw0NDYzOCw0NDY0Miw0NDY0Myw0NDY0NCw0NDY0Niw0NDY0Nyw0NDY1MCw0NDY1MSw0NDY1Myw0NDY1NCw0NDY1NSw0NDY1Nyw0NDY1OCw0NDY1OSw0NDY2MCw0NDY2MSw0NDY2Miw0NDY2Myw0NDY2Niw0NDY3MCw0NDY3MSw0NDY3Miw0NDY3Myw0NDY3NCw0NDY3NSw0NDY3OCw0NDY3OSw0NDY4MCw0NDY4MSw0NDY4Miw0NDY4Myw0NDY4NSw0NDY4Niw0NDY4Nyw0NDY4OCw0NDY4OSw0NDY5MCw0NDY5MSw0NDY5Miw0NDY5Myw0NDY5NCw0NDY5NSw0NDY5Niw0NDY5Nyw0NDY5OCw0NDY5OSw0NDcwMCw0NDcwMSw0NDcwMiw0NDcwMyw0NDcwNCw0NDcwNSw0NDcwNiw0NDcwNyw0NDcwOCw0NDcwOSw0NDcxMCw0NDcxMSw0NDcxMiw0NDcxMyw0NDcxNCw0NDcxNSw0NDcxNiw0NDcxNyw0NDcxOCw0NDcxOSw0NDcyMCw0NDcyMSw0NDcyMiw0NDcyMyw0NDcyNCw0NDcyNSw0NDcyNiw0NDcyNyw0NDcyOCw0NDcyOSw0NDczMCw0NDczMSw0NDczNSw0NDczNyw0NDczOCw0NDczOSw0NDc0MSw0NDc0Miw0NDc0Myw0NDc0NCw0NDc0NSw0NDc0Niw0NDc0Nyw0NDc1MCw0NDc1NCw0NDc1NSw0NDc1Niw0NDc1Nyw0NDc1OCw0NDc1OSw0NDc2Miw0NDc2Myw0NDc2NSw0NDc2Niw0NDc2Nyw0NDc2OCw0NDc2OSw0NDc3MCw0NDc3MSw0NDc3Miw0NDc3Myw0NDc3NCw0NDc3NSw0NDc3Nyw0NDc3OCw0NDc4MCw0NDc4Miw0NDc4Myw0NDc4NCw0NDc4NSw0NDc4Niw0NDc4Nyw0NDc4OSw0NDc5MCw0NDc5MSw0NDc5Myw0NDc5NCw0NDc5NSw0NDc5Nyw0NDc5OCw0NDc5OSw0NDgwMCw0NDgwMSw0NDgwMiw0NDgwMyw0NDgwNCw0NDgwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDgwNiw0NDgwOSw0NDgxMCw0NDgxMSw0NDgxMiw0NDgxNCw0NDgxNSw0NDgxNyw0NDgxOCw0NDgxOSw0NDgyMCw0NDgyMSw0NDgyMiw0NDgyMyw0NDgyNCw0NDgyNSw0NDgyNiw0NDgyNyw0NDgyOCw0NDgyOSw0NDgzMCw0NDgzMSw0NDgzMiw0NDgzMyw0NDgzNCw0NDgzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NDgzNiw0NDgzNyw0NDgzOCw0NDgzOSw0NDg0MCw0NDg0MSw0NDg0Miw0NDg0Myw0NDg0Niw0NDg0Nyw0NDg0OSw0NDg1MSw0NDg1Myw0NDg1NCw0NDg1NSw0NDg1Niw0NDg1Nyw0NDg1OCw0NDg1OSw0NDg2Miw0NDg2NCw0NDg2OCw0NDg2OSw0NDg3MCw0NDg3MSw0NDg3NCw0NDg3NSw0NDg3Niw0NDg3Nyw0NDg3OCw0NDg3OSw0NDg4MSw0NDg4Miw0NDg4Myw0NDg4NCw0NDg4NSw0NDg4Niw0NDg4Nyw0NDg4OCw0NDg4OSw0NDg5MCw0NDg5MSw0NDg5NCw0NDg5NSw0NDg5Niw0NDg5Nyw0NDg5OCw0NDg5OSw0NDkwMiw0NDkwMyw0NDkwNCw0NDkwNSw0NDkwNiw0NDkwNyw0NDkwOCw0NDkwOSw0NDkxMCw0NDkxMSw0NDkxMiw0NDkxMyw0NDkxNCw0NDkxNSw0NDkxNiw0NDkxNyw0NDkxOCw0NDkxOSw0NDkyMCw0NDkyMiw0NDkyMyw0NDkyNCw0NDkyNSw0NDkyNiw0NDkyNyw0NDkyOSw0NDkzMCw0NDkzMSw0NDkzMyw0NDkzNCw0NDkzNSw0NDkzNyw0NDkzOCw0NDkzOSw0NDk0MCw0NDk0MSw0NDk0Miw0NDk0Myw0NDk0Niw0NDk0Nyw0NDk0OCw0NDk1MCw0NDk1MSw0NDk1Miw0NDk1Myw0NDk1NCw0NDk1NSw0NDk1Nyw0NDk1OCw0NDk1OSw0NDk2MCw0NDk2MSw0NDk2Miw0NDk2Myw0NDk2NCw0NDk2NSw0NDk2Niw0NDk2Nyw0NDk2OCw0NDk2OSw0NDk3MCw0NDk3MSw0NDk3Miw0NDk3Myw0NDk3NCw0NDk3NSw0NDk3Niw0NDk3Nyw0NDk3OCw0NDk3OSw0NDk4MCw0NDk4MSw0NDk4Miw0NDk4Myw0NDk4Niw0NDk4Nyw0NDk4OSw0NDk5MCw0NDk5MSw0NDk5Myw0NDk5NCw0NDk5NSw0NDk5Niw0NDk5Nyw0NDk5OCw0NTAwMiw0NTAwNCw0NTAwNyw0NTAwOCw0NTAwOSw0NTAxMCw0NTAxMSw0NTAxMyw0NTAxNCw0NTAxNSw0NTAxNiw0NTAxNyw0NTAxOCw0NTAxOSw0NTAyMSw0NTAyMiw0NTAyMyw0NTAyNCw0NTAyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTAyNiw0NTAyNyw0NTAyOCw0NTAyOSw0NTAzMCw0NTAzMSw0NTAzNCw0NTAzNSw0NTAzNiw0NTAzNyw0NTAzOCw0NTAzOSw0NTA0Miw0NTA0Myw0NTA0NSw0NTA0Niw0NTA0Nyw0NTA0OSw0NTA1MCw0NTA1MSw0NTA1Miw0NTA1Myw0NTA1NCw0NTA1NSw0NTA1OCw0NTA1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTA2MSw0NTA2Miw0NTA2Myw0NTA2NCw0NTA2NSw0NTA2Niw0NTA2Nyw0NTA2OSw0NTA3MCw0NTA3MSw0NTA3Myw0NTA3NCw0NTA3NSw0NTA3Nyw0NTA3OCw0NTA3OSw0NTA4MCw0NTA4MSw0NTA4Miw0NTA4Myw0NTA4Niw0NTA4Nyw0NTA4OCw0NTA4OSw0NTA5MCw0NTA5MSw0NTA5Miw0NTA5Myw0NTA5NCw0NTA5NSw0NTA5Nyw0NTA5OCw0NTA5OSw0NTEwMCw0NTEwMSw0NTEwMiw0NTEwMyw0NTEwNCw0NTEwNSw0NTEwNiw0NTEwNyw0NTEwOCw0NTEwOSw0NTExMCw0NTExMSw0NTExMiw0NTExMyw0NTExNCw0NTExNSw0NTExNiw0NTExNyw0NTExOCw0NTExOSw0NTEyMCw0NTEyMSw0NTEyMiw0NTEyMyw0NTEyNiw0NTEyNyw0NTEyOSw0NTEzMSw0NTEzMyw0NTEzNSw0NTEzNiw0NTEzNyw0NTEzOCw0NTE0Miw0NTE0NCw0NTE0Niw0NTE0Nyw0NTE0OCw0NTE1MCw0NTE1MSw0NTE1Miw0NTE1Myw0NTE1NCw0NTE1NSw0NTE1Niw0NTE1Nyw0NTE1OCw0NTE1OSw0NTE2MCw0NTE2MSw0NTE2Miw0NTE2Myw0NTE2NCw0NTE2NSw0NTE2Niw0NTE2Nyw0NTE2OCw0NTE2OSw0NTE3MCw0NTE3MSw0NTE3Miw0NTE3Myw0NTE3NCw0NTE3NSw0NTE3Niw0NTE3Nyw0NTE3OCw0NTE3OSw0NTE4Miw0NTE4Myw0NTE4NSw0NTE4Niw0NTE4Nyw0NTE4OSw0NTE5MCw0NTE5MSw0NTE5Miw0NTE5Myw0NTE5NCw0NTE5NSw0NTE5OCw0NTIwMCw0NTIwMiw0NTIwMyw0NTIwNCw0NTIwNSw0NTIwNiw0NTIwNyw0NTIxMSw0NTIxMyw0NTIxNCw0NTIxOSw0NTIyMCw0NTIyMSw0NTIyMiw0NTIyMyw0NTIyNiw0NTIzMiw0NTIzNCw0NTIzOCw0NTIzOSw0NTI0MSw0NTI0Miw0NTI0Myw0NTI0NSw0NTI0Niw0NTI0Nyw0NTI0OCw0NTI0OSw0NTI1MCw0NTI1MSw0NTI1NCw0NTI1OCw0NTI1OSw0NTI2MCw0NTI2MSw0NTI2Miw0NTI2Myw0NTI2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTI2Nyw0NTI2OSw0NTI3MCw0NTI3MSw0NTI3Myw0NTI3NCw0NTI3NSw0NTI3Niw0NTI3Nyw0NTI3OCw0NTI3OSw0NTI4MSw0NTI4Miw0NTI4Myw0NTI4NCw0NTI4Niw0NTI4Nyw0NTI4OCw0NTI4OSw0NTI5MCw0NTI5MSw0NTI5Miw0NTI5Myw0NTI5NCw0NTI5NSw0NTI5NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTI5Nyw0NTI5OCw0NTI5OSw0NTMwMCw0NTMwMSw0NTMwMiw0NTMwMyw0NTMwNCw0NTMwNSw0NTMwNiw0NTMwNyw0NTMwOCw0NTMwOSw0NTMxMCw0NTMxMSw0NTMxMiw0NTMxMyw0NTMxNCw0NTMxNSw0NTMxNiw0NTMxNyw0NTMxOCw0NTMxOSw0NTMyMiw0NTMyNSw0NTMyNiw0NTMyNyw0NTMyOSw0NTMzMiw0NTMzMyw0NTMzNCw0NTMzNSw0NTMzOCw0NTM0Miw0NTM0Myw0NTM0NCw0NTM0NSw0NTM0Niw0NTM1MCw0NTM1MSw0NTM1Myw0NTM1NCw0NTM1NSw0NTM1Nyw0NTM1OCw0NTM1OSw0NTM2MCw0NTM2MSw0NTM2Miw0NTM2Myw0NTM2Niw0NTM3MCw0NTM3MSw0NTM3Miw0NTM3Myw0NTM3NCw0NTM3NSw0NTM3OCw0NTM3OSw0NTM4MSw0NTM4Miw0NTM4Myw0NTM4NSw0NTM4Niw0NTM4Nyw0NTM4OCw0NTM4OSw0NTM5MCw0NTM5MSw0NTM5NCw0NTM5NSw0NTM5OCw0NTM5OSw0NTQwMSw0NTQwMiw0NTQwMyw0NTQwNSw0NTQwNiw0NTQwNyw0NTQwOSw0NTQxMCw0NTQxMSw0NTQxMiw0NTQxMyw0NTQxNCw0NTQxNSw0NTQxNiw0NTQxNyw0NTQxOCw0NTQxOSw0NTQyMCw0NTQyMSw0NTQyMiw0NTQyMyw0NTQyNCw0NTQyNSw0NTQyNiw0NTQyNyw0NTQyOCw0NTQyOSw0NTQzMCw0NTQzMSw0NTQzNCw0NTQzNSw0NTQzNyw0NTQzOCw0NTQzOSw0NTQ0MSw0NTQ0Myw0NTQ0NCw0NTQ0NSw0NTQ0Niw0NTQ0Nyw0NTQ1MCw0NTQ1Miw0NTQ1NCw0NTQ1NSw0NTQ1Niw0NTQ1Nyw0NTQ2MSw0NTQ2Miw0NTQ2Myw0NTQ2NSw0NTQ2Niw0NTQ2Nyw0NTQ2OSw0NTQ3MCw0NTQ3MSw0NTQ3Miw0NTQ3Myw0NTQ3NCw0NTQ3NSw0NTQ3Niw0NTQ3Nyw0NTQ3OCw0NTQ3OSw0NTQ4MSw0NTQ4Miw0NTQ4Myw0NTQ4NCw0NTQ4NSw0NTQ4Niw0NTQ4Nyw0NTQ4OCw0NTQ4OSw0NTQ5MCw0NTQ5MSw0NTQ5Miw0NTQ5Myw0NTQ5NCw0NTQ5NSw0NTQ5NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTQ5Nyw0NTQ5OCw0NTQ5OSw0NTUwMCw0NTUwMSw0NTUwMiw0NTUwMyw0NTUwNCw0NTUwNSw0NTUwNiw0NTUwNyw0NTUwOCw0NTUwOSw0NTUxMCw0NTUxMSw0NTUxMiw0NTUxMyw0NTUxNCw0NTUxNSw0NTUxNyw0NTUxOCw0NTUxOSw0NTUyMSw0NTUyMiw0NTUyMyw0NTUyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTUyNiw0NTUyNyw0NTUyOCw0NTUyOSw0NTUzMCw0NTUzMSw0NTUzNCw0NTUzNiw0NTUzNyw0NTUzOCw0NTUzOSw0NTU0MCw0NTU0MSw0NTU0Miw0NTU0Myw0NTU0Niw0NTU0Nyw0NTU0OSw0NTU1MCw0NTU1MSw0NTU1Myw0NTU1NCw0NTU1NSw0NTU1Niw0NTU1Nyw0NTU1OCw0NTU1OSw0NTU2MCw0NTU2Miw0NTU2NCw0NTU2Niw0NTU2Nyw0NTU2OCw0NTU2OSw0NTU3MCw0NTU3MSw0NTU3NCw0NTU3NSw0NTU3Nyw0NTU3OCw0NTU4MSw0NTU4Miw0NTU4Myw0NTU4NCw0NTU4NSw0NTU4Niw0NTU4Nyw0NTU5MCw0NTU5Miw0NTU5NCw0NTU5NSw0NTU5Niw0NTU5Nyw0NTU5OCw0NTU5OSw0NTYwMSw0NTYwMiw0NTYwMyw0NTYwNCw0NTYwNSw0NTYwNiw0NTYwNyw0NTYwOCw0NTYwOSw0NTYxMCw0NTYxMSw0NTYxMiw0NTYxMyw0NTYxNCw0NTYxNSw0NTYxNiw0NTYxNyw0NTYxOCw0NTYxOSw0NTYyMSw0NTYyMiw0NTYyMyw0NTYyNCw0NTYyNSw0NTYyNiw0NTYyNyw0NTYyOSw0NTYzMCw0NTYzMSw0NTYzMiw0NTYzMyw0NTYzNCw0NTYzNSw0NTYzNiw0NTYzNyw0NTYzOCw0NTYzOSw0NTY0MCw0NTY0MSw0NTY0Miw0NTY0Myw0NTY0NCw0NTY0NSw0NTY0Niw0NTY0Nyw0NTY0OCw0NTY0OSw0NTY1MCw0NTY1MSw0NTY1Miw0NTY1Myw0NTY1NCw0NTY1NSw0NTY1Nyw0NTY1OCw0NTY1OSw0NTY2MSw0NTY2Miw0NTY2Myw0NTY2NSw0NTY2Niw0NTY2Nyw0NTY2OCw0NTY2OSw0NTY3MCw0NTY3MSw0NTY3NCw0NTY3NSw0NTY3Niw0NTY3Nyw0NTY3OCw0NTY3OSw0NTY4MCw0NTY4MSw0NTY4Miw0NTY4Myw0NTY4Niw0NTY4Nyw0NTY4OCw0NTY4OSw0NTY5MCw0NTY5MSw0NTY5Myw0NTY5NCw0NTY5NSw0NTY5Niw0NTY5Nyw0NTY5OCw0NTY5OSw0NTcwMiw0NTcwMyw0NTcwNCw0NTcwNiw0NTcwNyw0NTcwOCw0NTcwOSw0NTcxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTcxMSw0NTcxNCw0NTcxNSw0NTcxNyw0NTcxOCw0NTcxOSw0NTcyMyw0NTcyNCw0NTcyNSw0NTcyNiw0NTcyNyw0NTczMCw0NTczMiw0NTczNSw0NTczNiw0NTczNyw0NTczOSw0NTc0MSw0NTc0Miw0NTc0Myw0NTc0NSw0NTc0Niw0NTc0Nyw0NTc0OSw0NTc1MCw0NTc1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTc1Miw0NTc1Myw0NTc1NCw0NTc1NSw0NTc1Niw0NTc1Nyw0NTc1OCw0NTc1OSw0NTc2MCw0NTc2MSw0NTc2Miw0NTc2Myw0NTc2NCw0NTc2NSw0NTc2Niw0NTc2Nyw0NTc3MCw0NTc3MSw0NTc3Myw0NTc3NCw0NTc3NSw0NTc3Nyw0NTc3OSw0NTc4MCw0NTc4MSw0NTc4Miw0NTc4Myw0NTc4Niw0NTc4OCw0NTc5MCw0NTc5MSw0NTc5Miw0NTc5Myw0NTc5NSw0NTc5OSw0NTgwMSw0NTgwMiw0NTgwOCw0NTgwOSw0NTgxMCw0NTgxNCw0NTgyMCw0NTgyMSw0NTgyMiw0NTgyNiw0NTgyNyw0NTgyOSw0NTgzMCw0NTgzMSw0NTgzMyw0NTgzNCw0NTgzNSw0NTgzNiw0NTgzNyw0NTgzOCw0NTgzOSw0NTg0Miw0NTg0Niw0NTg0Nyw0NTg0OCw0NTg0OSw0NTg1MCw0NTg1MSw0NTg1Myw0NTg1NCw0NTg1NSw0NTg1Niw0NTg1Nyw0NTg1OCw0NTg1OSw0NTg2MCw0NTg2MSw0NTg2Miw0NTg2Myw0NTg2NCw0NTg2NSw0NTg2Niw0NTg2Nyw0NTg2OCw0NTg2OSw0NTg3MCw0NTg3MSw0NTg3Miw0NTg3Myw0NTg3NCw0NTg3NSw0NTg3Niw0NTg3Nyw0NTg3OCw0NTg3OSw0NTg4MCw0NTg4MSw0NTg4Miw0NTg4Myw0NTg4NCw0NTg4NSw0NTg4Niw0NTg4Nyw0NTg4OCw0NTg4OSw0NTg5MCw0NTg5MSw0NTg5Miw0NTg5Myw0NTg5NCw0NTg5NSw0NTg5Niw0NTg5Nyw0NTg5OCw0NTg5OSw0NTkwMCw0NTkwMSw0NTkwMiw0NTkwMyw0NTkwNCw0NTkwNSw0NTkwNiw0NTkwNyw0NTkxMSw0NTkxMyw0NTkxNCw0NTkxNyw0NTkyMCw0NTkyMSw0NTkyMiw0NTkyMyw0NTkyNiw0NTkyOCw0NTkzMCw0NTkzMiw0NTkzMyw0NTkzNSw0NTkzOCw0NTkzOSw0NTk0MSw0NTk0Miw0NTk0Myw0NTk0NSw0NTk0Niw0NTk0Nyw0NTk0OCw0NTk0OSw0NTk1MCw0NTk1MSw0NTk1NCw0NTk1OCw0NTk1OSw0NTk2MCw0NTk2MSw0NTk2Miw0NTk2Myw0NTk2NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTk2Niw0NTk2Nyw0NTk2OSw0NTk3MCw0NTk3MSw0NTk3Myw0NTk3NCw0NTk3NSw0NTk3Niw0NTk3Nyw0NTk3OCw0NTk3OSw0NTk4MCw0NTk4MSw0NTk4Miw0NTk4Myw0NTk4Niw0NTk4Nyw0NTk4OCw0NTk4OSw0NTk5MCw0NTk5MSw0NTk5Myw0NTk5NCw0NTk5NSw0NTk5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NTk5OCw0NTk5OSw0NjAwMCw0NjAwMSw0NjAwMiw0NjAwMyw0NjAwNCw0NjAwNSw0NjAwNiw0NjAwNyw0NjAwOCw0NjAwOSw0NjAxMCw0NjAxMSw0NjAxMiw0NjAxMyw0NjAxNCw0NjAxNSw0NjAxNiw0NjAxNyw0NjAxOCw0NjAxOSw0NjAyMiw0NjAyMyw0NjAyNSw0NjAyNiw0NjAyOSw0NjAzMSw0NjAzMyw0NjAzNCw0NjAzNSw0NjAzOCw0NjA0MCw0NjA0Miw0NjA0NCw0NjA0Niw0NjA0Nyw0NjA0OSw0NjA1MCw0NjA1MSw0NjA1Myw0NjA1NCw0NjA1NSw0NjA1Nyw0NjA1OCw0NjA1OSw0NjA2MCw0NjA2MSw0NjA2Miw0NjA2Myw0NjA2NCw0NjA2NSw0NjA2Niw0NjA2Nyw0NjA2OCw0NjA2OSw0NjA3MCw0NjA3MSw0NjA3Miw0NjA3Myw0NjA3NCw0NjA3NSw0NjA3Nyw0NjA3OCw0NjA3OSw0NjA4MCw0NjA4MSw0NjA4Miw0NjA4Myw0NjA4NCw0NjA4NSw0NjA4Niw0NjA4Nyw0NjA4OCw0NjA4OSw0NjA5MCw0NjA5MSw0NjA5Miw0NjA5Myw0NjA5NCw0NjA5NSw0NjA5Nyw0NjA5OCw0NjA5OSw0NjEwMCw0NjEwMSw0NjEwMiw0NjEwMyw0NjEwNSw0NjEwNiw0NjEwNyw0NjEwOSw0NjExMCw0NjExMSw0NjExMyw0NjExNCw0NjExNSw0NjExNiw0NjExNyw0NjExOCw0NjExOSw0NjEyMiw0NjEyNCw0NjEyNSw0NjEyNiw0NjEyNyw0NjEyOCw0NjEyOSw0NjEzMCw0NjEzMSw0NjEzMyw0NjEzNCw0NjEzNSw0NjEzNiw0NjEzNyw0NjEzOCw0NjEzOSw0NjE0MCw0NjE0MSw0NjE0Miw0NjE0Myw0NjE0NCw0NjE0NSw0NjE0Niw0NjE0Nyw0NjE0OCw0NjE0OSw0NjE1MCw0NjE1MSw0NjE1Miw0NjE1Myw0NjE1NCw0NjE1NSw0NjE1Niw0NjE1Nyw0NjE1OCw0NjE1OSw0NjE2Miw0NjE2Myw0NjE2NSw0NjE2Niw0NjE2Nyw0NjE2OSw0NjE3MCw0NjE3MSw0NjE3Miw0NjE3Myw0NjE3NCw0NjE3NSw0NjE3OCw0NjE4MCw0NjE4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjE4Myw0NjE4NCw0NjE4NSw0NjE4Niw0NjE4Nyw0NjE4OSw0NjE5MCw0NjE5MSw0NjE5Miw0NjE5Myw0NjE5NCw0NjE5NSw0NjE5Niw0NjE5Nyw0NjE5OCw0NjE5OSw0NjIwMCw0NjIwMSw0NjIwMiw0NjIwMyw0NjIwNCw0NjIwNSw0NjIwNiw0NjIwNyw0NjIwOSw0NjIxMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjIxMSw0NjIxMiw0NjIxMyw0NjIxNCw0NjIxNSw0NjIxNyw0NjIxOCw0NjIxOSw0NjIyMCw0NjIyMSw0NjIyMiw0NjIyMyw0NjIyNCw0NjIyNSw0NjIyNiw0NjIyNyw0NjIyOCw0NjIyOSw0NjIzMCw0NjIzMSw0NjIzMiw0NjIzMyw0NjIzNCw0NjIzNSw0NjIzNiw0NjIzOCw0NjIzOSw0NjI0MCw0NjI0MSw0NjI0Miw0NjI0Myw0NjI0NSw0NjI0Niw0NjI0Nyw0NjI0OSw0NjI1MCw0NjI1MSw0NjI1Myw0NjI1NCw0NjI1NSw0NjI1Niw0NjI1Nyw0NjI1OCw0NjI1OSw0NjI2MCw0NjI2Miw0NjI2NCw0NjI2Niw0NjI2Nyw0NjI2OCw0NjI2OSw0NjI3MCw0NjI3MSw0NjI3Myw0NjI3NCw0NjI3NSw0NjI3Nyw0NjI3OCw0NjI3OSw0NjI4MSw0NjI4Miw0NjI4Myw0NjI4NCw0NjI4NSw0NjI4Niw0NjI4Nyw0NjI4OSw0NjI5MCw0NjI5MSw0NjI5Miw0NjI5NCw0NjI5NSw0NjI5Niw0NjI5Nyw0NjI5OCw0NjI5OSw0NjMwMiw0NjMwMyw0NjMwNSw0NjMwNiw0NjMwOSw0NjMxMSw0NjMxMiw0NjMxMyw0NjMxNCw0NjMxNSw0NjMxOCw0NjMyMCw0NjMyMiw0NjMyMyw0NjMyNCw0NjMyNSw0NjMyNiw0NjMyNyw0NjMyOSw0NjMzMCw0NjMzMSw0NjMzMiw0NjMzMyw0NjMzNCw0NjMzNSw0NjMzNiw0NjMzNyw0NjMzOCw0NjMzOSw0NjM0MCw0NjM0MSw0NjM0Miw0NjM0Myw0NjM0NCw0NjM0NSw0NjM0Niw0NjM0Nyw0NjM0OCw0NjM0OSw0NjM1MCw0NjM1MSw0NjM1Miw0NjM1Myw0NjM1NCw0NjM1NSw0NjM1OCw0NjM1OSw0NjM2MSw0NjM2Miw0NjM2NSw0NjM2Niw0NjM2Nyw0NjM2OCw0NjM2OSw0NjM3MCw0NjM3MSw0NjM3NCw0NjM3OSw0NjM4MCw0NjM4MSw0NjM4Miw0NjM4Myw0NjM4Niw0NjM4Nyw0NjM4OSw0NjM5MCw0NjM5MSw0NjM5Myw0NjM5NCw0NjM5NSw0NjM5Niw0NjM5Nyw0NjM5OCw0NjM5OSw0NjQwMiw0NjQwNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQwNyw0NjQwOCw0NjQwOSw0NjQxMCw0NjQxNCw0NjQxNSw0NjQxNyw0NjQxOCw0NjQxOSw0NjQyMSw0NjQyMiw0NjQyMyw0NjQyNCw0NjQyNSw0NjQyNiw0NjQyNyw0NjQzMCw0NjQzNCw0NjQzNSw0NjQzNiw0NjQzNyw0NjQzOCw0NjQzOSw0NjQ0MCw0NjQ0MSw0NjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjQ0Myw0NjQ0NCw0NjQ0NSw0NjQ0Niw0NjQ0Nyw0NjQ0OCw0NjQ0OSw0NjQ1MCw0NjQ1MSw0NjQ1Miw0NjQ1Myw0NjQ1NCw0NjQ1NSw0NjQ1Niw0NjQ1Nyw0NjQ1OCw0NjQ1OSw0NjQ2MCw0NjQ2MSw0NjQ2Miw0NjQ2Myw0NjQ2NCw0NjQ2NSw0NjQ2Niw0NjQ2Nyw0NjQ2OCw0NjQ2OSw0NjQ3MCw0NjQ3MSw0NjQ3Miw0NjQ3Myw0NjQ3NCw0NjQ3NSw0NjQ3Niw0NjQ3Nyw0NjQ3OCw0NjQ3OSw0NjQ4MCw0NjQ4MSw0NjQ4Miw0NjQ4Myw0NjQ4NCw0NjQ4NSw0NjQ4Niw0NjQ4Nyw0NjQ4OCw0NjQ4OSw0NjQ5MCw0NjQ5MSw0NjQ5Miw0NjQ5Myw0NjQ5NCw0NjQ5NSw0NjQ5OCw0NjQ5OSw0NjUwMSw0NjUwMiw0NjUwMyw0NjUwNSw0NjUwOCw0NjUwOSw0NjUxMCw0NjUxMSw0NjUxNCw0NjUxOCw0NjUxOSw0NjUyMCw0NjUyMSw0NjUyMiw0NjUyNiw0NjUyNyw0NjUyOSw0NjUzMCw0NjUzMSw0NjUzMyw0NjUzNCw0NjUzNSw0NjUzNiw0NjUzNyw0NjUzOCw0NjUzOSw0NjU0Miw0NjU0Niw0NjU0Nyw0NjU0OCw0NjU0OSw0NjU1MCw0NjU1MSw0NjU1Myw0NjU1NCw0NjU1NSw0NjU1Niw0NjU1Nyw0NjU1OCw0NjU1OSw0NjU2MCw0NjU2MSw0NjU2Miw0NjU2Myw0NjU2NCw0NjU2NSw0NjU2Niw0NjU2Nyw0NjU2OCw0NjU2OSw0NjU3MCw0NjU3MSw0NjU3Myw0NjU3NCw0NjU3NSw0NjU3Niw0NjU3Nyw0NjU3OCw0NjU3OSw0NjU4MCw0NjU4MSw0NjU4Miw0NjU4Myw0NjU4NCw0NjU4NSw0NjU4Niw0NjU4Nyw0NjU4OCw0NjU4OSw0NjU5MCw0NjU5MSw0NjU5Miw0NjU5Myw0NjU5NCw0NjU5NSw0NjU5Niw0NjU5Nyw0NjU5OCw0NjU5OSw0NjYwMCw0NjYwMSw0NjYwMiw0NjYwMyw0NjYwNCw0NjYwNSw0NjYwNiw0NjYwNyw0NjYxMCw0NjYxMSw0NjYxMyw0NjYxNCw0NjYxNSw0NjYxNyw0NjYxOCw0NjYxOSw0NjYyMCw0NjYyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjYyMiw0NjYyMyw0NjYyNCw0NjYyNSw0NjYyNiw0NjYyNyw0NjYyOCw0NjYzMCw0NjYzMSw0NjYzMiw0NjYzMyw0NjYzNCw0NjYzNSw0NjYzNyw0NjYzOCw0NjYzOSw0NjY0MCw0NjY0MSw0NjY0Miw0NjY0Myw0NjY0NSw0NjY0Niw0NjY0Nyw0NjY0OCw0NjY0OSw0NjY1MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjY1MSw0NjY1Miw0NjY1Myw0NjY1NCw0NjY1NSw0NjY1Niw0NjY1Nyw0NjY1OCw0NjY1OSw0NjY2MCw0NjY2MSw0NjY2Miw0NjY2Myw0NjY2NSw0NjY2Niw0NjY2Nyw0NjY2OCw0NjY2OSw0NjY3MCw0NjY3MSw0NjY3Miw0NjY3Myw0NjY3NCw0NjY3NSw0NjY3Niw0NjY3Nyw0NjY3OCw0NjY3OSw0NjY4MCw0NjY4MSw0NjY4Miw0NjY4Myw0NjY4NCw0NjY4NSw0NjY4Niw0NjY4Nyw0NjY4OCw0NjY4OSw0NjY5MCw0NjY5MSw0NjY5Myw0NjY5NCw0NjY5NSw0NjY5Nyw0NjY5OCw0NjY5OSw0NjcwMCw0NjcwMSw0NjcwMiw0NjcwMyw0NjcwNCw0NjcwNSw0NjcwNiw0NjcwNyw0NjcwOCw0NjcwOSw0NjcxMCw0NjcxMSw0NjcxMiw0NjcxMyw0NjcxNCw0NjcxNSw0NjcxNiw0NjcxNyw0NjcxOCw0NjcxOSw0NjcyMCw0NjcyMSw0NjcyMiw0NjcyMyw0NjcyNCw0NjcyNSw0NjcyNiw0NjcyNyw0NjcyOCw0NjcyOSw0NjczMCw0NjczMSw0NjczMiw0NjczMyw0NjczNCw0NjczNSw0NjczNiw0NjczNyw0NjczOCw0NjczOSw0Njc0MCw0Njc0MSw0Njc0Miw0Njc0Myw0Njc0NCw0Njc0NSw0Njc0Niw0Njc0Nyw0Njc1MCw0Njc1MSw0Njc1Myw0Njc1NCw0Njc1NSw0Njc1Nyw0Njc1OCw0Njc1OSw0Njc2MCw0Njc2MSw0Njc2Miw0Njc2NSw0Njc2Niw0Njc2Nyw0Njc2OCw0Njc3MCw0Njc3MSw0Njc3Miw0Njc3Myw0Njc3NCw0Njc3NSw0Njc3Niw0Njc3Nyw0Njc3OCw0Njc3OSw0Njc4MCw0Njc4MSw0Njc4Miw0Njc4Myw0Njc4NCw0Njc4NSw0Njc4Niw0Njc4Nyw0Njc4OCw0Njc4OSw0Njc5MCw0Njc5MSw0Njc5Miw0Njc5Myw0Njc5NCw0Njc5NSw0Njc5Niw0Njc5Nyw0Njc5OCw0Njc5OSw0NjgwMCw0NjgwMSw0NjgwMiw0NjgwMyw0NjgwNSw0NjgwNiw0NjgwNyw0NjgwOCw0NjgwOSw0NjgxMCw0NjgxMSw0NjgxMiw0NjgxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NjgxNCw0NjgxNSw0NjgxNiw0NjgxNyw0NjgxOCw0NjgxOSw0NjgyMCw0NjgyMSw0NjgyMiw0NjgyMyw0NjgyNCw0NjgyNSw0NjgyNiw0NjgyNyw0NjgyOCw0NjgyOSw0NjgzMCw0NjgzMSw0NjgzMyw0NjgzNCw0NjgzNSw0NjgzNyw0NjgzOCw0NjgzOSw0Njg0MSw0Njg0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Njg0Myw0Njg0NCw0Njg0NSw0Njg0Niw0Njg0Nyw0Njg1MCw0Njg1MSw0Njg1Miw0Njg1NCw0Njg1NSw0Njg1Niw0Njg1Nyw0Njg1OCw0Njg1OSw0Njg2MCw0Njg2MSw0Njg2Miw0Njg2Myw0Njg2NCw0Njg2NSw0Njg2Niw0Njg2Nyw0Njg2OCw0Njg2OSw0Njg3MCw0Njg3MSw0Njg3Miw0Njg3Myw0Njg3NCw0Njg3NSw0Njg3Niw0Njg3Nyw0Njg3OCw0Njg3OSw0Njg4MCw0Njg4MSw0Njg4Miw0Njg4Myw0Njg4NCw0Njg4NSw0Njg4Niw0Njg4Nyw0Njg5MCw0Njg5MSw0Njg5Myw0Njg5NCw0Njg5Nyw0Njg5OCw0Njg5OSw0NjkwMCw0NjkwMSw0NjkwMiw0NjkwMyw0NjkwNiw0NjkwOCw0NjkwOSw0NjkxMCw0NjkxMSw0NjkxMiw0NjkxMyw0NjkxNCw0NjkxNSw0NjkxNyw0NjkxOCw0NjkxOSw0NjkyMSw0NjkyMiw0NjkyMyw0NjkyNSw0NjkyNiw0NjkyNyw0NjkyOCw0NjkyOSw0NjkzMCw0NjkzMSw0NjkzNCw0NjkzNSw0NjkzNiw0NjkzNyw0NjkzOCw0NjkzOSw0Njk0MCw0Njk0MSw0Njk0Miw0Njk0Myw0Njk0NSw0Njk0Niw0Njk0Nyw0Njk0OSw0Njk1MCw0Njk1MSw0Njk1Myw0Njk1NCw0Njk1NSw0Njk1Niw0Njk1Nyw0Njk1OCw0Njk1OSw0Njk2Miw0Njk2NCw0Njk2Niw0Njk2Nyw0Njk2OCw0Njk2OSw0Njk3MCw0Njk3MSw0Njk3NCw0Njk3NSw0Njk3Nyw0Njk3OCw0Njk3OSw0Njk4MSw0Njk4Miw0Njk4Myw0Njk4NCw0Njk4NSw0Njk4Niw0Njk4Nyw0Njk5MCw0Njk5NSw0Njk5Niw0Njk5Nyw0NzAwMiw0NzAwMyw0NzAwNSw0NzAwNiw0NzAwNyw0NzAwOSw0NzAxMCw0NzAxMSw0NzAxMiw0NzAxMyw0NzAxNCw0NzAxNSw0NzAxOCw0NzAyMiw0NzAyMyw0NzAyNCw0NzAyNSw0NzAyNiw0NzAyNyw0NzAzMCw0NzAzMSw0NzAzMyw0NzAzNCw0NzAzNSw0NzAzNiw0NzAzNyw0NzAzOCw0NzAzOSw0NzA0MCw0NzA0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA0Miw0NzA0Myw0NzA0NCw0NzA0NSw0NzA0Niw0NzA0OCw0NzA1MCw0NzA1MSw0NzA1Miw0NzA1Myw0NzA1NCw0NzA1NSw0NzA1Niw0NzA1Nyw0NzA1OCw0NzA1OSw0NzA2MCw0NzA2MSw0NzA2Miw0NzA2Myw0NzA2NCw0NzA2NSw0NzA2Niw0NzA2Nyw0NzA2OCw0NzA2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzA3MCw0NzA3MSw0NzA3Miw0NzA3Myw0NzA3NCw0NzA3NSw0NzA3Niw0NzA3Nyw0NzA3OCw0NzA3OSw0NzA4MCw0NzA4MSw0NzA4Miw0NzA4Myw0NzA4Niw0NzA4Nyw0NzA4OSw0NzA5MCw0NzA5MSw0NzA5Myw0NzA5NCw0NzA5NSw0NzA5Niw0NzA5Nyw0NzA5OCw0NzA5OSw0NzEwMiw0NzEwNiw0NzEwNyw0NzEwOCw0NzEwOSw0NzExMCw0NzExNCw0NzExNSw0NzExNyw0NzExOCw0NzExOSw0NzEyMSw0NzEyMiw0NzEyMyw0NzEyNCw0NzEyNSw0NzEyNiw0NzEyNyw0NzEzMCw0NzEzMiw0NzEzNCw0NzEzNSw0NzEzNiw0NzEzNyw0NzEzOCw0NzEzOSw0NzE0Miw0NzE0Myw0NzE0NSw0NzE0Niw0NzE0Nyw0NzE0OSw0NzE1MCw0NzE1MSw0NzE1Miw0NzE1Myw0NzE1NCw0NzE1NSw0NzE1OCw0NzE2Miw0NzE2Myw0NzE2NCw0NzE2NSw0NzE2Niw0NzE2Nyw0NzE2OSw0NzE3MCw0NzE3MSw0NzE3Myw0NzE3NCw0NzE3NSw0NzE3Niw0NzE3Nyw0NzE3OCw0NzE3OSw0NzE4MCw0NzE4MSw0NzE4Miw0NzE4Myw0NzE4NCw0NzE4Niw0NzE4OCw0NzE4OSw0NzE5MCw0NzE5MSw0NzE5Miw0NzE5Myw0NzE5NCw0NzE5NSw0NzE5OCw0NzE5OSw0NzIwMSw0NzIwMiw0NzIwMyw0NzIwNSw0NzIwNiw0NzIwNyw0NzIwOCw0NzIwOSw0NzIxMCw0NzIxMSw0NzIxNCw0NzIxNiw0NzIxOCw0NzIxOSw0NzIyMCw0NzIyMSw0NzIyMiw0NzIyMyw0NzIyNSw0NzIyNiw0NzIyNyw0NzIyOSw0NzIzMCw0NzIzMSw0NzIzMiw0NzIzMyw0NzIzNCw0NzIzNSw0NzIzNiw0NzIzNyw0NzIzOCw0NzIzOSw0NzI0MCw0NzI0MSw0NzI0Miw0NzI0Myw0NzI0NCw0NzI0Niw0NzI0Nyw0NzI0OCw0NzI0OSw0NzI1MCw0NzI1MSw0NzI1Miw0NzI1Myw0NzI1NCw0NzI1NSw0NzI1Niw0NzI1Nyw0NzI1OCw0NzI1OSw0NzI2MCw0NzI2MSw0NzI2Miw0NzI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI2NCw0NzI2NSw0NzI2Niw0NzI2Nyw0NzI2OCw0NzI2OSw0NzI3MCw0NzI3MSw0NzI3Myw0NzI3NCw0NzI3NSw0NzI3Niw0NzI3Nyw0NzI3OCw0NzI3OSw0NzI4MSw0NzI4Miw0NzI4Myw0NzI4NSw0NzI4Niw0NzI4Nyw0NzI4OSw0NzI5MCw0NzI5MSw0NzI5Miw0NzI5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzI5NCw0NzI5NSw0NzI5OCw0NzMwMCw0NzMwMiw0NzMwMyw0NzMwNCw0NzMwNSw0NzMwNiw0NzMwNyw0NzMwOSw0NzMxMCw0NzMxMSw0NzMxMyw0NzMxNCw0NzMxNSw0NzMxNyw0NzMxOCw0NzMxOSw0NzMyMCw0NzMyMSw0NzMyMiw0NzMyMyw0NzMyNCw0NzMyNiw0NzMyOCw0NzMzMCw0NzMzMSw0NzMzMiw0NzMzMyw0NzMzNCw0NzMzNSw0NzMzOCw0NzMzOSw0NzM0MSw0NzM0Miw0NzM0Myw0NzM0NSw0NzM0Niw0NzM0Nyw0NzM0OCw0NzM0OSw0NzM1MCw0NzM1MSw0NzM1NCw0NzM1Niw0NzM1OCw0NzM1OSw0NzM2MCw0NzM2MSw0NzM2Miw0NzM2Myw0NzM2NSw0NzM2Niw0NzM2Nyw0NzM2OCw0NzM2OSw0NzM3MCw0NzM3MSw0NzM3Miw0NzM3Myw0NzM3NCw0NzM3NSw0NzM3Niw0NzM3Nyw0NzM3OCw0NzM3OSw0NzM4MCw0NzM4MSw0NzM4Miw0NzM4Myw0NzM4NSw0NzM4Niw0NzM4Nyw0NzM4OCw0NzM4OSw0NzM5MCw0NzM5MSw0NzM5Myw0NzM5NCw0NzM5NSw0NzM5Niw0NzM5Nyw0NzM5OCw0NzM5OSw0NzQwMCw0NzQwMSw0NzQwMiw0NzQwMyw0NzQwNCw0NzQwNSw0NzQwNiw0NzQwNyw0NzQwOCw0NzQwOSw0NzQxMCw0NzQxMSw0NzQxMiw0NzQxMyw0NzQxNCw0NzQxNSw0NzQxNiw0NzQxNyw0NzQxOCw0NzQxOSw0NzQyMiw0NzQyMyw0NzQyNSw0NzQyNiw0NzQyNyw0NzQyOSw0NzQzMCw0NzQzMSw0NzQzMiw0NzQzMyw0NzQzNCw0NzQzNSw0NzQzNyw0NzQzOCw0NzQ0MCw0NzQ0Miw0NzQ0Myw0NzQ0NCw0NzQ0NSw0NzQ0Niw0NzQ0Nyw0NzQ1MCw0NzQ1MSw0NzQ1Myw0NzQ1NCw0NzQ1NSw0NzQ1Nyw0NzQ1OCw0NzQ1OSw0NzQ2MCw0NzQ2MSw0NzQ2Miw0NzQ2Myw0NzQ2Niw0NzQ2OCw0NzQ3MCw0NzQ3MSw0NzQ3Miw0NzQ3Myw0NzQ3NCw0NzQ3NSw0NzQ3OCw0NzQ3OSw0NzQ4MSw0NzQ4Miw0NzQ4Myw0NzQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzQ4Niw0NzQ4Nyw0NzQ4OCw0NzQ4OSw0NzQ5MCw0NzQ5MSw0NzQ5NCw0NzQ5Niw0NzQ5OSw0NzUwMCw0NzUwMyw0NzUwNCw0NzUwNSw0NzUwNiw0NzUwNyw0NzUwOCw0NzUwOSw0NzUxMCw0NzUxMSw0NzUxMiw0NzUxMyw0NzUxNCw0NzUxNSw0NzUxNiw0NzUxNyw0NzUxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzUxOSw0NzUyMCw0NzUyMSw0NzUyMiw0NzUyMyw0NzUyNCw0NzUyNSw0NzUyNiw0NzUyNyw0NzUyOCw0NzUyOSw0NzUzMCw0NzUzMSw0NzUzNCw0NzUzNSw0NzUzNyw0NzUzOCw0NzUzOSw0NzU0MSw0NzU0Miw0NzU0Myw0NzU0NCw0NzU0NSw0NzU0Niw0NzU0Nyw0NzU1MCw0NzU1Miw0NzU1NCw0NzU1NSw0NzU1Niw0NzU1Nyw0NzU1OCw0NzU1OSw0NzU2Miw0NzU2Myw0NzU2NSw0NzU3MSw0NzU3Miw0NzU3Myw0NzU3NCw0NzU3NSw0NzU3OCw0NzU4MCw0NzU4Myw0NzU4NCw0NzU4Niw0NzU5MCw0NzU5MSw0NzU5Myw0NzU5NCw0NzU5NSw0NzU5Nyw0NzU5OCw0NzU5OSw0NzYwMCw0NzYwMSw0NzYwMiw0NzYwMyw0NzYwNiw0NzYxMSw0NzYxMiw0NzYxMyw0NzYxNCw0NzYxNSw0NzYxOCw0NzYxOSw0NzYyMCw0NzYyMSw0NzYyMiw0NzYyMyw0NzYyNSw0NzYyNiw0NzYyNyw0NzYyOCw0NzYyOSw0NzYzMCw0NzYzMSw0NzYzMiw0NzYzMyw0NzYzNCw0NzYzNSw0NzYzNiw0NzYzOCw0NzYzOSw0NzY0MCw0NzY0MSw0NzY0Miw0NzY0Myw0NzY0NCw0NzY0NSw0NzY0Niw0NzY0Nyw0NzY0OCw0NzY0OSw0NzY1MCw0NzY1MSw0NzY1Miw0NzY1Myw0NzY1NCw0NzY1NSw0NzY1Niw0NzY1Nyw0NzY1OCw0NzY1OSw0NzY2MCw0NzY2MSw0NzY2Miw0NzY2Myw0NzY2NCw0NzY2NSw0NzY2Niw0NzY2Nyw0NzY2OCw0NzY2OSw0NzY3MCw0NzY3MSw0NzY3NCw0NzY3NSw0NzY3Nyw0NzY3OCw0NzY3OSw0NzY4MSw0NzY4Myw0NzY4NCw0NzY4NSw0NzY4Niw0NzY4Nyw0NzY5MCw0NzY5Miw0NzY5NSw0NzY5Niw0NzY5Nyw0NzY5OCw0NzcwMiw0NzcwMyw0NzcwNSw0NzcwNiw0NzcwNyw0NzcwOSw0NzcxMCw0NzcxMSw0NzcxMiw0NzcxMyw0NzcxNCw0NzcxNSw0NzcxOCw0NzcyMiw0NzcyMyw0NzcyNCw0NzcyNSw0NzcyNiw0NzcyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0NzczMCw0NzczMSw0NzczMyw0NzczNCw0NzczNSw0NzczNyw0NzczOCw0NzczOSw0Nzc0MCw0Nzc0MSw0Nzc0Miw0Nzc0Myw0Nzc0NCw0Nzc0NSw0Nzc0Niw0Nzc1MCw0Nzc1Miw0Nzc1Myw0Nzc1NCw0Nzc1NSw0Nzc1Nyw0Nzc1OCw0Nzc1OSw0Nzc2MCw0Nzc2MSw0Nzc2MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzc2Myw0Nzc2NCw0Nzc2NSw0Nzc2Niw0Nzc2Nyw0Nzc2OCw0Nzc2OSw0Nzc3MCw0Nzc3MSw0Nzc3Miw0Nzc3Myw0Nzc3NCw0Nzc3NSw0Nzc3Niw0Nzc3Nyw0Nzc3OCw0Nzc3OSw0Nzc4MCw0Nzc4MSw0Nzc4Miw0Nzc4Myw0Nzc4Niw0Nzc4OSw0Nzc5MCw0Nzc5MSw0Nzc5Myw0Nzc5NSw0Nzc5Niw0Nzc5Nyw0Nzc5OCw0Nzc5OSw0NzgwMiw0NzgwNCw0NzgwNiw0NzgwNyw0NzgwOCw0NzgwOSw0NzgxMCw0NzgxMSw0NzgxMyw0NzgxNCw0NzgxNSw0NzgxNyw0NzgxOCw0NzgxOSw0NzgyMCw0NzgyMSw0NzgyMiw0NzgyMyw0NzgyNCw0NzgyNSw0NzgyNiw0NzgyNyw0NzgyOCw0NzgyOSw0NzgzMCw0NzgzMSw0NzgzNCw0NzgzNSw0NzgzNiw0NzgzNyw0NzgzOCw0NzgzOSw0Nzg0MCw0Nzg0MSw0Nzg0Miw0Nzg0Myw0Nzg0NCw0Nzg0NSw0Nzg0Niw0Nzg0Nyw0Nzg0OCw0Nzg0OSw0Nzg1MCw0Nzg1MSw0Nzg1Miw0Nzg1Myw0Nzg1NCw0Nzg1NSw0Nzg1Niw0Nzg1Nyw0Nzg1OCw0Nzg1OSw0Nzg2MCw0Nzg2MSw0Nzg2Miw0Nzg2Myw0Nzg2NCw0Nzg2NSw0Nzg2Niw0Nzg2Nyw0Nzg2OSw0Nzg3MCw0Nzg3MSw0Nzg3Myw0Nzg3NCw0Nzg3NSw0Nzg3Nyw0Nzg3OCw0Nzg3OSw0Nzg4MCw0Nzg4MSw0Nzg4Miw0Nzg4Myw0Nzg4NCw0Nzg4Niw0Nzg4OCw0Nzg5MCw0Nzg5MSw0Nzg5Miw0Nzg5Myw0Nzg5NCw0Nzg5NSw0Nzg5Nyw0Nzg5OCw0Nzg5OSw0NzkwMSw0NzkwMiw0NzkwMyw0NzkwNSw0NzkwNiw0NzkwNyw0NzkwOCw0NzkwOSw0NzkxMCw0NzkxMSw0NzkxMiw0NzkxNCw0NzkxNiw0NzkxNyw0NzkxOCw0NzkxOSw0NzkyMCw0NzkyMSw0NzkyMiw0NzkyMyw0NzkyNyw0NzkyOSw0NzkzMCw0NzkzNSw0NzkzNiw0NzkzNyw0NzkzOCw0NzkzOSw0Nzk0Miw0Nzk0NCw0Nzk0Niw0Nzk0Nyw0Nzk0OCw0Nzk1MCw0Nzk1Myw0Nzk1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk1NSw0Nzk1Nyw0Nzk1OCw0Nzk1OSw0Nzk2MSw0Nzk2Miw0Nzk2Myw0Nzk2NCw0Nzk2NSw0Nzk2Niw0Nzk2Nyw0Nzk2OCw0Nzk3MCw0Nzk3Miw0Nzk3Myw0Nzk3NCw0Nzk3NSw0Nzk3Niw0Nzk3Nyw0Nzk3OCw0Nzk3OSw0Nzk4MSw0Nzk4Miw0Nzk4Myw0Nzk4NCw0Nzk4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0Nzk4Niw0Nzk4Nyw0Nzk4OCw0Nzk4OSw0Nzk5MCw0Nzk5MSw0Nzk5Miw0Nzk5Myw0Nzk5NCw0Nzk5NSw0Nzk5Niw0Nzk5Nyw0Nzk5OCw0Nzk5OSw0ODAwMCw0ODAwMSw0ODAwMiw0ODAwMyw0ODAwNCw0ODAwNSw0ODAwNiw0ODAwNyw0ODAwOSw0ODAxMCw0ODAxMSw0ODAxMyw0ODAxNCw0ODAxNSw0ODAxNyw0ODAxOCw0ODAxOSw0ODAyMCw0ODAyMSw0ODAyMiw0ODAyMyw0ODAyNCw0ODAyNSw0ODAyNiw0ODAyNyw0ODAyOCw0ODAyOSw0ODAzMCw0ODAzMSw0ODAzMiw0ODAzMyw0ODAzNCw0ODAzNSw0ODAzNyw0ODAzOCw0ODAzOSw0ODA0MSw0ODA0Miw0ODA0Myw0ODA0NSw0ODA0Niw0ODA0Nyw0ODA0OCw0ODA0OSw0ODA1MCw0ODA1MSw0ODA1Myw0ODA1NCw0ODA1Niw0ODA1Nyw0ODA1OCw0ODA1OSw0ODA2MCw0ODA2MSw0ODA2Miw0ODA2Myw0ODA2NSw0ODA2Niw0ODA2Nyw0ODA2OSw0ODA3MCw0ODA3MSw0ODA3Myw0ODA3NCw0ODA3NSw0ODA3Niw0ODA3Nyw0ODA3OCw0ODA3OSw0ODA4MSw0ODA4Miw0ODA4NCw0ODA4NSw0ODA4Niw0ODA4Nyw0ODA4OCw0ODA4OSw0ODA5MCw0ODA5MSw0ODA5Miw0ODA5Myw0ODA5NCw0ODA5NSw0ODA5Niw0ODA5Nyw0ODA5OCw0ODA5OSw0ODEwMCw0ODEwMSw0ODEwMiw0ODEwMyw0ODEwNCw0ODEwNSw0ODEwNiw0ODEwNyw0ODEwOCw0ODEwOSw0ODExMCw0ODExMSw0ODExMiw0ODExMyw0ODExNCw0ODExNSw0ODExNiw0ODExNyw0ODExOCw0ODExOSw0ODEyMiw0ODEyMyw0ODEyNSw0ODEyNiw0ODEyOSw0ODEzMSw0ODEzMiw0ODEzMyw0ODEzNCw0ODEzNSw0ODEzOCw0ODE0Miw0ODE0NCw0ODE0Niw0ODE0Nyw0ODE1Myw0ODE1NCw0ODE2MCw0ODE2MSw0ODE2Miw0ODE2Myw0ODE2Niw0ODE2OCw0ODE3MCw0ODE3MSw0ODE3Miw0ODE3NCw0ODE3NSw0ODE3OCw0ODE3OSw0ODE4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODE4Miw0ODE4Myw0ODE4NSw0ODE4Niw0ODE4Nyw0ODE4OCw0ODE4OSw0ODE5MCw0ODE5MSw0ODE5NCw0ODE5OCw0ODE5OSw0ODIwMCw0ODIwMiw0ODIwMyw0ODIwNiw0ODIwNyw0ODIwOSw0ODIxMCw0ODIxMSw0ODIxMiw0ODIxMyw0ODIxNCw0ODIxNSw0ODIxNiw0ODIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODIxOCw0ODIxOSw0ODIyMCw0ODIyMiw0ODIyMyw0ODIyNCw0ODIyNSw0ODIyNiw0ODIyNyw0ODIyOCw0ODIyOSw0ODIzMCw0ODIzMSw0ODIzMiw0ODIzMyw0ODIzNCw0ODIzNSw0ODIzNiw0ODIzNyw0ODIzOCw0ODIzOSw0ODI0MCw0ODI0MSw0ODI0Miw0ODI0Myw0ODI0NCw0ODI0NSw0ODI0Niw0ODI0Nyw0ODI0OCw0ODI0OSw0ODI1MCw0ODI1MSw0ODI1Miw0ODI1Myw0ODI1NCw0ODI1NSw0ODI1Niw0ODI1Nyw0ODI1OCw0ODI1OSw0ODI2Miw0ODI2Myw0ODI2NSw0ODI2Niw0ODI2OSw0ODI3MSw0ODI3Miw0ODI3Myw0ODI3NCw0ODI3NSw0ODI3OCw0ODI4MCw0ODI4Myw0ODI4NCw0ODI4NSw0ODI4Niw0ODI4Nyw0ODI5MCw0ODI5MSw0ODI5Myw0ODI5NCw0ODI5Nyw0ODI5OCw0ODI5OSw0ODMwMCw0ODMwMSw0ODMwMiw0ODMwMyw0ODMwNiw0ODMxMCw0ODMxMSw0ODMxMiw0ODMxMyw0ODMxNCw0ODMxNSw0ODMxOCw0ODMxOSw0ODMyMSw0ODMyMiw0ODMyMyw0ODMyNSw0ODMyNiw0ODMyNyw0ODMyOCw0ODMyOSw0ODMzMCw0ODMzMSw0ODMzMiw0ODMzNCw0ODMzOCw0ODMzOSw0ODM0MCw0ODM0Miw0ODM0Myw0ODM0NSw0ODM0Niw0ODM0Nyw0ODM0OSw0ODM1MCw0ODM1MSw0ODM1Miw0ODM1Myw0ODM1NCw0ODM1NSw0ODM1Niw0ODM1Nyw0ODM1OCw0ODM1OSw0ODM2MCw0ODM2MSw0ODM2Miw0ODM2Myw0ODM2NCw0ODM2NSw0ODM2Niw0ODM2Nyw0ODM2OCw0ODM2OSw0ODM3MCw0ODM3MSw0ODM3NSw0ODM3Nyw0ODM3OCw0ODM3OSw0ODM4MSw0ODM4Miw0ODM4Myw0ODM4NCw0ODM4NSw0ODM4Niw0ODM4Nyw0ODM5MCw0ODM5Miw0ODM5NCw0ODM5NSw0ODM5Niw0ODM5Nyw0ODM5OCw0ODM5OSw0ODQwMSw0ODQwMiw0ODQwMyw0ODQwNSw0ODQwNiw0ODQwNyw0ODQwOCw0ODQwOSw0ODQxMCw0ODQxMSw0ODQxMiw0ODQxMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQxNCw0ODQxNSw0ODQxNiw0ODQxNyw0ODQxOCw0ODQxOSw0ODQyMSw0ODQyMiw0ODQyMyw0ODQyNCw0ODQyNSw0ODQyNiw0ODQyNyw0ODQyOSw0ODQzMCw0ODQzMSw0ODQzMiw0ODQzMyw0ODQzNCw0ODQzNSw0ODQzNiw0ODQzNyw0ODQzOCw0ODQzOSw0ODQ0MCw0ODQ0MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODQ0Miw0ODQ0Myw0ODQ0NCw0ODQ0NSw0ODQ0Niw0ODQ0Nyw0ODQ0OSw0ODQ1MCw0ODQ1MSw0ODQ1Miw0ODQ1Myw0ODQ1NCw0ODQ1NSw0ODQ1OCw0ODQ1OSw0ODQ2MSw0ODQ2Miw0ODQ2Myw0ODQ2NSw0ODQ2Niw0ODQ2Nyw0ODQ2OCw0ODQ2OSw0ODQ3MCw0ODQ3MSw0ODQ3NCw0ODQ3NSw0ODQ3Niw0ODQ3Nyw0ODQ3OCw0ODQ3OSw0ODQ4MCw0ODQ4MSw0ODQ4Miw0ODQ4Myw0ODQ4NSw0ODQ4Niw0ODQ4Nyw0ODQ4OSw0ODQ5MCw0ODQ5MSw0ODQ5Miw0ODQ5Myw0ODQ5NCw0ODQ5NSw0ODQ5Niw0ODQ5Nyw0ODQ5OCw0ODQ5OSw0ODUwMCw0ODUwMSw0ODUwMiw0ODUwMyw0ODUwNCw0ODUwNSw0ODUwNiw0ODUwNyw0ODUwOCw0ODUwOSw0ODUxMCw0ODUxMSw0ODUxNCw0ODUxNSw0ODUxNyw0ODUxOCw0ODUyMyw0ODUyNCw0ODUyNSw0ODUyNiw0ODUyNyw0ODUzMCw0ODUzMiw0ODUzNCw0ODUzNSw0ODUzNiw0ODUzOSw0ODU0MSw0ODU0Miw0ODU0Myw0ODU0NCw0ODU0NSw0ODU0Niw0ODU0Nyw0ODU0OSw0ODU1MCw0ODU1MSw0ODU1Miw0ODU1Myw0ODU1NCw0ODU1NSw0ODU1Niw0ODU1Nyw0ODU1OCw0ODU1OSw0ODU2MSw0ODU2Miw0ODU2Myw0ODU2NCw0ODU2NSw0ODU2Niw0ODU2Nyw0ODU2OSw0ODU3MCw0ODU3MSw0ODU3Miw0ODU3Myw0ODU3NCw0ODU3NSw0ODU3Niw0ODU3Nyw0ODU3OCw0ODU3OSw0ODU4MCw0ODU4MSw0ODU4Miw0ODU4Myw0ODU4NCw0ODU4NSw0ODU4Niw0ODU4Nyw0ODU4OCw0ODU4OSw0ODU5MCw0ODU5MSw0ODU5Miw0ODU5Myw0ODU5NCw0ODU5NSw0ODU5OCw0ODU5OSw0ODYwMSw0ODYwMiw0ODYwMyw0ODYwNSw0ODYwNiw0ODYwNyw0ODYwOCw0ODYwOSw0ODYxMCw0ODYxMSw0ODYxMiw0ODYxMyw0ODYxNCw0ODYxNSw0ODYxNiw0ODYxOCw0ODYxOSw0ODYyMCw0ODYyMSw0ODYyMiw0ODYyMyw0ODYyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODYyNiw0ODYyNyw0ODYyOSw0ODYzMCw0ODYzMSw0ODYzMyw0ODYzNCw0ODYzNSw0ODYzNiw0ODYzNyw0ODYzOCw0ODYzOSw0ODY0MSw0ODY0Miw0ODY0NCw0ODY0Niw0ODY0Nyw0ODY0OCw0ODY0OSw0ODY1MCw0ODY1MSw0ODY1NCw0ODY1NSw0ODY1Nyw0ODY1OCw0ODY1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODY2MSw0ODY2Miw0ODY2Myw0ODY2NCw0ODY2NSw0ODY2Niw0ODY2Nyw0ODY3MCw0ODY3Miw0ODY3Myw0ODY3NCw0ODY3NSw0ODY3Niw0ODY3Nyw0ODY3OCw0ODY3OSw0ODY4MCw0ODY4MSw0ODY4Miw0ODY4Myw0ODY4NCw0ODY4NSw0ODY4Niw0ODY4Nyw0ODY4OCw0ODY4OSw0ODY5MCw0ODY5MSw0ODY5Miw0ODY5Myw0ODY5NCw0ODY5NSw0ODY5Niw0ODY5Nyw0ODY5OCw0ODY5OSw0ODcwMCw0ODcwMSw0ODcwMiw0ODcwMyw0ODcwNCw0ODcwNSw0ODcwNiw0ODcwNyw0ODcxMCw0ODcxMSw0ODcxMyw0ODcxNCw0ODcxNSw0ODcxNyw0ODcxOSw0ODcyMCw0ODcyMSw0ODcyMiw0ODcyMyw0ODcyNiw0ODcyOCw0ODczMiw0ODczMyw0ODczNCw0ODczNSw0ODczOCw0ODczOSw0ODc0MSw0ODc0Miw0ODc0Myw0ODc0NSw0ODc0Nyw0ODc0OCw0ODc0OSw0ODc1MCw0ODc1MSw0ODc1NCw0ODc1OCw0ODc1OSw0ODc2MCw0ODc2MSw0ODc2Miw0ODc2Niw0ODc2Nyw0ODc2OSw0ODc3MCw0ODc3MSw0ODc3Myw0ODc3NCw0ODc3NSw0ODc3Niw0ODc3Nyw0ODc3OCw0ODc3OSw0ODc4Miw0ODc4Niw0ODc4Nyw0ODc4OCw0ODc4OSw0ODc5MCw0ODc5MSw0ODc5NCw0ODc5NSw0ODc5Niw0ODc5Nyw0ODc5OCw0ODc5OSw0ODgwMCw0ODgwMSw0ODgwMiw0ODgwMyw0ODgwNCw0ODgwNSw0ODgwNiw0ODgwNyw0ODgwOSw0ODgxMCw0ODgxMSw0ODgxMiw0ODgxMyw0ODgxNCw0ODgxNSw0ODgxNiw0ODgxNyw0ODgxOCw0ODgxOSw0ODgyMCw0ODgyMSw0ODgyMiw0ODgyMyw0ODgyNCw0ODgyNSw0ODgyNiw0ODgyNyw0ODgyOCw0ODgyOSw0ODgzMCw0ODgzMSw0ODgzMiw0ODgzMyw0ODgzNCw0ODgzNSw0ODgzNiw0ODgzNyw0ODgzOCw0ODgzOSw0ODg0MCw0ODg0MSw0ODg0Miw0ODg0Myw0ODg0NCw0ODg0NSw0ODg0Niw0ODg0Nyw0ODg1MCw0ODg1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg1Myw0ODg1NCw0ODg1Nyw0ODg1OCw0ODg1OSw0ODg2MCw0ODg2MSw0ODg2Miw0ODg2Myw0ODg2NSw0ODg2Niw0ODg3MCw0ODg3MSw0ODg3Miw0ODg3Myw0ODg3NCw0ODg3NSw0ODg3Nyw0ODg3OCw0ODg3OSw0ODg4MCw0ODg4MSw0ODg4Miw0ODg4Myw0ODg4NCw0ODg4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0ODg4Niw0ODg4Nyw0ODg4OCw0ODg4OSw0ODg5MCw0ODg5MSw0ODg5Miw0ODg5Myw0ODg5NCw0ODg5NSw0ODg5Niw0ODg5OCw0ODg5OSw0ODkwMCw0ODkwMSw0ODkwMiw0ODkwMyw0ODkwNiw0ODkwNyw0ODkwOCw0ODkwOSw0ODkxMCw0ODkxMSw0ODkxMiw0ODkxMyw0ODkxNCw0ODkxNSw0ODkxNiw0ODkxNyw0ODkxOCw0ODkxOSw0ODkyMiw0ODkyNiw0ODkyNyw0ODkyOCw0ODkyOSw0ODkzMCw0ODkzMSw0ODkzMiw0ODkzMyw0ODkzNCw0ODkzNSw0ODkzNiw0ODkzNyw0ODkzOCw0ODkzOSw0ODk0MCw0ODk0MSw0ODk0Miw0ODk0Myw0ODk0NCw0ODk0NSw0ODk0Niw0ODk0Nyw0ODk0OCw0ODk0OSw0ODk1MCw0ODk1MSw0ODk1Miw0ODk1Myw0ODk1NCw0ODk1NSw0ODk1Niw0ODk1Nyw0ODk1OCw0ODk1OSw0ODk2Miw0ODk2Myw0ODk2NSw0ODk2Niw0ODk2Nyw0ODk2OSw0ODk3MCw0ODk3MSw0ODk3Miw0ODk3Myw0ODk3NCw0ODk3NSw0ODk3OCw0ODk3OSw0ODk4MCw0ODk4Miw0ODk4Myw0ODk4NCw0ODk4NSw0ODk4Niw0ODk4Nyw0ODk4OCw0ODk4OSw0ODk5MCw0ODk5MSw0ODk5Miw0ODk5Myw0ODk5NCw0ODk5NSw0ODk5Niw0ODk5Nyw0ODk5OCw0ODk5OSw0OTAwMCw0OTAwMSw0OTAwMiw0OTAwMyw0OTAwNCw0OTAwNSw0OTAwNiw0OTAwNyw0OTAwOCw0OTAwOSw0OTAxMCw0OTAxMSw0OTAxMiw0OTAxMyw0OTAxNCw0OTAxNSw0OTAxNiw0OTAxNyw0OTAxOCw0OTAxOSw0OTAyMCw0OTAyMSw0OTAyMiw0OTAyMyw0OTAyNCw0OTAyNSw0OTAyNiw0OTAyNyw0OTAyOCw0OTAyOSw0OTAzMCw0OTAzMSw0OTAzMiw0OTAzMyw0OTAzNCw0OTAzNSw0OTAzNiw0OTAzNyw0OTAzOCw0OTAzOSw0OTA0MCw0OTA0MSw0OTA0Miw0OTA0Myw0OTA0NSw0OTA0Niw0OTA0Nyw0OTA0OCw0OTA0OSw0OTA1MCw0OTA1MSw0OTA1Miw0OTA1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTA1NCw0OTA1NSw0OTA1Niw0OTA1Nyw0OTA1OCw0OTA1OSw0OTA2MCw0OTA2MSw0OTA2Miw0OTA2Myw0OTA2NCw0OTA2NSw0OTA2Niw0OTA2Nyw0OTA2OCw0OTA2OSw0OTA3MCw0OTA3MSw0OTA3Myw0OTA3NCw0OTA3NSw0OTA3Niw0OTA3Nyw0OTA3OCw0OTA3OSw0OTA4MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTA4MSw0OTA4Miw0OTA4Myw0OTA4NCw0OTA4NSw0OTA4Niw0OTA4Nyw0OTA4OCw0OTA4OSw0OTA5MCw0OTA5MSw0OTA5Miw0OTA5NCw0OTA5NSw0OTA5Niw0OTA5Nyw0OTA5OCw0OTA5OSw0OTEwMiw0OTEwMyw0OTEwNSw0OTEwNiw0OTEwNyw0OTEwOSw0OTExMCw0OTExMSw0OTExMiw0OTExMyw0OTExNCw0OTExNSw0OTExNyw0OTExOCw0OTEyMCw0OTEyMiw0OTEyMyw0OTEyNCw0OTEyNSw0OTEyNiw0OTEyNyw0OTEyOCw0OTEyOSw0OTEzMCw0OTEzMSw0OTEzMiw0OTEzMyw0OTEzNCw0OTEzNSw0OTEzNiw0OTEzNyw0OTEzOCw0OTEzOSw0OTE0MCw0OTE0MSw0OTE0Miw0OTE0Myw0OTE0NCw0OTE0NSw0OTE0Niw0OTE0Nyw0OTE0OCw0OTE0OSw0OTE1MCw0OTE1MSw0OTE1Miw0OTE1Myw0OTE1NCw0OTE1NSw0OTE1Niw0OTE1Nyw0OTE1OCw0OTE1OSw0OTE2MCw0OTE2MSw0OTE2Miw0OTE2Myw0OTE2NCw0OTE2NSw0OTE2Niw0OTE2Nyw0OTE2OCw0OTE2OSw0OTE3MCw0OTE3MSw0OTE3Miw0OTE3Myw0OTE3NCw0OTE3NSw0OTE3Niw0OTE3Nyw0OTE3OCw0OTE3OSw0OTE4MCw0OTE4MSw0OTE4Miw0OTE4Myw0OTE4NCw0OTE4NSw0OTE4Niw0OTE4Nyw0OTE4OCw0OTE4OSw0OTE5MCw0OTE5MSw0OTE5Miw0OTE5Myw0OTE5NCw0OTE5NSw0OTE5Niw0OTE5Nyw0OTE5OCw0OTE5OSw0OTIwMCw0OTIwMSw0OTIwMiw0OTIwMyw0OTIwNCw0OTIwNSw0OTIwNiw0OTIwNyw0OTIwOCw0OTIwOSw0OTIxMCw0OTIxMSw0OTIxMyw0OTIxNCw0OTIxNSw0OTIxNiw0OTIxNyw0OTIxOCw0OTIxOSw0OTIyMCw0OTIyMSw0OTIyMiw0OTIyMyw0OTIyNCw0OTIyNSw0OTIyNiw0OTIyNyw0OTIyOCw0OTIyOSw0OTIzMCw0OTIzMSw0OTIzMiw0OTIzNCw0OTIzNSw0OTIzNiw0OTIzNyw0OTIzOCw0OTIzOSw0OTI0MSw0OTI0Miw0OTI0MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTI0NSw0OTI0Niw0OTI0Nyw0OTI0OSw0OTI1MCw0OTI1MSw0OTI1Miw0OTI1Myw0OTI1NCw0OTI1NSw0OTI1OCw0OTI1OSw0OTI2MCw0OTI2MSw0OTI2Miw0OTI2Myw0OTI2NCw0OTI2NSw0OTI2Niw0OTI2Nyw0OTI2OCw0OTI2OSw0OTI3MCw0OTI3MSw0OTI3Miw0OTI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTI3NCw0OTI3NSw0OTI3Niw0OTI3Nyw0OTI3OCw0OTI3OSw0OTI4MCw0OTI4MSw0OTI4Miw0OTI4Myw0OTI4NCw0OTI4NSw0OTI4Niw0OTI4Nyw0OTI4OCw0OTI4OSw0OTI5MCw0OTI5MSw0OTI5Miw0OTI5Myw0OTI5NCw0OTI5NSw0OTI5OCw0OTI5OSw0OTMwMSw0OTMwMiw0OTMwMyw0OTMwNSw0OTMwNiw0OTMwNyw0OTMwOCw0OTMwOSw0OTMxMCw0OTMxMSw0OTMxNCw0OTMxNiw0OTMxOCw0OTMxOSw0OTMyMCw0OTMyMSw0OTMyMiw0OTMyMyw0OTMyNiw0OTMyOSw0OTMzMCw0OTMzNSw0OTMzNiw0OTMzNyw0OTMzOCw0OTMzOSw0OTM0Miw0OTM0Niw0OTM0Nyw0OTM0OCw0OTM1MCw0OTM1MSw0OTM1NCw0OTM1NSw0OTM1Nyw0OTM1OCw0OTM1OSw0OTM2MSw0OTM2Miw0OTM2Myw0OTM2NCw0OTM2NSw0OTM2Niw0OTM2Nyw0OTM3MCw0OTM3NCw0OTM3NSw0OTM3Niw0OTM3Nyw0OTM3OCw0OTM3OSw0OTM4Miw0OTM4Myw0OTM4NSw0OTM4Niw0OTM4Nyw0OTM4OSw0OTM5MCw0OTM5MSw0OTM5Miw0OTM5Myw0OTM5NCw0OTM5NSw0OTM5OCw0OTQwMCw0OTQwMiw0OTQwMyw0OTQwNCw0OTQwNSw0OTQwNiw0OTQwNyw0OTQwOSw0OTQxMCw0OTQxMSw0OTQxMyw0OTQxNCw0OTQxNSw0OTQxNyw0OTQxOCw0OTQxOSw0OTQyMCw0OTQyMSw0OTQyMiw0OTQyMyw0OTQyNSw0OTQyNiw0OTQyNyw0OTQyOCw0OTQzMCw0OTQzMSw0OTQzMiw0OTQzMyw0OTQzNCw0OTQzNSw0OTQ0MSw0OTQ0Miw0OTQ0NSw0OTQ0OCw0OTQ0OSw0OTQ1MCw0OTQ1MSw0OTQ1NCw0OTQ1OCw0OTQ1OSw0OTQ2MCw0OTQ2MSw0OTQ2Myw0OTQ2Niw0OTQ2Nyw0OTQ2OSw0OTQ3MCw0OTQ3MSw0OTQ3Myw0OTQ3NCw0OTQ3NSw0OTQ3Niw0OTQ3Nyw0OTQ3OCw0OTQ3OSw0OTQ4Miw0OTQ4Niw0OTQ4Nyw0OTQ4OCw0OTQ4OSw0OTQ5MCw0OTQ5MSw0OTQ5NCw0OTQ5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTQ5Nyw0OTQ5OCw0OTQ5OSw0OTUwMSw0OTUwMiw0OTUwMyw0OTUwNCw0OTUwNSw0OTUwNiw0OTUwNyw0OTUxMCw0OTUxNCw0OTUxNSw0OTUxNiw0OTUxNyw0OTUxOCw0OTUxOSw0OTUyMSw0OTUyMiw0OTUyMyw0OTUyNSw0OTUyNiw0OTUyNyw0OTUyOSw0OTUzMCw0OTUzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTUzMiw0OTUzMyw0OTUzNCw0OTUzNSw0OTUzNiw0OTUzNyw0OTUzOCw0OTUzOSw0OTU0MCw0OTU0Miw0OTU0Myw0OTU0NCw0OTU0NSw0OTU0Niw0OTU0Nyw0OTU1MSw0OTU1Myw0OTU1NCw0OTU1NSw0OTU1Nyw0OTU1OSw0OTU2MCw0OTU2MSw0OTU2Miw0OTU2Myw0OTU2Niw0OTU2OCw0OTU3MCw0OTU3MSw0OTU3Miw0OTU3NCw0OTU3NSw0OTU3OCw0OTU3OSw0OTU4MSw0OTU4Miw0OTU4Myw0OTU4NSw0OTU4Niw0OTU4Nyw0OTU4OCw0OTU4OSw0OTU5MCw0OTU5MSw0OTU5Miw0OTU5Myw0OTU5NCw0OTU5NSw0OTU5Niw0OTU5OCw0OTU5OSw0OTYwMCw0OTYwMSw0OTYwMiw0OTYwMyw0OTYwNSw0OTYwNiw0OTYwNyw0OTYwOSw0OTYxMCw0OTYxMSw0OTYxMyw0OTYxNCw0OTYxNSw0OTYxNiw0OTYxNyw0OTYxOCw0OTYxOSw0OTYyMSw0OTYyMiw0OTYyNSw0OTYyNiw0OTYyNyw0OTYyOCw0OTYyOSw0OTYzMCw0OTYzMSw0OTYzMyw0OTYzNCw0OTYzNSw0OTYzNyw0OTYzOCw0OTYzOSw0OTY0MSw0OTY0Miw0OTY0Myw0OTY0NCw0OTY0NSw0OTY0Niw0OTY0Nyw0OTY1MCw0OTY1Miw0OTY1Myw0OTY1NCw0OTY1NSw0OTY1Niw0OTY1Nyw0OTY1OCw0OTY1OSw0OTY2Miw0OTY2Myw0OTY2NSw0OTY2Niw0OTY2Nyw0OTY2OSw0OTY3MCw0OTY3MSw0OTY3Miw0OTY3Myw0OTY3NCw0OTY3NSw0OTY3OCw0OTY4MCw0OTY4Miw0OTY4Myw0OTY4NCw0OTY4NSw0OTY4Niw0OTY4Nyw0OTY5MCw0OTY5MSw0OTY5Myw0OTY5NCw0OTY5Nyw0OTY5OCw0OTY5OSw0OTcwMCw0OTcwMSw0OTcwMiw0OTcwMyw0OTcwNiw0OTcwOCw0OTcxMCw0OTcxMiw0OTcxNSw0OTcxNyw0OTcxOCw0OTcxOSw0OTcyMCw0OTcyMSw0OTcyMiw0OTcyMyw0OTcyNCw0OTcyNSw0OTcyNiw0OTcyNyw0OTcyOCw0OTcyOSw0OTczMCw0OTczMSw0OTczMiw0OTczMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTczNCw0OTczNSw0OTczNyw0OTczOCw0OTczOSw0OTc0MCw0OTc0MSw0OTc0Miw0OTc0Myw0OTc0Niw0OTc0Nyw0OTc0OSw0OTc1MCw0OTc1MSw0OTc1Myw0OTc1NCw0OTc1NSw0OTc1Niw0OTc1Nyw0OTc1OCw0OTc1OSw0OTc2MSw0OTc2Miw0OTc2Myw0OTc2NCw0OTc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTc2Nyw0OTc2OCw0OTc2OSw0OTc3MCw0OTc3MSw0OTc3NCw0OTc3NSw0OTc3Nyw0OTc3OCw0OTc3OSw0OTc4MSw0OTc4Miw0OTc4Myw0OTc4NCw0OTc4NSw0OTc4Niw0OTc4Nyw0OTc5MCw0OTc5Miw0OTc5NCw0OTc5NSw0OTc5Niw0OTc5Nyw0OTc5OCw0OTc5OSw0OTgwMiw0OTgwMyw0OTgwNCw0OTgwNSw0OTgwNiw0OTgwNyw0OTgwOSw0OTgxMCw0OTgxMSw0OTgxMiw0OTgxMyw0OTgxNCw0OTgxNSw0OTgxNyw0OTgxOCw0OTgyMCw0OTgyMiw0OTgyMyw0OTgyNCw0OTgyNSw0OTgyNiw0OTgyNyw0OTgzMCw0OTgzMSw0OTgzMyw0OTgzNCw0OTgzNSw0OTgzOCw0OTgzOSw0OTg0MCw0OTg0MSw0OTg0Miw0OTg0Myw0OTg0Niw0OTg0OCw0OTg1MCw0OTg1MSw0OTg1Miw0OTg1Myw0OTg1NCw0OTg1NSw0OTg1Niw0OTg1Nyw0OTg1OCw0OTg1OSw0OTg2MCw0OTg2MSw0OTg2Miw0OTg2Myw0OTg2NCw0OTg2NSw0OTg2Niw0OTg2Nyw0OTg2OCw0OTg2OSw0OTg3MCw0OTg3MSw0OTg3Miw0OTg3Myw0OTg3NCw0OTg3NSw0OTg3Niw0OTg3Nyw0OTg3OCw0OTg3OSw0OTg4MCw0OTg4MSw0OTg4Miw0OTg4Myw0OTg4Niw0OTg4Nyw0OTg4OSw0OTg5MCw0OTg5Myw0OTg5NCw0OTg5NSw0OTg5Niw0OTg5Nyw0OTg5OCw0OTkwMiw0OTkwNCw0OTkwNiw0OTkwNyw0OTkwOCw0OTkwOSw0OTkxMSw0OTkxNCw0OTkxNyw0OTkxOCw0OTkxOSw0OTkyMSw0OTkyMiw0OTkyMyw0OTkyNCw0OTkyNSw0OTkyNiw0OTkyNyw0OTkzMCw0OTkzMSw0OTkzNCw0OTkzNSw0OTkzNiw0OTkzNyw0OTkzOCw0OTk0Miw0OTk0Myw0OTk0NSw0OTk0Niw0OTk0Nyw0OTk0OSw0OTk1MCw0OTk1MSw0OTk1Miw0OTk1Myw0OTk1NCw0OTk1NSw0OTk1OCw0OTk1OSw0OTk2Miw0OTk2Myw0OTk2NCw0OTk2NSw0OTk2Niw0OTk2Nyw0OTk2OCw0OTk2OSw0OTk3MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTk3MSw0OTk3Miw0OTk3Myw0OTk3NCw0OTk3NSw0OTk3Niw0OTk3Nyw0OTk3OCw0OTk3OSw0OTk4MCw0OTk4MSw0OTk4Miw0OTk4Myw0OTk4NCw0OTk4NSw0OTk4Niw0OTk4Nyw0OTk4OCw0OTk5MCw0OTk5MSw0OTk5Miw0OTk5Myw0OTk5NCw0OTk5NSw0OTk5Niw0OTk5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw0OTk5OCw0OTk5OSw1MDAwMCw1MDAwMSw1MDAwMiw1MDAwMyw1MDAwNCw1MDAwNSw1MDAwNiw1MDAwNyw1MDAwOCw1MDAwOSw1MDAxMCw1MDAxMSw1MDAxMiw1MDAxMyw1MDAxNCw1MDAxNSw1MDAxNiw1MDAxNyw1MDAxOCw1MDAxOSw1MDAyMCw1MDAyMSw1MDAyMiw1MDAyMyw1MDAyNiw1MDAyNyw1MDAyOSw1MDAzMCw1MDAzMSw1MDAzMyw1MDAzNSw1MDAzNiw1MDAzNyw1MDAzOCw1MDAzOSw1MDA0Miw1MDA0Myw1MDA0Niw1MDA0Nyw1MDA0OCw1MDA0OSw1MDA1MCw1MDA1MSw1MDA1Myw1MDA1NCw1MDA1NSw1MDA1Nyw1MDA1OCw1MDA1OSw1MDA2MSw1MDA2Miw1MDA2Myw1MDA2NCw1MDA2NSw1MDA2Niw1MDA2Nyw1MDA2OCw1MDA2OSw1MDA3MCw1MDA3MSw1MDA3Miw1MDA3Myw1MDA3NCw1MDA3NSw1MDA3Niw1MDA3Nyw1MDA3OCw1MDA3OSw1MDA4MCw1MDA4MSw1MDA4Miw1MDA4Myw1MDA4NCw1MDA4NSw1MDA4Niw1MDA4Nyw1MDA4OCw1MDA4OSw1MDA5MCw1MDA5MSw1MDA5Miw1MDA5Myw1MDA5NCw1MDA5NSw1MDA5Niw1MDA5Nyw1MDA5OCw1MDA5OSw1MDEwMCw1MDEwMSw1MDEwMiw1MDEwMyw1MDEwNCw1MDEwNSw1MDEwNiw1MDEwNyw1MDEwOCw1MDEwOSw1MDExMCw1MDExMSw1MDExMyw1MDExNCw1MDExNSw1MDExNiw1MDExNyw1MDExOCw1MDExOSw1MDEyMCw1MDEyMSw1MDEyMiw1MDEyMyw1MDEyNCw1MDEyNSw1MDEyNiw1MDEyNyw1MDEyOCw1MDEyOSw1MDEzMCw1MDEzMSw1MDEzMiw1MDEzMyw1MDEzNCw1MDEzNSw1MDEzOCw1MDEzOSw1MDE0MSw1MDE0Miw1MDE0NSw1MDE0Nyw1MDE0OCw1MDE0OSw1MDE1MCw1MDE1MSw1MDE1NCw1MDE1NSw1MDE1Niw1MDE1OCw1MDE1OSw1MDE2MCw1MDE2MSw1MDE2Miw1MDE2Myw1MDE2Niw1MDE2Nyw1MDE2OSw1MDE3MCw1MDE3MSw1MDE3Miw1MDE3Myw1MDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDE3NSw1MDE3Niw1MDE3Nyw1MDE3OCw1MDE3OSw1MDE4MCw1MDE4MSw1MDE4Miw1MDE4Myw1MDE4NSw1MDE4Niw1MDE4Nyw1MDE4OCw1MDE4OSw1MDE5MCw1MDE5MSw1MDE5Myw1MDE5NCw1MDE5NSw1MDE5Niw1MDE5Nyw1MDE5OCw1MDE5OSw1MDIwMCw1MDIwMSw1MDIwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDIwMyw1MDIwNCw1MDIwNSw1MDIwNiw1MDIwNyw1MDIwOCw1MDIwOSw1MDIxMCw1MDIxMSw1MDIxMyw1MDIxNCw1MDIxNSw1MDIxNiw1MDIxNyw1MDIxOCw1MDIxOSw1MDIyMSw1MDIyMiw1MDIyMyw1MDIyNSw1MDIyNiw1MDIyNyw1MDIyOSw1MDIzMCw1MDIzMSw1MDIzMiw1MDIzMyw1MDIzNCw1MDIzNSw1MDIzOCw1MDIzOSw1MDI0MCw1MDI0MSw1MDI0Miw1MDI0Myw1MDI0NCw1MDI0NSw1MDI0Niw1MDI0Nyw1MDI0OSw1MDI1MCw1MDI1MSw1MDI1Miw1MDI1Myw1MDI1NCw1MDI1NSw1MDI1Niw1MDI1Nyw1MDI1OCw1MDI1OSw1MDI2MCw1MDI2MSw1MDI2Miw1MDI2Myw1MDI2NCw1MDI2NSw1MDI2Niw1MDI2Nyw1MDI2OCw1MDI2OSw1MDI3MCw1MDI3MSw1MDI3Miw1MDI3Myw1MDI3NCw1MDI3NSw1MDI3OCw1MDI3OSw1MDI4MSw1MDI4Miw1MDI4Myw1MDI4NSw1MDI4Niw1MDI4Nyw1MDI4OCw1MDI4OSw1MDI5MCw1MDI5MSw1MDI5NCw1MDI5NSw1MDI5Niw1MDI5OCw1MDI5OSw1MDMwMCw1MDMwMSw1MDMwMiw1MDMwMyw1MDMwNSw1MDMwNiw1MDMwNyw1MDMwOCw1MDMwOSw1MDMxMCw1MDMxMSw1MDMxMiw1MDMxMyw1MDMxNCw1MDMxNSw1MDMxNiw1MDMxNyw1MDMxOCw1MDMxOSw1MDMyMCw1MDMyMSw1MDMyMiw1MDMyMyw1MDMyNSw1MDMyNiw1MDMyNyw1MDMyOCw1MDMyOSw1MDMzMCw1MDMzMSw1MDMzMyw1MDMzNCw1MDMzNSw1MDMzNiw1MDMzNyw1MDMzOCw1MDMzOSw1MDM0MCw1MDM0MSw1MDM0Miw1MDM0Myw1MDM0NCw1MDM0NSw1MDM0Niw1MDM0Nyw1MDM0OCw1MDM0OSw1MDM1MCw1MDM1MSw1MDM1Miw1MDM1Myw1MDM1NCw1MDM1NSw1MDM1Niw1MDM1Nyw1MDM1OCw1MDM1OSw1MDM2MSw1MDM2Miw1MDM2Myw1MDM2NSw1MDM2Niw1MDM2Nyw1MDM2OCw1MDM2OSw1MDM3MCw1MDM3MSw1MDM3Miw1MDM3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDM3NCw1MDM3NSw1MDM3Niw1MDM3Nyw1MDM3OCw1MDM3OSw1MDM4MCw1MDM4MSw1MDM4Miw1MDM4Myw1MDM4NCw1MDM4NSw1MDM4Niw1MDM4Nyw1MDM4OCw1MDM4OSw1MDM5MCw1MDM5MSw1MDM5Miw1MDM5Myw1MDM5NCw1MDM5NSw1MDM5Niw1MDM5Nyw1MDM5OCw1MDM5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDQwMCw1MDQwMSw1MDQwMiw1MDQwMyw1MDQwNCw1MDQwNSw1MDQwNiw1MDQwNyw1MDQwOCw1MDQxMCw1MDQxMSw1MDQxMiw1MDQxMyw1MDQxNCw1MDQxNSw1MDQxOCw1MDQxOSw1MDQyMSw1MDQyMiw1MDQyMyw1MDQyNSw1MDQyNyw1MDQyOCw1MDQyOSw1MDQzMCw1MDQzNCw1MDQzNSw1MDQzNiw1MDQzNyw1MDQzOCw1MDQzOSw1MDQ0MCw1MDQ0MSw1MDQ0Miw1MDQ0Myw1MDQ0NSw1MDQ0Niw1MDQ0Nyw1MDQ0OSw1MDQ1MCw1MDQ1MSw1MDQ1Myw1MDQ1NCw1MDQ1NSw1MDQ1Niw1MDQ1Nyw1MDQ1OCw1MDQ1OSw1MDQ2MSw1MDQ2Miw1MDQ2Myw1MDQ2NCw1MDQ2NSw1MDQ2Niw1MDQ2Nyw1MDQ2OCw1MDQ2OSw1MDQ3MCw1MDQ3MSw1MDQ3NCw1MDQ3NSw1MDQ3Nyw1MDQ3OCw1MDQ3OSw1MDQ4MSw1MDQ4Miw1MDQ4Myw1MDQ4NCw1MDQ4NSw1MDQ4Niw1MDQ4Nyw1MDQ5MCw1MDQ5Miw1MDQ5NCw1MDQ5NSw1MDQ5Niw1MDQ5Nyw1MDQ5OCw1MDQ5OSw1MDUwMiw1MDUwMyw1MDUwNyw1MDUxMSw1MDUxMiw1MDUxMyw1MDUxNCw1MDUxOCw1MDUyMiw1MDUyMyw1MDUyNCw1MDUyNyw1MDUzMCw1MDUzMSw1MDUzMyw1MDUzNCw1MDUzNSw1MDUzNyw1MDUzOCw1MDUzOSw1MDU0MCw1MDU0MSw1MDU0Miw1MDU0Myw1MDU0Niw1MDU1MCw1MDU1MSw1MDU1Miw1MDU1Myw1MDU1NCw1MDU1NSw1MDU1OCw1MDU1OSw1MDU2MSw1MDU2Miw1MDU2Myw1MDU2NSw1MDU2Niw1MDU2OCw1MDU2OSw1MDU3MCw1MDU3MSw1MDU3NCw1MDU3Niw1MDU3OCw1MDU3OSw1MDU4MCw1MDU4Miw1MDU4NSw1MDU4Niw1MDU4Nyw1MDU4OSw1MDU5MCw1MDU5MSw1MDU5Myw1MDU5NCw1MDU5NSw1MDU5Niw1MDU5Nyw1MDU5OCw1MDU5OSw1MDYwMCw1MDYwMiw1MDYwMyw1MDYwNCw1MDYwNSw1MDYwNiw1MDYwNyw1MDYwOCw1MDYwOSw1MDYxMCw1MDYxMSw1MDYxNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDYxNSw1MDYxOCw1MDYyMyw1MDYyNCw1MDYyNSw1MDYyNiw1MDYyNyw1MDYzNSw1MDYzNyw1MDYzOSw1MDY0Miw1MDY0Myw1MDY0NSw1MDY0Niw1MDY0Nyw1MDY0OSw1MDY1MCw1MDY1MSw1MDY1Miw1MDY1Myw1MDY1NCw1MDY1NSw1MDY1OCw1MDY2MCw1MDY2Miw1MDY2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDY2NCw1MDY2NSw1MDY2Niw1MDY2Nyw1MDY3MSw1MDY3Myw1MDY3NCw1MDY3NSw1MDY3Nyw1MDY4MCw1MDY4MSw1MDY4Miw1MDY4Myw1MDY5MCw1MDY5MSw1MDY5Miw1MDY5Nyw1MDY5OCw1MDY5OSw1MDcwMSw1MDcwMiw1MDcwMyw1MDcwNSw1MDcwNiw1MDcwNyw1MDcwOCw1MDcwOSw1MDcxMCw1MDcxMSw1MDcxNCw1MDcxNyw1MDcxOCw1MDcxOSw1MDcyMCw1MDcyMSw1MDcyMiw1MDcyMyw1MDcyNiw1MDcyNyw1MDcyOSw1MDczMCw1MDczMSw1MDczNSw1MDczNyw1MDczOCw1MDc0Miw1MDc0NCw1MDc0Niw1MDc0OCw1MDc0OSw1MDc1MCw1MDc1MSw1MDc1NCw1MDc1NSw1MDc1Nyw1MDc1OCw1MDc1OSw1MDc2MSw1MDc2Miw1MDc2Myw1MDc2NCw1MDc2NSw1MDc2Niw1MDc2Nyw1MDc3MCw1MDc3NCw1MDc3NSw1MDc3Niw1MDc3Nyw1MDc3OCw1MDc3OSw1MDc4Miw1MDc4Myw1MDc4NSw1MDc4Niw1MDc4Nyw1MDc4OCw1MDc4OSw1MDc5MCw1MDc5MSw1MDc5Miw1MDc5Myw1MDc5NCw1MDc5NSw1MDc5Nyw1MDc5OCw1MDgwMCw1MDgwMiw1MDgwMyw1MDgwNCw1MDgwNSw1MDgwNiw1MDgwNyw1MDgxMCw1MDgxMSw1MDgxMyw1MDgxNCw1MDgxNSw1MDgxNyw1MDgxOCw1MDgxOSw1MDgyMCw1MDgyMSw1MDgyMiw1MDgyMyw1MDgyNiw1MDgyOCw1MDgzMCw1MDgzMSw1MDgzMiw1MDgzMyw1MDgzNCw1MDgzNSw1MDgzOCw1MDgzOSw1MDg0MSw1MDg0Miw1MDg0Myw1MDg0NSw1MDg0Niw1MDg0Nyw1MDg0OCw1MDg0OSw1MDg1MCw1MDg1MSw1MDg1NCw1MDg1Niw1MDg1OCw1MDg1OSw1MDg2MCw1MDg2MSw1MDg2Miw1MDg2Myw1MDg2Niw1MDg2Nyw1MDg2OSw1MDg3MCw1MDg3MSw1MDg3NSw1MDg3Niw1MDg3Nyw1MDg3OCw1MDg3OSw1MDg4Miw1MDg4NCw1MDg4Niw1MDg4Nyw1MDg4OCw1MDg4OSw1MDg5MCw1MDg5MSw1MDg5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDg5NSw1MDg5Nyw1MDg5OCw1MDg5OSw1MDkwMSw1MDkwMiw1MDkwMyw1MDkwNCw1MDkwNSw1MDkwNiw1MDkwNyw1MDkxMCw1MDkxMSw1MDkxNCw1MDkxNSw1MDkxNiw1MDkxNyw1MDkxOCw1MDkxOSw1MDkyMiw1MDkyMyw1MDkyNSw1MDkyNiw1MDkyNyw1MDkyOSw1MDkzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MDkzMSw1MDkzMiw1MDkzMyw1MDkzNCw1MDkzNSw1MDkzOCw1MDkzOSw1MDk0MCw1MDk0Miw1MDk0Myw1MDk0NCw1MDk0NSw1MDk0Niw1MDk0Nyw1MDk1MCw1MDk1MSw1MDk1Myw1MDk1NCw1MDk1NSw1MDk1Nyw1MDk1OCw1MDk1OSw1MDk2MCw1MDk2MSw1MDk2Miw1MDk2Myw1MDk2Niw1MDk2OCw1MDk3MCw1MDk3MSw1MDk3Miw1MDk3Myw1MDk3NCw1MDk3NSw1MDk3OCw1MDk3OSw1MDk4MSw1MDk4Miw1MDk4Myw1MDk4NSw1MDk4Niw1MDk4Nyw1MDk4OCw1MDk4OSw1MDk5MCw1MDk5MSw1MDk5NCw1MDk5Niw1MDk5OCw1MTAwMCw1MTAwMSw1MTAwMiw1MTAwMyw1MTAwNiw1MTAwNyw1MTAwOSw1MTAxMCw1MTAxMSw1MTAxMyw1MTAxNCw1MTAxNSw1MTAxNiw1MTAxNyw1MTAxOSw1MTAyMiw1MTAyNCw1MTAzMyw1MTAzNCw1MTAzNSw1MTAzNyw1MTAzOCw1MTAzOSw1MTA0MSw1MTA0Miw1MTA0Myw1MTA0NCw1MTA0NSw1MTA0Niw1MTA0Nyw1MTA0OSw1MTA1MCw1MTA1Miw1MTA1Myw1MTA1NCw1MTA1NSw1MTA1Niw1MTA1Nyw1MTA1OCw1MTA1OSw1MTA2Miw1MTA2Myw1MTA2NSw1MTA2Niw1MTA2Nyw1MTA3MSw1MTA3Miw1MTA3Myw1MTA3NCw1MTA3OCw1MTA4Myw1MTA4NCw1MTA4NSw1MTA4Nyw1MTA5MCw1MTA5MSw1MTA5Myw1MTA5Nyw1MTA5OSw1MTEwMCw1MTEwMSw1MTEwMiw1MTEwMyw1MTEwNiw1MTExMSw1MTExMiw1MTExMyw1MTExNCw1MTExNSw1MTExOCw1MTExOSw1MTEyMSw1MTEyMiw1MTEyMyw1MTEyNSw1MTEyNiw1MTEyNyw1MTEyOCw1MTEyOSw1MTEzMCw1MTEzMSw1MTEzNCw1MTEzOCw1MTEzOSw1MTE0MCw1MTE0MSw1MTE0Miw1MTE0Myw1MTE0Niw1MTE0Nyw1MTE0OSw1MTE1MSw1MTE1Myw1MTE1NCw1MTE1NSw1MTE1Niw1MTE1Nyw1MTE1OCw1MTE1OSw1MTE2MSw1MTE2Miw1MTE2Myw1MTE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTE2Niw1MTE2Nyw1MTE2OCw1MTE2OSw1MTE3MCw1MTE3MSw1MTE3Myw1MTE3NCw1MTE3NSw1MTE3Nyw1MTE3OCw1MTE3OSw1MTE4MSw1MTE4Miw1MTE4Myw1MTE4NCw1MTE4NSw1MTE4Niw1MTE4Nyw1MTE4OCw1MTE4OSw1MTE5MCw1MTE5MSw1MTE5Miw1MTE5Myw1MTE5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTE5NSw1MTE5Niw1MTE5Nyw1MTE5OCw1MTE5OSw1MTIwMiw1MTIwMyw1MTIwNSw1MTIwNiw1MTIwNyw1MTIwOSw1MTIxMSw1MTIxMiw1MTIxMyw1MTIxNCw1MTIxNSw1MTIxOCw1MTIyMCw1MTIyMyw1MTIyNCw1MTIyNSw1MTIyNiw1MTIyNyw1MTIzMCw1MTIzMSw1MTIzMyw1MTIzNCw1MTIzNSw1MTIzNyw1MTIzOCw1MTIzOSw1MTI0MCw1MTI0MSw1MTI0Miw1MTI0Myw1MTI0Niw1MTI0OCw1MTI1MCw1MTI1MSw1MTI1Miw1MTI1Myw1MTI1NCw1MTI1NSw1MTI1Nyw1MTI1OCw1MTI1OSw1MTI2MSw1MTI2Miw1MTI2Myw1MTI2NSw1MTI2Niw1MTI2Nyw1MTI2OCw1MTI2OSw1MTI3MCw1MTI3MSw1MTI3NCw1MTI3NSw1MTI3OCw1MTI3OSw1MTI4MCw1MTI4MSw1MTI4Miw1MTI4Myw1MTI4NSw1MTI4Niw1MTI4Nyw1MTI4OCw1MTI4OSw1MTI5MCw1MTI5MSw1MTI5Miw1MTI5Myw1MTI5NCw1MTI5NSw1MTI5Niw1MTI5Nyw1MTI5OCw1MTI5OSw1MTMwMCw1MTMwMSw1MTMwMiw1MTMwMyw1MTMwNCw1MTMwNSw1MTMwNiw1MTMwNyw1MTMwOCw1MTMwOSw1MTMxMCw1MTMxMSw1MTMxNCw1MTMxNSw1MTMxNyw1MTMxOCw1MTMxOSw1MTMyMSw1MTMyMyw1MTMyNCw1MTMyNSw1MTMyNiw1MTMyNyw1MTMzMCw1MTMzMiw1MTMzNiw1MTMzNyw1MTMzOCw1MTM0Miw1MTM0Myw1MTM0NCw1MTM0NSw1MTM0Niw1MTM0Nyw1MTM0OSw1MTM1MCw1MTM1MSw1MTM1Miw1MTM1Myw1MTM1NCw1MTM1NSw1MTM1Niw1MTM1OCw1MTM2MCw1MTM2Miw1MTM2Myw1MTM2NCw1MTM2NSw1MTM2Niw1MTM2Nyw1MTM2OSw1MTM3MCw1MTM3MSw1MTM3Miw1MTM3Myw1MTM3NCw1MTM3NSw1MTM3Niw1MTM3Nyw1MTM3OCw1MTM3OSw1MTM4MCw1MTM4MSw1MTM4Miw1MTM4Myw1MTM4NCw1MTM4NSw1MTM4Niw1MTM4Nyw1MTM5MCw1MTM5MSw1MTM5Miw1MTM5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTM5NCw1MTM5NSw1MTM5Nyw1MTM5OCw1MTM5OSw1MTQwMSw1MTQwMiw1MTQwMyw1MTQwNSw1MTQwNiw1MTQwNyw1MTQwOCw1MTQwOSw1MTQxMCw1MTQxMSw1MTQxNCw1MTQxNiw1MTQxOCw1MTQxOSw1MTQyMCw1MTQyMSw1MTQyMiw1MTQyMyw1MTQyNiw1MTQyNyw1MTQyOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTQzMCw1MTQzMSw1MTQzMiw1MTQzMyw1MTQzNCw1MTQzNSw1MTQzNiw1MTQzNyw1MTQzOCw1MTQzOSw1MTQ0MCw1MTQ0MSw1MTQ0Miw1MTQ0Myw1MTQ0NCw1MTQ0Niw1MTQ0Nyw1MTQ0OCw1MTQ0OSw1MTQ1MCw1MTQ1MSw1MTQ1NCw1MTQ1NSw1MTQ1Nyw1MTQ1OCw1MTQ1OSw1MTQ2Myw1MTQ2NCw1MTQ2NSw1MTQ2Niw1MTQ2Nyw1MTQ3MCwxMjI4OCwxMjI4OSwxMjI5MCwxODMsODIyOSw4MjMwLDE2OCwxMjI5MSwxNzMsODIxMyw4NzQxLDY1MzQwLDg3NjQsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4ODAwLDg4MDQsODgwNSw4NzM0LDg3NTYsMTc2LDgyNDIsODI0Myw4NDUxLDg0OTEsNjU1MDQsNjU1MDUsNjU1MDksOTc5NCw5NzkyLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsMTY3LDgyNTEsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4NTk0LDg1OTIsODU5Myw4NTk1LDg1OTYsMTIzMDcsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSw4NzQzLDg3NDQsNjU1MDYsNTE0NzIsNTE0NzQsNTE0NzUsNTE0NzYsNTE0NzcsNTE0NzgsNTE0NzksNTE0ODEsNTE0ODIsNTE0ODMsNTE0ODQsNTE0ODUsNTE0ODYsNTE0ODcsNTE0ODgsNTE0ODksNTE0OTAsNTE0OTEsNTE0OTIsNTE0OTMsNTE0OTQsNTE0OTUsNTE0OTYsNTE0OTcsNTE0OTgsNTE0OTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1MDEsNTE1MDIsNTE1MDMsNTE1MDQsNTE1MDUsNTE1MDYsNTE1MDcsNTE1MDksNTE1MTAsNTE1MTEsNTE1MTIsNTE1MTMsNTE1MTQsNTE1MTUsNTE1MTYsNTE1MTcsNTE1MTgsNTE1MTksNTE1MjAsNTE1MjEsNTE1MjIsNTE1MjMsNTE1MjQsNTE1MjUsNTE1MjYsNTE1MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1MjgsNTE1MjksNTE1MzAsNTE1MzEsNTE1MzIsNTE1MzMsNTE1MzQsNTE1MzUsNTE1MzgsNTE1MzksNTE1NDEsNTE1NDIsNTE1NDMsNTE1NDUsNTE1NDYsNTE1NDcsNTE1NDgsNTE1NDksNTE1NTAsNTE1NTEsNTE1NTQsNTE1NTYsNTE1NTcsNTE1NTgsNTE1NTksNTE1NjAsNTE1NjEsNTE1NjIsNTE1NjMsNTE1NjUsNTE1NjYsNTE1NjcsODY1OCw4NjYwLDg3MDQsODcwNywxODAsNjUzNzQsNzExLDcyOCw3MzMsNzMwLDcyOSwxODQsNzMxLDE2MSwxOTEsNzIwLDg3NTAsODcyMSw4NzE5LDE2NCw4NDU3LDgyNDAsOTY2NSw5NjY0LDk2NTUsOTY1NCw5ODI4LDk4MjQsOTgyNSw5ODI5LDk4MzEsOTgyNyw4ODU3LDk2NzIsOTYzNSw5NjgwLDk2ODEsOTYxOCw5NjM2LDk2MzcsOTY0MCw5NjM5LDk2MzgsOTY0MSw5ODMyLDk3NDMsOTc0Miw5NzU2LDk3NTgsMTgyLDgyMjQsODIyNSw4NTk3LDg1OTksODYwMSw4NTk4LDg2MDAsOTgzNyw5ODMzLDk4MzQsOTgzNiwxMjkyNywxMjgyOCw4NDcwLDEzMjU1LDg0ODIsMTMyNTAsMTMyNzIsODQ4MSw4MzY0LDE3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE1NjksNTE1NzAsNTE1NzEsNTE1NzMsNTE1NzQsNTE1NzUsNTE1NzYsNTE1NzcsNTE1NzgsNTE1NzksNTE1ODEsNTE1ODIsNTE1ODMsNTE1ODQsNTE1ODUsNTE1ODYsNTE1ODcsNTE1ODgsNTE1ODksNTE1OTAsNTE1OTEsNTE1OTQsNTE1OTUsNTE1OTcsNTE1OTgsNTE1OTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE2MDEsNTE2MDIsNTE2MDMsNTE2MDQsNTE2MDUsNTE2MDYsNTE2MDcsNTE2MTAsNTE2MTIsNTE2MTQsNTE2MTUsNTE2MTYsNTE2MTcsNTE2MTgsNTE2MTksNTE2MjAsNTE2MjEsNTE2MjIsNTE2MjMsNTE2MjQsNTE2MjUsNTE2MjYsNTE2MjcsNTE2MjgsNTE2MjksNTE2MzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE2MzEsNTE2MzIsNTE2MzMsNTE2MzQsNTE2MzUsNTE2MzYsNTE2MzcsNTE2MzgsNTE2MzksNTE2NDAsNTE2NDEsNTE2NDIsNTE2NDMsNTE2NDQsNTE2NDUsNTE2NDYsNTE2NDcsNTE2NTAsNTE2NTEsNTE2NTMsNTE2NTQsNTE2NTcsNTE2NTksNTE2NjAsNTE2NjEsNTE2NjIsNTE2NjMsNTE2NjYsNTE2NjgsNTE2NzEsNTE2NzIsNTE2NzUsNjUyODEsNjUyODIsNjUyODMsNjUyODQsNjUyODUsNjUyODYsNjUyODcsNjUyODgsNjUyODksNjUyOTAsNjUyOTEsNjUyOTIsNjUyOTMsNjUyOTQsNjUyOTUsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsNjUzMDYsNjUzMDcsNjUzMDgsNjUzMDksNjUzMTAsNjUzMTEsNjUzMTIsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzMzksNjU1MTAsNjUzNDEsNjUzNDIsNjUzNDMsNjUzNDQsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsNjUzNzEsNjUzNzIsNjUzNzMsNjU1MDcsNTE2NzgsNTE2NzksNTE2ODEsNTE2ODMsNTE2ODUsNTE2ODYsNTE2ODgsNTE2ODksNTE2OTAsNTE2OTEsNTE2OTQsNTE2OTgsNTE2OTksNTE3MDAsNTE3MDEsNTE3MDIsNTE3MDMsNTE3MDYsNTE3MDcsNTE3MDksNTE3MTAsNTE3MTEsNTE3MTMsNTE3MTQsNTE3MTUsNTE3MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE3MTcsNTE3MTgsNTE3MTksNTE3MjIsNTE3MjYsNTE3MjcsNTE3MjgsNTE3MjksNTE3MzAsNTE3MzEsNTE3MzMsNTE3MzQsNTE3MzUsNTE3MzcsNTE3MzgsNTE3MzksNTE3NDAsNTE3NDEsNTE3NDIsNTE3NDMsNTE3NDQsNTE3NDUsNTE3NDYsNTE3NDcsNTE3NDgsNTE3NDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE3NTAsNTE3NTEsNTE3NTIsNTE3NTQsNTE3NTUsNTE3NTYsNTE3NTcsNTE3NTgsNTE3NTksNTE3NjAsNTE3NjEsNTE3NjIsNTE3NjMsNTE3NjQsNTE3NjUsNTE3NjYsNTE3NjcsNTE3NjgsNTE3NjksNTE3NzAsNTE3NzEsNTE3NzIsNTE3NzMsNTE3NzQsNTE3NzUsNTE3NzYsNTE3NzcsNTE3NzgsNTE3NzksNTE3ODAsNTE3ODEsNTE3ODIsMTI1OTMsMTI1OTQsMTI1OTUsMTI1OTYsMTI1OTcsMTI1OTgsMTI1OTksMTI2MDAsMTI2MDEsMTI2MDIsMTI2MDMsMTI2MDQsMTI2MDUsMTI2MDYsMTI2MDcsMTI2MDgsMTI2MDksMTI2MTAsMTI2MTEsMTI2MTIsMTI2MTMsMTI2MTQsMTI2MTUsMTI2MTYsMTI2MTcsMTI2MTgsMTI2MTksMTI2MjAsMTI2MjEsMTI2MjIsMTI2MjMsMTI2MjQsMTI2MjUsMTI2MjYsMTI2MjcsMTI2MjgsMTI2MjksMTI2MzAsMTI2MzEsMTI2MzIsMTI2MzMsMTI2MzQsMTI2MzUsMTI2MzYsMTI2MzcsMTI2MzgsMTI2MzksMTI2NDAsMTI2NDEsMTI2NDIsMTI2NDMsMTI2NDQsMTI2NDUsMTI2NDYsMTI2NDcsMTI2NDgsMTI2NDksMTI2NTAsMTI2NTEsMTI2NTIsMTI2NTMsMTI2NTQsMTI2NTUsMTI2NTYsMTI2NTcsMTI2NTgsMTI2NTksMTI2NjAsMTI2NjEsMTI2NjIsMTI2NjMsMTI2NjQsMTI2NjUsMTI2NjYsMTI2NjcsMTI2NjgsMTI2NjksMTI2NzAsMTI2NzEsMTI2NzIsMTI2NzMsMTI2NzQsMTI2NzUsMTI2NzYsMTI2NzcsMTI2NzgsMTI2NzksMTI2ODAsMTI2ODEsMTI2ODIsMTI2ODMsMTI2ODQsMTI2ODUsMTI2ODYsNTE3ODMsNTE3ODQsNTE3ODUsNTE3ODYsNTE3ODcsNTE3OTAsNTE3OTEsNTE3OTMsNTE3OTQsNTE3OTUsNTE3OTcsNTE3OTgsNTE3OTksNTE4MDAsNTE4MDEsNTE4MDIsNTE4MDMsNTE4MDYsNTE4MTAsNTE4MTEsNTE4MTIsNTE4MTMsNTE4MTQsNTE4MTUsNTE4MTcsNTE4MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4MTksNTE4MjAsNTE4MjEsNTE4MjIsNTE4MjMsNTE4MjQsNTE4MjUsNTE4MjYsNTE4MjcsNTE4MjgsNTE4MjksNTE4MzAsNTE4MzEsNTE4MzIsNTE4MzMsNTE4MzQsNTE4MzUsNTE4MzYsNTE4MzgsNTE4MzksNTE4NDAsNTE4NDEsNTE4NDIsNTE4NDMsNTE4NDUsNTE4NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4NDcsNTE4NDgsNTE4NDksNTE4NTAsNTE4NTEsNTE4NTIsNTE4NTMsNTE4NTQsNTE4NTUsNTE4NTYsNTE4NTcsNTE4NTgsNTE4NTksNTE4NjAsNTE4NjEsNTE4NjIsNTE4NjMsNTE4NjUsNTE4NjYsNTE4NjcsNTE4NjgsNTE4NjksNTE4NzAsNTE4NzEsNTE4NzIsNTE4NzMsNTE4NzQsNTE4NzUsNTE4NzYsNTE4NzcsNTE4NzgsNTE4NzksODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg4MCw1MTg4MSw1MTg4Miw1MTg4Myw1MTg4NCw1MTg4NSw1MTg4Niw1MTg4Nyw1MTg4OCw1MTg4OSw1MTg5MCw1MTg5MSw1MTg5Miw1MTg5Myw1MTg5NCw1MTg5NSw1MTg5Niw1MTg5Nyw1MTg5OCw1MTg5OSw1MTkwMiw1MTkwMyw1MTkwNSw1MTkwNiw1MTkwNyw1MTkwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTkxMCw1MTkxMSw1MTkxMiw1MTkxMyw1MTkxNCw1MTkxNSw1MTkxOCw1MTkyMCw1MTkyMiw1MTkyNCw1MTkyNSw1MTkyNiw1MTkyNyw1MTkzMCw1MTkzMSw1MTkzMiw1MTkzMyw1MTkzNCw1MTkzNSw1MTkzNyw1MTkzOCw1MTkzOSw1MTk0MCw1MTk0MSw1MTk0Miw1MTk0MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk0NCw1MTk0NSw1MTk0Niw1MTk0Nyw1MTk0OSw1MTk1MCw1MTk1MSw1MTk1Miw1MTk1Myw1MTk1NCw1MTk1NSw1MTk1Nyw1MTk1OCw1MTk1OSw1MTk2MCw1MTk2MSw1MTk2Miw1MTk2Myw1MTk2NCw1MTk2NSw1MTk2Niw1MTk2Nyw1MTk2OCw1MTk2OSw1MTk3MCw1MTk3MSw1MTk3Miw1MTk3Myw1MTk3NCw1MTk3NSw1MTk3Nyw1MTk3OCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsOTQ5MCw5NDg5LDk0OTgsOTQ5Nyw5NDk0LDk0OTMsOTQ4Niw5NDg1LDk1MDIsOTUwMyw5NTA1LDk1MDYsOTUxMCw5NTExLDk1MTMsOTUxNCw5NTE3LDk1MTgsOTUyMSw5NTIyLDk1MjUsOTUyNiw5NTI5LDk1MzAsOTUzMyw5NTM0LDk1MzYsOTUzNyw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTc5LDUxOTgwLDUxOTgxLDUxOTgyLDUxOTgzLDUxOTg1LDUxOTg2LDUxOTg3LDUxOTg5LDUxOTkwLDUxOTkxLDUxOTkzLDUxOTk0LDUxOTk1LDUxOTk2LDUxOTk3LDUxOTk4LDUxOTk5LDUyMDAyLDUyMDAzLDUyMDA0LDUyMDA1LDUyMDA2LDUyMDA3LDUyMDA4LDUyMDA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDEwLDUyMDExLDUyMDEyLDUyMDEzLDUyMDE0LDUyMDE1LDUyMDE2LDUyMDE3LDUyMDE4LDUyMDE5LDUyMDIwLDUyMDIxLDUyMDIyLDUyMDIzLDUyMDI0LDUyMDI1LDUyMDI2LDUyMDI3LDUyMDI4LDUyMDI5LDUyMDMwLDUyMDMxLDUyMDMyLDUyMDM0LDUyMDM1LDUyMDM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDM3LDUyMDM4LDUyMDM5LDUyMDQyLDUyMDQzLDUyMDQ1LDUyMDQ2LDUyMDQ3LDUyMDQ5LDUyMDUwLDUyMDUxLDUyMDUyLDUyMDUzLDUyMDU0LDUyMDU1LDUyMDU4LDUyMDU5LDUyMDYwLDUyMDYyLDUyMDYzLDUyMDY0LDUyMDY1LDUyMDY2LDUyMDY3LDUyMDY5LDUyMDcwLDUyMDcxLDUyMDcyLDUyMDczLDUyMDc0LDUyMDc1LDUyMDc2LDEzMjA1LDEzMjA2LDEzMjA3LDg0NjcsMTMyMDgsMTMyNTIsMTMyMTksMTMyMjAsMTMyMjEsMTMyMjIsMTMyMDksMTMyMTAsMTMyMTEsMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTUsMTMyMTYsMTMyMTcsMTMyMTgsMTMyNTgsMTMxOTcsMTMxOTgsMTMxOTksMTMyNjMsMTMxOTIsMTMxOTMsMTMyNTYsMTMyMjMsMTMyMjQsMTMyMzIsMTMyMzMsMTMyMzQsMTMyMzUsMTMyMzYsMTMyMzcsMTMyMzgsMTMyMzksMTMyNDAsMTMyNDEsMTMxODQsMTMxODUsMTMxODYsMTMxODcsMTMxODgsMTMyNDIsMTMyNDMsMTMyNDQsMTMyNDUsMTMyNDYsMTMyNDcsMTMyMDAsMTMyMDEsMTMyMDIsMTMyMDMsMTMyMDQsODQ4NiwxMzI0OCwxMzI0OSwxMzE5NCwxMzE5NSwxMzE5NiwxMzI3MCwxMzI1MywxMzIyOSwxMzIzMCwxMzIzMSwxMzI3NSwxMzIyNSwxMzIyNiwxMzIyNywxMzIyOCwxMzI3NywxMzI2NCwxMzI2NywxMzI1MSwxMzI1NywxMzI3NiwxMzI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjA3Nyw1MjA3OCw1MjA3OSw1MjA4MCw1MjA4MSw1MjA4Miw1MjA4Myw1MjA4NCw1MjA4NSw1MjA4Niw1MjA4Nyw1MjA5MCw1MjA5MSw1MjA5Miw1MjA5Myw1MjA5NCw1MjA5NSw1MjA5Niw1MjA5Nyw1MjA5OCw1MjA5OSw1MjEwMCw1MjEwMSw1MjEwMiw1MjEwMyw1MjEwNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjEwNSw1MjEwNiw1MjEwNyw1MjEwOCw1MjEwOSw1MjExMCw1MjExMSw1MjExMiw1MjExMyw1MjExNCw1MjExNSw1MjExNiw1MjExNyw1MjExOCw1MjExOSw1MjEyMCw1MjEyMSw1MjEyMiw1MjEyMyw1MjEyNSw1MjEyNiw1MjEyNyw1MjEyOCw1MjEyOSw1MjEzMCw1MjEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjEzMiw1MjEzMyw1MjEzNCw1MjEzNSw1MjEzNiw1MjEzNyw1MjEzOCw1MjEzOSw1MjE0MCw1MjE0MSw1MjE0Miw1MjE0Myw1MjE0NCw1MjE0NSw1MjE0Niw1MjE0Nyw1MjE0OCw1MjE0OSw1MjE1MCw1MjE1MSw1MjE1Myw1MjE1NCw1MjE1NSw1MjE1Niw1MjE1Nyw1MjE1OCw1MjE1OSw1MjE2MCw1MjE2MSw1MjE2Miw1MjE2Myw1MjE2NCwxOTgsMjA4LDE3MCwyOTQsbnVsbCwzMDYsbnVsbCwzMTksMzIxLDIxNiwzMzgsMTg2LDIyMiwzNTgsMzMwLG51bGwsMTI4OTYsMTI4OTcsMTI4OTgsMTI4OTksMTI5MDAsMTI5MDEsMTI5MDIsMTI5MDMsMTI5MDQsMTI5MDUsMTI5MDYsMTI5MDcsMTI5MDgsMTI5MDksMTI5MTAsMTI5MTEsMTI5MTIsMTI5MTMsMTI5MTQsMTI5MTUsMTI5MTYsMTI5MTcsMTI5MTgsMTI5MTksMTI5MjAsMTI5MjEsMTI5MjIsMTI5MjMsOTQyNCw5NDI1LDk0MjYsOTQyNyw5NDI4LDk0MjksOTQzMCw5NDMxLDk0MzIsOTQzMyw5NDM0LDk0MzUsOTQzNiw5NDM3LDk0MzgsOTQzOSw5NDQwLDk0NDEsOTQ0Miw5NDQzLDk0NDQsOTQ0NSw5NDQ2LDk0NDcsOTQ0OCw5NDQ5LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkzMjQsOTMyNSw5MzI2LDE4OSw4NTMxLDg1MzIsMTg4LDE5MCw4NTM5LDg1NDAsODU0MSw4NTQyLDUyMTY1LDUyMTY2LDUyMTY3LDUyMTY4LDUyMTY5LDUyMTcwLDUyMTcxLDUyMTcyLDUyMTczLDUyMTc0LDUyMTc1LDUyMTc2LDUyMTc3LDUyMTc4LDUyMTc5LDUyMTgxLDUyMTgyLDUyMTgzLDUyMTg0LDUyMTg1LDUyMTg2LDUyMTg3LDUyMTg4LDUyMTg5LDUyMTkwLDUyMTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTkyLDUyMTkzLDUyMTk0LDUyMTk1LDUyMTk3LDUyMTk4LDUyMjAwLDUyMjAyLDUyMjAzLDUyMjA0LDUyMjA1LDUyMjA2LDUyMjA3LDUyMjA4LDUyMjA5LDUyMjEwLDUyMjExLDUyMjEyLDUyMjEzLDUyMjE0LDUyMjE1LDUyMjE2LDUyMjE3LDUyMjE4LDUyMjE5LDUyMjIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMjIxLDUyMjIyLDUyMjIzLDUyMjI0LDUyMjI1LDUyMjI2LDUyMjI3LDUyMjI4LDUyMjI5LDUyMjMwLDUyMjMxLDUyMjMyLDUyMjMzLDUyMjM0LDUyMjM1LDUyMjM4LDUyMjM5LDUyMjQxLDUyMjQyLDUyMjQzLDUyMjQ1LDUyMjQ2LDUyMjQ3LDUyMjQ4LDUyMjQ5LDUyMjUwLDUyMjUxLDUyMjU0LDUyMjU1LDUyMjU2LDUyMjU5LDUyMjYwLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjAsMzIyLDI0OCwzMzksMjIzLDI1NCwzNTksMzMxLDMyOSwxMjgwMCwxMjgwMSwxMjgwMiwxMjgwMywxMjgwNCwxMjgwNSwxMjgwNiwxMjgwNywxMjgwOCwxMjgwOSwxMjgxMCwxMjgxMSwxMjgxMiwxMjgxMywxMjgxNCwxMjgxNSwxMjgxNiwxMjgxNywxMjgxOCwxMjgxOSwxMjgyMCwxMjgyMSwxMjgyMiwxMjgyMywxMjgyNCwxMjgyNSwxMjgyNiwxMjgyNyw5MzcyLDkzNzMsOTM3NCw5Mzc1LDkzNzYsOTM3Nyw5Mzc4LDkzNzksOTM4MCw5MzgxLDkzODIsOTM4Myw5Mzg0LDkzODUsOTM4Niw5Mzg3LDkzODgsOTM4OSw5MzkwLDkzOTEsOTM5Miw5MzkzLDkzOTQsOTM5NSw5Mzk2LDkzOTcsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsMTg1LDE3OCwxNzksODMwOCw4MzE5LDgzMjEsODMyMiw4MzIzLDgzMjQsNTIyNjEsNTIyNjIsNTIyNjYsNTIyNjcsNTIyNjksNTIyNzEsNTIyNzMsNTIyNzQsNTIyNzUsNTIyNzYsNTIyNzcsNTIyNzgsNTIyNzksNTIyODIsNTIyODcsNTIyODgsNTIyODksNTIyOTAsNTIyOTEsNTIyOTQsNTIyOTUsNTIyOTcsNTIyOTgsNTIyOTksNTIzMDEsNTIzMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzMDMsNTIzMDQsNTIzMDUsNTIzMDYsNTIzMDcsNTIzMTAsNTIzMTQsNTIzMTUsNTIzMTYsNTIzMTcsNTIzMTgsNTIzMTksNTIzMjEsNTIzMjIsNTIzMjMsNTIzMjUsNTIzMjcsNTIzMjksNTIzMzAsNTIzMzEsNTIzMzIsNTIzMzMsNTIzMzQsNTIzMzUsNTIzMzcsNTIzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzMzksNTIzNDAsNTIzNDIsNTIzNDMsNTIzNDQsNTIzNDUsNTIzNDYsNTIzNDcsNTIzNDgsNTIzNDksNTIzNTAsNTIzNTEsNTIzNTIsNTIzNTMsNTIzNTQsNTIzNTUsNTIzNTYsNTIzNTcsNTIzNTgsNTIzNTksNTIzNjAsNTIzNjEsNTIzNjIsNTIzNjMsNTIzNjQsNTIzNjUsNTIzNjYsNTIzNjcsNTIzNjgsNTIzNjksNTIzNzAsNTIzNzEsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzcyLDUyMzczLDUyMzc0LDUyMzc1LDUyMzc4LDUyMzc5LDUyMzgxLDUyMzgyLDUyMzgzLDUyMzg1LDUyMzg2LDUyMzg3LDUyMzg4LDUyMzg5LDUyMzkwLDUyMzkxLDUyMzk0LDUyMzk4LDUyMzk5LDUyNDAwLDUyNDAxLDUyNDAyLDUyNDAzLDUyNDA2LDUyNDA3LDUyNDA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDEwLDUyNDExLDUyNDEzLDUyNDE0LDUyNDE1LDUyNDE2LDUyNDE3LDUyNDE4LDUyNDE5LDUyNDIyLDUyNDI0LDUyNDI2LDUyNDI3LDUyNDI4LDUyNDI5LDUyNDMwLDUyNDMxLDUyNDMzLDUyNDM0LDUyNDM1LDUyNDM3LDUyNDM4LDUyNDM5LDUyNDQwLDUyNDQxLDUyNDQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDQzLDUyNDQ0LDUyNDQ1LDUyNDQ2LDUyNDQ3LDUyNDQ4LDUyNDQ5LDUyNDUwLDUyNDUxLDUyNDUzLDUyNDU0LDUyNDU1LDUyNDU2LDUyNDU3LDUyNDU4LDUyNDU5LDUyNDYxLDUyNDYyLDUyNDYzLDUyNDY1LDUyNDY2LDUyNDY3LDUyNDY4LDUyNDY5LDUyNDcwLDUyNDcxLDUyNDcyLDUyNDczLDUyNDc0LDUyNDc1LDUyNDc2LDUyNDc3LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ3OCw1MjQ3OSw1MjQ4MCw1MjQ4Miw1MjQ4Myw1MjQ4NCw1MjQ4NSw1MjQ4Niw1MjQ4Nyw1MjQ5MCw1MjQ5MSw1MjQ5Myw1MjQ5NCw1MjQ5NSw1MjQ5Nyw1MjQ5OCw1MjQ5OSw1MjUwMCw1MjUwMSw1MjUwMiw1MjUwMyw1MjUwNiw1MjUwOCw1MjUxMCw1MjUxMSw1MjUxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjUxMyw1MjUxNCw1MjUxNSw1MjUxNyw1MjUxOCw1MjUxOSw1MjUyMSw1MjUyMiw1MjUyMyw1MjUyNSw1MjUyNiw1MjUyNyw1MjUyOCw1MjUyOSw1MjUzMCw1MjUzMSw1MjUzMiw1MjUzMyw1MjUzNCw1MjUzNSw1MjUzNiw1MjUzOCw1MjUzOSw1MjU0MCw1MjU0MSw1MjU0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU0Myw1MjU0NCw1MjU0NSw1MjU0Niw1MjU0Nyw1MjU0OCw1MjU0OSw1MjU1MCw1MjU1MSw1MjU1Miw1MjU1Myw1MjU1NCw1MjU1NSw1MjU1Niw1MjU1Nyw1MjU1OCw1MjU1OSw1MjU2MCw1MjU2MSw1MjU2Miw1MjU2Myw1MjU2NCw1MjU2NSw1MjU2Niw1MjU2Nyw1MjU2OCw1MjU2OSw1MjU3MCw1MjU3MSw1MjU3Myw1MjU3NCw1MjU3NSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTc3LDUyNTc4LDUyNTc5LDUyNTgxLDUyNTgyLDUyNTgzLDUyNTg0LDUyNTg1LDUyNTg2LDUyNTg3LDUyNTkwLDUyNTkyLDUyNTk0LDUyNTk1LDUyNTk2LDUyNTk3LDUyNTk4LDUyNTk5LDUyNjAxLDUyNjAyLDUyNjAzLDUyNjA0LDUyNjA1LDUyNjA2LDUyNjA3LDUyNjA4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjA5LDUyNjEwLDUyNjExLDUyNjEyLDUyNjEzLDUyNjE0LDUyNjE1LDUyNjE3LDUyNjE4LDUyNjE5LDUyNjIwLDUyNjIxLDUyNjIyLDUyNjIzLDUyNjI0LDUyNjI1LDUyNjI2LDUyNjI3LDUyNjMwLDUyNjMxLDUyNjMzLDUyNjM0LDUyNjM1LDUyNjM3LDUyNjM4LDUyNjM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjQwLDUyNjQxLDUyNjQyLDUyNjQzLDUyNjQ2LDUyNjQ4LDUyNjUwLDUyNjUxLDUyNjUyLDUyNjUzLDUyNjU0LDUyNjU1LDUyNjU3LDUyNjU4LDUyNjU5LDUyNjYwLDUyNjYxLDUyNjYyLDUyNjYzLDUyNjY0LDUyNjY1LDUyNjY2LDUyNjY3LDUyNjY4LDUyNjY5LDUyNjcwLDUyNjcxLDUyNjcyLDUyNjczLDUyNjc0LDUyNjc1LDUyNjc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NzgsNTI2NzksNTI2ODAsNTI2ODEsNTI2ODIsNTI2ODMsNTI2ODUsNTI2ODYsNTI2ODcsNTI2ODksNTI2OTAsNTI2OTEsNTI2OTIsNTI2OTMsNTI2OTQsNTI2OTUsNTI2OTYsNTI2OTcsNTI2OTgsNTI2OTksNTI3MDAsNTI3MDEsNTI3MDIsNTI3MDMsNTI3MDQsNTI3MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3MDYsNTI3MDcsNTI3MDgsNTI3MDksNTI3MTAsNTI3MTEsNTI3MTMsNTI3MTQsNTI3MTUsNTI3MTcsNTI3MTgsNTI3MTksNTI3MjEsNTI3MjIsNTI3MjMsNTI3MjQsNTI3MjUsNTI3MjYsNTI3MjcsNTI3MzAsNTI3MzIsNTI3MzQsNTI3MzUsNTI3MzYsNTI3MzcsNTI3MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3MzksNTI3NDEsNTI3NDIsNTI3NDMsNTI3NDUsNTI3NDYsNTI3NDcsNTI3NDksNTI3NTAsNTI3NTEsNTI3NTIsNTI3NTMsNTI3NTQsNTI3NTUsNTI3NTcsNTI3NTgsNTI3NTksNTI3NjAsNTI3NjIsNTI3NjMsNTI3NjQsNTI3NjUsNTI3NjYsNTI3NjcsNTI3NzAsNTI3NzEsNTI3NzMsNTI3NzQsNTI3NzUsNTI3NzcsNTI3NzgsNTI3NzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjc4MCw1Mjc4MSw1Mjc4Miw1Mjc4Myw1Mjc4Niw1Mjc4OCw1Mjc5MCw1Mjc5MSw1Mjc5Miw1Mjc5Myw1Mjc5NCw1Mjc5NSw1Mjc5Niw1Mjc5Nyw1Mjc5OCw1Mjc5OSw1MjgwMCw1MjgwMSw1MjgwMiw1MjgwMyw1MjgwNCw1MjgwNSw1MjgwNiw1MjgwNyw1MjgwOCw1MjgwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjgxMCw1MjgxMSw1MjgxMiw1MjgxMyw1MjgxNCw1MjgxNSw1MjgxNiw1MjgxNyw1MjgxOCw1MjgxOSw1MjgyMCw1MjgyMSw1MjgyMiw1MjgyMyw1MjgyNiw1MjgyNyw1MjgyOSw1MjgzMCw1MjgzNCw1MjgzNSw1MjgzNiw1MjgzNyw1MjgzOCw1MjgzOSw1Mjg0Miw1Mjg0NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg0Niw1Mjg0Nyw1Mjg0OCw1Mjg0OSw1Mjg1MCw1Mjg1MSw1Mjg1NCw1Mjg1NSw1Mjg1Nyw1Mjg1OCw1Mjg1OSw1Mjg2MSw1Mjg2Miw1Mjg2Myw1Mjg2NCw1Mjg2NSw1Mjg2Niw1Mjg2Nyw1Mjg3MCw1Mjg3Miw1Mjg3NCw1Mjg3NSw1Mjg3Niw1Mjg3Nyw1Mjg3OCw1Mjg3OSw1Mjg4Miw1Mjg4Myw1Mjg4NSw1Mjg4Niw1Mjg4Nyw1Mjg4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODkwLDUyODkxLDUyODkyLDUyODkzLDUyODk0LDUyODk1LDUyODk4LDUyOTAyLDUyOTAzLDUyOTA0LDUyOTA1LDUyOTA2LDUyOTA3LDUyOTEwLDUyOTExLDUyOTEyLDUyOTEzLDUyOTE0LDUyOTE1LDUyOTE2LDUyOTE3LDUyOTE4LDUyOTE5LDUyOTIwLDUyOTIxLDUyOTIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyOTIzLDUyOTI0LDUyOTI1LDUyOTI2LDUyOTI3LDUyOTI4LDUyOTMwLDUyOTMxLDUyOTMyLDUyOTMzLDUyOTM0LDUyOTM1LDUyOTM2LDUyOTM3LDUyOTM4LDUyOTM5LDUyOTQwLDUyOTQxLDUyOTQyLDUyOTQzLDUyOTQ0LDUyOTQ1LDUyOTQ2LDUyOTQ3LDUyOTQ4LDUyOTQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyOTUwLDUyOTUxLDUyOTUyLDUyOTUzLDUyOTU0LDUyOTU1LDUyOTU2LDUyOTU3LDUyOTU4LDUyOTU5LDUyOTYwLDUyOTYxLDUyOTYyLDUyOTYzLDUyOTY2LDUyOTY3LDUyOTY5LDUyOTcwLDUyOTczLDUyOTc0LDUyOTc1LDUyOTc2LDUyOTc3LDUyOTc4LDUyOTc5LDUyOTgyLDUyOTg2LDUyOTg3LDUyOTg4LDUyOTg5LDUyOTkwLDUyOTkxLDQ0MDMyLDQ0MDMzLDQ0MDM2LDQ0MDM5LDQ0MDQwLDQ0MDQxLDQ0MDQyLDQ0MDQ4LDQ0MDQ5LDQ0MDUwLDQ0MDUxLDQ0MDUyLDQ0MDUzLDQ0MDU0LDQ0MDU1LDQ0MDU3LDQ0MDU4LDQ0MDU5LDQ0MDYwLDQ0MDYxLDQ0MDY0LDQ0MDY4LDQ0MDc2LDQ0MDc3LDQ0MDc5LDQ0MDgwLDQ0MDgxLDQ0MDg4LDQ0MDg5LDQ0MDkyLDQ0MDk2LDQ0MTA3LDQ0MTA5LDQ0MTE2LDQ0MTIwLDQ0MTI0LDQ0MTQ0LDQ0MTQ1LDQ0MTQ4LDQ0MTUxLDQ0MTUyLDQ0MTU0LDQ0MTYwLDQ0MTYxLDQ0MTYzLDQ0MTY0LDQ0MTY1LDQ0MTY2LDQ0MTY5LDQ0MTcwLDQ0MTcxLDQ0MTcyLDQ0MTc2LDQ0MTgwLDQ0MTg4LDQ0MTg5LDQ0MTkxLDQ0MTkyLDQ0MTkzLDQ0MjAwLDQ0MjAxLDQ0MjAyLDQ0MjA0LDQ0MjA3LDQ0MjA4LDQ0MjE2LDQ0MjE3LDQ0MjE5LDQ0MjIwLDQ0MjIxLDQ0MjI1LDQ0MjI4LDQ0MjMyLDQ0MjM2LDQ0MjQ1LDQ0MjQ3LDQ0MjU2LDQ0MjU3LDQ0MjYwLDQ0MjYzLDQ0MjY0LDQ0MjY2LDQ0MjY4LDQ0MjcxLDQ0MjcyLDQ0MjczLDQ0Mjc1LDQ0Mjc3LDQ0Mjc4LDQ0Mjg0LDQ0Mjg1LDQ0Mjg4LDQ0MjkyLDQ0Mjk0LDUyOTk0LDUyOTk1LDUyOTk3LDUyOTk4LDUyOTk5LDUzMDAxLDUzMDAyLDUzMDAzLDUzMDA0LDUzMDA1LDUzMDA2LDUzMDA3LDUzMDEwLDUzMDEyLDUzMDE0LDUzMDE1LDUzMDE2LDUzMDE3LDUzMDE4LDUzMDE5LDUzMDIxLDUzMDIyLDUzMDIzLDUzMDI1LDUzMDI2LDUzMDI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMDI5LDUzMDMwLDUzMDMxLDUzMDMyLDUzMDMzLDUzMDM0LDUzMDM1LDUzMDM4LDUzMDQyLDUzMDQzLDUzMDQ0LDUzMDQ1LDUzMDQ2LDUzMDQ3LDUzMDQ5LDUzMDUwLDUzMDUxLDUzMDUyLDUzMDUzLDUzMDU0LDUzMDU1LDUzMDU2LDUzMDU3LDUzMDU4LDUzMDU5LDUzMDYwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMDYxLDUzMDYyLDUzMDYzLDUzMDY0LDUzMDY1LDUzMDY2LDUzMDY3LDUzMDY4LDUzMDY5LDUzMDcwLDUzMDcxLDUzMDcyLDUzMDczLDUzMDc0LDUzMDc1LDUzMDc4LDUzMDc5LDUzMDgxLDUzMDgyLDUzMDgzLDUzMDg1LDUzMDg2LDUzMDg3LDUzMDg4LDUzMDg5LDUzMDkwLDUzMDkxLDUzMDk0LDUzMDk2LDUzMDk4LDUzMDk5LDUzMTAwLDQ0MzAwLDQ0MzAxLDQ0MzAzLDQ0MzA1LDQ0MzEyLDQ0MzE2LDQ0MzIwLDQ0MzI5LDQ0MzMyLDQ0MzMzLDQ0MzQwLDQ0MzQxLDQ0MzQ0LDQ0MzQ4LDQ0MzU2LDQ0MzU3LDQ0MzU5LDQ0MzYxLDQ0MzY4LDQ0MzcyLDQ0Mzc2LDQ0Mzg1LDQ0Mzg3LDQ0Mzk2LDQ0Mzk3LDQ0NDAwLDQ0NDAzLDQ0NDA0LDQ0NDA1LDQ0NDA2LDQ0NDExLDQ0NDEyLDQ0NDEzLDQ0NDE1LDQ0NDE3LDQ0NDE4LDQ0NDI0LDQ0NDI1LDQ0NDI4LDQ0NDMyLDQ0NDQ0LDQ0NDQ1LDQ0NDUyLDQ0NDcxLDQ0NDgwLDQ0NDgxLDQ0NDg0LDQ0NDg4LDQ0NDk2LDQ0NDk3LDQ0NDk5LDQ0NTA4LDQ0NTEyLDQ0NTE2LDQ0NTM2LDQ0NTM3LDQ0NTQwLDQ0NTQzLDQ0NTQ0LDQ0NTQ1LDQ0NTUyLDQ0NTUzLDQ0NTU1LDQ0NTU3LDQ0NTY0LDQ0NTkyLDQ0NTkzLDQ0NTk2LDQ0NTk5LDQ0NjAwLDQ0NjAyLDQ0NjA4LDQ0NjA5LDQ0NjExLDQ0NjEzLDQ0NjE0LDQ0NjE4LDQ0NjIwLDQ0NjIxLDQ0NjIyLDQ0NjI0LDQ0NjI4LDQ0NjMwLDQ0NjM2LDQ0NjM3LDQ0NjM5LDQ0NjQwLDQ0NjQxLDQ0NjQ1LDQ0NjQ4LDQ0NjQ5LDQ0NjUyLDQ0NjU2LDQ0NjY0LDUzMTAxLDUzMTAyLDUzMTAzLDUzMTA2LDUzMTA3LDUzMTA5LDUzMTEwLDUzMTExLDUzMTEzLDUzMTE0LDUzMTE1LDUzMTE2LDUzMTE3LDUzMTE4LDUzMTE5LDUzMTIxLDUzMTIyLDUzMTIzLDUzMTI0LDUzMTI2LDUzMTI3LDUzMTI4LDUzMTI5LDUzMTMwLDUzMTMxLDUzMTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMTM0LDUzMTM1LDUzMTM2LDUzMTM3LDUzMTM4LDUzMTM5LDUzMTQwLDUzMTQxLDUzMTQyLDUzMTQzLDUzMTQ0LDUzMTQ1LDUzMTQ2LDUzMTQ3LDUzMTQ4LDUzMTQ5LDUzMTUwLDUzMTUxLDUzMTUyLDUzMTU0LDUzMTU1LDUzMTU2LDUzMTU3LDUzMTU4LDUzMTU5LDUzMTYxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMTYyLDUzMTYzLDUzMTY0LDUzMTY1LDUzMTY2LDUzMTY3LDUzMTY5LDUzMTcwLDUzMTcxLDUzMTcyLDUzMTczLDUzMTc0LDUzMTc1LDUzMTc2LDUzMTc3LDUzMTc4LDUzMTc5LDUzMTgwLDUzMTgxLDUzMTgyLDUzMTgzLDUzMTg0LDUzMTg1LDUzMTg2LDUzMTg3LDUzMTg5LDUzMTkwLDUzMTkxLDUzMTkyLDUzMTkzLDUzMTk0LDUzMTk1LDQ0NjY1LDQ0NjY3LDQ0NjY4LDQ0NjY5LDQ0Njc2LDQ0Njc3LDQ0Njg0LDQ0NzMyLDQ0NzMzLDQ0NzM0LDQ0NzM2LDQ0NzQwLDQ0NzQ4LDQ0NzQ5LDQ0NzUxLDQ0NzUyLDQ0NzUzLDQ0NzYwLDQ0NzYxLDQ0NzY0LDQ0Nzc2LDQ0Nzc5LDQ0NzgxLDQ0Nzg4LDQ0NzkyLDQ0Nzk2LDQ0ODA3LDQ0ODA4LDQ0ODEzLDQ0ODE2LDQ0ODQ0LDQ0ODQ1LDQ0ODQ4LDQ0ODUwLDQ0ODUyLDQ0ODYwLDQ0ODYxLDQ0ODYzLDQ0ODY1LDQ0ODY2LDQ0ODY3LDQ0ODcyLDQ0ODczLDQ0ODgwLDQ0ODkyLDQ0ODkzLDQ0OTAwLDQ0OTAxLDQ0OTIxLDQ0OTI4LDQ0OTMyLDQ0OTM2LDQ0OTQ0LDQ0OTQ1LDQ0OTQ5LDQ0OTU2LDQ0OTg0LDQ0OTg1LDQ0OTg4LDQ0OTkyLDQ0OTk5LDQ1MDAwLDQ1MDAxLDQ1MDAzLDQ1MDA1LDQ1MDA2LDQ1MDEyLDQ1MDIwLDQ1MDMyLDQ1MDMzLDQ1MDQwLDQ1MDQxLDQ1MDQ0LDQ1MDQ4LDQ1MDU2LDQ1MDU3LDQ1MDYwLDQ1MDY4LDQ1MDcyLDQ1MDc2LDQ1MDg0LDQ1MDg1LDQ1MDk2LDQ1MTI0LDQ1MTI1LDQ1MTI4LDQ1MTMwLDQ1MTMyLDQ1MTM0LDQ1MTM5LDQ1MTQwLDQ1MTQxLDQ1MTQzLDQ1MTQ1LDUzMTk2LDUzMTk3LDUzMTk4LDUzMTk5LDUzMjAwLDUzMjAxLDUzMjAyLDUzMjAzLDUzMjA0LDUzMjA1LDUzMjA2LDUzMjA3LDUzMjA4LDUzMjA5LDUzMjEwLDUzMjExLDUzMjEyLDUzMjEzLDUzMjE0LDUzMjE1LDUzMjE4LDUzMjE5LDUzMjIxLDUzMjIyLDUzMjIzLDUzMjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjI2LDUzMjI3LDUzMjI4LDUzMjI5LDUzMjMwLDUzMjMxLDUzMjM0LDUzMjM2LDUzMjM4LDUzMjM5LDUzMjQwLDUzMjQxLDUzMjQyLDUzMjQzLDUzMjQ1LDUzMjQ2LDUzMjQ3LDUzMjQ5LDUzMjUwLDUzMjUxLDUzMjUzLDUzMjU0LDUzMjU1LDUzMjU2LDUzMjU3LDUzMjU4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMjU5LDUzMjYwLDUzMjYxLDUzMjYyLDUzMjYzLDUzMjY0LDUzMjY2LDUzMjY3LDUzMjY4LDUzMjY5LDUzMjcwLDUzMjcxLDUzMjczLDUzMjc0LDUzMjc1LDUzMjc2LDUzMjc3LDUzMjc4LDUzMjc5LDUzMjgwLDUzMjgxLDUzMjgyLDUzMjgzLDUzMjg0LDUzMjg1LDUzMjg2LDUzMjg3LDUzMjg4LDUzMjg5LDUzMjkwLDUzMjkxLDUzMjkyLDQ1MTQ5LDQ1MTgwLDQ1MTgxLDQ1MTg0LDQ1MTg4LDQ1MTk2LDQ1MTk3LDQ1MTk5LDQ1MjAxLDQ1MjA4LDQ1MjA5LDQ1MjEwLDQ1MjEyLDQ1MjE1LDQ1MjE2LDQ1MjE3LDQ1MjE4LDQ1MjI0LDQ1MjI1LDQ1MjI3LDQ1MjI4LDQ1MjI5LDQ1MjMwLDQ1MjMxLDQ1MjMzLDQ1MjM1LDQ1MjM2LDQ1MjM3LDQ1MjQwLDQ1MjQ0LDQ1MjUyLDQ1MjUzLDQ1MjU1LDQ1MjU2LDQ1MjU3LDQ1MjY0LDQ1MjY1LDQ1MjY4LDQ1MjcyLDQ1MjgwLDQ1Mjg1LDQ1MzIwLDQ1MzIxLDQ1MzIzLDQ1MzI0LDQ1MzI4LDQ1MzMwLDQ1MzMxLDQ1MzM2LDQ1MzM3LDQ1MzM5LDQ1MzQwLDQ1MzQxLDQ1MzQ3LDQ1MzQ4LDQ1MzQ5LDQ1MzUyLDQ1MzU2LDQ1MzY0LDQ1MzY1LDQ1MzY3LDQ1MzY4LDQ1MzY5LDQ1Mzc2LDQ1Mzc3LDQ1MzgwLDQ1Mzg0LDQ1MzkyLDQ1MzkzLDQ1Mzk2LDQ1Mzk3LDQ1NDAwLDQ1NDA0LDQ1NDA4LDQ1NDMyLDQ1NDMzLDQ1NDM2LDQ1NDQwLDQ1NDQyLDQ1NDQ4LDQ1NDQ5LDQ1NDUxLDQ1NDUzLDQ1NDU4LDQ1NDU5LDQ1NDYwLDQ1NDY0LDQ1NDY4LDQ1NDgwLDQ1NTE2LDQ1NTIwLDQ1NTI0LDQ1NTMyLDQ1NTMzLDUzMjk0LDUzMjk1LDUzMjk2LDUzMjk3LDUzMjk4LDUzMjk5LDUzMzAyLDUzMzAzLDUzMzA1LDUzMzA2LDUzMzA3LDUzMzA5LDUzMzEwLDUzMzExLDUzMzEyLDUzMzEzLDUzMzE0LDUzMzE1LDUzMzE4LDUzMzIwLDUzMzIyLDUzMzIzLDUzMzI0LDUzMzI1LDUzMzI2LDUzMzI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzI5LDUzMzMwLDUzMzMxLDUzMzMzLDUzMzM0LDUzMzM1LDUzMzM3LDUzMzM4LDUzMzM5LDUzMzQwLDUzMzQxLDUzMzQyLDUzMzQzLDUzMzQ1LDUzMzQ2LDUzMzQ3LDUzMzQ4LDUzMzQ5LDUzMzUwLDUzMzUxLDUzMzUyLDUzMzUzLDUzMzU0LDUzMzU1LDUzMzU4LDUzMzU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzMzYxLDUzMzYyLDUzMzYzLDUzMzY1LDUzMzY2LDUzMzY3LDUzMzY4LDUzMzY5LDUzMzcwLDUzMzcxLDUzMzc0LDUzMzc1LDUzMzc2LDUzMzc4LDUzMzc5LDUzMzgwLDUzMzgxLDUzMzgyLDUzMzgzLDUzMzg0LDUzMzg1LDUzMzg2LDUzMzg3LDUzMzg4LDUzMzg5LDUzMzkwLDUzMzkxLDUzMzkyLDUzMzkzLDUzMzk0LDUzMzk1LDUzMzk2LDQ1NTM1LDQ1NTQ0LDQ1NTQ1LDQ1NTQ4LDQ1NTUyLDQ1NTYxLDQ1NTYzLDQ1NTY1LDQ1NTcyLDQ1NTczLDQ1NTc2LDQ1NTc5LDQ1NTgwLDQ1NTg4LDQ1NTg5LDQ1NTkxLDQ1NTkzLDQ1NjAwLDQ1NjIwLDQ1NjI4LDQ1NjU2LDQ1NjYwLDQ1NjY0LDQ1NjcyLDQ1NjczLDQ1Njg0LDQ1Njg1LDQ1NjkyLDQ1NzAwLDQ1NzAxLDQ1NzA1LDQ1NzEyLDQ1NzEzLDQ1NzE2LDQ1NzIwLDQ1NzIxLDQ1NzIyLDQ1NzI4LDQ1NzI5LDQ1NzMxLDQ1NzMzLDQ1NzM0LDQ1NzM4LDQ1NzQwLDQ1NzQ0LDQ1NzQ4LDQ1NzY4LDQ1NzY5LDQ1NzcyLDQ1Nzc2LDQ1Nzc4LDQ1Nzg0LDQ1Nzg1LDQ1Nzg3LDQ1Nzg5LDQ1Nzk0LDQ1Nzk2LDQ1Nzk3LDQ1Nzk4LDQ1ODAwLDQ1ODAzLDQ1ODA0LDQ1ODA1LDQ1ODA2LDQ1ODA3LDQ1ODExLDQ1ODEyLDQ1ODEzLDQ1ODE1LDQ1ODE2LDQ1ODE3LDQ1ODE4LDQ1ODE5LDQ1ODIzLDQ1ODI0LDQ1ODI1LDQ1ODI4LDQ1ODMyLDQ1ODQwLDQ1ODQxLDQ1ODQzLDQ1ODQ0LDQ1ODQ1LDQ1ODUyLDQ1OTA4LDQ1OTA5LDQ1OTEwLDQ1OTEyLDQ1OTE1LDQ1OTE2LDQ1OTE4LDQ1OTE5LDQ1OTI0LDQ1OTI1LDUzMzk3LDUzMzk4LDUzMzk5LDUzNDAwLDUzNDAxLDUzNDAyLDUzNDAzLDUzNDA0LDUzNDA1LDUzNDA2LDUzNDA3LDUzNDA4LDUzNDA5LDUzNDEwLDUzNDExLDUzNDE0LDUzNDE1LDUzNDE3LDUzNDE4LDUzNDE5LDUzNDIxLDUzNDIyLDUzNDIzLDUzNDI0LDUzNDI1LDUzNDI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDI3LDUzNDMwLDUzNDMyLDUzNDM0LDUzNDM1LDUzNDM2LDUzNDM3LDUzNDM4LDUzNDM5LDUzNDQyLDUzNDQzLDUzNDQ1LDUzNDQ2LDUzNDQ3LDUzNDUwLDUzNDUxLDUzNDUyLDUzNDUzLDUzNDU0LDUzNDU1LDUzNDU4LDUzNDYyLDUzNDYzLDUzNDY0LDUzNDY1LDUzNDY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNDY3LDUzNDcwLDUzNDcxLDUzNDczLDUzNDc0LDUzNDc1LDUzNDc3LDUzNDc4LDUzNDc5LDUzNDgwLDUzNDgxLDUzNDgyLDUzNDgzLDUzNDg2LDUzNDkwLDUzNDkxLDUzNDkyLDUzNDkzLDUzNDk0LDUzNDk1LDUzNDk3LDUzNDk4LDUzNDk5LDUzNTAwLDUzNTAxLDUzNTAyLDUzNTAzLDUzNTA0LDUzNTA1LDUzNTA2LDUzNTA3LDUzNTA4LDQ1OTI3LDQ1OTI5LDQ1OTMxLDQ1OTM0LDQ1OTM2LDQ1OTM3LDQ1OTQwLDQ1OTQ0LDQ1OTUyLDQ1OTUzLDQ1OTU1LDQ1OTU2LDQ1OTU3LDQ1OTY0LDQ1OTY4LDQ1OTcyLDQ1OTg0LDQ1OTg1LDQ1OTkyLDQ1OTk2LDQ2MDIwLDQ2MDIxLDQ2MDI0LDQ2MDI3LDQ2MDI4LDQ2MDMwLDQ2MDMyLDQ2MDM2LDQ2MDM3LDQ2MDM5LDQ2MDQxLDQ2MDQzLDQ2MDQ1LDQ2MDQ4LDQ2MDUyLDQ2MDU2LDQ2MDc2LDQ2MDk2LDQ2MTA0LDQ2MTA4LDQ2MTEyLDQ2MTIwLDQ2MTIxLDQ2MTIzLDQ2MTMyLDQ2MTYwLDQ2MTYxLDQ2MTY0LDQ2MTY4LDQ2MTc2LDQ2MTc3LDQ2MTc5LDQ2MTgxLDQ2MTg4LDQ2MjA4LDQ2MjE2LDQ2MjM3LDQ2MjQ0LDQ2MjQ4LDQ2MjUyLDQ2MjYxLDQ2MjYzLDQ2MjY1LDQ2MjcyLDQ2Mjc2LDQ2MjgwLDQ2Mjg4LDQ2MjkzLDQ2MzAwLDQ2MzAxLDQ2MzA0LDQ2MzA3LDQ2MzA4LDQ2MzEwLDQ2MzE2LDQ2MzE3LDQ2MzE5LDQ2MzIxLDQ2MzI4LDQ2MzU2LDQ2MzU3LDQ2MzYwLDQ2MzYzLDQ2MzY0LDQ2MzcyLDQ2MzczLDQ2Mzc1LDQ2Mzc2LDQ2Mzc3LDQ2Mzc4LDQ2Mzg0LDQ2Mzg1LDQ2Mzg4LDQ2MzkyLDUzNTA5LDUzNTEwLDUzNTExLDUzNTEyLDUzNTEzLDUzNTE0LDUzNTE1LDUzNTE2LDUzNTE4LDUzNTE5LDUzNTIwLDUzNTIxLDUzNTIyLDUzNTIzLDUzNTI0LDUzNTI1LDUzNTI2LDUzNTI3LDUzNTI4LDUzNTI5LDUzNTMwLDUzNTMxLDUzNTMyLDUzNTMzLDUzNTM0LDUzNTM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTM2LDUzNTM3LDUzNTM4LDUzNTM5LDUzNTQwLDUzNTQxLDUzNTQyLDUzNTQzLDUzNTQ0LDUzNTQ1LDUzNTQ2LDUzNTQ3LDUzNTQ4LDUzNTQ5LDUzNTUwLDUzNTUxLDUzNTU0LDUzNTU1LDUzNTU3LDUzNTU4LDUzNTU5LDUzNTYxLDUzNTYzLDUzNTY0LDUzNTY1LDUzNTY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNTY3LDUzNTcwLDUzNTc0LDUzNTc1LDUzNTc2LDUzNTc3LDUzNTc4LDUzNTc5LDUzNTgyLDUzNTgzLDUzNTg1LDUzNTg2LDUzNTg3LDUzNTg5LDUzNTkwLDUzNTkxLDUzNTkyLDUzNTkzLDUzNTk0LDUzNTk1LDUzNTk4LDUzNjAwLDUzNjAyLDUzNjAzLDUzNjA0LDUzNjA1LDUzNjA2LDUzNjA3LDUzNjA5LDUzNjEwLDUzNjExLDUzNjEzLDQ2NDAwLDQ2NDAxLDQ2NDAzLDQ2NDA0LDQ2NDA1LDQ2NDExLDQ2NDEyLDQ2NDEzLDQ2NDE2LDQ2NDIwLDQ2NDI4LDQ2NDI5LDQ2NDMxLDQ2NDMyLDQ2NDMzLDQ2NDk2LDQ2NDk3LDQ2NTAwLDQ2NTA0LDQ2NTA2LDQ2NTA3LDQ2NTEyLDQ2NTEzLDQ2NTE1LDQ2NTE2LDQ2NTE3LDQ2NTIzLDQ2NTI0LDQ2NTI1LDQ2NTI4LDQ2NTMyLDQ2NTQwLDQ2NTQxLDQ2NTQzLDQ2NTQ0LDQ2NTQ1LDQ2NTUyLDQ2NTcyLDQ2NjA4LDQ2NjA5LDQ2NjEyLDQ2NjE2LDQ2NjI5LDQ2NjM2LDQ2NjQ0LDQ2NjY0LDQ2NjkyLDQ2Njk2LDQ2NzQ4LDQ2NzQ5LDQ2NzUyLDQ2NzU2LDQ2NzYzLDQ2NzY0LDQ2NzY5LDQ2ODA0LDQ2ODMyLDQ2ODM2LDQ2ODQwLDQ2ODQ4LDQ2ODQ5LDQ2ODUzLDQ2ODg4LDQ2ODg5LDQ2ODkyLDQ2ODk1LDQ2ODk2LDQ2OTA0LDQ2OTA1LDQ2OTA3LDQ2OTE2LDQ2OTIwLDQ2OTI0LDQ2OTMyLDQ2OTMzLDQ2OTQ0LDQ2OTQ4LDQ2OTUyLDQ2OTYwLDQ2OTYxLDQ2OTYzLDQ2OTY1LDQ2OTcyLDQ2OTczLDQ2OTc2LDQ2OTgwLDQ2OTg4LDQ2OTg5LDQ2OTkxLDQ2OTkyLDQ2OTkzLDQ2OTk0LDQ2OTk4LDQ2OTk5LDUzNjE0LDUzNjE1LDUzNjE2LDUzNjE3LDUzNjE4LDUzNjE5LDUzNjIwLDUzNjIxLDUzNjIyLDUzNjIzLDUzNjI0LDUzNjI1LDUzNjI2LDUzNjI3LDUzNjI5LDUzNjMwLDUzNjMxLDUzNjMyLDUzNjMzLDUzNjM0LDUzNjM1LDUzNjM3LDUzNjM4LDUzNjM5LDUzNjQxLDUzNjQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjQzLDUzNjQ0LDUzNjQ1LDUzNjQ2LDUzNjQ3LDUzNjQ4LDUzNjQ5LDUzNjUwLDUzNjUxLDUzNjUyLDUzNjUzLDUzNjU0LDUzNjU1LDUzNjU2LDUzNjU3LDUzNjU4LDUzNjU5LDUzNjYwLDUzNjYxLDUzNjYyLDUzNjYzLDUzNjY2LDUzNjY3LDUzNjY5LDUzNjcwLDUzNjcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNjczLDUzNjc0LDUzNjc1LDUzNjc2LDUzNjc3LDUzNjc4LDUzNjc5LDUzNjgyLDUzNjg0LDUzNjg2LDUzNjg3LDUzNjg4LDUzNjg5LDUzNjkxLDUzNjkzLDUzNjk0LDUzNjk1LDUzNjk3LDUzNjk4LDUzNjk5LDUzNzAwLDUzNzAxLDUzNzAyLDUzNzAzLDUzNzA0LDUzNzA1LDUzNzA2LDUzNzA3LDUzNzA4LDUzNzA5LDUzNzEwLDUzNzExLDQ3MDAwLDQ3MDAxLDQ3MDA0LDQ3MDA4LDQ3MDE2LDQ3MDE3LDQ3MDE5LDQ3MDIwLDQ3MDIxLDQ3MDI4LDQ3MDI5LDQ3MDMyLDQ3MDQ3LDQ3MDQ5LDQ3MDg0LDQ3MDg1LDQ3MDg4LDQ3MDkyLDQ3MTAwLDQ3MTAxLDQ3MTAzLDQ3MTA0LDQ3MTA1LDQ3MTExLDQ3MTEyLDQ3MTEzLDQ3MTE2LDQ3MTIwLDQ3MTI4LDQ3MTI5LDQ3MTMxLDQ3MTMzLDQ3MTQwLDQ3MTQxLDQ3MTQ0LDQ3MTQ4LDQ3MTU2LDQ3MTU3LDQ3MTU5LDQ3MTYwLDQ3MTYxLDQ3MTY4LDQ3MTcyLDQ3MTg1LDQ3MTg3LDQ3MTk2LDQ3MTk3LDQ3MjAwLDQ3MjA0LDQ3MjEyLDQ3MjEzLDQ3MjE1LDQ3MjE3LDQ3MjI0LDQ3MjI4LDQ3MjQ1LDQ3MjcyLDQ3MjgwLDQ3Mjg0LDQ3Mjg4LDQ3Mjk2LDQ3Mjk3LDQ3Mjk5LDQ3MzAxLDQ3MzA4LDQ3MzEyLDQ3MzE2LDQ3MzI1LDQ3MzI3LDQ3MzI5LDQ3MzM2LDQ3MzM3LDQ3MzQwLDQ3MzQ0LDQ3MzUyLDQ3MzUzLDQ3MzU1LDQ3MzU3LDQ3MzY0LDQ3Mzg0LDQ3MzkyLDQ3NDIwLDQ3NDIxLDQ3NDI0LDQ3NDI4LDQ3NDM2LDQ3NDM5LDQ3NDQxLDQ3NDQ4LDQ3NDQ5LDQ3NDUyLDQ3NDU2LDQ3NDY0LDQ3NDY1LDUzNzEyLDUzNzEzLDUzNzE0LDUzNzE1LDUzNzE2LDUzNzE3LDUzNzE4LDUzNzE5LDUzNzIxLDUzNzIyLDUzNzIzLDUzNzI0LDUzNzI1LDUzNzI2LDUzNzI3LDUzNzI4LDUzNzI5LDUzNzMwLDUzNzMxLDUzNzMyLDUzNzMzLDUzNzM0LDUzNzM1LDUzNzM2LDUzNzM3LDUzNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzM5LDUzNzQwLDUzNzQxLDUzNzQyLDUzNzQzLDUzNzQ0LDUzNzQ1LDUzNzQ2LDUzNzQ3LDUzNzQ5LDUzNzUwLDUzNzUxLDUzNzUzLDUzNzU0LDUzNzU1LDUzNzU2LDUzNzU3LDUzNzU4LDUzNzU5LDUzNzYwLDUzNzYxLDUzNzYyLDUzNzYzLDUzNzY0LDUzNzY1LDUzNzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzNzY4LDUzNzcwLDUzNzcxLDUzNzcyLDUzNzczLDUzNzc0LDUzNzc1LDUzNzc3LDUzNzc4LDUzNzc5LDUzNzgwLDUzNzgxLDUzNzgyLDUzNzgzLDUzNzg0LDUzNzg1LDUzNzg2LDUzNzg3LDUzNzg4LDUzNzg5LDUzNzkwLDUzNzkxLDUzNzkyLDUzNzkzLDUzNzk0LDUzNzk1LDUzNzk2LDUzNzk3LDUzNzk4LDUzNzk5LDUzODAwLDUzODAxLDQ3NDY3LDQ3NDY5LDQ3NDc2LDQ3NDc3LDQ3NDgwLDQ3NDg0LDQ3NDkyLDQ3NDkzLDQ3NDk1LDQ3NDk3LDQ3NDk4LDQ3NTAxLDQ3NTAyLDQ3NTMyLDQ3NTMzLDQ3NTM2LDQ3NTQwLDQ3NTQ4LDQ3NTQ5LDQ3NTUxLDQ3NTUzLDQ3NTYwLDQ3NTYxLDQ3NTY0LDQ3NTY2LDQ3NTY3LDQ3NTY4LDQ3NTY5LDQ3NTcwLDQ3NTc2LDQ3NTc3LDQ3NTc5LDQ3NTgxLDQ3NTgyLDQ3NTg1LDQ3NTg3LDQ3NTg4LDQ3NTg5LDQ3NTkyLDQ3NTk2LDQ3NjA0LDQ3NjA1LDQ3NjA3LDQ3NjA4LDQ3NjA5LDQ3NjEwLDQ3NjE2LDQ3NjE3LDQ3NjI0LDQ3NjM3LDQ3NjcyLDQ3NjczLDQ3Njc2LDQ3NjgwLDQ3NjgyLDQ3Njg4LDQ3Njg5LDQ3NjkxLDQ3NjkzLDQ3Njk0LDQ3Njk5LDQ3NzAwLDQ3NzAxLDQ3NzA0LDQ3NzA4LDQ3NzE2LDQ3NzE3LDQ3NzE5LDQ3NzIwLDQ3NzIxLDQ3NzI4LDQ3NzI5LDQ3NzMyLDQ3NzM2LDQ3NzQ3LDQ3NzQ4LDQ3NzQ5LDQ3NzUxLDQ3NzU2LDQ3Nzg0LDQ3Nzg1LDQ3Nzg3LDQ3Nzg4LDQ3NzkyLDQ3Nzk0LDQ3ODAwLDQ3ODAxLDQ3ODAzLDQ3ODA1LDQ3ODEyLDQ3ODE2LDQ3ODMyLDQ3ODMzLDQ3ODY4LDUzODAyLDUzODAzLDUzODA2LDUzODA3LDUzODA5LDUzODEwLDUzODExLDUzODEzLDUzODE0LDUzODE1LDUzODE2LDUzODE3LDUzODE4LDUzODE5LDUzODIyLDUzODI0LDUzODI2LDUzODI3LDUzODI4LDUzODI5LDUzODMwLDUzODMxLDUzODMzLDUzODM0LDUzODM1LDUzODM2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODM3LDUzODM4LDUzODM5LDUzODQwLDUzODQxLDUzODQyLDUzODQzLDUzODQ0LDUzODQ1LDUzODQ2LDUzODQ3LDUzODQ4LDUzODQ5LDUzODUwLDUzODUxLDUzODUzLDUzODU0LDUzODU1LDUzODU2LDUzODU3LDUzODU4LDUzODU5LDUzODYxLDUzODYyLDUzODYzLDUzODY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODY1LDUzODY2LDUzODY3LDUzODY4LDUzODY5LDUzODcwLDUzODcxLDUzODcyLDUzODczLDUzODc0LDUzODc1LDUzODc2LDUzODc3LDUzODc4LDUzODc5LDUzODgwLDUzODgxLDUzODgyLDUzODgzLDUzODg0LDUzODg1LDUzODg2LDUzODg3LDUzODkwLDUzODkxLDUzODkzLDUzODk0LDUzODk1LDUzODk3LDUzODk4LDUzODk5LDUzOTAwLDQ3ODcyLDQ3ODc2LDQ3ODg1LDQ3ODg3LDQ3ODg5LDQ3ODk2LDQ3OTAwLDQ3OTA0LDQ3OTEzLDQ3OTE1LDQ3OTI0LDQ3OTI1LDQ3OTI2LDQ3OTI4LDQ3OTMxLDQ3OTMyLDQ3OTMzLDQ3OTM0LDQ3OTQwLDQ3OTQxLDQ3OTQzLDQ3OTQ1LDQ3OTQ5LDQ3OTUxLDQ3OTUyLDQ3OTU2LDQ3OTYwLDQ3OTY5LDQ3OTcxLDQ3OTgwLDQ4MDA4LDQ4MDEyLDQ4MDE2LDQ4MDM2LDQ4MDQwLDQ4MDQ0LDQ4MDUyLDQ4MDU1LDQ4MDY0LDQ4MDY4LDQ4MDcyLDQ4MDgwLDQ4MDgzLDQ4MTIwLDQ4MTIxLDQ4MTI0LDQ4MTI3LDQ4MTI4LDQ4MTMwLDQ4MTM2LDQ4MTM3LDQ4MTM5LDQ4MTQwLDQ4MTQxLDQ4MTQzLDQ4MTQ1LDQ4MTQ4LDQ4MTQ5LDQ4MTUwLDQ4MTUxLDQ4MTUyLDQ4MTU1LDQ4MTU2LDQ4MTU3LDQ4MTU4LDQ4MTU5LDQ4MTY0LDQ4MTY1LDQ4MTY3LDQ4MTY5LDQ4MTczLDQ4MTc2LDQ4MTc3LDQ4MTgwLDQ4MTg0LDQ4MTkyLDQ4MTkzLDQ4MTk1LDQ4MTk2LDQ4MTk3LDQ4MjAxLDQ4MjA0LDQ4MjA1LDQ4MjA4LDQ4MjIxLDQ4MjYwLDQ4MjYxLDQ4MjY0LDQ4MjY3LDQ4MjY4LDQ4MjcwLDQ4Mjc2LDQ4Mjc3LDQ4Mjc5LDUzOTAxLDUzOTAyLDUzOTAzLDUzOTA2LDUzOTA3LDUzOTA4LDUzOTEwLDUzOTExLDUzOTEyLDUzOTEzLDUzOTE0LDUzOTE1LDUzOTE3LDUzOTE4LDUzOTE5LDUzOTIxLDUzOTIyLDUzOTIzLDUzOTI1LDUzOTI2LDUzOTI3LDUzOTI4LDUzOTI5LDUzOTMwLDUzOTMxLDUzOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTM0LDUzOTM1LDUzOTM2LDUzOTM4LDUzOTM5LDUzOTQwLDUzOTQxLDUzOTQyLDUzOTQzLDUzOTQ2LDUzOTQ3LDUzOTQ5LDUzOTUwLDUzOTUzLDUzOTU1LDUzOTU2LDUzOTU3LDUzOTU4LDUzOTU5LDUzOTYyLDUzOTY0LDUzOTY1LDUzOTY2LDUzOTY3LDUzOTY4LDUzOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzOTcwLDUzOTcxLDUzOTczLDUzOTc0LDUzOTc1LDUzOTc3LDUzOTc4LDUzOTc5LDUzOTgxLDUzOTgyLDUzOTgzLDUzOTg0LDUzOTg1LDUzOTg2LDUzOTg3LDUzOTkwLDUzOTkxLDUzOTkyLDUzOTkzLDUzOTk0LDUzOTk1LDUzOTk2LDUzOTk3LDUzOTk4LDUzOTk5LDU0MDAyLDU0MDAzLDU0MDA1LDU0MDA2LDU0MDA3LDU0MDA5LDU0MDEwLDQ4MjgxLDQ4MjgyLDQ4Mjg4LDQ4Mjg5LDQ4MjkyLDQ4Mjk1LDQ4Mjk2LDQ4MzA0LDQ4MzA1LDQ4MzA3LDQ4MzA4LDQ4MzA5LDQ4MzE2LDQ4MzE3LDQ4MzIwLDQ4MzI0LDQ4MzMzLDQ4MzM1LDQ4MzM2LDQ4MzM3LDQ4MzQxLDQ4MzQ0LDQ4MzQ4LDQ4MzcyLDQ4MzczLDQ4Mzc0LDQ4Mzc2LDQ4MzgwLDQ4Mzg4LDQ4Mzg5LDQ4MzkxLDQ4MzkzLDQ4NDAwLDQ4NDA0LDQ4NDIwLDQ4NDI4LDQ4NDQ4LDQ4NDU2LDQ4NDU3LDQ4NDYwLDQ4NDY0LDQ4NDcyLDQ4NDczLDQ4NDg0LDQ4NDg4LDQ4NTEyLDQ4NTEzLDQ4NTE2LDQ4NTE5LDQ4NTIwLDQ4NTIxLDQ4NTIyLDQ4NTI4LDQ4NTI5LDQ4NTMxLDQ4NTMzLDQ4NTM3LDQ4NTM4LDQ4NTQwLDQ4NTQ4LDQ4NTYwLDQ4NTY4LDQ4NTk2LDQ4NTk3LDQ4NjAwLDQ4NjA0LDQ4NjE3LDQ4NjI0LDQ4NjI4LDQ4NjMyLDQ4NjQwLDQ4NjQzLDQ4NjQ1LDQ4NjUyLDQ4NjUzLDQ4NjU2LDQ4NjYwLDQ4NjY4LDQ4NjY5LDQ4NjcxLDQ4NzA4LDQ4NzA5LDQ4NzEyLDQ4NzE2LDQ4NzE4LDQ4NzI0LDQ4NzI1LDQ4NzI3LDQ4NzI5LDQ4NzMwLDQ4NzMxLDQ4NzM2LDQ4NzM3LDQ4NzQwLDU0MDExLDU0MDEyLDU0MDEzLDU0MDE0LDU0MDE1LDU0MDE4LDU0MDIwLDU0MDIyLDU0MDIzLDU0MDI0LDU0MDI1LDU0MDI2LDU0MDI3LDU0MDMxLDU0MDMzLDU0MDM0LDU0MDM1LDU0MDM3LDU0MDM5LDU0MDQwLDU0MDQxLDU0MDQyLDU0MDQzLDU0MDQ2LDU0MDUwLDU0MDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDUyLDU0MDU0LDU0MDU1LDU0MDU4LDU0MDU5LDU0MDYxLDU0MDYyLDU0MDYzLDU0MDY1LDU0MDY2LDU0MDY3LDU0MDY4LDU0MDY5LDU0MDcwLDU0MDcxLDU0MDc0LDU0MDc4LDU0MDc5LDU0MDgwLDU0MDgxLDU0MDgyLDU0MDgzLDU0MDg2LDU0MDg3LDU0MDg4LDU0MDg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MDkwLDU0MDkxLDU0MDkyLDU0MDkzLDU0MDk0LDU0MDk1LDU0MDk2LDU0MDk3LDU0MDk4LDU0MDk5LDU0MTAwLDU0MTAxLDU0MTAyLDU0MTAzLDU0MTA0LDU0MTA1LDU0MTA2LDU0MTA3LDU0MTA4LDU0MTA5LDU0MTEwLDU0MTExLDU0MTEyLDU0MTEzLDU0MTE0LDU0MTE1LDU0MTE2LDU0MTE3LDU0MTE4LDU0MTE5LDU0MTIwLDU0MTIxLDQ4NzQ0LDQ4NzQ2LDQ4NzUyLDQ4NzUzLDQ4NzU1LDQ4NzU2LDQ4NzU3LDQ4NzYzLDQ4NzY0LDQ4NzY1LDQ4NzY4LDQ4NzcyLDQ4NzgwLDQ4NzgxLDQ4NzgzLDQ4Nzg0LDQ4Nzg1LDQ4NzkyLDQ4NzkzLDQ4ODA4LDQ4ODQ4LDQ4ODQ5LDQ4ODUyLDQ4ODU1LDQ4ODU2LDQ4ODY0LDQ4ODY3LDQ4ODY4LDQ4ODY5LDQ4ODc2LDQ4ODk3LDQ4OTA0LDQ4OTA1LDQ4OTIwLDQ4OTIxLDQ4OTIzLDQ4OTI0LDQ4OTI1LDQ4OTYwLDQ4OTYxLDQ4OTY0LDQ4OTY4LDQ4OTc2LDQ4OTc3LDQ4OTgxLDQ5MDQ0LDQ5MDcyLDQ5MDkzLDQ5MTAwLDQ5MTAxLDQ5MTA0LDQ5MTA4LDQ5MTE2LDQ5MTE5LDQ5MTIxLDQ5MjEyLDQ5MjMzLDQ5MjQwLDQ5MjQ0LDQ5MjQ4LDQ5MjU2LDQ5MjU3LDQ5Mjk2LDQ5Mjk3LDQ5MzAwLDQ5MzA0LDQ5MzEyLDQ5MzEzLDQ5MzE1LDQ5MzE3LDQ5MzI0LDQ5MzI1LDQ5MzI3LDQ5MzI4LDQ5MzMxLDQ5MzMyLDQ5MzMzLDQ5MzM0LDQ5MzQwLDQ5MzQxLDQ5MzQzLDQ5MzQ0LDQ5MzQ1LDQ5MzQ5LDQ5MzUyLDQ5MzUzLDQ5MzU2LDQ5MzYwLDQ5MzY4LDQ5MzY5LDQ5MzcxLDQ5MzcyLDQ5MzczLDQ5MzgwLDU0MTIyLDU0MTIzLDU0MTI0LDU0MTI1LDU0MTI2LDU0MTI3LDU0MTI4LDU0MTI5LDU0MTMwLDU0MTMxLDU0MTMyLDU0MTMzLDU0MTM0LDU0MTM1LDU0MTM2LDU0MTM3LDU0MTM4LDU0MTM5LDU0MTQyLDU0MTQzLDU0MTQ1LDU0MTQ2LDU0MTQ3LDU0MTQ5LDU0MTUwLDU0MTUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTUyLDU0MTUzLDU0MTU0LDU0MTU1LDU0MTU4LDU0MTYyLDU0MTYzLDU0MTY0LDU0MTY1LDU0MTY2LDU0MTY3LDU0MTcwLDU0MTcxLDU0MTczLDU0MTc0LDU0MTc1LDU0MTc3LDU0MTc4LDU0MTc5LDU0MTgwLDU0MTgxLDU0MTgyLDU0MTgzLDU0MTg2LDU0MTg4LDU0MTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MTkxLDU0MTkyLDU0MTkzLDU0MTk0LDU0MTk1LDU0MTk3LDU0MTk4LDU0MTk5LDU0MjAxLDU0MjAyLDU0MjAzLDU0MjA1LDU0MjA2LDU0MjA3LDU0MjA4LDU0MjA5LDU0MjEwLDU0MjExLDU0MjE0LDU0MjE1LDU0MjE4LDU0MjE5LDU0MjIwLDU0MjIxLDU0MjIyLDU0MjIzLDU0MjI1LDU0MjI2LDU0MjI3LDU0MjI4LDU0MjI5LDU0MjMwLDQ5MzgxLDQ5Mzg0LDQ5Mzg4LDQ5Mzk2LDQ5Mzk3LDQ5Mzk5LDQ5NDAxLDQ5NDA4LDQ5NDEyLDQ5NDE2LDQ5NDI0LDQ5NDI5LDQ5NDM2LDQ5NDM3LDQ5NDM4LDQ5NDM5LDQ5NDQwLDQ5NDQzLDQ5NDQ0LDQ5NDQ2LDQ5NDQ3LDQ5NDUyLDQ5NDUzLDQ5NDU1LDQ5NDU2LDQ5NDU3LDQ5NDYyLDQ5NDY0LDQ5NDY1LDQ5NDY4LDQ5NDcyLDQ5NDgwLDQ5NDgxLDQ5NDgzLDQ5NDg0LDQ5NDg1LDQ5NDkyLDQ5NDkzLDQ5NDk2LDQ5NTAwLDQ5NTA4LDQ5NTA5LDQ5NTExLDQ5NTEyLDQ5NTEzLDQ5NTIwLDQ5NTI0LDQ5NTI4LDQ5NTQxLDQ5NTQ4LDQ5NTQ5LDQ5NTUwLDQ5NTUyLDQ5NTU2LDQ5NTU4LDQ5NTY0LDQ5NTY1LDQ5NTY3LDQ5NTY5LDQ5NTczLDQ5NTc2LDQ5NTc3LDQ5NTgwLDQ5NTg0LDQ5NTk3LDQ5NjA0LDQ5NjA4LDQ5NjEyLDQ5NjIwLDQ5NjIzLDQ5NjI0LDQ5NjMyLDQ5NjM2LDQ5NjQwLDQ5NjQ4LDQ5NjQ5LDQ5NjUxLDQ5NjYwLDQ5NjYxLDQ5NjY0LDQ5NjY4LDQ5Njc2LDQ5Njc3LDQ5Njc5LDQ5NjgxLDQ5Njg4LDQ5Njg5LDQ5NjkyLDQ5Njk1LDQ5Njk2LDQ5NzA0LDQ5NzA1LDQ5NzA3LDQ5NzA5LDU0MjMxLDU0MjMzLDU0MjM0LDU0MjM1LDU0MjM2LDU0MjM3LDU0MjM4LDU0MjM5LDU0MjQwLDU0MjQyLDU0MjQ0LDU0MjQ1LDU0MjQ2LDU0MjQ3LDU0MjQ4LDU0MjQ5LDU0MjUwLDU0MjUxLDU0MjU0LDU0MjU1LDU0MjU3LDU0MjU4LDU0MjU5LDU0MjYxLDU0MjYyLDU0MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjY0LDU0MjY1LDU0MjY2LDU0MjY3LDU0MjcwLDU0MjcyLDU0Mjc0LDU0Mjc1LDU0Mjc2LDU0Mjc3LDU0Mjc4LDU0Mjc5LDU0MjgxLDU0MjgyLDU0MjgzLDU0Mjg0LDU0Mjg1LDU0Mjg2LDU0Mjg3LDU0Mjg4LDU0Mjg5LDU0MjkwLDU0MjkxLDU0MjkyLDU0MjkzLDU0Mjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mjk1LDU0Mjk2LDU0Mjk3LDU0Mjk4LDU0Mjk5LDU0MzAwLDU0MzAyLDU0MzAzLDU0MzA0LDU0MzA1LDU0MzA2LDU0MzA3LDU0MzA4LDU0MzA5LDU0MzEwLDU0MzExLDU0MzEyLDU0MzEzLDU0MzE0LDU0MzE1LDU0MzE2LDU0MzE3LDU0MzE4LDU0MzE5LDU0MzIwLDU0MzIxLDU0MzIyLDU0MzIzLDU0MzI0LDU0MzI1LDU0MzI2LDU0MzI3LDQ5NzExLDQ5NzEzLDQ5NzE0LDQ5NzE2LDQ5NzM2LDQ5NzQ0LDQ5NzQ1LDQ5NzQ4LDQ5NzUyLDQ5NzYwLDQ5NzY1LDQ5NzcyLDQ5NzczLDQ5Nzc2LDQ5NzgwLDQ5Nzg4LDQ5Nzg5LDQ5NzkxLDQ5NzkzLDQ5ODAwLDQ5ODAxLDQ5ODA4LDQ5ODE2LDQ5ODE5LDQ5ODIxLDQ5ODI4LDQ5ODI5LDQ5ODMyLDQ5ODM2LDQ5ODM3LDQ5ODQ0LDQ5ODQ1LDQ5ODQ3LDQ5ODQ5LDQ5ODg0LDQ5ODg1LDQ5ODg4LDQ5ODkxLDQ5ODkyLDQ5ODk5LDQ5OTAwLDQ5OTAxLDQ5OTAzLDQ5OTA1LDQ5OTEwLDQ5OTEyLDQ5OTEzLDQ5OTE1LDQ5OTE2LDQ5OTIwLDQ5OTI4LDQ5OTI5LDQ5OTMyLDQ5OTMzLDQ5OTM5LDQ5OTQwLDQ5OTQxLDQ5OTQ0LDQ5OTQ4LDQ5OTU2LDQ5OTU3LDQ5OTYwLDQ5OTYxLDQ5OTg5LDUwMDI0LDUwMDI1LDUwMDI4LDUwMDMyLDUwMDM0LDUwMDQwLDUwMDQxLDUwMDQ0LDUwMDQ1LDUwMDUyLDUwMDU2LDUwMDYwLDUwMTEyLDUwMTM2LDUwMTM3LDUwMTQwLDUwMTQzLDUwMTQ0LDUwMTQ2LDUwMTUyLDUwMTUzLDUwMTU3LDUwMTY0LDUwMTY1LDUwMTY4LDUwMTg0LDUwMTkyLDUwMjEyLDUwMjIwLDUwMjI0LDU0MzI4LDU0MzI5LDU0MzMwLDU0MzMxLDU0MzMyLDU0MzMzLDU0MzM0LDU0MzM1LDU0MzM3LDU0MzM4LDU0MzM5LDU0MzQxLDU0MzQyLDU0MzQzLDU0MzQ0LDU0MzQ1LDU0MzQ2LDU0MzQ3LDU0MzQ4LDU0MzQ5LDU0MzUwLDU0MzUxLDU0MzUyLDU0MzUzLDU0MzU0LDU0MzU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MzU2LDU0MzU3LDU0MzU4LDU0MzU5LDU0MzYwLDU0MzYxLDU0MzYyLDU0MzYzLDU0MzY1LDU0MzY2LDU0MzY3LDU0MzY5LDU0MzcwLDU0MzcxLDU0MzczLDU0Mzc0LDU0Mzc1LDU0Mzc2LDU0Mzc3LDU0Mzc4LDU0Mzc5LDU0MzgwLDU0MzgyLDU0Mzg0LDU0Mzg1LDU0Mzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Mzg3LDU0Mzg4LDU0Mzg5LDU0MzkwLDU0MzkxLDU0Mzk0LDU0Mzk1LDU0Mzk3LDU0Mzk4LDU0NDAxLDU0NDAzLDU0NDA0LDU0NDA1LDU0NDA2LDU0NDA3LDU0NDEwLDU0NDEyLDU0NDE0LDU0NDE1LDU0NDE2LDU0NDE3LDU0NDE4LDU0NDE5LDU0NDIxLDU0NDIyLDU0NDIzLDU0NDI0LDU0NDI1LDU0NDI2LDU0NDI3LDU0NDI4LDU0NDI5LDUwMjI4LDUwMjM2LDUwMjM3LDUwMjQ4LDUwMjc2LDUwMjc3LDUwMjgwLDUwMjg0LDUwMjkyLDUwMjkzLDUwMjk3LDUwMzA0LDUwMzI0LDUwMzMyLDUwMzYwLDUwMzY0LDUwNDA5LDUwNDE2LDUwNDE3LDUwNDIwLDUwNDI0LDUwNDI2LDUwNDMxLDUwNDMyLDUwNDMzLDUwNDQ0LDUwNDQ4LDUwNDUyLDUwNDYwLDUwNDcyLDUwNDczLDUwNDc2LDUwNDgwLDUwNDg4LDUwNDg5LDUwNDkxLDUwNDkzLDUwNTAwLDUwNTAxLDUwNTA0LDUwNTA1LDUwNTA2LDUwNTA4LDUwNTA5LDUwNTEwLDUwNTE1LDUwNTE2LDUwNTE3LDUwNTE5LDUwNTIwLDUwNTIxLDUwNTI1LDUwNTI2LDUwNTI4LDUwNTI5LDUwNTMyLDUwNTM2LDUwNTQ0LDUwNTQ1LDUwNTQ3LDUwNTQ4LDUwNTQ5LDUwNTU2LDUwNTU3LDUwNTYwLDUwNTY0LDUwNTY3LDUwNTcyLDUwNTczLDUwNTc1LDUwNTc3LDUwNTgxLDUwNTgzLDUwNTg0LDUwNTg4LDUwNTkyLDUwNjAxLDUwNjEyLDUwNjEzLDUwNjE2LDUwNjE3LDUwNjE5LDUwNjIwLDUwNjIxLDUwNjIyLDUwNjI4LDUwNjI5LDUwNjMwLDUwNjMxLDUwNjMyLDUwNjMzLDUwNjM0LDUwNjM2LDUwNjM4LDU0NDMwLDU0NDMxLDU0NDMyLDU0NDMzLDU0NDM0LDU0NDM1LDU0NDM2LDU0NDM3LDU0NDM4LDU0NDM5LDU0NDQwLDU0NDQyLDU0NDQzLDU0NDQ0LDU0NDQ1LDU0NDQ2LDU0NDQ3LDU0NDQ4LDU0NDQ5LDU0NDUwLDU0NDUxLDU0NDUyLDU0NDUzLDU0NDU0LDU0NDU1LDU0NDU2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDU3LDU0NDU4LDU0NDU5LDU0NDYwLDU0NDYxLDU0NDYyLDU0NDYzLDU0NDY0LDU0NDY1LDU0NDY2LDU0NDY3LDU0NDY4LDU0NDY5LDU0NDcwLDU0NDcxLDU0NDcyLDU0NDczLDU0NDc0LDU0NDc1LDU0NDc3LDU0NDc4LDU0NDc5LDU0NDgxLDU0NDgyLDU0NDgzLDU0NDg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NDg2LDU0NDg3LDU0NDg4LDU0NDg5LDU0NDkwLDU0NDkxLDU0NDkzLDU0NDk0LDU0NDk2LDU0NDk3LDU0NDk4LDU0NDk5LDU0NTAwLDU0NTAxLDU0NTAyLDU0NTAzLDU0NTA1LDU0NTA2LDU0NTA3LDU0NTA5LDU0NTEwLDU0NTExLDU0NTEzLDU0NTE0LDU0NTE1LDU0NTE2LDU0NTE3LDU0NTE4LDU0NTE5LDU0NTIxLDU0NTIyLDU0NTI0LDUwNjQwLDUwNjQxLDUwNjQ0LDUwNjQ4LDUwNjU2LDUwNjU3LDUwNjU5LDUwNjYxLDUwNjY4LDUwNjY5LDUwNjcwLDUwNjcyLDUwNjc2LDUwNjc4LDUwNjc5LDUwNjg0LDUwNjg1LDUwNjg2LDUwNjg3LDUwNjg4LDUwNjg5LDUwNjkzLDUwNjk0LDUwNjk1LDUwNjk2LDUwNzAwLDUwNzA0LDUwNzEyLDUwNzEzLDUwNzE1LDUwNzE2LDUwNzI0LDUwNzI1LDUwNzI4LDUwNzMyLDUwNzMzLDUwNzM0LDUwNzM2LDUwNzM5LDUwNzQwLDUwNzQxLDUwNzQzLDUwNzQ1LDUwNzQ3LDUwNzUyLDUwNzUzLDUwNzU2LDUwNzYwLDUwNzY4LDUwNzY5LDUwNzcxLDUwNzcyLDUwNzczLDUwNzgwLDUwNzgxLDUwNzg0LDUwNzk2LDUwNzk5LDUwODAxLDUwODA4LDUwODA5LDUwODEyLDUwODE2LDUwODI0LDUwODI1LDUwODI3LDUwODI5LDUwODM2LDUwODM3LDUwODQwLDUwODQ0LDUwODUyLDUwODUzLDUwODU1LDUwODU3LDUwODY0LDUwODY1LDUwODY4LDUwODcyLDUwODczLDUwODc0LDUwODgwLDUwODgxLDUwODgzLDUwODg1LDUwODkyLDUwODkzLDUwODk2LDUwOTAwLDUwOTA4LDUwOTA5LDUwOTEyLDUwOTEzLDUwOTIwLDU0NTI2LDU0NTI3LDU0NTI4LDU0NTI5LDU0NTMwLDU0NTMxLDU0NTMzLDU0NTM0LDU0NTM1LDU0NTM3LDU0NTM4LDU0NTM5LDU0NTQxLDU0NTQyLDU0NTQzLDU0NTQ0LDU0NTQ1LDU0NTQ2LDU0NTQ3LDU0NTUwLDU0NTUyLDU0NTUzLDU0NTU0LDU0NTU1LDU0NTU2LDU0NTU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTU4LDU0NTU5LDU0NTYwLDU0NTYxLDU0NTYyLDU0NTYzLDU0NTY0LDU0NTY1LDU0NTY2LDU0NTY3LDU0NTY4LDU0NTY5LDU0NTcwLDU0NTcxLDU0NTcyLDU0NTczLDU0NTc0LDU0NTc1LDU0NTc2LDU0NTc3LDU0NTc4LDU0NTc5LDU0NTgwLDU0NTgxLDU0NTgyLDU0NTgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NTg0LDU0NTg1LDU0NTg2LDU0NTg3LDU0NTkwLDU0NTkxLDU0NTkzLDU0NTk0LDU0NTk1LDU0NTk3LDU0NTk4LDU0NTk5LDU0NjAwLDU0NjAxLDU0NjAyLDU0NjAzLDU0NjA2LDU0NjA4LDU0NjEwLDU0NjExLDU0NjEyLDU0NjEzLDU0NjE0LDU0NjE1LDU0NjE4LDU0NjE5LDU0NjIxLDU0NjIyLDU0NjIzLDU0NjI1LDU0NjI2LDU0NjI3LDUwOTIxLDUwOTI0LDUwOTI4LDUwOTM2LDUwOTM3LDUwOTQxLDUwOTQ4LDUwOTQ5LDUwOTUyLDUwOTU2LDUwOTY0LDUwOTY1LDUwOTY3LDUwOTY5LDUwOTc2LDUwOTc3LDUwOTgwLDUwOTg0LDUwOTkyLDUwOTkzLDUwOTk1LDUwOTk3LDUwOTk5LDUxMDA0LDUxMDA1LDUxMDA4LDUxMDEyLDUxMDE4LDUxMDIwLDUxMDIxLDUxMDIzLDUxMDI1LDUxMDI2LDUxMDI3LDUxMDI4LDUxMDI5LDUxMDMwLDUxMDMxLDUxMDMyLDUxMDM2LDUxMDQwLDUxMDQ4LDUxMDUxLDUxMDYwLDUxMDYxLDUxMDY0LDUxMDY4LDUxMDY5LDUxMDcwLDUxMDc1LDUxMDc2LDUxMDc3LDUxMDc5LDUxMDgwLDUxMDgxLDUxMDgyLDUxMDg2LDUxMDg4LDUxMDg5LDUxMDkyLDUxMDk0LDUxMDk1LDUxMDk2LDUxMDk4LDUxMTA0LDUxMTA1LDUxMTA3LDUxMTA4LDUxMTA5LDUxMTEwLDUxMTE2LDUxMTE3LDUxMTIwLDUxMTI0LDUxMTMyLDUxMTMzLDUxMTM1LDUxMTM2LDUxMTM3LDUxMTQ0LDUxMTQ1LDUxMTQ4LDUxMTUwLDUxMTUyLDUxMTYwLDUxMTY1LDUxMTcyLDUxMTc2LDUxMTgwLDUxMjAwLDUxMjAxLDUxMjA0LDUxMjA4LDUxMjEwLDU0NjI4LDU0NjMwLDU0NjMxLDU0NjM0LDU0NjM2LDU0NjM4LDU0NjM5LDU0NjQwLDU0NjQxLDU0NjQyLDU0NjQzLDU0NjQ2LDU0NjQ3LDU0NjQ5LDU0NjUwLDU0NjUxLDU0NjUzLDU0NjU0LDU0NjU1LDU0NjU2LDU0NjU3LDU0NjU4LDU0NjU5LDU0NjYyLDU0NjY2LDU0NjY3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NjY4LDU0NjY5LDU0NjcwLDU0NjcxLDU0NjczLDU0Njc0LDU0Njc1LDU0Njc2LDU0Njc3LDU0Njc4LDU0Njc5LDU0NjgwLDU0NjgxLDU0NjgyLDU0NjgzLDU0Njg0LDU0Njg1LDU0Njg2LDU0Njg3LDU0Njg4LDU0Njg5LDU0NjkwLDU0NjkxLDU0NjkyLDU0Njk0LDU0Njk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0Njk2LDU0Njk3LDU0Njk4LDU0Njk5LDU0NzAwLDU0NzAxLDU0NzAyLDU0NzAzLDU0NzA0LDU0NzA1LDU0NzA2LDU0NzA3LDU0NzA4LDU0NzA5LDU0NzEwLDU0NzExLDU0NzEyLDU0NzEzLDU0NzE0LDU0NzE1LDU0NzE2LDU0NzE3LDU0NzE4LDU0NzE5LDU0NzIwLDU0NzIxLDU0NzIyLDU0NzIzLDU0NzI0LDU0NzI1LDU0NzI2LDU0NzI3LDUxMjE2LDUxMjE3LDUxMjE5LDUxMjIxLDUxMjIyLDUxMjI4LDUxMjI5LDUxMjMyLDUxMjM2LDUxMjQ0LDUxMjQ1LDUxMjQ3LDUxMjQ5LDUxMjU2LDUxMjYwLDUxMjY0LDUxMjcyLDUxMjczLDUxMjc2LDUxMjc3LDUxMjg0LDUxMzEyLDUxMzEzLDUxMzE2LDUxMzIwLDUxMzIyLDUxMzI4LDUxMzI5LDUxMzMxLDUxMzMzLDUxMzM0LDUxMzM1LDUxMzM5LDUxMzQwLDUxMzQxLDUxMzQ4LDUxMzU3LDUxMzU5LDUxMzYxLDUxMzY4LDUxMzg4LDUxMzg5LDUxMzk2LDUxNDAwLDUxNDA0LDUxNDEyLDUxNDEzLDUxNDE1LDUxNDE3LDUxNDI0LDUxNDI1LDUxNDI4LDUxNDQ1LDUxNDUyLDUxNDUzLDUxNDU2LDUxNDYwLDUxNDYxLDUxNDYyLDUxNDY4LDUxNDY5LDUxNDcxLDUxNDczLDUxNDgwLDUxNTAwLDUxNTA4LDUxNTM2LDUxNTM3LDUxNTQwLDUxNTQ0LDUxNTUyLDUxNTUzLDUxNTU1LDUxNTY0LDUxNTY4LDUxNTcyLDUxNTgwLDUxNTkyLDUxNTkzLDUxNTk2LDUxNjAwLDUxNjA4LDUxNjA5LDUxNjExLDUxNjEzLDUxNjQ4LDUxNjQ5LDUxNjUyLDUxNjU1LDUxNjU2LDUxNjU4LDUxNjY0LDUxNjY1LDUxNjY3LDU0NzMwLDU0NzMxLDU0NzMzLDU0NzM0LDU0NzM1LDU0NzM3LDU0NzM5LDU0NzQwLDU0NzQxLDU0NzQyLDU0NzQzLDU0NzQ2LDU0NzQ4LDU0NzUwLDU0NzUxLDU0NzUyLDU0NzUzLDU0NzU0LDU0NzU1LDU0NzU4LDU0NzU5LDU0NzYxLDU0NzYyLDU0NzYzLDU0NzY1LDU0NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0NzY3LDU0NzY4LDU0NzY5LDU0NzcwLDU0NzcxLDU0Nzc0LDU0Nzc2LDU0Nzc4LDU0Nzc5LDU0NzgwLDU0NzgxLDU0NzgyLDU0NzgzLDU0Nzg2LDU0Nzg3LDU0Nzg5LDU0NzkwLDU0NzkxLDU0NzkzLDU0Nzk0LDU0Nzk1LDU0Nzk2LDU0Nzk3LDU0Nzk4LDU0Nzk5LDU0ODAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODA2LDU0ODA3LDU0ODA4LDU0ODA5LDU0ODEwLDU0ODExLDU0ODEzLDU0ODE0LDU0ODE1LDU0ODE3LDU0ODE4LDU0ODE5LDU0ODIxLDU0ODIyLDU0ODIzLDU0ODI0LDU0ODI1LDU0ODI2LDU0ODI3LDU0ODI4LDU0ODMwLDU0ODMxLDU0ODMyLDU0ODMzLDU0ODM0LDU0ODM1LDU0ODM2LDU0ODM3LDU0ODM4LDU0ODM5LDU0ODQyLDU0ODQzLDUxNjY5LDUxNjcwLDUxNjczLDUxNjc0LDUxNjc2LDUxNjc3LDUxNjgwLDUxNjgyLDUxNjg0LDUxNjg3LDUxNjkyLDUxNjkzLDUxNjk1LDUxNjk2LDUxNjk3LDUxNzA0LDUxNzA1LDUxNzA4LDUxNzEyLDUxNzIwLDUxNzIxLDUxNzIzLDUxNzI0LDUxNzI1LDUxNzMyLDUxNzM2LDUxNzUzLDUxNzg4LDUxNzg5LDUxNzkyLDUxNzk2LDUxODA0LDUxODA1LDUxODA3LDUxODA4LDUxODA5LDUxODE2LDUxODM3LDUxODQ0LDUxODY0LDUxOTAwLDUxOTAxLDUxOTA0LDUxOTA4LDUxOTE2LDUxOTE3LDUxOTE5LDUxOTIxLDUxOTIzLDUxOTI4LDUxOTI5LDUxOTM2LDUxOTQ4LDUxOTU2LDUxOTc2LDUxOTg0LDUxOTg4LDUxOTkyLDUyMDAwLDUyMDAxLDUyMDMzLDUyMDQwLDUyMDQxLDUyMDQ0LDUyMDQ4LDUyMDU2LDUyMDU3LDUyMDYxLDUyMDY4LDUyMDg4LDUyMDg5LDUyMTI0LDUyMTUyLDUyMTgwLDUyMTk2LDUyMTk5LDUyMjAxLDUyMjM2LDUyMjM3LDUyMjQwLDUyMjQ0LDUyMjUyLDUyMjUzLDUyMjU3LDUyMjU4LDUyMjYzLDUyMjY0LDUyMjY1LDUyMjY4LDUyMjcwLDUyMjcyLDUyMjgwLDUyMjgxLDUyMjgzLDU0ODQ1LDU0ODQ2LDU0ODQ3LDU0ODQ5LDU0ODUwLDU0ODUxLDU0ODUyLDU0ODU0LDU0ODU1LDU0ODU4LDU0ODYwLDU0ODYyLDU0ODYzLDU0ODY0LDU0ODY2LDU0ODY3LDU0ODcwLDU0ODcxLDU0ODczLDU0ODc0LDU0ODc1LDU0ODc3LDU0ODc4LDU0ODc5LDU0ODgwLDU0ODgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODgyLDU0ODgzLDU0ODg0LDU0ODg1LDU0ODg2LDU0ODg4LDU0ODkwLDU0ODkxLDU0ODkyLDU0ODkzLDU0ODk0LDU0ODk1LDU0ODk4LDU0ODk5LDU0OTAxLDU0OTAyLDU0OTAzLDU0OTA0LDU0OTA1LDU0OTA2LDU0OTA3LDU0OTA4LDU0OTA5LDU0OTEwLDU0OTExLDU0OTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0OTEzLDU0OTE0LDU0OTE2LDU0OTE4LDU0OTE5LDU0OTIwLDU0OTIxLDU0OTIyLDU0OTIzLDU0OTI2LDU0OTI3LDU0OTI5LDU0OTMwLDU0OTMxLDU0OTMzLDU0OTM0LDU0OTM1LDU0OTM2LDU0OTM3LDU0OTM4LDU0OTM5LDU0OTQwLDU0OTQyLDU0OTQ0LDU0OTQ2LDU0OTQ3LDU0OTQ4LDU0OTQ5LDU0OTUwLDU0OTUxLDU0OTUzLDU0OTU0LDUyMjg0LDUyMjg1LDUyMjg2LDUyMjkyLDUyMjkzLDUyMjk2LDUyMzAwLDUyMzA4LDUyMzA5LDUyMzExLDUyMzEyLDUyMzEzLDUyMzIwLDUyMzI0LDUyMzI2LDUyMzI4LDUyMzM2LDUyMzQxLDUyMzc2LDUyMzc3LDUyMzgwLDUyMzg0LDUyMzkyLDUyMzkzLDUyMzk1LDUyMzk2LDUyMzk3LDUyNDA0LDUyNDA1LDUyNDA4LDUyNDEyLDUyNDIwLDUyNDIxLDUyNDIzLDUyNDI1LDUyNDMyLDUyNDM2LDUyNDUyLDUyNDYwLDUyNDY0LDUyNDgxLDUyNDg4LDUyNDg5LDUyNDkyLDUyNDk2LDUyNTA0LDUyNTA1LDUyNTA3LDUyNTA5LDUyNTE2LDUyNTIwLDUyNTI0LDUyNTM3LDUyNTcyLDUyNTc2LDUyNTgwLDUyNTg4LDUyNTg5LDUyNTkxLDUyNTkzLDUyNjAwLDUyNjE2LDUyNjI4LDUyNjI5LDUyNjMyLDUyNjM2LDUyNjQ0LDUyNjQ1LDUyNjQ3LDUyNjQ5LDUyNjU2LDUyNjc2LDUyNjg0LDUyNjg4LDUyNzEyLDUyNzE2LDUyNzIwLDUyNzI4LDUyNzI5LDUyNzMxLDUyNzMzLDUyNzQwLDUyNzQ0LDUyNzQ4LDUyNzU2LDUyNzYxLDUyNzY4LDUyNzY5LDUyNzcyLDUyNzc2LDUyNzg0LDUyNzg1LDUyNzg3LDUyNzg5LDU0OTU1LDU0OTU3LDU0OTU4LDU0OTU5LDU0OTYxLDU0OTYyLDU0OTYzLDU0OTY0LDU0OTY1LDU0OTY2LDU0OTY3LDU0OTY4LDU0OTcwLDU0OTcyLDU0OTczLDU0OTc0LDU0OTc1LDU0OTc2LDU0OTc3LDU0OTc4LDU0OTc5LDU0OTgyLDU0OTgzLDU0OTg1LDU0OTg2LDU0OTg3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0OTg5LDU0OTkwLDU0OTkxLDU0OTkyLDU0OTk0LDU0OTk1LDU0OTk3LDU0OTk4LDU1MDAwLDU1MDAyLDU1MDAzLDU1MDA0LDU1MDA1LDU1MDA2LDU1MDA3LDU1MDA5LDU1MDEwLDU1MDExLDU1MDEzLDU1MDE0LDU1MDE1LDU1MDE3LDU1MDE4LDU1MDE5LDU1MDIwLDU1MDIxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDIyLDU1MDIzLDU1MDI1LDU1MDI2LDU1MDI3LDU1MDI4LDU1MDMwLDU1MDMxLDU1MDMyLDU1MDMzLDU1MDM0LDU1MDM1LDU1MDM4LDU1MDM5LDU1MDQxLDU1MDQyLDU1MDQzLDU1MDQ1LDU1MDQ2LDU1MDQ3LDU1MDQ4LDU1MDQ5LDU1MDUwLDU1MDUxLDU1MDUyLDU1MDUzLDU1MDU0LDU1MDU1LDU1MDU2LDU1MDU4LDU1MDU5LDU1MDYwLDUyODI0LDUyODI1LDUyODI4LDUyODMxLDUyODMyLDUyODMzLDUyODQwLDUyODQxLDUyODQzLDUyODQ1LDUyODUyLDUyODUzLDUyODU2LDUyODYwLDUyODY4LDUyODY5LDUyODcxLDUyODczLDUyODgwLDUyODgxLDUyODg0LDUyODg4LDUyODk2LDUyODk3LDUyODk5LDUyOTAwLDUyOTAxLDUyOTA4LDUyOTA5LDUyOTI5LDUyOTY0LDUyOTY1LDUyOTY4LDUyOTcxLDUyOTcyLDUyOTgwLDUyOTgxLDUyOTgzLDUyOTg0LDUyOTg1LDUyOTkyLDUyOTkzLDUyOTk2LDUzMDAwLDUzMDA4LDUzMDA5LDUzMDExLDUzMDEzLDUzMDIwLDUzMDI0LDUzMDI4LDUzMDM2LDUzMDM3LDUzMDM5LDUzMDQwLDUzMDQxLDUzMDQ4LDUzMDc2LDUzMDc3LDUzMDgwLDUzMDg0LDUzMDkyLDUzMDkzLDUzMDk1LDUzMDk3LDUzMTA0LDUzMTA1LDUzMTA4LDUzMTEyLDUzMTIwLDUzMTI1LDUzMTMyLDUzMTUzLDUzMTYwLDUzMTY4LDUzMTg4LDUzMjE2LDUzMjE3LDUzMjIwLDUzMjI0LDUzMjMyLDUzMjMzLDUzMjM1LDUzMjM3LDUzMjQ0LDUzMjQ4LDUzMjUyLDUzMjY1LDUzMjcyLDUzMjkzLDUzMzAwLDUzMzAxLDUzMzA0LDUzMzA4LDU1MDYxLDU1MDYyLDU1MDYzLDU1MDY2LDU1MDY3LDU1MDY5LDU1MDcwLDU1MDcxLDU1MDczLDU1MDc0LDU1MDc1LDU1MDc2LDU1MDc3LDU1MDc4LDU1MDc5LDU1MDgyLDU1MDg0LDU1MDg2LDU1MDg3LDU1MDg4LDU1MDg5LDU1MDkwLDU1MDkxLDU1MDk0LDU1MDk1LDU1MDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MDk4LDU1MDk5LDU1MTAxLDU1MTAyLDU1MTAzLDU1MTA0LDU1MTA1LDU1MTA2LDU1MTA3LDU1MTA5LDU1MTEwLDU1MTEyLDU1MTE0LDU1MTE1LDU1MTE2LDU1MTE3LDU1MTE4LDU1MTE5LDU1MTIyLDU1MTIzLDU1MTI1LDU1MTMwLDU1MTMxLDU1MTMyLDU1MTMzLDU1MTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU1MTM1LDU1MTM4LDU1MTQwLDU1MTQyLDU1MTQzLDU1MTQ0LDU1MTQ2LDU1MTQ3LDU1MTQ5LDU1MTUwLDU1MTUxLDU1MTUzLDU1MTU0LDU1MTU1LDU1MTU3LDU1MTU4LDU1MTU5LDU1MTYwLDU1MTYxLDU1MTYyLDU1MTYzLDU1MTY2LDU1MTY3LDU1MTY4LDU1MTcwLDU1MTcxLDU1MTcyLDU1MTczLDU1MTc0LDU1MTc1LDU1MTc4LDU1MTc5LDUzMzE2LDUzMzE3LDUzMzE5LDUzMzIxLDUzMzI4LDUzMzMyLDUzMzM2LDUzMzQ0LDUzMzU2LDUzMzU3LDUzMzYwLDUzMzY0LDUzMzcyLDUzMzczLDUzMzc3LDUzNDEyLDUzNDEzLDUzNDE2LDUzNDIwLDUzNDI4LDUzNDI5LDUzNDMxLDUzNDMzLDUzNDQwLDUzNDQxLDUzNDQ0LDUzNDQ4LDUzNDQ5LDUzNDU2LDUzNDU3LDUzNDU5LDUzNDYwLDUzNDYxLDUzNDY4LDUzNDY5LDUzNDcyLDUzNDc2LDUzNDg0LDUzNDg1LDUzNDg3LDUzNDg4LDUzNDg5LDUzNDk2LDUzNTE3LDUzNTUyLDUzNTUzLDUzNTU2LDUzNTYwLDUzNTYyLDUzNTY4LDUzNTY5LDUzNTcxLDUzNTcyLDUzNTczLDUzNTgwLDUzNTgxLDUzNTg0LDUzNTg4LDUzNTk2LDUzNTk3LDUzNTk5LDUzNjAxLDUzNjA4LDUzNjEyLDUzNjI4LDUzNjM2LDUzNjQwLDUzNjY0LDUzNjY1LDUzNjY4LDUzNjcyLDUzNjgwLDUzNjgxLDUzNjgzLDUzNjg1LDUzNjkwLDUzNjkyLDUzNjk2LDUzNzIwLDUzNzQ4LDUzNzUyLDUzNzY3LDUzNzY5LDUzNzc2LDUzODA0LDUzODA1LDUzODA4LDUzODEyLDUzODIwLDUzODIxLDUzODIzLDUzODI1LDUzODMyLDUzODUyLDU1MTgxLDU1MTgyLDU1MTgzLDU1MTg1LDU1MTg2LDU1MTg3LDU1MTg4LDU1MTg5LDU1MTkwLDU1MTkxLDU1MTk0LDU1MTk2LDU1MTk4LDU1MTk5LDU1MjAwLDU1MjAxLDU1MjAyLDU1MjAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUzODYwLDUzODg4LDUzODg5LDUzODkyLDUzODk2LDUzOTA0LDUzOTA1LDUzOTA5LDUzOTE2LDUzOTIwLDUzOTI0LDUzOTMyLDUzOTM3LDUzOTQ0LDUzOTQ1LDUzOTQ4LDUzOTUxLDUzOTUyLDUzOTU0LDUzOTYwLDUzOTYxLDUzOTYzLDUzOTcyLDUzOTc2LDUzOTgwLDUzOTg4LDUzOTg5LDU0MDAwLDU0MDAxLDU0MDA0LDU0MDA4LDU0MDE2LDU0MDE3LDU0MDE5LDU0MDIxLDU0MDI4LDU0MDI5LDU0MDMwLDU0MDMyLDU0MDM2LDU0MDM4LDU0MDQ0LDU0MDQ1LDU0MDQ3LDU0MDQ4LDU0MDQ5LDU0MDUzLDU0MDU2LDU0MDU3LDU0MDYwLDU0MDY0LDU0MDcyLDU0MDczLDU0MDc1LDU0MDc2LDU0MDc3LDU0MDg0LDU0MDg1LDU0MTQwLDU0MTQxLDU0MTQ0LDU0MTQ4LDU0MTU2LDU0MTU3LDU0MTU5LDU0MTYwLDU0MTYxLDU0MTY4LDU0MTY5LDU0MTcyLDU0MTc2LDU0MTg0LDU0MTg1LDU0MTg3LDU0MTg5LDU0MTk2LDU0MjAwLDU0MjA0LDU0MjEyLDU0MjEzLDU0MjE2LDU0MjE3LDU0MjI0LDU0MjMyLDU0MjQxLDU0MjQzLDU0MjUyLDU0MjUzLDU0MjU2LDU0MjYwLDU0MjY4LDU0MjY5LDU0MjcxLDU0MjczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0MjgwLDU0MzAxLDU0MzM2LDU0MzQwLDU0MzY0LDU0MzY4LDU0MzcyLDU0MzgxLDU0MzgzLDU0MzkyLDU0MzkzLDU0Mzk2LDU0Mzk5LDU0NDAwLDU0NDAyLDU0NDA4LDU0NDA5LDU0NDExLDU0NDEzLDU0NDIwLDU0NDQxLDU0NDc2LDU0NDgwLDU0NDg0LDU0NDkyLDU0NDk1LDU0NTA0LDU0NTA4LDU0NTEyLDU0NTIwLDU0NTIzLDU0NTI1LDU0NTMyLDU0NTM2LDU0NTQwLDU0NTQ4LDU0NTQ5LDU0NTUxLDU0NTg4LDU0NTg5LDU0NTkyLDU0NTk2LDU0NjA0LDU0NjA1LDU0NjA3LDU0NjA5LDU0NjE2LDU0NjE3LDU0NjIwLDU0NjI0LDU0NjI5LDU0NjMyLDU0NjMzLDU0NjM1LDU0NjM3LDU0NjQ0LDU0NjQ1LDU0NjQ4LDU0NjUyLDU0NjYwLDU0NjYxLDU0NjYzLDU0NjY0LDU0NjY1LDU0NjcyLDU0NjkzLDU0NzI4LDU0NzI5LDU0NzMyLDU0NzM2LDU0NzM4LDU0NzQ0LDU0NzQ1LDU0NzQ3LDU0NzQ5LDU0NzU2LDU0NzU3LDU0NzYwLDU0NzY0LDU0NzcyLDU0NzczLDU0Nzc1LDU0Nzc3LDU0Nzg0LDU0Nzg1LDU0Nzg4LDU0NzkyLDU0ODAwLDU0ODAxLDU0ODAzLDU0ODA0LDU0ODA1LDU0ODEyLDU0ODE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDU0ODIwLDU0ODI5LDU0ODQwLDU0ODQxLDU0ODQ0LDU0ODQ4LDU0ODUzLDU0ODU2LDU0ODU3LDU0ODU5LDU0ODYxLDU0ODY1LDU0ODY4LDU0ODY5LDU0ODcyLDU0ODc2LDU0ODg3LDU0ODg5LDU0ODk2LDU0ODk3LDU0OTAwLDU0OTE1LDU0OTE3LDU0OTI0LDU0OTI1LDU0OTI4LDU0OTMyLDU0OTQxLDU0OTQzLDU0OTQ1LDU0OTUyLDU0OTU2LDU0OTYwLDU0OTY5LDU0OTcxLDU0OTgwLDU0OTgxLDU0OTg0LDU0OTg4LDU0OTkzLDU0OTk2LDU0OTk5LDU1MDAxLDU1MDA4LDU1MDEyLDU1MDE2LDU1MDI0LDU1MDI5LDU1MDM2LDU1MDM3LDU1MDQwLDU1MDQ0LDU1MDU3LDU1MDY0LDU1MDY1LDU1MDY4LDU1MDcyLDU1MDgwLDU1MDgxLDU1MDgzLDU1MDg1LDU1MDkyLDU1MDkzLDU1MDk2LDU1MTAwLDU1MTA4LDU1MTExLDU1MTEzLDU1MTIwLDU1MTIxLDU1MTI0LDU1MTI2LDU1MTI3LDU1MTI4LDU1MTI5LDU1MTM2LDU1MTM3LDU1MTM5LDU1MTQxLDU1MTQ1LDU1MTQ4LDU1MTUyLDU1MTU2LDU1MTY0LDU1MTY1LDU1MTY5LDU1MTc2LDU1MTc3LDU1MTgwLDU1MTg0LDU1MTkyLDU1MTkzLDU1MTk1LDU1MTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAyODUsMjAzMzksMjA1NTEsMjA3MjksMjExNTIsMjE0ODcsMjE2MjEsMjE3MzMsMjIwMjUsMjMyMzMsMjM0NzgsMjYyNDcsMjY1NTAsMjY1NTEsMjY2MDcsMjc0NjgsMjk2MzQsMzAxNDYsMzEyOTIsMzM0OTksMzM1NDAsMzQ5MDMsMzQ5NTIsMzUzODIsMzYwNDAsMzYzMDMsMzY2MDMsMzY4MzgsMzkzODEsMjEwNTEsMjEzNjQsMjE1MDgsMjQ2ODIsMjQ5MzIsMjc1ODAsMjk2NDcsMzMwNTAsMzUyNTgsMzUyODIsMzgzMDcsMjAzNTUsMjEwMDIsMjI3MTgsMjI5MDQsMjMwMTQsMjQxNzgsMjQxODUsMjUwMzEsMjU1MzYsMjY0MzgsMjY2MDQsMjY3NTEsMjg1NjcsMzAyODYsMzA0NzUsMzA5NjUsMzEyNDAsMzE0ODcsMzE3NzcsMzI5MjUsMzMzOTAsMzMzOTMsMzU1NjMsMzgyOTEsMjAwNzUsMjE5MTcsMjYzNTksMjgyMTIsMzA4ODMsMzE0NjksMzM4ODMsMzUwODgsMzQ2MzgsMzg4MjQsMjEyMDgsMjIzNTAsMjI1NzAsMjM4ODQsMjQ4NjMsMjUwMjIsMjUxMjEsMjU5NTQsMjY1NzcsMjcyMDQsMjgxODcsMjk5NzYsMzAxMzEsMzA0MzUsMzA2NDAsMzIwNTgsMzcwMzksMzc5NjksMzc5NzAsNDA4NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjEyODMsMjM3MjQsMzAwMDIsMzI5ODcsMzc0NDAsMzgyOTYsMjEwODMsMjI1MzYsMjMwMDQsMjM3MTMsMjM4MzEsMjQyNDcsMjQzNzgsMjQzOTQsMjQ5NTEsMjc3NDMsMzAwNzQsMzAwODYsMzE5NjgsMzIxMTUsMzIxNzcsMzI2NTIsMzMxMDgsMzMzMTMsMzQxOTMsMzUxMzcsMzU2MTEsMzc2MjgsMzg0NzcsNDAwMDcsMjAxNzEsMjAyMTUsMjA0OTEsMjA5NzcsMjI2MDcsMjQ4ODcsMjQ4OTQsMjQ5MzYsMjU5MTMsMjcxMTQsMjg0MzMsMzAxMTcsMzAzNDIsMzA0MjIsMzE2MjMsMzM0NDUsMzM5OTUsNjM3NDQsMzc3OTksMzgyODMsMjE4ODgsMjM0NTgsMjIzNTMsNjM3NDUsMzE5MjMsMzI2OTcsMzczMDEsMjA1MjAsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjU0NTQsMjU4MTgsMjU4MzEsMjgxOTIsMjg4NDQsMzEwNjcsMzYzMTcsMzYzODIsNjM3NDYsMzY5ODksMzc0NDUsMzc2MjQsMjAwOTQsMjAyMTQsMjA1ODEsMjQwNjIsMjQzMTQsMjQ4MzgsMjY5NjcsMzMxMzcsMzQzODgsMzY0MjMsMzc3NDksMzk0NjcsMjAwNjIsMjA2MjUsMjY0ODAsMjY2ODgsMjA3NDUsMjExMzMsMjExMzgsMjcyOTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA2NTIsMzczOTIsNDA2NjAsMjExNjMsMjQ2MjMsMzY4NTAsMjA1NTIsMjUwMDEsMjU1ODEsMjU4MDIsMjY2ODQsMjcyNjgsMjg2MDgsMzMxNjAsMzUyMzMsMzg1NDgsMjI1MzMsMjkzMDksMjkzNTYsMjk5NTYsMzIxMjEsMzIzNjUsMzI5MzcsMzUyMTEsMzU3MDAsMzY5NjMsNDAyNzMsMjUyMjUsMjc3NzAsMjg1MDAsMzIwODAsMzI1NzAsMzUzNjMsMjA4NjAsMjQ5MDYsMzE2NDUsMzU2MDksMzc0NjMsMzc3NzIsMjAxNDAsMjA0MzUsMjA1MTAsMjA2NzAsMjA3NDIsMjExODUsMjExOTcsMjEzNzUsMjIzODQsMjI2NTksMjQyMTgsMjQ0NjUsMjQ5NTAsMjUwMDQsMjU4MDYsMjU5NjQsMjYyMjMsMjYyOTksMjYzNTYsMjY3NzUsMjgwMzksMjg4MDUsMjg5MTMsMjk4NTUsMjk4NjEsMjk4OTgsMzAxNjksMzA4MjgsMzA5NTYsMzE0NTUsMzE0NzgsMzIwNjksMzIxNDcsMzI3ODksMzI4MzEsMzMwNTEsMzM2ODYsMzU2ODYsMzY2MjksMzY4ODUsMzc4NTcsMzg5MTUsMzg5NjgsMzk1MTQsMzk5MTIsMjA0MTgsMjE4NDMsMjI1ODYsMjI4NjUsMjMzOTUsMjM2MjIsMjQ3NjAsMjUxMDYsMjY2OTAsMjY4MDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4NTYsMjgzMzAsMzAwMjgsMzAzMjgsMzA5MjYsMzEyOTMsMzE5OTUsMzIzNjMsMzIzODAsMzUzMzYsMzU0ODksMzU5MDMsMzg1NDIsNDAzODgsMjE0NzYsMjE0ODEsMjE1NzgsMjE2MTcsMjIyNjYsMjI5OTMsMjMzOTYsMjM2MTEsMjQyMzUsMjUzMzUsMjU5MTEsMjU5MjUsMjU5NzAsMjYyNzIsMjY1NDMsMjcwNzMsMjc4MzcsMzAyMDQsMzAzNTIsMzA1OTAsMzEyOTUsMzI2NjAsMzI3NzEsMzI5MjksMzMxNjcsMzM1MTAsMzM1MzMsMzM3NzYsMzQyNDEsMzQ4NjUsMzQ5OTYsMzU0OTMsNjM3NDcsMzY3NjQsMzc2NzgsMzg1OTksMzkwMTUsMzk2NDAsNDA3MjMsMjE3NDEsMjYwMTEsMjYzNTQsMjY3NjcsMzEyOTYsMzU4OTUsNDAyODgsMjIyNTYsMjIzNzIsMjM4MjUsMjYxMTgsMjY4MDEsMjY4MjksMjg0MTQsMjk3MzYsMzQ5NzQsMzk5MDgsMjc3NTIsNjM3NDgsMzk1OTIsMjAzNzksMjA4NDQsMjA4NDksMjExNTEsMjMzODAsMjQwMzcsMjQ2NTYsMjQ2ODUsMjUzMjksMjU1MTEsMjU5MTUsMjk2NTcsMzEzNTQsMzQ0NjcsMzYwMDIsMzg3OTksMjAwMTgsMjM1MjEsMjUwOTYsMjY1MjQsMjk5MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzExODUsMzM3NDcsMzU0NjMsMzU1MDYsMzYzMjgsMzY5NDIsMzc3MDcsMzg5ODIsMjQyNzUsMjcxMTIsMzQzMDMsMzcxMDEsNjM3NDksMjA4OTYsMjM0NDgsMjM1MzIsMjQ5MzEsMjY4NzQsMjc0NTQsMjg3NDgsMjk3NDMsMjk5MTIsMzE2NDksMzI1OTIsMzM3MzMsMzUyNjQsMzYwMTEsMzgzNjQsMzkyMDgsMjEwMzgsMjQ2NjksMjUzMjQsMzY4NjYsMjAzNjIsMjA4MDksMjEyODEsMjI3NDUsMjQyOTEsMjYzMzYsMjc5NjAsMjg4MjYsMjkzNzgsMjk2NTQsMzE1NjgsMzMwMDksMzc5NzksMjEzNTAsMjU0OTksMzI2MTksMjAwNTQsMjA2MDgsMjI2MDIsMjI3NTAsMjQ2MTgsMjQ4NzEsMjUyOTYsMjcwODgsMzk3NDUsMjM0MzksMzIwMjQsMzI5NDUsMzY3MDMsMjAxMzIsMjA2ODksMjE2NzYsMjE5MzIsMjMzMDgsMjM5NjgsMjQwMzksMjU4OTgsMjU5MzQsMjY2NTcsMjcyMTEsMjk0MDksMzAzNTAsMzA3MDMsMzIwOTQsMzI3NjEsMzMxODQsMzQxMjYsMzQ1MjcsMzY2MTEsMzY2ODYsMzcwNjYsMzkxNzEsMzk1MDksMzk4NTEsMTk5OTIsMjAwMzcsMjAwNjEsMjAxNjcsMjA0NjUsMjA4NTUsMjEyNDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjEzMTIsMjE0NzUsMjE0NzcsMjE2NDYsMjIwMzYsMjIzODksMjI0MzQsMjM0OTUsMjM5NDMsMjQyNzIsMjUwODQsMjUzMDQsMjU5MzcsMjY1NTIsMjY2MDEsMjcwODMsMjc0NzIsMjc1OTAsMjc2MjgsMjc3MTQsMjgzMTcsMjg3OTIsMjkzOTksMjk1OTAsMjk2OTksMzA2NTUsMzA2OTcsMzEzNTAsMzIxMjcsMzI3NzcsMzMyNzYsMzMyODUsMzMyOTAsMzM1MDMsMzQ5MTQsMzU2MzUsMzYwOTIsMzY1NDQsMzY4ODEsMzcwNDEsMzc0NzYsMzc1NTgsMzkzNzgsMzk0OTMsNDAxNjksNDA0MDcsNDA4NjAsMjIyODMsMjM2MTYsMzM3MzgsMzg4MTYsMzg4MjcsNDA2MjgsMjE1MzEsMzEzODQsMzI2NzYsMzUwMzMsMzY1NTcsMzcwODksMjI1MjgsMjM2MjQsMjU0OTYsMzEzOTEsMjM0NzAsMjQzMzksMzEzNTMsMzE0MDYsMzM0MjIsMzY1MjQsMjA1MTgsMjEwNDgsMjEyNDAsMjEzNjcsMjIyODAsMjUzMzEsMjU0NTgsMjc0MDIsMjgwOTksMzA1MTksMjE0MTMsMjk1MjcsMzQxNTIsMzY0NzAsMzgzNTcsMjY0MjYsMjczMzEsMjg1MjgsMzU0MzcsMzY1NTYsMzkyNDMsNjM3NTAsMjYyMzEsMjc1MTIsMzYwMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzk3NDAsNjM3NTEsMjE0ODMsMjIzMTcsMjI4NjIsMjU1NDIsMjcxMzEsMjk2NzQsMzA3ODksMzE0MTgsMzE0MjksMzE5OTgsMzM5MDksMzUyMTUsMzYyMTEsMzY5MTcsMzgzMTIsMjEyNDMsMjIzNDMsMzAwMjMsMzE1ODQsMzM3NDAsMzc0MDYsNjM3NTIsMjcyMjQsMjA4MTEsMjEwNjcsMjExMjcsMjUxMTksMjY4NDAsMjY5OTcsMzg1NTMsMjA2NzcsMjExNTYsMjEyMjAsMjUwMjcsMjYwMjAsMjY2ODEsMjcxMzUsMjk4MjIsMzE1NjMsMzM0NjUsMzM3NzEsMzUyNTAsMzU2NDEsMzY4MTcsMzkyNDEsNjM3NTMsMjAxNzAsMjI5MzUsMjU4MTAsMjYxMjksMjcyNzgsMjk3NDgsMzExMDUsMzExNjUsMzM0NDksMzQ5NDIsMzQ5NDMsMzUxNjcsNjM3NTQsMzc2NzAsMjAyMzUsMjE0NTAsMjQ2MTMsMjUyMDEsMjc3NjIsMzIwMjYsMzIxMDIsMjAxMjAsMjA4MzQsMzA2ODQsMzI5NDMsMjAyMjUsMjAyMzgsMjA4NTQsMjA4NjQsMjE5ODAsMjIxMjAsMjIzMzEsMjI1MjIsMjI1MjQsMjI4MDQsMjI4NTUsMjI5MzEsMjM0OTIsMjM2OTYsMjM4MjIsMjQwNDksMjQxOTAsMjQ1MjQsMjUyMTYsMjYwNzEsMjYwODMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjYzOTgsMjYzOTksMjY0NjIsMjY4MjcsMjY4MjAsMjcyMzEsMjc0NTAsMjc2ODMsMjc3NzMsMjc3NzgsMjgxMDMsMjk1OTIsMjk3MzQsMjk3MzgsMjk4MjYsMjk4NTksMzAwNzIsMzAwNzksMzA4NDksMzA5NTksMzEwNDEsMzEwNDcsMzEwNDgsMzEwOTgsMzE2MzcsMzIwMDAsMzIxODYsMzI2NDgsMzI3NzQsMzI4MTMsMzI5MDgsMzUzNTIsMzU2NjMsMzU5MTIsMzYyMTUsMzc2NjUsMzc2NjgsMzkxMzgsMzkyNDksMzk0MzgsMzk0MzksMzk1MjUsNDA1OTQsMzIyMDIsMjAzNDIsMjE1MTMsMjUzMjYsMjY3MDgsMzczMjksMjE5MzEsMjA3OTQsNjM3NTUsNjM3NTYsMjMwNjgsMjUwNjIsNjM3NTcsMjUyOTUsMjUzNDMsNjM3NTgsNjM3NTksNjM3NjAsNjM3NjEsNjM3NjIsNjM3NjMsMzcwMjcsNjM3NjQsNjM3NjUsNjM3NjYsNjM3NjcsNjM3NjgsMzU1ODIsNjM3NjksNjM3NzAsNjM3NzEsNjM3NzIsMjYyNjIsNjM3NzMsMjkwMTQsNjM3NzQsNjM3NzUsMzg2MjcsNjM3NzYsMjU0MjMsMjU0NjYsMjEzMzUsNjM3NzcsMjY1MTEsMjY5NzYsMjgyNzUsNjM3NzgsMzAwMDcsNjM3NzksNjM3ODAsNjM3ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzIwMTMsNjM3ODIsNjM3ODMsMzQ5MzAsMjIyMTgsMjMwNjQsNjM3ODQsNjM3ODUsNjM3ODYsNjM3ODcsNjM3ODgsMjAwMzUsNjM3ODksMjA4MzksMjI4NTYsMjY2MDgsMzI3ODQsNjM3OTAsMjI4OTksMjQxODAsMjU3NTQsMzExNzgsMjQ1NjUsMjQ2ODQsMjUyODgsMjU0NjcsMjM1MjcsMjM1MTEsMjExNjIsNjM3OTEsMjI5MDAsMjQzNjEsMjQ1OTQsNjM3OTIsNjM3OTMsNjM3OTQsMjk3ODUsNjM3OTUsNjM3OTYsNjM3OTcsNjM3OTgsNjM3OTksNjM4MDAsMzkzNzcsNjM4MDEsNjM4MDIsNjM4MDMsNjM4MDQsNjM4MDUsNjM4MDYsNjM4MDcsNjM4MDgsNjM4MDksNjM4MTAsNjM4MTEsMjg2MTEsNjM4MTIsNjM4MTMsMzMyMTUsMzY3ODYsMjQ4MTcsNjM4MTQsNjM4MTUsMzMxMjYsNjM4MTYsNjM4MTcsMjM2MTUsNjM4MTgsNjM4MTksNjM4MjAsNjM4MjEsNjM4MjIsNjM4MjMsNjM4MjQsNjM4MjUsMjMyNzMsMzUzNjUsMjY0OTEsMzIwMTYsNjM4MjYsNjM4MjcsNjM4MjgsNjM4MjksNjM4MzAsNjM4MzEsMzMwMjEsNjM4MzIsNjM4MzMsMjM2MTIsMjc4NzcsMjEzMTEsMjgzNDYsMjI4MTAsMzM1OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAwMjUsMjAxNTAsMjAyOTQsMjE5MzQsMjIyOTYsMjI3MjcsMjQ0MDYsMjYwMzksMjYwODYsMjcyNjQsMjc1NzMsMjgyMzcsMzA3MDEsMzE0NzEsMzE3NzQsMzIyMjIsMzQ1MDcsMzQ5NjIsMzcxNzAsMzc3MjMsMjU3ODcsMjg2MDYsMjk1NjIsMzAxMzYsMzY5NDgsMjE4NDYsMjIzNDksMjUwMTgsMjU4MTIsMjYzMTEsMjgxMjksMjgyNTEsMjg1MjUsMjg2MDEsMzAxOTIsMzI4MzUsMzMyMTMsMzQxMTMsMzUyMDMsMzU1MjcsMzU2NzQsMzc2NjMsMjc3OTUsMzAwMzUsMzE1NzIsMzYzNjcsMzY5NTcsMjE3NzYsMjI1MzAsMjI2MTYsMjQxNjIsMjUwOTUsMjU3NTgsMjY4NDgsMzAwNzAsMzE5NTgsMzQ3MzksNDA2ODAsMjAxOTUsMjI0MDgsMjIzODIsMjI4MjMsMjM1NjUsMjM3MjksMjQxMTgsMjQ0NTMsMjUxNDAsMjU4MjUsMjk2MTksMzMyNzQsMzQ5NTUsMzYwMjQsMzg1MzgsNDA2NjcsMjM0MjksMjQ1MDMsMjQ3NTUsMjA0OTgsMjA5OTIsMjEwNDAsMjIyOTQsMjI1ODEsMjI2MTUsMjM1NjYsMjM2NDgsMjM3OTgsMjM5NDcsMjQyMzAsMjQ0NjYsMjQ3NjQsMjUzNjEsMjU0ODEsMjU2MjMsMjY2OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4NzMsMjczMzAsMjgxMjAsMjgxOTMsMjgzNzIsMjg2NDQsMjkxODIsMzA0MjgsMzA1ODUsMzExNTMsMzEyOTEsMzM3OTYsMzUyNDEsMzYwNzcsMzYzMzksMzY0MjQsMzY4NjcsMzY4ODQsMzY5NDcsMzcxMTcsMzc3MDksMzg1MTgsMzg4NzYsMjc2MDIsMjg2NzgsMjkyNzIsMjkzNDYsMjk1NDQsMzA1NjMsMzExNjcsMzE3MTYsMzI0MTEsMzU3MTIsMjI2OTcsMjQ3NzUsMjU5NTgsMjYxMDksMjYzMDIsMjc3ODgsMjg5NTgsMjkxMjksMzU5MzAsMzg5MzEsMjAwNzcsMzEzNjEsMjAxODksMjA5MDgsMjA5NDEsMjEyMDUsMjE1MTYsMjQ5OTksMjY0ODEsMjY3MDQsMjY4NDcsMjc5MzQsMjg1NDAsMzAxNDAsMzA2NDMsMzE0NjEsMzMwMTIsMzM4OTEsMzc1MDksMjA4MjgsMjYwMDcsMjY0NjAsMjY1MTUsMzAxNjgsMzE0MzEsMzM2NTEsNjM4MzQsMzU5MTAsMzY4ODcsMzg5NTcsMjM2NjMsMzMyMTYsMzM0MzQsMzY5MjksMzY5NzUsMzczODksMjQ0NzEsMjM5NjUsMjcyMjUsMjkxMjgsMzAzMzEsMzE1NjEsMzQyNzYsMzU1ODgsMzcxNTksMzk0NzIsMjE4OTUsMjUwNzgsNjM4MzUsMzAzMTMsMzI2NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQzNjcsMzQ3NDYsMzUwNjQsMzcwMDcsNjM4MzYsMjc5MzEsMjg4ODksMjk2NjIsMzIwOTcsMzM4NTMsNjM4MzcsMzcyMjYsMzk0MDksNjM4MzgsMjAwOTgsMjEzNjUsMjczOTYsMjc0MTAsMjg3MzQsMjkyMTEsMzQzNDksNDA0NzgsMjEwNjgsMzY3NzEsMjM4ODgsMjU4MjksMjU5MDAsMjc0MTQsMjg2NTEsMzE4MTEsMzI0MTIsMzQyNTMsMzUxNzIsMzUyNjEsMjUyODksMzMyNDAsMzQ4NDcsMjQyNjYsMjYzOTEsMjgwMTAsMjk0MzYsMjk3MDEsMjk4MDcsMzQ2OTAsMzcwODYsMjAzNTgsMjM4MjEsMjQ0ODAsMzM4MDIsMjA5MTksMjU1MDQsMzAwNTMsMjAxNDIsMjA0ODYsMjA4NDEsMjA5MzcsMjY3NTMsMjcxNTMsMzE5MTgsMzE5MjEsMzE5NzUsMzMzOTEsMzU1MzgsMzY2MzUsMzczMjcsMjA0MDYsMjA3OTEsMjEyMzcsMjE1NzAsMjQzMDAsMjQ5NDIsMjUxNTAsMjYwNTMsMjczNTQsMjg2NzAsMzEwMTgsMzQyNjgsMzQ4NTEsMzgzMTcsMzk1MjIsMzk1MzAsNDA1OTksNDA2NTQsMjExNDcsMjYzMTAsMjc1MTEsMjg3MDEsMzEwMTksMzY3MDYsMzg3MjIsMjQ5NzYsMjUwODgsMjU4OTEsMjg0NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDEsMjk4MzMsMzIyNDQsMzI4NzksMzQwMzAsMzY2NDYsMzY4OTksMzc3MDYsMjA5MjUsMjEwMTUsMjExNTUsMjc5MTYsMjg4NzIsMzUwMTAsMjQyNjUsMjU5ODYsMjc1NjYsMjg2MTAsMzE4MDYsMjk1NTcsMjAxOTYsMjAyNzgsMjIyNjUsNjM4MzksMjM3MzgsMjM5OTQsMjQ2MDQsMjk2MTgsMzE1MzMsMzI2NjYsMzI3MTgsMzI4MzgsMzY4OTQsMzc0MjgsMzg2NDYsMzg3MjgsMzg5MzYsNDA4MDEsMjAzNjMsMjg1ODMsMzExNTAsMzczMDAsMzg1ODMsMjEyMTQsNjM4NDAsMjU3MzYsMjU3OTYsMjczNDcsMjg1MTAsMjg2OTYsMjkyMDAsMzA0MzksMzI3NjksMzQzMTAsMzQzOTYsMzYzMzUsMzY2MTMsMzg3MDYsMzk3OTEsNDA0NDIsNDA1NjUsMzA4NjAsMzExMDMsMzIxNjAsMzM3MzcsMzc2MzYsNDA1NzUsNDA1OTUsMzU1NDIsMjI3NTEsMjQzMjQsMjY0MDcsMjg3MTEsMjk5MDMsMzE4NDAsMzI4OTQsMjA3NjksMjg3MTIsMjkyODIsMzA5MjIsMzYwMzQsMzYwNTgsMzYwODQsMzg2NDcsMjAxMDIsMjA2OTgsMjM1MzQsMjQyNzgsMjYwMDksMjkxMzQsMzAyNzQsMzA2MzcsMzI4NDIsMzQwNDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5ODgsMzk3MTksNDA4NDUsMjI3NDQsMjMxMDUsMjM2NTAsMjcxNTUsMjgxMjIsMjg0MzEsMzAyNjcsMzIwNDcsMzIzMTEsMzQwNzgsMzUxMjgsMzc4NjAsMzg0NzUsMjExMjksMjYwNjYsMjY2MTEsMjcwNjAsMjc5NjksMjgzMTYsMjg2ODcsMjk3MDUsMjk3OTIsMzAwNDEsMzAyNDQsMzA4MjcsMzU2MjgsMzkwMDYsMjA4NDUsMjUxMzQsMzg1MjAsMjAzNzQsMjA1MjMsMjM4MzMsMjgxMzgsMzIxODQsMzY2NTAsMjQ0NTksMjQ5MDAsMjY2NDcsNjM4NDEsMzg1MzQsMjEyMDIsMzI5MDcsMjA5NTYsMjA5NDAsMjY5NzQsMzEyNjAsMzIxOTAsMzM3NzcsMzg1MTcsMjA0NDIsMjEwMzMsMjE0MDAsMjE1MTksMjE3NzQsMjM2NTMsMjQ3NDMsMjY0NDYsMjY3OTIsMjgwMTIsMjkzMTMsMjk0MzIsMjk3MDIsMjk4MjcsNjM4NDIsMzAxNzgsMzE4NTIsMzI2MzMsMzI2OTYsMzM2NzMsMzUwMjMsMzUwNDEsMzczMjQsMzczMjgsMzg2MjYsMzk4ODEsMjE1MzMsMjg1NDIsMjkxMzYsMjk4NDgsMzQyOTgsMzY1MjIsMzg1NjMsNDAwMjMsNDA2MDcsMjY1MTksMjgxMDcsMjk3NDcsMzMyNTYsMzg2NzgsMzA3NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzE0MzUsMzE1MjAsMzE4OTAsMjU3MDUsMjk4MDIsMzAxOTQsMzA5MDgsMzA5NTIsMzkzNDAsMzk3NjQsNDA2MzUsMjM1MTgsMjQxNDksMjg0NDgsMzMxODAsMzM3MDcsMzcwMDAsMTk5NzUsMjEzMjUsMjMwODEsMjQwMTgsMjQzOTgsMjQ5MzAsMjU0MDUsMjYyMTcsMjYzNjQsMjg0MTUsMjg0NTksMjg3NzEsMzA2MjIsMzM4MzYsMzQwNjcsMzQ4NzUsMzY2MjcsMzkyMzcsMzk5OTUsMjE3ODgsMjUyNzMsMjY0MTEsMjc4MTksMzM1NDUsMzUxNzgsMzg3NzgsMjAxMjksMjI5MTYsMjQ1MzYsMjQ1MzcsMjYzOTUsMzIxNzgsMzI1OTYsMzM0MjYsMzM1NzksMzM3MjUsMzY2MzgsMzcwMTcsMjI0NzUsMjI5NjksMjMxODYsMjM1MDQsMjYxNTEsMjY1MjIsMjY3NTcsMjc1OTksMjkwMjgsMzI2MjksMzYwMjMsMzYwNjcsMzY5OTMsMzk3NDksMzMwMzIsMzU5NzgsMzg0NzYsMzk0ODgsNDA2MTMsMjMzOTEsMjc2NjcsMjk0NjcsMzA0NTAsMzA0MzEsMzM4MDQsMjA5MDYsMzUyMTksMjA4MTMsMjA4ODUsMjExOTMsMjY4MjUsMjc3OTYsMzA0NjgsMzA0OTYsMzIxOTEsMzIyMzYsMzg3NTQsNDA2MjksMjgzNTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzQwNjUsMjA5MDEsMjE1MTcsMjE2MjksMjYxMjYsMjYyNjksMjY5MTksMjgzMTksMzAzOTksMzA2MDksMzM1NTksMzM5ODYsMzQ3MTksMzcyMjUsMzc1MjgsNDAxODAsMzQ5NDYsMjAzOTgsMjA4ODIsMjEyMTUsMjI5ODIsMjQxMjUsMjQ5MTcsMjU3MjAsMjU3MjEsMjYyODYsMjY1NzYsMjcxNjksMjc1OTcsMjc2MTEsMjkyNzksMjkyODEsMjk3NjEsMzA1MjAsMzA2ODMsMzI3OTEsMzM0NjgsMzM1NDEsMzU1ODQsMzU2MjQsMzU5ODAsMjY0MDgsMjc3OTIsMjkyODcsMzA0NDYsMzA1NjYsMzEzMDIsNDAzNjEsMjc1MTksMjc3OTQsMjI4MTgsMjY0MDYsMzM5NDUsMjEzNTksMjI2NzUsMjI5MzcsMjQyODcsMjU1NTEsMjYxNjQsMjY0ODMsMjgyMTgsMjk0ODMsMzE0NDcsMzM0OTUsMzc2NzIsMjEyMDksMjQwNDMsMjUwMDYsMjUwMzUsMjUwOTgsMjUyODcsMjU3NzEsMjYwODAsMjY5NjksMjc0OTQsMjc1OTUsMjg5NjEsMjk2ODcsMzAwNDUsMzIzMjYsMzMzMTAsMzM1MzgsMzQxNTQsMzU0OTEsMzYwMzEsMzg2OTUsNDAyODksMjI2OTYsNDA2NjQsMjA0OTcsMjEwMDYsMjE1NjMsMjE4MzksMjU5OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjc3NjYsMzIwMTAsMzIwMTEsMzI4NjIsMzQ0NDIsMzgyNzIsMzg2MzksMjEyNDcsMjc3OTcsMjkyODksMjE2MTksMjMxOTQsMjM2MTQsMjM4ODMsMjQzOTYsMjQ0OTQsMjY0MTAsMjY4MDYsMjY5NzksMjgyMjAsMjgyMjgsMzA0NzMsMzE4NTksMzI2NTQsMzQxODMsMzU1OTgsMzY4NTUsMzg3NTMsNDA2OTIsMjM3MzUsMjQ3NTgsMjQ4NDUsMjUwMDMsMjU5MzUsMjYxMDcsMjYxMDgsMjc2NjUsMjc4ODcsMjk1OTksMjk2NDEsMzIyMjUsMzgyOTIsMjM0OTQsMzQ1ODgsMzU2MDAsMjEwODUsMjEzMzgsMjUyOTMsMjU2MTUsMjU3NzgsMjY0MjAsMjcxOTIsMjc4NTAsMjk2MzIsMjk4NTQsMzE2MzYsMzE4OTMsMzIyODMsMzMxNjIsMzMzMzQsMzQxODAsMzY4NDMsMzg2NDksMzkzNjEsMjAyNzYsMjEzMjIsMjE0NTMsMjE0NjcsMjUyOTIsMjU2NDQsMjU4NTYsMjYwMDEsMjcwNzUsMjc4ODYsMjg1MDQsMjk2NzcsMzAwMzYsMzAyNDIsMzA0MzYsMzA0NjAsMzA5MjgsMzA5NzEsMzEwMjAsMzIwNzAsMzMzMjQsMzQ3ODQsMzY4MjAsMzg5MzAsMzkxNTEsMjExODcsMjUzMDAsMjU3NjUsMjgxOTYsMjg0OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzAzMzIsMzYyOTksMzcyOTcsMzc0NzQsMzk2NjIsMzk3NDcsMjA1MTUsMjA2MjEsMjIzNDYsMjI5NTIsMjM1OTIsMjQxMzUsMjQ0MzksMjUxNTEsMjU5MTgsMjYwNDEsMjYwNDksMjYxMjEsMjY1MDcsMjcwMzYsMjgzNTQsMzA5MTcsMzIwMzMsMzI5MzgsMzMxNTIsMzMzMjMsMzM0NTksMzM5NTMsMzQ0NDQsMzUzNzAsMzU2MDcsMzcwMzAsMzg0NTAsNDA4NDgsMjA0OTMsMjA0NjcsNjM4NDMsMjI1MjEsMjQ0NzIsMjUzMDgsMjU0OTAsMjY0NzksMjgyMjcsMjg5NTMsMzA0MDMsMzI5NzIsMzI5ODYsMzUwNjAsMzUwNjEsMzUwOTcsMzYwNjQsMzY2NDksMzcxOTcsMzg1MDYsMjAyNzEsMjAzMzYsMjQwOTEsMjY1NzUsMjY2NTgsMzAzMzMsMzAzMzQsMzk3NDgsMjQxNjEsMjcxNDYsMjkwMzMsMjkxNDAsMzAwNTgsNjM4NDQsMzIzMjEsMzQxMTUsMzQyODEsMzkxMzIsMjAyNDAsMzE1NjcsMzI2MjQsMzgzMDksMjA5NjEsMjQwNzAsMjY4MDUsMjc3MTAsMjc3MjYsMjc4NjcsMjkzNTksMzE2ODQsMzM1MzksMjc4NjEsMjk3NTQsMjA3MzEsMjExMjgsMjI3MjEsMjU4MTYsMjcyODcsMjk4NjMsMzAyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzA4ODcsMzQzMjcsMzgzNzAsMzg3MTMsNjM4NDUsMjEzNDIsMjQzMjEsMzU3MjIsMzY3NzYsMzY3ODMsMzcwMDIsMjEwMjksMzA2MjksNDAwMDksNDA3MTIsMTk5OTMsMjA0ODIsMjA4NTMsMjM2NDMsMjQxODMsMjYxNDIsMjYxNzAsMjY1NjQsMjY4MjEsMjg4NTEsMjk5NTMsMzAxNDksMzExNzcsMzE0NTMsMzY2NDcsMzkyMDAsMzk0MzIsMjA0NDUsMjI1NjEsMjI1NzcsMjM1NDIsMjYyMjIsMjc0OTMsMjc5MjEsMjgyODIsMjg1NDEsMjk2NjgsMjk5OTUsMzM3NjksMzUwMzYsMzUwOTEsMzU2NzYsMzY2MjgsMjAyMzksMjA2OTMsMjEyNjQsMjEzNDAsMjM0NDMsMjQ0ODksMjYzODEsMzExMTksMzMxNDUsMzM1ODMsMzQwNjgsMzUwNzksMzUyMDYsMzY2NjUsMzY2NjcsMzkzMzMsMzk5NTQsMjY0MTIsMjAwODYsMjA0NzIsMjI4NTcsMjM1NTMsMjM3OTEsMjM3OTIsMjU0NDcsMjY4MzQsMjg5MjUsMjkwOTAsMjk3MzksMzIyOTksMzQwMjgsMzQ1NjIsMzY4OTgsMzc1ODYsNDAxNzksMTk5ODEsMjAxODQsMjA0NjMsMjA2MTMsMjEwNzgsMjExMDMsMjE1NDIsMjE2NDgsMjI0OTYsMjI4MjcsMjMxNDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMzODYsMjM0MTMsMjM1MDAsMjQyMjAsNjM4NDYsMjUyMDYsMjU5NzUsMjYwMjMsMjgwMTQsMjgzMjUsMjkyMzgsMzE1MjYsMzE4MDcsMzI1NjYsMzMxMDQsMzMxMDUsMzMxNzgsMzMzNDQsMzM0MzMsMzM3MDUsMzUzMzEsMzYwMDAsMzYwNzAsMzYwOTEsMzYyMTIsMzYyODIsMzcwOTYsMzczNDAsMzg0MjgsMzg0NjgsMzkzODUsNDAxNjcsMjEyNzEsMjA5OTgsMjE1NDUsMjIxMzIsMjI3MDcsMjI4NjgsMjI4OTQsMjQ1NzUsMjQ5OTYsMjUxOTgsMjYxMjgsMjc3NzQsMjg5NTQsMzA0MDYsMzE4ODEsMzE5NjYsMzIwMjcsMzM0NTIsMzYwMzMsMzg2NDAsNjM4NDcsMjAzMTUsMjQzNDMsMjQ0NDcsMjUyODIsMjM4NDksMjYzNzksMjY4NDIsMzA4NDQsMzIzMjMsNDAzMDAsMTk5ODksMjA2MzMsMjEyNjksMjEyOTAsMjEzMjksMjI5MTUsMjMxMzgsMjQxOTksMjQ3NTQsMjQ5NzAsMjUxNjEsMjUyMDksMjYwMDAsMjY1MDMsMjcwNDcsMjc2MDQsMjc2MDYsMjc2MDcsMjc2MDgsMjc4MzIsNjM4NDgsMjk3NDksMzAyMDIsMzA3MzgsMzA4NjUsMzExODksMzExOTIsMzE4NzUsMzIyMDMsMzI3MzcsMzI5MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzMwODYsMzMyMTgsMzM3NzgsMzQ1ODYsMzUwNDgsMzU1MTMsMzU2OTIsMzYwMjcsMzcxNDUsMzg3NTAsMzkxMzEsNDA3NjMsMjIxODgsMjMzMzgsMjQ0MjgsMjU5OTYsMjczMTUsMjc1NjcsMjc5OTYsMjg2NTcsMjg2OTMsMjkyNzcsMjk2MTMsMzYwMDcsMzYwNTEsMzg5NzEsMjQ5NzcsMjc3MDMsMzI4NTYsMzk0MjUsMjAwNDUsMjAxMDcsMjAxMjMsMjAxODEsMjAyODIsMjAyODQsMjAzNTEsMjA0NDcsMjA3MzUsMjE0OTAsMjE0OTYsMjE3NjYsMjE5ODcsMjIyMzUsMjI3NjMsMjI4ODIsMjMwNTcsMjM1MzEsMjM1NDYsMjM1NTYsMjQwNTEsMjQxMDcsMjQ0NzMsMjQ2MDUsMjU0NDgsMjYwMTIsMjYwMzEsMjY2MTQsMjY2MTksMjY3OTcsMjc1MTUsMjc4MDEsMjc4NjMsMjgxOTUsMjg2ODEsMjk1MDksMzA3MjIsMzEwMzgsMzEwNDAsMzEwNzIsMzExNjksMzE3MjEsMzIwMjMsMzIxMTQsMzI5MDIsMzMyOTMsMzM2NzgsMzQwMDEsMzQ1MDMsMzUwMzksMzU0MDgsMzU0MjIsMzU2MTMsMzYwNjAsMzYxOTgsMzY3ODEsMzcwMzQsMzkxNjQsMzkzOTEsNDA2MDUsMjEwNjYsNjM4NDksMjYzODgsNjM4NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjA2MzIsMjEwMzQsMjM2NjUsMjU5NTUsMjc3MzMsMjk2NDIsMjk5ODcsMzAxMDksMzE2MzksMzM5NDgsMzcyNDAsMzg3MDQsMjAwODcsMjU3NDYsMjc1NzgsMjkwMjIsMzQyMTcsMTk5NzcsNjM4NTEsMjY0NDEsMjY4NjIsMjgxODMsMzM0MzksMzQwNzIsMzQ5MjMsMjU1OTEsMjg1NDUsMzczOTQsMzkwODcsMTk5NzgsMjA2NjMsMjA2ODcsMjA3NjcsMjE4MzAsMjE5MzAsMjIwMzksMjMzNjAsMjM1NzcsMjM3NzYsMjQxMjAsMjQyMDIsMjQyMjQsMjQyNTgsMjQ4MTksMjY3MDUsMjcyMzMsMjgyNDgsMjkyNDUsMjkyNDgsMjkzNzYsMzA0NTYsMzEwNzcsMzE2NjUsMzI3MjQsMzUwNTksMzUzMTYsMzU0NDMsMzU5MzcsMzYwNjIsMzg2ODQsMjI2MjIsMjk4ODUsMzYwOTMsMjE5NTksNjM4NTIsMzEzMjksMzIwMzQsMzMzOTQsMjkyOTgsMjk5ODMsMjk5ODksNjM4NTMsMzE1MTMsMjI2NjEsMjI3NzksMjM5OTYsMjQyMDcsMjQyNDYsMjQ0NjQsMjQ2NjEsMjUyMzQsMjU0NzEsMjU5MzMsMjYyNTcsMjYzMjksMjYzNjAsMjY2NDYsMjY4NjYsMjkzMTIsMjk3OTAsMzE1OTgsMzIxMTAsMzIyMTQsMzI2MjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI5OTcsMzMyOTgsMzQyMjMsMzUxOTksMzU0NzUsMzY4OTMsMzc2MDQsNDA2NTMsNDA3MzYsMjI4MDUsMjI4OTMsMjQxMDksMjQ3OTYsMjYxMzIsMjYyMjcsMjY1MTIsMjc3MjgsMjgxMDEsMjg1MTEsMzA3MDcsMzA4ODksMzM5OTAsMzczMjMsMzc2NzUsMjAxODUsMjA2ODIsMjA4MDgsMjE4OTIsMjMzMDcsMjM0NTksMjUxNTksMjU5ODIsMjYwNTksMjgyMTAsMjkwNTMsMjk2OTcsMjk3NjQsMjk4MzEsMjk4ODcsMzAzMTYsMzExNDYsMzIyMTgsMzIzNDEsMzI2ODAsMzMxNDYsMzMyMDMsMzMzMzcsMzQzMzAsMzQ3OTYsMzU0NDUsMzYzMjMsMzY5ODQsMzc1MjEsMzc5MjUsMzkyNDUsMzk4NTQsMjEzNTIsMjM2MzMsMjY5NjQsMjc4NDQsMjc5NDUsMjgyMDMsMzMyOTIsMzQyMDMsMzUxMzEsMzUzNzMsMzU0OTgsMzg2MzQsNDA4MDcsMjEwODksMjYyOTcsMjc1NzAsMzI0MDYsMzQ4MTQsMzYxMDksMzgyNzUsMzg0OTMsMjU4ODUsMjgwNDEsMjkxNjYsNjM4NTQsMjI0NzgsMjI5OTUsMjM0NjgsMjQ2MTUsMjQ4MjYsMjUxMDQsMjYxNDMsMjYyMDcsMjk0ODEsMjk2ODksMzA0MjcsMzA0NjUsMzE1OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzI4NTQsMzI4ODIsMzMxMjUsMzU0ODgsMzcyNjYsMTk5OTAsMjEyMTgsMjc1MDYsMjc5MjcsMzEyMzcsMzE1NDUsMzIwNDgsNjM4NTUsMzYwMTYsMjE0ODQsMjIwNjMsMjI2MDksMjM0NzcsMjM1NjcsMjM1NjksMjQwMzQsMjUxNTIsMjU0NzUsMjU2MjAsMjYxNTcsMjY4MDMsMjc4MzYsMjgwNDAsMjgzMzUsMjg3MDMsMjg4MzYsMjkxMzgsMjk5OTAsMzAwOTUsMzAwOTQsMzAyMzMsMzE1MDUsMzE3MTIsMzE3ODcsMzIwMzIsMzIwNTcsMzQwOTIsMzQxNTcsMzQzMTEsMzUzODAsMzY4NzcsMzY5NjEsMzcwNDUsMzc1NTksMzg5MDIsMzk0NzksMjA0MzksMjM2NjAsMjY0NjMsMjgwNDksMzE5MDMsMzIzOTYsMzU2MDYsMzYxMTgsMzY4OTUsMjM0MDMsMjQwNjEsMjU2MTMsMzM5ODQsMzY5NTYsMzkxMzcsMjk1NzUsMjM0MzUsMjQ3MzAsMjY0OTQsMjgxMjYsMzUzNTksMzU0OTQsMzY4NjUsMzg5MjQsMjEwNDcsNjM4NTYsMjg3NTMsMzA4NjIsMzc3ODIsMzQ5MjgsMzczMzUsMjA0NjIsMjE0NjMsMjIwMTMsMjIyMzQsMjI0MDIsMjI3ODEsMjMyMzQsMjM0MzIsMjM3MjMsMjM3NDQsMjQxMDEsMjQ4MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjUxMDEsMjUxNjMsMjU0ODAsMjU2MjgsMjU5MTAsMjU5NzYsMjcxOTMsMjc1MzAsMjc3MDAsMjc5MjksMjg0NjUsMjkxNTksMjk0MTcsMjk1NjAsMjk3MDMsMjk4NzQsMzAyNDYsMzA1NjEsMzExNjgsMzEzMTksMzE0NjYsMzE5MjksMzIxNDMsMzIxNzIsMzIzNTMsMzI2NzAsMzMwNjUsMzM1ODUsMzM5MzYsMzQwMTAsMzQyODIsMzQ5NjYsMzU1MDQsMzU3MjgsMzY2NjQsMzY5MzAsMzY5OTUsMzcyMjgsMzc1MjYsMzc1NjEsMzg1MzksMzg1NjcsMzg1NjgsMzg2MTQsMzg2NTYsMzg5MjAsMzkzMTgsMzk2MzUsMzk3MDYsMjE0NjAsMjI2NTQsMjI4MDksMjM0MDgsMjM0ODcsMjgxMTMsMjg1MDYsMjkwODcsMjk3MjksMjk4ODEsMzI5MDEsMzM3ODksMjQwMzMsMjQ0NTUsMjQ0OTAsMjQ2NDIsMjYwOTIsMjY2NDIsMjY5OTEsMjcyMTksMjc1MjksMjc5NTcsMjgxNDcsMjk2NjcsMzA0NjIsMzA2MzYsMzE1NjUsMzIwMjAsMzMwNTksMzMzMDgsMzM2MDAsMzQwMzYsMzQxNDcsMzU0MjYsMzU1MjQsMzcyNTUsMzc2NjIsMzg5MTgsMzkzNDgsMjUxMDAsMzQ4OTksMzY4NDgsMzc0NzcsMjM4MTUsMjM4NDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjM5MTMsMjk3OTEsMzMxODEsMzQ2NjQsMjg2MjksMjUzNDIsMzI3MjIsMzUxMjYsMzUxODYsMTk5OTgsMjAwNTYsMjA3MTEsMjEyMTMsMjEzMTksMjUyMTUsMjYxMTksMzIzNjEsMzQ4MjEsMzg0OTQsMjAzNjUsMjEyNzMsMjIwNzAsMjI5ODcsMjMyMDQsMjM2MDgsMjM2MzAsMjM2MjksMjQwNjYsMjQzMzcsMjQ2NDMsMjYwNDUsMjYxNTksMjYxNzgsMjY1NTgsMjY2MTIsMjk0NjgsMzA2OTAsMzEwMzQsMzI3MDksMzM5NDAsMzM5OTcsMzUyMjIsMzU0MzAsMzU0MzMsMzU1NTMsMzU5MjUsMzU5NjIsMjI1MTYsMjM1MDgsMjQzMzUsMjQ2ODcsMjUzMjUsMjY4OTMsMjc1NDIsMjgyNTIsMjkwNjAsMzE2OTgsMzQ2NDUsMzU2NzIsMzY2MDYsMzkxMzUsMzkxNjYsMjAyODAsMjAzNTMsMjA0NDksMjE2MjcsMjMwNzIsMjM0ODAsMjQ4OTIsMjYwMzIsMjYyMTYsMjkxODAsMzAwMDMsMzEwNzAsMzIwNTEsMzMxMDIsMzMyNTEsMzM2ODgsMzQyMTgsMzQyNTQsMzQ1NjMsMzUzMzgsMzY1MjMsMzY3NjMsNjM4NTcsMzY4MDUsMjI4MzMsMjM0NjAsMjM1MjYsMjQ3MTMsMjM1MjksMjM1NjMsMjQ1MTUsMjc3NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NTgsMjgxNDUsMjg2ODMsMjk5NzgsMzM0NTUsMzU1NzQsMjAxNjAsMjEzMTMsNjM4NTksMzg2MTcsMjc2NjMsMjAxMjYsMjA0MjAsMjA4MTgsMjE4NTQsMjMwNzcsMjM3ODQsMjUxMDUsMjkyNzMsMzM0NjksMzM3MDYsMzQ1NTgsMzQ5MDUsMzUzNTcsMzg0NjMsMzg1OTcsMzkxODcsNDAyMDEsNDAyODUsMjI1MzgsMjM3MzEsMjM5OTcsMjQxMzIsMjQ4MDEsMjQ4NTMsMjU1NjksMjcxMzgsMjgxOTcsMzcxMjIsMzc3MTYsMzg5OTAsMzk5NTIsNDA4MjMsMjM0MzMsMjM3MzYsMjUzNTMsMjYxOTEsMjY2OTYsMzA1MjQsMzg1OTMsMzg3OTcsMzg5OTYsMzk4MzksMjYwMTcsMzU1ODUsMzY1NTUsMzgzMzIsMjE4MTMsMjM3MjEsMjQwMjIsMjQyNDUsMjYyNjMsMzAyODQsMzM3ODAsMzgzNDMsMjI3MzksMjUyNzYsMjkzOTAsNDAyMzIsMjAyMDgsMjI4MzAsMjQ1OTEsMjYxNzEsMjc1MjMsMzEyMDcsNDAyMzAsMjEzOTUsMjE2OTYsMjI0NjcsMjM4MzAsMjQ4NTksMjYzMjYsMjgwNzksMzA4NjEsMzM0MDYsMzg1NTIsMzg3MjQsMjEzODAsMjUyMTIsMjU0OTQsMjgwODIsMzIyNjYsMzMwOTksMzg5ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjczODcsMzI1ODgsNDAzNjcsNDA0NzQsMjAwNjMsMjA1MzksMjA5MTgsMjI4MTIsMjQ4MjUsMjU1OTAsMjY5MjgsMjkyNDIsMzI4MjIsNjM4NjAsMzczMjYsMjQzNjksNjM4NjEsNjM4NjIsMzIwMDQsMzM1MDksMzM5MDMsMzM5NzksMzQyNzcsMzY0OTMsNjM4NjMsMjAzMzUsNjM4NjQsNjM4NjUsMjI3NTYsMjMzNjMsMjQ2NjUsMjU1NjIsMjU4ODAsMjU5NjUsMjYyNjQsNjM4NjYsMjY5NTQsMjcxNzEsMjc5MTUsMjg2NzMsMjkwMzYsMzAxNjIsMzAyMjEsMzExNTUsMzEzNDQsNjM4NjcsMzI2NTAsNjM4NjgsMzUxNDAsNjM4NjksMzU3MzEsMzczMTIsMzg1MjUsNjM4NzAsMzkxNzgsMjIyNzYsMjQ0ODEsMjYwNDQsMjg0MTcsMzAyMDgsMzExNDIsMzU0ODYsMzkzNDEsMzk3NzAsNDA4MTIsMjA3NDAsMjUwMTQsMjUyMzMsMjcyNzcsMzMyMjIsMjA1NDcsMjI1NzYsMjQ0MjIsMjg5MzcsMzUzMjgsMzU1NzgsMjM0MjAsMzQzMjYsMjA0NzQsMjA3OTYsMjIxOTYsMjI4NTIsMjU1MTMsMjgxNTMsMjM5NzgsMjY5ODksMjA4NzAsMjAxMDQsMjAzMTMsNjM4NzEsNjM4NzIsNjM4NzMsMjI5MTQsNjM4NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM4NzUsMjc0ODcsMjc3NDEsNjM4NzYsMjk4NzcsMzA5OTgsNjM4NzcsMzMyODcsMzMzNDksMzM1OTMsMzY2NzEsMzY3MDEsNjM4NzgsMzkxOTIsNjM4NzksNjM4ODAsNjM4ODEsMjAxMzQsNjM4ODIsMjI0OTUsMjQ0NDEsMjYxMzEsNjM4ODMsNjM4ODQsMzAxMjMsMzIzNzcsMzU2OTUsNjM4ODUsMzY4NzAsMzk1MTUsMjIxODEsMjI1NjcsMjMwMzIsMjMwNzEsMjM0NzYsNjM4ODYsMjQzMTAsNjM4ODcsNjM4ODgsMjU0MjQsMjU0MDMsNjM4ODksMjY5NDEsMjc3ODMsMjc4MzksMjgwNDYsMjgwNTEsMjgxNDksMjg0MzYsNjM4OTAsMjg4OTUsMjg5ODIsMjkwMTcsNjM4OTEsMjkxMjMsMjkxNDEsNjM4OTIsMzA3OTksMzA4MzEsNjM4OTMsMzE2MDUsMzIyMjcsNjM4OTQsMzIzMDMsNjM4OTUsMzQ4OTMsMzY1NzUsNjM4OTYsNjM4OTcsNjM4OTgsMzc0NjcsNjM4OTksNDAxODIsNjM5MDAsNjM5MDEsNjM5MDIsMjQ3MDksMjgwMzcsNjM5MDMsMjkxMDUsNjM5MDQsNjM5MDUsMzgzMjEsMjE0MjEsNjM5MDYsNjM5MDcsNjM5MDgsMjY1NzksNjM5MDksMjg4MTQsMjg5NzYsMjk3NDQsMzMzOTgsMzM0OTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5MTAsMzgzMzEsMzk2NTMsNDA1NzMsMjYzMDgsNjM5MTEsMjkxMjEsMzM4NjUsNjM5MTIsNjM5MTMsMjI2MDMsNjM5MTQsNjM5MTUsMjM5OTIsMjQ0MzMsNjM5MTYsMjYxNDQsMjYyNTQsMjcwMDEsMjcwNTQsMjc3MDQsMjc4OTEsMjgyMTQsMjg0ODEsMjg2MzQsMjg2OTksMjg3MTksMjkwMDgsMjkxNTEsMjk1NTIsNjM5MTcsMjk3ODcsNjM5MTgsMjk5MDgsMzA0MDgsMzEzMTAsMzI0MDMsNjM5MTksNjM5MjAsMzM1MjEsMzU0MjQsMzY4MTQsNjM5MjEsMzc3MDQsNjM5MjIsMzg2ODEsNjM5MjMsNjM5MjQsMjAwMzQsMjA1MjIsNjM5MjUsMjEwMDAsMjE0NzMsMjYzNTUsMjc3NTcsMjg2MTgsMjk0NTAsMzA1OTEsMzEzMzAsMzM0NTQsMzQyNjksMzQzMDYsNjM5MjYsMzUwMjgsMzU0MjcsMzU3MDksMzU5NDcsNjM5MjcsMzc1NTUsNjM5MjgsMzg2NzUsMzg5MjgsMjAxMTYsMjAyMzcsMjA0MjUsMjA2NTgsMjEzMjAsMjE1NjYsMjE1NTUsMjE5NzgsMjI2MjYsMjI3MTQsMjI4ODcsMjMwNjcsMjM1MjQsMjQ3MzUsNjM5MjksMjUwMzQsMjU5NDIsMjYxMTEsMjYyMTIsMjY3OTEsMjc3MzgsMjg1OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg4NzksMjkxMDAsMjk1MjIsMzE2MTMsMzQ1NjgsMzU0OTIsMzk5ODYsNDA3MTEsMjM2MjcsMjc3NzksMjk1MDgsMjk1NzcsMzc0MzQsMjgzMzEsMjk3OTcsMzAyMzksMzEzMzcsMzIyNzcsMzQzMTQsMjA4MDAsMjI3MjUsMjU3OTMsMjk5MzQsMjk5NzMsMzAzMjAsMzI3MDUsMzcwMTMsMzg2MDUsMzkyNTIsMjgxOTgsMjk5MjYsMzE0MDEsMzE0MDIsMzMyNTMsMzQ1MjEsMzQ2ODAsMzUzNTUsMjMxMTMsMjM0MzYsMjM0NTEsMjY3ODUsMjY4ODAsMjgwMDMsMjk2MDksMjk3MTUsMjk3NDAsMzA4NzEsMzIyMzMsMzI3NDcsMzMwNDgsMzMxMDksMzM2OTQsMzU5MTYsMzg0NDYsMzg5MjksMjYzNTIsMjQ0NDgsMjYxMDYsMjY1MDUsMjc3NTQsMjk1NzksMjA1MjUsMjMwNDMsMjc0OTgsMzA3MDIsMjI4MDYsMjM5MTYsMjQwMTMsMjk0NzcsMzAwMzEsNjM5MzAsNjM5MzEsMjA3MDksMjA5ODUsMjI1NzUsMjI4MjksMjI5MzQsMjMwMDIsMjM1MjUsNjM5MzIsNjM5MzMsMjM5NzAsMjUzMDMsMjU2MjIsMjU3NDcsMjU4NTQsNjM5MzQsMjYzMzIsNjM5MzUsMjcyMDgsNjM5MzYsMjkxODMsMjk3OTYsNjM5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzEzNjgsMzE0MDcsMzIzMjcsMzIzNTAsMzI3NjgsMzMxMzYsNjM5MzgsMzQ3OTksMzUyMDEsMzU2MTYsMzY5NTMsNjM5MzksMzY5OTIsMzkyNTAsMjQ5NTgsMjc0NDIsMjgwMjAsMzIyODcsMzUxMDksMzY3ODUsMjA0MzMsMjA2NTMsMjA4ODcsMjExOTEsMjI0NzEsMjI2NjUsMjM0ODEsMjQyNDgsMjQ4OTgsMjcwMjksMjgwNDQsMjgyNjMsMjgzNDIsMjkwNzYsMjk3OTQsMjk5OTIsMjk5OTYsMzI4ODMsMzM1OTIsMzM5OTMsMzYzNjIsMzc3ODAsMzc4NTQsNjM5NDAsMjAxMTAsMjAzMDUsMjA1OTgsMjA3NzgsMjE0NDgsMjE0NTEsMjE0OTEsMjM0MzEsMjM1MDcsMjM1ODgsMjQ4NTgsMjQ5NjIsMjYxMDAsMjkyNzUsMjk1OTEsMjk3NjAsMzA0MDIsMzEwNTYsMzExMjEsMzExNjEsMzIwMDYsMzI3MDEsMzM0MTksMzQyNjEsMzQzOTgsMzY4MDIsMzY5MzUsMzcxMDksMzczNTQsMzg1MzMsMzg2MzIsMzg2MzMsMjEyMDYsMjQ0MjMsMjYwOTMsMjYxNjEsMjY2NzEsMjkwMjAsMzEyODYsMzcwNTcsMzg5MjIsMjAxMTMsNjM5NDEsMjcyMTgsMjc1NTAsMjg1NjAsMjkwNjUsMzI3OTIsMzM0NjQsMzQxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzY5MzksMzg1NDksMzg2NDIsMzg5MDcsMzQwNzQsMzk3MjksMjAxMTIsMjkwNjYsMzg1OTYsMjA4MDMsMjE0MDcsMjE3MjksMjIyOTEsMjIyOTAsMjI0MzUsMjMxOTUsMjMyMzYsMjM0OTEsMjQ2MTYsMjQ4OTUsMjU1ODgsMjc3ODEsMjc5NjEsMjgyNzQsMjgzMDQsMjkyMzIsMjk1MDMsMjk3ODMsMzM0ODksMzQ5NDUsMzY2NzcsMzY5NjAsNjM5NDIsMzg0OTgsMzkwMDAsNDAyMTksMjYzNzYsMzYyMzQsMzc0NzAsMjAzMDEsMjA1NTMsMjA3MDIsMjEzNjEsMjIyODUsMjI5OTYsMjMwNDEsMjM1NjEsMjQ5NDQsMjYyNTYsMjgyMDUsMjkyMzQsMjk3NzEsMzIyMzksMzI5NjMsMzM4MDYsMzM4OTQsMzQxMTEsMzQ2NTUsMzQ5MDcsMzUwOTYsMzU1ODYsMzY5NDksMzg4NTksMzk3NTksMjAwODMsMjAzNjksMjA3NTQsMjA4NDIsNjM5NDMsMjE4MDcsMjE5MjksMjM0MTgsMjM0NjEsMjQxODgsMjQxODksMjQyNTQsMjQ3MzYsMjQ3OTksMjQ4NDAsMjQ4NDEsMjU1NDAsMjU5MTIsMjYzNzcsNjM5NDQsMjY1ODAsMjY1ODYsNjM5NDUsMjY5NzcsMjY5NzgsMjc4MzMsMjc5NDMsNjM5NDYsMjgyMTYsNjM5NDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjg2NDEsMjk0OTQsMjk0OTUsNjM5NDgsMjk3ODgsMzAwMDEsNjM5NDksMzAyOTAsNjM5NTAsNjM5NTEsMzIxNzMsMzMyNzgsMzM4NDgsMzUwMjksMzU0ODAsMzU1NDcsMzU1NjUsMzY0MDAsMzY0MTgsMzY5MzgsMzY5MjYsMzY5ODYsMzcxOTMsMzczMjEsMzc3NDIsNjM5NTIsNjM5NTMsMjI1MzcsNjM5NTQsMjc2MDMsMzI5MDUsMzI5NDYsNjM5NTUsNjM5NTYsMjA4MDEsMjI4OTEsMjM2MDksNjM5NTcsNjM5NTgsMjg1MTYsMjk2MDcsMzI5OTYsMzYxMDMsNjM5NTksMzczOTksMzgyODcsNjM5NjAsNjM5NjEsNjM5NjIsNjM5NjMsMzI4OTUsMjUxMDIsMjg3MDAsMzIxMDQsMzQ3MDEsNjM5NjQsMjI0MzIsMjQ2ODEsMjQ5MDMsMjc1NzUsMzU1MTgsMzc1MDQsMzg1NzcsMjAwNTcsMjE1MzUsMjgxMzksMzQwOTMsMzg1MTIsMzg4OTksMzkxNTAsMjU1NTgsMjc4NzUsMzcwMDksMjA5NTcsMjUwMzMsMzMyMTAsNDA0NDEsMjAzODEsMjA1MDYsMjA3MzYsMjM0NTIsMjQ4NDcsMjUwODcsMjU4MzYsMjY4ODUsMjc1ODksMzAwOTcsMzA2OTEsMzI2ODEsMzMzODAsMzQxOTEsMzQ4MTEsMzQ5MTUsMzU1MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzU2OTYsMzcyOTEsMjAxMDgsMjAxOTcsMjAyMzQsNjM5NjUsNjM5NjYsMjI4MzksMjMwMTYsNjM5NjcsMjQwNTAsMjQzNDcsMjQ0MTEsMjQ2MDksNjM5NjgsNjM5NjksNjM5NzAsNjM5NzEsMjkyNDYsMjk2NjksNjM5NzIsMzAwNjQsMzAxNTcsNjM5NzMsMzEyMjcsNjM5NzQsMzI3ODAsMzI4MTksMzI5MDAsMzM1MDUsMzM2MTcsNjM5NzUsNjM5NzYsMzYwMjksMzYwMTksMzY5OTksNjM5NzcsNjM5NzgsMzkxNTYsMzkxODAsNjM5NzksNjM5ODAsMjg3MjcsMzA0MTAsMzI3MTQsMzI3MTYsMzI3NjQsMzU2MTAsMjAxNTQsMjAxNjEsMjA5OTUsMjEzNjAsNjM5ODEsMjE2OTMsMjIyNDAsMjMwMzUsMjM0OTMsMjQzNDEsMjQ1MjUsMjgyNzAsNjM5ODIsNjM5ODMsMzIxMDYsMzM1ODksNjM5ODQsMzQ0NTEsMzU0NjksNjM5ODUsMzg3NjUsMzg3NzUsNjM5ODYsNjM5ODcsMTk5NjgsMjAzMTQsMjAzNTAsMjI3NzcsMjYwODUsMjgzMjIsMzY5MjAsMzc4MDgsMzkzNTMsMjAyMTksMjI3NjQsMjI5MjIsMjMwMDEsMjQ2NDEsNjM5ODgsNjM5ODksMzEyNTIsNjM5OTAsMzM2MTUsMzYwMzUsMjA4MzcsMjEzMTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjM5OTEsNjM5OTIsNjM5OTMsMjAxNzMsMjEwOTcsMjMzODEsMzM0NzEsMjAxODAsMjEwNTAsMjE2NzIsMjI5ODUsMjMwMzksMjMzNzYsMjMzODMsMjMzODgsMjQ2NzUsMjQ5MDQsMjgzNjMsMjg4MjUsMjkwMzgsMjk1NzQsMjk5NDMsMzAxMzMsMzA5MTMsMzIwNDMsMzI3NzMsMzMyNTgsMzM1NzYsMzQwNzEsMzQyNDksMzU1NjYsMzYwMzksMzg2MDQsMjAzMTYsMjEyNDIsMjIyMDQsMjYwMjcsMjYxNTIsMjg3OTYsMjg4NTYsMjkyMzcsMzIxODksMzM0MjEsMzcxOTYsMzg1OTIsNDAzMDYsMjM0MDksMjY4NTUsMjc1NDQsMjg1MzgsMzA0MzAsMjM2OTcsMjYyODMsMjg1MDcsMzE2NjgsMzE3ODYsMzQ4NzAsMzg2MjAsMTk5NzYsMjAxODMsMjEyODAsMjI1ODAsMjI3MTUsMjI3NjcsMjI4OTIsMjM1NTksMjQxMTUsMjQxOTYsMjQzNzMsMjU0ODQsMjYyOTAsMjY0NTQsMjcxNjcsMjcyOTksMjc0MDQsMjg0NzksMjkyNTQsNjM5OTQsMjk1MjAsMjk4MzUsMzE0NTYsMzE5MTEsMzMxNDQsMzMyNDcsMzMyNTUsMzM2NzQsMzM5MDAsMzQwODMsMzQxOTYsMzQyNTUsMzUwMzcsMzYxMTUsMzcyOTIsMzgyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg1NTYsMjA4NzcsMjE3MDUsMjIzMTIsMjM0NzIsMjUxNjUsMjY0NDgsMjY2ODUsMjY3NzEsMjgyMjEsMjgzNzEsMjg3OTcsMzIyODksMzUwMDksMzYwMDEsMzY2MTcsNDA3NzksNDA3ODIsMjkyMjksMzE2MzEsMzU1MzMsMzc2NTgsMjAyOTUsMjAzMDIsMjA3ODYsMjE2MzIsMjI5OTIsMjQyMTMsMjUyNjksMjY0ODUsMjY5OTAsMjcxNTksMjc4MjIsMjgxODYsMjk0MDEsMjk0ODIsMzAxNDEsMzE2NzIsMzIwNTMsMzM1MTEsMzM3ODUsMzM4NzksMzQyOTUsMzU0MTksMzYwMTUsMzY0ODcsMzY4ODksMzcwNDgsMzg2MDYsNDA3OTksMjEyMTksMjE1MTQsMjMyNjUsMjM0OTAsMjU2ODgsMjU5NzMsMjg0MDQsMjkzODAsNjM5OTUsMzAzNDAsMzEzMDksMzE1MTUsMzE4MjEsMzIzMTgsMzI3MzUsMzM2NTksMzU2MjcsMzYwNDIsMzYxOTYsMzYzMjEsMzY0NDcsMzY4NDIsMzY4NTcsMzY5NjksMzc4NDEsMjAyOTEsMjAzNDYsMjA2NTksMjA4NDAsMjA4NTYsMjEwNjksMjEwOTgsMjI2MjUsMjI2NTIsMjI4ODAsMjM1NjAsMjM2MzcsMjQyODMsMjQ3MzEsMjUxMzYsMjY2NDMsMjc1ODMsMjc2NTYsMjg1OTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkwMDYsMjk3MjgsMzAwMDAsMzAwMDgsMzAwMzMsMzAzMjIsMzE1NjQsMzE2MjcsMzE2NjEsMzE2ODYsMzIzOTksMzU0MzgsMzY2NzAsMzY2ODEsMzc0MzksMzc1MjMsMzc2NjYsMzc5MzEsMzg2NTEsMzkwMDIsMzkwMTksMzkxOTgsMjA5OTksMjUxMzAsMjUyNDAsMjc5OTMsMzAzMDgsMzE0MzQsMzE2ODAsMzIxMTgsMjEzNDQsMjM3NDIsMjQyMTUsMjg0NzIsMjg4NTcsMzE4OTYsMzg2NzMsMzk4MjIsNDA2NzAsMjU1MDksMjU3MjIsMzQ2NzgsMTk5NjksMjAxMTcsMjAxNDEsMjA1NzIsMjA1OTcsMjE1NzYsMjI5NzksMjM0NTAsMjQxMjgsMjQyMzcsMjQzMTEsMjQ0NDksMjQ3NzMsMjU0MDIsMjU5MTksMjU5NzIsMjYwNjAsMjYyMzAsMjYyMzIsMjY2MjIsMjY5ODQsMjcyNzMsMjc0OTEsMjc3MTIsMjgwOTYsMjgxMzYsMjgxOTEsMjgyNTQsMjg3MDIsMjg4MzMsMjk1ODIsMjk2OTMsMzAwMTAsMzA1NTUsMzA4NTUsMzExMTgsMzEyNDMsMzEzNTcsMzE5MzQsMzIxNDIsMzMzNTEsMzUzMzAsMzU1NjIsMzU5OTgsMzcxNjUsMzcxOTQsMzczMzYsMzc0NzgsMzc1ODAsMzc2NjQsMzg2NjIsMzg3NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg3NDgsMzg5MTQsNDA3MTgsMjEwNDYsMjExMzcsMjE4ODQsMjI1NjQsMjQwOTMsMjQzNTEsMjQ3MTYsMjU1NTIsMjY3OTksMjg2MzksMzEwODUsMzE1MzIsMzMyMjksMzQyMzQsMzUwNjksMzU1NzYsMzY0MjAsMzcyNjEsMzg1MDAsMzg1NTUsMzg3MTcsMzg5ODgsNDA3NzgsMjA0MzAsMjA4MDYsMjA5MzksMjExNjEsMjIwNjYsMjQzNDAsMjQ0MjcsMjU1MTQsMjU4MDUsMjYwODksMjYxNzcsMjYzNjIsMjYzNjEsMjYzOTcsMjY3ODEsMjY4MzksMjcxMzMsMjg0MzcsMjg1MjYsMjkwMzEsMjkxNTcsMjkyMjYsMjk4NjYsMzA1MjIsMzEwNjIsMzEwNjYsMzExOTksMzEyNjQsMzEzODEsMzE4OTUsMzE5NjcsMzIwNjgsMzIzNjgsMzI5MDMsMzQyOTksMzQ0NjgsMzU0MTIsMzU1MTksMzYyNDksMzY0ODEsMzY4OTYsMzY5NzMsMzczNDcsMzg0NTksMzg2MTMsNDAxNjUsMjYwNjMsMzE3NTEsMzYyNzUsMzc4MjcsMjMzODQsMjM1NjIsMjEzMzAsMjUzMDUsMjk0NjksMjA1MTksMjM0NDcsMjQ0NzgsMjQ3NTIsMjQ5MzksMjY4MzcsMjgxMjEsMjk3NDIsMzEyNzgsMzIwNjYsMzIxNTYsMzIzMDUsMzMxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYzOTQsMzY0MDUsMzc3NTgsMzc5MTIsMjAzMDQsMjIzNTIsMjQwMzgsMjQyMzEsMjUzODcsMzI2MTgsMjAwMjcsMjAzMDMsMjAzNjcsMjA1NzAsMjMwMDUsMzI5NjQsMjE2MTAsMjE2MDgsMjIwMTQsMjI4NjMsMjM0NDksMjQwMzAsMjQyODIsMjYyMDUsMjY0MTcsMjY2MDksMjY2NjYsMjc4ODAsMjc5NTQsMjgyMzQsMjg1NTcsMjg4NTUsMjk2NjQsMzAwODcsMzE4MjAsMzIwMDIsMzIwNDQsMzIxNjIsMzMzMTEsMzQ1MjMsMzUzODcsMzU0NjEsMzYyMDgsMzY0OTAsMzY2NTksMzY5MTMsMzcxOTgsMzcyMDIsMzc5NTYsMzkzNzYsMzE0ODEsMzE5MDksMjA0MjYsMjA3MzcsMjA5MzQsMjI0NzIsMjM1MzUsMjM4MDMsMjYyMDEsMjcxOTcsMjc5OTQsMjgzMTAsMjg2NTIsMjg5NDAsMzAwNjMsMzE0NTksMzQ4NTAsMzY4OTcsMzY5ODEsMzg2MDMsMzk0MjMsMzM1MzcsMjAwMTMsMjAyMTAsMzQ4ODYsMzczMjUsMjEzNzMsMjczNTUsMjY5ODcsMjc3MTMsMzM5MTQsMjI2ODYsMjQ5NzQsMjYzNjYsMjUzMjcsMjg4OTMsMjk5NjksMzAxNTEsMzIzMzgsMzM5NzYsMzU2NTcsMzYxMDQsMjAwNDMsMjE0ODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2NzUsMjIzMjAsMjIzMzYsMjQ1MzUsMjUzNDUsMjUzNTEsMjU3MTEsMjU5MDMsMjYwODgsMjYyMzQsMjY1MjUsMjY1NDcsMjc0OTAsMjc3NDQsMjc4MDIsMjg0NjAsMzA2OTMsMzA3NTcsMzEwNDksMzEwNjMsMzIwMjUsMzI5MzAsMzMwMjYsMzMyNjcsMzM0MzcsMzM0NjMsMzQ1ODQsMzU0NjgsNjM5OTYsMzYxMDAsMzYyODYsMzY5NzgsMzA0NTIsMzEyNTcsMzEyODcsMzIzNDAsMzI4ODcsMjE3NjcsMjE5NzIsMjI2NDUsMjUzOTEsMjU2MzQsMjYxODUsMjYxODcsMjY3MzMsMjcwMzUsMjc1MjQsMjc5NDEsMjgzMzcsMjk2NDUsMjk4MDAsMjk4NTcsMzAwNDMsMzAxMzcsMzA0MzMsMzA0OTQsMzA2MDMsMzEyMDYsMzIyNjUsMzIyODUsMzMyNzUsMzQwOTUsMzQ5NjcsMzUzODYsMzYwNDksMzY1ODcsMzY3ODQsMzY5MTQsMzc4MDUsMzg0OTksMzg1MTUsMzg2NjMsMjAzNTYsMjE0ODksMjMwMTgsMjMyNDEsMjQwODksMjY3MDIsMjk4OTQsMzAxNDIsMzEyMDksMzEzNzgsMzMxODcsMzQ1NDEsMzYwNzQsMzYzMDAsMzY4NDUsMjYwMTUsMjYzODksNjM5OTcsMjI1MTksMjg1MDMsMzIyMjEsMzY2NTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc4NzgsMzg1OTgsMjQ1MDEsMjUwNzQsMjg1NDgsMTk5ODgsMjAzNzYsMjA1MTEsMjE0NDksMjE5ODMsMjM5MTksMjQwNDYsMjc0MjUsMjc0OTIsMzA5MjMsMzE2NDIsNjM5OTgsMzY0MjUsMzY1NTQsMzY5NzQsMjU0MTcsMjU2NjIsMzA1MjgsMzEzNjQsMzc2NzksMzgwMTUsNDA4MTAsMjU3NzYsMjg1OTEsMjkxNTgsMjk4NjQsMjk5MTQsMzE0MjgsMzE3NjIsMzIzODYsMzE5MjIsMzI0MDgsMzU3MzgsMzYxMDYsMzgwMTMsMzkxODQsMzkyNDQsMjEwNDksMjM1MTksMjU4MzAsMjY0MTMsMzIwNDYsMjA3MTcsMjE0NDMsMjI2NDksMjQ5MjAsMjQ5MjEsMjUwODIsMjYwMjgsMzE0NDksMzU3MzAsMzU3MzQsMjA0ODksMjA1MTMsMjExMDksMjE4MDksMjMxMDAsMjQyODgsMjQ0MzIsMjQ4ODQsMjU5NTAsMjYxMjQsMjYxNjYsMjYyNzQsMjcwODUsMjgzNTYsMjg0NjYsMjk0NjIsMzAyNDEsMzEzNzksMzMwODEsMzMzNjksMzM3NTAsMzM5ODAsMjA2NjEsMjI1MTIsMjM0ODgsMjM1MjgsMjQ0MjUsMjU1MDUsMzA3NTgsMzIxODEsMzM3NTYsMzQwODEsMzczMTksMzczNjUsMjA4NzQsMjY2MTMsMzE1NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYwMTIsMjA5MzIsMjI5NzEsMjQ3NjUsMzQzODksMjA1MDgsNjM5OTksMjEwNzYsMjM2MTAsMjQ5NTcsMjUxMTQsMjUyOTksMjU4NDIsMjYwMjEsMjgzNjQsMzAyNDAsMzMwMzQsMzY0NDgsMzg0OTUsMzg1ODcsMjAxOTEsMjEzMTUsMjE5MTIsMjI4MjUsMjQwMjksMjU3OTcsMjc4NDksMjgxNTQsMjk1ODgsMzEzNTksMzMzMDcsMzQyMTQsMzYwNjgsMzYzNjgsMzY5ODMsMzczNTEsMzgzNjksMzg0MzMsMzg4NTQsMjA5ODQsMjE3NDYsMjE4OTQsMjQ1MDUsMjU3NjQsMjg1NTIsMzIxODAsMzY2MzksMzY2ODUsMzc5NDEsMjA2ODEsMjM1NzQsMjc4MzgsMjgxNTUsMjk5NzksMzA2NTEsMzE4MDUsMzE4NDQsMzU0NDksMzU1MjIsMjI1NTgsMjI5NzQsMjQwODYsMjU0NjMsMjkyNjYsMzAwOTAsMzA1NzEsMzU1NDgsMzYwMjgsMzY2MjYsMjQzMDcsMjYyMjgsMjgxNTIsMzI4OTMsMzM3MjksMzU1MzEsMzg3MzcsMzk4OTQsNjQwMDAsMjEwNTksMjYzNjcsMjgwNTMsMjgzOTksMzIyMjQsMzU1NTgsMzY5MTAsMzY5NTgsMzk2MzYsMjEwMjEsMjExMTksMjE3MzYsMjQ5ODAsMjUyMjAsMjUzMDcsMjY3ODYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjY4OTgsMjY5NzAsMjcxODksMjg4MTgsMjg5NjYsMzA4MTMsMzA5NzcsMzA5OTAsMzExODYsMzEyNDUsMzI5MTgsMzM0MDAsMzM0OTMsMzM2MDksMzQxMjEsMzU5NzAsMzYyMjksMzcyMTgsMzcyNTksMzcyOTQsMjA0MTksMjIyMjUsMjkxNjUsMzA2NzksMzQ1NjAsMzUzMjAsMjM1NDQsMjQ1MzQsMjY0NDksMzcwMzIsMjE0NzQsMjI2MTgsMjM1NDEsMjQ3NDAsMjQ5NjEsMjU2OTYsMzIzMTcsMzI4ODAsMzQwODUsMzc1MDcsMjU3NzQsMjA2NTIsMjM4MjgsMjYzNjgsMjI2ODQsMjUyNzcsMjU1MTIsMjY4OTQsMjcwMDAsMjcxNjYsMjgyNjcsMzAzOTQsMzExNzksMzM0NjcsMzM4MzMsMzU1MzUsMzYyNjQsMzY4NjEsMzcxMzgsMzcxOTUsMzcyNzYsMzc2NDgsMzc2NTYsMzc3ODYsMzg2MTksMzk0NzgsMzk5NDksMTk5ODUsMzAwNDQsMzEwNjksMzE0ODIsMzE1NjksMzE2ODksMzIzMDIsMzM5ODgsMzY0NDEsMzY0NjgsMzY2MDAsMzY4ODAsMjYxNDksMjY5NDMsMjk3NjMsMjA5ODYsMjY0MTQsNDA2NjgsMjA4MDUsMjQ1NDQsMjc3OTgsMzQ4MDIsMzQ5MDksMzQ5MzUsMjQ3NTYsMzMyMDUsMzM3OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzYxMDEsMjE0NjIsMjE1NjEsMjIwNjgsMjMwOTQsMjM2MDEsMjg4MTAsMzI3MzYsMzI4NTgsMzMwMzAsMzMyNjEsMzYyNTksMzcyNTcsMzk1MTksNDA0MzQsMjA1OTYsMjAxNjQsMjE0MDgsMjQ4MjcsMjgyMDQsMjM2NTIsMjAzNjAsMjA1MTYsMjE5ODgsMjM3NjksMjQxNTksMjQ2NzcsMjY3NzIsMjc4MzUsMjgxMDAsMjkxMTgsMzAxNjQsMzAxOTYsMzAzMDUsMzEyNTgsMzEzMDUsMzIxOTksMzIyNTEsMzI2MjIsMzMyNjgsMzQ0NzMsMzY2MzYsMzg2MDEsMzkzNDcsNDA3ODYsMjEwNjMsMjExODksMzkxNDksMzUyNDIsMTk5NzEsMjY1NzgsMjg0MjIsMjA0MDUsMjM1MjIsMjY1MTcsMjc3ODQsMjgwMjQsMjk3MjMsMzA3NTksMzczNDEsMzc3NTYsMzQ3NTYsMzEyMDQsMzEyODEsMjQ1NTUsMjAxODIsMjE2NjgsMjE4MjIsMjI3MDIsMjI5NDksMjQ4MTYsMjUxNzEsMjUzMDIsMjY0MjIsMjY5NjUsMzMzMzMsMzg0NjQsMzkzNDUsMzkzODksMjA1MjQsMjEzMzEsMjE4MjgsMjIzOTYsNjQwMDEsMjUxNzYsNjQwMDIsMjU4MjYsMjYyMTksMjY1ODksMjg2MDksMjg2NTUsMjk3MzAsMjk3NTIsMzUzNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzc5NDQsMjE1ODUsMjIwMjIsMjIzNzQsMjQzOTIsMjQ5ODYsMjc0NzAsMjg3NjAsMjg4NDUsMzIxODcsMzU0NzcsMjI4OTAsMzMwNjcsMjU1MDYsMzA0NzIsMzI4MjksMzYwMTAsMjI2MTIsMjU2NDUsMjcwNjcsMjM0NDUsMjQwODEsMjgyNzEsNjQwMDMsMzQxNTMsMjA4MTIsMjE0ODgsMjI4MjYsMjQ2MDgsMjQ5MDcsMjc1MjYsMjc3NjAsMjc4ODgsMzE1MTgsMzI5NzQsMzM0OTIsMzYyOTQsMzcwNDAsMzkwODksNjQwMDQsMjU3OTksMjg1ODAsMjU3NDUsMjU4NjAsMjA4MTQsMjE1MjAsMjIzMDMsMzUzNDIsMjQ5MjcsMjY3NDIsNjQwMDUsMzAxNzEsMzE1NzAsMzIxMTMsMzY4OTAsMjI1MzQsMjcwODQsMzMxNTEsMzUxMTQsMzY4NjQsMzg5NjksMjA2MDAsMjI4NzEsMjI5NTYsMjUyMzcsMzY4NzksMzk3MjIsMjQ5MjUsMjkzMDUsMzgzNTgsMjIzNjksMjMxMTAsMjQwNTIsMjUyMjYsMjU3NzMsMjU4NTAsMjY0ODcsMjc4NzQsMjc5NjYsMjkyMjgsMjk3NTAsMzA3NzIsMzI2MzEsMzM0NTMsMzYzMTUsMzg5MzUsMjEwMjgsMjIzMzgsMjY0OTUsMjkyNTYsMjk5MjMsMzYwMDksMzY3NzQsMzczOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzg0NDIsMjA4NDMsMjE0ODUsMjU0MjAsMjAzMjksMjE3NjQsMjQ3MjYsMjU5NDMsMjc4MDMsMjgwMzEsMjkyNjAsMjk0MzcsMzEyNTUsMzUyMDcsMzU5OTcsMjQ0MjksMjg1NTgsMjg5MjEsMzMxOTIsMjQ4NDYsMjA0MTUsMjA1NTksMjUxNTMsMjkyNTUsMzE2ODcsMzIyMzIsMzI3NDUsMzY5NDEsMzg4MjksMzk0NDksMzYwMjIsMjIzNzgsMjQxNzksMjY1NDQsMzM4MDUsMzU0MTMsMjE1MzYsMjMzMTgsMjQxNjMsMjQyOTAsMjQzMzAsMjU5ODcsMzI5NTQsMzQxMDksMzgyODEsMzg0OTEsMjAyOTYsMjEyNTMsMjEyNjEsMjEyNjMsMjE2MzgsMjE3NTQsMjIyNzUsMjQwNjcsMjQ1OTgsMjUyNDMsMjUyNjUsMjU0MjksNjQwMDYsMjc4NzMsMjgwMDYsMzAxMjksMzA3NzAsMzI5OTAsMzMwNzEsMzM1MDIsMzM4ODksMzM5NzAsMzQ5NTcsMzUwOTAsMzY4NzUsMzc2MTAsMzkxNjUsMzk4MjUsMjQxMzMsMjYyOTIsMjYzMzMsMjg2ODksMjkxOTAsNjQwMDcsMjA0NjksMjExMTcsMjQ0MjYsMjQ5MTUsMjY0NTEsMjcxNjEsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU5NjEsMzkxMTEsMzkxMDgsMzk0OTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjE2OTcsMzEyNjMsMjY5NjMsMzU1NzUsMzU5MTQsMzkwODAsMzkzNDIsMjQ0NDQsMjUyNTksMzAxMzAsMzAzODIsMzQ5ODcsMzY5OTEsMzg0NjYsMjEzMDUsMjQzODAsMjQ1MTcsMjc4NTIsMjk2NDQsMzAwNTAsMzAwOTEsMzE1NTgsMzM1MzQsMzkzMjUsMjAwNDcsMzY5MjQsMTk5NzksMjAzMDksMjE0MTQsMjI3OTksMjQyNjQsMjYxNjAsMjc4MjcsMjk3ODEsMzM2NTUsMzQ2NjIsMzYwMzIsMzY5NDQsMzg2ODYsMzk5NTcsMjI3MzcsMjM0MTYsMzQzODQsMzU2MDQsNDAzNzIsMjM1MDYsMjQ2ODAsMjQ3MTcsMjYwOTcsMjc3MzUsMjg0NTAsMjg1NzksMjg2OTgsMzI1OTcsMzI3NTIsMzgyODksMzgyOTAsMzg0ODAsMzg4NjcsMjExMDYsMzY2NzYsMjA5ODksMjE1NDcsMjE2ODgsMjE4NTksMjE4OTgsMjczMjMsMjgwODUsMzIyMTYsMzMzODIsMzc1MzIsMzg1MTksNDA1NjksMjE1MTIsMjE3MDQsMzA0MTgsMzQ1MzIsMzgzMDgsMzgzNTYsMzg0OTIsMjAxMzAsMjAyMzMsMjMwMjIsMjMyNzAsMjQwNTUsMjQ2NTgsMjUyMzksMjY0NzcsMjY2ODksMjc3ODIsMjgyMDcsMzI1NjgsMzI5MjMsMzMzMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjQwMDgsNjQwMDksMzg5MTcsMjAxMzMsMjA1NjUsMjE2ODMsMjI0MTksMjI4NzQsMjM0MDEsMjM0NzUsMjUwMzIsMjY5OTksMjgwMjMsMjg3MDcsMzQ4MDksMzUyOTksMzU0NDIsMzU1NTksMzY5OTQsMzk0MDUsMzk2MDgsMjExODIsMjY2ODAsMjA1MDIsMjQxODQsMjY0NDcsMzM2MDcsMzQ4OTIsMjAxMzksMjE1MjEsMjIxOTAsMjk2NzAsMzcxNDEsMzg5MTEsMzkxNzcsMzkyNTUsMzkzMjEsMjIwOTksMjI2ODcsMzQzOTUsMzUzNzcsMjUwMTAsMjczODIsMjk1NjMsMzY1NjIsMjc0NjMsMzg1NzAsMzk1MTEsMjI4NjksMjkxODQsMzYyMDMsMzg3NjEsMjA0MzYsMjM3OTYsMjQzNTgsMjUwODAsMjYyMDMsMjc4ODMsMjg4NDMsMjk1NzIsMjk2MjUsMjk2OTQsMzA1MDUsMzA1NDEsMzIwNjcsMzIwOTgsMzIyOTEsMzMzMzUsMzQ4OTgsNjQwMTAsMzYwNjYsMzc0NDksMzkwMjMsMjMzNzcsMzEzNDgsMzQ4ODAsMzg5MTMsMjMyNDQsMjA0NDgsMjEzMzIsMjI4NDYsMjM4MDUsMjU0MDYsMjgwMjUsMjk0MzMsMzMwMjksMzMwMzEsMzM2OTgsMzc1ODMsMzg5NjAsMjAxMzYsMjA4MDQsMjEwMDksMjI0MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQ0MTgsMjc4NDIsMjgzNjYsMjg2NzcsMjg3NTIsMjg4NDcsMjkwNzQsMjk2NzMsMjk4MDEsMzM2MTAsMzQ3MjIsMzQ5MTMsMzY4NzIsMzcwMjYsMzc3OTUsMzkzMzYsMjA4NDYsMjQ0MDcsMjQ4MDAsMjQ5MzUsMjYyOTEsMzQxMzcsMzY0MjYsMzcyOTUsMzg3OTUsMjAwNDYsMjAxMTQsMjE2MjgsMjI3NDEsMjI3NzgsMjI5MDksMjM3MzMsMjQzNTksMjUxNDIsMjUxNjAsMjYxMjIsMjYyMTUsMjc2MjcsMjgwMDksMjgxMTEsMjgyNDYsMjg0MDgsMjg1NjQsMjg2NDAsMjg2NDksMjg3NjUsMjkzOTIsMjk3MzMsMjk3ODYsMjk5MjAsMzAzNTUsMzEwNjgsMzE5NDYsMzIyODYsMzI5OTMsMzM0NDYsMzM4OTksMzM5ODMsMzQzODIsMzQzOTksMzQ2NzYsMzU3MDMsMzU5NDYsMzc4MDQsMzg5MTIsMzkwMTMsMjQ3ODUsMjUxMTAsMzcyMzksMjMxMzAsMjYxMjcsMjgxNTEsMjgyMjIsMjk3NTksMzk3NDYsMjQ1NzMsMjQ3OTQsMzE1MDMsMjE3MDAsMjQzNDQsMjc3NDIsMjc4NTksMjc5NDYsMjg4ODgsMzIwMDUsMzQ0MjUsMzUzNDAsNDAyNTEsMjEyNzAsMjE2NDQsMjMzMDEsMjcxOTQsMjg3NzksMzAwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzExMTcsMzExNjYsMzM0NTcsMzM3NzUsMzU0NDEsMzU2NDksMzYwMDgsMzg3NzIsNjQwMTEsMjU4NDQsMjU4OTksMzA5MDYsMzA5MDcsMzEzMzksMjAwMjQsMjE5MTQsMjI4NjQsMjM0NjIsMjQxODcsMjQ3MzksMjU1NjMsMjc0ODksMjYyMTMsMjY3MDcsMjgxODUsMjkwMjksMjk4NzIsMzIwMDgsMzY5OTYsMzk1MjksMzk5NzMsMjc5NjMsMjgzNjksMjk1MDIsMzU5MDUsMzgzNDYsMjA5NzYsMjQxNDAsMjQ0ODgsMjQ2NTMsMjQ4MjIsMjQ4ODAsMjQ5MDgsMjYxNzksMjYxODAsMjcwNDUsMjc4NDEsMjgyNTUsMjgzNjEsMjg1MTQsMjkwMDQsMjk4NTIsMzAzNDMsMzE2ODEsMzE3ODMsMzM2MTgsMzQ2NDcsMzY5NDUsMzg1NDEsNDA2NDMsMjEyOTUsMjIyMzgsMjQzMTUsMjQ0NTgsMjQ2NzQsMjQ3MjQsMjUwNzksMjYyMTQsMjYzNzEsMjcyOTIsMjgxNDIsMjg1OTAsMjg3ODQsMjk1NDYsMzIzNjIsMzMyMTQsMzM1ODgsMzQ1MTYsMzU0OTYsMzYwMzYsMjExMjMsMjk1NTQsMjM0NDYsMjcyNDMsMzc4OTIsMjE3NDIsMjIxNTAsMjMzODksMjU5MjgsMjU5ODksMjYzMTMsMjY3ODMsMjgwNDUsMjgxMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjkyNDMsMzI5NDgsMzcyMzcsMzk1MDEsMjAzOTksMjA1MDUsMjE0MDIsMjE1MTgsMjE1NjQsMjE4OTcsMjE5NTcsMjQxMjcsMjQ0NjAsMjY0MjksMjkwMzAsMjk2NjEsMzY4NjksMjEyMTEsMjEyMzUsMjI2MjgsMjI3MzQsMjg5MzIsMjkwNzEsMjkxNzksMzQyMjQsMzUzNDcsMjYyNDgsMzQyMTYsMjE5MjcsMjYyNDQsMjkwMDIsMzM4NDEsMjEzMjEsMjE5MTMsMjc1ODUsMjQ0MDksMjQ1MDksMjU1ODIsMjYyNDksMjg5OTksMzU1NjksMzY2MzcsNDA2MzgsMjAyNDEsMjU2NTgsMjg4NzUsMzAwNTQsMzQ0MDcsMjQ2NzYsMzU2NjIsNDA0NDAsMjA4MDcsMjA5ODIsMjEyNTYsMjc5NTgsMzMwMTYsNDA2NTcsMjYxMzMsMjc0MjcsMjg4MjQsMzAxNjUsMjE1MDcsMjM2NzMsMzIwMDcsMzUzNTAsMjc0MjQsMjc0NTMsMjc0NjIsMjE1NjAsMjQ2ODgsMjc5NjUsMzI3MjUsMzMyODgsMjA2OTQsMjA5NTgsMjE5MTYsMjIxMjMsMjIyMjEsMjMwMjAsMjMzMDUsMjQwNzYsMjQ5ODUsMjQ5ODQsMjUxMzcsMjYyMDYsMjYzNDIsMjkwODEsMjkxMTMsMjkxMTQsMjkzNTEsMzExNDMsMzEyMzIsMzI2OTAsMzU0NDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiZ2IxODAzMFwiOlsxOTk3MCwxOTk3MiwxOTk3MywxOTk3NCwxOTk4MywxOTk4NiwxOTk5MSwxOTk5OSwyMDAwMCwyMDAwMSwyMDAwMywyMDAwNiwyMDAwOSwyMDAxNCwyMDAxNSwyMDAxNywyMDAxOSwyMDAyMSwyMDAyMywyMDAyOCwyMDAzMiwyMDAzMywyMDAzNCwyMDAzNiwyMDAzOCwyMDA0MiwyMDA0OSwyMDA1MywyMDA1NSwyMDA1OCwyMDA1OSwyMDA2NiwyMDA2NywyMDA2OCwyMDA2OSwyMDA3MSwyMDA3MiwyMDA3NCwyMDA3NSwyMDA3NiwyMDA3NywyMDA3OCwyMDA3OSwyMDA4MiwyMDA4NCwyMDA4NSwyMDA4NiwyMDA4NywyMDA4OCwyMDA4OSwyMDA5MCwyMDA5MSwyMDA5MiwyMDA5MywyMDA5NSwyMDA5NiwyMDA5NywyMDA5OCwyMDA5OSwyMDEwMCwyMDEwMSwyMDEwMywyMDEwNiwyMDExMiwyMDExOCwyMDExOSwyMDEyMSwyMDEyNCwyMDEyNSwyMDEyNiwyMDEzMSwyMDEzOCwyMDE0MywyMDE0NCwyMDE0NSwyMDE0OCwyMDE1MCwyMDE1MSwyMDE1MiwyMDE1MywyMDE1NiwyMDE1NywyMDE1OCwyMDE2OCwyMDE3MiwyMDE3NSwyMDE3NiwyMDE3OCwyMDE4NiwyMDE4NywyMDE4OCwyMDE5MiwyMDE5NCwyMDE5OCwyMDE5OSwyMDIwMSwyMDIwNSwyMDIwNiwyMDIwNywyMDIwOSwyMDIxMiwyMDIxNiwyMDIxNywyMDIxOCwyMDIyMCwyMDIyMiwyMDIyNCwyMDIyNiwyMDIyNywyMDIyOCwyMDIyOSwyMDIzMCwyMDIzMSwyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0MywyMDI0NCwyMDI0NSwyMDI0NiwyMDI1MiwyMDI1MywyMDI1NywyMDI1OSwyMDI2NCwyMDI2NSwyMDI2OCwyMDI2OSwyMDI3MCwyMDI3MywyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4NywyMDI4OCwyMDI4OSwyMDI5MCwyMDI5MiwyMDI5MywyMDI5NSwyMDI5NiwyMDI5NywyMDI5OCwyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMyMSwyMDMyMiwyMDMyNiwyMDMyOCwyMDMzMCwyMDMzMSwyMDMzMywyMDMzNCwyMDMzNywyMDMzOCwyMDM0MSwyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MiwyMDM1MywyMDM1NCwyMDM1NywyMDM1OCwyMDM1OSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MywyMDM3NCwyMDM3NiwyMDM3NywyMDM3OCwyMDM4MCwyMDM4MiwyMDM4MywyMDM4NSwyMDM4NiwyMDM4OCwyMDM5NSwyMDM5NywyMDQwMCwyMDQwMSwyMDQwMiwyMDQwMywyMDQwNCwyMDQwNiwyMDQwNywyMDQwOCwyMDQwOSwyMDQxMCwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQxOCwyMDQyMiwyMDQyMywyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzNCwyMDQzNSwyMDQzNiwyMDQzNywyMDQzOCwyMDQ0MSwyMDQ0MywyMDQ0OCwyMDQ1MCwyMDQ1MiwyMDQ1MywyMDQ1NSwyMDQ1OSwyMDQ2MCwyMDQ2NCwyMDQ2NiwyMDQ2OCwyMDQ2OSwyMDQ3MCwyMDQ3MSwyMDQ3MywyMDQ3NSwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4MiwyMDQ4MywyMDQ4NCwyMDQ4NSwyMDQ4NiwyMDQ4NywyMDQ4OCwyMDQ4OSwyMDQ5MCwyMDQ5MSwyMDQ5NCwyMDQ5NiwyMDQ5NywyMDQ5OSwyMDUwMSwyMDUwMiwyMDUwMywyMDUwNywyMDUwOSwyMDUxMCwyMDUxMiwyMDUxNCwyMDUxNSwyMDUxNiwyMDUxOSwyMDUyMywyMDUyNywyMDUyOCwyMDUyOSwyMDUzMCwyMDUzMSwyMDUzMiwyMDUzMywyMDUzNCwyMDUzNSwyMDUzNiwyMDUzNywyMDUzOSwyMDU0MSwyMDU0MywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OCwyMDU0OSwyMDU1MCwyMDU1MywyMDU1NCwyMDU1NSwyMDU1NywyMDU2MCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NCwyMDU2NiwyMDU2NywyMDU2OCwyMDU2OSwyMDU3MSwyMDU3MywyMDU3NCwyMDU3NSwyMDU3NiwyMDU3NywyMDU3OCwyMDU3OSwyMDU4MCwyMDU4MiwyMDU4MywyMDU4NCwyMDU4NSwyMDU4NiwyMDU4NywyMDU4OSwyMDU5MCwyMDU5MSwyMDU5MiwyMDU5MywyMDU5NCwyMDU5NSwyMDU5NiwyMDU5NywyMDYwMCwyMDYwMSwyMDYwMiwyMDYwNCwyMDYwNSwyMDYwOSwyMDYxMCwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxNSwyMDYxNywyMDYxOCwyMDYxOSwyMDYyMCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNSwyMDYyNiwyMDYyNywyMDYyOCwyMDYyOSwyMDYzMCwyMDYzMSwyMDYzMiwyMDYzMywyMDYzNCwyMDYzNSwyMDYzNiwyMDYzNywyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY0NCwyMDY0NiwyMDY1MCwyMDY1MSwyMDY1MywyMDY1NCwyMDY1NSwyMDY1NiwyMDY1NywyMDY1OSwyMDY2MCwyMDY2MSwyMDY2MiwyMDY2MywyMDY2NCwyMDY2NSwyMDY2OCwyMDY2OSwyMDY3MCwyMDY3MSwyMDY3MiwyMDY3MywyMDY3NCwyMDY3NSwyMDY3NiwyMDY3NywyMDY3OCwyMDY3OSwyMDY4MCwyMDY4MSwyMDY4MiwyMDY4MywyMDY4NCwyMDY4NSwyMDY4NiwyMDY4OCwyMDY4OSwyMDY5MCwyMDY5MSwyMDY5MiwyMDY5MywyMDY5NSwyMDY5NiwyMDY5NywyMDY5OSwyMDcwMCwyMDcwMSwyMDcwMiwyMDcwMywyMDcwNCwyMDcwNSwyMDcwNiwyMDcwNywyMDcwOCwyMDcwOSwyMDcxMiwyMDcxMywyMDcxNCwyMDcxNSwyMDcxOSwyMDcyMCwyMDcyMSwyMDcyMiwyMDcyNCwyMDcyNiwyMDcyNywyMDcyOCwyMDcyOSwyMDczMCwyMDczMiwyMDczMywyMDczNCwyMDczNSwyMDczNiwyMDczNywyMDczOCwyMDczOSwyMDc0MCwyMDc0MSwyMDc0NCwyMDc0NSwyMDc0NiwyMDc0OCwyMDc0OSwyMDc1MCwyMDc1MSwyMDc1MiwyMDc1MywyMDc1NSwyMDc1NiwyMDc1NywyMDc1OCwyMDc1OSwyMDc2MCwyMDc2MSwyMDc2MiwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc2NywyMDc2OCwyMDc3MCwyMDc3MSwyMDc3MiwyMDc3MywyMDc3NCwyMDc3NSwyMDc3NiwyMDc3NywyMDc3OCwyMDc3OSwyMDc4MCwyMDc4MSwyMDc4MiwyMDc4MywyMDc4NCwyMDc4NSwyMDc4NiwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MCwyMDc5MSwyMDc5MiwyMDc5MywyMDc5NCwyMDc5NSwyMDc5NiwyMDc5NywyMDc5OCwyMDgwMiwyMDgwNywyMDgxMCwyMDgxMiwyMDgxNCwyMDgxNSwyMDgxNiwyMDgxOCwyMDgxOSwyMDgyMywyMDgyNCwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyMDgzMSwyMDgzMiwyMDgzMywyMDgzNSwyMDgzNiwyMDgzOCwyMDgzOSwyMDg0MSwyMDg0MiwyMDg0NywyMDg1MCwyMDg1OCwyMDg2MiwyMDg2MywyMDg2NywyMDg2OCwyMDg3MCwyMDg3MSwyMDg3NCwyMDg3NSwyMDg3OCwyMDg3OSwyMDg4MCwyMDg4MSwyMDg4MywyMDg4NCwyMDg4OCwyMDg5MCwyMDg5MywyMDg5NCwyMDg5NSwyMDg5NywyMDg5OSwyMDkwMiwyMDkwMywyMDkwNCwyMDkwNSwyMDkwNiwyMDkwOSwyMDkxMCwyMDkxNiwyMDkyMCwyMDkyMSwyMDkyMiwyMDkyNiwyMDkyNywyMDkyOSwyMDkzMCwyMDkzMSwyMDkzMywyMDkzNiwyMDkzOCwyMDk0MSwyMDk0MiwyMDk0NCwyMDk0NiwyMDk0NywyMDk0OCwyMDk0OSwyMDk1MCwyMDk1MSwyMDk1MiwyMDk1MywyMDk1NCwyMDk1NiwyMDk1OCwyMDk1OSwyMDk2MiwyMDk2MywyMDk2NSwyMDk2NiwyMDk2NywyMDk2OCwyMDk2OSwyMDk3MCwyMDk3MiwyMDk3NCwyMDk3NywyMDk3OCwyMDk4MCwyMDk4MywyMDk5MCwyMDk5NiwyMDk5NywyMTAwMSwyMTAwMywyMTAwNCwyMTAwNywyMTAwOCwyMTAxMSwyMTAxMiwyMTAxMywyMTAyMCwyMTAyMiwyMTAyMywyMTAyNSwyMTAyNiwyMTAyNywyMTAyOSwyMTAzMCwyMTAzMSwyMTAzNCwyMTAzNiwyMTAzOSwyMTA0MSwyMTA0MiwyMTA0NCwyMTA0NSwyMTA1MiwyMTA1NCwyMTA2MCwyMTA2MSwyMTA2MiwyMTA2MywyMTA2NCwyMTA2NSwyMTA2NywyMTA3MCwyMTA3MSwyMTA3NCwyMTA3NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MSwyMTA4MiwyMTA4MywyMTA4NSwyMTA4NywyMTA4OCwyMTA5MCwyMTA5MSwyMTA5MiwyMTA5NCwyMTA5NiwyMTA5OSwyMTEwMCwyMTEwMSwyMTEwMiwyMTEwNCwyMTEwNSwyMTEwNywyMTEwOCwyMTEwOSwyMTExMCwyMTExMSwyMTExMiwyMTExMywyMTExNCwyMTExNSwyMTExNiwyMTExOCwyMTEyMCwyMTEyMywyMTEyNCwyMTEyNSwyMTEyNiwyMTEyNywyMTEyOSwyMTEzMCwyMTEzMSwyMTEzMiwyMTEzMywyMTEzNCwyMTEzNSwyMTEzNywyMTEzOCwyMTE0MCwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NSwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NiwyMTE2NywyMTE2OCwyMTE3MiwyMTE3MywyMTE3NCwyMTE3NSwyMTE3NiwyMTE3NywyMTE3OCwyMTE3OSwyMTE4MCwyMTE4MSwyMTE4NCwyMTE4NSwyMTE4NiwyMTE4OCwyMTE4OSwyMTE5MCwyMTE5MiwyMTE5NCwyMTE5NiwyMTE5NywyMTE5OCwyMTE5OSwyMTIwMSwyMTIwMywyMTIwNCwyMTIwNSwyMTIwNywyMTIwOSwyMTIxMCwyMTIxMSwyMTIxMiwyMTIxMywyMTIxNCwyMTIxNiwyMTIxNywyMTIxOCwyMTIxOSwyMTIyMSwyMTIyMiwyMTIyMywyMTIyNCwyMTIyNSwyMTIyNiwyMTIyNywyMTIyOCwyMTIyOSwyMTIzMCwyMTIzMSwyMTIzMywyMTIzNCwyMTIzNSwyMTIzNiwyMTIzNywyMTIzOCwyMTIzOSwyMTI0MCwyMTI0MywyMTI0NCwyMTI0NSwyMTI0OSwyMTI1MCwyMTI1MSwyMTI1MiwyMTI1NSwyMTI1NywyMTI1OCwyMTI1OSwyMTI2MCwyMTI2MiwyMTI2NSwyMTI2NiwyMTI2NywyMTI2OCwyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4MiwyMTI4NCwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NSwyMTI5NiwyMTI5NywyMTI5OCwyMTI5OSwyMTMwMCwyMTMwMSwyMTMwMiwyMTMwMywyMTMwNCwyMTMwOCwyMTMwOSwyMTMxMiwyMTMxNCwyMTMxNiwyMTMxOCwyMTMyMywyMTMyNCwyMTMyNSwyMTMyOCwyMTMzMiwyMTMzNiwyMTMzNywyMTMzOSwyMTM0MSwyMTM0OSwyMTM1MiwyMTM1NCwyMTM1NiwyMTM1NywyMTM2MiwyMTM2NiwyMTM2OSwyMTM3MSwyMTM3MiwyMTM3MywyMTM3NCwyMTM3NiwyMTM3NywyMTM3OSwyMTM4MywyMTM4NCwyMTM4NiwyMTM5MCwyMTM5MSwyMTM5MiwyMTM5MywyMTM5NCwyMTM5NSwyMTM5NiwyMTM5OCwyMTM5OSwyMTQwMSwyMTQwMywyMTQwNCwyMTQwNiwyMTQwOCwyMTQwOSwyMTQxMiwyMTQxNSwyMTQxOCwyMTQxOSwyMTQyMCwyMTQyMSwyMTQyMywyMTQyNCwyMTQyNSwyMTQyNiwyMTQyNywyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzMywyMTQzNCwyMTQzNiwyMTQzNywyMTQzOCwyMTQ0MCwyMTQ0MywyMTQ0NCwyMTQ0NSwyMTQ0NiwyMTQ0NywyMTQ1NCwyMTQ1NSwyMTQ1NiwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OCwyMTQ2OSwyMTQ3MCwyMTQ3MywyMTQ3NCwyMTQ3OSwyMTQ5MiwyMTQ5OCwyMTUwMiwyMTUwMywyMTUwNCwyMTUwNiwyMTUwOSwyMTUxMSwyMTUxNSwyMTUyNCwyMTUyOCwyMTUyOSwyMTUzMCwyMTUzMiwyMTUzOCwyMTU0MCwyMTU0MSwyMTU0NiwyMTU1MiwyMTU1NSwyMTU1OCwyMTU1OSwyMTU2MiwyMTU2NSwyMTU2NywyMTU2OSwyMTU3MCwyMTU3MiwyMTU3MywyMTU3NSwyMTU3NywyMTU4MCwyMTU4MSwyMTU4MiwyMTU4MywyMTU4NSwyMTU5NCwyMTU5NywyMTU5OCwyMTU5OSwyMTYwMCwyMTYwMSwyMTYwMywyMTYwNSwyMTYwNywyMTYwOSwyMTYxMCwyMTYxMSwyMTYxMiwyMTYxMywyMTYxNCwyMTYxNSwyMTYxNiwyMTYyMCwyMTYyNSwyMTYyNiwyMTYzMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTYzOSwyMTY0MCwyMTY0MSwyMTY0MiwyMTY0NSwyMTY0OSwyMTY1MSwyMTY1NSwyMTY1NiwyMTY2MCwyMTY2MiwyMTY2MywyMTY2NCwyMTY2NSwyMTY2NiwyMTY2OSwyMTY3OCwyMTY4MCwyMTY4MiwyMTY4NSwyMTY4NiwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MiwyMTY5NCwyMTY5OSwyMTcwMSwyMTcwNiwyMTcwNywyMTcxOCwyMTcyMCwyMTcyMywyMTcyOCwyMTcyOSwyMTczMCwyMTczMSwyMTczMiwyMTczOSwyMTc0MCwyMTc0MywyMTc0NCwyMTc0NSwyMTc0OCwyMTc0OSwyMTc1MCwyMTc1MSwyMTc1MiwyMTc1MywyMTc1NSwyMTc1OCwyMTc2MCwyMTc2MiwyMTc2MywyMTc2NCwyMTc2NSwyMTc2OCwyMTc3MCwyMTc3MSwyMTc3MiwyMTc3MywyMTc3NCwyMTc3OCwyMTc3OSwyMTc4MSwyMTc4MiwyMTc4MywyMTc4NCwyMTc4NSwyMTc4NiwyMTc4OCwyMTc4OSwyMTc5MCwyMTc5MSwyMTc5MywyMTc5NywyMTc5OCwyMTgwMCwyMTgwMSwyMTgwMywyMTgwNSwyMTgxMCwyMTgxMiwyMTgxMywyMTgxNCwyMTgxNiwyMTgxNywyMTgxOCwyMTgxOSwyMTgyMSwyMTgyNCwyMTgyNiwyMTgyOSwyMTgzMSwyMTgzMiwyMTgzNSwyMTgzNiwyMTgzNywyMTgzOCwyMTgzOSwyMTg0MSwyMTg0MiwyMTg0MywyMTg0NCwyMTg0NywyMTg0OCwyMTg0OSwyMTg1MCwyMTg1MSwyMTg1MywyMTg1NCwyMTg1NSwyMTg1NiwyMTg1OCwyMTg1OSwyMTg2NCwyMTg2NSwyMTg2NywyMTg3MSwyMTg3MiwyMTg3MywyMTg3NCwyMTg3NSwyMTg3NiwyMTg4MSwyMTg4MiwyMTg4NSwyMTg4NywyMTg5MywyMTg5NCwyMTkwMCwyMTkwMSwyMTkwMiwyMTkwNCwyMTkwNiwyMTkwNywyMTkwOSwyMTkxMCwyMTkxMSwyMTkxNCwyMTkxNSwyMTkxOCwyMTkyMCwyMTkyMSwyMTkyMiwyMTkyMywyMTkyNCwyMTkyNSwyMTkyNiwyMTkyOCwyMTkyOSwyMTkzMCwyMTkzMSwyMTkzMiwyMTkzMywyMTkzNCwyMTkzNSwyMTkzNiwyMTkzOCwyMTk0MCwyMTk0MiwyMTk0NCwyMTk0NiwyMTk0OCwyMTk1MSwyMTk1MiwyMTk1MywyMTk1NCwyMTk1NSwyMTk1OCwyMTk1OSwyMTk2MCwyMTk2MiwyMTk2MywyMTk2NiwyMTk2NywyMTk2OCwyMTk3MywyMTk3NSwyMTk3NiwyMTk3NywyMTk3OCwyMTk3OSwyMTk4MiwyMTk4NCwyMTk4NiwyMTk5MSwyMTk5MywyMTk5NywyMTk5OCwyMjAwMCwyMjAwMSwyMjAwNCwyMjAwNiwyMjAwOCwyMjAwOSwyMjAxMCwyMjAxMSwyMjAxMiwyMjAxNSwyMjAxOCwyMjAxOSwyMjAyMCwyMjAyMSwyMjAyMiwyMjAyMywyMjAyNiwyMjAyNywyMjAyOSwyMjAzMiwyMjAzMywyMjAzNCwyMjAzNSwyMjAzNiwyMjAzNywyMjAzOCwyMjAzOSwyMjA0MSwyMjA0MiwyMjA0NCwyMjA0NSwyMjA0OCwyMjA0OSwyMjA1MCwyMjA1MywyMjA1NCwyMjA1NiwyMjA1NywyMjA1OCwyMjA1OSwyMjA2MiwyMjA2MywyMjA2NCwyMjA2NywyMjA2OSwyMjA3MSwyMjA3MiwyMjA3NCwyMjA3NiwyMjA3NywyMjA3OCwyMjA4MCwyMjA4MSwyMjA4MiwyMjA4MywyMjA4NCwyMjA4NSwyMjA4NiwyMjA4NywyMjA4OCwyMjA4OSwyMjA5MCwyMjA5MSwyMjA5NSwyMjA5NiwyMjA5NywyMjA5OCwyMjA5OSwyMjEwMSwyMjEwMiwyMjEwNiwyMjEwNywyMjEwOSwyMjExMCwyMjExMSwyMjExMiwyMjExMywyMjExNSwyMjExNywyMjExOCwyMjExOSwyMjEyNSwyMjEyNiwyMjEyNywyMjEyOCwyMjEzMCwyMjEzMSwyMjEzMiwyMjEzMywyMjEzNSwyMjEzNiwyMjEzNywyMjEzOCwyMjE0MSwyMjE0MiwyMjE0MywyMjE0NCwyMjE0NSwyMjE0NiwyMjE0NywyMjE0OCwyMjE1MSwyMjE1MiwyMjE1MywyMjE1NCwyMjE1NSwyMjE1NiwyMjE1NywyMjE2MCwyMjE2MSwyMjE2MiwyMjE2NCwyMjE2NSwyMjE2NiwyMjE2NywyMjE2OCwyMjE2OSwyMjE3MCwyMjE3MSwyMjE3MiwyMjE3MywyMjE3NCwyMjE3NSwyMjE3NiwyMjE3NywyMjE3OCwyMjE4MCwyMjE4MSwyMjE4MiwyMjE4MywyMjE4NCwyMjE4NSwyMjE4NiwyMjE4NywyMjE4OCwyMjE4OSwyMjE5MCwyMjE5MiwyMjE5MywyMjE5NCwyMjE5NSwyMjE5NiwyMjE5NywyMjE5OCwyMjIwMCwyMjIwMSwyMjIwMiwyMjIwMywyMjIwNSwyMjIwNiwyMjIwNywyMjIwOCwyMjIwOSwyMjIxMCwyMjIxMSwyMjIxMiwyMjIxMywyMjIxNCwyMjIxNSwyMjIxNiwyMjIxNywyMjIxOSwyMjIyMCwyMjIyMSwyMjIyMiwyMjIyMywyMjIyNCwyMjIyNSwyMjIyNiwyMjIyNywyMjIyOSwyMjIzMCwyMjIzMiwyMjIzMywyMjIzNiwyMjI0MywyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI0OSwyMjI1MCwyMjI1MiwyMjI1NCwyMjI1NSwyMjI1OCwyMjI1OSwyMjI2MiwyMjI2MywyMjI2NCwyMjI2NywyMjI2OCwyMjI3MiwyMjI3MywyMjI3NCwyMjI3NywyMjI3OSwyMjI4MywyMjI4NCwyMjI4NSwyMjI4NiwyMjI4NywyMjI4OCwyMjI4OSwyMjI5MCwyMjI5MSwyMjI5MiwyMjI5MywyMjI5NCwyMjI5NSwyMjI5NiwyMjI5NywyMjI5OCwyMjI5OSwyMjMwMSwyMjMwMiwyMjMwNCwyMjMwNSwyMjMwNiwyMjMwOCwyMjMwOSwyMjMxMCwyMjMxMSwyMjMxNSwyMjMyMSwyMjMyMiwyMjMyNCwyMjMyNSwyMjMyNiwyMjMyNywyMjMyOCwyMjMzMiwyMjMzMywyMjMzNSwyMjMzNywyMjMzOSwyMjM0MCwyMjM0MSwyMjM0MiwyMjM0NCwyMjM0NSwyMjM0NywyMjM1NCwyMjM1NSwyMjM1NiwyMjM1NywyMjM1OCwyMjM2MCwyMjM2MSwyMjM3MCwyMjM3MSwyMjM3MywyMjM3NSwyMjM4MCwyMjM4MiwyMjM4NCwyMjM4NSwyMjM4NiwyMjM4OCwyMjM4OSwyMjM5MiwyMjM5MywyMjM5NCwyMjM5NywyMjM5OCwyMjM5OSwyMjQwMCwyMjQwMSwyMjQwNywyMjQwOCwyMjQwOSwyMjQxMCwyMjQxMywyMjQxNCwyMjQxNSwyMjQxNiwyMjQxNywyMjQyMCwyMjQyMSwyMjQyMiwyMjQyMywyMjQyNCwyMjQyNSwyMjQyNiwyMjQyOCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzNywyMjQ0MCwyMjQ0MiwyMjQ0NCwyMjQ0NywyMjQ0OCwyMjQ0OSwyMjQ1MSwyMjQ1MywyMjQ1NCwyMjQ1NSwyMjQ1NywyMjQ1OCwyMjQ1OSwyMjQ2MCwyMjQ2MSwyMjQ2MiwyMjQ2MywyMjQ2NCwyMjQ2NSwyMjQ2OCwyMjQ2OSwyMjQ3MCwyMjQ3MSwyMjQ3MiwyMjQ3MywyMjQ3NCwyMjQ3NiwyMjQ3NywyMjQ4MCwyMjQ4MSwyMjQ4MywyMjQ4NiwyMjQ4NywyMjQ5MSwyMjQ5MiwyMjQ5NCwyMjQ5NywyMjQ5OCwyMjQ5OSwyMjUwMSwyMjUwMiwyMjUwMywyMjUwNCwyMjUwNSwyMjUwNiwyMjUwNywyMjUwOCwyMjUxMCwyMjUxMiwyMjUxMywyMjUxNCwyMjUxNSwyMjUxNywyMjUxOCwyMjUxOSwyMjUyMywyMjUyNCwyMjUyNiwyMjUyNywyMjUyOSwyMjUzMSwyMjUzMiwyMjUzMywyMjUzNiwyMjUzNywyMjUzOCwyMjU0MCwyMjU0MiwyMjU0MywyMjU0NCwyMjU0NiwyMjU0NywyMjU0OCwyMjU1MCwyMjU1MSwyMjU1MiwyMjU1NCwyMjU1NSwyMjU1NiwyMjU1NywyMjU1OSwyMjU2MiwyMjU2MywyMjU2NSwyMjU2NiwyMjU2NywyMjU2OCwyMjU2OSwyMjU3MSwyMjU3MiwyMjU3MywyMjU3NCwyMjU3NSwyMjU3NywyMjU3OCwyMjU3OSwyMjU4MCwyMjU4MiwyMjU4MywyMjU4NCwyMjU4NSwyMjU4NiwyMjU4NywyMjU4OCwyMjU4OSwyMjU5MCwyMjU5MSwyMjU5MiwyMjU5MywyMjU5NCwyMjU5NSwyMjU5NywyMjU5OCwyMjU5OSwyMjYwMCwyMjYwMSwyMjYwMiwyMjYwMywyMjYwNiwyMjYwNywyMjYwOCwyMjYxMCwyMjYxMSwyMjYxMywyMjYxNCwyMjYxNSwyMjYxNywyMjYxOCwyMjYxOSwyMjYyMCwyMjYyMSwyMjYyMywyMjYyNCwyMjYyNSwyMjYyNiwyMjYyNywyMjYyOCwyMjYzMCwyMjYzMSwyMjYzMiwyMjYzMywyMjYzNCwyMjYzNywyMjYzOCwyMjYzOSwyMjY0MCwyMjY0MSwyMjY0MiwyMjY0MywyMjY0NCwyMjY0NSwyMjY0NiwyMjY0NywyMjY0OCwyMjY0OSwyMjY1MCwyMjY1MSwyMjY1MiwyMjY1MywyMjY1NSwyMjY1OCwyMjY2MCwyMjY2MiwyMjY2MywyMjY2NCwyMjY2NiwyMjY2NywyMjY2OCwyMjY2OSwyMjY3MCwyMjY3MSwyMjY3MiwyMjY3MywyMjY3NiwyMjY3NywyMjY3OCwyMjY3OSwyMjY4MCwyMjY4MywyMjY4NCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwyMjY5MSwyMjY5MiwyMjY5MywyMjY5NCwyMjY5NSwyMjY5OCwyMjY5OSwyMjcwMCwyMjcwMSwyMjcwMiwyMjcwMywyMjcwNCwyMjcwNSwyMjcwNiwyMjcwNywyMjcwOCwyMjcwOSwyMjcxMCwyMjcxMSwyMjcxMiwyMjcxMywyMjcxNCwyMjcxNSwyMjcxNywyMjcxOCwyMjcxOSwyMjcyMCwyMjcyMiwyMjcyMywyMjcyNCwyMjcyNiwyMjcyNywyMjcyOCwyMjcyOSwyMjczMCwyMjczMSwyMjczMiwyMjczMywyMjczNCwyMjczNSwyMjczNiwyMjczOCwyMjczOSwyMjc0MCwyMjc0MiwyMjc0MywyMjc0NCwyMjc0NSwyMjc0NiwyMjc0NywyMjc0OCwyMjc0OSwyMjc1MCwyMjc1MSwyMjc1MiwyMjc1MywyMjc1NCwyMjc1NSwyMjc1NywyMjc1OCwyMjc1OSwyMjc2MCwyMjc2MSwyMjc2MiwyMjc2NSwyMjc2NywyMjc2OSwyMjc3MCwyMjc3MiwyMjc3MywyMjc3NSwyMjc3NiwyMjc3OCwyMjc3OSwyMjc4MCwyMjc4MSwyMjc4MiwyMjc4MywyMjc4NCwyMjc4NSwyMjc4NywyMjc4OSwyMjc5MCwyMjc5MiwyMjc5MywyMjc5NCwyMjc5NSwyMjc5NiwyMjc5OCwyMjgwMCwyMjgwMSwyMjgwMiwyMjgwMywyMjgwNywyMjgwOCwyMjgxMSwyMjgxMywyMjgxNCwyMjgxNiwyMjgxNywyMjgxOCwyMjgxOSwyMjgyMiwyMjgyNCwyMjgyOCwyMjgzMiwyMjgzNCwyMjgzNSwyMjgzNywyMjgzOCwyMjg0MywyMjg0NSwyMjg0NiwyMjg0NywyMjg0OCwyMjg1MSwyMjg1MywyMjg1NCwyMjg1OCwyMjg2MCwyMjg2MSwyMjg2NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NiwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg4NCwyMjg4NiwyMjg4NywyMjg4OCwyMjg4OSwyMjg5MCwyMjg5MSwyMjg5MiwyMjg5MywyMjg5NCwyMjg5NSwyMjg5NiwyMjg5NywyMjg5OCwyMjkwMSwyMjkwMywyMjkwNiwyMjkwNywyMjkwOCwyMjkxMCwyMjkxMSwyMjkxMiwyMjkxNywyMjkyMSwyMjkyMywyMjkyNCwyMjkyNiwyMjkyNywyMjkyOCwyMjkyOSwyMjkzMiwyMjkzMywyMjkzNiwyMjkzOCwyMjkzOSwyMjk0MCwyMjk0MSwyMjk0MywyMjk0NCwyMjk0NSwyMjk0NiwyMjk1MCwyMjk1MSwyMjk1NiwyMjk1NywyMjk2MCwyMjk2MSwyMjk2MywyMjk2NCwyMjk2NSwyMjk2NiwyMjk2NywyMjk2OCwyMjk3MCwyMjk3MiwyMjk3MywyMjk3NSwyMjk3NiwyMjk3NywyMjk3OCwyMjk3OSwyMjk4MCwyMjk4MSwyMjk4MywyMjk4NCwyMjk4NSwyMjk4OCwyMjk4OSwyMjk5MCwyMjk5MSwyMjk5NywyMjk5OCwyMzAwMSwyMzAwMywyMzAwNiwyMzAwNywyMzAwOCwyMzAwOSwyMzAxMCwyMzAxMiwyMzAxNCwyMzAxNSwyMzAxNywyMzAxOCwyMzAxOSwyMzAyMSwyMzAyMiwyMzAyMywyMzAyNCwyMzAyNSwyMzAyNiwyMzAyNywyMzAyOCwyMzAyOSwyMzAzMCwyMzAzMSwyMzAzMiwyMzAzNCwyMzAzNiwyMzAzNywyMzAzOCwyMzA0MCwyMzA0MiwyMzA1MCwyMzA1MSwyMzA1MywyMzA1NCwyMzA1NSwyMzA1NiwyMzA1OCwyMzA2MCwyMzA2MSwyMzA2MiwyMzA2MywyMzA2NSwyMzA2NiwyMzA2NywyMzA2OSwyMzA3MCwyMzA3MywyMzA3NCwyMzA3NiwyMzA3OCwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4MywyMzA4NCwyMzA4NSwyMzA4NiwyMzA4NywyMzA4OCwyMzA5MSwyMzA5MywyMzA5NSwyMzA5NiwyMzA5NywyMzA5OCwyMzA5OSwyMzEwMSwyMzEwMiwyMzEwMywyMzEwNSwyMzEwNiwyMzEwNywyMzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNSwyMzExNiwyMzExNywyMzExOCwyMzExOSwyMzEyMCwyMzEyMSwyMzEyMiwyMzEyMywyMzEyNCwyMzEyNiwyMzEyNywyMzEyOCwyMzEyOSwyMzEzMSwyMzEzMiwyMzEzMywyMzEzNCwyMzEzNSwyMzEzNiwyMzEzNywyMzEzOSwyMzE0MCwyMzE0MSwyMzE0MiwyMzE0NCwyMzE0NSwyMzE0NywyMzE0OCwyMzE0OSwyMzE1MCwyMzE1MSwyMzE1MiwyMzE1MywyMzE1NCwyMzE1NSwyMzE2MCwyMzE2MSwyMzE2MywyMzE2NCwyMzE2NSwyMzE2NiwyMzE2OCwyMzE2OSwyMzE3MCwyMzE3MSwyMzE3MiwyMzE3MywyMzE3NCwyMzE3NSwyMzE3NiwyMzE3NywyMzE3OCwyMzE3OSwyMzE4MCwyMzE4MSwyMzE4MiwyMzE4MywyMzE4NCwyMzE4NSwyMzE4NywyMzE4OCwyMzE4OSwyMzE5MCwyMzE5MSwyMzE5MiwyMzE5MywyMzE5NiwyMzE5NywyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMSwyMzIwMiwyMzIwMywyMzIwNCwyMzIwNSwyMzIwNiwyMzIwNywyMzIwOCwyMzIwOSwyMzIxMSwyMzIxMiwyMzIxMywyMzIxNCwyMzIxNSwyMzIxNiwyMzIxNywyMzIyMCwyMzIyMiwyMzIyMywyMzIyNSwyMzIyNiwyMzIyNywyMzIyOCwyMzIyOSwyMzIzMSwyMzIzMiwyMzIzNSwyMzIzNiwyMzIzNywyMzIzOCwyMzIzOSwyMzI0MCwyMzI0MiwyMzI0MywyMzI0NSwyMzI0NiwyMzI0NywyMzI0OCwyMzI0OSwyMzI1MSwyMzI1MywyMzI1NSwyMzI1NywyMzI1OCwyMzI1OSwyMzI2MSwyMzI2MiwyMzI2MywyMzI2NiwyMzI2OCwyMzI2OSwyMzI3MSwyMzI3MiwyMzI3NCwyMzI3NiwyMzI3NywyMzI3OCwyMzI3OSwyMzI4MCwyMzI4MiwyMzI4MywyMzI4NCwyMzI4NSwyMzI4NiwyMzI4NywyMzI4OCwyMzI4OSwyMzI5MCwyMzI5MSwyMzI5MiwyMzI5MywyMzI5NCwyMzI5NSwyMzI5NiwyMzI5NywyMzI5OCwyMzI5OSwyMzMwMCwyMzMwMSwyMzMwMiwyMzMwMywyMzMwNCwyMzMwNiwyMzMwNywyMzMwOCwyMzMwOSwyMzMxMCwyMzMxMSwyMzMxMiwyMzMxMywyMzMxNCwyMzMxNSwyMzMxNiwyMzMxNywyMzMyMCwyMzMyMSwyMzMyMiwyMzMyMywyMzMyNCwyMzMyNSwyMzMyNiwyMzMyNywyMzMyOCwyMzMyOSwyMzMzMCwyMzMzMSwyMzMzMiwyMzMzMywyMzMzNCwyMzMzNSwyMzMzNiwyMzMzNywyMzMzOCwyMzMzOSwyMzM0MCwyMzM0MSwyMzM0MiwyMzM0MywyMzM0NCwyMzM0NSwyMzM0NywyMzM0OSwyMzM1MCwyMzM1MiwyMzM1MywyMzM1NCwyMzM1NSwyMzM1NiwyMzM1NywyMzM1OCwyMzM1OSwyMzM2MSwyMzM2MiwyMzM2MywyMzM2NCwyMzM2NSwyMzM2NiwyMzM2NywyMzM2OCwyMzM2OSwyMzM3MCwyMzM3MSwyMzM3MiwyMzM3MywyMzM3NCwyMzM3NSwyMzM3OCwyMzM4MiwyMzM5MCwyMzM5MiwyMzM5MywyMzM5OSwyMzQwMCwyMzQwMywyMzQwNSwyMzQwNiwyMzQwNywyMzQxMCwyMzQxMiwyMzQxNCwyMzQxNSwyMzQxNiwyMzQxNywyMzQxOSwyMzQyMCwyMzQyMiwyMzQyMywyMzQyNiwyMzQzMCwyMzQzNCwyMzQzNywyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MiwyMzQ0NCwyMzQ0NiwyMzQ1NSwyMzQ2MywyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2OSwyMzQ3MCwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4MywyMzQ4NCwyMzQ4OCwyMzQ4OSwyMzQ5MSwyMzQ5NiwyMzQ5NywyMzQ5OCwyMzQ5OSwyMzUwMSwyMzUwMiwyMzUwMywyMzUwNSwyMzUwOCwyMzUwOSwyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUxNSwyMzUxNiwyMzUyMCwyMzUyMiwyMzUyMywyMzUyNiwyMzUyNywyMzUyOSwyMzUzMCwyMzUzMSwyMzUzMiwyMzUzMywyMzUzNSwyMzUzNywyMzUzOCwyMzUzOSwyMzU0MCwyMzU0MSwyMzU0MiwyMzU0MywyMzU0OSwyMzU1MCwyMzU1MiwyMzU1NCwyMzU1NSwyMzU1NywyMzU1OSwyMzU2MCwyMzU2MywyMzU2NCwyMzU2NSwyMzU2NiwyMzU2OCwyMzU3MCwyMzU3MSwyMzU3NSwyMzU3NywyMzU3OSwyMzU4MiwyMzU4MywyMzU4NCwyMzU4NSwyMzU4NywyMzU5MCwyMzU5MiwyMzU5MywyMzU5NCwyMzU5NSwyMzU5NywyMzU5OCwyMzU5OSwyMzYwMCwyMzYwMiwyMzYwMywyMzYwNSwyMzYwNiwyMzYwNywyMzYxOSwyMzYyMCwyMzYyMiwyMzYyMywyMzYyOCwyMzYyOSwyMzYzNCwyMzYzNSwyMzYzNiwyMzYzOCwyMzYzOSwyMzY0MCwyMzY0MiwyMzY0MywyMzY0NCwyMzY0NSwyMzY0NywyMzY1MCwyMzY1MiwyMzY1NSwyMzY1NiwyMzY1NywyMzY1OCwyMzY1OSwyMzY2MCwyMzY2MSwyMzY2NCwyMzY2NiwyMzY2NywyMzY2OCwyMzY2OSwyMzY3MCwyMzY3MSwyMzY3MiwyMzY3NSwyMzY3NiwyMzY3NywyMzY3OCwyMzY4MCwyMzY4MywyMzY4NCwyMzY4NSwyMzY4NiwyMzY4NywyMzY4OSwyMzY5MCwyMzY5MSwyMzY5NCwyMzY5NSwyMzY5OCwyMzY5OSwyMzcwMSwyMzcwOSwyMzcxMCwyMzcxMSwyMzcxMiwyMzcxMywyMzcxNiwyMzcxNywyMzcxOCwyMzcxOSwyMzcyMCwyMzcyMiwyMzcyNiwyMzcyNywyMzcyOCwyMzczMCwyMzczMiwyMzczNCwyMzczNywyMzczOCwyMzczOSwyMzc0MCwyMzc0MiwyMzc0NCwyMzc0NiwyMzc0NywyMzc0OSwyMzc1MCwyMzc1MSwyMzc1MiwyMzc1MywyMzc1NCwyMzc1NiwyMzc1NywyMzc1OCwyMzc1OSwyMzc2MCwyMzc2MSwyMzc2MywyMzc2NCwyMzc2NSwyMzc2NiwyMzc2NywyMzc2OCwyMzc3MCwyMzc3MSwyMzc3MiwyMzc3MywyMzc3NCwyMzc3NSwyMzc3NiwyMzc3OCwyMzc3OSwyMzc4MywyMzc4NSwyMzc4NywyMzc4OCwyMzc5MCwyMzc5MSwyMzc5MywyMzc5NCwyMzc5NSwyMzc5NiwyMzc5NywyMzc5OCwyMzc5OSwyMzgwMCwyMzgwMSwyMzgwMiwyMzgwNCwyMzgwNSwyMzgwNiwyMzgwNywyMzgwOCwyMzgwOSwyMzgxMiwyMzgxMywyMzgxNiwyMzgxNywyMzgxOCwyMzgxOSwyMzgyMCwyMzgyMSwyMzgyMywyMzgyNCwyMzgyNSwyMzgyNiwyMzgyNywyMzgyOSwyMzgzMSwyMzgzMiwyMzgzMywyMzgzNCwyMzgzNiwyMzgzNywyMzgzOSwyMzg0MCwyMzg0MSwyMzg0MiwyMzg0MywyMzg0NSwyMzg0OCwyMzg1MCwyMzg1MSwyMzg1MiwyMzg1NSwyMzg1NiwyMzg1NywyMzg1OCwyMzg1OSwyMzg2MSwyMzg2MiwyMzg2MywyMzg2NCwyMzg2NSwyMzg2NiwyMzg2NywyMzg2OCwyMzg3MSwyMzg3MiwyMzg3MywyMzg3NCwyMzg3NSwyMzg3NiwyMzg3NywyMzg3OCwyMzg4MCwyMzg4MSwyMzg4NSwyMzg4NiwyMzg4NywyMzg4OCwyMzg4OSwyMzg5MCwyMzg5MSwyMzg5MiwyMzg5MywyMzg5NCwyMzg5NSwyMzg5NywyMzg5OCwyMzkwMCwyMzkwMiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwNywyMzkwOCwyMzkwOSwyMzkxMCwyMzkxMSwyMzkxMiwyMzkxNCwyMzkxNywyMzkxOCwyMzkyMCwyMzkyMSwyMzkyMiwyMzkyMywyMzkyNSwyMzkyNiwyMzkyNywyMzkyOCwyMzkyOSwyMzkzMCwyMzkzMSwyMzkzMiwyMzkzMywyMzkzNCwyMzkzNSwyMzkzNiwyMzkzNywyMzkzOSwyMzk0MCwyMzk0MSwyMzk0MiwyMzk0MywyMzk0NCwyMzk0NSwyMzk0NiwyMzk0NywyMzk0OCwyMzk0OSwyMzk1MCwyMzk1MSwyMzk1MiwyMzk1MywyMzk1NCwyMzk1NSwyMzk1NiwyMzk1NywyMzk1OCwyMzk1OSwyMzk2MCwyMzk2MiwyMzk2MywyMzk2NCwyMzk2NiwyMzk2NywyMzk2OCwyMzk2OSwyMzk3MCwyMzk3MSwyMzk3MiwyMzk3MywyMzk3NCwyMzk3NSwyMzk3NiwyMzk3NywyMzk3OCwyMzk3OSwyMzk4MCwyMzk4MSwyMzk4MiwyMzk4MywyMzk4NCwyMzk4NSwyMzk4NiwyMzk4NywyMzk4OCwyMzk4OSwyMzk5MCwyMzk5MiwyMzk5MywyMzk5NCwyMzk5NSwyMzk5NiwyMzk5NywyMzk5OCwyMzk5OSwyNDAwMCwyNDAwMSwyNDAwMiwyNDAwMywyNDAwNCwyNDAwNiwyNDAwNywyNDAwOCwyNDAwOSwyNDAxMCwyNDAxMSwyNDAxMiwyNDAxNCwyNDAxNSwyNDAxNiwyNDAxNywyNDAxOCwyNDAxOSwyNDAyMCwyNDAyMSwyNDAyMiwyNDAyMywyNDAyNCwyNDAyNSwyNDAyNiwyNDAyOCwyNDAzMSwyNDAzMiwyNDAzNSwyNDAzNiwyNDA0MiwyNDA0NCwyNDA0NSwyNDA0OCwyNDA1MywyNDA1NCwyNDA1NiwyNDA1NywyNDA1OCwyNDA1OSwyNDA2MCwyNDA2MywyNDA2NCwyNDA2OCwyNDA3MSwyNDA3MywyNDA3NCwyNDA3NSwyNDA3NywyNDA3OCwyNDA4MiwyNDA4MywyNDA4NywyNDA5NCwyNDA5NSwyNDA5NiwyNDA5NywyNDA5OCwyNDA5OSwyNDEwMCwyNDEwMSwyNDEwNCwyNDEwNSwyNDEwNiwyNDEwNywyNDEwOCwyNDExMSwyNDExMiwyNDExNCwyNDExNSwyNDExNiwyNDExNywyNDExOCwyNDEyMSwyNDEyMiwyNDEyNiwyNDEyNywyNDEyOCwyNDEyOSwyNDEzMSwyNDEzNCwyNDEzNSwyNDEzNiwyNDEzNywyNDEzOCwyNDEzOSwyNDE0MSwyNDE0MiwyNDE0MywyNDE0NCwyNDE0NSwyNDE0NiwyNDE0NywyNDE1MCwyNDE1MSwyNDE1MiwyNDE1MywyNDE1NCwyNDE1NiwyNDE1NywyNDE1OSwyNDE2MCwyNDE2MywyNDE2NCwyNDE2NSwyNDE2NiwyNDE2NywyNDE2OCwyNDE2OSwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NSwyNDE3NiwyNDE3NywyNDE4MSwyNDE4MywyNDE4NSwyNDE5MCwyNDE5MywyNDE5NCwyNDE5NSwyNDE5NywyNDIwMCwyNDIwMSwyNDIwNCwyNDIwNSwyNDIwNiwyNDIxMCwyNDIxNiwyNDIxOSwyNDIyMSwyNDIyNSwyNDIyNiwyNDIyNywyNDIyOCwyNDIzMiwyNDIzMywyNDIzNCwyNDIzNSwyNDIzNiwyNDIzOCwyNDIzOSwyNDI0MCwyNDI0MSwyNDI0MiwyNDI0NCwyNDI1MCwyNDI1MSwyNDI1MiwyNDI1MywyNDI1NSwyNDI1NiwyNDI1NywyNDI1OCwyNDI1OSwyNDI2MCwyNDI2MSwyNDI2MiwyNDI2MywyNDI2NCwyNDI2NywyNDI2OCwyNDI2OSwyNDI3MCwyNDI3MSwyNDI3MiwyNDI3NiwyNDI3NywyNDI3OSwyNDI4MCwyNDI4MSwyNDI4MiwyNDI4NCwyNDI4NSwyNDI4NiwyNDI4NywyNDI4OCwyNDI4OSwyNDI5MCwyNDI5MSwyNDI5MiwyNDI5MywyNDI5NCwyNDI5NSwyNDI5NywyNDI5OSwyNDMwMCwyNDMwMSwyNDMwMiwyNDMwMywyNDMwNCwyNDMwNSwyNDMwNiwyNDMwNywyNDMwOSwyNDMxMiwyNDMxMywyNDMxNSwyNDMxNiwyNDMxNywyNDMyNSwyNDMyNiwyNDMyNywyNDMyOSwyNDMzMiwyNDMzMywyNDMzNCwyNDMzNiwyNDMzOCwyNDM0MCwyNDM0MiwyNDM0NSwyNDM0NiwyNDM0OCwyNDM0OSwyNDM1MCwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MCwyNDM3MSwyNDM3MiwyNDM3MywyNDM3NCwyNDM3NSwyNDM3NiwyNDM3OSwyNDM4MSwyNDM4MiwyNDM4MywyNDM4NSwyNDM4NiwyNDM4NywyNDM4OCwyNDM4OSwyNDM5MCwyNDM5MSwyNDM5MiwyNDM5MywyNDM5NCwyNDM5NSwyNDM5NiwyNDM5NywyNDM5OCwyNDM5OSwyNDQwMSwyNDQwNCwyNDQwOSwyNDQxMCwyNDQxMSwyNDQxMiwyNDQxNCwyNDQxNSwyNDQxNiwyNDQxOSwyNDQyMSwyNDQyMywyNDQyNCwyNDQyNywyNDQzMCwyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQzOCwyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ0NywyNDQ1MSwyNDQ1NCwyNDQ2MSwyNDQ2MiwyNDQ2MywyNDQ2NSwyNDQ2NywyNDQ2OCwyNDQ3MCwyNDQ3NCwyNDQ3NSwyNDQ3NywyNDQ3OCwyNDQ3OSwyNDQ4MCwyNDQ4MiwyNDQ4MywyNDQ4NCwyNDQ4NSwyNDQ4NiwyNDQ4NywyNDQ4OSwyNDQ5MSwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDQ5OCwyNDQ5OSwyNDUwMCwyNDUwMiwyNDUwNCwyNDUwNSwyNDUwNiwyNDUwNywyNDUxMCwyNDUxMSwyNDUxMiwyNDUxMywyNDUxNCwyNDUxOSwyNDUyMCwyNDUyMiwyNDUyMywyNDUyNiwyNDUzMSwyNDUzMiwyNDUzMywyNDUzOCwyNDUzOSwyNDU0MCwyNDU0MiwyNDU0MywyNDU0NiwyNDU0NywyNDU0OSwyNDU1MCwyNDU1MiwyNDU1MywyNDU1NiwyNDU1OSwyNDU2MCwyNDU2MiwyNDU2MywyNDU2NCwyNDU2NiwyNDU2NywyNDU2OSwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NCwyNDU4NSwyNDU4NywyNDU4OCwyNDU5MiwyNDU5MywyNDU5NSwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNiwyNDYwNywyNDYxMCwyNDYxMSwyNDYxMiwyNDYyMCwyNDYyMSwyNDYyMiwyNDYyNCwyNDYyNSwyNDYyNiwyNDYyNywyNDYyOCwyNDYzMCwyNDYzMSwyNDYzMiwyNDYzMywyNDYzNCwyNDYzNywyNDYzOCwyNDY0MCwyNDY0NCwyNDY0NSwyNDY0NiwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MCwyNDY1MiwyNDY1NCwyNDY1NSwyNDY1NywyNDY1OSwyNDY2MCwyNDY2MiwyNDY2MywyNDY2NCwyNDY2NywyNDY2OCwyNDY3MCwyNDY3MSwyNDY3MiwyNDY3MywyNDY3NywyNDY3OCwyNDY4NiwyNDY4OSwyNDY5MCwyNDY5MiwyNDY5MywyNDY5NSwyNDcwMiwyNDcwNCwyNDcwNSwyNDcwNiwyNDcwOSwyNDcxMCwyNDcxMSwyNDcxMiwyNDcxNCwyNDcxNSwyNDcxOCwyNDcxOSwyNDcyMCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyNywyNDcyOCwyNDcyOSwyNDczMiwyNDczNCwyNDczNywyNDczOCwyNDc0MCwyNDc0MSwyNDc0MywyNDc0NSwyNDc0NiwyNDc1MCwyNDc1MiwyNDc1NSwyNDc1NywyNDc1OCwyNDc1OSwyNDc2MSwyNDc2MiwyNDc2NSwyNDc2NiwyNDc2NywyNDc2OCwyNDc2OSwyNDc3MCwyNDc3MSwyNDc3MiwyNDc3NSwyNDc3NiwyNDc3NywyNDc4MCwyNDc4MSwyNDc4MiwyNDc4MywyNDc4NCwyNDc4NiwyNDc4NywyNDc4OCwyNDc5MCwyNDc5MSwyNDc5MywyNDc5NSwyNDc5OCwyNDgwMSwyNDgwMiwyNDgwMywyNDgwNCwyNDgwNSwyNDgxMCwyNDgxNywyNDgxOCwyNDgyMSwyNDgyMywyNDgyNCwyNDgyNywyNDgyOCwyNDgyOSwyNDgzMCwyNDgzMSwyNDgzNCwyNDgzNSwyNDgzNiwyNDgzNywyNDgzOSwyNDg0MiwyNDg0MywyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NiwyNDg1NywyNDg1OSwyNDg2MCwyNDg2MSwyNDg2MiwyNDg2NSwyNDg2NiwyNDg2OSwyNDg3MiwyNDg3MywyNDg3NCwyNDg3NiwyNDg3NywyNDg3OCwyNDg3OSwyNDg4MCwyNDg4MSwyNDg4MiwyNDg4MywyNDg4NCwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OCwyNDg4OSwyNDg5MCwyNDg5MSwyNDg5MiwyNDg5MywyNDg5NCwyNDg5NiwyNDg5NywyNDg5OCwyNDg5OSwyNDkwMCwyNDkwMSwyNDkwMiwyNDkwMywyNDkwNSwyNDkwNywyNDkwOSwyNDkxMSwyNDkxMiwyNDkxNCwyNDkxNSwyNDkxNiwyNDkxOCwyNDkxOSwyNDkyMCwyNDkyMSwyNDkyMiwyNDkyMywyNDkyNCwyNDkyNiwyNDkyNywyNDkyOCwyNDkyOSwyNDkzMSwyNDkzMiwyNDkzMywyNDkzNCwyNDkzNywyNDkzOCwyNDkzOSwyNDk0MCwyNDk0MSwyNDk0MiwyNDk0MywyNDk0NSwyNDk0NiwyNDk0NywyNDk0OCwyNDk1MCwyNDk1MiwyNDk1MywyNDk1NCwyNDk1NSwyNDk1NiwyNDk1NywyNDk1OCwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MiwyNDk2MywyNDk2NCwyNDk2NSwyNDk2NiwyNDk2NywyNDk2OCwyNDk2OSwyNDk3MCwyNDk3MiwyNDk3MywyNDk3NSwyNDk3NiwyNDk3NywyNDk3OCwyNDk3OSwyNDk4MSwyNDk4MiwyNDk4MywyNDk4NCwyNDk4NSwyNDk4NiwyNDk4NywyNDk4OCwyNDk5MCwyNDk5MSwyNDk5MiwyNDk5MywyNDk5NCwyNDk5NSwyNDk5NiwyNDk5NywyNDk5OCwyNTAwMiwyNTAwMywyNTAwNSwyNTAwNiwyNTAwNywyNTAwOCwyNTAwOSwyNTAxMCwyNTAxMSwyNTAxMiwyNTAxMywyNTAxNCwyNTAxNiwyNTAxNywyNTAxOCwyNTAxOSwyNTAyMCwyNTAyMSwyNTAyMywyNTAyNCwyNTAyNSwyNTAyNywyNTAyOCwyNTAyOSwyNTAzMCwyNTAzMSwyNTAzMywyNTAzNiwyNTAzNywyNTAzOCwyNTAzOSwyNTA0MCwyNTA0MywyNTA0NSwyNTA0NiwyNTA0NywyNTA0OCwyNTA0OSwyNTA1MCwyNTA1MSwyNTA1MiwyNTA1MywyNTA1NCwyNTA1NSwyNTA1NiwyNTA1NywyNTA1OCwyNTA1OSwyNTA2MCwyNTA2MSwyNTA2MywyNTA2NCwyNTA2NSwyNTA2NiwyNTA2NywyNTA2OCwyNTA2OSwyNTA3MCwyNTA3MSwyNTA3MiwyNTA3MywyNTA3NCwyNTA3NSwyNTA3NiwyNTA3OCwyNTA3OSwyNTA4MCwyNTA4MSwyNTA4MiwyNTA4MywyNTA4NCwyNTA4NSwyNTA4NiwyNTA4OCwyNTA4OSwyNTA5MCwyNTA5MSwyNTA5MiwyNTA5MywyNTA5NSwyNTA5NywyNTEwNywyNTEwOCwyNTExMywyNTExNiwyNTExNywyNTExOCwyNTEyMCwyNTEyMywyNTEyNiwyNTEyNywyNTEyOCwyNTEyOSwyNTEzMSwyNTEzMywyNTEzNSwyNTEzNiwyNTEzNywyNTEzOCwyNTE0MSwyNTE0MiwyNTE0NCwyNTE0NSwyNTE0NiwyNTE0NywyNTE0OCwyNTE1NCwyNTE1NiwyNTE1NywyNTE1OCwyNTE2MiwyNTE2NywyNTE2OCwyNTE3MywyNTE3NCwyNTE3NSwyNTE3NywyNTE3OCwyNTE4MCwyNTE4MSwyNTE4MiwyNTE4MywyNTE4NCwyNTE4NSwyNTE4NiwyNTE4OCwyNTE4OSwyNTE5MiwyNTIwMSwyNTIwMiwyNTIwNCwyNTIwNSwyNTIwNywyNTIwOCwyNTIxMCwyNTIxMSwyNTIxMywyNTIxNywyNTIxOCwyNTIxOSwyNTIyMSwyNTIyMiwyNTIyMywyNTIyNCwyNTIyNywyNTIyOCwyNTIyOSwyNTIzMCwyNTIzMSwyNTIzMiwyNTIzNiwyNTI0MSwyNTI0NCwyNTI0NSwyNTI0NiwyNTI1MSwyNTI1NCwyNTI1NSwyNTI1NywyNTI1OCwyNTI2MSwyNTI2MiwyNTI2MywyNTI2NCwyNTI2NiwyNTI2NywyNTI2OCwyNTI3MCwyNTI3MSwyNTI3MiwyNTI3NCwyNTI3OCwyNTI4MCwyNTI4MSwyNTI4MywyNTI5MSwyNTI5NSwyNTI5NywyNTMwMSwyNTMwOSwyNTMxMCwyNTMxMiwyNTMxMywyNTMxNiwyNTMyMiwyNTMyMywyNTMyOCwyNTMzMCwyNTMzMywyNTMzNiwyNTMzNywyNTMzOCwyNTMzOSwyNTM0NCwyNTM0NywyNTM0OCwyNTM0OSwyNTM1MCwyNTM1NCwyNTM1NSwyNTM1NiwyNTM1NywyNTM1OSwyNTM2MCwyNTM2MiwyNTM2MywyNTM2NCwyNTM2NSwyNTM2NywyNTM2OCwyNTM2OSwyNTM3MiwyNTM4MiwyNTM4MywyNTM4NSwyNTM4OCwyNTM4OSwyNTM5MCwyNTM5MiwyNTM5MywyNTM5NSwyNTM5NiwyNTM5NywyNTM5OCwyNTM5OSwyNTQwMCwyNTQwMywyNTQwNCwyNTQwNiwyNTQwNywyNTQwOCwyNTQwOSwyNTQxMiwyNTQxNSwyNTQxNiwyNTQxOCwyNTQyNSwyNTQyNiwyNTQyNywyNTQyOCwyNTQzMCwyNTQzMSwyNTQzMiwyNTQzMywyNTQzNCwyNTQzNSwyNTQzNiwyNTQzNywyNTQ0MCwyNTQ0NCwyNTQ0NSwyNTQ0NiwyNTQ0OCwyNTQ1MCwyNTQ1MSwyNTQ1MiwyNTQ1NSwyNTQ1NiwyNTQ1OCwyNTQ1OSwyNTQ2MCwyNTQ2MSwyNTQ2NCwyNTQ2NSwyNTQ2OCwyNTQ2OSwyNTQ3MCwyNTQ3MSwyNTQ3MywyNTQ3NSwyNTQ3NiwyNTQ3NywyNTQ3OCwyNTQ4MywyNTQ4NSwyNTQ4OSwyNTQ5MSwyNTQ5MiwyNTQ5MywyNTQ5NSwyNTQ5NywyNTQ5OCwyNTQ5OSwyNTUwMCwyNTUwMSwyNTUwMiwyNTUwMywyNTUwNSwyNTUwOCwyNTUxMCwyNTUxNSwyNTUxOSwyNTUyMSwyNTUyMiwyNTUyNSwyNTUyNiwyNTUyOSwyNTUzMSwyNTUzMywyNTUzNSwyNTUzNiwyNTUzNywyNTUzOCwyNTUzOSwyNTU0MSwyNTU0MywyNTU0NCwyNTU0NiwyNTU0NywyNTU0OCwyNTU1MywyNTU1NSwyNTU1NiwyNTU1NywyNTU1OSwyNTU2MCwyNTU2MSwyNTU2MiwyNTU2MywyNTU2NCwyNTU2NSwyNTU2NywyNTU3MCwyNTU3MiwyNTU3MywyNTU3NCwyNTU3NSwyNTU3NiwyNTU3OSwyNTU4MCwyNTU4MiwyNTU4MywyNTU4NCwyNTU4NSwyNTU4NywyNTU4OSwyNTU5MSwyNTU5MywyNTU5NCwyNTU5NSwyNTU5NiwyNTU5OCwyNTYwMywyNTYwNCwyNTYwNiwyNTYwNywyNTYwOCwyNTYwOSwyNTYxMCwyNTYxMywyNTYxNCwyNTYxNywyNTYxOCwyNTYyMSwyNTYyMiwyNTYyMywyNTYyNCwyNTYyNSwyNTYyNiwyNTYyOSwyNTYzMSwyNTYzNCwyNTYzNSwyNTYzNiwyNTYzNywyNTYzOSwyNTY0MCwyNTY0MSwyNTY0MywyNTY0NiwyNTY0NywyNTY0OCwyNTY0OSwyNTY1MCwyNTY1MSwyNTY1MywyNTY1NCwyNTY1NSwyNTY1NiwyNTY1NywyNTY1OSwyNTY2MCwyNTY2MiwyNTY2NCwyNTY2NiwyNTY2NywyNTY3MywyNTY3NSwyNTY3NiwyNTY3NywyNTY3OCwyNTY3OSwyNTY4MCwyNTY4MSwyNTY4MywyNTY4NSwyNTY4NiwyNTY4NywyNTY4OSwyNTY5MCwyNTY5MSwyNTY5MiwyNTY5MywyNTY5NSwyNTY5NiwyNTY5NywyNTY5OCwyNTY5OSwyNTcwMCwyNTcwMSwyNTcwMiwyNTcwNCwyNTcwNiwyNTcwNywyNTcwOCwyNTcxMCwyNTcxMSwyNTcxMiwyNTcxMywyNTcxNCwyNTcxNSwyNTcxNiwyNTcxNywyNTcxOCwyNTcxOSwyNTcyMywyNTcyNCwyNTcyNSwyNTcyNiwyNTcyNywyNTcyOCwyNTcyOSwyNTczMSwyNTczNCwyNTczNiwyNTczNywyNTczOCwyNTczOSwyNTc0MCwyNTc0MSwyNTc0MiwyNTc0MywyNTc0NCwyNTc0NywyNTc0OCwyNTc1MSwyNTc1MiwyNTc1NCwyNTc1NSwyNTc1NiwyNTc1NywyNTc1OSwyNTc2MCwyNTc2MSwyNTc2MiwyNTc2MywyNTc2NSwyNTc2NiwyNTc2NywyNTc2OCwyNTc3MCwyNTc3MSwyNTc3NSwyNTc3NywyNTc3OCwyNTc3OSwyNTc4MCwyNTc4MiwyNTc4NSwyNTc4NywyNTc4OSwyNTc5MCwyNTc5MSwyNTc5MywyNTc5NSwyNTc5NiwyNTc5OCwyNTc5OSwyNTgwMCwyNTgwMSwyNTgwMiwyNTgwMywyNTgwNCwyNTgwNywyNTgwOSwyNTgxMSwyNTgxMiwyNTgxMywyNTgxNCwyNTgxNywyNTgxOCwyNTgxOSwyNTgyMCwyNTgyMSwyNTgyMywyNTgyNCwyNTgyNSwyNTgyNywyNTgyOSwyNTgzMSwyNTgzMiwyNTgzMywyNTgzNCwyNTgzNSwyNTgzNiwyNTgzNywyNTgzOCwyNTgzOSwyNTg0MCwyNTg0MSwyNTg0MiwyNTg0MywyNTg0NCwyNTg0NSwyNTg0NiwyNTg0NywyNTg0OCwyNTg0OSwyNTg1MCwyNTg1MSwyNTg1MiwyNTg1MywyNTg1NCwyNTg1NSwyNTg1NywyNTg1OCwyNTg1OSwyNTg2MCwyNTg2MSwyNTg2MiwyNTg2MywyNTg2NCwyNTg2NiwyNTg2NywyNTg2OCwyNTg2OSwyNTg3MCwyNTg3MSwyNTg3MiwyNTg3MywyNTg3NSwyNTg3NiwyNTg3NywyNTg3OCwyNTg3OSwyNTg4MSwyNTg4MiwyNTg4MywyNTg4NCwyNTg4NSwyNTg4NiwyNTg4NywyNTg4OCwyNTg4OSwyNTg5MCwyNTg5MSwyNTg5MiwyNTg5NCwyNTg5NSwyNTg5NiwyNTg5NywyNTg5OCwyNTkwMCwyNTkwMSwyNTkwNCwyNTkwNSwyNTkwNiwyNTkwNywyNTkxMSwyNTkxNCwyNTkxNiwyNTkxNywyNTkyMCwyNTkyMSwyNTkyMiwyNTkyMywyNTkyNCwyNTkyNiwyNTkyNywyNTkzMCwyNTkzMSwyNTkzMywyNTkzNCwyNTkzNiwyNTkzOCwyNTkzOSwyNTk0MCwyNTk0MywyNTk0NCwyNTk0NiwyNTk0OCwyNTk1MSwyNTk1MiwyNTk1MywyNTk1NiwyNTk1NywyNTk1OSwyNTk2MCwyNTk2MSwyNTk2MiwyNTk2NSwyNTk2NiwyNTk2NywyNTk2OSwyNTk3MSwyNTk3MywyNTk3NCwyNTk3NiwyNTk3NywyNTk3OCwyNTk3OSwyNTk4MCwyNTk4MSwyNTk4MiwyNTk4MywyNTk4NCwyNTk4NSwyNTk4NiwyNTk4NywyNTk4OCwyNTk4OSwyNTk5MCwyNTk5MiwyNTk5MywyNTk5NCwyNTk5NywyNTk5OCwyNTk5OSwyNjAwMiwyNjAwNCwyNjAwNSwyNjAwNiwyNjAwOCwyNjAxMCwyNjAxMywyNjAxNCwyNjAxNiwyNjAxOCwyNjAxOSwyNjAyMiwyNjAyNCwyNjAyNiwyNjAyOCwyNjAzMCwyNjAzMywyNjAzNCwyNjAzNSwyNjAzNiwyNjAzNywyNjAzOCwyNjAzOSwyNjA0MCwyNjA0MiwyNjA0MywyNjA0NiwyNjA0NywyNjA0OCwyNjA1MCwyNjA1NSwyNjA1NiwyNjA1NywyNjA1OCwyNjA2MSwyNjA2NCwyNjA2NSwyNjA2NywyNjA2OCwyNjA2OSwyNjA3MiwyNjA3MywyNjA3NCwyNjA3NSwyNjA3NiwyNjA3NywyNjA3OCwyNjA3OSwyNjA4MSwyNjA4MywyNjA4NCwyNjA5MCwyNjA5MSwyNjA5OCwyNjA5OSwyNjEwMCwyNjEwMSwyNjEwNCwyNjEwNSwyNjEwNywyNjEwOCwyNjEwOSwyNjExMCwyNjExMSwyNjExMywyNjExNiwyNjExNywyNjExOSwyNjEyMCwyNjEyMSwyNjEyMywyNjEyNSwyNjEyOCwyNjEyOSwyNjEzMCwyNjEzNCwyNjEzNSwyNjEzNiwyNjEzOCwyNjEzOSwyNjE0MCwyNjE0MiwyNjE0NSwyNjE0NiwyNjE0NywyNjE0OCwyNjE1MCwyNjE1MywyNjE1NCwyNjE1NSwyNjE1NiwyNjE1OCwyNjE2MCwyNjE2MiwyNjE2MywyNjE2NywyNjE2OCwyNjE2OSwyNjE3MCwyNjE3MSwyNjE3MywyNjE3NSwyNjE3NiwyNjE3OCwyNjE4MCwyNjE4MSwyNjE4MiwyNjE4MywyNjE4NCwyNjE4NSwyNjE4NiwyNjE4OSwyNjE5MCwyNjE5MiwyNjE5MywyNjIwMCwyNjIwMSwyNjIwMywyNjIwNCwyNjIwNSwyNjIwNiwyNjIwOCwyNjIxMCwyNjIxMSwyNjIxMywyNjIxNSwyNjIxNywyNjIxOCwyNjIxOSwyNjIyMCwyNjIyMSwyNjIyNSwyNjIyNiwyNjIyNywyNjIyOSwyNjIzMiwyNjIzMywyNjIzNSwyNjIzNiwyNjIzNywyNjIzOSwyNjI0MCwyNjI0MSwyNjI0MywyNjI0NSwyNjI0NiwyNjI0OCwyNjI0OSwyNjI1MCwyNjI1MSwyNjI1MywyNjI1NCwyNjI1NSwyNjI1NiwyNjI1OCwyNjI1OSwyNjI2MCwyNjI2MSwyNjI2NCwyNjI2NSwyNjI2NiwyNjI2NywyNjI2OCwyNjI3MCwyNjI3MSwyNjI3MiwyNjI3MywyNjI3NCwyNjI3NSwyNjI3NiwyNjI3NywyNjI3OCwyNjI4MSwyNjI4MiwyNjI4MywyNjI4NCwyNjI4NSwyNjI4NywyNjI4OCwyNjI4OSwyNjI5MCwyNjI5MSwyNjI5MywyNjI5NCwyNjI5NSwyNjI5NiwyNjI5OCwyNjI5OSwyNjMwMCwyNjMwMSwyNjMwMywyNjMwNCwyNjMwNSwyNjMwNiwyNjMwNywyNjMwOCwyNjMwOSwyNjMxMCwyNjMxMSwyNjMxMiwyNjMxMywyNjMxNCwyNjMxNSwyNjMxNiwyNjMxNywyNjMxOCwyNjMxOSwyNjMyMCwyNjMyMSwyNjMyMiwyNjMyMywyNjMyNCwyNjMyNSwyNjMyNiwyNjMyNywyNjMyOCwyNjMzMCwyNjMzNCwyNjMzNSwyNjMzNiwyNjMzNywyNjMzOCwyNjMzOSwyNjM0MCwyNjM0MSwyNjM0MywyNjM0NCwyNjM0NiwyNjM0NywyNjM0OCwyNjM0OSwyNjM1MCwyNjM1MSwyNjM1MywyNjM1NywyNjM1OCwyNjM2MCwyNjM2MiwyNjM2MywyNjM2NSwyNjM2OSwyNjM3MCwyNjM3MSwyNjM3MiwyNjM3MywyNjM3NCwyNjM3NSwyNjM4MCwyNjM4MiwyNjM4MywyNjM4NSwyNjM4NiwyNjM4NywyNjM5MCwyNjM5MiwyNjM5MywyNjM5NCwyNjM5NiwyNjM5OCwyNjQwMCwyNjQwMSwyNjQwMiwyNjQwMywyNjQwNCwyNjQwNSwyNjQwNywyNjQwOSwyNjQxNCwyNjQxNiwyNjQxOCwyNjQxOSwyNjQyMiwyNjQyMywyNjQyNCwyNjQyNSwyNjQyNywyNjQyOCwyNjQzMCwyNjQzMSwyNjQzMywyNjQzNiwyNjQzNywyNjQzOSwyNjQ0MiwyNjQ0MywyNjQ0NSwyNjQ1MCwyNjQ1MiwyNjQ1MywyNjQ1NSwyNjQ1NiwyNjQ1NywyNjQ1OCwyNjQ1OSwyNjQ2MSwyNjQ2NiwyNjQ2NywyNjQ2OCwyNjQ3MCwyNjQ3MSwyNjQ3NSwyNjQ3NiwyNjQ3OCwyNjQ4MSwyNjQ4NCwyNjQ4NiwyNjQ4OCwyNjQ4OSwyNjQ5MCwyNjQ5MSwyNjQ5MywyNjQ5NiwyNjQ5OCwyNjQ5OSwyNjUwMSwyNjUwMiwyNjUwNCwyNjUwNiwyNjUwOCwyNjUwOSwyNjUxMCwyNjUxMSwyNjUxMywyNjUxNCwyNjUxNSwyNjUxNiwyNjUxOCwyNjUyMSwyNjUyMywyNjUyNywyNjUyOCwyNjUyOSwyNjUzMiwyNjUzNCwyNjUzNywyNjU0MCwyNjU0MiwyNjU0NSwyNjU0NiwyNjU0OCwyNjU1MywyNjU1NCwyNjU1NSwyNjU1NiwyNjU1NywyNjU1OCwyNjU1OSwyNjU2MCwyNjU2MiwyNjU2NSwyNjU2NiwyNjU2NywyNjU2OCwyNjU2OSwyNjU3MCwyNjU3MSwyNjU3MiwyNjU3MywyNjU3NCwyNjU4MSwyNjU4MiwyNjU4MywyNjU4NywyNjU5MSwyNjU5MywyNjU5NSwyNjU5NiwyNjU5OCwyNjU5OSwyNjYwMCwyNjYwMiwyNjYwMywyNjYwNSwyNjYwNiwyNjYxMCwyNjYxMywyNjYxNCwyNjYxNSwyNjYxNiwyNjYxNywyNjYxOCwyNjYxOSwyNjYyMCwyNjYyMiwyNjYyNSwyNjYyNiwyNjYyNywyNjYyOCwyNjYzMCwyNjYzNywyNjY0MCwyNjY0MiwyNjY0NCwyNjY0NSwyNjY0OCwyNjY0OSwyNjY1MCwyNjY1MSwyNjY1MiwyNjY1NCwyNjY1NSwyNjY1NiwyNjY1OCwyNjY1OSwyNjY2MCwyNjY2MSwyNjY2MiwyNjY2MywyNjY2NCwyNjY2NywyNjY2OCwyNjY2OSwyNjY3MCwyNjY3MSwyNjY3MiwyNjY3MywyNjY3NiwyNjY3NywyNjY3OCwyNjY4MiwyNjY4MywyNjY4NywyNjY5NSwyNjY5OSwyNjcwMSwyNjcwMywyNjcwNiwyNjcxMCwyNjcxMSwyNjcxMiwyNjcxMywyNjcxNCwyNjcxNSwyNjcxNiwyNjcxNywyNjcxOCwyNjcxOSwyNjczMCwyNjczMiwyNjczMywyNjczNCwyNjczNSwyNjczNiwyNjczNywyNjczOCwyNjczOSwyNjc0MSwyNjc0NCwyNjc0NSwyNjc0NiwyNjc0NywyNjc0OCwyNjc0OSwyNjc1MCwyNjc1MSwyNjc1MiwyNjc1NCwyNjc1NiwyNjc1OSwyNjc2MCwyNjc2MSwyNjc2MiwyNjc2MywyNjc2NCwyNjc2NSwyNjc2NiwyNjc2OCwyNjc2OSwyNjc3MCwyNjc3MiwyNjc3MywyNjc3NCwyNjc3NiwyNjc3NywyNjc3OCwyNjc3OSwyNjc4MCwyNjc4MSwyNjc4MiwyNjc4MywyNjc4NCwyNjc4NSwyNjc4NywyNjc4OCwyNjc4OSwyNjc5MywyNjc5NCwyNjc5NSwyNjc5NiwyNjc5OCwyNjgwMSwyNjgwMiwyNjgwNCwyNjgwNiwyNjgwNywyNjgwOCwyNjgwOSwyNjgxMCwyNjgxMSwyNjgxMiwyNjgxMywyNjgxNCwyNjgxNSwyNjgxNywyNjgxOSwyNjgyMCwyNjgyMSwyNjgyMiwyNjgyMywyNjgyNCwyNjgyNiwyNjgyOCwyNjgzMCwyNjgzMSwyNjgzMiwyNjgzMywyNjgzNSwyNjgzNiwyNjgzOCwyNjgzOSwyNjg0MSwyNjg0MywyNjg0NCwyNjg0NSwyNjg0NiwyNjg0NywyNjg0OSwyNjg1MCwyNjg1MiwyNjg1MywyNjg1NCwyNjg1NSwyNjg1NiwyNjg1NywyNjg1OCwyNjg1OSwyNjg2MCwyNjg2MSwyNjg2MywyNjg2NiwyNjg2NywyNjg2OCwyNjg3MCwyNjg3MSwyNjg3MiwyNjg3NSwyNjg3NywyNjg3OCwyNjg3OSwyNjg4MCwyNjg4MiwyNjg4MywyNjg4NCwyNjg4NiwyNjg4NywyNjg4OCwyNjg4OSwyNjg5MCwyNjg5MiwyNjg5NSwyNjg5NywyNjg5OSwyNjkwMCwyNjkwMSwyNjkwMiwyNjkwMywyNjkwNCwyNjkwNSwyNjkwNiwyNjkwNywyNjkwOCwyNjkwOSwyNjkxMCwyNjkxMywyNjkxNCwyNjkxNSwyNjkxNywyNjkxOCwyNjkxOSwyNjkyMCwyNjkyMSwyNjkyMiwyNjkyMywyNjkyNCwyNjkyNiwyNjkyNywyNjkyOSwyNjkzMCwyNjkzMSwyNjkzMywyNjkzNCwyNjkzNSwyNjkzNiwyNjkzOCwyNjkzOSwyNjk0MCwyNjk0MiwyNjk0NCwyNjk0NSwyNjk0NywyNjk0OCwyNjk0OSwyNjk1MCwyNjk1MSwyNjk1MiwyNjk1MywyNjk1NCwyNjk1NSwyNjk1NiwyNjk1NywyNjk1OCwyNjk1OSwyNjk2MCwyNjk2MSwyNjk2MiwyNjk2MywyNjk2NSwyNjk2NiwyNjk2OCwyNjk2OSwyNjk3MSwyNjk3MiwyNjk3NSwyNjk3NywyNjk3OCwyNjk4MCwyNjk4MSwyNjk4MywyNjk4NCwyNjk4NSwyNjk4NiwyNjk4OCwyNjk4OSwyNjk5MSwyNjk5MiwyNjk5NCwyNjk5NSwyNjk5NiwyNjk5NywyNjk5OCwyNzAwMiwyNzAwMywyNzAwNSwyNzAwNiwyNzAwNywyNzAwOSwyNzAxMSwyNzAxMywyNzAxOCwyNzAxOSwyNzAyMCwyNzAyMiwyNzAyMywyNzAyNCwyNzAyNSwyNzAyNiwyNzAyNywyNzAzMCwyNzAzMSwyNzAzMywyNzAzNCwyNzAzNywyNzAzOCwyNzAzOSwyNzA0MCwyNzA0MSwyNzA0MiwyNzA0MywyNzA0NCwyNzA0NSwyNzA0NiwyNzA0OSwyNzA1MCwyNzA1MiwyNzA1NCwyNzA1NSwyNzA1NiwyNzA1OCwyNzA1OSwyNzA2MSwyNzA2MiwyNzA2NCwyNzA2NSwyNzA2NiwyNzA2OCwyNzA2OSwyNzA3MCwyNzA3MSwyNzA3MiwyNzA3NCwyNzA3NSwyNzA3NiwyNzA3NywyNzA3OCwyNzA3OSwyNzA4MCwyNzA4MSwyNzA4MywyNzA4NSwyNzA4NywyNzA4OSwyNzA5MCwyNzA5MSwyNzA5MywyNzA5NCwyNzA5NSwyNzA5NiwyNzA5NywyNzA5OCwyNzEwMCwyNzEwMSwyNzEwMiwyNzEwNSwyNzEwNiwyNzEwNywyNzEwOCwyNzEwOSwyNzExMCwyNzExMSwyNzExMiwyNzExMywyNzExNCwyNzExNSwyNzExNiwyNzExOCwyNzExOSwyNzEyMCwyNzEyMSwyNzEyMywyNzEyNCwyNzEyNSwyNzEyNiwyNzEyNywyNzEyOCwyNzEyOSwyNzEzMCwyNzEzMSwyNzEzMiwyNzEzNCwyNzEzNiwyNzEzNywyNzEzOCwyNzEzOSwyNzE0MCwyNzE0MSwyNzE0MiwyNzE0MywyNzE0NCwyNzE0NSwyNzE0NywyNzE0OCwyNzE0OSwyNzE1MCwyNzE1MSwyNzE1MiwyNzE1MywyNzE1NCwyNzE1NSwyNzE1NiwyNzE1NywyNzE1OCwyNzE2MSwyNzE2MiwyNzE2MywyNzE2NCwyNzE2NSwyNzE2NiwyNzE2OCwyNzE3MCwyNzE3MSwyNzE3MiwyNzE3MywyNzE3NCwyNzE3NSwyNzE3NywyNzE3OSwyNzE4MCwyNzE4MSwyNzE4MiwyNzE4NCwyNzE4NiwyNzE4NywyNzE4OCwyNzE5MCwyNzE5MSwyNzE5MiwyNzE5MywyNzE5NCwyNzE5NSwyNzE5NiwyNzE5OSwyNzIwMCwyNzIwMSwyNzIwMiwyNzIwMywyNzIwNSwyNzIwNiwyNzIwOCwyNzIwOSwyNzIxMCwyNzIxMSwyNzIxMiwyNzIxMywyNzIxNCwyNzIxNSwyNzIxNywyNzIxOCwyNzIxOSwyNzIyMCwyNzIyMSwyNzIyMiwyNzIyMywyNzIyNiwyNzIyOCwyNzIyOSwyNzIzMCwyNzIzMSwyNzIzMiwyNzIzNCwyNzIzNSwyNzIzNiwyNzIzOCwyNzIzOSwyNzI0MCwyNzI0MSwyNzI0MiwyNzI0MywyNzI0NCwyNzI0NSwyNzI0NiwyNzI0NywyNzI0OCwyNzI1MCwyNzI1MSwyNzI1MiwyNzI1MywyNzI1NCwyNzI1NSwyNzI1NiwyNzI1OCwyNzI1OSwyNzI2MSwyNzI2MiwyNzI2MywyNzI2NSwyNzI2NiwyNzI2NywyNzI2OSwyNzI3MCwyNzI3MSwyNzI3MiwyNzI3MywyNzI3NCwyNzI3NSwyNzI3NiwyNzI3NywyNzI3OSwyNzI4MiwyNzI4MywyNzI4NCwyNzI4NSwyNzI4NiwyNzI4OCwyNzI4OSwyNzI5MCwyNzI5MSwyNzI5MiwyNzI5MywyNzI5NCwyNzI5NSwyNzI5NywyNzI5OCwyNzI5OSwyNzMwMCwyNzMwMSwyNzMwMiwyNzMwMywyNzMwNCwyNzMwNiwyNzMwOSwyNzMxMCwyNzMxMSwyNzMxMiwyNzMxMywyNzMxNCwyNzMxNSwyNzMxNiwyNzMxNywyNzMxOCwyNzMxOSwyNzMyMCwyNzMyMSwyNzMyMiwyNzMyMywyNzMyNCwyNzMyNSwyNzMyNiwyNzMyNywyNzMyOCwyNzMyOSwyNzMzMCwyNzMzMSwyNzMzMiwyNzMzMywyNzMzNCwyNzMzNSwyNzMzNiwyNzMzNywyNzMzOCwyNzMzOSwyNzM0MCwyNzM0MSwyNzM0MiwyNzM0MywyNzM0NCwyNzM0NSwyNzM0NiwyNzM0NywyNzM0OCwyNzM0OSwyNzM1MCwyNzM1MSwyNzM1MiwyNzM1MywyNzM1NCwyNzM1NSwyNzM1NiwyNzM1NywyNzM1OCwyNzM1OSwyNzM2MCwyNzM2MSwyNzM2MiwyNzM2MywyNzM2NCwyNzM2NSwyNzM2NiwyNzM2NywyNzM2OCwyNzM2OSwyNzM3MCwyNzM3MSwyNzM3MiwyNzM3MywyNzM3NCwyNzM3NSwyNzM3NiwyNzM3NywyNzM3OCwyNzM3OSwyNzM4MCwyNzM4MSwyNzM4MiwyNzM4MywyNzM4NCwyNzM4NSwyNzM4NiwyNzM4NywyNzM4OCwyNzM4OSwyNzM5MCwyNzM5MSwyNzM5MiwyNzM5MywyNzM5NCwyNzM5NSwyNzM5NiwyNzM5NywyNzM5OCwyNzM5OSwyNzQwMCwyNzQwMSwyNzQwMiwyNzQwMywyNzQwNCwyNzQwNSwyNzQwNiwyNzQwNywyNzQwOCwyNzQwOSwyNzQxMCwyNzQxMSwyNzQxMiwyNzQxMywyNzQxNCwyNzQxNSwyNzQxNiwyNzQxNywyNzQxOCwyNzQxOSwyNzQyMCwyNzQyMSwyNzQyMiwyNzQyMywyNzQyOSwyNzQzMCwyNzQzMiwyNzQzMywyNzQzNCwyNzQzNSwyNzQzNiwyNzQzNywyNzQzOCwyNzQzOSwyNzQ0MCwyNzQ0MSwyNzQ0MywyNzQ0NCwyNzQ0NSwyNzQ0NiwyNzQ0OCwyNzQ1MSwyNzQ1MiwyNzQ1MywyNzQ1NSwyNzQ1NiwyNzQ1NywyNzQ1OCwyNzQ2MCwyNzQ2MSwyNzQ2NCwyNzQ2NiwyNzQ2NywyNzQ2OSwyNzQ3MCwyNzQ3MSwyNzQ3MiwyNzQ3MywyNzQ3NCwyNzQ3NSwyNzQ3NiwyNzQ3NywyNzQ3OCwyNzQ3OSwyNzQ4MCwyNzQ4MiwyNzQ4MywyNzQ4NCwyNzQ4NSwyNzQ4NiwyNzQ4NywyNzQ4OCwyNzQ4OSwyNzQ5NiwyNzQ5NywyNzQ5OSwyNzUwMCwyNzUwMSwyNzUwMiwyNzUwMywyNzUwNCwyNzUwNSwyNzUwNiwyNzUwNywyNzUwOCwyNzUwOSwyNzUxMCwyNzUxMSwyNzUxMiwyNzUxNCwyNzUxNywyNzUxOCwyNzUxOSwyNzUyMCwyNzUyNSwyNzUyOCwyNzUzMiwyNzUzNCwyNzUzNSwyNzUzNiwyNzUzNywyNzU0MCwyNzU0MSwyNzU0MywyNzU0NCwyNzU0NSwyNzU0OCwyNzU0OSwyNzU1MCwyNzU1MSwyNzU1MiwyNzU1NCwyNzU1NSwyNzU1NiwyNzU1NywyNzU1OCwyNzU1OSwyNzU2MCwyNzU2MSwyNzU2MywyNzU2NCwyNzU2NSwyNzU2NiwyNzU2NywyNzU2OCwyNzU2OSwyNzU3MCwyNzU3NCwyNzU3NiwyNzU3NywyNzU3OCwyNzU3OSwyNzU4MCwyNzU4MSwyNzU4MiwyNzU4NCwyNzU4NywyNzU4OCwyNzU5MCwyNzU5MSwyNzU5MiwyNzU5MywyNzU5NCwyNzU5NiwyNzU5OCwyNzYwMCwyNzYwMSwyNzYwOCwyNzYxMCwyNzYxMiwyNzYxMywyNzYxNCwyNzYxNSwyNzYxNiwyNzYxOCwyNzYxOSwyNzYyMCwyNzYyMSwyNzYyMiwyNzYyMywyNzYyNCwyNzYyNSwyNzYyOCwyNzYyOSwyNzYzMCwyNzYzMiwyNzYzMywyNzYzNCwyNzYzNiwyNzYzOCwyNzYzOSwyNzY0MCwyNzY0MiwyNzY0MywyNzY0NCwyNzY0NiwyNzY0NywyNzY0OCwyNzY0OSwyNzY1MCwyNzY1MSwyNzY1MiwyNzY1NiwyNzY1NywyNzY1OCwyNzY1OSwyNzY2MCwyNzY2MiwyNzY2NiwyNzY3MSwyNzY3NiwyNzY3NywyNzY3OCwyNzY4MCwyNzY4MywyNzY4NSwyNzY5MSwyNzY5MiwyNzY5MywyNzY5NywyNzY5OSwyNzcwMiwyNzcwMywyNzcwNSwyNzcwNiwyNzcwNywyNzcwOCwyNzcxMCwyNzcxMSwyNzcxNSwyNzcxNiwyNzcxNywyNzcyMCwyNzcyMywyNzcyNCwyNzcyNSwyNzcyNiwyNzcyNywyNzcyOSwyNzczMCwyNzczMSwyNzczNCwyNzczNiwyNzczNywyNzczOCwyNzc0NiwyNzc0NywyNzc0OSwyNzc1MCwyNzc1MSwyNzc1NSwyNzc1NiwyNzc1NywyNzc1OCwyNzc1OSwyNzc2MSwyNzc2MywyNzc2NSwyNzc2NywyNzc2OCwyNzc3MCwyNzc3MSwyNzc3MiwyNzc3NSwyNzc3NiwyNzc4MCwyNzc4MywyNzc4NiwyNzc4NywyNzc4OSwyNzc5MCwyNzc5MywyNzc5NCwyNzc5NywyNzc5OCwyNzc5OSwyNzgwMCwyNzgwMiwyNzgwNCwyNzgwNSwyNzgwNiwyNzgwOCwyNzgxMCwyNzgxNiwyNzgyMCwyNzgyMywyNzgyNCwyNzgyOCwyNzgyOSwyNzgzMCwyNzgzMSwyNzgzNCwyNzg0MCwyNzg0MSwyNzg0MiwyNzg0MywyNzg0NiwyNzg0NywyNzg0OCwyNzg1MSwyNzg1MywyNzg1NCwyNzg1NSwyNzg1NywyNzg1OCwyNzg2NCwyNzg2NSwyNzg2NiwyNzg2OCwyNzg2OSwyNzg3MSwyNzg3NiwyNzg3OCwyNzg3OSwyNzg4MSwyNzg4NCwyNzg4NSwyNzg5MCwyNzg5MiwyNzg5NywyNzkwMywyNzkwNCwyNzkwNiwyNzkwNywyNzkwOSwyNzkxMCwyNzkxMiwyNzkxMywyNzkxNCwyNzkxNywyNzkxOSwyNzkyMCwyNzkyMSwyNzkyMywyNzkyNCwyNzkyNSwyNzkyNiwyNzkyOCwyNzkzMiwyNzkzMywyNzkzNSwyNzkzNiwyNzkzNywyNzkzOCwyNzkzOSwyNzk0MCwyNzk0MiwyNzk0NCwyNzk0NSwyNzk0OCwyNzk0OSwyNzk1MSwyNzk1MiwyNzk1NiwyNzk1OCwyNzk1OSwyNzk2MCwyNzk2MiwyNzk2NywyNzk2OCwyNzk3MCwyNzk3MiwyNzk3NywyNzk4MCwyNzk4NCwyNzk4OSwyNzk5MCwyNzk5MSwyNzk5MiwyNzk5NSwyNzk5NywyNzk5OSwyODAwMSwyODAwMiwyODAwNCwyODAwNSwyODAwNywyODAwOCwyODAxMSwyODAxMiwyODAxMywyODAxNiwyODAxNywyODAxOCwyODAxOSwyODAyMSwyODAyMiwyODAyNSwyODAyNiwyODAyNywyODAyOSwyODAzMCwyODAzMSwyODAzMiwyODAzMywyODAzNSwyODAzNiwyODAzOCwyODAzOSwyODA0MiwyODA0MywyODA0NSwyODA0NywyODA0OCwyODA1MCwyODA1NCwyODA1NSwyODA1NiwyODA1NywyODA1OCwyODA2MCwyODA2NiwyODA2OSwyODA3NiwyODA3NywyODA4MCwyODA4MSwyODA4MywyODA4NCwyODA4NiwyODA4NywyODA4OSwyODA5MCwyODA5MSwyODA5MiwyODA5MywyODA5NCwyODA5NywyODA5OCwyODA5OSwyODEwNCwyODEwNSwyODEwNiwyODEwOSwyODExMCwyODExMSwyODExMiwyODExNCwyODExNSwyODExNiwyODExNywyODExOSwyODEyMiwyODEyMywyODEyNCwyODEyNywyODEzMCwyODEzMSwyODEzMywyODEzNSwyODEzNiwyODEzNywyODEzOCwyODE0MSwyODE0MywyODE0NCwyODE0NiwyODE0OCwyODE0OSwyODE1MCwyODE1MiwyODE1NCwyODE1NywyODE1OCwyODE1OSwyODE2MCwyODE2MSwyODE2MiwyODE2MywyODE2NCwyODE2NiwyODE2NywyODE2OCwyODE2OSwyODE3MSwyODE3NSwyODE3OCwyODE3OSwyODE4MSwyODE4NCwyODE4NSwyODE4NywyODE4OCwyODE5MCwyODE5MSwyODE5NCwyODE5OCwyODE5OSwyODIwMCwyODIwMiwyODIwNCwyODIwNiwyODIwOCwyODIwOSwyODIxMSwyODIxMywyODIxNCwyODIxNSwyODIxNywyODIxOSwyODIyMCwyODIyMSwyODIyMiwyODIyMywyODIyNCwyODIyNSwyODIyNiwyODIyOSwyODIzMCwyODIzMSwyODIzMiwyODIzMywyODIzNCwyODIzNSwyODIzNiwyODIzOSwyODI0MCwyODI0MSwyODI0MiwyODI0NSwyODI0NywyODI0OSwyODI1MCwyODI1MiwyODI1MywyODI1NCwyODI1NiwyODI1NywyODI1OCwyODI1OSwyODI2MCwyODI2MSwyODI2MiwyODI2MywyODI2NCwyODI2NSwyODI2NiwyODI2OCwyODI2OSwyODI3MSwyODI3MiwyODI3MywyODI3NCwyODI3NSwyODI3NiwyODI3NywyODI3OCwyODI3OSwyODI4MCwyODI4MSwyODI4MiwyODI4MywyODI4NCwyODI4NSwyODI4OCwyODI4OSwyODI5MCwyODI5MiwyODI5NSwyODI5NiwyODI5OCwyODI5OSwyODMwMCwyODMwMSwyODMwMiwyODMwNSwyODMwNiwyODMwNywyODMwOCwyODMwOSwyODMxMCwyODMxMSwyODMxMywyODMxNCwyODMxNSwyODMxNywyODMxOCwyODMyMCwyODMyMSwyODMyMywyODMyNCwyODMyNiwyODMyOCwyODMyOSwyODMzMSwyODMzMiwyODMzMywyODMzNCwyODMzNiwyODMzOSwyODM0MSwyODM0NCwyODM0NSwyODM0OCwyODM1MCwyODM1MSwyODM1MiwyODM1NSwyODM1NiwyODM1NywyODM1OCwyODM2MCwyODM2MSwyODM2MiwyODM2NCwyODM2NSwyODM2NiwyODM2OCwyODM3MCwyODM3NCwyODM3NiwyODM3NywyODM3OSwyODM4MCwyODM4MSwyODM4NywyODM5MSwyODM5NCwyODM5NSwyODM5NiwyODM5NywyODM5OCwyODM5OSwyODQwMCwyODQwMSwyODQwMiwyODQwMywyODQwNSwyODQwNiwyODQwNywyODQwOCwyODQxMCwyODQxMSwyODQxMiwyODQxMywyODQxNCwyODQxNSwyODQxNiwyODQxNywyODQxOSwyODQyMCwyODQyMSwyODQyMywyODQyNCwyODQyNiwyODQyNywyODQyOCwyODQyOSwyODQzMCwyODQzMiwyODQzMywyODQzNCwyODQzOCwyODQzOSwyODQ0MCwyODQ0MSwyODQ0MiwyODQ0MywyODQ0NCwyODQ0NSwyODQ0NiwyODQ0NywyODQ0OSwyODQ1MCwyODQ1MSwyODQ1MywyODQ1NCwyODQ1NSwyODQ1NiwyODQ2MCwyODQ2MiwyODQ2NCwyODQ2NiwyODQ2OCwyODQ2OSwyODQ3MSwyODQ3MiwyODQ3MywyODQ3NCwyODQ3NSwyODQ3NiwyODQ3NywyODQ3OSwyODQ4MCwyODQ4MSwyODQ4MiwyODQ4MywyODQ4NCwyODQ4NSwyODQ4OCwyODQ4OSwyODQ5MCwyODQ5MiwyODQ5NCwyODQ5NSwyODQ5NiwyODQ5NywyODQ5OCwyODQ5OSwyODUwMCwyODUwMSwyODUwMiwyODUwMywyODUwNSwyODUwNiwyODUwNywyODUwOSwyODUxMSwyODUxMiwyODUxMywyODUxNSwyODUxNiwyODUxNywyODUxOSwyODUyMCwyODUyMSwyODUyMiwyODUyMywyODUyNCwyODUyNywyODUyOCwyODUyOSwyODUzMSwyODUzMywyODUzNCwyODUzNSwyODUzNywyODUzOSwyODU0MSwyODU0MiwyODU0MywyODU0NCwyODU0NSwyODU0NiwyODU0NywyODU0OSwyODU1MCwyODU1MSwyODU1NCwyODU1NSwyODU1OSwyODU2MCwyODU2MSwyODU2MiwyODU2MywyODU2NCwyODU2NSwyODU2NiwyODU2NywyODU2OCwyODU2OSwyODU3MCwyODU3MSwyODU3MywyODU3NCwyODU3NSwyODU3NiwyODU3OCwyODU3OSwyODU4MCwyODU4MSwyODU4MiwyODU4NCwyODU4NSwyODU4NiwyODU4NywyODU4OCwyODU4OSwyODU5MCwyODU5MSwyODU5MiwyODU5MywyODU5NCwyODU5NiwyODU5NywyODU5OSwyODYwMCwyODYwMiwyODYwMywyODYwNCwyODYwNSwyODYwNiwyODYwNywyODYwOSwyODYxMSwyODYxMiwyODYxMywyODYxNCwyODYxNSwyODYxNiwyODYxOCwyODYxOSwyODYyMCwyODYyMSwyODYyMiwyODYyMywyODYyNCwyODYyNywyODYyOCwyODYyOSwyODYzMCwyODYzMSwyODYzMiwyODYzMywyODYzNCwyODYzNSwyODYzNiwyODYzNywyODYzOSwyODY0MiwyODY0MywyODY0NCwyODY0NSwyODY0NiwyODY0NywyODY0OCwyODY0OSwyODY1MCwyODY1MSwyODY1MiwyODY1MywyODY1NiwyODY1NywyODY1OCwyODY1OSwyODY2MCwyODY2MSwyODY2MiwyODY2MywyODY2NCwyODY2NSwyODY2NiwyODY2NywyODY2OCwyODY2OSwyODY3MCwyODY3MSwyODY3MiwyODY3MywyODY3NCwyODY3NSwyODY3NiwyODY3NywyODY3OCwyODY3OSwyODY4MCwyODY4MSwyODY4MiwyODY4MywyODY4NCwyODY4NSwyODY4NiwyODY4NywyODY4OCwyODY5MCwyODY5MSwyODY5MiwyODY5MywyODY5NCwyODY5NSwyODY5NiwyODY5NywyODcwMCwyODcwMSwyODcwMiwyODcwMywyODcwNCwyODcwNSwyODcwNiwyODcwOCwyODcwOSwyODcxMCwyODcxMSwyODcxMiwyODcxMywyODcxNCwyODcxNSwyODcxNiwyODcxNywyODcxOCwyODcxOSwyODcyMCwyODcyMSwyODcyMiwyODcyMywyODcyNCwyODcyNiwyODcyNywyODcyOCwyODczMCwyODczMSwyODczMiwyODczMywyODczNCwyODczNSwyODczNiwyODczNywyODczOCwyODczOSwyODc0MCwyODc0MSwyODc0MiwyODc0MywyODc0NCwyODc0NSwyODc0NiwyODc0NywyODc0OSwyODc1MCwyODc1MiwyODc1MywyODc1NCwyODc1NSwyODc1NiwyODc1NywyODc1OCwyODc1OSwyODc2MCwyODc2MSwyODc2MiwyODc2MywyODc2NCwyODc2NSwyODc2NywyODc2OCwyODc2OSwyODc3MCwyODc3MSwyODc3MiwyODc3MywyODc3NCwyODc3NSwyODc3NiwyODc3NywyODc3OCwyODc4MiwyODc4NSwyODc4NiwyODc4NywyODc4OCwyODc5MSwyODc5MywyODc5NCwyODc5NSwyODc5NywyODgwMSwyODgwMiwyODgwMywyODgwNCwyODgwNiwyODgwNywyODgwOCwyODgxMSwyODgxMiwyODgxMywyODgxNSwyODgxNiwyODgxNywyODgxOSwyODgyMywyODgyNCwyODgyNiwyODgyNywyODgzMCwyODgzMSwyODgzMiwyODgzMywyODgzNCwyODgzNSwyODgzNiwyODgzNywyODgzOCwyODgzOSwyODg0MCwyODg0MSwyODg0MiwyODg0OCwyODg1MCwyODg1MiwyODg1MywyODg1NCwyODg1OCwyODg2MiwyODg2MywyODg2OCwyODg2OSwyODg3MCwyODg3MSwyODg3MywyODg3NSwyODg3NiwyODg3NywyODg3OCwyODg3OSwyODg4MCwyODg4MSwyODg4MiwyODg4MywyODg4NCwyODg4NSwyODg4NiwyODg4NywyODg5MCwyODg5MiwyODg5MywyODg5NCwyODg5NiwyODg5NywyODg5OCwyODg5OSwyODkwMSwyODkwNiwyODkxMCwyODkxMiwyODkxMywyODkxNCwyODkxNSwyODkxNiwyODkxNywyODkxOCwyODkyMCwyODkyMiwyODkyMywyODkyNCwyODkyNiwyODkyNywyODkyOCwyODkyOSwyODkzMCwyODkzMSwyODkzMiwyODkzMywyODkzNCwyODkzNSwyODkzNiwyODkzOSwyODk0MCwyODk0MSwyODk0MiwyODk0MywyODk0NSwyODk0NiwyODk0OCwyODk1MSwyODk1NSwyODk1NiwyODk1NywyODk1OCwyODk1OSwyODk2MCwyODk2MSwyODk2MiwyODk2MywyODk2NCwyODk2NSwyODk2NywyODk2OCwyODk2OSwyODk3MCwyODk3MSwyODk3MiwyODk3MywyODk3NCwyODk3OCwyODk3OSwyODk4MCwyODk4MSwyODk4MywyODk4NCwyODk4NSwyODk4NiwyODk4NywyODk4OCwyODk4OSwyODk5MCwyODk5MSwyODk5MiwyODk5MywyODk5NCwyODk5NSwyODk5NiwyODk5OCwyODk5OSwyOTAwMCwyOTAwMSwyOTAwMywyOTAwNSwyOTAwNywyOTAwOCwyOTAwOSwyOTAxMCwyOTAxMSwyOTAxMiwyOTAxMywyOTAxNCwyOTAxNSwyOTAxNiwyOTAxNywyOTAxOCwyOTAxOSwyOTAyMSwyOTAyMywyOTAyNCwyOTAyNSwyOTAyNiwyOTAyNywyOTAyOSwyOTAzMywyOTAzNCwyOTAzNSwyOTAzNiwyOTAzNywyOTAzOSwyOTA0MCwyOTA0MSwyOTA0NCwyOTA0NSwyOTA0NiwyOTA0NywyOTA0OSwyOTA1MSwyOTA1MiwyOTA1NCwyOTA1NSwyOTA1NiwyOTA1NywyOTA1OCwyOTA1OSwyOTA2MSwyOTA2MiwyOTA2MywyOTA2NCwyOTA2NSwyOTA2NywyOTA2OCwyOTA2OSwyOTA3MCwyOTA3MiwyOTA3MywyOTA3NCwyOTA3NSwyOTA3NywyOTA3OCwyOTA3OSwyOTA4MiwyOTA4MywyOTA4NCwyOTA4NSwyOTA4NiwyOTA4OSwyOTA5MCwyOTA5MSwyOTA5MiwyOTA5MywyOTA5NCwyOTA5NSwyOTA5NywyOTA5OCwyOTA5OSwyOTEwMSwyOTEwMiwyOTEwMywyOTEwNCwyOTEwNSwyOTEwNiwyOTEwOCwyOTExMCwyOTExMSwyOTExMiwyOTExNCwyOTExNSwyOTExNiwyOTExNywyOTExOCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyMiwyOTEyNCwyOTEyNSwyOTEyNiwyOTEyNywyOTEyOCwyOTEyOSwyOTEzMCwyOTEzMSwyOTEzMiwyOTEzMywyOTEzNSwyOTEzNiwyOTEzNywyOTEzOCwyOTEzOSwyOTE0MiwyOTE0MywyOTE0NCwyOTE0NSwyOTE0NiwyOTE0NywyOTE0OCwyOTE0OSwyOTE1MCwyOTE1MSwyOTE1MywyOTE1NCwyOTE1NSwyOTE1NiwyOTE1OCwyOTE2MCwyOTE2MSwyOTE2MiwyOTE2MywyOTE2NCwyOTE2NSwyOTE2NywyOTE2OCwyOTE2OSwyOTE3MCwyOTE3MSwyOTE3MiwyOTE3MywyOTE3NCwyOTE3NSwyOTE3NiwyOTE3OCwyOTE3OSwyOTE4MCwyOTE4MSwyOTE4MiwyOTE4MywyOTE4NCwyOTE4NSwyOTE4NiwyOTE4NywyOTE4OCwyOTE4OSwyOTE5MSwyOTE5MiwyOTE5MywyOTE5NCwyOTE5NSwyOTE5NiwyOTE5NywyOTE5OCwyOTE5OSwyOTIwMCwyOTIwMSwyOTIwMiwyOTIwMywyOTIwNCwyOTIwNSwyOTIwNiwyOTIwNywyOTIwOCwyOTIwOSwyOTIxMCwyOTIxMSwyOTIxMiwyOTIxNCwyOTIxNSwyOTIxNiwyOTIxNywyOTIxOCwyOTIxOSwyOTIyMCwyOTIyMSwyOTIyMiwyOTIyMywyOTIyNSwyOTIyNywyOTIyOSwyOTIzMCwyOTIzMSwyOTIzNCwyOTIzNSwyOTIzNiwyOTI0MiwyOTI0NCwyOTI0NiwyOTI0OCwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MiwyOTI1MywyOTI1NCwyOTI1NywyOTI1OCwyOTI1OSwyOTI2MiwyOTI2MywyOTI2NCwyOTI2NSwyOTI2NywyOTI2OCwyOTI2OSwyOTI3MSwyOTI3MiwyOTI3NCwyOTI3NiwyOTI3OCwyOTI4MCwyOTI4MywyOTI4NCwyOTI4NSwyOTI4OCwyOTI5MCwyOTI5MSwyOTI5MiwyOTI5MywyOTI5NiwyOTI5NywyOTI5OSwyOTMwMCwyOTMwMiwyOTMwMywyOTMwNCwyOTMwNywyOTMwOCwyOTMwOSwyOTMxNCwyOTMxNSwyOTMxNywyOTMxOCwyOTMxOSwyOTMyMCwyOTMyMSwyOTMyNCwyOTMyNiwyOTMyOCwyOTMyOSwyOTMzMSwyOTMzMiwyOTMzMywyOTMzNCwyOTMzNSwyOTMzNiwyOTMzNywyOTMzOCwyOTMzOSwyOTM0MCwyOTM0MSwyOTM0MiwyOTM0NCwyOTM0NSwyOTM0NiwyOTM0NywyOTM0OCwyOTM0OSwyOTM1MCwyOTM1MSwyOTM1MiwyOTM1MywyOTM1NCwyOTM1NSwyOTM1OCwyOTM2MSwyOTM2MiwyOTM2MywyOTM2NSwyOTM3MCwyOTM3MSwyOTM3MiwyOTM3MywyOTM3NCwyOTM3NSwyOTM3NiwyOTM4MSwyOTM4MiwyOTM4MywyOTM4NSwyOTM4NiwyOTM4NywyOTM4OCwyOTM5MSwyOTM5MywyOTM5NSwyOTM5NiwyOTM5NywyOTM5OCwyOTQwMCwyOTQwMiwyOTQwMyw1ODU2Niw1ODU2Nyw1ODU2OCw1ODU2OSw1ODU3MCw1ODU3MSw1ODU3Miw1ODU3Myw1ODU3NCw1ODU3NSw1ODU3Niw1ODU3Nyw1ODU3OCw1ODU3OSw1ODU4MCw1ODU4MSw1ODU4Miw1ODU4Myw1ODU4NCw1ODU4NSw1ODU4Niw1ODU4Nyw1ODU4OCw1ODU4OSw1ODU5MCw1ODU5MSw1ODU5Miw1ODU5Myw1ODU5NCw1ODU5NSw1ODU5Niw1ODU5Nyw1ODU5OCw1ODU5OSw1ODYwMCw1ODYwMSw1ODYwMiw1ODYwMyw1ODYwNCw1ODYwNSw1ODYwNiw1ODYwNyw1ODYwOCw1ODYwOSw1ODYxMCw1ODYxMSw1ODYxMiw1ODYxMyw1ODYxNCw1ODYxNSw1ODYxNiw1ODYxNyw1ODYxOCw1ODYxOSw1ODYyMCw1ODYyMSw1ODYyMiw1ODYyMyw1ODYyNCw1ODYyNSw1ODYyNiw1ODYyNyw1ODYyOCw1ODYyOSw1ODYzMCw1ODYzMSw1ODYzMiw1ODYzMyw1ODYzNCw1ODYzNSw1ODYzNiw1ODYzNyw1ODYzOCw1ODYzOSw1ODY0MCw1ODY0MSw1ODY0Miw1ODY0Myw1ODY0NCw1ODY0NSw1ODY0Niw1ODY0Nyw1ODY0OCw1ODY0OSw1ODY1MCw1ODY1MSw1ODY1Miw1ODY1Myw1ODY1NCw1ODY1NSw1ODY1Niw1ODY1Nyw1ODY1OCw1ODY1OSw1ODY2MCw1ODY2MSwxMjI4OCwxMjI4OSwxMjI5MCwxODMsNzEzLDcxMSwxNjgsMTIyOTEsMTIyOTMsODIxMiw2NTM3NCw4MjE0LDgyMzAsODIxNiw4MjE3LDgyMjAsODIyMSwxMjMwOCwxMjMwOSwxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMxMCwxMjMxMSwxMjMwNCwxMjMwNSwxNzcsMjE1LDI0Nyw4NzU4LDg3NDMsODc0NCw4NzIxLDg3MTksODc0Niw4NzQ1LDg3MTIsODc1OSw4NzMwLDg4NjksODc0MSw4NzM2LDg5NzgsODg1Nyw4NzQ3LDg3NTAsODgwMSw4NzgwLDg3NzYsODc2NSw4NzMzLDg4MDAsODgxNCw4ODE1LDg4MDQsODgwNSw4NzM0LDg3NTcsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1Mjg0LDE2NCw2NTUwNCw2NTUwNSw4MjQwLDE2Nyw4NDcwLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw4MjUxLDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsNTg2NjIsNTg2NjMsNTg2NjQsNTg2NjUsNTg2NjYsNTg2NjcsNTg2NjgsNTg2NjksNTg2NzAsNTg2NzEsNTg2NzIsNTg2NzMsNTg2NzQsNTg2NzUsNTg2NzYsNTg2NzcsNTg2NzgsNTg2NzksNTg2ODAsNTg2ODEsNTg2ODIsNTg2ODMsNTg2ODQsNTg2ODUsNTg2ODYsNTg2ODcsNTg2ODgsNTg2ODksNTg2OTAsNTg2OTEsNTg2OTIsNTg2OTMsNTg2OTQsNTg2OTUsNTg2OTYsNTg2OTcsNTg2OTgsNTg2OTksNTg3MDAsNTg3MDEsNTg3MDIsNTg3MDMsNTg3MDQsNTg3MDUsNTg3MDYsNTg3MDcsNTg3MDgsNTg3MDksNTg3MTAsNTg3MTEsNTg3MTIsNTg3MTMsNTg3MTQsNTg3MTUsNTg3MTYsNTg3MTcsNTg3MTgsNTg3MTksNTg3MjAsNTg3MjEsNTg3MjIsNTg3MjMsNTg3MjQsNTg3MjUsNTg3MjYsNTg3MjcsNTg3MjgsNTg3MjksNTg3MzAsNTg3MzEsNTg3MzIsNTg3MzMsNTg3MzQsNTg3MzUsNTg3MzYsNTg3MzcsNTg3MzgsNTg3MzksNTg3NDAsNTg3NDEsNTg3NDIsNTg3NDMsNTg3NDQsNTg3NDUsNTg3NDYsNTg3NDcsNTg3NDgsNTg3NDksNTg3NTAsNTg3NTEsNTg3NTIsNTg3NTMsNTg3NTQsNTg3NTUsNTg3NTYsNTg3NTcsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw1OTIzOCw1OTIzOSw1OTI0MCw1OTI0MSw1OTI0Miw1OTI0Myw5MzUyLDkzNTMsOTM1NCw5MzU1LDkzNTYsOTM1Nyw5MzU4LDkzNTksOTM2MCw5MzYxLDkzNjIsOTM2Myw5MzY0LDkzNjUsOTM2Niw5MzY3LDkzNjgsOTM2OSw5MzcwLDkzNzEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw5MzQyLDkzNDMsOTM0NCw5MzQ1LDkzNDYsOTM0Nyw5MzQ4LDkzNDksOTM1MCw5MzUxLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsODM2NCw1OTI0NSwxMjgzMiwxMjgzMywxMjgzNCwxMjgzNSwxMjgzNiwxMjgzNywxMjgzOCwxMjgzOSwxMjg0MCwxMjg0MSw1OTI0Niw1OTI0Nyw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDg1NTQsODU1NSw1OTI0OCw1OTI0OSw1ODc1OCw1ODc1OSw1ODc2MCw1ODc2MSw1ODc2Miw1ODc2Myw1ODc2NCw1ODc2NSw1ODc2Niw1ODc2Nyw1ODc2OCw1ODc2OSw1ODc3MCw1ODc3MSw1ODc3Miw1ODc3Myw1ODc3NCw1ODc3NSw1ODc3Niw1ODc3Nyw1ODc3OCw1ODc3OSw1ODc4MCw1ODc4MSw1ODc4Miw1ODc4Myw1ODc4NCw1ODc4NSw1ODc4Niw1ODc4Nyw1ODc4OCw1ODc4OSw1ODc5MCw1ODc5MSw1ODc5Miw1ODc5Myw1ODc5NCw1ODc5NSw1ODc5Niw1ODc5Nyw1ODc5OCw1ODc5OSw1ODgwMCw1ODgwMSw1ODgwMiw1ODgwMyw1ODgwNCw1ODgwNSw1ODgwNiw1ODgwNyw1ODgwOCw1ODgwOSw1ODgxMCw1ODgxMSw1ODgxMiw1ODgxMyw1ODgxNCw1ODgxNSw1ODgxNiw1ODgxNyw1ODgxOCw1ODgxOSw1ODgyMCw1ODgyMSw1ODgyMiw1ODgyMyw1ODgyNCw1ODgyNSw1ODgyNiw1ODgyNyw1ODgyOCw1ODgyOSw1ODgzMCw1ODgzMSw1ODgzMiw1ODgzMyw1ODgzNCw1ODgzNSw1ODgzNiw1ODgzNyw1ODgzOCw1ODgzOSw1ODg0MCw1ODg0MSw1ODg0Miw1ODg0Myw1ODg0NCw1ODg0NSw1ODg0Niw1ODg0Nyw1ODg0OCw1ODg0OSw1ODg1MCw1ODg1MSw1ODg1MiwxMjI4OCw2NTI4MSw2NTI4Miw2NTI4Myw2NTUwOSw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTM0MCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1ODg1NCw1ODg1NSw1ODg1Niw1ODg1Nyw1ODg1OCw1ODg1OSw1ODg2MCw1ODg2MSw1ODg2Miw1ODg2Myw1ODg2NCw1ODg2NSw1ODg2Niw1ODg2Nyw1ODg2OCw1ODg2OSw1ODg3MCw1ODg3MSw1ODg3Miw1ODg3Myw1ODg3NCw1ODg3NSw1ODg3Niw1ODg3Nyw1ODg3OCw1ODg3OSw1ODg4MCw1ODg4MSw1ODg4Miw1ODg4Myw1ODg4NCw1ODg4NSw1ODg4Niw1ODg4Nyw1ODg4OCw1ODg4OSw1ODg5MCw1ODg5MSw1ODg5Miw1ODg5Myw1ODg5NCw1ODg5NSw1ODg5Niw1ODg5Nyw1ODg5OCw1ODg5OSw1ODkwMCw1ODkwMSw1ODkwMiw1ODkwMyw1ODkwNCw1ODkwNSw1ODkwNiw1ODkwNyw1ODkwOCw1ODkwOSw1ODkxMCw1ODkxMSw1ODkxMiw1ODkxMyw1ODkxNCw1ODkxNSw1ODkxNiw1ODkxNyw1ODkxOCw1ODkxOSw1ODkyMCw1ODkyMSw1ODkyMiw1ODkyMyw1ODkyNCw1ODkyNSw1ODkyNiw1ODkyNyw1ODkyOCw1ODkyOSw1ODkzMCw1ODkzMSw1ODkzMiw1ODkzMyw1ODkzNCw1ODkzNSw1ODkzNiw1ODkzNyw1ODkzOCw1ODkzOSw1ODk0MCw1ODk0MSw1ODk0Miw1ODk0Myw1ODk0NCw1ODk0NSw1ODk0Niw1ODk0Nyw1ODk0OCw1ODk0OSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSw1OTI1MCw1OTI1MSw1OTI1Miw1OTI1Myw1OTI1NCw1OTI1NSw1OTI1Niw1OTI1Nyw1OTI1OCw1OTI1OSw1OTI2MCw1ODk1MCw1ODk1MSw1ODk1Miw1ODk1Myw1ODk1NCw1ODk1NSw1ODk1Niw1ODk1Nyw1ODk1OCw1ODk1OSw1ODk2MCw1ODk2MSw1ODk2Miw1ODk2Myw1ODk2NCw1ODk2NSw1ODk2Niw1ODk2Nyw1ODk2OCw1ODk2OSw1ODk3MCw1ODk3MSw1ODk3Miw1ODk3Myw1ODk3NCw1ODk3NSw1ODk3Niw1ODk3Nyw1ODk3OCw1ODk3OSw1ODk4MCw1ODk4MSw1ODk4Miw1ODk4Myw1ODk4NCw1ODk4NSw1ODk4Niw1ODk4Nyw1ODk4OCw1ODk4OSw1ODk5MCw1ODk5MSw1ODk5Miw1ODk5Myw1ODk5NCw1ODk5NSw1ODk5Niw1ODk5Nyw1ODk5OCw1ODk5OSw1OTAwMCw1OTAwMSw1OTAwMiw1OTAwMyw1OTAwNCw1OTAwNSw1OTAwNiw1OTAwNyw1OTAwOCw1OTAwOSw1OTAxMCw1OTAxMSw1OTAxMiw1OTAxMyw1OTAxNCw1OTAxNSw1OTAxNiw1OTAxNyw1OTAxOCw1OTAxOSw1OTAyMCw1OTAyMSw1OTAyMiw1OTAyMyw1OTAyNCw1OTAyNSw1OTAyNiw1OTAyNyw1OTAyOCw1OTAyOSw1OTAzMCw1OTAzMSw1OTAzMiw1OTAzMyw1OTAzNCw1OTAzNSw1OTAzNiw1OTAzNyw1OTAzOCw1OTAzOSw1OTA0MCw1OTA0MSw1OTA0Miw1OTA0Myw1OTA0NCw1OTA0NSwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCw1OTI2MSw1OTI2Miw1OTI2Myw1OTI2NCw1OTI2NSw1OTI2Niw1OTI2Nyw1OTI2OCw1OTA0Niw1OTA0Nyw1OTA0OCw1OTA0OSw1OTA1MCw1OTA1MSw1OTA1Miw1OTA1Myw1OTA1NCw1OTA1NSw1OTA1Niw1OTA1Nyw1OTA1OCw1OTA1OSw1OTA2MCw1OTA2MSw1OTA2Miw1OTA2Myw1OTA2NCw1OTA2NSw1OTA2Niw1OTA2Nyw1OTA2OCw1OTA2OSw1OTA3MCw1OTA3MSw1OTA3Miw1OTA3Myw1OTA3NCw1OTA3NSw1OTA3Niw1OTA3Nyw1OTA3OCw1OTA3OSw1OTA4MCw1OTA4MSw1OTA4Miw1OTA4Myw1OTA4NCw1OTA4NSw1OTA4Niw1OTA4Nyw1OTA4OCw1OTA4OSw1OTA5MCw1OTA5MSw1OTA5Miw1OTA5Myw1OTA5NCw1OTA5NSw1OTA5Niw1OTA5Nyw1OTA5OCw1OTA5OSw1OTEwMCw1OTEwMSw1OTEwMiw1OTEwMyw1OTEwNCw1OTEwNSw1OTEwNiw1OTEwNyw1OTEwOCw1OTEwOSw1OTExMCw1OTExMSw1OTExMiw1OTExMyw1OTExNCw1OTExNSw1OTExNiw1OTExNyw1OTExOCw1OTExOSw1OTEyMCw1OTEyMSw1OTEyMiw1OTEyMyw1OTEyNCw1OTEyNSw1OTEyNiw1OTEyNyw1OTEyOCw1OTEyOSw1OTEzMCw1OTEzMSw1OTEzMiw1OTEzMyw1OTEzNCw1OTEzNSw1OTEzNiw1OTEzNyw1OTEzOCw1OTEzOSw1OTE0MCw1OTE0MSw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw1OTI2OSw1OTI3MCw1OTI3MSw1OTI3Miw1OTI3Myw1OTI3NCw1OTI3NSw1OTI3Niw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw1OTI3Nyw1OTI3OCw1OTI3OSw1OTI4MCw1OTI4MSw1OTI4Miw1OTI4Myw2NTA3Nyw2NTA3OCw2NTA4MSw2NTA4Miw2NTA4Nyw2NTA4OCw2NTA4NSw2NTA4Niw2NTA4OSw2NTA5MCw2NTA5MSw2NTA5Miw1OTI4NCw1OTI4NSw2NTA4Myw2NTA4NCw2NTA3OSw2NTA4MCw2NTA3Myw1OTI4Niw2NTA3NSw2NTA3Niw1OTI4Nyw1OTI4OCw1OTI4OSw1OTI5MCw1OTI5MSw1OTI5Miw1OTI5Myw1OTI5NCw1OTI5NSw1OTE0Miw1OTE0Myw1OTE0NCw1OTE0NSw1OTE0Niw1OTE0Nyw1OTE0OCw1OTE0OSw1OTE1MCw1OTE1MSw1OTE1Miw1OTE1Myw1OTE1NCw1OTE1NSw1OTE1Niw1OTE1Nyw1OTE1OCw1OTE1OSw1OTE2MCw1OTE2MSw1OTE2Miw1OTE2Myw1OTE2NCw1OTE2NSw1OTE2Niw1OTE2Nyw1OTE2OCw1OTE2OSw1OTE3MCw1OTE3MSw1OTE3Miw1OTE3Myw1OTE3NCw1OTE3NSw1OTE3Niw1OTE3Nyw1OTE3OCw1OTE3OSw1OTE4MCw1OTE4MSw1OTE4Miw1OTE4Myw1OTE4NCw1OTE4NSw1OTE4Niw1OTE4Nyw1OTE4OCw1OTE4OSw1OTE5MCw1OTE5MSw1OTE5Miw1OTE5Myw1OTE5NCw1OTE5NSw1OTE5Niw1OTE5Nyw1OTE5OCw1OTE5OSw1OTIwMCw1OTIwMSw1OTIwMiw1OTIwMyw1OTIwNCw1OTIwNSw1OTIwNiw1OTIwNyw1OTIwOCw1OTIwOSw1OTIxMCw1OTIxMSw1OTIxMiw1OTIxMyw1OTIxNCw1OTIxNSw1OTIxNiw1OTIxNyw1OTIxOCw1OTIxOSw1OTIyMCw1OTIyMSw1OTIyMiw1OTIyMyw1OTIyNCw1OTIyNSw1OTIyNiw1OTIyNyw1OTIyOCw1OTIyOSw1OTIzMCw1OTIzMSw1OTIzMiw1OTIzMyw1OTIzNCw1OTIzNSw1OTIzNiw1OTIzNywxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSw1OTI5Niw1OTI5Nyw1OTI5OCw1OTI5OSw1OTMwMCw1OTMwMSw1OTMwMiw1OTMwMyw1OTMwNCw1OTMwNSw1OTMwNiw1OTMwNyw1OTMwOCw1OTMwOSw1OTMxMCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw1OTMxMSw1OTMxMiw1OTMxMyw1OTMxNCw1OTMxNSw1OTMxNiw1OTMxNyw1OTMxOCw1OTMxOSw1OTMyMCw1OTMyMSw1OTMyMiw1OTMyMyw3MTQsNzE1LDcyOSw4MjExLDgyMTMsODIyOSw4MjQ1LDg0NTMsODQ1Nyw4NTk4LDg1OTksODYwMCw4NjAxLDg3MjUsODczNSw4NzM5LDg3ODYsODgwNiw4ODA3LDg4OTUsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk1ODEsOTU4Miw5NTgzLDk1ODQsOTU4NSw5NTg2LDk1ODcsOTYwMSw5NjAyLDk2MDMsOTYwNCw5NjA1LDk2MDYsOTYwNyw5NjA4LDk2MDksOTYxMCw5NjExLDk2MTIsOTYxMyw5NjE0LDk2MTUsOTYxOSw5NjIwLDk2MjEsOTY2MCw5NjYxLDk2OTgsOTY5OSw5NzAwLDk3MDEsOTczNyw4ODUzLDEyMzA2LDEyMzE3LDEyMzE4LDU5MzI0LDU5MzI1LDU5MzI2LDU5MzI3LDU5MzI4LDU5MzI5LDU5MzMwLDU5MzMxLDU5MzMyLDU5MzMzLDU5MzM0LDI1NywyMjUsNDYyLDIyNCwyNzUsMjMzLDI4MywyMzIsMjk5LDIzNyw0NjQsMjM2LDMzMywyNDMsNDY2LDI0MiwzNjMsMjUwLDQ2OCwyNDksNDcwLDQ3Miw0NzQsNDc2LDI1MiwyMzQsNTkzLDU5MzM1LDMyNCwzMjgsNTA1LDYwOSw1OTMzNyw1OTMzOCw1OTMzOSw1OTM0MCwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw1OTM0MSw1OTM0Miw1OTM0Myw1OTM0NCw1OTM0NSw1OTM0Niw1OTM0Nyw1OTM0OCw1OTM0OSw1OTM1MCw1OTM1MSw1OTM1Miw1OTM1Myw1OTM1NCw1OTM1NSw1OTM1Niw1OTM1Nyw1OTM1OCw1OTM1OSw1OTM2MCw1OTM2MSwxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwxMjk2MywxMzE5OCwxMzE5OSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNywxMzI1MiwxMzI2MiwxMzI2NSwxMzI2NiwxMzI2OSw2NTA3Miw2NTUwNiw2NTUwOCw1OTM2Miw4NDgxLDEyODQ5LDU5MzYzLDgyMDgsNTkzNjQsNTkzNjUsNTkzNjYsMTI1NDAsMTI0NDMsMTI0NDQsMTI1NDEsMTI1NDIsMTIyOTQsMTI0NDUsMTI0NDYsNjUwOTcsNjUwOTgsNjUwOTksNjUxMDAsNjUxMDEsNjUxMDIsNjUxMDMsNjUxMDQsNjUxMDUsNjUxMDYsNjUxMDgsNjUxMDksNjUxMTAsNjUxMTEsNjUxMTMsNjUxMTQsNjUxMTUsNjUxMTYsNjUxMTcsNjUxMTgsNjUxMTksNjUxMjAsNjUxMjEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUxMjgsNjUxMjksNjUxMzAsNjUxMzEsMTIzNTAsMTIyNzIsMTIyNzMsMTIyNzQsMTIyNzUsMTIyNzYsMTIyNzcsMTIyNzgsMTIyNzksMTIyODAsMTIyODEsMTIyODIsMTIyODMsMTIyOTUsNTkzODAsNTkzODEsNTkzODIsNTkzODMsNTkzODQsNTkzODUsNTkzODYsNTkzODcsNTkzODgsNTkzODksNTkzOTAsNTkzOTEsNTkzOTIsOTQ3Miw5NDczLDk0NzQsOTQ3NSw5NDc2LDk0NzcsOTQ3OCw5NDc5LDk0ODAsOTQ4MSw5NDgyLDk0ODMsOTQ4NCw5NDg1LDk0ODYsOTQ4Nyw5NDg4LDk0ODksOTQ5MCw5NDkxLDk0OTIsOTQ5Myw5NDk0LDk0OTUsOTQ5Niw5NDk3LDk0OTgsOTQ5OSw5NTAwLDk1MDEsOTUwMiw5NTAzLDk1MDQsOTUwNSw5NTA2LDk1MDcsOTUwOCw5NTA5LDk1MTAsOTUxMSw5NTEyLDk1MTMsOTUxNCw5NTE1LDk1MTYsOTUxNyw5NTE4LDk1MTksOTUyMCw5NTIxLDk1MjIsOTUyMyw5NTI0LDk1MjUsOTUyNiw5NTI3LDk1MjgsOTUyOSw5NTMwLDk1MzEsOTUzMiw5NTMzLDk1MzQsOTUzNSw5NTM2LDk1MzcsOTUzOCw5NTM5LDk1NDAsOTU0MSw5NTQyLDk1NDMsOTU0NCw5NTQ1LDk1NDYsOTU0Nyw1OTM5Myw1OTM5NCw1OTM5NSw1OTM5Niw1OTM5Nyw1OTM5OCw1OTM5OSw1OTQwMCw1OTQwMSw1OTQwMiw1OTQwMyw1OTQwNCw1OTQwNSw1OTQwNiw1OTQwNywyOTQwNCwyOTQwNSwyOTQwNywyOTQxMCwyOTQxMSwyOTQxMiwyOTQxMywyOTQxNCwyOTQxNSwyOTQxOCwyOTQxOSwyOTQyOSwyOTQzMCwyOTQzMywyOTQzNywyOTQzOCwyOTQzOSwyOTQ0MCwyOTQ0MiwyOTQ0NCwyOTQ0NSwyOTQ0NiwyOTQ0NywyOTQ0OCwyOTQ0OSwyOTQ1MSwyOTQ1MiwyOTQ1MywyOTQ1NSwyOTQ1NiwyOTQ1NywyOTQ1OCwyOTQ2MCwyOTQ2NCwyOTQ2NSwyOTQ2NiwyOTQ3MSwyOTQ3MiwyOTQ3NSwyOTQ3NiwyOTQ3OCwyOTQ3OSwyOTQ4MCwyOTQ4NSwyOTQ4NywyOTQ4OCwyOTQ5MCwyOTQ5MSwyOTQ5MywyOTQ5NCwyOTQ5OCwyOTQ5OSwyOTUwMCwyOTUwMSwyOTUwNCwyOTUwNSwyOTUwNiwyOTUwNywyOTUwOCwyOTUwOSwyOTUxMCwyOTUxMSwyOTUxMiwyOTUxMywyOTUxNCwyOTUxNSwyOTUxNiwyOTUxOCwyOTUxOSwyOTUyMSwyOTUyMywyOTUyNCwyOTUyNSwyOTUyNiwyOTUyOCwyOTUyOSwyOTUzMCwyOTUzMSwyOTUzMiwyOTUzMywyOTUzNCwyOTUzNSwyOTUzNywyOTUzOCwyOTUzOSwyOTU0MCwyOTU0MSwyOTU0MiwyOTU0MywyOTU0NCwyOTU0NSwyOTU0NiwyOTU0NywyOTU1MCwyOTU1MiwyOTU1Myw1NzM0NCw1NzM0NSw1NzM0Niw1NzM0Nyw1NzM0OCw1NzM0OSw1NzM1MCw1NzM1MSw1NzM1Miw1NzM1Myw1NzM1NCw1NzM1NSw1NzM1Niw1NzM1Nyw1NzM1OCw1NzM1OSw1NzM2MCw1NzM2MSw1NzM2Miw1NzM2Myw1NzM2NCw1NzM2NSw1NzM2Niw1NzM2Nyw1NzM2OCw1NzM2OSw1NzM3MCw1NzM3MSw1NzM3Miw1NzM3Myw1NzM3NCw1NzM3NSw1NzM3Niw1NzM3Nyw1NzM3OCw1NzM3OSw1NzM4MCw1NzM4MSw1NzM4Miw1NzM4Myw1NzM4NCw1NzM4NSw1NzM4Niw1NzM4Nyw1NzM4OCw1NzM4OSw1NzM5MCw1NzM5MSw1NzM5Miw1NzM5Myw1NzM5NCw1NzM5NSw1NzM5Niw1NzM5Nyw1NzM5OCw1NzM5OSw1NzQwMCw1NzQwMSw1NzQwMiw1NzQwMyw1NzQwNCw1NzQwNSw1NzQwNiw1NzQwNyw1NzQwOCw1NzQwOSw1NzQxMCw1NzQxMSw1NzQxMiw1NzQxMyw1NzQxNCw1NzQxNSw1NzQxNiw1NzQxNyw1NzQxOCw1NzQxOSw1NzQyMCw1NzQyMSw1NzQyMiw1NzQyMyw1NzQyNCw1NzQyNSw1NzQyNiw1NzQyNyw1NzQyOCw1NzQyOSw1NzQzMCw1NzQzMSw1NzQzMiw1NzQzMyw1NzQzNCw1NzQzNSw1NzQzNiw1NzQzNywyOTU1NCwyOTU1NSwyOTU1NiwyOTU1NywyOTU1OCwyOTU1OSwyOTU2MCwyOTU2MSwyOTU2MiwyOTU2MywyOTU2NCwyOTU2NSwyOTU2NywyOTU2OCwyOTU2OSwyOTU3MCwyOTU3MSwyOTU3MywyOTU3NCwyOTU3NiwyOTU3OCwyOTU4MCwyOTU4MSwyOTU4MywyOTU4NCwyOTU4NiwyOTU4NywyOTU4OCwyOTU4OSwyOTU5MSwyOTU5MiwyOTU5MywyOTU5NCwyOTU5NiwyOTU5NywyOTU5OCwyOTYwMCwyOTYwMSwyOTYwMywyOTYwNCwyOTYwNSwyOTYwNiwyOTYwNywyOTYwOCwyOTYxMCwyOTYxMiwyOTYxMywyOTYxNywyOTYyMCwyOTYyMSwyOTYyMiwyOTYyNCwyOTYyNSwyOTYyOCwyOTYyOSwyOTYzMCwyOTYzMSwyOTYzMywyOTYzNSwyOTYzNiwyOTYzNywyOTYzOCwyOTYzOSwyOTY0MywyOTY0NCwyOTY0NiwyOTY1MCwyOTY1MSwyOTY1MiwyOTY1MywyOTY1NCwyOTY1NSwyOTY1NiwyOTY1OCwyOTY1OSwyOTY2MCwyOTY2MSwyOTY2MywyOTY2NSwyOTY2NiwyOTY2NywyOTY2OCwyOTY3MCwyOTY3MiwyOTY3NCwyOTY3NSwyOTY3NiwyOTY3OCwyOTY3OSwyOTY4MCwyOTY4MSwyOTY4MywyOTY4NCwyOTY4NSwyOTY4NiwyOTY4Nyw1NzQzOCw1NzQzOSw1NzQ0MCw1NzQ0MSw1NzQ0Miw1NzQ0Myw1NzQ0NCw1NzQ0NSw1NzQ0Niw1NzQ0Nyw1NzQ0OCw1NzQ0OSw1NzQ1MCw1NzQ1MSw1NzQ1Miw1NzQ1Myw1NzQ1NCw1NzQ1NSw1NzQ1Niw1NzQ1Nyw1NzQ1OCw1NzQ1OSw1NzQ2MCw1NzQ2MSw1NzQ2Miw1NzQ2Myw1NzQ2NCw1NzQ2NSw1NzQ2Niw1NzQ2Nyw1NzQ2OCw1NzQ2OSw1NzQ3MCw1NzQ3MSw1NzQ3Miw1NzQ3Myw1NzQ3NCw1NzQ3NSw1NzQ3Niw1NzQ3Nyw1NzQ3OCw1NzQ3OSw1NzQ4MCw1NzQ4MSw1NzQ4Miw1NzQ4Myw1NzQ4NCw1NzQ4NSw1NzQ4Niw1NzQ4Nyw1NzQ4OCw1NzQ4OSw1NzQ5MCw1NzQ5MSw1NzQ5Miw1NzQ5Myw1NzQ5NCw1NzQ5NSw1NzQ5Niw1NzQ5Nyw1NzQ5OCw1NzQ5OSw1NzUwMCw1NzUwMSw1NzUwMiw1NzUwMyw1NzUwNCw1NzUwNSw1NzUwNiw1NzUwNyw1NzUwOCw1NzUwOSw1NzUxMCw1NzUxMSw1NzUxMiw1NzUxMyw1NzUxNCw1NzUxNSw1NzUxNiw1NzUxNyw1NzUxOCw1NzUxOSw1NzUyMCw1NzUyMSw1NzUyMiw1NzUyMyw1NzUyNCw1NzUyNSw1NzUyNiw1NzUyNyw1NzUyOCw1NzUyOSw1NzUzMCw1NzUzMSwyOTY4OCwyOTY4OSwyOTY5MCwyOTY5MSwyOTY5MiwyOTY5MywyOTY5NCwyOTY5NSwyOTY5NiwyOTY5NywyOTY5OCwyOTcwMCwyOTcwMywyOTcwNCwyOTcwNywyOTcwOCwyOTcwOSwyOTcxMCwyOTcxMywyOTcxNCwyOTcxNSwyOTcxNiwyOTcxNywyOTcxOCwyOTcxOSwyOTcyMCwyOTcyMSwyOTcyNCwyOTcyNSwyOTcyNiwyOTcyNywyOTcyOCwyOTcyOSwyOTczMSwyOTczMiwyOTczNSwyOTczNywyOTczOSwyOTc0MSwyOTc0MywyOTc0NSwyOTc0NiwyOTc1MSwyOTc1MiwyOTc1MywyOTc1NCwyOTc1NSwyOTc1NywyOTc1OCwyOTc1OSwyOTc2MCwyOTc2MiwyOTc2MywyOTc2NCwyOTc2NSwyOTc2NiwyOTc2NywyOTc2OCwyOTc2OSwyOTc3MCwyOTc3MSwyOTc3MiwyOTc3MywyOTc3NCwyOTc3NSwyOTc3NiwyOTc3NywyOTc3OCwyOTc3OSwyOTc4MCwyOTc4MiwyOTc4NCwyOTc4OSwyOTc5MiwyOTc5MywyOTc5NCwyOTc5NSwyOTc5NiwyOTc5NywyOTc5OCwyOTc5OSwyOTgwMCwyOTgwMSwyOTgwMiwyOTgwMywyOTgwNCwyOTgwNiwyOTgwNywyOTgwOSwyOTgxMCwyOTgxMSwyOTgxMiwyOTgxMywyOTgxNiwyOTgxNywyOTgxOCw1NzUzMiw1NzUzMyw1NzUzNCw1NzUzNSw1NzUzNiw1NzUzNyw1NzUzOCw1NzUzOSw1NzU0MCw1NzU0MSw1NzU0Miw1NzU0Myw1NzU0NCw1NzU0NSw1NzU0Niw1NzU0Nyw1NzU0OCw1NzU0OSw1NzU1MCw1NzU1MSw1NzU1Miw1NzU1Myw1NzU1NCw1NzU1NSw1NzU1Niw1NzU1Nyw1NzU1OCw1NzU1OSw1NzU2MCw1NzU2MSw1NzU2Miw1NzU2Myw1NzU2NCw1NzU2NSw1NzU2Niw1NzU2Nyw1NzU2OCw1NzU2OSw1NzU3MCw1NzU3MSw1NzU3Miw1NzU3Myw1NzU3NCw1NzU3NSw1NzU3Niw1NzU3Nyw1NzU3OCw1NzU3OSw1NzU4MCw1NzU4MSw1NzU4Miw1NzU4Myw1NzU4NCw1NzU4NSw1NzU4Niw1NzU4Nyw1NzU4OCw1NzU4OSw1NzU5MCw1NzU5MSw1NzU5Miw1NzU5Myw1NzU5NCw1NzU5NSw1NzU5Niw1NzU5Nyw1NzU5OCw1NzU5OSw1NzYwMCw1NzYwMSw1NzYwMiw1NzYwMyw1NzYwNCw1NzYwNSw1NzYwNiw1NzYwNyw1NzYwOCw1NzYwOSw1NzYxMCw1NzYxMSw1NzYxMiw1NzYxMyw1NzYxNCw1NzYxNSw1NzYxNiw1NzYxNyw1NzYxOCw1NzYxOSw1NzYyMCw1NzYyMSw1NzYyMiw1NzYyMyw1NzYyNCw1NzYyNSwyOTgxOSwyOTgyMCwyOTgyMSwyOTgyMywyOTgyNiwyOTgyOCwyOTgyOSwyOTgzMCwyOTgzMiwyOTgzMywyOTgzNCwyOTgzNiwyOTgzNywyOTgzOSwyOTg0MSwyOTg0MiwyOTg0MywyOTg0NCwyOTg0NSwyOTg0NiwyOTg0NywyOTg0OCwyOTg0OSwyOTg1MCwyOTg1MSwyOTg1MywyOTg1NSwyOTg1NiwyOTg1NywyOTg1OCwyOTg1OSwyOTg2MCwyOTg2MSwyOTg2MiwyOTg2NiwyOTg2NywyOTg2OCwyOTg2OSwyOTg3MCwyOTg3MSwyOTg3MiwyOTg3MywyOTg3NCwyOTg3NSwyOTg3NiwyOTg3NywyOTg3OCwyOTg3OSwyOTg4MCwyOTg4MSwyOTg4MywyOTg4NCwyOTg4NSwyOTg4NiwyOTg4NywyOTg4OCwyOTg4OSwyOTg5MCwyOTg5MSwyOTg5MiwyOTg5MywyOTg5NCwyOTg5NSwyOTg5NiwyOTg5NywyOTg5OCwyOTg5OSwyOTkwMCwyOTkwMSwyOTkwMiwyOTkwMywyOTkwNCwyOTkwNSwyOTkwNywyOTkwOCwyOTkwOSwyOTkxMCwyOTkxMSwyOTkxMiwyOTkxMywyOTkxNCwyOTkxNSwyOTkxNywyOTkxOSwyOTkyMSwyOTkyNSwyOTkyNywyOTkyOCwyOTkyOSwyOTkzMCwyOTkzMSwyOTkzMiwyOTkzMywyOTkzNiwyOTkzNywyOTkzOCw1NzYyNiw1NzYyNyw1NzYyOCw1NzYyOSw1NzYzMCw1NzYzMSw1NzYzMiw1NzYzMyw1NzYzNCw1NzYzNSw1NzYzNiw1NzYzNyw1NzYzOCw1NzYzOSw1NzY0MCw1NzY0MSw1NzY0Miw1NzY0Myw1NzY0NCw1NzY0NSw1NzY0Niw1NzY0Nyw1NzY0OCw1NzY0OSw1NzY1MCw1NzY1MSw1NzY1Miw1NzY1Myw1NzY1NCw1NzY1NSw1NzY1Niw1NzY1Nyw1NzY1OCw1NzY1OSw1NzY2MCw1NzY2MSw1NzY2Miw1NzY2Myw1NzY2NCw1NzY2NSw1NzY2Niw1NzY2Nyw1NzY2OCw1NzY2OSw1NzY3MCw1NzY3MSw1NzY3Miw1NzY3Myw1NzY3NCw1NzY3NSw1NzY3Niw1NzY3Nyw1NzY3OCw1NzY3OSw1NzY4MCw1NzY4MSw1NzY4Miw1NzY4Myw1NzY4NCw1NzY4NSw1NzY4Niw1NzY4Nyw1NzY4OCw1NzY4OSw1NzY5MCw1NzY5MSw1NzY5Miw1NzY5Myw1NzY5NCw1NzY5NSw1NzY5Niw1NzY5Nyw1NzY5OCw1NzY5OSw1NzcwMCw1NzcwMSw1NzcwMiw1NzcwMyw1NzcwNCw1NzcwNSw1NzcwNiw1NzcwNyw1NzcwOCw1NzcwOSw1NzcxMCw1NzcxMSw1NzcxMiw1NzcxMyw1NzcxNCw1NzcxNSw1NzcxNiw1NzcxNyw1NzcxOCw1NzcxOSwyOTkzOSwyOTk0MSwyOTk0NCwyOTk0NSwyOTk0NiwyOTk0NywyOTk0OCwyOTk0OSwyOTk1MCwyOTk1MiwyOTk1MywyOTk1NCwyOTk1NSwyOTk1NywyOTk1OCwyOTk1OSwyOTk2MCwyOTk2MSwyOTk2MiwyOTk2MywyOTk2NCwyOTk2NiwyOTk2OCwyOTk3MCwyOTk3MiwyOTk3MywyOTk3NCwyOTk3NSwyOTk3OSwyOTk4MSwyOTk4MiwyOTk4NCwyOTk4NSwyOTk4NiwyOTk4NywyOTk4OCwyOTk5MCwyOTk5MSwyOTk5NCwyOTk5OCwzMDAwNCwzMDAwNiwzMDAwOSwzMDAxMiwzMDAxMywzMDAxNSwzMDAxNywzMDAxOCwzMDAxOSwzMDAyMCwzMDAyMiwzMDAyMywzMDAyNSwzMDAyNiwzMDAyOSwzMDAzMiwzMDAzMywzMDAzNCwzMDAzNSwzMDAzNywzMDAzOCwzMDAzOSwzMDA0MCwzMDA0NSwzMDA0NiwzMDA0NywzMDA0OCwzMDA0OSwzMDA1MCwzMDA1MSwzMDA1MiwzMDA1NSwzMDA1NiwzMDA1NywzMDA1OSwzMDA2MCwzMDA2MSwzMDA2MiwzMDA2MywzMDA2NCwzMDA2NSwzMDA2NywzMDA2OSwzMDA3MCwzMDA3MSwzMDA3NCwzMDA3NSwzMDA3NiwzMDA3NywzMDA3OCwzMDA4MCwzMDA4MSwzMDA4MiwzMDA4NCwzMDA4NSwzMDA4Nyw1NzcyMCw1NzcyMSw1NzcyMiw1NzcyMyw1NzcyNCw1NzcyNSw1NzcyNiw1NzcyNyw1NzcyOCw1NzcyOSw1NzczMCw1NzczMSw1NzczMiw1NzczMyw1NzczNCw1NzczNSw1NzczNiw1NzczNyw1NzczOCw1NzczOSw1Nzc0MCw1Nzc0MSw1Nzc0Miw1Nzc0Myw1Nzc0NCw1Nzc0NSw1Nzc0Niw1Nzc0Nyw1Nzc0OCw1Nzc0OSw1Nzc1MCw1Nzc1MSw1Nzc1Miw1Nzc1Myw1Nzc1NCw1Nzc1NSw1Nzc1Niw1Nzc1Nyw1Nzc1OCw1Nzc1OSw1Nzc2MCw1Nzc2MSw1Nzc2Miw1Nzc2Myw1Nzc2NCw1Nzc2NSw1Nzc2Niw1Nzc2Nyw1Nzc2OCw1Nzc2OSw1Nzc3MCw1Nzc3MSw1Nzc3Miw1Nzc3Myw1Nzc3NCw1Nzc3NSw1Nzc3Niw1Nzc3Nyw1Nzc3OCw1Nzc3OSw1Nzc4MCw1Nzc4MSw1Nzc4Miw1Nzc4Myw1Nzc4NCw1Nzc4NSw1Nzc4Niw1Nzc4Nyw1Nzc4OCw1Nzc4OSw1Nzc5MCw1Nzc5MSw1Nzc5Miw1Nzc5Myw1Nzc5NCw1Nzc5NSw1Nzc5Niw1Nzc5Nyw1Nzc5OCw1Nzc5OSw1NzgwMCw1NzgwMSw1NzgwMiw1NzgwMyw1NzgwNCw1NzgwNSw1NzgwNiw1NzgwNyw1NzgwOCw1NzgwOSw1NzgxMCw1NzgxMSw1NzgxMiw1NzgxMywzMDA4OCwzMDA4OSwzMDA5MCwzMDA5MiwzMDA5MywzMDA5NCwzMDA5NiwzMDA5OSwzMDEwMSwzMDEwNCwzMDEwNywzMDEwOCwzMDExMCwzMDExNCwzMDExOCwzMDExOSwzMDEyMCwzMDEyMSwzMDEyMiwzMDEyNSwzMDEzNCwzMDEzNSwzMDEzOCwzMDEzOSwzMDE0MywzMDE0NCwzMDE0NSwzMDE1MCwzMDE1NSwzMDE1NiwzMDE1OCwzMDE1OSwzMDE2MCwzMDE2MSwzMDE2MywzMDE2NywzMDE2OSwzMDE3MCwzMDE3MiwzMDE3MywzMDE3NSwzMDE3NiwzMDE3NywzMDE4MSwzMDE4NSwzMDE4OCwzMDE4OSwzMDE5MCwzMDE5MSwzMDE5NCwzMDE5NSwzMDE5NywzMDE5OCwzMDE5OSwzMDIwMCwzMDIwMiwzMDIwMywzMDIwNSwzMDIwNiwzMDIxMCwzMDIxMiwzMDIxNCwzMDIxNSwzMDIxNiwzMDIxNywzMDIxOSwzMDIyMSwzMDIyMiwzMDIyMywzMDIyNSwzMDIyNiwzMDIyNywzMDIyOCwzMDIzMCwzMDIzNCwzMDIzNiwzMDIzNywzMDIzOCwzMDI0MSwzMDI0MywzMDI0NywzMDI0OCwzMDI1MiwzMDI1NCwzMDI1NSwzMDI1NywzMDI1OCwzMDI2MiwzMDI2MywzMDI2NSwzMDI2NiwzMDI2NywzMDI2OSwzMDI3MywzMDI3NCwzMDI3Niw1NzgxNCw1NzgxNSw1NzgxNiw1NzgxNyw1NzgxOCw1NzgxOSw1NzgyMCw1NzgyMSw1NzgyMiw1NzgyMyw1NzgyNCw1NzgyNSw1NzgyNiw1NzgyNyw1NzgyOCw1NzgyOSw1NzgzMCw1NzgzMSw1NzgzMiw1NzgzMyw1NzgzNCw1NzgzNSw1NzgzNiw1NzgzNyw1NzgzOCw1NzgzOSw1Nzg0MCw1Nzg0MSw1Nzg0Miw1Nzg0Myw1Nzg0NCw1Nzg0NSw1Nzg0Niw1Nzg0Nyw1Nzg0OCw1Nzg0OSw1Nzg1MCw1Nzg1MSw1Nzg1Miw1Nzg1Myw1Nzg1NCw1Nzg1NSw1Nzg1Niw1Nzg1Nyw1Nzg1OCw1Nzg1OSw1Nzg2MCw1Nzg2MSw1Nzg2Miw1Nzg2Myw1Nzg2NCw1Nzg2NSw1Nzg2Niw1Nzg2Nyw1Nzg2OCw1Nzg2OSw1Nzg3MCw1Nzg3MSw1Nzg3Miw1Nzg3Myw1Nzg3NCw1Nzg3NSw1Nzg3Niw1Nzg3Nyw1Nzg3OCw1Nzg3OSw1Nzg4MCw1Nzg4MSw1Nzg4Miw1Nzg4Myw1Nzg4NCw1Nzg4NSw1Nzg4Niw1Nzg4Nyw1Nzg4OCw1Nzg4OSw1Nzg5MCw1Nzg5MSw1Nzg5Miw1Nzg5Myw1Nzg5NCw1Nzg5NSw1Nzg5Niw1Nzg5Nyw1Nzg5OCw1Nzg5OSw1NzkwMCw1NzkwMSw1NzkwMiw1NzkwMyw1NzkwNCw1NzkwNSw1NzkwNiw1NzkwNywzMDI3NywzMDI3OCwzMDI3OSwzMDI4MCwzMDI4MSwzMDI4MiwzMDI4MywzMDI4NiwzMDI4NywzMDI4OCwzMDI4OSwzMDI5MCwzMDI5MSwzMDI5MywzMDI5NSwzMDI5NiwzMDI5NywzMDI5OCwzMDI5OSwzMDMwMSwzMDMwMywzMDMwNCwzMDMwNSwzMDMwNiwzMDMwOCwzMDMwOSwzMDMxMCwzMDMxMSwzMDMxMiwzMDMxMywzMDMxNCwzMDMxNiwzMDMxNywzMDMxOCwzMDMyMCwzMDMyMSwzMDMyMiwzMDMyMywzMDMyNCwzMDMyNSwzMDMyNiwzMDMyNywzMDMyOSwzMDMzMCwzMDMzMiwzMDMzNSwzMDMzNiwzMDMzNywzMDMzOSwzMDM0MSwzMDM0NSwzMDM0NiwzMDM0OCwzMDM0OSwzMDM1MSwzMDM1MiwzMDM1NCwzMDM1NiwzMDM1NywzMDM1OSwzMDM2MCwzMDM2MiwzMDM2MywzMDM2NCwzMDM2NSwzMDM2NiwzMDM2NywzMDM2OCwzMDM2OSwzMDM3MCwzMDM3MSwzMDM3MywzMDM3NCwzMDM3NSwzMDM3NiwzMDM3NywzMDM3OCwzMDM3OSwzMDM4MCwzMDM4MSwzMDM4MywzMDM4NCwzMDM4NywzMDM4OSwzMDM5MCwzMDM5MSwzMDM5MiwzMDM5MywzMDM5NCwzMDM5NSwzMDM5NiwzMDM5NywzMDM5OCwzMDQwMCwzMDQwMSwzMDQwMywyMTgzNCwzODQ2MywyMjQ2NywyNTM4NCwyMTcxMCwyMTc2OSwyMTY5NiwzMDM1MywzMDI4NCwzNDEwOCwzMDcwMiwzMzQwNiwzMDg2MSwyOTIzMywzODU1MiwzODc5NywyNzY4OCwyMzQzMywyMDQ3NCwyNTM1MywyNjI2MywyMzczNiwzMzAxOCwyNjY5NiwzMjk0MiwyNjExNCwzMDQxNCwyMDk4NSwyNTk0MiwyOTEwMCwzMjc1MywzNDk0OCwyMDY1OCwyMjg4NSwyNTAzNCwyODU5NSwzMzQ1MywyNTQyMCwyNTE3MCwyMTQ4NSwyMTU0MywzMTQ5NCwyMDg0MywzMDExNiwyNDA1MiwyNTMwMCwzNjI5OSwzODc3NCwyNTIyNiwzMjc5MywyMjM2NSwzODcxMiwzMjYxMCwyOTI0MCwzMDMzMywyNjU3NSwzMDMzNCwyNTY3MCwyMDMzNiwzNjEzMywyNTMwOCwzMTI1NSwyNjAwMSwyOTY3NywyNTY0NCwyNTIwMywzMzMyNCwzOTA0MSwyNjQ5NSwyOTI1NiwyNTE5OCwyNTI5MiwyMDI3NiwyOTkyMywyMTMyMiwyMTE1MCwzMjQ1OCwzNzAzMCwyNDExMCwyNjc1OCwyNzAzNiwzMzE1MiwzMjQ2NSwyNjgzNCwzMDkxNywzNDQ0NCwzODIyNSwyMDYyMSwzNTg3NiwzMzUwMiwzMjk5MCwyMTI1MywzNTA5MCwyMTA5MywzMDQwNCwzMDQwNywzMDQwOSwzMDQxMSwzMDQxMiwzMDQxOSwzMDQyMSwzMDQyNSwzMDQyNiwzMDQyOCwzMDQyOSwzMDQzMCwzMDQzMiwzMDQzMywzMDQzNCwzMDQzNSwzMDQzNiwzMDQzOCwzMDQzOSwzMDQ0MCwzMDQ0MSwzMDQ0MiwzMDQ0MywzMDQ0NCwzMDQ0NSwzMDQ0OCwzMDQ1MSwzMDQ1MywzMDQ1NCwzMDQ1NSwzMDQ1OCwzMDQ1OSwzMDQ2MSwzMDQ2MywzMDQ2NCwzMDQ2NiwzMDQ2NywzMDQ2OSwzMDQ3MCwzMDQ3NCwzMDQ3NiwzMDQ3OCwzMDQ3OSwzMDQ4MCwzMDQ4MSwzMDQ4MiwzMDQ4MywzMDQ4NCwzMDQ4NSwzMDQ4NiwzMDQ4NywzMDQ4OCwzMDQ5MSwzMDQ5MiwzMDQ5MywzMDQ5NCwzMDQ5NywzMDQ5OSwzMDUwMCwzMDUwMSwzMDUwMywzMDUwNiwzMDUwNywzMDUwOCwzMDUxMCwzMDUxMiwzMDUxMywzMDUxNCwzMDUxNSwzMDUxNiwzMDUyMSwzMDUyMywzMDUyNSwzMDUyNiwzMDUyNywzMDUzMCwzMDUzMiwzMDUzMywzMDUzNCwzMDUzNiwzMDUzNywzMDUzOCwzMDUzOSwzMDU0MCwzMDU0MSwzMDU0MiwzMDU0MywzMDU0NiwzMDU0NywzMDU0OCwzMDU0OSwzMDU1MCwzMDU1MSwzMDU1MiwzMDU1MywzMDU1NiwzNDE4MCwzODY0OSwyMDQ0NSwyMjU2MSwzOTI4MSwyMzQ1MywyNTI2NSwyNTI1MywyNjI5MiwzNTk2MSw0MDA3NywyOTE5MCwyNjQ3OSwzMDg2NSwyNDc1NCwyMTMyOSwyMTI3MSwzNjc0NCwzMjk3MiwzNjEyNSwzODA0OSwyMDQ5MywyOTM4NCwyMjc5MSwyNDgxMSwyODk1MywzNDk4NywyMjg2OCwzMzUxOSwyNjQxMiwzMTUyOCwyMzg0OSwzMjUwMywyOTk5NywyNzg5MywzNjQ1NCwzNjg1NiwzNjkyNCw0MDc2MywyNzYwNCwzNzE0NSwzMTUwOCwyNDQ0NCwzMDg4NywzNDAwNiwzNDEwOSwyNzYwNSwyNzYwOSwyNzYwNiwyNDA2NSwyNDE5OSwzMDIwMSwzODM4MSwyNTk0OSwyNDMzMCwyNDUxNywzNjc2NywyMjcyMSwzMzIxOCwzNjk5MSwzODQ5MSwzODgyOSwzNjc5MywzMjUzNCwzNjE0MCwyNTE1MywyMDQxNSwyMTQ2NCwyMTM0MiwzNjc3NiwzNjc3NywzNjc3OSwzNjk0MSwyNjYzMSwyNDQyNiwzMzE3NiwzNDkyMCw0MDE1MCwyNDk3MSwyMTAzNSwzMDI1MCwyNDQyOCwyNTk5NiwyODYyNiwyODM5MiwyMzQ4NiwyNTY3MiwyMDg1MywyMDkxMiwyNjU2NCwxOTk5MywzMTE3NywzOTI5MiwyODg1MSwzMDU1NywzMDU1OCwzMDU1OSwzMDU2MCwzMDU2NCwzMDU2NywzMDU2OSwzMDU3MCwzMDU3MywzMDU3NCwzMDU3NSwzMDU3NiwzMDU3NywzMDU3OCwzMDU3OSwzMDU4MCwzMDU4MSwzMDU4MiwzMDU4MywzMDU4NCwzMDU4NiwzMDU4NywzMDU4OCwzMDU5MywzMDU5NCwzMDU5NSwzMDU5OCwzMDU5OSwzMDYwMCwzMDYwMSwzMDYwMiwzMDYwMywzMDYwNywzMDYwOCwzMDYxMSwzMDYxMiwzMDYxMywzMDYxNCwzMDYxNSwzMDYxNiwzMDYxNywzMDYxOCwzMDYxOSwzMDYyMCwzMDYyMSwzMDYyMiwzMDYyNSwzMDYyNywzMDYyOCwzMDYzMCwzMDYzMiwzMDYzNSwzMDYzNywzMDYzOCwzMDYzOSwzMDY0MSwzMDY0MiwzMDY0NCwzMDY0NiwzMDY0NywzMDY0OCwzMDY0OSwzMDY1MCwzMDY1MiwzMDY1NCwzMDY1NiwzMDY1NywzMDY1OCwzMDY1OSwzMDY2MCwzMDY2MSwzMDY2MiwzMDY2MywzMDY2NCwzMDY2NSwzMDY2NiwzMDY2NywzMDY2OCwzMDY3MCwzMDY3MSwzMDY3MiwzMDY3MywzMDY3NCwzMDY3NSwzMDY3NiwzMDY3NywzMDY3OCwzMDY4MCwzMDY4MSwzMDY4MiwzMDY4NSwzMDY4NiwzMDY4NywzMDY4OCwzMDY4OSwzMDY5MiwzMDE0OSwyNDE4MiwyOTYyNywzMzc2MCwyNTc3MywyNTMyMCwzODA2OSwyNzg3NCwyMTMzOCwyMTE4NywyNTYxNSwzODA4MiwzMTYzNiwyMDI3MSwyNDA5MSwzMzMzNCwzMzA0NiwzMzE2MiwyODE5NiwyNzg1MCwzOTUzOSwyNTQyOSwyMTM0MCwyMTc1NCwzNDkxNywyMjQ5NiwxOTk4MSwyNDA2NywyNzQ5MywzMTgwNywzNzA5NiwyNDU5OCwyNTgzMCwyOTQ2OCwzNTAwOSwyNjQ0OCwyNTE2NSwzNjEzMCwzMDU3MiwzNjM5MywzNzMxOSwyNDQyNSwzMzc1NiwzNDA4MSwzOTE4NCwyMTQ0MiwzNDQ1MywyNzUzMSwyNDgxMywyNDgwOCwyODc5OSwzMzQ4NSwzMzMyOSwyMDE3OSwyNzgxNSwzNDI1NSwyNTgwNSwzMTk2MSwyNzEzMywyNjM2MSwzMzYwOSwyMTM5NywzMTU3NCwyMDM5MSwyMDg3NiwyNzk3OSwyMzYxOCwzNjQ2MSwyNTU1NCwyMTQ0OSwzMzU4MCwzMzU5MCwyNjU5NywzMDkwMCwyNTY2MSwyMzUxOSwyMzcwMCwyNDA0NiwzNTgxNSwyNTI4NiwyNjYxMiwzNTk2MiwyNTYwMCwyNTUzMCwzNDYzMywzOTMwNywzNTg2MywzMjU0NCwzODEzMCwyMDEzNSwzODQxNiwzOTA3NiwyNjEyNCwyOTQ2MiwzMDY5NCwzMDY5NiwzMDY5OCwzMDcwMywzMDcwNCwzMDcwNSwzMDcwNiwzMDcwOCwzMDcwOSwzMDcxMSwzMDcxMywzMDcxNCwzMDcxNSwzMDcxNiwzMDcyMywzMDcyNCwzMDcyNSwzMDcyNiwzMDcyNywzMDcyOCwzMDczMCwzMDczMSwzMDczNCwzMDczNSwzMDczNiwzMDczOSwzMDc0MSwzMDc0NSwzMDc0NywzMDc1MCwzMDc1MiwzMDc1MywzMDc1NCwzMDc1NiwzMDc2MCwzMDc2MiwzMDc2MywzMDc2NiwzMDc2NywzMDc2OSwzMDc3MCwzMDc3MSwzMDc3MywzMDc3NCwzMDc4MSwzMDc4MywzMDc4NSwzMDc4NiwzMDc4NywzMDc4OCwzMDc5MCwzMDc5MiwzMDc5MywzMDc5NCwzMDc5NSwzMDc5NywzMDc5OSwzMDgwMSwzMDgwMywzMDgwNCwzMDgwOCwzMDgwOSwzMDgxMCwzMDgxMSwzMDgxMiwzMDgxNCwzMDgxNSwzMDgxNiwzMDgxNywzMDgxOCwzMDgxOSwzMDgyMCwzMDgyMSwzMDgyMiwzMDgyMywzMDgyNCwzMDgyNSwzMDgzMSwzMDgzMiwzMDgzMywzMDgzNCwzMDgzNSwzMDgzNiwzMDgzNywzMDgzOCwzMDg0MCwzMDg0MSwzMDg0MiwzMDg0MywzMDg0NSwzMDg0NiwzMDg0NywzMDg0OCwzMDg0OSwzMDg1MCwzMDg1MSwyMjMzMCwyMzU4MSwyNDEyMCwzODI3MSwyMDYwNywzMjkyOCwyMTM3OCwyNTk1MCwzMDAyMSwyMTgwOSwyMDUxMywzNjIyOSwyNTIyMCwzODA0NiwyNjM5NywyMjA2NiwyODUyNiwyNDAzNCwyMTU1NywyODgxOCwzNjcxMCwyNTE5OSwyNTc2NCwyNTUwNywyNDQ0MywyODU1MiwzNzEwOCwzMzI1MSwzNjc4NCwyMzU3NiwyNjIxNiwyNDU2MSwyNzc4NSwzODQ3MiwzNjIyNSwzNDkyNCwyNTc0NSwzMTIxNiwyMjQ3OCwyNzIyNSwyNTEwNCwyMTU3NiwyMDA1NiwzMTI0MywyNDgwOSwyODU0OCwzNTgwMiwyNTIxNSwzNjg5NCwzOTU2MywzMTIwNCwyMTUwNywzMDE5NiwyNTM0NSwyMTI3MywyNzc0NCwzNjgzMSwyNDM0NywzOTUzNiwzMjgyNyw0MDgzMSwyMDM2MCwyMzYxMCwzNjE5NiwzMjcwOSwyNjAyMSwyODg2MSwyMDgwNSwyMDkxNCwzNDQxMSwyMzgxNSwyMzQ1NiwyNTI3NywzNzIyOCwzMDA2OCwzNjM2NCwzMTI2NCwyNDgzMywzMTYwOSwyMDE2NywzMjUwNCwzMDU5NywxOTk4NSwzMzI2MSwyMTAyMSwyMDk4NiwyNzI0OSwyMTQxNiwzNjQ4NywzODE0OCwzODYwNywyODM1MywzODUwMCwyNjk3MCwzMDg1MiwzMDg1MywzMDg1NCwzMDg1NiwzMDg1OCwzMDg1OSwzMDg2MywzMDg2NCwzMDg2NiwzMDg2OCwzMDg2OSwzMDg3MCwzMDg3MywzMDg3NywzMDg3OCwzMDg4MCwzMDg4MiwzMDg4NCwzMDg4NiwzMDg4OCwzMDg4OSwzMDg5MCwzMDg5MSwzMDg5MiwzMDg5MywzMDg5NCwzMDg5NSwzMDkwMSwzMDkwMiwzMDkwMywzMDkwNCwzMDkwNiwzMDkwNywzMDkwOCwzMDkwOSwzMDkxMSwzMDkxMiwzMDkxNCwzMDkxNSwzMDkxNiwzMDkxOCwzMDkxOSwzMDkyMCwzMDkyNCwzMDkyNSwzMDkyNiwzMDkyNywzMDkyOSwzMDkzMCwzMDkzMSwzMDkzNCwzMDkzNSwzMDkzNiwzMDkzOCwzMDkzOSwzMDk0MCwzMDk0MSwzMDk0MiwzMDk0MywzMDk0NCwzMDk0NSwzMDk0NiwzMDk0NywzMDk0OCwzMDk0OSwzMDk1MCwzMDk1MSwzMDk1MywzMDk1NCwzMDk1NSwzMDk1NywzMDk1OCwzMDk1OSwzMDk2MCwzMDk2MSwzMDk2MywzMDk2NSwzMDk2NiwzMDk2OCwzMDk2OSwzMDk3MSwzMDk3MiwzMDk3MywzMDk3NCwzMDk3NSwzMDk3NiwzMDk3OCwzMDk3OSwzMDk4MCwzMDk4MiwzMDk4MywzMDk4NCwzMDk4NSwzMDk4NiwzMDk4NywzMDk4OCwzMDc4NCwyMDY0OCwzMDY3OSwyNTYxNiwzNTMwMiwyMjc4OCwyNTU3MSwyNDAyOSwzMTM1OSwyNjk0MSwyMDI1NiwzMzMzNywyMTkxMiwyMDAxOCwzMDEyNiwzMTM4MywyNDE2MiwyNDIwMiwzODM4MywyMTAxOSwyMTU2MSwyODgxMCwyNTQ2MiwzODE4MCwyMjQwMiwyNjE0OSwyNjk0MywzNzI1NSwyMTc2NywyODE0NywzMjQzMSwzNDg1MCwyNTEzOSwzMjQ5NiwzMDEzMywzMzU3NiwzMDkxMywzODYwNCwzNjc2NiwyNDkwNCwyOTk0MywzNTc4OSwyNzQ5MiwyMTA1MCwzNjE3NiwyNzQyNSwzMjg3NCwzMzkwNSwyMjI1NywyMTI1NCwyMDE3NCwxOTk5NSwyMDk0NSwzMTg5NSwzNzI1OSwzMTc1MSwyMDQxOSwzNjQ3OSwzMTcxMywzMTM4OCwyNTcwMywyMzgyOCwyMDY1MiwzMzAzMCwzMDIwOSwzMTkyOSwyODE0MCwzMjczNiwyNjQ0OSwyMzM4NCwyMzU0NCwzMDkyMywyNTc3NCwyNTYxOSwyNTUxNCwyNTM4NywzODE2OSwyNTY0NSwzNjc5OCwzMTU3MiwzMDI0OSwyNTE3MSwyMjgyMywyMTU3NCwyNzUxMywyMDY0MywyNTE0MCwyNDEwMiwyNzUyNiwyMDE5NSwzNjE1MSwzNDk1NSwyNDQ1MywzNjkxMCwzMDk4OSwzMDk5MCwzMDk5MSwzMDk5MiwzMDk5MywzMDk5NCwzMDk5NiwzMDk5NywzMDk5OCwzMDk5OSwzMTAwMCwzMTAwMSwzMTAwMiwzMTAwMywzMTAwNCwzMTAwNSwzMTAwNywzMTAwOCwzMTAwOSwzMTAxMCwzMTAxMSwzMTAxMywzMTAxNCwzMTAxNSwzMTAxNiwzMTAxNywzMTAxOCwzMTAxOSwzMTAyMCwzMTAyMSwzMTAyMiwzMTAyMywzMTAyNCwzMTAyNSwzMTAyNiwzMTAyNywzMTAyOSwzMTAzMCwzMTAzMSwzMTAzMiwzMTAzMywzMTAzNywzMTAzOSwzMTA0MiwzMTA0MywzMTA0NCwzMTA0NSwzMTA0NywzMTA1MCwzMTA1MSwzMTA1MiwzMTA1MywzMTA1NCwzMTA1NSwzMTA1NiwzMTA1NywzMTA1OCwzMTA2MCwzMTA2MSwzMTA2NCwzMTA2NSwzMTA3MywzMTA3NSwzMTA3NiwzMTA3OCwzMTA4MSwzMTA4MiwzMTA4MywzMTA4NCwzMTA4NiwzMTA4OCwzMTA4OSwzMTA5MCwzMTA5MSwzMTA5MiwzMTA5MywzMTA5NCwzMTA5NywzMTA5OSwzMTEwMCwzMTEwMSwzMTEwMiwzMTEwMywzMTEwNiwzMTEwNywzMTExMCwzMTExMSwzMTExMiwzMTExMywzMTExNSwzMTExNiwzMTExNywzMTExOCwzMTEyMCwzMTEyMSwzMTEyMiwyNDYwOCwzMjgyOSwyNTI4NSwyMDAyNSwyMTMzMywzNzExMiwyNTUyOCwzMjk2NiwyNjA4NiwyNzY5NCwyMDI5NCwyNDgxNCwyODEyOSwzNTgwNiwyNDM3NywzNDUwNywyNDQwMywyNTM3NywyMDgyNiwzMzYzMywyNjcyMywyMDk5MiwyNTQ0MywzNjQyNCwyMDQ5OCwyMzcwNywzMTA5NSwyMzU0OCwyMTA0MCwzMTI5MSwyNDc2NCwzNjk0NywzMDQyMywyNDUwMywyNDQ3MSwzMDM0MCwzNjQ2MCwyODc4MywzMDMzMSwzMTU2MSwzMDYzNCwyMDk3OSwzNzAxMSwyMjU2NCwyMDMwMiwyODQwNCwzNjg0MiwyNTkzMiwzMTUxNSwyOTM4MCwyODA2OCwzMjczNSwyMzI2NSwyNTI2OSwyNDIxMywyMjMyMCwzMzkyMiwzMTUzMiwyNDA5MywyNDM1MSwzNjg4MiwzMjUzMiwzOTA3MiwyNTQ3NCwyODM1OSwzMDg3MiwyODg1NywyMDg1NiwzODc0NywyMjQ0MywzMDAwNSwyMDI5MSwzMDAwOCwyNDIxNSwyNDgwNiwyMjg4MCwyODA5NiwyNzU4MywzMDg1NywyMTUwMCwzODYxMywyMDkzOSwyMDk5MywyNTQ4MSwyMTUxNCwzODAzNSwzNTg0MywzNjMwMCwyOTI0MSwzMDg3OSwzNDY3OCwzNjg0NSwzNTg1MywyMTQ3MiwzMTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyNywzMTEyOCwzMTEyOSwzMTEzMSwzMTEzMiwzMTEzMywzMTEzNCwzMTEzNSwzMTEzNiwzMTEzNywzMTEzOCwzMTEzOSwzMTE0MCwzMTE0MSwzMTE0MiwzMTE0NCwzMTE0NSwzMTE0NiwzMTE0NywzMTE0OCwzMTE0OSwzMTE1MCwzMTE1MSwzMTE1MiwzMTE1MywzMTE1NCwzMTE1NiwzMTE1NywzMTE1OCwzMTE1OSwzMTE2MCwzMTE2NCwzMTE2NywzMTE3MCwzMTE3MiwzMTE3MywzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MCwzMTE4MiwzMTE4MywzMTE4NCwzMTE4NywzMTE4OCwzMTE5MCwzMTE5MSwzMTE5MywzMTE5NCwzMTE5NSwzMTE5NiwzMTE5NywzMTE5OCwzMTIwMCwzMTIwMSwzMTIwMiwzMTIwNSwzMTIwOCwzMTIxMCwzMTIxMiwzMTIxNCwzMTIxNywzMTIxOCwzMTIxOSwzMTIyMCwzMTIyMSwzMTIyMiwzMTIyMywzMTIyNSwzMTIyNiwzMTIyOCwzMTIzMCwzMTIzMSwzMTIzMywzMTIzNiwzMTIzNywzMTIzOSwzMTI0MCwzMTI0MSwzMTI0MiwzMTI0NCwzMTI0NywzMTI0OCwzMTI0OSwzMTI1MCwzMTI1MSwzMTI1MywzMTI1NCwzMTI1NiwzMTI1NywzMTI1OSwzMTI2MCwxOTk2OSwzMDQ0NywyMTQ4NiwzODAyNSwzOTAzMCw0MDcxOCwzODE4OSwyMzQ1MCwzNTc0NiwyMDAwMiwxOTk5NiwyMDkwOCwzMzg5MSwyNTAyNiwyMTE2MCwyNjYzNSwyMDM3NSwyNDY4MywyMDkyMywyNzkzNCwyMDgyOCwyNTIzOCwyNjAwNywzODQ5NywzNTkxMCwzNjg4NywzMDE2OCwzNzExNywzMDU2MywyNzYwMiwyOTMyMiwyOTQyMCwzNTgzNSwyMjU4MSwzMDU4NSwzNjE3MiwyNjQ2MCwzODIwOCwzMjkyMiwyNDIzMCwyODE5MywyMjkzMCwzMTQ3MSwzMDcwMSwzODIwMywyNzU3MywyNjAyOSwzMjUyNiwyMjUzNCwyMDgxNywzODQzMSwyMzU0NSwyMjY5NywyMTU0NCwzNjQ2NiwyNTk1OCwzOTAzOSwyMjI0NCwzODA0NSwzMDQ2MiwzNjkyOSwyNTQ3OSwyMTcwMiwyMjgxMCwyMjg0MiwyMjQyNywzNjUzMCwyNjQyMSwzNjM0NiwzMzMzMywyMTA1NywyNDgxNiwyMjU0OSwzNDU1OCwyMzc4NCw0MDUxNywyMDQyMCwzOTA2OSwzNTc2OSwyMzA3NywyNDY5NCwyMTM4MCwyNTIxMiwzNjk0MywzNzEyMiwzOTI5NSwyNDY4MSwzMjc4MCwyMDc5OSwzMjgxOSwyMzU3MiwzOTI4NSwyNzk1MywyMDEwOCwzMTI2MSwzMTI2MywzMTI2NSwzMTI2NiwzMTI2OCwzMTI2OSwzMTI3MCwzMTI3MSwzMTI3MiwzMTI3MywzMTI3NCwzMTI3NSwzMTI3NiwzMTI3NywzMTI3OCwzMTI3OSwzMTI4MCwzMTI4MSwzMTI4MiwzMTI4NCwzMTI4NSwzMTI4NiwzMTI4OCwzMTI5MCwzMTI5NCwzMTI5NiwzMTI5NywzMTI5OCwzMTI5OSwzMTMwMCwzMTMwMSwzMTMwMywzMTMwNCwzMTMwNSwzMTMwNiwzMTMwNywzMTMwOCwzMTMwOSwzMTMxMCwzMTMxMSwzMTMxMiwzMTMxNCwzMTMxNSwzMTMxNiwzMTMxNywzMTMxOCwzMTMyMCwzMTMyMSwzMTMyMiwzMTMyMywzMTMyNCwzMTMyNSwzMTMyNiwzMTMyNywzMTMyOCwzMTMyOSwzMTMzMCwzMTMzMSwzMTMzMiwzMTMzMywzMTMzNCwzMTMzNSwzMTMzNiwzMTMzNywzMTMzOCwzMTMzOSwzMTM0MCwzMTM0MSwzMTM0MiwzMTM0MywzMTM0NSwzMTM0NiwzMTM0NywzMTM0OSwzMTM1NSwzMTM1NiwzMTM1NywzMTM1OCwzMTM2MiwzMTM2NSwzMTM2NywzMTM2OSwzMTM3MCwzMTM3MSwzMTM3MiwzMTM3NCwzMTM3NSwzMTM3NiwzMTM3OSwzMTM4MCwzMTM4NSwzMTM4NiwzMTM4NywzMTM5MCwzMTM5MywzMTM5NCwzNjE0NCwyMTQ1NywzMjYwMiwzMTU2NywyMDI0MCwyMDA0NywzODQwMCwyNzg2MSwyOTY0OCwzNDI4MSwyNDA3MCwzMDA1OCwzMjc2MywyNzE0NiwzMDcxOCwzODAzNCwzMjMyMSwyMDk2MSwyODkwMiwyMTQ1MywzNjgyMCwzMzUzOSwzNjEzNywyOTM1OSwzOTI3NywyNzg2NywyMjM0NiwzMzQ1OSwyNjA0MSwzMjkzOCwyNTE1MSwzODQ1MCwyMjk1MiwyMDIyMywzNTc3NSwzMjQ0MiwyNTkxOCwzMzc3OCwzODc1MCwyMTg1NywzOTEzNCwzMjkzMywyMTI5MCwzNTgzNywyMTUzNiwzMjk1NCwyNDIyMywyNzgzMiwzNjE1MywzMzQ1MiwzNzIxMCwyMTU0NSwyNzY3NSwyMDk5OCwzMjQzOSwyMjM2NywyODk1NCwyNzc3NCwzMTg4MSwyMjg1OSwyMDIyMSwyNDU3NSwyNDg2OCwzMTkxNCwyMDAxNiwyMzU1MywyNjUzOSwzNDU2MiwyMzc5MiwzODE1NSwzOTExOCwzMDEyNywyODkyNSwzNjg5OCwyMDkxMSwzMjU0MSwzNTc3MywyMjg1NywyMDk2NCwyMDMxNSwyMTU0MiwyMjgyNywyNTk3NSwzMjkzMiwyMzQxMywyNTIwNiwyNTI4MiwzNjc1MiwyNDEzMywyNzY3OSwzMTUyNiwyMDIzOSwyMDQ0MCwyNjM4MSwzMTM5NSwzMTM5NiwzMTM5OSwzMTQwMSwzMTQwMiwzMTQwMywzMTQwNiwzMTQwNywzMTQwOCwzMTQwOSwzMTQxMCwzMTQxMiwzMTQxMywzMTQxNCwzMTQxNSwzMTQxNiwzMTQxNywzMTQxOCwzMTQxOSwzMTQyMCwzMTQyMSwzMTQyMiwzMTQyNCwzMTQyNSwzMTQyNiwzMTQyNywzMTQyOCwzMTQyOSwzMTQzMCwzMTQzMSwzMTQzMiwzMTQzMywzMTQzNCwzMTQzNiwzMTQzNywzMTQzOCwzMTQzOSwzMTQ0MCwzMTQ0MSwzMTQ0MiwzMTQ0MywzMTQ0NCwzMTQ0NSwzMTQ0NywzMTQ0OCwzMTQ1MCwzMTQ1MSwzMTQ1MiwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MCwzMTQ2MywzMTQ2NCwzMTQ2NSwzMTQ2NiwzMTQ2NywzMTQ2OCwzMTQ3MCwzMTQ3MiwzMTQ3MywzMTQ3NCwzMTQ3NSwzMTQ3NiwzMTQ3NywzMTQ3OCwzMTQ3OSwzMTQ4MCwzMTQ4MywzMTQ4NCwzMTQ4NiwzMTQ4OCwzMTQ4OSwzMTQ5MCwzMTQ5MywzMTQ5NSwzMTQ5NywzMTUwMCwzMTUwMSwzMTUwMiwzMTUwNCwzMTUwNiwzMTUwNywzMTUxMCwzMTUxMSwzMTUxMiwzMTUxNCwzMTUxNiwzMTUxNywzMTUxOSwzMTUyMSwzMTUyMiwzMTUyMywzMTUyNywzMTUyOSwzMTUzMywyODAxNCwyODA3NCwzMTExOSwzNDk5MywyNDM0MywyOTk5NSwyNTI0MiwzNjc0MSwyMDQ2MywzNzM0MCwyNjAyMywzMzA3MSwzMzEwNSwyNDIyMCwzMzEwNCwzNjIxMiwyMTEwMywzNTIwNiwzNjE3MSwyMjc5NywyMDYxMywyMDE4NCwzODQyOCwyOTIzOCwzMzE0NSwzNjEyNywyMzUwMCwzNTc0NywzODQ2OCwyMjkxOSwzMjUzOCwyMTY0OCwyMjEzNCwyMjAzMCwzNTgxMywyNTkxMywyNzAxMCwzODA0MSwzMDQyMiwyODI5NywyNDE3OCwyOTk3NiwyNjQzOCwyNjU3NywzMTQ4NywzMjkyNSwzNjIxNCwyNDg2MywzMTE3NCwyNTk1NCwzNjE5NSwyMDg3MiwyMTAxOCwzODA1MCwzMjU2OCwzMjkyMywzMjQzNCwyMzcwMywyODIwNywyNjQ2NCwzMTcwNSwzMDM0NywzOTY0MCwzMzE2NywzMjY2MCwzMTk1NywyNTYzMCwzODIyNCwzMTI5NSwyMTU3OCwyMTczMywyNzQ2OCwyNTYwMSwyNTA5Niw0MDUwOSwzMzAxMSwzMDEwNSwyMTEwNiwzODc2MSwzMzg4MywyNjY4NCwzNDUzMiwzODQwMSwzODU0OCwzODEyNCwyMDAxMCwyMTUwOCwzMjQ3MywyNjY4MSwzNjMxOSwzMjc4OSwyNjM1NiwyNDIxOCwzMjY5NywzMTUzNSwzMTUzNiwzMTUzOCwzMTU0MCwzMTU0MSwzMTU0MiwzMTU0MywzMTU0NSwzMTU0NywzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1NCwzMTU1NSwzMTU1NiwzMTU1OCwzMTU2MCwzMTU2MiwzMTU2NSwzMTU2NiwzMTU3MSwzMTU3MywzMTU3NSwzMTU3NywzMTU4MCwzMTU4MiwzMTU4MywzMTU4NSwzMTU4NywzMTU4OCwzMTU4OSwzMTU5MCwzMTU5MSwzMTU5MiwzMTU5MywzMTU5NCwzMTU5NSwzMTU5NiwzMTU5NywzMTU5OSwzMTYwMCwzMTYwMywzMTYwNCwzMTYwNiwzMTYwOCwzMTYxMCwzMTYxMiwzMTYxMywzMTYxNSwzMTYxNywzMTYxOCwzMTYxOSwzMTYyMCwzMTYyMiwzMTYyMywzMTYyNCwzMTYyNSwzMTYyNiwzMTYyNywzMTYyOCwzMTYzMCwzMTYzMSwzMTYzMywzMTYzNCwzMTYzNSwzMTYzOCwzMTY0MCwzMTY0MSwzMTY0MiwzMTY0MywzMTY0NiwzMTY0NywzMTY0OCwzMTY1MSwzMTY1MiwzMTY1MywzMTY2MiwzMTY2MywzMTY2NCwzMTY2NiwzMTY2NywzMTY2OSwzMTY3MCwzMTY3MSwzMTY3MywzMTY3NCwzMTY3NSwzMTY3NiwzMTY3NywzMTY3OCwzMTY3OSwzMTY4MCwzMTY4MiwzMTY4MywzMTY4NCwyMjQ2NiwzMjgzMSwyNjc3NSwyNDAzNywyNTkxNSwyMTE1MSwyNDY4NSw0MDg1OCwyMDM3OSwzNjUyNCwyMDg0NCwyMzQ2NywyNDMzOSwyNDA0MSwyNzc0MiwyNTMyOSwzNjEyOSwyMDg0OSwzODA1NywyMTI0NiwyNzgwNywzMzUwMywyOTM5OSwyMjQzNCwyNjUwMCwzNjE0MSwyMjgxNSwzNjc2NCwzMzczNSwyMTY1MywzMTYyOSwyMDI3MiwyNzgzNywyMzM5NiwyMjk5Myw0MDcyMywyMTQ3NiwzNDUwNiwzOTU5MiwzNTg5NSwzMjkyOSwyNTkyNSwzOTAzOCwyMjI2NiwzODU5OSwyMTAzOCwyOTkxNiwyMTA3MiwyMzUyMSwyNTM0NiwzNTA3NCwyMDA1NCwyNTI5NiwyNDYxOCwyNjg3NCwyMDg1MSwyMzQ0OCwyMDg5NiwzNTI2NiwzMTY0OSwzOTMwMiwzMjU5MiwyNDgxNSwyODc0OCwzNjE0MywyMDgwOSwyNDE5MSwzNjg5MSwyOTgwOCwzNTI2OCwyMjMxNywzMDc4OSwyNDQwMiw0MDg2MywzODM5NCwzNjcxMiwzOTc0MCwzNTgwOSwzMDMyOCwyNjY5MCwyNjU4OCwzNjMzMCwzNjE0OSwyMTA1MywzNjc0NiwyODM3OCwyNjgyOSwzODE0OSwzNzEwMSwyMjI2OSwyNjUyNCwzNTA2NSwzNjgwNywyMTcwNCwzMTY4NSwzMTY4OCwzMTY4OSwzMTY5MCwzMTY5MSwzMTY5MywzMTY5NCwzMTY5NSwzMTY5NiwzMTY5OCwzMTcwMCwzMTcwMSwzMTcwMiwzMTcwMywzMTcwNCwzMTcwNywzMTcwOCwzMTcxMCwzMTcxMSwzMTcxMiwzMTcxNCwzMTcxNSwzMTcxNiwzMTcxOSwzMTcyMCwzMTcyMSwzMTcyMywzMTcyNCwzMTcyNSwzMTcyNywzMTcyOCwzMTczMCwzMTczMSwzMTczMiwzMTczMywzMTczNCwzMTczNiwzMTczNywzMTczOCwzMTczOSwzMTc0MSwzMTc0MywzMTc0NCwzMTc0NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc0OSwzMTc1MCwzMTc1MiwzMTc1MywzMTc1NCwzMTc1NywzMTc1OCwzMTc2MCwzMTc2MSwzMTc2MiwzMTc2MywzMTc2NCwzMTc2NSwzMTc2NywzMTc2OCwzMTc2OSwzMTc3MCwzMTc3MSwzMTc3MiwzMTc3MywzMTc3NCwzMTc3NiwzMTc3NywzMTc3OCwzMTc3OSwzMTc4MCwzMTc4MSwzMTc4NCwzMTc4NSwzMTc4NywzMTc4OCwzMTc4OSwzMTc5MCwzMTc5MSwzMTc5MiwzMTc5MywzMTc5NCwzMTc5NSwzMTc5NiwzMTc5NywzMTc5OCwzMTc5OSwzMTgwMSwzMTgwMiwzMTgwMywzMTgwNCwzMTgwNSwzMTgwNiwzMTgxMCwzOTYwOCwyMzQwMSwyODAyMywyNzY4NiwyMDEzMywyMzQ3NSwzOTU1OSwzNzIxOSwyNTAwMCwzNzAzOSwzODg4OSwyMTU0NywyODA4NSwyMzUwNiwyMDk4OSwyMTg5OCwzMjU5NywzMjc1MiwyNTc4OCwyNTQyMSwyNjA5NywyNTAyMiwyNDcxNywyODkzOCwyNzczNSwyNzcyMSwyMjgzMSwyNjQ3NywzMzMyMiwyMjc0MSwyMjE1OCwzNTk0NiwyNzYyNywzNzA4NSwyMjkwOSwzMjc5MSwyMTQ5NSwyODAwOSwyMTYyMSwyMTkxNywzMzY1NSwzMzc0MywyNjY4MCwzMTE2NiwyMTY0NCwyMDMwOSwyMTUxMiwzMDQxOCwzNTk3NywzODQwMiwyNzgyNywyODA4OCwzNjIwMywzNTA4OCw0MDU0OCwzNjE1NCwyMjA3OSw0MDY1NywzMDE2NSwyNDQ1NiwyOTQwOCwyNDY4MCwyMTc1NiwyMDEzNiwyNzE3OCwzNDkxMywyNDY1OCwzNjcyMCwyMTcwMCwyODg4OCwzNDQyNSw0MDUxMSwyNzk0NiwyMzQzOSwyNDM0NCwzMjQxOCwyMTg5NywyMDM5OSwyOTQ5MiwyMTU2NCwyMTQwMiwyMDUwNSwyMTUxOCwyMTYyOCwyMDA0NiwyNDU3MywyOTc4NiwyMjc3NCwzMzg5OSwzMjk5MywzNDY3NiwyOTM5MiwzMTk0NiwyODI0NiwzMTgxMSwzMTgxMiwzMTgxMywzMTgxNCwzMTgxNSwzMTgxNiwzMTgxNywzMTgxOCwzMTgxOSwzMTgyMCwzMTgyMiwzMTgyMywzMTgyNCwzMTgyNSwzMTgyNiwzMTgyNywzMTgyOCwzMTgyOSwzMTgzMCwzMTgzMSwzMTgzMiwzMTgzMywzMTgzNCwzMTgzNSwzMTgzNiwzMTgzNywzMTgzOCwzMTgzOSwzMTg0MCwzMTg0MSwzMTg0MiwzMTg0MywzMTg0NCwzMTg0NSwzMTg0NiwzMTg0NywzMTg0OCwzMTg0OSwzMTg1MCwzMTg1MSwzMTg1MiwzMTg1MywzMTg1NCwzMTg1NSwzMTg1NiwzMTg1NywzMTg1OCwzMTg2MSwzMTg2MiwzMTg2MywzMTg2NCwzMTg2NSwzMTg2NiwzMTg3MCwzMTg3MSwzMTg3MiwzMTg3MywzMTg3NCwzMTg3NSwzMTg3NiwzMTg3NywzMTg3OCwzMTg3OSwzMTg4MCwzMTg4MiwzMTg4MywzMTg4NCwzMTg4NSwzMTg4NiwzMTg4NywzMTg4OCwzMTg5MSwzMTg5MiwzMTg5NCwzMTg5NywzMTg5OCwzMTg5OSwzMTkwNCwzMTkwNSwzMTkwNywzMTkxMCwzMTkxMSwzMTkxMiwzMTkxMywzMTkxNSwzMTkxNiwzMTkxNywzMTkxOSwzMTkyMCwzMTkyNCwzMTkyNSwzMTkyNiwzMTkyNywzMTkyOCwzMTkzMCwzMTkzMSwyNDM1OSwzNDM4MiwyMTgwNCwyNTI1MiwyMDExNCwyNzgxOCwyNTE0MywzMzQ1NywyMTcxOSwyMTMyNiwyOTUwMiwyODM2OSwzMDAxMSwyMTAxMCwyMTI3MCwzNTgwNSwyNzA4OCwyNDQ1OCwyNDU3NiwyODE0MiwyMjM1MSwyNzQyNiwyOTYxNSwyNjcwNywzNjgyNCwzMjUzMSwyNTQ0MiwyNDczOSwyMTc5NiwzMDE4NiwzNTkzOCwyODk0OSwyODA2NywyMzQ2MiwyNDE4NywzMzYxOCwyNDkwOCw0MDY0NCwzMDk3MCwzNDY0NywzMTc4MywzMDM0MywyMDk3NiwyNDgyMiwyOTAwNCwyNjE3OSwyNDE0MCwyNDY1MywzNTg1NCwyODc4NCwyNTM4MSwzNjc0NSwyNDUwOSwyNDY3NCwzNDUxNiwyMjIzOCwyNzU4NSwyNDcyNCwyNDkzNSwyMTMyMSwyNDgwMCwyNjIxNCwzNjE1OSwzMTIyOSwyMDI1MCwyODkwNSwyNzcxOSwzNTc2MywzNTgyNiwzMjQ3MiwzMzYzNiwyNjEyNywyMzEzMCwzOTc0NiwyNzk4NSwyODE1MSwzNTkwNSwyNzk2MywyMDI0OSwyODc3OSwzMzcxOSwyNTExMCwyNDc4NSwzODY2OSwzNjEzNSwzMTA5NiwyMDk4NywyMjMzNCwyMjUyMiwyNjQyNiwzMDA3MiwzMTI5MywzMTIxNSwzMTYzNywzMTkzNSwzMTkzNiwzMTkzOCwzMTkzOSwzMTk0MCwzMTk0MiwzMTk0NSwzMTk0NywzMTk1MCwzMTk1MSwzMTk1MiwzMTk1MywzMTk1NCwzMTk1NSwzMTk1NiwzMTk2MCwzMTk2MiwzMTk2MywzMTk2NSwzMTk2NiwzMTk2OSwzMTk3MCwzMTk3MSwzMTk3MiwzMTk3MywzMTk3NCwzMTk3NSwzMTk3NywzMTk3OCwzMTk3OSwzMTk4MCwzMTk4MSwzMTk4MiwzMTk4NCwzMTk4NSwzMTk4NiwzMTk4NywzMTk4OCwzMTk4OSwzMTk5MCwzMTk5MSwzMTk5MywzMTk5NCwzMTk5NiwzMTk5NywzMTk5OCwzMTk5OSwzMjAwMCwzMjAwMSwzMjAwMiwzMjAwMywzMjAwNCwzMjAwNSwzMjAwNiwzMjAwNywzMjAwOCwzMjAwOSwzMjAxMSwzMjAxMiwzMjAxMywzMjAxNCwzMjAxNSwzMjAxNiwzMjAxNywzMjAxOCwzMjAxOSwzMjAyMCwzMjAyMSwzMjAyMiwzMjAyMywzMjAyNCwzMjAyNSwzMjAyNiwzMjAyNywzMjAyOCwzMjAyOSwzMjAzMCwzMjAzMSwzMjAzMywzMjAzNSwzMjAzNiwzMjAzNywzMjAzOCwzMjA0MCwzMjA0MSwzMjA0MiwzMjA0NCwzMjA0NSwzMjA0NiwzMjA0OCwzMjA0OSwzMjA1MCwzMjA1MSwzMjA1MiwzMjA1MywzMjA1NCwzMjkwOCwzOTI2OSwzNjg1NywyODYwOCwzNTc0OSw0MDQ4MSwyMzAyMCwzMjQ4OSwzMjUyMSwyMTUxMywyNjQ5NywyNjg0MCwzNjc1MywzMTgyMSwzODU5OCwyMTQ1MCwyNDYxMywzMDE0MiwyNzc2MiwyMTM2MywyMzI0MSwzMjQyMywyNTM4MCwyMDk2MCwzMzAzNCwyNDA0OSwzNDAxNSwyNTIxNiwyMDg2NCwyMzM5NSwyMDIzOCwzMTA4NSwyMTA1OCwyNDc2MCwyNzk4MiwyMzQ5MiwyMzQ5MCwzNTc0NSwzNTc2MCwyNjA4MiwyNDUyNCwzODQ2OSwyMjkzMSwzMjQ4NywzMjQyNiwyMjAyNSwyNjU1MSwyMjg0MSwyMDMzOSwyMzQ3OCwyMTE1MiwzMzYyNiwzOTA1MCwzNjE1OCwzMDAwMiwzODA3OCwyMDU1MSwzMTI5MiwyMDIxNSwyNjU1MCwzOTU1MCwyMzIzMywyNzUxNiwzMDQxNywyMjM2MiwyMzU3NCwzMTU0NiwzODM4OCwyOTAwNiwyMDg2MCwzMjkzNywzMzM5MiwyMjkwNCwzMjUxNiwzMzU3NSwyNjgxNiwyNjYwNCwzMDg5NywzMDgzOSwyNTMxNSwyNTQ0MSwzMTYxNiwyMDQ2MSwyMTA5OCwyMDk0MywzMzYxNiwyNzA5OSwzNzQ5MiwzNjM0MSwzNjE0NSwzNTI2NSwzODE5MCwzMTY2MSwyMDIxNCwzMjA1NSwzMjA1NiwzMjA1NywzMjA1OCwzMjA1OSwzMjA2MCwzMjA2MSwzMjA2MiwzMjA2MywzMjA2NCwzMjA2NSwzMjA2NiwzMjA2NywzMjA2OCwzMjA2OSwzMjA3MCwzMjA3MSwzMjA3MiwzMjA3MywzMjA3NCwzMjA3NSwzMjA3NiwzMjA3NywzMjA3OCwzMjA3OSwzMjA4MCwzMjA4MSwzMjA4MiwzMjA4MywzMjA4NCwzMjA4NSwzMjA4NiwzMjA4NywzMjA4OCwzMjA4OSwzMjA5MCwzMjA5MSwzMjA5MiwzMjA5MywzMjA5NCwzMjA5NSwzMjA5NiwzMjA5NywzMjA5OCwzMjA5OSwzMjEwMCwzMjEwMSwzMjEwMiwzMjEwMywzMjEwNCwzMjEwNSwzMjEwNiwzMjEwNywzMjEwOCwzMjEwOSwzMjExMSwzMjExMiwzMjExMywzMjExNCwzMjExNSwzMjExNiwzMjExNywzMjExOCwzMjEyMCwzMjEyMSwzMjEyMiwzMjEyMywzMjEyNCwzMjEyNSwzMjEyNiwzMjEyNywzMjEyOCwzMjEyOSwzMjEzMCwzMjEzMSwzMjEzMiwzMjEzMywzMjEzNCwzMjEzNSwzMjEzNiwzMjEzNywzMjEzOCwzMjEzOSwzMjE0MCwzMjE0MSwzMjE0MiwzMjE0MywzMjE0NCwzMjE0NSwzMjE0NiwzMjE0NywzMjE0OCwzMjE0OSwzMjE1MCwzMjE1MSwzMjE1MiwyMDU4MSwzMzMyOCwyMTA3MywzOTI3OSwyODE3NiwyODI5MywyODA3MSwyNDMxNCwyMDcyNSwyMzAwNCwyMzU1OCwyNzk3NCwyNzc0MywzMDA4NiwzMzkzMSwyNjcyOCwyMjg3MCwzNTc2MiwyMTI4MCwzNzIzMywzODQ3NywzNDEyMSwyNjg5OCwzMDk3NywyODk2NiwzMzAxNCwyMDEzMiwzNzA2NiwyNzk3NSwzOTU1NiwyMzA0NywyMjIwNCwyNTYwNSwzODEyOCwzMDY5OSwyMDM4OSwzMzA1MCwyOTQwOSwzNTI4MiwzOTI5MCwzMjU2NCwzMjQ3OCwyMTExOSwyNTk0NSwzNzIzNywzNjczNSwzNjczOSwyMTQ4MywzMTM4MiwyNTU4MSwyNTUwOSwzMDM0MiwzMTIyNCwzNDkwMywzODQ1NCwyNTEzMCwyMTE2MywzMzQxMCwyNjcwOCwyNjQ4MCwyNTQ2MywzMDU3MSwzMTQ2OSwyNzkwNSwzMjQ2NywzNTI5OSwyMjk5MiwyNTEwNiwzNDI0OSwzMzQ0NSwzMDAyOCwyMDUxMSwyMDE3MSwzMDExNywzNTgxOSwyMzYyNiwyNDA2MiwzMTU2MywyNjAyMCwzNzMyOSwyMDE3MCwyNzk0MSwzNTE2NywzMjAzOSwzODE4MiwyMDE2NSwzNTg4MCwzNjgyNywzODc3MSwyNjE4NywzMTEwNSwzNjgxNywyODkwOCwyODAyNCwzMjE1MywzMjE1NCwzMjE1NSwzMjE1NiwzMjE1NywzMjE1OCwzMjE1OSwzMjE2MCwzMjE2MSwzMjE2MiwzMjE2MywzMjE2NCwzMjE2NSwzMjE2NywzMjE2OCwzMjE2OSwzMjE3MCwzMjE3MSwzMjE3MiwzMjE3MywzMjE3NSwzMjE3NiwzMjE3NywzMjE3OCwzMjE3OSwzMjE4MCwzMjE4MSwzMjE4MiwzMjE4MywzMjE4NCwzMjE4NSwzMjE4NiwzMjE4NywzMjE4OCwzMjE4OSwzMjE5MCwzMjE5MSwzMjE5MiwzMjE5MywzMjE5NCwzMjE5NSwzMjE5NiwzMjE5NywzMjE5OCwzMjE5OSwzMjIwMCwzMjIwMSwzMjIwMiwzMjIwMywzMjIwNCwzMjIwNSwzMjIwNiwzMjIwNywzMjIwOCwzMjIwOSwzMjIxMCwzMjIxMSwzMjIxMiwzMjIxMywzMjIxNCwzMjIxNSwzMjIxNiwzMjIxNywzMjIxOCwzMjIxOSwzMjIyMCwzMjIyMSwzMjIyMiwzMjIyMywzMjIyNCwzMjIyNSwzMjIyNiwzMjIyNywzMjIyOCwzMjIyOSwzMjIzMCwzMjIzMSwzMjIzMiwzMjIzMywzMjIzNCwzMjIzNSwzMjIzNiwzMjIzNywzMjIzOCwzMjIzOSwzMjI0MCwzMjI0MSwzMjI0MiwzMjI0MywzMjI0NCwzMjI0NSwzMjI0NiwzMjI0NywzMjI0OCwzMjI0OSwzMjI1MCwyMzYxMywyMTE3MCwzMzYwNiwyMDgzNCwzMzU1MCwzMDU1NSwyNjIzMCw0MDEyMCwyMDE0MCwyNDc3OCwzMTkzNCwzMTkyMywzMjQ2MywyMDExNywzNTY4NiwyNjIyMywzOTA0OCwzODc0NSwyMjY1OSwyNTk2NCwzODIzNiwyNDQ1MiwzMDE1MywzODc0MiwzMTQ1NSwzMTQ1NCwyMDkyOCwyODg0NywzMTM4NCwyNTU3OCwzMTM1MCwzMjQxNiwyOTU5MCwzODg5MywyMDAzNywyODc5MiwyMDA2MSwzNzIwMiwyMTQxNywyNTkzNywyNjA4NywzMzI3NiwzMzI4NSwyMTY0NiwyMzYwMSwzMDEwNiwzODgxNiwyNTMwNCwyOTQwMSwzMDE0MSwyMzYyMSwzOTU0NSwzMzczOCwyMzYxNiwyMTYzMiwzMDY5NywyMDAzMCwyNzgyMiwzMjg1OCwyNTI5OCwyNTQ1NCwyNDA0MCwyMDg1NSwzNjMxNywzNjM4MiwzODE5MSwyMDQ2NSwyMTQ3NywyNDgwNywyODg0NCwyMTA5NSwyNTQyNCw0MDUxNSwyMzA3MSwyMDUxOCwzMDUxOSwyMTM2NywzMjQ4MiwyNTczMywyNTg5OSwyNTIyNSwyNTQ5NiwyMDUwMCwyOTIzNywzNTI3MywyMDkxNSwzNTc3NiwzMjQ3NywyMjM0MywzMzc0MCwzODA1NSwyMDg5MSwyMTUzMSwyMzgwMywzMjI1MSwzMjI1MiwzMjI1MywzMjI1NCwzMjI1NSwzMjI1NiwzMjI1NywzMjI1OCwzMjI1OSwzMjI2MCwzMjI2MSwzMjI2MiwzMjI2MywzMjI2NCwzMjI2NSwzMjI2NiwzMjI2NywzMjI2OCwzMjI2OSwzMjI3MCwzMjI3MSwzMjI3MiwzMjI3MywzMjI3NCwzMjI3NSwzMjI3NiwzMjI3NywzMjI3OCwzMjI3OSwzMjI4MCwzMjI4MSwzMjI4MiwzMjI4MywzMjI4NCwzMjI4NSwzMjI4NiwzMjI4NywzMjI4OCwzMjI4OSwzMjI5MCwzMjI5MSwzMjI5MiwzMjI5MywzMjI5NCwzMjI5NSwzMjI5NiwzMjI5NywzMjI5OCwzMjI5OSwzMjMwMCwzMjMwMSwzMjMwMiwzMjMwMywzMjMwNCwzMjMwNSwzMjMwNiwzMjMwNywzMjMwOCwzMjMwOSwzMjMxMCwzMjMxMSwzMjMxMiwzMjMxMywzMjMxNCwzMjMxNiwzMjMxNywzMjMxOCwzMjMxOSwzMjMyMCwzMjMyMiwzMjMyMywzMjMyNCwzMjMyNSwzMjMyNiwzMjMyOCwzMjMyOSwzMjMzMCwzMjMzMSwzMjMzMiwzMjMzMywzMjMzNCwzMjMzNSwzMjMzNiwzMjMzNywzMjMzOCwzMjMzOSwzMjM0MCwzMjM0MSwzMjM0MiwzMjM0MywzMjM0NCwzMjM0NSwzMjM0NiwzMjM0NywzMjM0OCwzMjM0OSwyMDQyNiwzMTQ1OSwyNzk5NCwzNzA4OSwzOTU2NywyMTg4OCwyMTY1NCwyMTM0NSwyMTY3OSwyNDMyMCwyNTU3NywyNjk5OSwyMDk3NSwyNDkzNiwyMTAwMiwyMjU3MCwyMTIwOCwyMjM1MCwzMDczMywzMDQ3NSwyNDI0NywyNDk1MSwzMTk2OCwyNTE3OSwyNTIzOSwyMDEzMCwyODgyMSwzMjc3MSwyNTMzNSwyODkwMCwzODc1MiwyMjM5MSwzMzQ5OSwyNjYwNywyNjg2OSwzMDkzMywzOTA2MywzMTE4NSwyMjc3MSwyMTY4MywyMTQ4NywyODIxMiwyMDgxMSwyMTA1MSwyMzQ1OCwzNTgzOCwzMjk0MywyMTgyNywyMjQzOCwyNDY5MSwyMjM1MywyMTU0OSwzMTM1NCwyNDY1NiwyMzM4MCwyNTUxMSwyNTI0OCwyMTQ3NSwyNTE4NywyMzQ5NSwyNjU0MywyMTc0MSwzMTM5MSwzMzUxMCwzNzIzOSwyNDIxMSwzNTA0NCwyMjg0MCwyMjQ0NiwyNTM1OCwzNjMyOCwzMzAwNywyMjM1OSwzMTYwNywyMDM5MywyNDU1NSwyMzQ4NSwyNzQ1NCwyMTI4MSwzMTU2OCwyOTM3OCwyNjY5NCwzMDcxOSwzMDUxOCwyNjEwMywyMDkxNywyMDExMSwzMDQyMCwyMzc0MywzMTM5NywzMzkwOSwyMjg2MiwzOTc0NSwyMDYwOCwzMjM1MCwzMjM1MSwzMjM1MiwzMjM1MywzMjM1NCwzMjM1NSwzMjM1NiwzMjM1NywzMjM1OCwzMjM1OSwzMjM2MCwzMjM2MSwzMjM2MiwzMjM2MywzMjM2NCwzMjM2NSwzMjM2NiwzMjM2NywzMjM2OCwzMjM2OSwzMjM3MCwzMjM3MSwzMjM3MiwzMjM3MywzMjM3NCwzMjM3NSwzMjM3NiwzMjM3NywzMjM3OCwzMjM3OSwzMjM4MCwzMjM4MSwzMjM4MiwzMjM4MywzMjM4NCwzMjM4NSwzMjM4NywzMjM4OCwzMjM4OSwzMjM5MCwzMjM5MSwzMjM5MiwzMjM5MywzMjM5NCwzMjM5NSwzMjM5NiwzMjM5NywzMjM5OCwzMjM5OSwzMjQwMCwzMjQwMSwzMjQwMiwzMjQwMywzMjQwNCwzMjQwNSwzMjQwNiwzMjQwNywzMjQwOCwzMjQwOSwzMjQxMCwzMjQxMiwzMjQxMywzMjQxNCwzMjQzMCwzMjQzNiwzMjQ0MywzMjQ0NCwzMjQ3MCwzMjQ4NCwzMjQ5MiwzMjUwNSwzMjUyMiwzMjUyOCwzMjU0MiwzMjU2NywzMjU2OSwzMjU3MSwzMjU3MiwzMjU3MywzMjU3NCwzMjU3NSwzMjU3NiwzMjU3NywzMjU3OSwzMjU4MiwzMjU4MywzMjU4NCwzMjU4NSwzMjU4NiwzMjU4NywzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MSwzMjU5NCwzMjU5NSwzOTMwNCwyNDg3MSwyODI5MSwyMjM3MiwyNjExOCwyNTQxNCwyMjI1NiwyNTMyNCwyNTE5MywyNDI3NSwzODQyMCwyMjQwMywyNTI4OSwyMTg5NSwzNDU5MywzMzA5OCwzNjc3MSwyMTg2MiwzMzcxMywyNjQ2OSwzNjE4MiwzNDAxMywyMzE0NiwyNjYzOSwyNTMxOCwzMTcyNiwzODQxNywyMDg0OCwyODU3MiwzNTg4OCwyNTU5NywzNTI3MiwyNTA0MiwzMjUxOCwyODg2NiwyODM4OSwyOTcwMSwyNzAyOCwyOTQzNiwyNDI2NiwzNzA3MCwyNjM5MSwyODAxMCwyNTQzOCwyMTE3MSwyOTI4MiwzMjc2OSwyMDMzMiwyMzAxMywzNzIyNiwyODg4OSwyODA2MSwyMTIwMiwyMDA0OCwzODY0NywzODI1MywzNDE3NCwzMDkyMiwzMjA0NywyMDc2OSwyMjQxOCwyNTc5NCwzMjkwNywzMTg2NywyNzg4MiwyNjg2NSwyNjk3NCwyMDkxOSwyMTQwMCwyNjc5MiwyOTMxMyw0MDY1NCwzMTcyOSwyOTQzMiwzMTE2MywyODQzNSwyOTcwMiwyNjQ0NiwzNzMyNCw0MDEwMCwzMTAzNiwzMzY3MywzMzYyMCwyMTUxOSwyNjY0NywyMDAyOSwyMTM4NSwyMTE2OSwzMDc4MiwyMTM4MiwyMTAzMywyMDYxNiwyMDM2MywyMDQzMiwzMjU5OCwzMjYwMSwzMjYwMywzMjYwNCwzMjYwNSwzMjYwNiwzMjYwOCwzMjYxMSwzMjYxMiwzMjYxMywzMjYxNCwzMjYxNSwzMjYxOSwzMjYyMCwzMjYyMSwzMjYyMywzMjYyNCwzMjYyNywzMjYyOSwzMjYzMCwzMjYzMSwzMjYzMiwzMjYzNCwzMjYzNSwzMjYzNiwzMjYzNywzMjYzOSwzMjY0MCwzMjY0MiwzMjY0MywzMjY0NCwzMjY0NSwzMjY0NiwzMjY0NywzMjY0OCwzMjY0OSwzMjY1MSwzMjY1MywzMjY1NSwzMjY1NiwzMjY1NywzMjY1OCwzMjY1OSwzMjY2MSwzMjY2MiwzMjY2MywzMjY2NCwzMjY2NSwzMjY2NywzMjY2OCwzMjY3MiwzMjY3NCwzMjY3NSwzMjY3NywzMjY3OCwzMjY4MCwzMjY4MSwzMjY4MiwzMjY4MywzMjY4NCwzMjY4NSwzMjY4NiwzMjY4OSwzMjY5MSwzMjY5MiwzMjY5MywzMjY5NCwzMjY5NSwzMjY5OCwzMjY5OSwzMjcwMiwzMjcwNCwzMjcwNiwzMjcwNywzMjcwOCwzMjcxMCwzMjcxMSwzMjcxMiwzMjcxMywzMjcxNSwzMjcxNywzMjcxOSwzMjcyMCwzMjcyMSwzMjcyMiwzMjcyMywzMjcyNiwzMjcyNywzMjcyOSwzMjczMCwzMjczMSwzMjczMiwzMjczMywzMjczNCwzMjczOCwzMjczOSwzMDE3OCwzMTQzNSwzMTg5MCwyNzgxMywzODU4MiwyMTE0NywyOTgyNywyMTczNywyMDQ1NywzMjg1MiwzMzcxNCwzNjgzMCwzODI1NiwyNDI2NSwyNDYwNCwyODA2MywyNDA4OCwyNTk0NywzMzA4MCwzODE0MiwyNDY1MSwyODg2MCwzMjQ1MSwzMTkxOCwyMDkzNywyNjc1MywzMTkyMSwzMzM5MSwyMDAwNCwzNjc0MiwzNzMyNywyNjIzOCwyMDE0MiwzNTg0NSwyNTc2OSwzMjg0MiwyMDY5OCwzMDEwMywyOTEzNCwyMzUyNSwzNjc5NywyODUxOCwyMDEwMiwyNTczMCwzODI0MywyNDI3OCwyNjAwOSwyMTAxNSwzNTAxMCwyODg3MiwyMTE1NSwyOTQ1NCwyOTc0NywyNjUxOSwzMDk2NywzODY3OCwyMDAyMCwzNzA1MSw0MDE1OCwyODEwNywyMDk1NSwzNjE2MSwyMTUzMywyNTI5NCwyOTYxOCwzMzc3NywzODY0Niw0MDgzNiwzODA4MywyMDI3OCwzMjY2NiwyMDk0MCwyODc4OSwzODUxNywyMzcyNSwzOTA0NiwyMTQ3OCwyMDE5NiwyODMxNiwyOTcwNSwyNzA2MCwzMDgyNywzOTMxMSwzMDA0MSwyMTAxNiwzMDI0NCwyNzk2OSwyNjYxMSwyMDg0NSw0MDg1NywzMjg0MywyMTY1NywzMTU0OCwzMTQyMywzMjc0MCwzMjc0MywzMjc0NCwzMjc0NiwzMjc0NywzMjc0OCwzMjc0OSwzMjc1MSwzMjc1NCwzMjc1NiwzMjc1NywzMjc1OCwzMjc1OSwzMjc2MCwzMjc2MSwzMjc2MiwzMjc2NSwzMjc2NiwzMjc2NywzMjc3MCwzMjc3NSwzMjc3NiwzMjc3NywzMjc3OCwzMjc4MiwzMjc4MywzMjc4NSwzMjc4NywzMjc5NCwzMjc5NSwzMjc5NywzMjc5OCwzMjc5OSwzMjgwMSwzMjgwMywzMjgwNCwzMjgxMSwzMjgxMiwzMjgxMywzMjgxNCwzMjgxNSwzMjgxNiwzMjgxOCwzMjgyMCwzMjgyNSwzMjgyNiwzMjgyOCwzMjgzMCwzMjgzMiwzMjgzMywzMjgzNiwzMjgzNywzMjgzOSwzMjg0MCwzMjg0MSwzMjg0NiwzMjg0NywzMjg0OCwzMjg0OSwzMjg1MSwzMjg1MywzMjg1NCwzMjg1NSwzMjg1NywzMjg1OSwzMjg2MCwzMjg2MSwzMjg2MiwzMjg2MywzMjg2NCwzMjg2NSwzMjg2NiwzMjg2NywzMjg2OCwzMjg2OSwzMjg3MCwzMjg3MSwzMjg3MiwzMjg3NSwzMjg3NiwzMjg3NywzMjg3OCwzMjg3OSwzMjg4MCwzMjg4MiwzMjg4MywzMjg4NCwzMjg4NSwzMjg4NiwzMjg4NywzMjg4OCwzMjg4OSwzMjg5MCwzMjg5MSwzMjg5MiwzMjg5MywzODUzNCwyMjQwNCwyNTMxNCwzODQ3MSwyNzAwNCwyMzA0NCwyNTYwMiwzMTY5OSwyODQzMSwzODQ3NSwzMzQ0NiwyMTM0NiwzOTA0NSwyNDIwOCwyODgwOSwyNTUyMywyMTM0OCwzNDM4Myw0MDA2NSw0MDU5NSwzMDg2MCwzODcwNiwzNjMzNSwzNjE2Miw0MDU3NSwyODUxMCwzMTEwOCwyNDQwNSwzODQ3MCwyNTEzNCwzOTU0MCwyMTUyNSwzODEwOSwyMDM4NywyNjA1MywyMzY1MywyMzY0OSwzMjUzMywzNDM4NSwyNzY5NSwyNDQ1OSwyOTU3NSwyODM4OCwzMjUxMSwyMzc4MiwyNTM3MSwyMzQwMiwyODM5MCwyMTM2NSwyMDA4MSwyNTUwNCwzMDA1MywyNTI0OSwzNjcxOCwyMDI2MiwyMDE3NywyNzgxNCwzMjQzOCwzNTc3MCwzMzgyMSwzNDc0NiwzMjU5OSwzNjkyMywzODE3OSwzMTY1NywzOTU4NSwzNTA2NCwzMzg1MywyNzkzMSwzOTU1OCwzMjQ3NiwyMjkyMCw0MDYzNSwyOTU5NSwzMDcyMSwzNDQzNCwzOTUzMiwzOTU1NCwyMjA0MywyMTUyNywyMjQ3NSwyMDA4MCw0MDYxNCwyMTMzNCwzNjgwOCwzMzAzMywzMDYxMCwzOTMxNCwzNDU0MiwyODM4NSwzNDA2NywyNjM2NCwyNDkzMCwyODQ1OSwzMjg5NCwzMjg5NywzMjg5OCwzMjkwMSwzMjkwNCwzMjkwNiwzMjkwOSwzMjkxMCwzMjkxMSwzMjkxMiwzMjkxMywzMjkxNCwzMjkxNiwzMjkxNywzMjkxOSwzMjkyMSwzMjkyNiwzMjkzMSwzMjkzNCwzMjkzNSwzMjkzNiwzMjk0MCwzMjk0NCwzMjk0NywzMjk0OSwzMjk1MCwzMjk1MiwzMjk1MywzMjk1NSwzMjk2NSwzMjk2NywzMjk2OCwzMjk2OSwzMjk3MCwzMjk3MSwzMjk3NSwzMjk3NiwzMjk3NywzMjk3OCwzMjk3OSwzMjk4MCwzMjk4MSwzMjk4NCwzMjk5MSwzMjk5MiwzMjk5NCwzMjk5NSwzMjk5OCwzMzAwNiwzMzAxMywzMzAxNSwzMzAxNywzMzAxOSwzMzAyMiwzMzAyMywzMzAyNCwzMzAyNSwzMzAyNywzMzAyOCwzMzAyOSwzMzAzMSwzMzAzMiwzMzAzNSwzMzAzNiwzMzA0NSwzMzA0NywzMzA0OSwzMzA1MSwzMzA1MiwzMzA1MywzMzA1NSwzMzA1NiwzMzA1NywzMzA1OCwzMzA1OSwzMzA2MCwzMzA2MSwzMzA2MiwzMzA2MywzMzA2NCwzMzA2NSwzMzA2NiwzMzA2NywzMzA2OSwzMzA3MCwzMzA3MiwzMzA3NSwzMzA3NiwzMzA3NywzMzA3OSwzMzA4MSwzMzA4MiwzMzA4MywzMzA4NCwzMzA4NSwzMzA4NywzNTg4MSwzMzQyNiwzMzU3OSwzMDQ1MCwyNzY2NywyNDUzNywzMzcyNSwyOTQ4MywzMzU0MSwzODE3MCwyNzYxMSwzMDY4MywzODA4NiwyMTM1OSwzMzUzOCwyMDg4MiwyNDEyNSwzNTk4MCwzNjE1MiwyMDA0MCwyOTYxMSwyNjUyMiwyNjc1NywzNzIzOCwzODY2NSwyOTAyOCwyNzgwOSwzMDQ3MywyMzE4NiwzODIwOSwyNzU5OSwzMjY1NCwyNjE1MSwyMzUwNCwyMjk2OSwyMzE5NCwzODM3NiwzODM5MSwyMDIwNCwzMzgwNCwzMzk0NSwyNzMwOCwzMDQzMSwzODE5MiwyOTQ2NywyNjc5MCwyMzM5MSwzMDUxMSwzNzI3NCwzODc1MywzMTk2NCwzNjg1NSwzNTg2OCwyNDM1NywzMTg1OSwzMTE5MiwzNTI2OSwyNzg1MiwzNDU4OCwyMzQ5NCwyNDEzMCwyNjgyNSwzMDQ5NiwzMjUwMSwyMDg4NSwyMDgxMywyMTE5MywyMzA4MSwzMjUxNywzODc1NCwzMzQ5NSwyNTU1MSwzMDU5NiwzNDI1NiwzMTE4NiwyODIxOCwyNDIxNywyMjkzNywzNDA2NSwyODc4MSwyNzY2NSwyNTI3OSwzMDM5OSwyNTkzNSwyNDc1MSwzODM5NywyNjEyNiwzNDcxOSw0MDQ4MywzODEyNSwyMTUxNywyMTYyOSwzNTg4NCwyNTcyMCwzMzA4OCwzMzA4OSwzMzA5MCwzMzA5MSwzMzA5MiwzMzA5MywzMzA5NSwzMzA5NywzMzEwMSwzMzEwMiwzMzEwMywzMzEwNiwzMzExMCwzMzExMSwzMzExMiwzMzExNSwzMzExNiwzMzExNywzMzExOCwzMzExOSwzMzEyMSwzMzEyMiwzMzEyMywzMzEyNCwzMzEyNiwzMzEyOCwzMzEzMCwzMzEzMSwzMzEzMiwzMzEzNSwzMzEzOCwzMzEzOSwzMzE0MSwzMzE0MiwzMzE0MywzMzE0NCwzMzE1MywzMzE1NSwzMzE1NiwzMzE1NywzMzE1OCwzMzE1OSwzMzE2MSwzMzE2MywzMzE2NCwzMzE2NSwzMzE2NiwzMzE2OCwzMzE3MCwzMzE3MSwzMzE3MiwzMzE3MywzMzE3NCwzMzE3NSwzMzE3NywzMzE3OCwzMzE4MiwzMzE4MywzMzE4NCwzMzE4NSwzMzE4NiwzMzE4OCwzMzE4OSwzMzE5MSwzMzE5MywzMzE5NSwzMzE5NiwzMzE5NywzMzE5OCwzMzE5OSwzMzIwMCwzMzIwMSwzMzIwMiwzMzIwNCwzMzIwNSwzMzIwNiwzMzIwNywzMzIwOCwzMzIwOSwzMzIxMiwzMzIxMywzMzIxNCwzMzIxNSwzMzIyMCwzMzIyMSwzMzIyMywzMzIyNCwzMzIyNSwzMzIyNywzMzIyOSwzMzIzMCwzMzIzMSwzMzIzMiwzMzIzMywzMzIzNCwzMzIzNSwyNTcyMSwzNDMyMSwyNzE2OSwzMzE4MCwzMDk1MiwyNTcwNSwzOTc2NCwyNTI3MywyNjQxMSwzMzcwNywyMjY5Niw0MDY2NCwyNzgxOSwyODQ0OCwyMzUxOCwzODQ3NiwzNTg1MSwyOTI3OSwyNjU3NiwyNTI4NywyOTI4MSwyMDEzNywyMjk4MiwyNzU5NywyMjY3NSwyNjI4NiwyNDE0OSwyMTIxNSwyNDkxNywyNjQwOCwzMDQ0NiwzMDU2NiwyOTI4NywzMTMwMiwyNTM0MywyMTczOCwyMTU4NCwzODA0OCwzNzAyNywyMzA2OCwzMjQzNSwyNzY3MCwyMDAzNSwyMjkwMiwzMjc4NCwyMjg1NiwyMTMzNSwzMDAwNywzODU5MCwyMjIxOCwyNTM3NiwzMzA0MSwyNDcwMCwzODM5MywyODExOCwyMTYwMiwzOTI5NywyMDg2OSwyMzI3MywzMzAyMSwyMjk1OCwzODY3NSwyMDUyMiwyNzg3NywyMzYxMiwyNTMxMSwyMDMyMCwyMTMxMSwzMzE0NywzNjg3MCwyODM0NiwzNDA5MSwyNTI4OCwyNDE4MCwzMDkxMCwyNTc4MSwyNTQ2NywyNDU2NSwyMzA2NCwzNzI0Nyw0MDQ3OSwyMzYxNSwyNTQyMywzMjgzNCwyMzQyMSwyMTg3MCwzODIxOCwzODIyMSwyODAzNywyNDc0NCwyNjU5MiwyOTQwNiwyMDk1NywyMzQyNSwzMzIzNiwzMzIzNywzMzIzOCwzMzIzOSwzMzI0MCwzMzI0MSwzMzI0MiwzMzI0MywzMzI0NCwzMzI0NSwzMzI0NiwzMzI0NywzMzI0OCwzMzI0OSwzMzI1MCwzMzI1MiwzMzI1MywzMzI1NCwzMzI1NiwzMzI1NywzMzI1OSwzMzI2MiwzMzI2MywzMzI2NCwzMzI2NSwzMzI2NiwzMzI2OSwzMzI3MCwzMzI3MSwzMzI3MiwzMzI3MywzMzI3NCwzMzI3NywzMzI3OSwzMzI4MywzMzI4NywzMzI4OCwzMzI4OSwzMzI5MCwzMzI5MSwzMzI5NCwzMzI5NSwzMzI5NywzMzI5OSwzMzMwMSwzMzMwMiwzMzMwMywzMzMwNCwzMzMwNSwzMzMwNiwzMzMwOSwzMzMxMiwzMzMxNiwzMzMxNywzMzMxOCwzMzMxOSwzMzMyMSwzMzMyNiwzMzMzMCwzMzMzOCwzMzM0MCwzMzM0MSwzMzM0MywzMzM0NCwzMzM0NSwzMzM0NiwzMzM0NywzMzM0OSwzMzM1MCwzMzM1MiwzMzM1NCwzMzM1NiwzMzM1NywzMzM1OCwzMzM2MCwzMzM2MSwzMzM2MiwzMzM2MywzMzM2NCwzMzM2NSwzMzM2NiwzMzM2NywzMzM2OSwzMzM3MSwzMzM3MiwzMzM3MywzMzM3NCwzMzM3NiwzMzM3NywzMzM3OCwzMzM3OSwzMzM4MCwzMzM4MSwzMzM4MiwzMzM4MywzMzM4NSwyNTMxOSwyNzg3MCwyOTI3NSwyNTE5NywzODA2MiwzMjQ0NSwzMzA0MywyNzk4NywyMDg5MiwyNDMyNCwyMjkwMCwyMTE2MiwyNDU5NCwyMjg5OSwyNjI2MiwzNDM4NCwzMDExMSwyNTM4NiwyNTA2MiwzMTk4MywzNTgzNCwyMTczNCwyNzQzMSw0MDQ4NSwyNzU3MiwzNDI2MSwyMTU4OSwyMDU5OCwyNzgxMiwyMTg2NiwzNjI3NiwyOTIyOCwyNDA4NSwyNDU5NywyOTc1MCwyNTI5MywyNTQ5MCwyOTI2MCwyNDQ3MiwyODIyNywyNzk2NiwyNTg1NiwyODUwNCwzMDQyNCwzMDkyOCwzMDQ2MCwzMDAzNiwyMTAyOCwyMTQ2NywyMDA1MSwyNDIyMiwyNjA0OSwzMjgxMCwzMjk4MiwyNTI0MywyMTYzOCwyMTAzMiwyODg0NiwzNDk1NywzNjMwNSwyNzg3MywyMTYyNCwzMjk4NiwyMjUyMSwzNTA2MCwzNjE4MCwzODUwNiwzNzE5NywyMDMyOSwyNzgwMywyMTk0MywzMDQwNiwzMDc2OCwyNTI1NiwyODkyMSwyODU1OCwyNDQyOSwzNDAyOCwyNjg0MiwzMDg0NCwzMTczNSwzMzE5MiwyNjM3OSw0MDUyNywyNTQ0NywzMDg5NiwyMjM4MywzMDczOCwzODcxMywyNTIwOSwyNTI1OSwyMTEyOCwyOTc0OSwyNzYwNywzMzM4NiwzMzM4NywzMzM4OCwzMzM4OSwzMzM5MywzMzM5NywzMzM5OCwzMzM5OSwzMzQwMCwzMzQwMywzMzQwNCwzMzQwOCwzMzQwOSwzMzQxMSwzMzQxMywzMzQxNCwzMzQxNSwzMzQxNywzMzQyMCwzMzQyNCwzMzQyNywzMzQyOCwzMzQyOSwzMzQzMCwzMzQzNCwzMzQzNSwzMzQzOCwzMzQ0MCwzMzQ0MiwzMzQ0MywzMzQ0NywzMzQ1OCwzMzQ2MSwzMzQ2MiwzMzQ2NiwzMzQ2NywzMzQ2OCwzMzQ3MSwzMzQ3MiwzMzQ3NCwzMzQ3NSwzMzQ3NywzMzQ3OCwzMzQ4MSwzMzQ4OCwzMzQ5NCwzMzQ5NywzMzQ5OCwzMzUwMSwzMzUwNiwzMzUxMSwzMzUxMiwzMzUxMywzMzUxNCwzMzUxNiwzMzUxNywzMzUxOCwzMzUyMCwzMzUyMiwzMzUyMywzMzUyNSwzMzUyNiwzMzUyOCwzMzUzMCwzMzUzMiwzMzUzMywzMzUzNCwzMzUzNSwzMzUzNiwzMzU0NiwzMzU0NywzMzU0OSwzMzU1MiwzMzU1NCwzMzU1NSwzMzU1OCwzMzU2MCwzMzU2MSwzMzU2NSwzMzU2NiwzMzU2NywzMzU2OCwzMzU2OSwzMzU3MCwzMzU3MSwzMzU3MiwzMzU3MywzMzU3NCwzMzU3NywzMzU3OCwzMzU4MiwzMzU4NCwzMzU4NiwzMzU5MSwzMzU5NSwzMzU5NywyMTg2MCwzMzA4NiwzMDEzMCwzMDM4MiwyMTMwNSwzMDE3NCwyMDczMSwyMzYxNywzNTY5MiwzMTY4NywyMDU1OSwyOTI1NSwzOTU3NSwzOTEyOCwyODQxOCwyOTkyMiwzMTA4MCwyNTczNSwzMDYyOSwyNTM0MCwzOTA1NywzNjEzOSwyMTY5NywzMjg1NiwyMDA1MCwyMjM3OCwzMzUyOSwzMzgwNSwyNDE3OSwyMDk3MywyOTk0MiwzNTc4MCwyMzYzMSwyMjM2OSwyNzkwMCwzOTA0NywyMzExMCwzMDc3MiwzOTc0OCwzNjg0MywzMTg5MywyMTA3OCwyNTE2OSwzODEzOCwyMDE2NiwzMzY3MCwzMzg4OSwzMzc2OSwzMzk3MCwyMjQ4NCwyNjQyMCwyMjI3NSwyNjIyMiwyODAwNiwzNTg4OSwyNjMzMywyODY4OSwyNjM5OSwyNzQ1MCwyNjY0NiwyNTExNCwyMjk3MSwxOTk3MSwyMDkzMiwyODQyMiwyNjU3OCwyNzc5MSwyMDg1NCwyNjgyNywyMjg1NSwyNzQ5NSwzMDA1NCwyMzgyMiwzMzA0MCw0MDc4NCwyNjA3MSwzMTA0OCwzMTA0MSwzOTU2OSwzNjIxNSwyMzY4MiwyMDA2MiwyMDIyNSwyMTU1MSwyMjg2NSwzMDczMiwyMjEyMCwyNzY2OCwzNjgwNCwyNDMyMywyNzc3MywyNzg3NSwzNTc1NSwyNTQ4OCwzMzU5OCwzMzU5OSwzMzYwMSwzMzYwMiwzMzYwNCwzMzYwNSwzMzYwOCwzMzYxMCwzMzYxMSwzMzYxMiwzMzYxMywzMzYxNCwzMzYxOSwzMzYyMSwzMzYyMiwzMzYyMywzMzYyNCwzMzYyNSwzMzYyOSwzMzYzNCwzMzY0OCwzMzY0OSwzMzY1MCwzMzY1MSwzMzY1MiwzMzY1MywzMzY1NCwzMzY1NywzMzY1OCwzMzY2MiwzMzY2MywzMzY2NCwzMzY2NSwzMzY2NiwzMzY2NywzMzY2OCwzMzY3MSwzMzY3MiwzMzY3NCwzMzY3NSwzMzY3NiwzMzY3NywzMzY3OSwzMzY4MCwzMzY4MSwzMzY4NCwzMzY4NSwzMzY4NiwzMzY4NywzMzY4OSwzMzY5MCwzMzY5MywzMzY5NSwzMzY5NywzMzY5OCwzMzY5OSwzMzcwMCwzMzcwMSwzMzcwMiwzMzcwMywzMzcwOCwzMzcwOSwzMzcxMCwzMzcxMSwzMzcxNywzMzcyMywzMzcyNiwzMzcyNywzMzczMCwzMzczMSwzMzczMiwzMzczNCwzMzczNiwzMzczNywzMzczOSwzMzc0MSwzMzc0MiwzMzc0NCwzMzc0NSwzMzc0NiwzMzc0NywzMzc0OSwzMzc1MSwzMzc1MywzMzc1NCwzMzc1NSwzMzc1OCwzMzc2MiwzMzc2MywzMzc2NCwzMzc2NiwzMzc2NywzMzc2OCwzMzc3MSwzMzc3MiwzMzc3MywyNDY4OCwyNzk2NSwyOTMwMSwyNTE5MCwzODAzMCwzODA4NSwyMTMxNSwzNjgwMSwzMTYxNCwyMDE5MSwzNTg3OCwyMDA5NCw0MDY2MCwzODA2NSwzODA2NywyMTA2OSwyODUwOCwzNjk2MywyNzk3MywzNTg5MiwyMjU0NSwyMzg4NCwyNzQyNCwyNzQ2NSwyNjUzOCwyMTU5NSwzMzEwOCwzMjY1MiwyMjY4MSwzNDEwMywyNDM3OCwyNTI1MCwyNzIwNywzODIwMSwyNTk3MCwyNDcwOCwyNjcyNSwzMDYzMSwyMDA1MiwyMDM5MiwyNDAzOSwzODgwOCwyNTc3MiwzMjcyOCwyMzc4OSwyMDQzMSwzMTM3MywyMDk5OSwzMzU0MCwxOTk4OCwyNDYyMywzMTM2MywzODA1NCwyMDQwNSwyMDE0NiwzMTIwNiwyOTc0OCwyMTIyMCwzMzQ2NSwyNTgxMCwzMTE2NSwyMzUxNywyNzc3NywzODczOCwzNjczMSwyNzY4MiwyMDU0MiwyMTM3NSwyODE2NSwyNTgwNiwyNjIyOCwyNzY5NiwyNDc3MywzOTAzMSwzNTgzMSwyNDE5OCwyOTc1NiwzMTM1MSwzMTE3OSwxOTk5MiwzNzA0MSwyOTY5OSwyNzcxNCwyMjIzNCwzNzE5NSwyNzg0NSwzNjIzNSwyMTMwNiwzNDUwMiwyNjM1NCwzNjUyNywyMzYyNCwzOTUzNywyODE5MiwzMzc3NCwzMzc3NSwzMzc3OSwzMzc4MCwzMzc4MSwzMzc4MiwzMzc4MywzMzc4NiwzMzc4NywzMzc4OCwzMzc5MCwzMzc5MSwzMzc5MiwzMzc5NCwzMzc5NywzMzc5OSwzMzgwMCwzMzgwMSwzMzgwMiwzMzgwOCwzMzgxMCwzMzgxMSwzMzgxMiwzMzgxMywzMzgxNCwzMzgxNSwzMzgxNywzMzgxOCwzMzgxOSwzMzgyMiwzMzgyMywzMzgyNCwzMzgyNSwzMzgyNiwzMzgyNywzMzgzMywzMzgzNCwzMzgzNSwzMzgzNiwzMzgzNywzMzgzOCwzMzgzOSwzMzg0MCwzMzg0MiwzMzg0MywzMzg0NCwzMzg0NSwzMzg0NiwzMzg0NywzMzg0OSwzMzg1MCwzMzg1MSwzMzg1NCwzMzg1NSwzMzg1NiwzMzg1NywzMzg1OCwzMzg1OSwzMzg2MCwzMzg2MSwzMzg2MywzMzg2NCwzMzg2NSwzMzg2NiwzMzg2NywzMzg2OCwzMzg2OSwzMzg3MCwzMzg3MSwzMzg3MiwzMzg3NCwzMzg3NSwzMzg3NiwzMzg3NywzMzg3OCwzMzg4MCwzMzg4NSwzMzg4NiwzMzg4NywzMzg4OCwzMzg5MCwzMzg5MiwzMzg5MywzMzg5NCwzMzg5NSwzMzg5NiwzMzg5OCwzMzkwMiwzMzkwMywzMzkwNCwzMzkwNiwzMzkwOCwzMzkxMSwzMzkxMywzMzkxNSwzMzkxNiwyMTQ2MiwyMzA5NCw0MDg0MywzNjI1OSwyMTQzNSwyMjI4MCwzOTA3OSwyNjQzNSwzNzI3NSwyNzg0OSwyMDg0MCwzMDE1NCwyNTMzMSwyOTM1NiwyMTA0OCwyMTE0OSwzMjU3MCwyODgyMCwzMDI2NCwyMTM2NCw0MDUyMiwyNzA2MywzMDgzMCwzODU5MiwzNTAzMywzMjY3NiwyODk4MiwyOTEyMywyMDg3MywyNjU3OSwyOTkyNCwyMjc1NiwyNTg4MCwyMjE5OSwzNTc1MywzOTI4NiwyNTIwMCwzMjQ2OSwyNDgyNSwyODkwOSwyMjc2NCwyMDE2MSwyMDE1NCwyNDUyNSwzODg4NywyMDIxOSwzNTc0OCwyMDk5NSwyMjkyMiwzMjQyNywyNTE3MiwyMDE3MywyNjA4NSwyNTEwMiwzMzU5MiwzMzk5MywzMzYzNSwzNDcwMSwyOTA3NiwyODM0MiwyMzQ4MSwzMjQ2NiwyMDg4NywyNTU0NSwyNjU4MCwzMjkwNSwzMzU5MywzNDgzNywyMDc1NCwyMzQxOCwyMjkxNCwzNjc4NSwyMDA4MywyNzc0MSwyMDgzNywzNTEwOSwzNjcxOSwzODQ0NiwzNDEyMiwyOTc5MCwzODE2MCwzODM4NCwyODA3MCwzMzUwOSwyNDM2OSwyNTc0NiwyNzkyMiwzMzgzMiwzMzEzNCw0MDEzMSwyMjYyMiwzNjE4NywxOTk3NywyMTQ0MSwzMzkxNywzMzkxOCwzMzkxOSwzMzkyMCwzMzkyMSwzMzkyMywzMzkyNCwzMzkyNSwzMzkyNiwzMzkzMCwzMzkzMywzMzkzNSwzMzkzNiwzMzkzNywzMzkzOCwzMzkzOSwzMzk0MCwzMzk0MSwzMzk0MiwzMzk0NCwzMzk0NiwzMzk0NywzMzk0OSwzMzk1MCwzMzk1MSwzMzk1MiwzMzk1NCwzMzk1NSwzMzk1NiwzMzk1NywzMzk1OCwzMzk1OSwzMzk2MCwzMzk2MSwzMzk2MiwzMzk2MywzMzk2NCwzMzk2NSwzMzk2NiwzMzk2OCwzMzk2OSwzMzk3MSwzMzk3MywzMzk3NCwzMzk3NSwzMzk3OSwzMzk4MCwzMzk4MiwzMzk4NCwzMzk4NiwzMzk4NywzMzk4OSwzMzk5MCwzMzk5MSwzMzk5MiwzMzk5NSwzMzk5NiwzMzk5OCwzMzk5OSwzNDAwMiwzNDAwNCwzNDAwNSwzNDAwNywzNDAwOCwzNDAwOSwzNDAxMCwzNDAxMSwzNDAxMiwzNDAxNCwzNDAxNywzNDAxOCwzNDAyMCwzNDAyMywzNDAyNCwzNDAyNSwzNDAyNiwzNDAyNywzNDAyOSwzNDAzMCwzNDAzMSwzNDAzMywzNDAzNCwzNDAzNSwzNDAzNiwzNDAzNywzNDAzOCwzNDAzOSwzNDA0MCwzNDA0MSwzNDA0MiwzNDA0MywzNDA0NSwzNDA0NiwzNDA0OCwzNDA0OSwzNDA1MCwyMDI1NCwyNTk1NSwyNjcwNSwyMTk3MSwyMDAwNywyNTYyMCwzOTU3OCwyNTE5NSwyMzIzNCwyOTc5MSwzMzM5NCwyODA3MywyNjg2MiwyMDcxMSwzMzY3OCwzMDcyMiwyNjQzMiwyMTA0OSwyNzgwMSwzMjQzMywyMDY2NywyMTg2MSwyOTAyMiwzMTU3OSwyNjE5NCwyOTY0MiwzMzUxNSwyNjQ0MSwyMzY2NSwyMTAyNCwyOTA1MywzNDkyMywzODM3OCwzODQ4NSwyNTc5NywzNjE5MywzMzIwMywyMTg5MiwyNzczMywyNTE1OSwzMjU1OCwyMjY3NCwyMDI2MCwyMTgzMCwzNjE3NSwyNjE4OCwxOTk3OCwyMzU3OCwzNTA1OSwyNjc4NiwyNTQyMiwzMTI0NSwyODkwMywzMzQyMSwyMTI0MiwzODkwMiwyMzU2OSwyMTczNiwzNzA0NSwzMjQ2MSwyMjg4MiwzNjE3MCwzNDUwMywzMzI5MiwzMzI5MywzNjE5OCwyNTY2OCwyMzU1NiwyNDkxMywyODA0MSwzMTAzOCwzNTc3NCwzMDc3NSwzMDAwMywyMTYyNywyMDI4MCwzNjUyMywyODE0NSwyMzA3MiwzMjQ1MywzMTA3MCwyNzc4NCwyMzQ1NywyMzE1OCwyOTk3OCwzMjk1OCwyNDkxMCwyODE4MywyMjc2OCwyOTk4MywyOTk4OSwyOTI5OCwyMTMxOSwzMjQ5OSwzNDA1MSwzNDA1MiwzNDA1MywzNDA1NCwzNDA1NSwzNDA1NiwzNDA1NywzNDA1OCwzNDA1OSwzNDA2MSwzNDA2MiwzNDA2MywzNDA2NCwzNDA2NiwzNDA2OCwzNDA2OSwzNDA3MCwzNDA3MiwzNDA3MywzNDA3NSwzNDA3NiwzNDA3NywzNDA3OCwzNDA4MCwzNDA4MiwzNDA4MywzNDA4NCwzNDA4NSwzNDA4NiwzNDA4NywzNDA4OCwzNDA4OSwzNDA5MCwzNDA5MywzNDA5NCwzNDA5NSwzNDA5NiwzNDA5NywzNDA5OCwzNDA5OSwzNDEwMCwzNDEwMSwzNDEwMiwzNDExMCwzNDExMSwzNDExMiwzNDExMywzNDExNCwzNDExNiwzNDExNywzNDExOCwzNDExOSwzNDEyMywzNDEyNCwzNDEyNSwzNDEyNiwzNDEyNywzNDEyOCwzNDEyOSwzNDEzMCwzNDEzMSwzNDEzMiwzNDEzMywzNDEzNSwzNDEzNiwzNDEzOCwzNDEzOSwzNDE0MCwzNDE0MSwzNDE0MywzNDE0NCwzNDE0NSwzNDE0NiwzNDE0NywzNDE0OSwzNDE1MCwzNDE1MSwzNDE1MywzNDE1NCwzNDE1NSwzNDE1NiwzNDE1NywzNDE1OCwzNDE1OSwzNDE2MCwzNDE2MSwzNDE2MywzNDE2NSwzNDE2NiwzNDE2NywzNDE2OCwzNDE3MiwzNDE3MywzNDE3NSwzNDE3NiwzNDE3NywzMDQ2NSwzMDQyNywyMTA5NywzMjk4OCwyMjMwNywyNDA3MiwyMjgzMywyOTQyMiwyNjA0NSwyODI4NywzNTc5OSwyMzYwOCwzNDQxNywyMTMxMywzMDcwNywyNTM0MiwyNjEwMiwyMDE2MCwzOTEzNSwzNDQzMiwyMzQ1NCwzNTc4MiwyMTQ5MCwzMDY5MCwyMDM1MSwyMzYzMCwzOTU0MiwyMjk4NywyNDMzNSwzMTAzNCwyMjc2MywxOTk5MCwyNjYyMywyMDEwNywyNTMyNSwzNTQ3NSwzNjg5MywyMTE4MywyNjE1OSwyMTk4MCwyMjEyNCwzNjg2NiwyMDE4MSwyMDM2NSwzNzMyMiwzOTI4MCwyNzY2MywyNDA2NiwyNDY0MywyMzQ2MCwzNTI3MCwzNTc5NywyNTkxMCwyNTE2MywzOTMxOCwyMzQzMiwyMzU1MSwyNTQ4MCwyMTgwNiwyMTQ2MywzMDI0NiwyMDg2MSwzNDA5MiwyNjUzMCwyNjgwMywyNzUzMCwyNTIzNCwzNjc1NSwyMTQ2MCwzMzI5OCwyODExMywzMDA5NSwyMDA3MCwzNjE3NCwyMzQwOCwyOTA4NywzNDIyMywyNjI1NywyNjMyOSwzMjYyNiwzNDU2MCw0MDY1Myw0MDczNiwyMzY0NiwyNjQxNSwzNjg0OCwyNjY0MSwyNjQ2MywyNTEwMSwzMTQ0NiwyMjY2MSwyNDI0NiwyNTk2OCwyODQ2NSwzNDE3OCwzNDE3OSwzNDE4MiwzNDE4NCwzNDE4NSwzNDE4NiwzNDE4NywzNDE4OCwzNDE4OSwzNDE5MCwzNDE5MiwzNDE5MywzNDE5NCwzNDE5NSwzNDE5NiwzNDE5NywzNDE5OCwzNDE5OSwzNDIwMCwzNDIwMSwzNDIwMiwzNDIwNSwzNDIwNiwzNDIwNywzNDIwOCwzNDIwOSwzNDIxMCwzNDIxMSwzNDIxMywzNDIxNCwzNDIxNSwzNDIxNywzNDIxOSwzNDIyMCwzNDIyMSwzNDIyNSwzNDIyNiwzNDIyNywzNDIyOCwzNDIyOSwzNDIzMCwzNDIzMiwzNDIzNCwzNDIzNSwzNDIzNiwzNDIzNywzNDIzOCwzNDIzOSwzNDI0MCwzNDI0MiwzNDI0MywzNDI0NCwzNDI0NSwzNDI0NiwzNDI0NywzNDI0OCwzNDI1MCwzNDI1MSwzNDI1MiwzNDI1MywzNDI1NCwzNDI1NywzNDI1OCwzNDI2MCwzNDI2MiwzNDI2MywzNDI2NCwzNDI2NSwzNDI2NiwzNDI2NywzNDI2OSwzNDI3MCwzNDI3MSwzNDI3MiwzNDI3MywzNDI3NCwzNDI3NSwzNDI3NywzNDI3OCwzNDI3OSwzNDI4MCwzNDI4MiwzNDI4MywzNDI4NCwzNDI4NSwzNDI4NiwzNDI4NywzNDI4OCwzNDI4OSwzNDI5MCwzNDI5MSwzNDI5MiwzNDI5MywzNDI5NCwzNDI5NSwzNDI5NiwyNDY2MSwyMTA0NywzMjc4MSwyNTY4NCwzNDkyOCwyOTk5MywyNDA2OSwyNjY0MywyNTMzMiwzODY4NCwyMTQ1MiwyOTI0NSwzNTg0MSwyNzcwMCwzMDU2MSwzMTI0NiwyMTU1MCwzMDYzNiwzOTAzNCwzMzMwOCwzNTgyOCwzMDgwNSwyNjM4OCwyODg2NSwyNjAzMSwyNTc0OSwyMjA3MCwyNDYwNSwzMTE2OSwyMTQ5NiwxOTk5NywyNzUxNSwzMjkwMiwyMzU0NiwyMTk4NywyMjIzNSwyMDI4MiwyMDI4NCwzOTI4MiwyNDA1MSwyNjQ5NCwzMjgyNCwyNDU3OCwzOTA0MiwzNjg2NSwyMzQzNSwzNTc3MiwzNTgyOSwyNTYyOCwzMzM2OCwyNTgyMiwyMjAxMywzMzQ4NywzNzIyMSwyMDQzOSwzMjAzMiwzNjg5NSwzMTkwMywyMDcyMywyMjYwOSwyODMzNSwyMzQ4NywzNTc4NSwzMjg5OSwzNzI0MCwzMzk0OCwzMTYzOSwzNDQyOSwzODUzOSwzODU0MywzMjQ4NSwzOTYzNSwzMDg2MiwyMzY4MSwzMTMxOSwzNjkzMCwzODU2NywzMTA3MSwyMzM4NSwyNTQzOSwzMTQ5OSwzNDAwMSwyNjc5NywyMTc2NiwzMjU1MywyOTcxMiwzMjAzNCwzODE0NSwyNTE1MiwyMjYwNCwyMDE4MiwyMzQyNywyMjkwNSwyMjYxMiwzNDI5NywzNDI5OCwzNDMwMCwzNDMwMSwzNDMwMiwzNDMwNCwzNDMwNSwzNDMwNiwzNDMwNywzNDMwOCwzNDMxMCwzNDMxMSwzNDMxMiwzNDMxMywzNDMxNCwzNDMxNSwzNDMxNiwzNDMxNywzNDMxOCwzNDMxOSwzNDMyMCwzNDMyMiwzNDMyMywzNDMyNCwzNDMyNSwzNDMyNywzNDMyOCwzNDMyOSwzNDMzMCwzNDMzMSwzNDMzMiwzNDMzMywzNDMzNCwzNDMzNSwzNDMzNiwzNDMzNywzNDMzOCwzNDMzOSwzNDM0MCwzNDM0MSwzNDM0MiwzNDM0NCwzNDM0NiwzNDM0NywzNDM0OCwzNDM0OSwzNDM1MCwzNDM1MSwzNDM1MiwzNDM1MywzNDM1NCwzNDM1NSwzNDM1NiwzNDM1NywzNDM1OCwzNDM1OSwzNDM2MSwzNDM2MiwzNDM2MywzNDM2NSwzNDM2NiwzNDM2NywzNDM2OCwzNDM2OSwzNDM3MCwzNDM3MSwzNDM3MiwzNDM3MywzNDM3NCwzNDM3NSwzNDM3NiwzNDM3NywzNDM3OCwzNDM3OSwzNDM4MCwzNDM4NiwzNDM4NywzNDM4OSwzNDM5MCwzNDM5MSwzNDM5MiwzNDM5MywzNDM5NSwzNDM5NiwzNDM5NywzNDM5OSwzNDQwMCwzNDQwMSwzNDQwMywzNDQwNCwzNDQwNSwzNDQwNiwzNDQwNywzNDQwOCwzNDQwOSwzNDQxMCwyOTU0OSwyNTM3NCwzNjQyNywzNjM2NywzMjk3NCwzMzQ5MiwyNTI2MCwyMTQ4OCwyNzg4OCwzNzIxNCwyMjgyNiwyNDU3NywyNzc2MCwyMjM0OSwyNTY3NCwzNjEzOCwzMDI1MSwyODM5MywyMjM2MywyNzI2NCwzMDE5MiwyODUyNSwzNTg4NSwzNTg0OCwyMjM3NCwyNzYzMSwzNDk2MiwzMDg5OSwyNTUwNiwyMTQ5NywyODg0NSwyNzc0OCwyMjYxNiwyNTY0MiwyMjUzMCwyNjg0OCwzMzE3OSwyMTc3NiwzMTk1OCwyMDUwNCwzNjUzOCwyODEwOCwzNjI1NSwyODkwNywyNTQ4NywyODA1OSwyODM3MiwzMjQ4NiwzMzc5NiwyNjY5MSwzNjg2NywyODEyMCwzODUxOCwzNTc1MiwyMjg3MSwyOTMwNSwzNDI3NiwzMzE1MCwzMDE0MCwzNTQ2NiwyNjc5OSwyMTA3NiwzNjM4NiwzODE2MSwyNTU1MiwzOTA2NCwzNjQyMCwyMTg4NCwyMDMwNywyNjM2NywyMjE1OSwyNDc4OSwyODA1MywyMTA1OSwyMzYyNSwyMjgyNSwyODE1NSwyMjYzNSwzMDAwMCwyOTk4MCwyNDY4NCwzMzMwMCwzMzA5NCwyNTM2MSwyNjQ2NSwzNjgzNCwzMDUyMiwzNjMzOSwzNjE0OCwzODA4MSwyNDA4NiwyMTM4MSwyMTU0OCwyODg2NywzNDQxMywzNDQxNSwzNDQxNiwzNDQxOCwzNDQxOSwzNDQyMCwzNDQyMSwzNDQyMiwzNDQyMywzNDQyNCwzNDQzNSwzNDQzNiwzNDQzNywzNDQzOCwzNDQzOSwzNDQ0MCwzNDQ0MSwzNDQ0NiwzNDQ0NywzNDQ0OCwzNDQ0OSwzNDQ1MCwzNDQ1MiwzNDQ1NCwzNDQ1NSwzNDQ1NiwzNDQ1NywzNDQ1OCwzNDQ1OSwzNDQ2MiwzNDQ2MywzNDQ2NCwzNDQ2NSwzNDQ2NiwzNDQ2OSwzNDQ3MCwzNDQ3NSwzNDQ3NywzNDQ3OCwzNDQ4MiwzNDQ4MywzNDQ4NywzNDQ4OCwzNDQ4OSwzNDQ5MSwzNDQ5MiwzNDQ5MywzNDQ5NCwzNDQ5NSwzNDQ5NywzNDQ5OCwzNDQ5OSwzNDUwMSwzNDUwNCwzNDUwOCwzNDUwOSwzNDUxNCwzNDUxNSwzNDUxNywzNDUxOCwzNDUxOSwzNDUyMiwzNDUyNCwzNDUyNSwzNDUyOCwzNDUyOSwzNDUzMCwzNDUzMSwzNDUzMywzNDUzNCwzNDUzNSwzNDUzNiwzNDUzOCwzNDUzOSwzNDU0MCwzNDU0MywzNDU0OSwzNDU1MCwzNDU1MSwzNDU1NCwzNDU1NSwzNDU1NiwzNDU1NywzNDU1OSwzNDU2MSwzNDU2NCwzNDU2NSwzNDU2NiwzNDU3MSwzNDU3MiwzNDU3NCwzNDU3NSwzNDU3NiwzNDU3NywzNDU4MCwzNDU4MiwyNzcxMiwyNDMxMSwyMDU3MiwyMDE0MSwyNDIzNywyNTQwMiwzMzM1MSwzNjg5MCwyNjcwNCwzNzIzMCwzMDY0MywyMTUxNiwzODEwOCwyNDQyMCwzMTQ2MSwyNjc0MiwyNTQxMywzMTU3MCwzMjQ3OSwzMDE3MSwyMDU5OSwyNTIzNywyMjgzNiwzNjg3OSwyMDk4NCwzMTE3MSwzMTM2MSwyMjI3MCwyNDQ2NiwzNjg4NCwyODAzNCwyMzY0OCwyMjMwMywyMTUyMCwyMDgyMCwyODIzNywyMjI0MiwyNTUxMiwzOTA1OSwzMzE1MSwzNDU4MSwzNTExNCwzNjg2NCwyMTUzNCwyMzY2MywzMzIxNiwyNTMwMiwyNTE3NiwzMzA3Myw0MDUwMSwzODQ2NCwzOTUzNCwzOTU0OCwyNjkyNSwyMjk0OSwyNTI5OSwyMTgyMiwyNTM2NiwyMTcwMywzNDUyMSwyNzk2NCwyMzA0MywyOTkyNiwzNDk3MiwyNzQ5OCwyMjgwNiwzNTkxNiwyNDM2NywyODI4NiwyOTYwOSwzOTAzNywyMDAyNCwyODkxOSwyMzQzNiwzMDg3MSwyNTQwNSwyNjIwMiwzMDM1OCwyNDc3OSwyMzQ1MSwyMzExMywxOTk3NSwzMzEwOSwyNzc1NCwyOTU3OSwyMDEyOSwyNjUwNSwzMjU5MywyNDQ0OCwyNjEwNiwyNjM5NSwyNDUzNiwyMjkxNiwyMzA0MSwzNDU4NSwzNDU4NywzNDU4OSwzNDU5MSwzNDU5MiwzNDU5NiwzNDU5OCwzNDU5OSwzNDYwMCwzNDYwMiwzNDYwMywzNDYwNCwzNDYwNSwzNDYwNywzNDYwOCwzNDYxMCwzNDYxMSwzNDYxMywzNDYxNCwzNDYxNiwzNDYxNywzNDYxOCwzNDYyMCwzNDYyMSwzNDYyNCwzNDYyNSwzNDYyNiwzNDYyNywzNDYyOCwzNDYyOSwzNDYzMCwzNDYzNCwzNDYzNSwzNDYzNywzNDYzOSwzNDY0MCwzNDY0MSwzNDY0MiwzNDY0NCwzNDY0NSwzNDY0NiwzNDY0OCwzNDY1MCwzNDY1MSwzNDY1MiwzNDY1MywzNDY1NCwzNDY1NSwzNDY1NywzNDY1OCwzNDY2MiwzNDY2MywzNDY2NCwzNDY2NSwzNDY2NiwzNDY2NywzNDY2OCwzNDY2OSwzNDY3MSwzNDY3MywzNDY3NCwzNDY3NSwzNDY3NywzNDY3OSwzNDY4MCwzNDY4MSwzNDY4MiwzNDY4NywzNDY4OCwzNDY4OSwzNDY5MiwzNDY5NCwzNDY5NSwzNDY5NywzNDY5OCwzNDcwMCwzNDcwMiwzNDcwMywzNDcwNCwzNDcwNSwzNDcwNiwzNDcwOCwzNDcwOSwzNDcxMCwzNDcxMiwzNDcxMywzNDcxNCwzNDcxNSwzNDcxNiwzNDcxNywzNDcxOCwzNDcyMCwzNDcyMSwzNDcyMiwzNDcyMywzNDcyNCwyNDAxMywyNDQ5NCwyMTM2MSwzODg4NiwzNjgyOSwyNjY5MywyMjI2MCwyMTgwNywyNDc5OSwyMDAyNiwyODQ5MywzMjUwMCwzMzQ3OSwzMzgwNiwyMjk5NiwyMDI1NSwyMDI2NiwyMzYxNCwzMjQyOCwyNjQxMCwzNDA3NCwyMTYxOSwzMDAzMSwzMjk2MywyMTg5MCwzOTc1OSwyMDMwMSwyODIwNSwzNTg1OSwyMzU2MSwyNDk0NCwyMTM1NSwzMDIzOSwyODIwMSwzNDQ0MiwyNTk5MSwzODM5NSwzMjQ0MSwyMTU2MywzMTI4MywzMjAxMCwzODM4MiwyMTk4NSwzMjcwNSwyOTkzNCwyNTM3MywzNDU4MywyODA2NSwzMTM4OSwyNTEwNSwyNjAxNywyMTM1MSwyNTU2OSwyNzc3OSwyNDA0MywyMTU5NiwzODA1NiwyMDA0NCwyNzc0NSwzNTgyMCwyMzYyNywyNjA4MCwzMzQzNiwyNjc5MSwyMTU2NiwyMTU1NiwyNzU5NSwyNzQ5NCwyMDExNiwyNTQxMCwyMTMyMCwzMzMxMCwyMDIzNywyMDM5OCwyMjM2NiwyNTA5OCwzODY1NCwyNjIxMiwyOTI4OSwyMTI0NywyMTE1MywyNDczNSwzNTgyMywyNjEzMiwyOTA4MSwyNjUxMiwzNTE5OSwzMDgwMiwzMDcxNywyNjIyNCwyMjA3NSwyMTU2MCwzODE3NywyOTMwNiwzNDcyNSwzNDcyNiwzNDcyNywzNDcyOSwzNDczMCwzNDczNCwzNDczNiwzNDczNywzNDczOCwzNDc0MCwzNDc0MiwzNDc0MywzNDc0NCwzNDc0NSwzNDc0NywzNDc0OCwzNDc1MCwzNDc1MSwzNDc1MywzNDc1NCwzNDc1NSwzNDc1NiwzNDc1NywzNDc1OSwzNDc2MCwzNDc2MSwzNDc2NCwzNDc2NSwzNDc2NiwzNDc2NywzNDc2OCwzNDc3MiwzNDc3MywzNDc3NCwzNDc3NSwzNDc3NiwzNDc3NywzNDc3OCwzNDc4MCwzNDc4MSwzNDc4MiwzNDc4MywzNDc4NSwzNDc4NiwzNDc4NywzNDc4OCwzNDc5MCwzNDc5MSwzNDc5MiwzNDc5MywzNDc5NSwzNDc5NiwzNDc5NywzNDc5OSwzNDgwMCwzNDgwMSwzNDgwMiwzNDgwMywzNDgwNCwzNDgwNSwzNDgwNiwzNDgwNywzNDgwOCwzNDgxMCwzNDgxMSwzNDgxMiwzNDgxMywzNDgxNSwzNDgxNiwzNDgxNywzNDgxOCwzNDgyMCwzNDgyMSwzNDgyMiwzNDgyMywzNDgyNCwzNDgyNSwzNDgyNywzNDgyOCwzNDgyOSwzNDgzMCwzNDgzMSwzNDgzMiwzNDgzMywzNDgzNCwzNDgzNiwzNDgzOSwzNDg0MCwzNDg0MSwzNDg0MiwzNDg0NCwzNDg0NSwzNDg0NiwzNDg0NywzNDg0OCwzNDg1MSwzMTIzMiwyNDY4NywyNDA3NiwyNDcxMywzMzE4MSwyMjgwNSwyNDc5NiwyOTA2MCwyODkxMSwyODMzMCwyNzcyOCwyOTMxMiwyNzI2OCwzNDk4OSwyNDEwOSwyMDA2NCwyMzIxOSwyMTkxNiwzODExNSwyNzkyNywzMTk5NSwzODU1MywyNTEwMywzMjQ1NCwzMDYwNiwzNDQzMCwyMTI4MywzODY4NiwzNjc1OCwyNjI0NywyMzc3NywyMDM4NCwyOTQyMSwxOTk3OSwyMTQxNCwyMjc5OSwyMTUyMywyNTQ3MiwzODE4NCwyMDgwOCwyMDE4NSw0MDA5MiwzMjQyMCwyMTY4OCwzNjEzMiwzNDkwMCwzMzMzNSwzODM4NiwyODA0NiwyNDM1OCwyMzI0NCwyNjE3NCwzODUwNSwyOTYxNiwyOTQ4NiwyMTQzOSwzMzE0NiwzOTMwMSwzMjY3MywyMzQ2NiwzODUxOSwzODQ4MCwzMjQ0NywzMDQ1NiwyMTQxMCwzODI2MiwzOTMyMSwzMTY2NSwzNTE0MCwyODI0OCwyMDA2NSwzMjcyNCwzMTA3NywzNTgxNCwyNDgxOSwyMTcwOSwyMDEzOSwzOTAzMywyNDA1NSwyNzIzMywyMDY4NywyMTUyMSwzNTkzNywzMzgzMSwzMDgxMywzODY2MCwyMTA2NiwyMTc0MiwyMjE3OSwzODE0NCwyODA0MCwyMzQ3NywyODEwMiwyNjE5NSwzNDg1MiwzNDg1MywzNDg1NCwzNDg1NSwzNDg1NiwzNDg1NywzNDg1OCwzNDg1OSwzNDg2MCwzNDg2MSwzNDg2MiwzNDg2MywzNDg2NCwzNDg2NSwzNDg2NywzNDg2OCwzNDg2OSwzNDg3MCwzNDg3MSwzNDg3MiwzNDg3NCwzNDg3NSwzNDg3NywzNDg3OCwzNDg3OSwzNDg4MSwzNDg4MiwzNDg4MywzNDg4NiwzNDg4NywzNDg4OCwzNDg4OSwzNDg5MCwzNDg5MSwzNDg5NCwzNDg5NSwzNDg5NiwzNDg5NywzNDg5OCwzNDg5OSwzNDkwMSwzNDkwMiwzNDkwNCwzNDkwNiwzNDkwNywzNDkwOCwzNDkwOSwzNDkxMCwzNDkxMSwzNDkxMiwzNDkxOCwzNDkxOSwzNDkyMiwzNDkyNSwzNDkyNywzNDkyOSwzNDkzMSwzNDkzMiwzNDkzMywzNDkzNCwzNDkzNiwzNDkzNywzNDkzOCwzNDkzOSwzNDk0MCwzNDk0NCwzNDk0NywzNDk1MCwzNDk1MSwzNDk1MywzNDk1NCwzNDk1NiwzNDk1OCwzNDk1OSwzNDk2MCwzNDk2MSwzNDk2MywzNDk2NCwzNDk2NSwzNDk2NywzNDk2OCwzNDk2OSwzNDk3MCwzNDk3MSwzNDk3MywzNDk3NCwzNDk3NSwzNDk3NiwzNDk3NywzNDk3OSwzNDk4MSwzNDk4MiwzNDk4MywzNDk4NCwzNDk4NSwzNDk4NiwyMzU2NywyMzM4OSwyNjY1NywzMjkxOCwyMTg4MCwzMTUwNSwyNTkyOCwyNjk2NCwyMDEyMywyNzQ2MywzNDYzOCwzODc5NSwyMTMyNywyNTM3NSwyNTY1OCwzNzAzNCwyNjAxMiwzMjk2MSwzNTg1NiwyMDg4OSwyNjgwMCwyMTM2OCwzNDgwOSwyNTAzMiwyNzg0NCwyNzg5OSwzNTg3NCwyMzYzMywzNDIxOCwzMzQ1NSwzODE1NiwyNzQyNywzNjc2MywyNjAzMiwyNDU3MSwyNDUxNSwyMDQ0OSwzNDg4NSwyNjE0MywzMzEyNSwyOTQ4MSwyNDgyNiwyMDg1MiwyMTAwOSwyMjQxMSwyNDQxOCwzNzAyNiwzNDg5MiwzNzI2NiwyNDE4NCwyNjQ0NywyNDYxNSwyMjk5NSwyMDgwNCwyMDk4MiwzMzAxNiwyMTI1NiwyNzc2OSwzODU5NiwyOTA2NiwyMDI0MSwyMDQ2MiwzMjY3MCwyNjQyOSwyMTk1NywzODE1MiwzMTE2OCwzNDk2NiwzMjQ4MywyMjY4NywyNTEwMCwzODY1NiwzNDM5NCwyMjA0MCwzOTAzNSwyNDQ2NCwzNTc2OCwzMzk4OCwzNzIwNywyMTQ2NSwyNjA5MywyNDIwNywzMDA0NCwyNDY3NiwzMjExMCwyMzE2NywzMjQ5MCwzMjQ5MywzNjcxMywyMTkyNywyMzQ1OSwyNDc0OCwyNjA1OSwyOTU3MiwzNDk4OCwzNDk5MCwzNDk5MSwzNDk5MiwzNDk5NCwzNDk5NSwzNDk5NiwzNDk5NywzNDk5OCwzNTAwMCwzNTAwMSwzNTAwMiwzNTAwMywzNTAwNSwzNTAwNiwzNTAwNywzNTAwOCwzNTAxMSwzNTAxMiwzNTAxNSwzNTAxNiwzNTAxOCwzNTAxOSwzNTAyMCwzNTAyMSwzNTAyMywzNTAyNCwzNTAyNSwzNTAyNywzNTAzMCwzNTAzMSwzNTAzNCwzNTAzNSwzNTAzNiwzNTAzNywzNTAzOCwzNTA0MCwzNTA0MSwzNTA0NiwzNTA0NywzNTA0OSwzNTA1MCwzNTA1MSwzNTA1MiwzNTA1MywzNTA1NCwzNTA1NSwzNTA1OCwzNTA2MSwzNTA2MiwzNTA2MywzNTA2NiwzNTA2NywzNTA2OSwzNTA3MSwzNTA3MiwzNTA3MywzNTA3NSwzNTA3NiwzNTA3NywzNTA3OCwzNTA3OSwzNTA4MCwzNTA4MSwzNTA4MywzNTA4NCwzNTA4NSwzNTA4NiwzNTA4NywzNTA4OSwzNTA5MiwzNTA5MywzNTA5NCwzNTA5NSwzNTA5NiwzNTEwMCwzNTEwMSwzNTEwMiwzNTEwMywzNTEwNCwzNTEwNiwzNTEwNywzNTEwOCwzNTExMCwzNTExMSwzNTExMiwzNTExMywzNTExNiwzNTExNywzNTExOCwzNTExOSwzNTEyMSwzNTEyMiwzNTEyMywzNTEyNSwzNTEyNywzNjg3MywzMDMwNywzMDUwNSwzMjQ3NCwzODc3MiwzNDIwMywyMzM5OCwzMTM0OCwzODYzNCwzNDg4MCwyMTE5NSwyOTA3MSwyNDQ5MCwyNjA5MiwzNTgxMCwyMzU0NywzOTUzNSwyNDAzMywyNzUyOSwyNzczOSwzNTc1NywzNTc1OSwzNjg3NCwzNjgwNSwyMTM4NywyNTI3Niw0MDQ4Niw0MDQ5MywyMTU2OCwyMDAxMSwzMzQ2OSwyOTI3MywzNDQ2MCwyMzgzMCwzNDkwNSwyODA3OSwzODU5NywyMTcxMywyMDEyMiwzNTc2NiwyODkzNywyMTY5MywzODQwOSwyODg5NSwyODE1MywzMDQxNiwyMDAwNSwzMDc0MCwzNDU3OCwyMzcyMSwyNDMxMCwzNTMyOCwzOTA2OCwzODQxNCwyODgxNCwyNzgzOSwyMjg1MiwyNTUxMywzMDUyNCwzNDg5MywyODQzNiwzMzM5NSwyMjU3NiwyOTE0MSwyMTM4OCwzMDc0NiwzODU5MywyMTc2MSwyNDQyMiwyODk3NiwyMzQ3NiwzNTg2NiwzOTU2NCwyNzUyMywyMjgzMCw0MDQ5NSwzMTIwNywyNjQ3MiwyNTE5NiwyMDMzNSwzMDExMywzMjY1MCwyNzkxNSwzODQ1MSwyNzY4NywyMDIwOCwzMDE2MiwyMDg1OSwyNjY3OSwyODQ3OCwzNjk5MiwzMzEzNiwyMjkzNCwyOTgxNCwzNTEyOCwzNTEyOSwzNTEzMCwzNTEzMSwzNTEzMiwzNTEzMywzNTEzNCwzNTEzNSwzNTEzNiwzNTEzOCwzNTEzOSwzNTE0MSwzNTE0MiwzNTE0MywzNTE0NCwzNTE0NSwzNTE0NiwzNTE0NywzNTE0OCwzNTE0OSwzNTE1MCwzNTE1MSwzNTE1MiwzNTE1MywzNTE1NCwzNTE1NSwzNTE1NiwzNTE1NywzNTE1OCwzNTE1OSwzNTE2MCwzNTE2MSwzNTE2MiwzNTE2MywzNTE2NCwzNTE2NSwzNTE2OCwzNTE2OSwzNTE3MCwzNTE3MSwzNTE3MiwzNTE3MywzNTE3NSwzNTE3NiwzNTE3NywzNTE3OCwzNTE3OSwzNTE4MCwzNTE4MSwzNTE4MiwzNTE4MywzNTE4NCwzNTE4NSwzNTE4NiwzNTE4NywzNTE4OCwzNTE4OSwzNTE5MCwzNTE5MSwzNTE5MiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NywzNTE5OCwzNTIwMCwzNTIwMiwzNTIwNCwzNTIwNSwzNTIwNywzNTIwOCwzNTIwOSwzNTIxMCwzNTIxMSwzNTIxMiwzNTIxMywzNTIxNCwzNTIxNSwzNTIxNiwzNTIxNywzNTIxOCwzNTIxOSwzNTIyMCwzNTIyMSwzNTIyMiwzNTIyMywzNTIyNCwzNTIyNSwzNTIyNiwzNTIyNywzNTIyOCwzNTIyOSwzNTIzMCwzNTIzMSwzNTIzMiwzNTIzMywyNTY3MSwyMzU5MSwzNjk2NSwzMTM3NywzNTg3NSwyMzAwMiwyMTY3NiwzMzI4MCwzMzY0NywzNTIwMSwzMjc2OCwyNjkyOCwyMjA5NCwzMjgyMiwyOTIzOSwzNzMyNiwyMDkxOCwyMDA2MywzOTAyOSwyNTQ5NCwxOTk5NCwyMTQ5NCwyNjM1NSwzMzA5OSwyMjgxMiwyODA4MiwxOTk2OCwyMjc3NywyMTMwNywyNTU1OCwzODEyOSwyMDM4MSwyMDIzNCwzNDkxNSwzOTA1NiwyMjgzOSwzNjk1MSwzMTIyNywyMDIwMiwzMzAwOCwzMDA5NywyNzc3OCwyMzQ1MiwyMzAxNiwyNDQxMywyNjg4NSwzNDQzMywyMDUwNiwyNDA1MCwyMDA1NywzMDY5MSwyMDE5NywzMzQwMiwyNTIzMywyNjEzMSwzNzAwOSwyMzY3MywyMDE1OSwyNDQ0MSwzMzIyMiwzNjkyMCwzMjkwMCwzMDEyMywyMDEzNCwzNTAyOCwyNDg0NywyNzU4OSwyNDUxOCwyMDA0MSwzMDQxMCwyODMyMiwzNTgxMSwzNTc1OCwzNTg1MCwzNTc5MywyNDMyMiwzMjc2NCwzMjcxNiwzMjQ2MiwzMzU4OSwzMzY0MywyMjI0MCwyNzU3NSwzODg5OSwzODQ1MiwyMzAzNSwyMTUzNSwzODEzNCwyODEzOSwyMzQ5MywzOTI3OCwyMzYwOSwyNDM0MSwzODU0NCwzNTIzNCwzNTIzNSwzNTIzNiwzNTIzNywzNTIzOCwzNTIzOSwzNTI0MCwzNTI0MSwzNTI0MiwzNTI0MywzNTI0NCwzNTI0NSwzNTI0NiwzNTI0NywzNTI0OCwzNTI0OSwzNTI1MCwzNTI1MSwzNTI1MiwzNTI1MywzNTI1NCwzNTI1NSwzNTI1NiwzNTI1NywzNTI1OCwzNTI1OSwzNTI2MCwzNTI2MSwzNTI2MiwzNTI2MywzNTI2NCwzNTI2NywzNTI3NywzNTI4MywzNTI4NCwzNTI4NSwzNTI4NywzNTI4OCwzNTI4OSwzNTI5MSwzNTI5MywzNTI5NSwzNTI5NiwzNTI5NywzNTI5OCwzNTMwMCwzNTMwMywzNTMwNCwzNTMwNSwzNTMwNiwzNTMwOCwzNTMwOSwzNTMxMCwzNTMxMiwzNTMxMywzNTMxNCwzNTMxNiwzNTMxNywzNTMxOCwzNTMxOSwzNTMyMCwzNTMyMSwzNTMyMiwzNTMyMywzNTMyNCwzNTMyNSwzNTMyNiwzNTMyNywzNTMyOSwzNTMzMCwzNTMzMSwzNTMzMiwzNTMzMywzNTMzNCwzNTMzNiwzNTMzNywzNTMzOCwzNTMzOSwzNTM0MCwzNTM0MSwzNTM0MiwzNTM0MywzNTM0NCwzNTM0NSwzNTM0NiwzNTM0NywzNTM0OCwzNTM0OSwzNTM1MCwzNTM1MSwzNTM1MiwzNTM1MywzNTM1NCwzNTM1NSwzNTM1NiwzNTM1NywyMTM2MCwzMzUyMSwyNzE4NSwyMzE1Niw0MDU2MCwyNDIxMiwzMjU1MiwzMzcyMSwzMzgyOCwzMzgyOSwzMzYzOSwzNDYzMSwzNjgxNCwzNjE5NCwzMDQwOCwyNDQzMywzOTA2MiwzMDgyOCwyNjE0NCwyMTcyNywyNTMxNywyMDMyMywzMzIxOSwzMDE1MiwyNDI0OCwzODYwNSwzNjM2MiwzNDU1MywyMTY0NywyNzg5MSwyODA0NCwyNzcwNCwyNDcwMywyMTE5MSwyOTk5MiwyNDE4OSwyMDI0OCwyNDczNiwyNDU1MSwyMzU4OCwzMDAwMSwzNzAzOCwzODA4MCwyOTM2OSwyNzgzMywyODIxNiwzNzE5MywyNjM3NywyMTQ1MSwyMTQ5MSwyMDMwNSwzNzMyMSwzNTgyNSwyMTQ0OCwyNDE4OCwzNjgwMiwyODEzMiwyMDExMCwzMDQwMiwyNzAxNCwzNDM5OCwyNDg1OCwzMzI4NiwyMDMxMywyMDQ0NiwzNjkyNiw0MDA2MCwyNDg0MSwyODE4OSwyODE4MCwzODUzMywyMDEwNCwyMzA4OSwzODYzMiwxOTk4MiwyMzY3OSwzMTE2MSwyMzQzMSwzNTgyMSwzMjcwMSwyOTU3NywyMjQ5NSwzMzQxOSwzNzA1NywyMTUwNSwzNjkzNSwyMTk0NywyMzc4NiwyNDQ4MSwyNDg0MCwyNzQ0MiwyOTQyNSwzMjk0NiwzNTQ2NSwzNTM1OCwzNTM1OSwzNTM2MCwzNTM2MSwzNTM2MiwzNTM2MywzNTM2NCwzNTM2NSwzNTM2NiwzNTM2NywzNTM2OCwzNTM2OSwzNTM3MCwzNTM3MSwzNTM3MiwzNTM3MywzNTM3NCwzNTM3NSwzNTM3NiwzNTM3NywzNTM3OCwzNTM3OSwzNTM4MCwzNTM4MSwzNTM4MiwzNTM4MywzNTM4NCwzNTM4NSwzNTM4NiwzNTM4NywzNTM4OCwzNTM4OSwzNTM5MSwzNTM5MiwzNTM5MywzNTM5NCwzNTM5NSwzNTM5NiwzNTM5NywzNTM5OCwzNTM5OSwzNTQwMSwzNTQwMiwzNTQwMywzNTQwNCwzNTQwNSwzNTQwNiwzNTQwNywzNTQwOCwzNTQwOSwzNTQxMCwzNTQxMSwzNTQxMiwzNTQxMywzNTQxNCwzNTQxNSwzNTQxNiwzNTQxNywzNTQxOCwzNTQxOSwzNTQyMCwzNTQyMSwzNTQyMiwzNTQyMywzNTQyNCwzNTQyNSwzNTQyNiwzNTQyNywzNTQyOCwzNTQyOSwzNTQzMCwzNTQzMSwzNTQzMiwzNTQzMywzNTQzNCwzNTQzNSwzNTQzNiwzNTQzNywzNTQzOCwzNTQzOSwzNTQ0MCwzNTQ0MSwzNTQ0MiwzNTQ0MywzNTQ0NCwzNTQ0NSwzNTQ0NiwzNTQ0NywzNTQ0OCwzNTQ1MCwzNTQ1MSwzNTQ1MiwzNTQ1MywzNTQ1NCwzNTQ1NSwzNTQ1NiwyODAyMCwyMzUwNywzNTAyOSwzOTA0NCwzNTk0NywzOTUzMyw0MDQ5OSwyODE3MCwyMDkwMCwyMDgwMywyMjQzNSwzNDk0NSwyMTQwNywyNTU4OCwzNjc1NywyMjI1MywyMTU5MiwyMjI3OCwyOTUwMywyODMwNCwzMjUzNiwzNjgyOCwzMzQ4OSwyNDg5NSwyNDYxNiwzODQ5OCwyNjM1MiwzMjQyMiwzNjIzNCwzNjI5MSwzODA1MywyMzczMSwzMTkwOCwyNjM3NiwyNDc0MiwzODQwNSwzMjc5MiwyMDExMywzNzA5NSwyMTI0OCwzODUwNCwyMDgwMSwzNjgxNiwzNDE2NCwzNzIxMywyNjE5NywzODkwMSwyMzM4MSwyMTI3NywzMDc3NiwyNjQzNCwyNjY4NSwyMTcwNSwyODc5OCwyMzQ3MiwzNjczMywyMDg3NywyMjMxMiwyMTY4MSwyNTg3NCwyNjI0MiwzNjE5MCwzNjE2MywzMzAzOSwzMzkwMCwzNjk3MywzMTk2NywyMDk5MSwzNDI5OSwyNjUzMSwyNjA4OSwyODU3NywzNDQ2OCwzNjQ4MSwyMjEyMiwzNjg5NiwzMDMzOCwyODc5MCwyOTE1NywzNjEzMSwyNTMyMSwyMTAxNywyNzkwMSwzNjE1NiwyNDU5MCwyMjY4NiwyNDk3NCwyNjM2NiwzNjE5MiwyNTE2NiwyMTkzOSwyODE5NSwyNjQxMywzNjcxMSwzNTQ1NywzNTQ1OCwzNTQ1OSwzNTQ2MCwzNTQ2MSwzNTQ2MiwzNTQ2MywzNTQ2NCwzNTQ2NywzNTQ2OCwzNTQ2OSwzNTQ3MCwzNTQ3MSwzNTQ3MiwzNTQ3MywzNTQ3NCwzNTQ3NiwzNTQ3NywzNTQ3OCwzNTQ3OSwzNTQ4MCwzNTQ4MSwzNTQ4MiwzNTQ4MywzNTQ4NCwzNTQ4NSwzNTQ4NiwzNTQ4NywzNTQ4OCwzNTQ4OSwzNTQ5MCwzNTQ5MSwzNTQ5MiwzNTQ5MywzNTQ5NCwzNTQ5NSwzNTQ5NiwzNTQ5NywzNTQ5OCwzNTQ5OSwzNTUwMCwzNTUwMSwzNTUwMiwzNTUwMywzNTUwNCwzNTUwNSwzNTUwNiwzNTUwNywzNTUwOCwzNTUwOSwzNTUxMCwzNTUxMSwzNTUxMiwzNTUxMywzNTUxNCwzNTUxNSwzNTUxNiwzNTUxNywzNTUxOCwzNTUxOSwzNTUyMCwzNTUyMSwzNTUyMiwzNTUyMywzNTUyNCwzNTUyNSwzNTUyNiwzNTUyNywzNTUyOCwzNTUyOSwzNTUzMCwzNTUzMSwzNTUzMiwzNTUzMywzNTUzNCwzNTUzNSwzNTUzNiwzNTUzNywzNTUzOCwzNTUzOSwzNTU0MCwzNTU0MSwzNTU0MiwzNTU0MywzNTU0NCwzNTU0NSwzNTU0NiwzNTU0NywzNTU0OCwzNTU0OSwzNTU1MCwzNTU1MSwzNTU1MiwzNTU1MywzNTU1NCwzNTU1NSwzODExMywzODM5MiwzMDUwNCwyNjYyOSwyNzA0OCwyMTY0MywyMDA0NSwyODg1NiwzNTc4NCwyNTY4OCwyNTk5NSwyMzQyOSwzMTM2NCwyMDUzOCwyMzUyOCwzMDY1MSwyNzYxNywzNTQ0OSwzMTg5NiwyNzgzOCwzMDQxNSwyNjAyNSwzNjc1OSwyMzg1MywyMzYzNywzNDM2MCwyNjYzMiwyMTM0NCwyNTExMiwzMTQ0OSwyODI1MSwzMjUwOSwyNzE2NywzMTQ1NiwyNDQzMiwyODQ2NywyNDM1MiwyNTQ4NCwyODA3MiwyNjQ1NCwxOTk3NiwyNDA4MCwzNjEzNCwyMDE4MywzMjk2MCwzMDI2MCwzODU1NiwyNTMwNywyNjE1NywyNTIxNCwyNzgzNiwzNjIxMywyOTAzMSwzMjYxNywyMDgwNiwzMjkwMywyMTQ4NCwzNjk3NCwyNTI0MCwyMTc0NiwzNDU0NCwzNjc2MSwzMjc3MywzODE2NywzNDA3MSwzNjgyNSwyNzk5MywyOTY0NSwyNjAxNSwzMDQ5NSwyOTk1NiwzMDc1OSwzMzI3NSwzNjEyNiwzODAyNCwyMDM5MCwyNjUxNywzMDEzNywzNTc4NiwzODY2MywyNTM5MSwzODIxNSwzODQ1MywzMzk3NiwyNTM3OSwzMDUyOSwyNDQ0OSwyOTQyNCwyMDEwNSwyNDU5NiwyNTk3MiwyNTMyNywyNzQ5MSwyNTkxOSwzNTU1NiwzNTU1NywzNTU1OCwzNTU1OSwzNTU2MCwzNTU2MSwzNTU2MiwzNTU2MywzNTU2NCwzNTU2NSwzNTU2NiwzNTU2NywzNTU2OCwzNTU2OSwzNTU3MCwzNTU3MSwzNTU3MiwzNTU3MywzNTU3NCwzNTU3NSwzNTU3NiwzNTU3NywzNTU3OCwzNTU3OSwzNTU4MCwzNTU4MSwzNTU4MiwzNTU4MywzNTU4NCwzNTU4NSwzNTU4NiwzNTU4NywzNTU4OCwzNTU4OSwzNTU5MCwzNTU5MiwzNTU5MywzNTU5NCwzNTU5NSwzNTU5NiwzNTU5NywzNTU5OCwzNTU5OSwzNTYwMCwzNTYwMSwzNTYwMiwzNTYwMywzNTYwNCwzNTYwNSwzNTYwNiwzNTYwNywzNTYwOCwzNTYwOSwzNTYxMCwzNTYxMSwzNTYxMiwzNTYxMywzNTYxNCwzNTYxNSwzNTYxNiwzNTYxNywzNTYxOCwzNTYxOSwzNTYyMCwzNTYyMSwzNTYyMywzNTYyNCwzNTYyNSwzNTYyNiwzNTYyNywzNTYyOCwzNTYyOSwzNTYzMCwzNTYzMSwzNTYzMiwzNTYzMywzNTYzNCwzNTYzNSwzNTYzNiwzNTYzNywzNTYzOCwzNTYzOSwzNTY0MCwzNTY0MSwzNTY0MiwzNTY0MywzNTY0NCwzNTY0NSwzNTY0NiwzNTY0NywzNTY0OCwzNTY0OSwzNTY1MCwzNTY1MSwzNTY1MiwzNTY1MywyNDEwMywzMDE1MSwzNzA3MywzNTc3NywzMzQzNywyNjUyNSwyNTkwMywyMTU1MywzNDU4NCwzMDY5MywzMjkzMCwzMzAyNiwyNzcxMywyMDA0MywzMjQ1NSwzMjg0NCwzMDQ1MiwyNjg5MywyNzU0MiwyNTE5MSwyMDU0MCwyMDM1NiwyMjMzNiwyNTM1MSwyNzQ5MCwzNjI4NiwyMTQ4MiwyNjA4OCwzMjQ0MCwyNDUzNSwyNTM3MCwyNTUyNywzMzI2NywzMzI2OCwzMjYyMiwyNDA5MiwyMzc2OSwyMTA0NiwyNjIzNCwzMTIwOSwzMTI1OCwzNjEzNiwyODgyNSwzMDE2NCwyODM4MiwyNzgzNSwzMTM3OCwyMDAxMywzMDQwNSwyNDU0NCwzODA0NywzNDkzNSwzMjQ1NiwzMTE4MSwzMjk1OSwzNzMyNSwyMDIxMCwyMDI0NywzMzMxMSwyMTYwOCwyNDAzMCwyNzk1NCwzNTc4OCwzMTkwOSwzNjcyNCwzMjkyMCwyNDA5MCwyMTY1MCwzMDM4NSwyMzQ0OSwyNjE3MiwzOTU4OCwyOTY2NCwyNjY2NiwzNDUyMywyNjQxNywyOTQ4MiwzNTgzMiwzNTgwMywzNjg4MCwzMTQ4MSwyODg5MSwyOTAzOCwyNTI4NCwzMDYzMywyMjA2NSwyMDAyNywzMzg3OSwyNjYwOSwyMTE2MSwzNDQ5NiwzNjE0MiwzODEzNiwzMTU2OSwzNTY1NCwzNTY1NSwzNTY1NiwzNTY1NywzNTY1OCwzNTY1OSwzNTY2MCwzNTY2MSwzNTY2MiwzNTY2MywzNTY2NCwzNTY2NSwzNTY2NiwzNTY2NywzNTY2OCwzNTY2OSwzNTY3MCwzNTY3MSwzNTY3MiwzNTY3MywzNTY3NCwzNTY3NSwzNTY3NiwzNTY3NywzNTY3OCwzNTY3OSwzNTY4MCwzNTY4MSwzNTY4MiwzNTY4MywzNTY4NCwzNTY4NSwzNTY4NywzNTY4OCwzNTY4OSwzNTY5MCwzNTY5MSwzNTY5MywzNTY5NCwzNTY5NSwzNTY5NiwzNTY5NywzNTY5OCwzNTY5OSwzNTcwMCwzNTcwMSwzNTcwMiwzNTcwMywzNTcwNCwzNTcwNSwzNTcwNiwzNTcwNywzNTcwOCwzNTcwOSwzNTcxMCwzNTcxMSwzNTcxMiwzNTcxMywzNTcxNCwzNTcxNSwzNTcxNiwzNTcxNywzNTcxOCwzNTcxOSwzNTcyMCwzNTcyMSwzNTcyMiwzNTcyMywzNTcyNCwzNTcyNSwzNTcyNiwzNTcyNywzNTcyOCwzNTcyOSwzNTczMCwzNTczMSwzNTczMiwzNTczMywzNTczNCwzNTczNSwzNTczNiwzNTczNywzNTczOCwzNTczOSwzNTc0MCwzNTc0MSwzNTc0MiwzNTc0MywzNTc1NiwzNTc2MSwzNTc3MSwzNTc4MywzNTc5MiwzNTgxOCwzNTg0OSwzNTg3MCwyMDMwMywyNzg4MCwzMTA2OSwzOTU0NywyNTIzNSwyOTIyNiwyNTM0MSwxOTk4NywzMDc0MiwzNjcxNiwyNTc3NiwzNjE4NiwzMTY4NiwyNjcyOSwyNDE5NiwzNTAxMywyMjkxOCwyNTc1OCwyMjc2NiwyOTM2NiwyNjg5NCwzODE4MSwzNjg2MSwzNjE4NCwyMjM2OCwzMjUxMiwzNTg0NiwyMDkzNCwyNTQxNywyNTMwNSwyMTMzMSwyNjcwMCwyOTczMCwzMzUzNywzNzE5NiwyMTgyOCwzMDUyOCwyODc5NiwyNzk3OCwyMDg1NywyMTY3MiwzNjE2NCwyMzAzOSwyODM2MywyODEwMCwyMzM4OCwzMjA0MywyMDE4MCwzMTg2OSwyODM3MSwyMzM3NiwzMzI1OCwyODE3MywyMzM4MywzOTY4MywyNjgzNywzNjM5NCwyMzQ0NywzMjUwOCwyNDYzNSwzMjQzNywzNzA0OSwzNjIwOCwyMjg2MywyNTU0OSwzMTE5OSwzNjI3NSwyMTMzMCwyNjA2MywzMTA2MiwzNTc4MSwzODQ1OSwzMjQ1MiwzODA3NSwzMjM4NiwyMjA2OCwzNzI1NywyNjM2OCwzMjYxOCwyMzU2MiwzNjk4MSwyNjE1MiwyNDAzOCwyMDMwNCwyNjU5MCwyMDU3MCwyMDMxNiwyMjM1MiwyNDIzMSw1OTQwOCw1OTQwOSw1OTQxMCw1OTQxMSw1OTQxMiwzNTg5NiwzNTg5NywzNTg5OCwzNTg5OSwzNTkwMCwzNTkwMSwzNTkwMiwzNTkwMywzNTkwNCwzNTkwNiwzNTkwNywzNTkwOCwzNTkwOSwzNTkxMiwzNTkxNCwzNTkxNSwzNTkxNywzNTkxOCwzNTkxOSwzNTkyMCwzNTkyMSwzNTkyMiwzNTkyMywzNTkyNCwzNTkyNiwzNTkyNywzNTkyOCwzNTkyOSwzNTkzMSwzNTkzMiwzNTkzMywzNTkzNCwzNTkzNSwzNTkzNiwzNTkzOSwzNTk0MCwzNTk0MSwzNTk0MiwzNTk0MywzNTk0NCwzNTk0NSwzNTk0OCwzNTk0OSwzNTk1MCwzNTk1MSwzNTk1MiwzNTk1MywzNTk1NCwzNTk1NiwzNTk1NywzNTk1OCwzNTk1OSwzNTk2MywzNTk2NCwzNTk2NSwzNTk2NiwzNTk2NywzNTk2OCwzNTk2OSwzNTk3MSwzNTk3MiwzNTk3NCwzNTk3NSwzNTk3NiwzNTk3OSwzNTk4MSwzNTk4MiwzNTk4MywzNTk4NCwzNTk4NSwzNTk4NiwzNTk4NywzNTk4OSwzNTk5MCwzNTk5MSwzNTk5MywzNTk5NCwzNTk5NSwzNTk5NiwzNTk5NywzNTk5OCwzNTk5OSwzNjAwMCwzNjAwMSwzNjAwMiwzNjAwMywzNjAwNCwzNjAwNSwzNjAwNiwzNjAwNywzNjAwOCwzNjAwOSwzNjAxMCwzNjAxMSwzNjAxMiwzNjAxMywyMDEwOSwxOTk4MCwyMDgwMCwxOTk4NCwyNDMxOSwyMTMxNywxOTk4OSwyMDEyMCwxOTk5OCwzOTczMCwyMzQwNCwyMjEyMSwyMDAwOCwzMTE2MiwyMDAzMSwyMTI2OSwyMDAzOSwyMjgyOSwyOTI0MywyMTM1OCwyNzY2NCwyMjIzOSwzMjk5NiwzOTMxOSwyNzYwMywzMDU5MCw0MDcyNywyMDAyMiwyMDEyNyw0MDcyMCwyMDA2MCwyMDA3MywyMDExNSwzMzQxNiwyMzM4NywyMTg2OCwyMjAzMSwyMDE2NCwyMTM4OSwyMTQwNSwyMTQxMSwyMTQxMywyMTQyMiwzODc1NywzNjE4OSwyMTI3NCwyMTQ5MywyMTI4NiwyMTI5NCwyMTMxMCwzNjE4OCwyMTM1MCwyMTM0NywyMDk5NCwyMTAwMCwyMTAwNiwyMTAzNywyMTA0MywyMTA1NSwyMTA1NiwyMTA2OCwyMTA4NiwyMTA4OSwyMTA4NCwzMzk2NywyMTExNywyMTEyMiwyMTEyMSwyMTEzNiwyMTEzOSwyMDg2NiwzMjU5NiwyMDE1NSwyMDE2MywyMDE2OSwyMDE2MiwyMDIwMCwyMDE5MywyMDIwMywyMDE5MCwyMDI1MSwyMDIxMSwyMDI1OCwyMDMyNCwyMDIxMywyMDI2MSwyMDI2MywyMDIzMywyMDI2NywyMDMxOCwyMDMyNywyNTkxMiwyMDMxNCwyMDMxNywzNjAxNCwzNjAxNSwzNjAxNiwzNjAxNywzNjAxOCwzNjAxOSwzNjAyMCwzNjAyMSwzNjAyMiwzNjAyMywzNjAyNCwzNjAyNSwzNjAyNiwzNjAyNywzNjAyOCwzNjAyOSwzNjAzMCwzNjAzMSwzNjAzMiwzNjAzMywzNjAzNCwzNjAzNSwzNjAzNiwzNjAzNywzNjAzOCwzNjAzOSwzNjA0MCwzNjA0MSwzNjA0MiwzNjA0MywzNjA0NCwzNjA0NSwzNjA0NiwzNjA0NywzNjA0OCwzNjA0OSwzNjA1MCwzNjA1MSwzNjA1MiwzNjA1MywzNjA1NCwzNjA1NSwzNjA1NiwzNjA1NywzNjA1OCwzNjA1OSwzNjA2MCwzNjA2MSwzNjA2MiwzNjA2MywzNjA2NCwzNjA2NSwzNjA2NiwzNjA2NywzNjA2OCwzNjA2OSwzNjA3MCwzNjA3MSwzNjA3MiwzNjA3MywzNjA3NCwzNjA3NSwzNjA3NiwzNjA3NywzNjA3OCwzNjA3OSwzNjA4MCwzNjA4MSwzNjA4MiwzNjA4MywzNjA4NCwzNjA4NSwzNjA4NiwzNjA4NywzNjA4OCwzNjA4OSwzNjA5MCwzNjA5MSwzNjA5MiwzNjA5MywzNjA5NCwzNjA5NSwzNjA5NiwzNjA5NywzNjA5OCwzNjA5OSwzNjEwMCwzNjEwMSwzNjEwMiwzNjEwMywzNjEwNCwzNjEwNSwzNjEwNiwzNjEwNywzNjEwOCwzNjEwOSwyMDMxOSwyMDMxMSwyMDI3NCwyMDI4NSwyMDM0MiwyMDM0MCwyMDM2OSwyMDM2MSwyMDM1NSwyMDM2NywyMDM1MCwyMDM0NywyMDM5NCwyMDM0OCwyMDM5NiwyMDM3MiwyMDQ1NCwyMDQ1NiwyMDQ1OCwyMDQyMSwyMDQ0MiwyMDQ1MSwyMDQ0NCwyMDQzMywyMDQ0NywyMDQ3MiwyMDUyMSwyMDU1NiwyMDQ2NywyMDUyNCwyMDQ5NSwyMDUyNiwyMDUyNSwyMDQ3OCwyMDUwOCwyMDQ5MiwyMDUxNywyMDUyMCwyMDYwNiwyMDU0NywyMDU2NSwyMDU1MiwyMDU1OCwyMDU4OCwyMDYwMywyMDY0NSwyMDY0NywyMDY0OSwyMDY2NiwyMDY5NCwyMDc0MiwyMDcxNywyMDcxNiwyMDcxMCwyMDcxOCwyMDc0MywyMDc0NywyMDE4OSwyNzcwOSwyMDMxMiwyMDMyNSwyMDQzMCw0MDg2NCwyNzcxOCwzMTg2MCwyMDg0NiwyNDA2MSw0MDY0OSwzOTMyMCwyMDg2NSwyMjgwNCwyMTI0MSwyMTI2MSwzNTMzNSwyMTI2NCwyMDk3MSwyMjgwOSwyMDgyMSwyMDEyOCwyMDgyMiwyMDE0NywzNDkyNiwzNDk4MCwyMDE0OSwzMzA0NCwzNTAyNiwzMTEwNCwyMzM0OCwzNDgxOSwzMjY5NiwyMDkwNywyMDkxMywyMDkyNSwyMDkyNCwzNjExMCwzNjExMSwzNjExMiwzNjExMywzNjExNCwzNjExNSwzNjExNiwzNjExNywzNjExOCwzNjExOSwzNjEyMCwzNjEyMSwzNjEyMiwzNjEyMywzNjEyNCwzNjEyOCwzNjE3NywzNjE3OCwzNjE4MywzNjE5MSwzNjE5NywzNjIwMCwzNjIwMSwzNjIwMiwzNjIwNCwzNjIwNiwzNjIwNywzNjIwOSwzNjIxMCwzNjIxNiwzNjIxNywzNjIxOCwzNjIxOSwzNjIyMCwzNjIyMSwzNjIyMiwzNjIyMywzNjIyNCwzNjIyNiwzNjIyNywzNjIzMCwzNjIzMSwzNjIzMiwzNjIzMywzNjIzNiwzNjIzNywzNjIzOCwzNjIzOSwzNjI0MCwzNjI0MiwzNjI0MywzNjI0NSwzNjI0NiwzNjI0NywzNjI0OCwzNjI0OSwzNjI1MCwzNjI1MSwzNjI1MiwzNjI1MywzNjI1NCwzNjI1NiwzNjI1NywzNjI1OCwzNjI2MCwzNjI2MSwzNjI2MiwzNjI2MywzNjI2NCwzNjI2NSwzNjI2NiwzNjI2NywzNjI2OCwzNjI2OSwzNjI3MCwzNjI3MSwzNjI3MiwzNjI3NCwzNjI3OCwzNjI3OSwzNjI4MSwzNjI4MywzNjI4NSwzNjI4OCwzNjI4OSwzNjI5MCwzNjI5MywzNjI5NSwzNjI5NiwzNjI5NywzNjI5OCwzNjMwMSwzNjMwNCwzNjMwNiwzNjMwNywzNjMwOCwyMDkzNSwyMDg4NiwyMDg5OCwyMDkwMSwzNTc0NCwzNTc1MCwzNTc1MSwzNTc1NCwzNTc2NCwzNTc2NSwzNTc2NywzNTc3OCwzNTc3OSwzNTc4NywzNTc5MSwzNTc5MCwzNTc5NCwzNTc5NSwzNTc5NiwzNTc5OCwzNTgwMCwzNTgwMSwzNTgwNCwzNTgwNywzNTgwOCwzNTgxMiwzNTgxNiwzNTgxNywzNTgyMiwzNTgyNCwzNTgyNywzNTgzMCwzNTgzMywzNTgzNiwzNTgzOSwzNTg0MCwzNTg0MiwzNTg0NCwzNTg0NywzNTg1MiwzNTg1NSwzNTg1NywzNTg1OCwzNTg2MCwzNTg2MSwzNTg2MiwzNTg2NSwzNTg2NywzNTg2NCwzNTg2OSwzNTg3MSwzNTg3MiwzNTg3MywzNTg3NywzNTg3OSwzNTg4MiwzNTg4MywzNTg4NiwzNTg4NywzNTg5MCwzNTg5MSwzNTg5MywzNTg5NCwyMTM1MywyMTM3MCwzODQyOSwzODQzNCwzODQzMywzODQ0OSwzODQ0MiwzODQ2MSwzODQ2MCwzODQ2NiwzODQ3MywzODQ4NCwzODQ5NSwzODUwMywzODUwOCwzODUxNCwzODUxNiwzODUzNiwzODU0MSwzODU1MSwzODU3NiwzNzAxNSwzNzAxOSwzNzAyMSwzNzAxNywzNzAzNiwzNzAyNSwzNzA0NCwzNzA0MywzNzA0NiwzNzA1MCwzNjMwOSwzNjMxMiwzNjMxMywzNjMxNiwzNjMyMCwzNjMyMSwzNjMyMiwzNjMyNSwzNjMyNiwzNjMyNywzNjMyOSwzNjMzMywzNjMzNCwzNjMzNiwzNjMzNywzNjMzOCwzNjM0MCwzNjM0MiwzNjM0OCwzNjM1MCwzNjM1MSwzNjM1MiwzNjM1MywzNjM1NCwzNjM1NSwzNjM1NiwzNjM1OCwzNjM1OSwzNjM2MCwzNjM2MywzNjM2NSwzNjM2NiwzNjM2OCwzNjM2OSwzNjM3MCwzNjM3MSwzNjM3MywzNjM3NCwzNjM3NSwzNjM3NiwzNjM3NywzNjM3OCwzNjM3OSwzNjM4MCwzNjM4NCwzNjM4NSwzNjM4OCwzNjM4OSwzNjM5MCwzNjM5MSwzNjM5MiwzNjM5NSwzNjM5NywzNjQwMCwzNjQwMiwzNjQwMywzNjQwNCwzNjQwNiwzNjQwNywzNjQwOCwzNjQxMSwzNjQxMiwzNjQxNCwzNjQxNSwzNjQxOSwzNjQyMSwzNjQyMiwzNjQyOCwzNjQyOSwzNjQzMCwzNjQzMSwzNjQzMiwzNjQzNSwzNjQzNiwzNjQzNywzNjQzOCwzNjQzOSwzNjQ0MCwzNjQ0MiwzNjQ0MywzNjQ0NCwzNjQ0NSwzNjQ0NiwzNjQ0NywzNjQ0OCwzNjQ0OSwzNjQ1MCwzNjQ1MSwzNjQ1MiwzNjQ1MywzNjQ1NSwzNjQ1NiwzNjQ1OCwzNjQ1OSwzNjQ2MiwzNjQ2NSwzNzA0OCwzNzA0MCwzNzA3MSwzNzA2MSwzNzA1NCwzNzA3MiwzNzA2MCwzNzA2MywzNzA3NSwzNzA5NCwzNzA5MCwzNzA4NCwzNzA3OSwzNzA4MywzNzA5OSwzNzEwMywzNzExOCwzNzEyNCwzNzE1NCwzNzE1MCwzNzE1NSwzNzE2OSwzNzE2NywzNzE3NywzNzE4NywzNzE5MCwyMTAwNSwyMjg1MCwyMTE1NCwyMTE2NCwyMTE2NSwyMTE4MiwyMTc1OSwyMTIwMCwyMTIwNiwyMTIzMiwyMTQ3MSwyOTE2NiwzMDY2OSwyNDMwOCwyMDk4MSwyMDk4OCwzOTcyNywyMTQzMCwyNDMyMSwzMDA0MiwyNDA0NywyMjM0OCwyMjQ0MSwyMjQzMywyMjY1NCwyMjcxNiwyMjcyNSwyMjczNywyMjMxMywyMjMxNiwyMjMxNCwyMjMyMywyMjMyOSwyMjMxOCwyMjMxOSwyMjM2NCwyMjMzMSwyMjMzOCwyMjM3NywyMjQwNSwyMjM3OSwyMjQwNiwyMjM5NiwyMjM5NSwyMjM3NiwyMjM4MSwyMjM5MCwyMjM4NywyMjQ0NSwyMjQzNiwyMjQxMiwyMjQ1MCwyMjQ3OSwyMjQzOSwyMjQ1MiwyMjQxOSwyMjQzMiwyMjQ4NSwyMjQ4OCwyMjQ5MCwyMjQ4OSwyMjQ4MiwyMjQ1NiwyMjUxNiwyMjUxMSwyMjUyMCwyMjUwMCwyMjQ5MywzNjQ2NywzNjQ2OSwzNjQ3MSwzNjQ3MiwzNjQ3MywzNjQ3NCwzNjQ3NSwzNjQ3NywzNjQ3OCwzNjQ4MCwzNjQ4MiwzNjQ4MywzNjQ4NCwzNjQ4NiwzNjQ4OCwzNjQ4OSwzNjQ5MCwzNjQ5MSwzNjQ5MiwzNjQ5MywzNjQ5NCwzNjQ5NywzNjQ5OCwzNjQ5OSwzNjUwMSwzNjUwMiwzNjUwMywzNjUwNCwzNjUwNSwzNjUwNiwzNjUwNywzNjUwOSwzNjUxMSwzNjUxMiwzNjUxMywzNjUxNCwzNjUxNSwzNjUxNiwzNjUxNywzNjUxOCwzNjUxOSwzNjUyMCwzNjUyMSwzNjUyMiwzNjUyNSwzNjUyNiwzNjUyOCwzNjUyOSwzNjUzMSwzNjUzMiwzNjUzMywzNjUzNCwzNjUzNSwzNjUzNiwzNjUzNywzNjUzOSwzNjU0MCwzNjU0MSwzNjU0MiwzNjU0MywzNjU0NCwzNjU0NSwzNjU0NiwzNjU0NywzNjU0OCwzNjU0OSwzNjU1MCwzNjU1MSwzNjU1MiwzNjU1MywzNjU1NCwzNjU1NSwzNjU1NiwzNjU1NywzNjU1OSwzNjU2MCwzNjU2MSwzNjU2MiwzNjU2MywzNjU2NCwzNjU2NSwzNjU2NiwzNjU2NywzNjU2OCwzNjU2OSwzNjU3MCwzNjU3MSwzNjU3MiwzNjU3MywzNjU3NCwzNjU3NSwzNjU3NiwzNjU3NywzNjU3OCwzNjU3OSwzNjU4MCwyMjUzOSwyMjU0MSwyMjUyNSwyMjUwOSwyMjUyOCwyMjU1OCwyMjU1MywyMjU5NiwyMjU2MCwyMjYyOSwyMjYzNiwyMjY1NywyMjY2NSwyMjY4MiwyMjY1NiwzOTMzNiw0MDcyOSwyNTA4NywzMzQwMSwzMzQwNSwzMzQwNywzMzQyMywzMzQxOCwzMzQ0OCwzMzQxMiwzMzQyMiwzMzQyNSwzMzQzMSwzMzQzMywzMzQ1MSwzMzQ2NCwzMzQ3MCwzMzQ1NiwzMzQ4MCwzMzQ4MiwzMzUwNywzMzQzMiwzMzQ2MywzMzQ1NCwzMzQ4MywzMzQ4NCwzMzQ3MywzMzQ0OSwzMzQ2MCwzMzQ0MSwzMzQ1MCwzMzQzOSwzMzQ3NiwzMzQ4NiwzMzQ0NCwzMzUwNSwzMzU0NSwzMzUyNywzMzUwOCwzMzU1MSwzMzU0MywzMzUwMCwzMzUyNCwzMzQ5MCwzMzQ5NiwzMzU0OCwzMzUzMSwzMzQ5MSwzMzU1MywzMzU2MiwzMzU0MiwzMzU1NiwzMzU1NywzMzUwNCwzMzQ5MywzMzU2NCwzMzYxNywzMzYyNywzMzYyOCwzMzU0NCwzMzY4MiwzMzU5NiwzMzU4OCwzMzU4NSwzMzY5MSwzMzYzMCwzMzU4MywzMzYxNSwzMzYwNywzMzYwMywzMzYzMSwzMzYwMCwzMzU1OSwzMzYzMiwzMzU4MSwzMzU5NCwzMzU4NywzMzYzOCwzMzYzNywzNjU4MSwzNjU4MiwzNjU4MywzNjU4NCwzNjU4NSwzNjU4NiwzNjU4NywzNjU4OCwzNjU4OSwzNjU5MCwzNjU5MSwzNjU5MiwzNjU5MywzNjU5NCwzNjU5NSwzNjU5NiwzNjU5NywzNjU5OCwzNjU5OSwzNjYwMCwzNjYwMSwzNjYwMiwzNjYwMywzNjYwNCwzNjYwNSwzNjYwNiwzNjYwNywzNjYwOCwzNjYwOSwzNjYxMCwzNjYxMSwzNjYxMiwzNjYxMywzNjYxNCwzNjYxNSwzNjYxNiwzNjYxNywzNjYxOCwzNjYxOSwzNjYyMCwzNjYyMSwzNjYyMiwzNjYyMywzNjYyNCwzNjYyNSwzNjYyNiwzNjYyNywzNjYyOCwzNjYyOSwzNjYzMCwzNjYzMSwzNjYzMiwzNjYzMywzNjYzNCwzNjYzNSwzNjYzNiwzNjYzNywzNjYzOCwzNjYzOSwzNjY0MCwzNjY0MSwzNjY0MiwzNjY0MywzNjY0NCwzNjY0NSwzNjY0NiwzNjY0NywzNjY0OCwzNjY0OSwzNjY1MCwzNjY1MSwzNjY1MiwzNjY1MywzNjY1NCwzNjY1NSwzNjY1NiwzNjY1NywzNjY1OCwzNjY1OSwzNjY2MCwzNjY2MSwzNjY2MiwzNjY2MywzNjY2NCwzNjY2NSwzNjY2NiwzNjY2NywzNjY2OCwzNjY2OSwzNjY3MCwzNjY3MSwzNjY3MiwzNjY3MywzNjY3NCwzNjY3NSwzNjY3NiwzMzY0MCwzMzU2MywzMzY0MSwzMzY0NCwzMzY0MiwzMzY0NSwzMzY0NiwzMzcxMiwzMzY1NiwzMzcxNSwzMzcxNiwzMzY5NiwzMzcwNiwzMzY4MywzMzY5MiwzMzY2OSwzMzY2MCwzMzcxOCwzMzcwNSwzMzY2MSwzMzcyMCwzMzY1OSwzMzY4OCwzMzY5NCwzMzcwNCwzMzcyMiwzMzcyNCwzMzcyOSwzMzc5MywzMzc2NSwzMzc1MiwyMjUzNSwzMzgxNiwzMzgwMywzMzc1NywzMzc4OSwzMzc1MCwzMzgyMCwzMzg0OCwzMzgwOSwzMzc5OCwzMzc0OCwzMzc1OSwzMzgwNywzMzc5NSwzMzc4NCwzMzc4NSwzMzc3MCwzMzczMywzMzcyOCwzMzgzMCwzMzc3NiwzMzc2MSwzMzg4NCwzMzg3MywzMzg4MiwzMzg4MSwzMzkwNywzMzkyNywzMzkyOCwzMzkxNCwzMzkyOSwzMzkxMiwzMzg1MiwzMzg2MiwzMzg5NywzMzkxMCwzMzkzMiwzMzkzNCwzMzg0MSwzMzkwMSwzMzk4NSwzMzk5NywzNDAwMCwzNDAyMiwzMzk4MSwzNDAwMywzMzk5NCwzMzk4MywzMzk3OCwzNDAxNiwzMzk1MywzMzk3NywzMzk3MiwzMzk0MywzNDAyMSwzNDAxOSwzNDA2MCwyOTk2NSwzNDEwNCwzNDAzMiwzNDEwNSwzNDA3OSwzNDEwNiwzNjY3NywzNjY3OCwzNjY3OSwzNjY4MCwzNjY4MSwzNjY4MiwzNjY4MywzNjY4NCwzNjY4NSwzNjY4NiwzNjY4NywzNjY4OCwzNjY4OSwzNjY5MCwzNjY5MSwzNjY5MiwzNjY5MywzNjY5NCwzNjY5NSwzNjY5NiwzNjY5NywzNjY5OCwzNjY5OSwzNjcwMCwzNjcwMSwzNjcwMiwzNjcwMywzNjcwNCwzNjcwNSwzNjcwNiwzNjcwNywzNjcwOCwzNjcwOSwzNjcxNCwzNjczNiwzNjc0OCwzNjc1NCwzNjc2NSwzNjc2OCwzNjc2OSwzNjc3MCwzNjc3MiwzNjc3MywzNjc3NCwzNjc3NSwzNjc3OCwzNjc4MCwzNjc4MSwzNjc4MiwzNjc4MywzNjc4NiwzNjc4NywzNjc4OCwzNjc4OSwzNjc5MSwzNjc5MiwzNjc5NCwzNjc5NSwzNjc5NiwzNjc5OSwzNjgwMCwzNjgwMywzNjgwNiwzNjgwOSwzNjgxMCwzNjgxMSwzNjgxMiwzNjgxMywzNjgxNSwzNjgxOCwzNjgyMiwzNjgyMywzNjgyNiwzNjgzMiwzNjgzMywzNjgzNSwzNjgzOSwzNjg0NCwzNjg0NywzNjg0OSwzNjg1MCwzNjg1MiwzNjg1MywzNjg1NCwzNjg1OCwzNjg1OSwzNjg2MCwzNjg2MiwzNjg2MywzNjg3MSwzNjg3MiwzNjg3NiwzNjg3OCwzNjg4MywzNjg4NSwzNjg4OCwzNDEzNCwzNDEwNywzNDA0NywzNDA0NCwzNDEzNywzNDEyMCwzNDE1MiwzNDE0OCwzNDE0MiwzNDE3MCwzMDYyNiwzNDExNSwzNDE2MiwzNDE3MSwzNDIxMiwzNDIxNiwzNDE4MywzNDE5MSwzNDE2OSwzNDIyMiwzNDIwNCwzNDE4MSwzNDIzMywzNDIzMSwzNDIyNCwzNDI1OSwzNDI0MSwzNDI2OCwzNDMwMywzNDM0MywzNDMwOSwzNDM0NSwzNDMyNiwzNDM2NCwyNDMxOCwyNDMyOCwyMjg0NCwyMjg0OSwzMjgyMywyMjg2OSwyMjg3NCwyMjg3MiwyMTI2MywyMzU4NiwyMzU4OSwyMzU5NiwyMzYwNCwyNTE2NCwyNTE5NCwyNTI0NywyNTI3NSwyNTI5MCwyNTMwNiwyNTMwMywyNTMyNiwyNTM3OCwyNTMzNCwyNTQwMSwyNTQxOSwyNTQxMSwyNTUxNywyNTU5MCwyNTQ1NywyNTQ2NiwyNTQ4NiwyNTUyNCwyNTQ1MywyNTUxNiwyNTQ4MiwyNTQ0OSwyNTUxOCwyNTUzMiwyNTU4NiwyNTU5MiwyNTU2OCwyNTU5OSwyNTU0MCwyNTU2NiwyNTU1MCwyNTY4MiwyNTU0MiwyNTUzNCwyNTY2OSwyNTY2NSwyNTYxMSwyNTYyNywyNTYzMiwyNTYxMiwyNTYzOCwyNTYzMywyNTY5NCwyNTczMiwyNTcwOSwyNTc1MCwzNjg4OSwzNjg5MiwzNjg5OSwzNjkwMCwzNjkwMSwzNjkwMywzNjkwNCwzNjkwNSwzNjkwNiwzNjkwNywzNjkwOCwzNjkxMiwzNjkxMywzNjkxNCwzNjkxNSwzNjkxNiwzNjkxOSwzNjkyMSwzNjkyMiwzNjkyNSwzNjkyNywzNjkyOCwzNjkzMSwzNjkzMywzNjkzNCwzNjkzNiwzNjkzNywzNjkzOCwzNjkzOSwzNjk0MCwzNjk0MiwzNjk0OCwzNjk0OSwzNjk1MCwzNjk1MywzNjk1NCwzNjk1NiwzNjk1NywzNjk1OCwzNjk1OSwzNjk2MCwzNjk2MSwzNjk2NCwzNjk2NiwzNjk2NywzNjk2OSwzNjk3MCwzNjk3MSwzNjk3MiwzNjk3NSwzNjk3NiwzNjk3NywzNjk3OCwzNjk3OSwzNjk4MiwzNjk4MywzNjk4NCwzNjk4NSwzNjk4NiwzNjk4NywzNjk4OCwzNjk5MCwzNjk5MywzNjk5NiwzNjk5NywzNjk5OCwzNjk5OSwzNzAwMSwzNzAwMiwzNzAwNCwzNzAwNSwzNzAwNiwzNzAwNywzNzAwOCwzNzAxMCwzNzAxMiwzNzAxNCwzNzAxNiwzNzAxOCwzNzAyMCwzNzAyMiwzNzAyMywzNzAyNCwzNzAyOCwzNzAyOSwzNzAzMSwzNzAzMiwzNzAzMywzNzAzNSwzNzAzNywzNzA0MiwzNzA0NywzNzA1MiwzNzA1MywzNzA1NSwzNzA1NiwyNTcyMiwyNTc4MywyNTc4NCwyNTc1MywyNTc4NiwyNTc5MiwyNTgwOCwyNTgxNSwyNTgyOCwyNTgyNiwyNTg2NSwyNTg5MywyNTkwMiwyNDMzMSwyNDUzMCwyOTk3NywyNDMzNywyMTM0MywyMTQ4OSwyMTUwMSwyMTQ4MSwyMTQ4MCwyMTQ5OSwyMTUyMiwyMTUyNiwyMTUxMCwyMTU3OSwyMTU4NiwyMTU4NywyMTU4OCwyMTU5MCwyMTU3MSwyMTUzNywyMTU5MSwyMTU5MywyMTUzOSwyMTU1NCwyMTYzNCwyMTY1MiwyMTYyMywyMTYxNywyMTYwNCwyMTY1OCwyMTY1OSwyMTYzNiwyMTYyMiwyMTYwNiwyMTY2MSwyMTcxMiwyMTY3NywyMTY5OCwyMTY4NCwyMTcxNCwyMTY3MSwyMTY3MCwyMTcxNSwyMTcxNiwyMTYxOCwyMTY2NywyMTcxNywyMTY5MSwyMTY5NSwyMTcwOCwyMTcyMSwyMTcyMiwyMTcyNCwyMTY3MywyMTY3NCwyMTY2OCwyMTcyNSwyMTcxMSwyMTcyNiwyMTc4NywyMTczNSwyMTc5MiwyMTc1NywyMTc4MCwyMTc0NywyMTc5NCwyMTc5NSwyMTc3NSwyMTc3NywyMTc5OSwyMTgwMiwyMTg2MywyMTkwMywyMTk0MSwyMTgzMywyMTg2OSwyMTgyNSwyMTg0NSwyMTgyMywyMTg0MCwyMTgyMCwzNzA1OCwzNzA1OSwzNzA2MiwzNzA2NCwzNzA2NSwzNzA2NywzNzA2OCwzNzA2OSwzNzA3NCwzNzA3NiwzNzA3NywzNzA3OCwzNzA4MCwzNzA4MSwzNzA4MiwzNzA4NiwzNzA4NywzNzA4OCwzNzA5MSwzNzA5MiwzNzA5MywzNzA5NywzNzA5OCwzNzEwMCwzNzEwMiwzNzEwNCwzNzEwNSwzNzEwNiwzNzEwNywzNzEwOSwzNzExMCwzNzExMSwzNzExMywzNzExNCwzNzExNSwzNzExNiwzNzExOSwzNzEyMCwzNzEyMSwzNzEyMywzNzEyNSwzNzEyNiwzNzEyNywzNzEyOCwzNzEyOSwzNzEzMCwzNzEzMSwzNzEzMiwzNzEzMywzNzEzNCwzNzEzNSwzNzEzNiwzNzEzNywzNzEzOCwzNzEzOSwzNzE0MCwzNzE0MSwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0NywzNzE0OCwzNzE0OSwzNzE1MSwzNzE1MiwzNzE1MywzNzE1NiwzNzE1NywzNzE1OCwzNzE1OSwzNzE2MCwzNzE2MSwzNzE2MiwzNzE2MywzNzE2NCwzNzE2NSwzNzE2NiwzNzE2OCwzNzE3MCwzNzE3MSwzNzE3MiwzNzE3MywzNzE3NCwzNzE3NSwzNzE3NiwzNzE3OCwzNzE3OSwzNzE4MCwzNzE4MSwzNzE4MiwzNzE4MywzNzE4NCwzNzE4NSwzNzE4NiwzNzE4OCwyMTgxNSwyMTg0NiwyMTg3NywyMTg3OCwyMTg3OSwyMTgxMSwyMTgwOCwyMTg1MiwyMTg5OSwyMTk3MCwyMTg5MSwyMTkzNywyMTk0NSwyMTg5NiwyMTg4OSwyMTkxOSwyMTg4NiwyMTk3NCwyMTkwNSwyMTg4MywyMTk4MywyMTk0OSwyMTk1MCwyMTkwOCwyMTkxMywyMTk5NCwyMjAwNywyMTk2MSwyMjA0NywyMTk2OSwyMTk5NSwyMTk5NiwyMTk3MiwyMTk5MCwyMTk4MSwyMTk1NiwyMTk5OSwyMTk4OSwyMjAwMiwyMjAwMywyMTk2NCwyMTk2NSwyMTk5MiwyMjAwNSwyMTk4OCwzNjc1NiwyMjA0NiwyMjAyNCwyMjAyOCwyMjAxNywyMjA1MiwyMjA1MSwyMjAxNCwyMjAxNiwyMjA1NSwyMjA2MSwyMjEwNCwyMjA3MywyMjEwMywyMjA2MCwyMjA5MywyMjExNCwyMjEwNSwyMjEwOCwyMjA5MiwyMjEwMCwyMjE1MCwyMjExNiwyMjEyOSwyMjEyMywyMjEzOSwyMjE0MCwyMjE0OSwyMjE2MywyMjE5MSwyMjIyOCwyMjIzMSwyMjIzNywyMjI0MSwyMjI2MSwyMjI1MSwyMjI2NSwyMjI3MSwyMjI3NiwyMjI4MiwyMjI4MSwyMjMwMCwyNDA3OSwyNDA4OSwyNDA4NCwyNDA4MSwyNDExMywyNDEyMywyNDEyNCwzNzE4OSwzNzE5MSwzNzE5MiwzNzIwMSwzNzIwMywzNzIwNCwzNzIwNSwzNzIwNiwzNzIwOCwzNzIwOSwzNzIxMSwzNzIxMiwzNzIxNSwzNzIxNiwzNzIyMiwzNzIyMywzNzIyNCwzNzIyNywzNzIyOSwzNzIzNSwzNzI0MiwzNzI0MywzNzI0NCwzNzI0OCwzNzI0OSwzNzI1MCwzNzI1MSwzNzI1MiwzNzI1NCwzNzI1NiwzNzI1OCwzNzI2MiwzNzI2MywzNzI2NywzNzI2OCwzNzI2OSwzNzI3MCwzNzI3MSwzNzI3MiwzNzI3MywzNzI3NiwzNzI3NywzNzI3OCwzNzI3OSwzNzI4MCwzNzI4MSwzNzI4NCwzNzI4NSwzNzI4NiwzNzI4NywzNzI4OCwzNzI4OSwzNzI5MSwzNzI5MiwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwMywzNzMwNCwzNzMwNSwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMCwzNzMxMSwzNzMxMiwzNzMxMywzNzMxNCwzNzMxNSwzNzMxNiwzNzMxNywzNzMxOCwzNzMyMCwzNzMyMywzNzMyOCwzNzMzMCwzNzMzMSwzNzMzMiwzNzMzMywzNzMzNCwzNzMzNSwzNzMzNiwzNzMzNywzNzMzOCwzNzMzOSwzNzM0MSwzNzM0MiwzNzM0MywzNzM0NCwzNzM0NSwzNzM0NiwzNzM0NywzNzM0OCwzNzM0OSwyNDExOSwyNDEzMiwyNDE0OCwyNDE1NSwyNDE1OCwyNDE2MSwyMzY5MiwyMzY3NCwyMzY5MywyMzY5NiwyMzcwMiwyMzY4OCwyMzcwNCwyMzcwNSwyMzY5NywyMzcwNiwyMzcwOCwyMzczMywyMzcxNCwyMzc0MSwyMzcyNCwyMzcyMywyMzcyOSwyMzcxNSwyMzc0NSwyMzczNSwyMzc0OCwyMzc2MiwyMzc4MCwyMzc1NSwyMzc4MSwyMzgxMCwyMzgxMSwyMzg0NywyMzg0NiwyMzg1NCwyMzg0NCwyMzgzOCwyMzgxNCwyMzgzNSwyMzg5NiwyMzg3MCwyMzg2MCwyMzg2OSwyMzkxNiwyMzg5OSwyMzkxOSwyMzkwMSwyMzkxNSwyMzg4MywyMzg4MiwyMzkxMywyMzkyNCwyMzkzOCwyMzk2MSwyMzk2NSwzNTk1NSwyMzk5MSwyNDAwNSwyNDQzNSwyNDQzOSwyNDQ1MCwyNDQ1NSwyNDQ1NywyNDQ2MCwyNDQ2OSwyNDQ3MywyNDQ3NiwyNDQ4OCwyNDQ5MywyNDUwMSwyNDUwOCwzNDkxNCwyNDQxNywyOTM1NywyOTM2MCwyOTM2NCwyOTM2NywyOTM2OCwyOTM3OSwyOTM3NywyOTM5MCwyOTM4OSwyOTM5NCwyOTQxNiwyOTQyMywyOTQxNywyOTQyNiwyOTQyOCwyOTQzMSwyOTQ0MSwyOTQyNywyOTQ0MywyOTQzNCwzNzM1MCwzNzM1MSwzNzM1MiwzNzM1MywzNzM1NCwzNzM1NSwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2MiwzNzM2MywzNzM2NCwzNzM2NSwzNzM2NiwzNzM2NywzNzM2OCwzNzM2OSwzNzM3MCwzNzM3MSwzNzM3MiwzNzM3MywzNzM3NCwzNzM3NSwzNzM3NiwzNzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM4NywzNzM4OCwzNzM4OSwzNzM5MCwzNzM5MSwzNzM5MiwzNzM5MywzNzM5NCwzNzM5NSwzNzM5NiwzNzM5NywzNzM5OCwzNzM5OSwzNzQwMCwzNzQwMSwzNzQwMiwzNzQwMywzNzQwNCwzNzQwNSwzNzQwNiwzNzQwNywzNzQwOCwzNzQwOSwzNzQxMCwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNSwzNzQxNiwzNzQxNywzNzQxOCwzNzQxOSwzNzQyMCwzNzQyMSwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNSwzNzQyNiwzNzQyNywzNzQyOCwzNzQyOSwzNzQzMCwzNzQzMSwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNSwzNzQzNiwzNzQzNywzNzQzOCwzNzQzOSwzNzQ0MCwzNzQ0MSwzNzQ0MiwzNzQ0MywzNzQ0NCwzNzQ0NSwyOTQzNSwyOTQ2MywyOTQ1OSwyOTQ3MywyOTQ1MCwyOTQ3MCwyOTQ2OSwyOTQ2MSwyOTQ3NCwyOTQ5NywyOTQ3NywyOTQ4NCwyOTQ5NiwyOTQ4OSwyOTUyMCwyOTUxNywyOTUyNywyOTUzNiwyOTU0OCwyOTU1MSwyOTU2NiwzMzMwNywyMjgyMSwzOTE0MywyMjgyMCwyMjc4NiwzOTI2NywzOTI3MSwzOTI3MiwzOTI3MywzOTI3NCwzOTI3NSwzOTI3NiwzOTI4NCwzOTI4NywzOTI5MywzOTI5NiwzOTMwMCwzOTMwMywzOTMwNiwzOTMwOSwzOTMxMiwzOTMxMywzOTMxNSwzOTMxNiwzOTMxNywyNDE5MiwyNDIwOSwyNDIwMywyNDIxNCwyNDIyOSwyNDIyNCwyNDI0OSwyNDI0NSwyNDI1NCwyNDI0MywzNjE3OSwyNDI3NCwyNDI3MywyNDI4MywyNDI5NiwyNDI5OCwzMzIxMCwyNDUxNiwyNDUyMSwyNDUzNCwyNDUyNywyNDU3OSwyNDU1OCwyNDU4MCwyNDU0NSwyNDU0OCwyNDU3NCwyNDU4MSwyNDU4MiwyNDU1NCwyNDU1NywyNDU2OCwyNDYwMSwyNDYyOSwyNDYxNCwyNDYwMywyNDU5MSwyNDU4OSwyNDYxNywyNDYxOSwyNDU4NiwyNDYzOSwyNDYwOSwyNDY5NiwyNDY5NywyNDY5OSwyNDY5OCwyNDY0MiwzNzQ0NiwzNzQ0NywzNzQ0OCwzNzQ0OSwzNzQ1MCwzNzQ1MSwzNzQ1MiwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NiwzNzQ1NywzNzQ1OCwzNzQ1OSwzNzQ2MCwzNzQ2MSwzNzQ2MiwzNzQ2MywzNzQ2NCwzNzQ2NSwzNzQ2NiwzNzQ2NywzNzQ2OCwzNzQ2OSwzNzQ3MCwzNzQ3MSwzNzQ3MiwzNzQ3MywzNzQ3NCwzNzQ3NSwzNzQ3NiwzNzQ3NywzNzQ3OCwzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4MiwzNzQ4MywzNzQ4NCwzNzQ4NSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ4OSwzNzQ5MCwzNzQ5MSwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OCwzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMiwzNzUwMywzNzUwNCwzNzUwNSwzNzUwNiwzNzUwNywzNzUwOCwzNzUwOSwzNzUxMCwzNzUxMSwzNzUxMiwzNzUxMywzNzUxNCwzNzUxNSwzNzUxNiwzNzUxNywzNzUxOSwzNzUyMCwzNzUyMSwzNzUyMiwzNzUyMywzNzUyNCwzNzUyNSwzNzUyNiwzNzUyNywzNzUyOCwzNzUyOSwzNzUzMCwzNzUzMSwzNzUzMiwzNzUzMywzNzUzNCwzNzUzNSwzNzUzNiwzNzUzNywzNzUzOCwzNzUzOSwzNzU0MCwzNzU0MSwzNzU0MiwzNzU0MywyNDY4MiwyNDcwMSwyNDcyNiwyNDczMCwyNDc0OSwyNDczMywyNDcwNywyNDcyMiwyNDcxNiwyNDczMSwyNDgxMiwyNDc2MywyNDc1MywyNDc5NywyNDc5MiwyNDc3NCwyNDc5NCwyNDc1NiwyNDg2NCwyNDg3MCwyNDg1MywyNDg2NywyNDgyMCwyNDgzMiwyNDg0NiwyNDg3NSwyNDkwNiwyNDk0OSwyNTAwNCwyNDk4MCwyNDk5OSwyNTAxNSwyNTA0NCwyNTA3NywyNDU0MSwzODU3OSwzODM3NywzODM3OSwzODM4NSwzODM4NywzODM4OSwzODM5MCwzODM5NiwzODM5OCwzODQwMywzODQwNCwzODQwNiwzODQwOCwzODQxMCwzODQxMSwzODQxMiwzODQxMywzODQxNSwzODQxOCwzODQyMSwzODQyMiwzODQyMywzODQyNSwzODQyNiwyMDAxMiwyOTI0NywyNTEwOSwyNzcwMSwyNzczMiwyNzc0MCwyNzcyMiwyNzgxMSwyNzc4MSwyNzc5MiwyNzc5NiwyNzc4OCwyNzc1MiwyNzc1MywyNzc2NCwyNzc2NiwyNzc4MiwyNzgxNywyNzg1NiwyNzg2MCwyNzgyMSwyNzg5NSwyNzg5NiwyNzg4OSwyNzg2MywyNzgyNiwyNzg3MiwyNzg2MiwyNzg5OCwyNzg4MywyNzg4NiwyNzgyNSwyNzg1OSwyNzg4NywyNzkwMiwzNzU0NCwzNzU0NSwzNzU0NiwzNzU0NywzNzU0OCwzNzU0OSwzNzU1MSwzNzU1MiwzNzU1MywzNzU1NCwzNzU1NSwzNzU1NiwzNzU1NywzNzU1OCwzNzU1OSwzNzU2MCwzNzU2MSwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NiwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MiwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NywzNzU3OCwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4MywzNzU4NCwzNzU4NSwzNzU4NiwzNzU4NywzNzU4OCwzNzU4OSwzNzU5MCwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NCwzNzU5NSwzNzU5NiwzNzU5NywzNzU5OCwzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMiwzNzYwMywzNzYwNCwzNzYwNSwzNzYwNiwzNzYwNywzNzYwOCwzNzYwOSwzNzYxMCwzNzYxMSwzNzYxMiwzNzYxMywzNzYxNCwzNzYxNSwzNzYxNiwzNzYxNywzNzYxOCwzNzYxOSwzNzYyMCwzNzYyMSwzNzYyMiwzNzYyMywzNzYyNCwzNzYyNSwzNzYyNiwzNzYyNywzNzYyOCwzNzYyOSwzNzYzMCwzNzYzMSwzNzYzMiwzNzYzMywzNzYzNCwzNzYzNSwzNzYzNiwzNzYzNywzNzYzOCwzNzYzOSwzNzY0MCwzNzY0MSwyNzk2MSwyNzk0MywyNzkxNiwyNzk3MSwyNzk3NiwyNzkxMSwyNzkwOCwyNzkyOSwyNzkxOCwyNzk0NywyNzk4MSwyNzk1MCwyNzk1NywyNzkzMCwyNzk4MywyNzk4NiwyNzk4OCwyNzk1NSwyODA0OSwyODAxNSwyODA2MiwyODA2NCwyNzk5OCwyODA1MSwyODA1MiwyNzk5NiwyODAwMCwyODAyOCwyODAwMywyODE4NiwyODEwMywyODEwMSwyODEyNiwyODE3NCwyODA5NSwyODEyOCwyODE3NywyODEzNCwyODEyNSwyODEyMSwyODE4MiwyODA3NSwyODE3MiwyODA3OCwyODIwMywyODI3MCwyODIzOCwyODI2NywyODMzOCwyODI1NSwyODI5NCwyODI0MywyODI0NCwyODIxMCwyODE5NywyODIyOCwyODM4MywyODMzNywyODMxMiwyODM4NCwyODQ2MSwyODM4NiwyODMyNSwyODMyNywyODM0OSwyODM0NywyODM0MywyODM3NSwyODM0MCwyODM2NywyODMwMywyODM1NCwyODMxOSwyODUxNCwyODQ4NiwyODQ4NywyODQ1MiwyODQzNywyODQwOSwyODQ2MywyODQ3MCwyODQ5MSwyODUzMiwyODQ1OCwyODQyNSwyODQ1NywyODU1MywyODU1NywyODU1NiwyODUzNiwyODUzMCwyODU0MCwyODUzOCwyODYyNSwzNzY0MiwzNzY0MywzNzY0NCwzNzY0NSwzNzY0NiwzNzY0NywzNzY0OCwzNzY0OSwzNzY1MCwzNzY1MSwzNzY1MiwzNzY1MywzNzY1NCwzNzY1NSwzNzY1NiwzNzY1NywzNzY1OCwzNzY1OSwzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NCwzNzY2NSwzNzY2NiwzNzY2NywzNzY2OCwzNzY2OSwzNzY3MCwzNzY3MSwzNzY3MiwzNzY3MywzNzY3NCwzNzY3NSwzNzY3NiwzNzY3NywzNzY3OCwzNzY3OSwzNzY4MCwzNzY4MSwzNzY4MiwzNzY4MywzNzY4NCwzNzY4NSwzNzY4NiwzNzY4NywzNzY4OCwzNzY4OSwzNzY5MCwzNzY5MSwzNzY5MiwzNzY5MywzNzY5NSwzNzY5NiwzNzY5NywzNzY5OCwzNzY5OSwzNzcwMCwzNzcwMSwzNzcwMiwzNzcwMywzNzcwNCwzNzcwNSwzNzcwNiwzNzcwNywzNzcwOCwzNzcwOSwzNzcxMCwzNzcxMSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNSwzNzcxNiwzNzcxNywzNzcxOCwzNzcxOSwzNzcyMCwzNzcyMSwzNzcyMiwzNzcyMywzNzcyNCwzNzcyNSwzNzcyNiwzNzcyNywzNzcyOCwzNzcyOSwzNzczMCwzNzczMSwzNzczMiwzNzczMywzNzczNCwzNzczNSwzNzczNiwzNzczNywzNzczOSwyODYxNywyODU4MywyODYwMSwyODU5OCwyODYxMCwyODY0MSwyODY1NCwyODYzOCwyODY0MCwyODY1NSwyODY5OCwyODcwNywyODY5OSwyODcyOSwyODcyNSwyODc1MSwyODc2NiwyMzQyNCwyMzQyOCwyMzQ0NSwyMzQ0MywyMzQ2MSwyMzQ4MCwyOTk5OSwzOTU4MiwyNTY1MiwyMzUyNCwyMzUzNCwzNTEyMCwyMzUzNiwzNjQyMywzNTU5MSwzNjc5MCwzNjgxOSwzNjgyMSwzNjgzNywzNjg0NiwzNjgzNiwzNjg0MSwzNjgzOCwzNjg1MSwzNjg0MCwzNjg2OSwzNjg2OCwzNjg3NSwzNjkwMiwzNjg4MSwzNjg3NywzNjg4NiwzNjg5NywzNjkxNywzNjkxOCwzNjkwOSwzNjkxMSwzNjkzMiwzNjk0NSwzNjk0NiwzNjk0NCwzNjk2OCwzNjk1MiwzNjk2MiwzNjk1NSwyNjI5NywzNjk4MCwzNjk4OSwzNjk5NCwzNzAwMCwzNjk5NSwzNzAwMywyNDQwMCwyNDQwNywyNDQwNiwyNDQwOCwyMzYxMSwyMTY3NSwyMzYzMiwyMzY0MSwyMzQwOSwyMzY1MSwyMzY1NCwzMjcwMCwyNDM2MiwyNDM2MSwyNDM2NSwzMzM5NiwyNDM4MCwzOTczOSwyMzY2MiwyMjkxMywyMjkxNSwyMjkyNSwyMjk1MywyMjk1NCwyMjk0NywzNzc0MCwzNzc0MSwzNzc0MiwzNzc0MywzNzc0NCwzNzc0NSwzNzc0NiwzNzc0NywzNzc0OCwzNzc0OSwzNzc1MCwzNzc1MSwzNzc1MiwzNzc1MywzNzc1NCwzNzc1NSwzNzc1NiwzNzc1NywzNzc1OCwzNzc1OSwzNzc2MCwzNzc2MSwzNzc2MiwzNzc2MywzNzc2NCwzNzc2NSwzNzc2NiwzNzc2NywzNzc2OCwzNzc2OSwzNzc3MCwzNzc3MSwzNzc3MiwzNzc3MywzNzc3NCwzNzc3NiwzNzc3NywzNzc3OCwzNzc3OSwzNzc4MCwzNzc4MSwzNzc4MiwzNzc4MywzNzc4NCwzNzc4NSwzNzc4NiwzNzc4NywzNzc4OCwzNzc4OSwzNzc5MCwzNzc5MSwzNzc5MiwzNzc5MywzNzc5NCwzNzc5NSwzNzc5NiwzNzc5NywzNzc5OCwzNzc5OSwzNzgwMCwzNzgwMSwzNzgwMiwzNzgwMywzNzgwNCwzNzgwNSwzNzgwNiwzNzgwNywzNzgwOCwzNzgwOSwzNzgxMCwzNzgxMSwzNzgxMiwzNzgxMywzNzgxNCwzNzgxNSwzNzgxNiwzNzgxNywzNzgxOCwzNzgxOSwzNzgyMCwzNzgyMSwzNzgyMiwzNzgyMywzNzgyNCwzNzgyNSwzNzgyNiwzNzgyNywzNzgyOCwzNzgyOSwzNzgzMCwzNzgzMSwzNzgzMiwzNzgzMywzNzgzNSwzNzgzNiwzNzgzNywyMjkzNSwyMjk4NiwyMjk1NSwyMjk0MiwyMjk0OCwyMjk5NCwyMjk2MiwyMjk1OSwyMjk5OSwyMjk3NCwyMzA0NSwyMzA0NiwyMzAwNSwyMzA0OCwyMzAxMSwyMzAwMCwyMzAzMywyMzA1MiwyMzA0OSwyMzA5MCwyMzA5MiwyMzA1NywyMzA3NSwyMzA1OSwyMzEwNCwyMzE0MywyMzExNCwyMzEyNSwyMzEwMCwyMzEzOCwyMzE1NywzMzAwNCwyMzIxMCwyMzE5NSwyMzE1OSwyMzE2MiwyMzIzMCwyMzI3NSwyMzIxOCwyMzI1MCwyMzI1MiwyMzIyNCwyMzI2NCwyMzI2NywyMzI4MSwyMzI1NCwyMzI3MCwyMzI1NiwyMzI2MCwyMzMwNSwyMzMxOSwyMzMxOCwyMzM0NiwyMzM1MSwyMzM2MCwyMzU3MywyMzU4MCwyMzM4NiwyMzM5NywyMzQxMSwyMzM3NywyMzM3OSwyMzM5NCwzOTU0MSwzOTU0MywzOTU0NCwzOTU0NiwzOTU1MSwzOTU0OSwzOTU1MiwzOTU1MywzOTU1NywzOTU2MCwzOTU2MiwzOTU2OCwzOTU3MCwzOTU3MSwzOTU3NCwzOTU3NiwzOTU3OSwzOTU4MCwzOTU4MSwzOTU4MywzOTU4NCwzOTU4NiwzOTU4NywzOTU4OSwzOTU5MSwzMjQxNSwzMjQxNywzMjQxOSwzMjQyMSwzMjQyNCwzMjQyNSwzNzgzOCwzNzgzOSwzNzg0MCwzNzg0MSwzNzg0MiwzNzg0MywzNzg0NCwzNzg0NSwzNzg0NywzNzg0OCwzNzg0OSwzNzg1MCwzNzg1MSwzNzg1MiwzNzg1MywzNzg1NCwzNzg1NSwzNzg1NiwzNzg1NywzNzg1OCwzNzg1OSwzNzg2MCwzNzg2MSwzNzg2MiwzNzg2MywzNzg2NCwzNzg2NSwzNzg2NiwzNzg2NywzNzg2OCwzNzg2OSwzNzg3MCwzNzg3MSwzNzg3MiwzNzg3MywzNzg3NCwzNzg3NSwzNzg3NiwzNzg3NywzNzg3OCwzNzg3OSwzNzg4MCwzNzg4MSwzNzg4MiwzNzg4MywzNzg4NCwzNzg4NSwzNzg4NiwzNzg4NywzNzg4OCwzNzg4OSwzNzg5MCwzNzg5MSwzNzg5MiwzNzg5MywzNzg5NCwzNzg5NSwzNzg5NiwzNzg5NywzNzg5OCwzNzg5OSwzNzkwMCwzNzkwMSwzNzkwMiwzNzkwMywzNzkwNCwzNzkwNSwzNzkwNiwzNzkwNywzNzkwOCwzNzkwOSwzNzkxMCwzNzkxMSwzNzkxMiwzNzkxMywzNzkxNCwzNzkxNSwzNzkxNiwzNzkxNywzNzkxOCwzNzkxOSwzNzkyMCwzNzkyMSwzNzkyMiwzNzkyMywzNzkyNCwzNzkyNSwzNzkyNiwzNzkyNywzNzkyOCwzNzkyOSwzNzkzMCwzNzkzMSwzNzkzMiwzNzkzMywzNzkzNCwzMjQyOSwzMjQzMiwzMjQ0NiwzMjQ0OCwzMjQ0OSwzMjQ1MCwzMjQ1NywzMjQ1OSwzMjQ2MCwzMjQ2NCwzMjQ2OCwzMjQ3MSwzMjQ3NSwzMjQ4MCwzMjQ4MSwzMjQ4OCwzMjQ5MSwzMjQ5NCwzMjQ5NSwzMjQ5NywzMjQ5OCwzMjUyNSwzMjUwMiwzMjUwNiwzMjUwNywzMjUxMCwzMjUxMywzMjUxNCwzMjUxNSwzMjUxOSwzMjUyMCwzMjUyMywzMjUyNCwzMjUyNywzMjUyOSwzMjUzMCwzMjUzNSwzMjUzNywzMjU0MCwzMjUzOSwzMjU0MywzMjU0NSwzMjU0NiwzMjU0NywzMjU0OCwzMjU0OSwzMjU1MCwzMjU1MSwzMjU1NCwzMjU1NSwzMjU1NiwzMjU1NywzMjU1OSwzMjU2MCwzMjU2MSwzMjU2MiwzMjU2MywzMjU2NSwyNDE4NiwzMDA3OSwyNDAyNywzMDAxNCwzNzAxMywyOTU4MiwyOTU4NSwyOTYxNCwyOTYwMiwyOTU5OSwyOTY0NywyOTYzNCwyOTY0OSwyOTYyMywyOTYxOSwyOTYzMiwyOTY0MSwyOTY0MCwyOTY2OSwyOTY1NywzOTAzNiwyOTcwNiwyOTY3MywyOTY3MSwyOTY2MiwyOTYyNiwyOTY4MiwyOTcxMSwyOTczOCwyOTc4NywyOTczNCwyOTczMywyOTczNiwyOTc0NCwyOTc0MiwyOTc0MCwzNzkzNSwzNzkzNiwzNzkzNywzNzkzOCwzNzkzOSwzNzk0MCwzNzk0MSwzNzk0MiwzNzk0MywzNzk0NCwzNzk0NSwzNzk0NiwzNzk0NywzNzk0OCwzNzk0OSwzNzk1MSwzNzk1MiwzNzk1MywzNzk1NCwzNzk1NSwzNzk1NiwzNzk1NywzNzk1OCwzNzk1OSwzNzk2MCwzNzk2MSwzNzk2MiwzNzk2MywzNzk2NCwzNzk2NSwzNzk2NiwzNzk2NywzNzk2OCwzNzk2OSwzNzk3MCwzNzk3MSwzNzk3MiwzNzk3MywzNzk3NCwzNzk3NSwzNzk3NiwzNzk3NywzNzk3OCwzNzk3OSwzNzk4MCwzNzk4MSwzNzk4MiwzNzk4MywzNzk4NCwzNzk4NSwzNzk4NiwzNzk4NywzNzk4OCwzNzk4OSwzNzk5MCwzNzk5MSwzNzk5MiwzNzk5MywzNzk5NCwzNzk5NiwzNzk5NywzNzk5OCwzNzk5OSwzODAwMCwzODAwMSwzODAwMiwzODAwMywzODAwNCwzODAwNSwzODAwNiwzODAwNywzODAwOCwzODAwOSwzODAxMCwzODAxMSwzODAxMiwzODAxMywzODAxNCwzODAxNSwzODAxNiwzODAxNywzODAxOCwzODAxOSwzODAyMCwzODAzMywzODAzOCwzODA0MCwzODA4NywzODA5NSwzODA5OSwzODEwMCwzODEwNiwzODExOCwzODEzOSwzODE3MiwzODE3NiwyOTcyMywyOTcyMiwyOTc2MSwyOTc4OCwyOTc4MywyOTc4MSwyOTc4NSwyOTgxNSwyOTgwNSwyOTgyMiwyOTg1MiwyOTgzOCwyOTgyNCwyOTgyNSwyOTgzMSwyOTgzNSwyOTg1NCwyOTg2NCwyOTg2NSwyOTg0MCwyOTg2MywyOTkwNiwyOTg4MiwzODg5MCwzODg5MSwzODg5MiwyNjQ0NCwyNjQ1MSwyNjQ2MiwyNjQ0MCwyNjQ3MywyNjUzMywyNjUwMywyNjQ3NCwyNjQ4MywyNjUyMCwyNjUzNSwyNjQ4NSwyNjUzNiwyNjUyNiwyNjU0MSwyNjUwNywyNjQ4NywyNjQ5MiwyNjYwOCwyNjYzMywyNjU4NCwyNjYzNCwyNjYwMSwyNjU0NCwyNjYzNiwyNjU4NSwyNjU0OSwyNjU4NiwyNjU0NywyNjU4OSwyNjYyNCwyNjU2MywyNjU1MiwyNjU5NCwyNjYzOCwyNjU2MSwyNjYyMSwyNjY3NCwyNjY3NSwyNjcyMCwyNjcyMSwyNjcwMiwyNjcyMiwyNjY5MiwyNjcyNCwyNjc1NSwyNjY1MywyNjcwOSwyNjcyNiwyNjY4OSwyNjcyNywyNjY4OCwyNjY4NiwyNjY5OCwyNjY5NywyNjY2NSwyNjgwNSwyNjc2NywyNjc0MCwyNjc0MywyNjc3MSwyNjczMSwyNjgxOCwyNjk5MCwyNjg3NiwyNjkxMSwyNjkxMiwyNjg3MywzODE4MywzODE5NSwzODIwNSwzODIxMSwzODIxNiwzODIxOSwzODIyOSwzODIzNCwzODI0MCwzODI1NCwzODI2MCwzODI2MSwzODI2MywzODI2NCwzODI2NSwzODI2NiwzODI2NywzODI2OCwzODI2OSwzODI3MCwzODI3MiwzODI3MywzODI3NCwzODI3NSwzODI3NiwzODI3NywzODI3OCwzODI3OSwzODI4MCwzODI4MSwzODI4MiwzODI4MywzODI4NCwzODI4NSwzODI4NiwzODI4NywzODI4OCwzODI4OSwzODI5MCwzODI5MSwzODI5MiwzODI5MywzODI5NCwzODI5NSwzODI5NiwzODI5NywzODI5OCwzODI5OSwzODMwMCwzODMwMSwzODMwMiwzODMwMywzODMwNCwzODMwNSwzODMwNiwzODMwNywzODMwOCwzODMwOSwzODMxMCwzODMxMSwzODMxMiwzODMxMywzODMxNCwzODMxNSwzODMxNiwzODMxNywzODMxOCwzODMxOSwzODMyMCwzODMyMSwzODMyMiwzODMyMywzODMyNCwzODMyNSwzODMyNiwzODMyNywzODMyOCwzODMyOSwzODMzMCwzODMzMSwzODMzMiwzODMzMywzODMzNCwzODMzNSwzODMzNiwzODMzNywzODMzOCwzODMzOSwzODM0MCwzODM0MSwzODM0MiwzODM0MywzODM0NCwzODM0NSwzODM0NiwzODM0NywyNjkxNiwyNjg2NCwyNjg5MSwyNjg4MSwyNjk2NywyNjg1MSwyNjg5NiwyNjk5MywyNjkzNywyNjk3NiwyNjk0NiwyNjk3MywyNzAxMiwyNjk4NywyNzAwOCwyNzAzMiwyNzAwMCwyNjkzMiwyNzA4NCwyNzAxNSwyNzAxNiwyNzA4NiwyNzAxNywyNjk4MiwyNjk3OSwyNzAwMSwyNzAzNSwyNzA0NywyNzA2NywyNzA1MSwyNzA1MywyNzA5MiwyNzA1NywyNzA3MywyNzA4MiwyNzEwMywyNzAyOSwyNzEwNCwyNzAyMSwyNzEzNSwyNzE4MywyNzExNywyNzE1OSwyNzE2MCwyNzIzNywyNzEyMiwyNzIwNCwyNzE5OCwyNzI5NiwyNzIxNiwyNzIyNywyNzE4OSwyNzI3OCwyNzI1NywyNzE5NywyNzE3NiwyNzIyNCwyNzI2MCwyNzI4MSwyNzI4MCwyNzMwNSwyNzI4NywyNzMwNywyOTQ5NSwyOTUyMiwyNzUyMSwyNzUyMiwyNzUyNywyNzUyNCwyNzUzOCwyNzUzOSwyNzUzMywyNzU0NiwyNzU0NywyNzU1MywyNzU2MiwzNjcxNSwzNjcxNywzNjcyMSwzNjcyMiwzNjcyMywzNjcyNSwzNjcyNiwzNjcyOCwzNjcyNywzNjcyOSwzNjczMCwzNjczMiwzNjczNCwzNjczNywzNjczOCwzNjc0MCwzNjc0MywzNjc0NywzODM0OCwzODM0OSwzODM1MCwzODM1MSwzODM1MiwzODM1MywzODM1NCwzODM1NSwzODM1NiwzODM1NywzODM1OCwzODM1OSwzODM2MCwzODM2MSwzODM2MiwzODM2MywzODM2NCwzODM2NSwzODM2NiwzODM2NywzODM2OCwzODM2OSwzODM3MCwzODM3MSwzODM3MiwzODM3MywzODM3NCwzODM3NSwzODM4MCwzODM5OSwzODQwNywzODQxOSwzODQyNCwzODQyNywzODQzMCwzODQzMiwzODQzNSwzODQzNiwzODQzNywzODQzOCwzODQzOSwzODQ0MCwzODQ0MSwzODQ0MywzODQ0NCwzODQ0NSwzODQ0NywzODQ0OCwzODQ1NSwzODQ1NiwzODQ1NywzODQ1OCwzODQ2MiwzODQ2NSwzODQ2NywzODQ3NCwzODQ3OCwzODQ3OSwzODQ4MSwzODQ4MiwzODQ4MywzODQ4NiwzODQ4NywzODQ4OCwzODQ4OSwzODQ5MCwzODQ5MiwzODQ5MywzODQ5NCwzODQ5NiwzODQ5OSwzODUwMSwzODUwMiwzODUwNywzODUwOSwzODUxMCwzODUxMSwzODUxMiwzODUxMywzODUxNSwzODUyMCwzODUyMSwzODUyMiwzODUyMywzODUyNCwzODUyNSwzODUyNiwzODUyNywzODUyOCwzODUyOSwzODUzMCwzODUzMSwzODUzMiwzODUzNSwzODUzNywzODUzOCwzNjc0OSwzNjc1MCwzNjc1MSwzNjc2MCwzNjc2MiwzNjU1OCwyNTA5OSwyNTExMSwyNTExNSwyNTExOSwyNTEyMiwyNTEyMSwyNTEyNSwyNTEyNCwyNTEzMiwzMzI1NSwyOTkzNSwyOTk0MCwyOTk1MSwyOTk2NywyOTk2OSwyOTk3MSwyNTkwOCwyNjA5NCwyNjA5NSwyNjA5NiwyNjEyMiwyNjEzNywyNjQ4MiwyNjExNSwyNjEzMywyNjExMiwyODgwNSwyNjM1OSwyNjE0MSwyNjE2NCwyNjE2MSwyNjE2NiwyNjE2NSwzMjc3NCwyNjIwNywyNjE5NiwyNjE3NywyNjE5MSwyNjE5OCwyNjIwOSwyNjE5OSwyNjIzMSwyNjI0NCwyNjI1MiwyNjI3OSwyNjI2OSwyNjMwMiwyNjMzMSwyNjMzMiwyNjM0MiwyNjM0NSwzNjE0NiwzNjE0NywzNjE1MCwzNjE1NSwzNjE1NywzNjE2MCwzNjE2NSwzNjE2NiwzNjE2OCwzNjE2OSwzNjE2NywzNjE3MywzNjE4MSwzNjE4NSwzNTI3MSwzNTI3NCwzNTI3NSwzNTI3NiwzNTI3OCwzNTI3OSwzNTI4MCwzNTI4MSwyOTI5NCwyOTM0MywyOTI3NywyOTI4NiwyOTI5NSwyOTMxMCwyOTMxMSwyOTMxNiwyOTMyMywyOTMyNSwyOTMyNywyOTMzMCwyNTM1MiwyNTM5NCwyNTUyMCwzODU0MCwzODU0MiwzODU0NSwzODU0NiwzODU0NywzODU0OSwzODU1MCwzODU1NCwzODU1NSwzODU1NywzODU1OCwzODU1OSwzODU2MCwzODU2MSwzODU2MiwzODU2MywzODU2NCwzODU2NSwzODU2NiwzODU2OCwzODU2OSwzODU3MCwzODU3MSwzODU3MiwzODU3MywzODU3NCwzODU3NSwzODU3NywzODU3OCwzODU4MCwzODU4MSwzODU4MywzODU4NCwzODU4NiwzODU4NywzODU5MSwzODU5NCwzODU5NSwzODYwMCwzODYwMiwzODYwMywzODYwOCwzODYwOSwzODYxMSwzODYxMiwzODYxNCwzODYxNSwzODYxNiwzODYxNywzODYxOCwzODYxOSwzODYyMCwzODYyMSwzODYyMiwzODYyMywzODYyNSwzODYyNiwzODYyNywzODYyOCwzODYyOSwzODYzMCwzODYzMSwzODYzNSwzODYzNiwzODYzNywzODYzOCwzODY0MCwzODY0MSwzODY0MiwzODY0NCwzODY0NSwzODY0OCwzODY1MCwzODY1MSwzODY1MiwzODY1MywzODY1NSwzODY1OCwzODY1OSwzODY2MSwzODY2NiwzODY2NywzODY2OCwzODY3MiwzODY3MywzODY3NCwzODY3NiwzODY3NywzODY3OSwzODY4MCwzODY4MSwzODY4MiwzODY4MywzODY4NSwzODY4NywzODY4OCwyNTY2MywyNTgxNiwzMjc3MiwyNzYyNiwyNzYzNSwyNzY0NSwyNzYzNywyNzY0MSwyNzY1MywyNzY1NSwyNzY1NCwyNzY2MSwyNzY2OSwyNzY3MiwyNzY3MywyNzY3NCwyNzY4MSwyNzY4OSwyNzY4NCwyNzY5MCwyNzY5OCwyNTkwOSwyNTk0MSwyNTk2MywyOTI2MSwyOTI2NiwyOTI3MCwyOTIzMiwzNDQwMiwyMTAxNCwzMjkyNywzMjkyNCwzMjkxNSwzMjk1NiwyNjM3OCwzMjk1NywzMjk0NSwzMjkzOSwzMjk0MSwzMjk0OCwzMjk1MSwzMjk5OSwzMzAwMCwzMzAwMSwzMzAwMiwzMjk4NywzMjk2MiwzMjk2NCwzMjk4NSwzMjk3MywzMjk4MywyNjM4NCwzMjk4OSwzMzAwMywzMzAwOSwzMzAxMiwzMzAwNSwzMzAzNywzMzAzOCwzMzAxMCwzMzAyMCwyNjM4OSwzMzA0MiwzNTkzMCwzMzA3OCwzMzA1NCwzMzA2OCwzMzA0OCwzMzA3NCwzMzA5NiwzMzEwMCwzMzEwNywzMzE0MCwzMzExMywzMzExNCwzMzEzNywzMzEyMCwzMzEyOSwzMzE0OCwzMzE0OSwzMzEzMywzMzEyNywyMjYwNSwyMzIyMSwzMzE2MCwzMzE1NCwzMzE2OSwyODM3MywzMzE4NywzMzE5NCwzMzIyOCwyNjQwNiwzMzIyNiwzMzIxMSwzODY4OSwzODY5MCwzODY5MSwzODY5MiwzODY5MywzODY5NCwzODY5NSwzODY5NiwzODY5NywzODY5OSwzODcwMCwzODcwMiwzODcwMywzODcwNSwzODcwNywzODcwOCwzODcwOSwzODcxMCwzODcxMSwzODcxNCwzODcxNSwzODcxNiwzODcxNywzODcxOSwzODcyMCwzODcyMSwzODcyMiwzODcyMywzODcyNCwzODcyNSwzODcyNiwzODcyNywzODcyOCwzODcyOSwzODczMCwzODczMSwzODczMiwzODczMywzODczNCwzODczNSwzODczNiwzODczNywzODc0MCwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0OCwzODc0OSwzODc1MSwzODc1NSwzODc1NiwzODc1OCwzODc1OSwzODc2MCwzODc2MiwzODc2MywzODc2NCwzODc2NSwzODc2NiwzODc2NywzODc2OCwzODc2OSwzODc3MCwzODc3MywzODc3NSwzODc3NiwzODc3NywzODc3OCwzODc3OSwzODc4MSwzODc4MiwzODc4MywzODc4NCwzODc4NSwzODc4NiwzODc4NywzODc4OCwzODc5MCwzODc5MSwzODc5MiwzODc5MywzODc5NCwzODc5NiwzODc5OCwzODc5OSwzODgwMCwzODgwMywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxMSwzODgxMiwzODgxMywzMzIxNywzMzE5MCwyNzQyOCwyNzQ0NywyNzQ0OSwyNzQ1OSwyNzQ2MiwyNzQ4MSwzOTEyMSwzOTEyMiwzOTEyMywzOTEyNSwzOTEyOSwzOTEzMCwyNzU3MSwyNDM4NCwyNzU4NiwzNTMxNSwyNjAwMCw0MDc4NSwyNjAwMywyNjA0NCwyNjA1NCwyNjA1MiwyNjA1MSwyNjA2MCwyNjA2MiwyNjA2NiwyNjA3MCwyODgwMCwyODgyOCwyODgyMiwyODgyOSwyODg1OSwyODg2NCwyODg1NSwyODg0MywyODg0OSwyODkwNCwyODg3NCwyODk0NCwyODk0NywyODk1MCwyODk3NSwyODk3NywyOTA0MywyOTAyMCwyOTAzMiwyODk5NywyOTA0MiwyOTAwMiwyOTA0OCwyOTA1MCwyOTA4MCwyOTEwNywyOTEwOSwyOTA5NiwyOTA4OCwyOTE1MiwyOTE0MCwyOTE1OSwyOTE3NywyOTIxMywyOTIyNCwyODc4MCwyODk1MiwyOTAzMCwyOTExMywyNTE1MCwyNTE0OSwyNTE1NSwyNTE2MCwyNTE2MSwzMTAzNSwzMTA0MCwzMTA0NiwzMTA0OSwzMTA2NywzMTA2OCwzMTA1OSwzMTA2NiwzMTA3NCwzMTA2MywzMTA3MiwzMTA4NywzMTA3OSwzMTA5OCwzMTEwOSwzMTExNCwzMTEzMCwzMTE0MywzMTE1NSwyNDUyOSwyNDUyOCwzODgxNCwzODgxNSwzODgxNywzODgxOCwzODgyMCwzODgyMSwzODgyMiwzODgyMywzODgyNCwzODgyNSwzODgyNiwzODgyOCwzODgzMCwzODgzMiwzODgzMywzODgzNSwzODgzNywzODgzOCwzODgzOSwzODg0MCwzODg0MSwzODg0MiwzODg0MywzODg0NCwzODg0NSwzODg0NiwzODg0NywzODg0OCwzODg0OSwzODg1MCwzODg1MSwzODg1MiwzODg1MywzODg1NCwzODg1NSwzODg1NiwzODg1NywzODg1OCwzODg1OSwzODg2MCwzODg2MSwzODg2MiwzODg2MywzODg2NCwzODg2NSwzODg2NiwzODg2NywzODg2OCwzODg2OSwzODg3MCwzODg3MSwzODg3MiwzODg3MywzODg3NCwzODg3NSwzODg3NiwzODg3NywzODg3OCwzODg3OSwzODg4MCwzODg4MSwzODg4MiwzODg4MywzODg4NCwzODg4NSwzODg4OCwzODg5NCwzODg5NSwzODg5NiwzODg5NywzODg5OCwzODkwMCwzODkwMywzODkwNCwzODkwNSwzODkwNiwzODkwNywzODkwOCwzODkwOSwzODkxMCwzODkxMSwzODkxMiwzODkxMywzODkxNCwzODkxNSwzODkxNiwzODkxNywzODkxOCwzODkxOSwzODkyMCwzODkyMSwzODkyMiwzODkyMywzODkyNCwzODkyNSwzODkyNiwyNDYzNiwyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDY2NSwyNDY3NSwyNDc0NywyNDgzOCwyNDg0NSwyNDkyNSwyNTAwMSwyNDk4OSwyNTAzNSwyNTA0MSwyNTA5NCwzMjg5NiwzMjg5NSwyNzc5NSwyNzg5NCwyODE1NiwzMDcxMCwzMDcxMiwzMDcyMCwzMDcyOSwzMDc0MywzMDc0NCwzMDczNywyNjAyNywzMDc2NSwzMDc0OCwzMDc0OSwzMDc3NywzMDc3OCwzMDc3OSwzMDc1MSwzMDc4MCwzMDc1NywzMDc2NCwzMDc1NSwzMDc2MSwzMDc5OCwzMDgyOSwzMDgwNiwzMDgwNywzMDc1OCwzMDgwMCwzMDc5MSwzMDc5NiwzMDgyNiwzMDg3NSwzMDg2NywzMDg3NCwzMDg1NSwzMDg3NiwzMDg4MSwzMDg4MywzMDg5OCwzMDkwNSwzMDg4NSwzMDkzMiwzMDkzNywzMDkyMSwzMDk1NiwzMDk2MiwzMDk4MSwzMDk2NCwzMDk5NSwzMTAxMiwzMTAwNiwzMTAyOCw0MDg1OSw0MDY5Nyw0MDY5OSw0MDcwMCwzMDQ0OSwzMDQ2OCwzMDQ3NywzMDQ1NywzMDQ3MSwzMDQ3MiwzMDQ5MCwzMDQ5OCwzMDQ4OSwzMDUwOSwzMDUwMiwzMDUxNywzMDUyMCwzMDU0NCwzMDU0NSwzMDUzNSwzMDUzMSwzMDU1NCwzMDU2OCwzODkyNywzODkyOCwzODkyOSwzODkzMCwzODkzMSwzODkzMiwzODkzMywzODkzNCwzODkzNSwzODkzNiwzODkzNywzODkzOCwzODkzOSwzODk0MCwzODk0MSwzODk0MiwzODk0MywzODk0NCwzODk0NSwzODk0NiwzODk0NywzODk0OCwzODk0OSwzODk1MCwzODk1MSwzODk1MiwzODk1MywzODk1NCwzODk1NSwzODk1NiwzODk1NywzODk1OCwzODk1OSwzODk2MCwzODk2MSwzODk2MiwzODk2MywzODk2NCwzODk2NSwzODk2NiwzODk2NywzODk2OCwzODk2OSwzODk3MCwzODk3MSwzODk3MiwzODk3MywzODk3NCwzODk3NSwzODk3NiwzODk3NywzODk3OCwzODk3OSwzODk4MCwzODk4MSwzODk4MiwzODk4MywzODk4NCwzODk4NSwzODk4NiwzODk4NywzODk4OCwzODk4OSwzODk5MCwzODk5MSwzODk5MiwzODk5MywzODk5NCwzODk5NSwzODk5NiwzODk5NywzODk5OCwzODk5OSwzOTAwMCwzOTAwMSwzOTAwMiwzOTAwMywzOTAwNCwzOTAwNSwzOTAwNiwzOTAwNywzOTAwOCwzOTAwOSwzOTAxMCwzOTAxMSwzOTAxMiwzOTAxMywzOTAxNCwzOTAxNSwzOTAxNiwzOTAxNywzOTAxOCwzOTAxOSwzOTAyMCwzOTAyMSwzOTAyMiwzMDU2MiwzMDU2NSwzMDU5MSwzMDYwNSwzMDU4OSwzMDU5MiwzMDYwNCwzMDYwOSwzMDYyMywzMDYyNCwzMDY0MCwzMDY0NSwzMDY1MywzMDAxMCwzMDAxNiwzMDAzMCwzMDAyNywzMDAyNCwzMDA0MywzMDA2NiwzMDA3MywzMDA4MywzMjYwMCwzMjYwOSwzMjYwNywzNTQwMCwzMjYxNiwzMjYyOCwzMjYyNSwzMjYzMywzMjY0MSwzMjYzOCwzMDQxMywzMDQzNywzNDg2NiwzODAyMSwzODAyMiwzODAyMywzODAyNywzODAyNiwzODAyOCwzODAyOSwzODAzMSwzODAzMiwzODAzNiwzODAzOSwzODAzNywzODA0MiwzODA0MywzODA0NCwzODA1MSwzODA1MiwzODA1OSwzODA1OCwzODA2MSwzODA2MCwzODA2MywzODA2NCwzODA2NiwzODA2OCwzODA3MCwzODA3MSwzODA3MiwzODA3MywzODA3NCwzODA3NiwzODA3NywzODA3OSwzODA4NCwzODA4OCwzODA4OSwzODA5MCwzODA5MSwzODA5MiwzODA5MywzODA5NCwzODA5NiwzODA5NywzODA5OCwzODEwMSwzODEwMiwzODEwMywzODEwNSwzODEwNCwzODEwNywzODExMCwzODExMSwzODExMiwzODExNCwzODExNiwzODExNywzODExOSwzODEyMCwzODEyMiwzOTAyMywzOTAyNCwzOTAyNSwzOTAyNiwzOTAyNywzOTAyOCwzOTA1MSwzOTA1NCwzOTA1OCwzOTA2MSwzOTA2NSwzOTA3NSwzOTA4MCwzOTA4MSwzOTA4MiwzOTA4MywzOTA4NCwzOTA4NSwzOTA4NiwzOTA4NywzOTA4OCwzOTA4OSwzOTA5MCwzOTA5MSwzOTA5MiwzOTA5MywzOTA5NCwzOTA5NSwzOTA5NiwzOTA5NywzOTA5OCwzOTA5OSwzOTEwMCwzOTEwMSwzOTEwMiwzOTEwMywzOTEwNCwzOTEwNSwzOTEwNiwzOTEwNywzOTEwOCwzOTEwOSwzOTExMCwzOTExMSwzOTExMiwzOTExMywzOTExNCwzOTExNSwzOTExNiwzOTExNywzOTExOSwzOTEyMCwzOTEyNCwzOTEyNiwzOTEyNywzOTEzMSwzOTEzMiwzOTEzMywzOTEzNiwzOTEzNywzOTEzOCwzOTEzOSwzOTE0MCwzOTE0MSwzOTE0MiwzOTE0NSwzOTE0NiwzOTE0NywzOTE0OCwzOTE0OSwzOTE1MCwzOTE1MSwzOTE1MiwzOTE1MywzOTE1NCwzOTE1NSwzOTE1NiwzOTE1NywzOTE1OCwzOTE1OSwzOTE2MCwzOTE2MSwzOTE2MiwzOTE2MywzOTE2NCwzOTE2NSwzOTE2NiwzOTE2NywzOTE2OCwzOTE2OSwzOTE3MCwzOTE3MSwzOTE3MiwzOTE3MywzOTE3NCwzOTE3NSwzODEyMSwzODEyMywzODEyNiwzODEyNywzODEzMSwzODEzMiwzODEzMywzODEzNSwzODEzNywzODE0MCwzODE0MSwzODE0MywzODE0NywzODE0NiwzODE1MCwzODE1MSwzODE1MywzODE1NCwzODE1NywzODE1OCwzODE1OSwzODE2MiwzODE2MywzODE2NCwzODE2NSwzODE2NiwzODE2OCwzODE3MSwzODE3MywzODE3NCwzODE3NSwzODE3OCwzODE4NiwzODE4NywzODE4NSwzODE4OCwzODE5MywzODE5NCwzODE5NiwzODE5OCwzODE5OSwzODIwMCwzODIwNCwzODIwNiwzODIwNywzODIxMCwzODE5NywzODIxMiwzODIxMywzODIxNCwzODIxNywzODIyMCwzODIyMiwzODIyMywzODIyNiwzODIyNywzODIyOCwzODIzMCwzODIzMSwzODIzMiwzODIzMywzODIzNSwzODIzOCwzODIzOSwzODIzNywzODI0MSwzODI0MiwzODI0NCwzODI0NSwzODI0NiwzODI0NywzODI0OCwzODI0OSwzODI1MCwzODI1MSwzODI1MiwzODI1NSwzODI1NywzODI1OCwzODI1OSwzODIwMiwzMDY5NSwzMDcwMCwzODYwMSwzMTE4OSwzMTIxMywzMTIwMywzMTIxMSwzMTIzOCwyMzg3OSwzMTIzNSwzMTIzNCwzMTI2MiwzMTI1MiwzOTE3NiwzOTE3NywzOTE3OCwzOTE3OSwzOTE4MCwzOTE4MiwzOTE4MywzOTE4NSwzOTE4NiwzOTE4NywzOTE4OCwzOTE4OSwzOTE5MCwzOTE5MSwzOTE5MiwzOTE5MywzOTE5NCwzOTE5NSwzOTE5NiwzOTE5NywzOTE5OCwzOTE5OSwzOTIwMCwzOTIwMSwzOTIwMiwzOTIwMywzOTIwNCwzOTIwNSwzOTIwNiwzOTIwNywzOTIwOCwzOTIwOSwzOTIxMCwzOTIxMSwzOTIxMiwzOTIxMywzOTIxNSwzOTIxNiwzOTIxNywzOTIxOCwzOTIxOSwzOTIyMCwzOTIyMSwzOTIyMiwzOTIyMywzOTIyNCwzOTIyNSwzOTIyNiwzOTIyNywzOTIyOCwzOTIyOSwzOTIzMCwzOTIzMSwzOTIzMiwzOTIzMywzOTIzNCwzOTIzNSwzOTIzNiwzOTIzNywzOTIzOCwzOTIzOSwzOTI0MCwzOTI0MSwzOTI0MiwzOTI0MywzOTI0NCwzOTI0NSwzOTI0NiwzOTI0NywzOTI0OCwzOTI0OSwzOTI1MCwzOTI1MSwzOTI1NCwzOTI1NSwzOTI1NiwzOTI1NywzOTI1OCwzOTI1OSwzOTI2MCwzOTI2MSwzOTI2MiwzOTI2MywzOTI2NCwzOTI2NSwzOTI2NiwzOTI2OCwzOTI3MCwzOTI4MywzOTI4OCwzOTI4OSwzOTI5MSwzOTI5NCwzOTI5OCwzOTI5OSwzOTMwNSwzMTI4OSwzMTI4NywzMTMxMyw0MDY1NSwzOTMzMywzMTM0NCwzMDM0NCwzMDM1MCwzMDM1NSwzMDM2MSwzMDM3MiwyOTkxOCwyOTkyMCwyOTk5Niw0MDQ4MCw0MDQ4Miw0MDQ4OCw0MDQ4OSw0MDQ5MCw0MDQ5MSw0MDQ5Miw0MDQ5OCw0MDQ5Nyw0MDUwMiw0MDUwNCw0MDUwMyw0MDUwNSw0MDUwNiw0MDUxMCw0MDUxMyw0MDUxNCw0MDUxNiw0MDUxOCw0MDUxOSw0MDUyMCw0MDUyMSw0MDUyMyw0MDUyNCw0MDUyNiw0MDUyOSw0MDUzMyw0MDUzNSw0MDUzOCw0MDUzOSw0MDU0MCw0MDU0Miw0MDU0Nyw0MDU1MCw0MDU1MSw0MDU1Miw0MDU1Myw0MDU1NCw0MDU1NSw0MDU1Niw0MDU2MSw0MDU1Nyw0MDU2MywzMDA5OCwzMDEwMCwzMDEwMiwzMDExMiwzMDEwOSwzMDEyNCwzMDExNSwzMDEzMSwzMDEzMiwzMDEzNiwzMDE0OCwzMDEyOSwzMDEyOCwzMDE0NywzMDE0NiwzMDE2NiwzMDE1NywzMDE3OSwzMDE4NCwzMDE4MiwzMDE4MCwzMDE4NywzMDE4MywzMDIxMSwzMDE5MywzMDIwNCwzMDIwNywzMDIyNCwzMDIwOCwzMDIxMywzMDIyMCwzMDIzMSwzMDIxOCwzMDI0NSwzMDIzMiwzMDIyOSwzMDIzMywzOTMwOCwzOTMxMCwzOTMyMiwzOTMyMywzOTMyNCwzOTMyNSwzOTMyNiwzOTMyNywzOTMyOCwzOTMyOSwzOTMzMCwzOTMzMSwzOTMzMiwzOTMzNCwzOTMzNSwzOTMzNywzOTMzOCwzOTMzOSwzOTM0MCwzOTM0MSwzOTM0MiwzOTM0MywzOTM0NCwzOTM0NSwzOTM0NiwzOTM0NywzOTM0OCwzOTM0OSwzOTM1MCwzOTM1MSwzOTM1MiwzOTM1MywzOTM1NCwzOTM1NSwzOTM1NiwzOTM1NywzOTM1OCwzOTM1OSwzOTM2MCwzOTM2MSwzOTM2MiwzOTM2MywzOTM2NCwzOTM2NSwzOTM2NiwzOTM2NywzOTM2OCwzOTM2OSwzOTM3MCwzOTM3MSwzOTM3MiwzOTM3MywzOTM3NCwzOTM3NSwzOTM3NiwzOTM3NywzOTM3OCwzOTM3OSwzOTM4MCwzOTM4MSwzOTM4MiwzOTM4MywzOTM4NCwzOTM4NSwzOTM4NiwzOTM4NywzOTM4OCwzOTM4OSwzOTM5MCwzOTM5MSwzOTM5MiwzOTM5MywzOTM5NCwzOTM5NSwzOTM5NiwzOTM5NywzOTM5OCwzOTM5OSwzOTQwMCwzOTQwMSwzOTQwMiwzOTQwMywzOTQwNCwzOTQwNSwzOTQwNiwzOTQwNywzOTQwOCwzOTQwOSwzOTQxMCwzOTQxMSwzOTQxMiwzOTQxMywzOTQxNCwzOTQxNSwzOTQxNiwzOTQxNywzMDIzNSwzMDI2OCwzMDI0MiwzMDI0MCwzMDI3MiwzMDI1MywzMDI1NiwzMDI3MSwzMDI2MSwzMDI3NSwzMDI3MCwzMDI1OSwzMDI4NSwzMDMwMiwzMDI5MiwzMDMwMCwzMDI5NCwzMDMxNSwzMDMxOSwzMjcxNCwzMTQ2MiwzMTM1MiwzMTM1MywzMTM2MCwzMTM2NiwzMTM2OCwzMTM4MSwzMTM5OCwzMTM5MiwzMTQwNCwzMTQwMCwzMTQwNSwzMTQxMSwzNDkxNiwzNDkyMSwzNDkzMCwzNDk0MSwzNDk0MywzNDk0NiwzNDk3OCwzNTAxNCwzNDk5OSwzNTAwNCwzNTAxNywzNTA0MiwzNTAyMiwzNTA0MywzNTA0NSwzNTA1NywzNTA5OCwzNTA2OCwzNTA0OCwzNTA3MCwzNTA1NiwzNTEwNSwzNTA5NywzNTA5MSwzNTA5OSwzNTA4MiwzNTEyNCwzNTExNSwzNTEyNiwzNTEzNywzNTE3NCwzNTE5NSwzMDA5MSwzMjk5NywzMDM4NiwzMDM4OCwzMDY4NCwzMjc4NiwzMjc4OCwzMjc5MCwzMjc5NiwzMjgwMCwzMjgwMiwzMjgwNSwzMjgwNiwzMjgwNywzMjgwOSwzMjgwOCwzMjgxNywzMjc3OSwzMjgyMSwzMjgzNSwzMjgzOCwzMjg0NSwzMjg1MCwzMjg3MywzMjg4MSwzNTIwMywzOTAzMiwzOTA0MCwzOTA0MywzOTQxOCwzOTQxOSwzOTQyMCwzOTQyMSwzOTQyMiwzOTQyMywzOTQyNCwzOTQyNSwzOTQyNiwzOTQyNywzOTQyOCwzOTQyOSwzOTQzMCwzOTQzMSwzOTQzMiwzOTQzMywzOTQzNCwzOTQzNSwzOTQzNiwzOTQzNywzOTQzOCwzOTQzOSwzOTQ0MCwzOTQ0MSwzOTQ0MiwzOTQ0MywzOTQ0NCwzOTQ0NSwzOTQ0NiwzOTQ0NywzOTQ0OCwzOTQ0OSwzOTQ1MCwzOTQ1MSwzOTQ1MiwzOTQ1MywzOTQ1NCwzOTQ1NSwzOTQ1NiwzOTQ1NywzOTQ1OCwzOTQ1OSwzOTQ2MCwzOTQ2MSwzOTQ2MiwzOTQ2MywzOTQ2NCwzOTQ2NSwzOTQ2NiwzOTQ2NywzOTQ2OCwzOTQ2OSwzOTQ3MCwzOTQ3MSwzOTQ3MiwzOTQ3MywzOTQ3NCwzOTQ3NSwzOTQ3NiwzOTQ3NywzOTQ3OCwzOTQ3OSwzOTQ4MCwzOTQ4MSwzOTQ4MiwzOTQ4MywzOTQ4NCwzOTQ4NSwzOTQ4NiwzOTQ4NywzOTQ4OCwzOTQ4OSwzOTQ5MCwzOTQ5MSwzOTQ5MiwzOTQ5MywzOTQ5NCwzOTQ5NSwzOTQ5NiwzOTQ5NywzOTQ5OCwzOTQ5OSwzOTUwMCwzOTUwMSwzOTUwMiwzOTUwMywzOTUwNCwzOTUwNSwzOTUwNiwzOTUwNywzOTUwOCwzOTUwOSwzOTUxMCwzOTUxMSwzOTUxMiwzOTUxMywzOTA0OSwzOTA1MiwzOTA1MywzOTA1NSwzOTA2MCwzOTA2NiwzOTA2NywzOTA3MCwzOTA3MSwzOTA3MywzOTA3NCwzOTA3NywzOTA3OCwzNDM4MSwzNDM4OCwzNDQxMiwzNDQxNCwzNDQzMSwzNDQyNiwzNDQyOCwzNDQyNywzNDQ3MiwzNDQ0NSwzNDQ0MywzNDQ3NiwzNDQ2MSwzNDQ3MSwzNDQ2NywzNDQ3NCwzNDQ1MSwzNDQ3MywzNDQ4NiwzNDUwMCwzNDQ4NSwzNDUxMCwzNDQ4MCwzNDQ5MCwzNDQ4MSwzNDQ3OSwzNDUwNSwzNDUxMSwzNDQ4NCwzNDUzNywzNDU0NSwzNDU0NiwzNDU0MSwzNDU0NywzNDUxMiwzNDU3OSwzNDUyNiwzNDU0OCwzNDUyNywzNDUyMCwzNDUxMywzNDU2MywzNDU2NywzNDU1MiwzNDU2OCwzNDU3MCwzNDU3MywzNDU2OSwzNDU5NSwzNDYxOSwzNDU5MCwzNDU5NywzNDYwNiwzNDU4NiwzNDYyMiwzNDYzMiwzNDYxMiwzNDYwOSwzNDYwMSwzNDYxNSwzNDYyMywzNDY5MCwzNDU5NCwzNDY4NSwzNDY4NiwzNDY4MywzNDY1NiwzNDY3MiwzNDYzNiwzNDY3MCwzNDY5OSwzNDY0MywzNDY1OSwzNDY4NCwzNDY2MCwzNDY0OSwzNDY2MSwzNDcwNywzNDczNSwzNDcyOCwzNDc3MCwzOTUxNCwzOTUxNSwzOTUxNiwzOTUxNywzOTUxOCwzOTUxOSwzOTUyMCwzOTUyMSwzOTUyMiwzOTUyMywzOTUyNCwzOTUyNSwzOTUyNiwzOTUyNywzOTUyOCwzOTUyOSwzOTUzMCwzOTUzMSwzOTUzOCwzOTU1NSwzOTU2MSwzOTU2NSwzOTU2NiwzOTU3MiwzOTU3MywzOTU3NywzOTU5MCwzOTU5MywzOTU5NCwzOTU5NSwzOTU5NiwzOTU5NywzOTU5OCwzOTU5OSwzOTYwMiwzOTYwMywzOTYwNCwzOTYwNSwzOTYwOSwzOTYxMSwzOTYxMywzOTYxNCwzOTYxNSwzOTYxOSwzOTYyMCwzOTYyMiwzOTYyMywzOTYyNCwzOTYyNSwzOTYyNiwzOTYyOSwzOTYzMCwzOTYzMSwzOTYzMiwzOTYzNCwzOTYzNiwzOTYzNywzOTYzOCwzOTYzOSwzOTY0MSwzOTY0MiwzOTY0MywzOTY0NCwzOTY0NSwzOTY0NiwzOTY0OCwzOTY1MCwzOTY1MSwzOTY1MiwzOTY1MywzOTY1NSwzOTY1NiwzOTY1NywzOTY1OCwzOTY2MCwzOTY2MiwzOTY2NCwzOTY2NSwzOTY2NiwzOTY2NywzOTY2OCwzOTY2OSwzOTY3MCwzOTY3MSwzOTY3MiwzOTY3NCwzOTY3NiwzOTY3NywzOTY3OCwzOTY3OSwzOTY4MCwzOTY4MSwzOTY4MiwzOTY4NCwzOTY4NSwzOTY4NiwzNDc1OCwzNDY5NiwzNDY5MywzNDczMywzNDcxMSwzNDY5MSwzNDczMSwzNDc4OSwzNDczMiwzNDc0MSwzNDczOSwzNDc2MywzNDc3MSwzNDc0OSwzNDc2OSwzNDc1MiwzNDc2MiwzNDc3OSwzNDc5NCwzNDc4NCwzNDc5OCwzNDgzOCwzNDgzNSwzNDgxNCwzNDgyNiwzNDg0MywzNDg0OSwzNDg3MywzNDg3NiwzMjU2NiwzMjU3OCwzMjU4MCwzMjU4MSwzMzI5NiwzMTQ4MiwzMTQ4NSwzMTQ5NiwzMTQ5MSwzMTQ5MiwzMTUwOSwzMTQ5OCwzMTUzMSwzMTUwMywzMTU1OSwzMTU0NCwzMTUzMCwzMTUxMywzMTUzNCwzMTUzNywzMTUyMCwzMTUyNSwzMTUyNCwzMTUzOSwzMTU1MCwzMTUxOCwzMTU3NiwzMTU3OCwzMTU1NywzMTYwNSwzMTU2NCwzMTU4MSwzMTU4NCwzMTU5OCwzMTYxMSwzMTU4NiwzMTYwMiwzMTYwMSwzMTYzMiwzMTY1NCwzMTY1NSwzMTY3MiwzMTY2MCwzMTY0NSwzMTY1NiwzMTYyMSwzMTY1OCwzMTY0NCwzMTY1MCwzMTY1OSwzMTY2OCwzMTY5NywzMTY4MSwzMTY5MiwzMTcwOSwzMTcwNiwzMTcxNywzMTcxOCwzMTcyMiwzMTc1NiwzMTc0MiwzMTc0MCwzMTc1OSwzMTc2NiwzMTc1NSwzOTY4NywzOTY4OSwzOTY5MCwzOTY5MSwzOTY5MiwzOTY5MywzOTY5NCwzOTY5NiwzOTY5NywzOTY5OCwzOTcwMCwzOTcwMSwzOTcwMiwzOTcwMywzOTcwNCwzOTcwNSwzOTcwNiwzOTcwNywzOTcwOCwzOTcwOSwzOTcxMCwzOTcxMiwzOTcxMywzOTcxNCwzOTcxNiwzOTcxNywzOTcxOCwzOTcxOSwzOTcyMCwzOTcyMSwzOTcyMiwzOTcyMywzOTcyNCwzOTcyNSwzOTcyNiwzOTcyOCwzOTcyOSwzOTczMSwzOTczMiwzOTczMywzOTczNCwzOTczNSwzOTczNiwzOTczNywzOTczOCwzOTc0MSwzOTc0MiwzOTc0MywzOTc0NCwzOTc1MCwzOTc1NCwzOTc1NSwzOTc1NiwzOTc1OCwzOTc2MCwzOTc2MiwzOTc2MywzOTc2NSwzOTc2NiwzOTc2NywzOTc2OCwzOTc2OSwzOTc3MCwzOTc3MSwzOTc3MiwzOTc3MywzOTc3NCwzOTc3NSwzOTc3NiwzOTc3NywzOTc3OCwzOTc3OSwzOTc4MCwzOTc4MSwzOTc4MiwzOTc4MywzOTc4NCwzOTc4NSwzOTc4NiwzOTc4NywzOTc4OCwzOTc4OSwzOTc5MCwzOTc5MSwzOTc5MiwzOTc5MywzOTc5NCwzOTc5NSwzOTc5NiwzOTc5NywzOTc5OCwzOTc5OSwzOTgwMCwzOTgwMSwzOTgwMiwzOTgwMywzMTc3NSwzMTc4NiwzMTc4MiwzMTgwMCwzMTgwOSwzMTgwOCwzMzI3OCwzMzI4MSwzMzI4MiwzMzI4NCwzMzI2MCwzNDg4NCwzMzMxMywzMzMxNCwzMzMxNSwzMzMyNSwzMzMyNywzMzMyMCwzMzMyMywzMzMzNiwzMzMzOSwzMzMzMSwzMzMzMiwzMzM0MiwzMzM0OCwzMzM1MywzMzM1NSwzMzM1OSwzMzM3MCwzMzM3NSwzMzM4NCwzNDk0MiwzNDk0OSwzNDk1MiwzNTAzMiwzNTAzOSwzNTE2NiwzMjY2OSwzMjY3MSwzMjY3OSwzMjY4NywzMjY4OCwzMjY5MCwzMTg2OCwyNTkyOSwzMTg4OSwzMTkwMSwzMTkwMCwzMTkwMiwzMTkwNiwzMTkyMiwzMTkzMiwzMTkzMywzMTkzNywzMTk0MywzMTk0OCwzMTk0OSwzMTk0NCwzMTk0MSwzMTk1OSwzMTk3NiwzMzM5MCwyNjI4MCwzMjcwMywzMjcxOCwzMjcyNSwzMjc0MSwzMjczNywzMjc0MiwzMjc0NSwzMjc1MCwzMjc1NSwzMTk5MiwzMjExOSwzMjE2NiwzMjE3NCwzMjMyNywzMjQxMSw0MDYzMiw0MDYyOCwzNjIxMSwzNjIyOCwzNjI0NCwzNjI0MSwzNjI3MywzNjE5OSwzNjIwNSwzNTkxMSwzNTkxMywzNzE5NCwzNzIwMCwzNzE5OCwzNzE5OSwzNzIyMCwzOTgwNCwzOTgwNSwzOTgwNiwzOTgwNywzOTgwOCwzOTgwOSwzOTgxMCwzOTgxMSwzOTgxMiwzOTgxMywzOTgxNCwzOTgxNSwzOTgxNiwzOTgxNywzOTgxOCwzOTgxOSwzOTgyMCwzOTgyMSwzOTgyMiwzOTgyMywzOTgyNCwzOTgyNSwzOTgyNiwzOTgyNywzOTgyOCwzOTgyOSwzOTgzMCwzOTgzMSwzOTgzMiwzOTgzMywzOTgzNCwzOTgzNSwzOTgzNiwzOTgzNywzOTgzOCwzOTgzOSwzOTg0MCwzOTg0MSwzOTg0MiwzOTg0MywzOTg0NCwzOTg0NSwzOTg0NiwzOTg0NywzOTg0OCwzOTg0OSwzOTg1MCwzOTg1MSwzOTg1MiwzOTg1MywzOTg1NCwzOTg1NSwzOTg1NiwzOTg1NywzOTg1OCwzOTg1OSwzOTg2MCwzOTg2MSwzOTg2MiwzOTg2MywzOTg2NCwzOTg2NSwzOTg2NiwzOTg2NywzOTg2OCwzOTg2OSwzOTg3MCwzOTg3MSwzOTg3MiwzOTg3MywzOTg3NCwzOTg3NSwzOTg3NiwzOTg3NywzOTg3OCwzOTg3OSwzOTg4MCwzOTg4MSwzOTg4MiwzOTg4MywzOTg4NCwzOTg4NSwzOTg4NiwzOTg4NywzOTg4OCwzOTg4OSwzOTg5MCwzOTg5MSwzOTg5MiwzOTg5MywzOTg5NCwzOTg5NSwzOTg5NiwzOTg5NywzOTg5OCwzOTg5OSwzNzIxOCwzNzIxNywzNzIzMiwzNzIyNSwzNzIzMSwzNzI0NSwzNzI0NiwzNzIzNCwzNzIzNiwzNzI0MSwzNzI2MCwzNzI1MywzNzI2NCwzNzI2MSwzNzI2NSwzNzI4MiwzNzI4MywzNzI5MCwzNzI5MywzNzI5NCwzNzI5NSwzNzMwMSwzNzMwMCwzNzMwNiwzNTkyNSw0MDU3NCwzNjI4MCwzNjMzMSwzNjM1NywzNjQ0MSwzNjQ1NywzNjI3NywzNjI4NywzNjI4NCwzNjI4MiwzNjI5MiwzNjMxMCwzNjMxMSwzNjMxNCwzNjMxOCwzNjMwMiwzNjMwMywzNjMxNSwzNjI5NCwzNjMzMiwzNjM0MywzNjM0NCwzNjMyMywzNjM0NSwzNjM0NywzNjMyNCwzNjM2MSwzNjM0OSwzNjM3MiwzNjM4MSwzNjM4MywzNjM5NiwzNjM5OCwzNjM4NywzNjM5OSwzNjQxMCwzNjQxNiwzNjQwOSwzNjQwNSwzNjQxMywzNjQwMSwzNjQyNSwzNjQxNywzNjQxOCwzNjQzMywzNjQzNCwzNjQyNiwzNjQ2NCwzNjQ3MCwzNjQ3NiwzNjQ2MywzNjQ2OCwzNjQ4NSwzNjQ5NSwzNjUwMCwzNjQ5NiwzNjUwOCwzNjUxMCwzNTk2MCwzNTk3MCwzNTk3OCwzNTk3MywzNTk5MiwzNTk4OCwyNjAxMSwzNTI4NiwzNTI5NCwzNTI5MCwzNTI5MiwzOTkwMCwzOTkwMSwzOTkwMiwzOTkwMywzOTkwNCwzOTkwNSwzOTkwNiwzOTkwNywzOTkwOCwzOTkwOSwzOTkxMCwzOTkxMSwzOTkxMiwzOTkxMywzOTkxNCwzOTkxNSwzOTkxNiwzOTkxNywzOTkxOCwzOTkxOSwzOTkyMCwzOTkyMSwzOTkyMiwzOTkyMywzOTkyNCwzOTkyNSwzOTkyNiwzOTkyNywzOTkyOCwzOTkyOSwzOTkzMCwzOTkzMSwzOTkzMiwzOTkzMywzOTkzNCwzOTkzNSwzOTkzNiwzOTkzNywzOTkzOCwzOTkzOSwzOTk0MCwzOTk0MSwzOTk0MiwzOTk0MywzOTk0NCwzOTk0NSwzOTk0NiwzOTk0NywzOTk0OCwzOTk0OSwzOTk1MCwzOTk1MSwzOTk1MiwzOTk1MywzOTk1NCwzOTk1NSwzOTk1NiwzOTk1NywzOTk1OCwzOTk1OSwzOTk2MCwzOTk2MSwzOTk2MiwzOTk2MywzOTk2NCwzOTk2NSwzOTk2NiwzOTk2NywzOTk2OCwzOTk2OSwzOTk3MCwzOTk3MSwzOTk3MiwzOTk3MywzOTk3NCwzOTk3NSwzOTk3NiwzOTk3NywzOTk3OCwzOTk3OSwzOTk4MCwzOTk4MSwzOTk4MiwzOTk4MywzOTk4NCwzOTk4NSwzOTk4NiwzOTk4NywzOTk4OCwzOTk4OSwzOTk5MCwzOTk5MSwzOTk5MiwzOTk5MywzOTk5NCwzOTk5NSwzNTMwMSwzNTMwNywzNTMxMSwzNTM5MCwzNTYyMiwzODczOSwzODYzMywzODY0MywzODYzOSwzODY2MiwzODY1NywzODY2NCwzODY3MSwzODY3MCwzODY5OCwzODcwMSwzODcwNCwzODcxOCw0MDgzMiw0MDgzNSw0MDgzNyw0MDgzOCw0MDgzOSw0MDg0MCw0MDg0MSw0MDg0Miw0MDg0NCw0MDcwMiw0MDcxNSw0MDcxNywzODU4NSwzODU4OCwzODU4OSwzODYwNiwzODYxMCwzMDY1NSwzODYyNCwzNzUxOCwzNzU1MCwzNzU3NiwzNzY5NCwzNzczOCwzNzgzNCwzNzc3NSwzNzk1MCwzNzk5NSw0MDA2Myw0MDA2Niw0MDA2OSw0MDA3MCw0MDA3MSw0MDA3MiwzMTI2Nyw0MDA3NSw0MDA3OCw0MDA4MCw0MDA4MSw0MDA4Miw0MDA4NCw0MDA4NSw0MDA5MCw0MDA5MSw0MDA5NCw0MDA5NSw0MDA5Niw0MDA5Nyw0MDA5OCw0MDA5OSw0MDEwMSw0MDEwMiw0MDEwMyw0MDEwNCw0MDEwNSw0MDEwNyw0MDEwOSw0MDExMCw0MDExMiw0MDExMyw0MDExNCw0MDExNSw0MDExNiw0MDExNyw0MDExOCw0MDExOSw0MDEyMiw0MDEyMyw0MDEyNCw0MDEyNSw0MDEzMiw0MDEzMyw0MDEzNCw0MDEzNSw0MDEzOCw0MDEzOSwzOTk5NiwzOTk5NywzOTk5OCwzOTk5OSw0MDAwMCw0MDAwMSw0MDAwMiw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwNiw0MDAwNyw0MDAwOCw0MDAwOSw0MDAxMCw0MDAxMSw0MDAxMiw0MDAxMyw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxNyw0MDAxOCw0MDAxOSw0MDAyMCw0MDAyMSw0MDAyMiw0MDAyMyw0MDAyNCw0MDAyNSw0MDAyNiw0MDAyNyw0MDAyOCw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzMiw0MDAzMyw0MDAzNCw0MDAzNSw0MDAzNiw0MDAzNyw0MDAzOCw0MDAzOSw0MDA0MCw0MDA0MSw0MDA0Miw0MDA0Myw0MDA0NCw0MDA0NSw0MDA0Niw0MDA0Nyw0MDA0OCw0MDA0OSw0MDA1MCw0MDA1MSw0MDA1Miw0MDA1Myw0MDA1NCw0MDA1NSw0MDA1Niw0MDA1Nyw0MDA1OCw0MDA1OSw0MDA2MSw0MDA2Miw0MDA2NCw0MDA2Nyw0MDA2OCw0MDA3Myw0MDA3NCw0MDA3Niw0MDA3OSw0MDA4Myw0MDA4Niw0MDA4Nyw0MDA4OCw0MDA4OSw0MDA5Myw0MDEwNiw0MDEwOCw0MDExMSw0MDEyMSw0MDEyNiw0MDEyNyw0MDEyOCw0MDEyOSw0MDEzMCw0MDEzNiw0MDEzNyw0MDE0NSw0MDE0Niw0MDE1NCw0MDE1NSw0MDE2MCw0MDE2MSw0MDE0MCw0MDE0MSw0MDE0Miw0MDE0Myw0MDE0NCw0MDE0Nyw0MDE0OCw0MDE0OSw0MDE1MSw0MDE1Miw0MDE1Myw0MDE1Niw0MDE1Nyw0MDE1OSw0MDE2MiwzODc4MCwzODc4OSwzODgwMSwzODgwMiwzODgwNCwzODgzMSwzODgyNywzODgxOSwzODgzNCwzODgzNiwzOTYwMSwzOTYwMCwzOTYwNyw0MDUzNiwzOTYwNiwzOTYxMCwzOTYxMiwzOTYxNywzOTYxNiwzOTYyMSwzOTYxOCwzOTYyNywzOTYyOCwzOTYzMywzOTc0OSwzOTc0NywzOTc1MSwzOTc1MywzOTc1MiwzOTc1NywzOTc2MSwzOTE0NCwzOTE4MSwzOTIxNCwzOTI1MywzOTI1MiwzOTY0NywzOTY0OSwzOTY1NCwzOTY2MywzOTY1OSwzOTY3NSwzOTY2MSwzOTY3MywzOTY4OCwzOTY5NSwzOTY5OSwzOTcxMSwzOTcxNSw0MDYzNyw0MDYzOCwzMjMxNSw0MDU3OCw0MDU4Myw0MDU4NCw0MDU4Nyw0MDU5NCwzNzg0Niw0MDYwNSw0MDYwNyw0MDY2Nyw0MDY2OCw0MDY2OSw0MDY3Miw0MDY3MSw0MDY3NCw0MDY4MSw0MDY3OSw0MDY3Nyw0MDY4Miw0MDY4Nyw0MDczOCw0MDc0OCw0MDc1MSw0MDc2MSw0MDc1OSw0MDc2NSw0MDc2Niw0MDc3Miw0MDE2Myw0MDE2NCw0MDE2NSw0MDE2Niw0MDE2Nyw0MDE2OCw0MDE2OSw0MDE3MCw0MDE3MSw0MDE3Miw0MDE3Myw0MDE3NCw0MDE3NSw0MDE3Niw0MDE3Nyw0MDE3OCw0MDE3OSw0MDE4MCw0MDE4MSw0MDE4Miw0MDE4Myw0MDE4NCw0MDE4NSw0MDE4Niw0MDE4Nyw0MDE4OCw0MDE4OSw0MDE5MCw0MDE5MSw0MDE5Miw0MDE5Myw0MDE5NCw0MDE5NSw0MDE5Niw0MDE5Nyw0MDE5OCw0MDE5OSw0MDIwMCw0MDIwMSw0MDIwMiw0MDIwMyw0MDIwNCw0MDIwNSw0MDIwNiw0MDIwNyw0MDIwOCw0MDIwOSw0MDIxMCw0MDIxMSw0MDIxMiw0MDIxMyw0MDIxNCw0MDIxNSw0MDIxNiw0MDIxNyw0MDIxOCw0MDIxOSw0MDIyMCw0MDIyMSw0MDIyMiw0MDIyMyw0MDIyNCw0MDIyNSw0MDIyNiw0MDIyNyw0MDIyOCw0MDIyOSw0MDIzMCw0MDIzMSw0MDIzMiw0MDIzMyw0MDIzNCw0MDIzNSw0MDIzNiw0MDIzNyw0MDIzOCw0MDIzOSw0MDI0MCw0MDI0MSw0MDI0Miw0MDI0Myw0MDI0NCw0MDI0NSw0MDI0Niw0MDI0Nyw0MDI0OCw0MDI0OSw0MDI1MCw0MDI1MSw0MDI1Miw0MDI1Myw0MDI1NCw0MDI1NSw0MDI1Niw0MDI1Nyw0MDI1OCw1NzkwOCw1NzkwOSw1NzkxMCw1NzkxMSw1NzkxMiw1NzkxMyw1NzkxNCw1NzkxNSw1NzkxNiw1NzkxNyw1NzkxOCw1NzkxOSw1NzkyMCw1NzkyMSw1NzkyMiw1NzkyMyw1NzkyNCw1NzkyNSw1NzkyNiw1NzkyNyw1NzkyOCw1NzkyOSw1NzkzMCw1NzkzMSw1NzkzMiw1NzkzMyw1NzkzNCw1NzkzNSw1NzkzNiw1NzkzNyw1NzkzOCw1NzkzOSw1Nzk0MCw1Nzk0MSw1Nzk0Miw1Nzk0Myw1Nzk0NCw1Nzk0NSw1Nzk0Niw1Nzk0Nyw1Nzk0OCw1Nzk0OSw1Nzk1MCw1Nzk1MSw1Nzk1Miw1Nzk1Myw1Nzk1NCw1Nzk1NSw1Nzk1Niw1Nzk1Nyw1Nzk1OCw1Nzk1OSw1Nzk2MCw1Nzk2MSw1Nzk2Miw1Nzk2Myw1Nzk2NCw1Nzk2NSw1Nzk2Niw1Nzk2Nyw1Nzk2OCw1Nzk2OSw1Nzk3MCw1Nzk3MSw1Nzk3Miw1Nzk3Myw1Nzk3NCw1Nzk3NSw1Nzk3Niw1Nzk3Nyw1Nzk3OCw1Nzk3OSw1Nzk4MCw1Nzk4MSw1Nzk4Miw1Nzk4Myw1Nzk4NCw1Nzk4NSw1Nzk4Niw1Nzk4Nyw1Nzk4OCw1Nzk4OSw1Nzk5MCw1Nzk5MSw1Nzk5Miw1Nzk5Myw1Nzk5NCw1Nzk5NSw1Nzk5Niw1Nzk5Nyw1Nzk5OCw1Nzk5OSw1ODAwMCw1ODAwMSw0MDI1OSw0MDI2MCw0MDI2MSw0MDI2Miw0MDI2Myw0MDI2NCw0MDI2NSw0MDI2Niw0MDI2Nyw0MDI2OCw0MDI2OSw0MDI3MCw0MDI3MSw0MDI3Miw0MDI3Myw0MDI3NCw0MDI3NSw0MDI3Niw0MDI3Nyw0MDI3OCw0MDI3OSw0MDI4MCw0MDI4MSw0MDI4Miw0MDI4Myw0MDI4NCw0MDI4NSw0MDI4Niw0MDI4Nyw0MDI4OCw0MDI4OSw0MDI5MCw0MDI5MSw0MDI5Miw0MDI5Myw0MDI5NCw0MDI5NSw0MDI5Niw0MDI5Nyw0MDI5OCw0MDI5OSw0MDMwMCw0MDMwMSw0MDMwMiw0MDMwMyw0MDMwNCw0MDMwNSw0MDMwNiw0MDMwNyw0MDMwOCw0MDMwOSw0MDMxMCw0MDMxMSw0MDMxMiw0MDMxMyw0MDMxNCw0MDMxNSw0MDMxNiw0MDMxNyw0MDMxOCw0MDMxOSw0MDMyMCw0MDMyMSw0MDMyMiw0MDMyMyw0MDMyNCw0MDMyNSw0MDMyNiw0MDMyNyw0MDMyOCw0MDMyOSw0MDMzMCw0MDMzMSw0MDMzMiw0MDMzMyw0MDMzNCw0MDMzNSw0MDMzNiw0MDMzNyw0MDMzOCw0MDMzOSw0MDM0MCw0MDM0MSw0MDM0Miw0MDM0Myw0MDM0NCw0MDM0NSw0MDM0Niw0MDM0Nyw0MDM0OCw0MDM0OSw0MDM1MCw0MDM1MSw0MDM1Miw0MDM1Myw0MDM1NCw1ODAwMiw1ODAwMyw1ODAwNCw1ODAwNSw1ODAwNiw1ODAwNyw1ODAwOCw1ODAwOSw1ODAxMCw1ODAxMSw1ODAxMiw1ODAxMyw1ODAxNCw1ODAxNSw1ODAxNiw1ODAxNyw1ODAxOCw1ODAxOSw1ODAyMCw1ODAyMSw1ODAyMiw1ODAyMyw1ODAyNCw1ODAyNSw1ODAyNiw1ODAyNyw1ODAyOCw1ODAyOSw1ODAzMCw1ODAzMSw1ODAzMiw1ODAzMyw1ODAzNCw1ODAzNSw1ODAzNiw1ODAzNyw1ODAzOCw1ODAzOSw1ODA0MCw1ODA0MSw1ODA0Miw1ODA0Myw1ODA0NCw1ODA0NSw1ODA0Niw1ODA0Nyw1ODA0OCw1ODA0OSw1ODA1MCw1ODA1MSw1ODA1Miw1ODA1Myw1ODA1NCw1ODA1NSw1ODA1Niw1ODA1Nyw1ODA1OCw1ODA1OSw1ODA2MCw1ODA2MSw1ODA2Miw1ODA2Myw1ODA2NCw1ODA2NSw1ODA2Niw1ODA2Nyw1ODA2OCw1ODA2OSw1ODA3MCw1ODA3MSw1ODA3Miw1ODA3Myw1ODA3NCw1ODA3NSw1ODA3Niw1ODA3Nyw1ODA3OCw1ODA3OSw1ODA4MCw1ODA4MSw1ODA4Miw1ODA4Myw1ODA4NCw1ODA4NSw1ODA4Niw1ODA4Nyw1ODA4OCw1ODA4OSw1ODA5MCw1ODA5MSw1ODA5Miw1ODA5Myw1ODA5NCw1ODA5NSw0MDM1NSw0MDM1Niw0MDM1Nyw0MDM1OCw0MDM1OSw0MDM2MCw0MDM2MSw0MDM2Miw0MDM2Myw0MDM2NCw0MDM2NSw0MDM2Niw0MDM2Nyw0MDM2OCw0MDM2OSw0MDM3MCw0MDM3MSw0MDM3Miw0MDM3Myw0MDM3NCw0MDM3NSw0MDM3Niw0MDM3Nyw0MDM3OCw0MDM3OSw0MDM4MCw0MDM4MSw0MDM4Miw0MDM4Myw0MDM4NCw0MDM4NSw0MDM4Niw0MDM4Nyw0MDM4OCw0MDM4OSw0MDM5MCw0MDM5MSw0MDM5Miw0MDM5Myw0MDM5NCw0MDM5NSw0MDM5Niw0MDM5Nyw0MDM5OCw0MDM5OSw0MDQwMCw0MDQwMSw0MDQwMiw0MDQwMyw0MDQwNCw0MDQwNSw0MDQwNiw0MDQwNyw0MDQwOCw0MDQwOSw0MDQxMCw0MDQxMSw0MDQxMiw0MDQxMyw0MDQxNCw0MDQxNSw0MDQxNiw0MDQxNyw0MDQxOCw0MDQxOSw0MDQyMCw0MDQyMSw0MDQyMiw0MDQyMyw0MDQyNCw0MDQyNSw0MDQyNiw0MDQyNyw0MDQyOCw0MDQyOSw0MDQzMCw0MDQzMSw0MDQzMiw0MDQzMyw0MDQzNCw0MDQzNSw0MDQzNiw0MDQzNyw0MDQzOCw0MDQzOSw0MDQ0MCw0MDQ0MSw0MDQ0Miw0MDQ0Myw0MDQ0NCw0MDQ0NSw0MDQ0Niw0MDQ0Nyw0MDQ0OCw0MDQ0OSw0MDQ1MCw1ODA5Niw1ODA5Nyw1ODA5OCw1ODA5OSw1ODEwMCw1ODEwMSw1ODEwMiw1ODEwMyw1ODEwNCw1ODEwNSw1ODEwNiw1ODEwNyw1ODEwOCw1ODEwOSw1ODExMCw1ODExMSw1ODExMiw1ODExMyw1ODExNCw1ODExNSw1ODExNiw1ODExNyw1ODExOCw1ODExOSw1ODEyMCw1ODEyMSw1ODEyMiw1ODEyMyw1ODEyNCw1ODEyNSw1ODEyNiw1ODEyNyw1ODEyOCw1ODEyOSw1ODEzMCw1ODEzMSw1ODEzMiw1ODEzMyw1ODEzNCw1ODEzNSw1ODEzNiw1ODEzNyw1ODEzOCw1ODEzOSw1ODE0MCw1ODE0MSw1ODE0Miw1ODE0Myw1ODE0NCw1ODE0NSw1ODE0Niw1ODE0Nyw1ODE0OCw1ODE0OSw1ODE1MCw1ODE1MSw1ODE1Miw1ODE1Myw1ODE1NCw1ODE1NSw1ODE1Niw1ODE1Nyw1ODE1OCw1ODE1OSw1ODE2MCw1ODE2MSw1ODE2Miw1ODE2Myw1ODE2NCw1ODE2NSw1ODE2Niw1ODE2Nyw1ODE2OCw1ODE2OSw1ODE3MCw1ODE3MSw1ODE3Miw1ODE3Myw1ODE3NCw1ODE3NSw1ODE3Niw1ODE3Nyw1ODE3OCw1ODE3OSw1ODE4MCw1ODE4MSw1ODE4Miw1ODE4Myw1ODE4NCw1ODE4NSw1ODE4Niw1ODE4Nyw1ODE4OCw1ODE4OSw0MDQ1MSw0MDQ1Miw0MDQ1Myw0MDQ1NCw0MDQ1NSw0MDQ1Niw0MDQ1Nyw0MDQ1OCw0MDQ1OSw0MDQ2MCw0MDQ2MSw0MDQ2Miw0MDQ2Myw0MDQ2NCw0MDQ2NSw0MDQ2Niw0MDQ2Nyw0MDQ2OCw0MDQ2OSw0MDQ3MCw0MDQ3MSw0MDQ3Miw0MDQ3Myw0MDQ3NCw0MDQ3NSw0MDQ3Niw0MDQ3Nyw0MDQ3OCw0MDQ4NCw0MDQ4Nyw0MDQ5NCw0MDQ5Niw0MDUwMCw0MDUwNyw0MDUwOCw0MDUxMiw0MDUyNSw0MDUyOCw0MDUzMCw0MDUzMSw0MDUzMiw0MDUzNCw0MDUzNyw0MDU0MSw0MDU0Myw0MDU0NCw0MDU0NSw0MDU0Niw0MDU0OSw0MDU1OCw0MDU1OSw0MDU2Miw0MDU2NCw0MDU2NSw0MDU2Niw0MDU2Nyw0MDU2OCw0MDU2OSw0MDU3MCw0MDU3MSw0MDU3Miw0MDU3Myw0MDU3Niw0MDU3Nyw0MDU3OSw0MDU4MCw0MDU4MSw0MDU4Miw0MDU4NSw0MDU4Niw0MDU4OCw0MDU4OSw0MDU5MCw0MDU5MSw0MDU5Miw0MDU5Myw0MDU5Niw0MDU5Nyw0MDU5OCw0MDU5OSw0MDYwMCw0MDYwMSw0MDYwMiw0MDYwMyw0MDYwNCw0MDYwNiw0MDYwOCw0MDYwOSw0MDYxMCw0MDYxMSw0MDYxMiw0MDYxMyw0MDYxNSw0MDYxNiw0MDYxNyw0MDYxOCw1ODE5MCw1ODE5MSw1ODE5Miw1ODE5Myw1ODE5NCw1ODE5NSw1ODE5Niw1ODE5Nyw1ODE5OCw1ODE5OSw1ODIwMCw1ODIwMSw1ODIwMiw1ODIwMyw1ODIwNCw1ODIwNSw1ODIwNiw1ODIwNyw1ODIwOCw1ODIwOSw1ODIxMCw1ODIxMSw1ODIxMiw1ODIxMyw1ODIxNCw1ODIxNSw1ODIxNiw1ODIxNyw1ODIxOCw1ODIxOSw1ODIyMCw1ODIyMSw1ODIyMiw1ODIyMyw1ODIyNCw1ODIyNSw1ODIyNiw1ODIyNyw1ODIyOCw1ODIyOSw1ODIzMCw1ODIzMSw1ODIzMiw1ODIzMyw1ODIzNCw1ODIzNSw1ODIzNiw1ODIzNyw1ODIzOCw1ODIzOSw1ODI0MCw1ODI0MSw1ODI0Miw1ODI0Myw1ODI0NCw1ODI0NSw1ODI0Niw1ODI0Nyw1ODI0OCw1ODI0OSw1ODI1MCw1ODI1MSw1ODI1Miw1ODI1Myw1ODI1NCw1ODI1NSw1ODI1Niw1ODI1Nyw1ODI1OCw1ODI1OSw1ODI2MCw1ODI2MSw1ODI2Miw1ODI2Myw1ODI2NCw1ODI2NSw1ODI2Niw1ODI2Nyw1ODI2OCw1ODI2OSw1ODI3MCw1ODI3MSw1ODI3Miw1ODI3Myw1ODI3NCw1ODI3NSw1ODI3Niw1ODI3Nyw1ODI3OCw1ODI3OSw1ODI4MCw1ODI4MSw1ODI4Miw1ODI4Myw0MDYxOSw0MDYyMCw0MDYyMSw0MDYyMiw0MDYyMyw0MDYyNCw0MDYyNSw0MDYyNiw0MDYyNyw0MDYyOSw0MDYzMCw0MDYzMSw0MDYzMyw0MDYzNCw0MDYzNiw0MDYzOSw0MDY0MCw0MDY0MSw0MDY0Miw0MDY0Myw0MDY0NSw0MDY0Niw0MDY0Nyw0MDY0OCw0MDY1MCw0MDY1MSw0MDY1Miw0MDY1Niw0MDY1OCw0MDY1OSw0MDY2MSw0MDY2Miw0MDY2Myw0MDY2NSw0MDY2Niw0MDY3MCw0MDY3Myw0MDY3NSw0MDY3Niw0MDY3OCw0MDY4MCw0MDY4Myw0MDY4NCw0MDY4NSw0MDY4Niw0MDY4OCw0MDY4OSw0MDY5MCw0MDY5MSw0MDY5Miw0MDY5Myw0MDY5NCw0MDY5NSw0MDY5Niw0MDY5OCw0MDcwMSw0MDcwMyw0MDcwNCw0MDcwNSw0MDcwNiw0MDcwNyw0MDcwOCw0MDcwOSw0MDcxMCw0MDcxMSw0MDcxMiw0MDcxMyw0MDcxNCw0MDcxNiw0MDcxOSw0MDcyMSw0MDcyMiw0MDcyNCw0MDcyNSw0MDcyNiw0MDcyOCw0MDczMCw0MDczMSw0MDczMiw0MDczMyw0MDczNCw0MDczNSw0MDczNyw0MDczOSw0MDc0MCw0MDc0MSw0MDc0Miw0MDc0Myw0MDc0NCw0MDc0NSw0MDc0Niw0MDc0Nyw0MDc0OSw0MDc1MCw0MDc1Miw0MDc1Myw1ODI4NCw1ODI4NSw1ODI4Niw1ODI4Nyw1ODI4OCw1ODI4OSw1ODI5MCw1ODI5MSw1ODI5Miw1ODI5Myw1ODI5NCw1ODI5NSw1ODI5Niw1ODI5Nyw1ODI5OCw1ODI5OSw1ODMwMCw1ODMwMSw1ODMwMiw1ODMwMyw1ODMwNCw1ODMwNSw1ODMwNiw1ODMwNyw1ODMwOCw1ODMwOSw1ODMxMCw1ODMxMSw1ODMxMiw1ODMxMyw1ODMxNCw1ODMxNSw1ODMxNiw1ODMxNyw1ODMxOCw1ODMxOSw1ODMyMCw1ODMyMSw1ODMyMiw1ODMyMyw1ODMyNCw1ODMyNSw1ODMyNiw1ODMyNyw1ODMyOCw1ODMyOSw1ODMzMCw1ODMzMSw1ODMzMiw1ODMzMyw1ODMzNCw1ODMzNSw1ODMzNiw1ODMzNyw1ODMzOCw1ODMzOSw1ODM0MCw1ODM0MSw1ODM0Miw1ODM0Myw1ODM0NCw1ODM0NSw1ODM0Niw1ODM0Nyw1ODM0OCw1ODM0OSw1ODM1MCw1ODM1MSw1ODM1Miw1ODM1Myw1ODM1NCw1ODM1NSw1ODM1Niw1ODM1Nyw1ODM1OCw1ODM1OSw1ODM2MCw1ODM2MSw1ODM2Miw1ODM2Myw1ODM2NCw1ODM2NSw1ODM2Niw1ODM2Nyw1ODM2OCw1ODM2OSw1ODM3MCw1ODM3MSw1ODM3Miw1ODM3Myw1ODM3NCw1ODM3NSw1ODM3Niw1ODM3Nyw0MDc1NCw0MDc1NSw0MDc1Niw0MDc1Nyw0MDc1OCw0MDc2MCw0MDc2Miw0MDc2NCw0MDc2Nyw0MDc2OCw0MDc2OSw0MDc3MCw0MDc3MSw0MDc3Myw0MDc3NCw0MDc3NSw0MDc3Niw0MDc3Nyw0MDc3OCw0MDc3OSw0MDc4MCw0MDc4MSw0MDc4Miw0MDc4Myw0MDc4Niw0MDc4Nyw0MDc4OCw0MDc4OSw0MDc5MCw0MDc5MSw0MDc5Miw0MDc5Myw0MDc5NCw0MDc5NSw0MDc5Niw0MDc5Nyw0MDc5OCw0MDc5OSw0MDgwMCw0MDgwMSw0MDgwMiw0MDgwMyw0MDgwNCw0MDgwNSw0MDgwNiw0MDgwNyw0MDgwOCw0MDgwOSw0MDgxMCw0MDgxMSw0MDgxMiw0MDgxMyw0MDgxNCw0MDgxNSw0MDgxNiw0MDgxNyw0MDgxOCw0MDgxOSw0MDgyMCw0MDgyMSw0MDgyMiw0MDgyMyw0MDgyNCw0MDgyNSw0MDgyNiw0MDgyNyw0MDgyOCw0MDgyOSw0MDgzMCw0MDgzMyw0MDgzNCw0MDg0NSw0MDg0Niw0MDg0Nyw0MDg0OCw0MDg0OSw0MDg1MCw0MDg1MSw0MDg1Miw0MDg1Myw0MDg1NCw0MDg1NSw0MDg1Niw0MDg2MCw0MDg2MSw0MDg2Miw0MDg2NSw0MDg2Niw0MDg2Nyw0MDg2OCw0MDg2OSw2Mzc4OCw2Mzg2NSw2Mzg5Myw2Mzk3NSw2Mzk4NSw1ODM3OCw1ODM3OSw1ODM4MCw1ODM4MSw1ODM4Miw1ODM4Myw1ODM4NCw1ODM4NSw1ODM4Niw1ODM4Nyw1ODM4OCw1ODM4OSw1ODM5MCw1ODM5MSw1ODM5Miw1ODM5Myw1ODM5NCw1ODM5NSw1ODM5Niw1ODM5Nyw1ODM5OCw1ODM5OSw1ODQwMCw1ODQwMSw1ODQwMiw1ODQwMyw1ODQwNCw1ODQwNSw1ODQwNiw1ODQwNyw1ODQwOCw1ODQwOSw1ODQxMCw1ODQxMSw1ODQxMiw1ODQxMyw1ODQxNCw1ODQxNSw1ODQxNiw1ODQxNyw1ODQxOCw1ODQxOSw1ODQyMCw1ODQyMSw1ODQyMiw1ODQyMyw1ODQyNCw1ODQyNSw1ODQyNiw1ODQyNyw1ODQyOCw1ODQyOSw1ODQzMCw1ODQzMSw1ODQzMiw1ODQzMyw1ODQzNCw1ODQzNSw1ODQzNiw1ODQzNyw1ODQzOCw1ODQzOSw1ODQ0MCw1ODQ0MSw1ODQ0Miw1ODQ0Myw1ODQ0NCw1ODQ0NSw1ODQ0Niw1ODQ0Nyw1ODQ0OCw1ODQ0OSw1ODQ1MCw1ODQ1MSw1ODQ1Miw1ODQ1Myw1ODQ1NCw1ODQ1NSw1ODQ1Niw1ODQ1Nyw1ODQ1OCw1ODQ1OSw1ODQ2MCw1ODQ2MSw1ODQ2Miw1ODQ2Myw1ODQ2NCw1ODQ2NSw1ODQ2Niw1ODQ2Nyw1ODQ2OCw1ODQ2OSw1ODQ3MCw1ODQ3MSw2NDAxMiw2NDAxMyw2NDAxNCw2NDAxNSw2NDAxNyw2NDAxOSw2NDAyMCw2NDAyNCw2NDAzMSw2NDAzMiw2NDAzMyw2NDAzNSw2NDAzNiw2NDAzOSw2NDA0MCw2NDA0MSwxMTkwNSw1OTQxNCw1OTQxNSw1OTQxNiwxMTkwOCwxMzQyNywxMzM4MywxMTkxMiwxMTkxNSw1OTQyMiwxMzcyNiwxMzg1MCwxMzgzOCwxMTkxNiwxMTkyNywxNDcwMiwxNDYxNiw1OTQzMCwxNDc5OSwxNDgxNSwxNDk2MywxNDgwMCw1OTQzNSw1OTQzNiwxNTE4MiwxNTQ3MCwxNTU4NCwxMTk0Myw1OTQ0MSw1OTQ0MiwxMTk0NiwxNjQ3MCwxNjczNSwxMTk1MCwxNzIwNywxMTk1NSwxMTk1OCwxMTk1OSw1OTQ1MSwxNzMyOSwxNzMyNCwxMTk2MywxNzM3MywxNzYyMiwxODAxNywxNzk5Niw1OTQ1OSwxODIxMSwxODIxNywxODMwMCwxODMxNywxMTk3OCwxODc1OSwxODgxMCwxODgxMywxODgxOCwxODgxOSwxODgyMSwxODgyMiwxODg0NywxODg0MywxODg3MSwxODg3MCw1OTQ3Niw1OTQ3NywxOTYxOSwxOTYxNSwxOTYxNiwxOTYxNywxOTU3NSwxOTYxOCwxOTczMSwxOTczMiwxOTczMywxOTczNCwxOTczNSwxOTczNiwxOTczNywxOTg4Niw1OTQ5Miw1ODQ3Miw1ODQ3Myw1ODQ3NCw1ODQ3NSw1ODQ3Niw1ODQ3Nyw1ODQ3OCw1ODQ3OSw1ODQ4MCw1ODQ4MSw1ODQ4Miw1ODQ4Myw1ODQ4NCw1ODQ4NSw1ODQ4Niw1ODQ4Nyw1ODQ4OCw1ODQ4OSw1ODQ5MCw1ODQ5MSw1ODQ5Miw1ODQ5Myw1ODQ5NCw1ODQ5NSw1ODQ5Niw1ODQ5Nyw1ODQ5OCw1ODQ5OSw1ODUwMCw1ODUwMSw1ODUwMiw1ODUwMyw1ODUwNCw1ODUwNSw1ODUwNiw1ODUwNyw1ODUwOCw1ODUwOSw1ODUxMCw1ODUxMSw1ODUxMiw1ODUxMyw1ODUxNCw1ODUxNSw1ODUxNiw1ODUxNyw1ODUxOCw1ODUxOSw1ODUyMCw1ODUyMSw1ODUyMiw1ODUyMyw1ODUyNCw1ODUyNSw1ODUyNiw1ODUyNyw1ODUyOCw1ODUyOSw1ODUzMCw1ODUzMSw1ODUzMiw1ODUzMyw1ODUzNCw1ODUzNSw1ODUzNiw1ODUzNyw1ODUzOCw1ODUzOSw1ODU0MCw1ODU0MSw1ODU0Miw1ODU0Myw1ODU0NCw1ODU0NSw1ODU0Niw1ODU0Nyw1ODU0OCw1ODU0OSw1ODU1MCw1ODU1MSw1ODU1Miw1ODU1Myw1ODU1NCw1ODU1NSw1ODU1Niw1ODU1Nyw1ODU1OCw1ODU1OSw1ODU2MCw1ODU2MSw1ODU2Miw1ODU2Myw1ODU2NCw1ODU2NV0sXG4gIFwiZ2IxODAzMC1yYW5nZXNcIjpbWzAsMTI4XSxbMzYsMTY1XSxbMzgsMTY5XSxbNDUsMTc4XSxbNTAsMTg0XSxbODEsMjE2XSxbODksMjI2XSxbOTUsMjM1XSxbOTYsMjM4XSxbMTAwLDI0NF0sWzEwMywyNDhdLFsxMDQsMjUxXSxbMTA1LDI1M10sWzEwOSwyNThdLFsxMjYsMjc2XSxbMTMzLDI4NF0sWzE0OCwzMDBdLFsxNzIsMzI1XSxbMTc1LDMyOV0sWzE3OSwzMzRdLFsyMDgsMzY0XSxbMzA2LDQ2M10sWzMwNyw0NjVdLFszMDgsNDY3XSxbMzA5LDQ2OV0sWzMxMCw0NzFdLFszMTEsNDczXSxbMzEyLDQ3NV0sWzMxMyw0NzddLFszNDEsNTA2XSxbNDI4LDU5NF0sWzQ0Myw2MTBdLFs1NDQsNzEyXSxbNTQ1LDcxNl0sWzU1OCw3MzBdLFs3NDEsOTMwXSxbNzQyLDkzOF0sWzc0OSw5NjJdLFs3NTAsOTcwXSxbODA1LDEwMjZdLFs4MTksMTEwNF0sWzgyMCwxMTA2XSxbNzkyMiw4MjA5XSxbNzkyNCw4MjE1XSxbNzkyNSw4MjE4XSxbNzkyNyw4MjIyXSxbNzkzNCw4MjMxXSxbNzk0Myw4MjQxXSxbNzk0NCw4MjQ0XSxbNzk0NSw4MjQ2XSxbNzk1MCw4MjUyXSxbODA2Miw4MzY1XSxbODE0OCw4NDUyXSxbODE0OSw4NDU0XSxbODE1Miw4NDU4XSxbODE2NCw4NDcxXSxbODE3NCw4NDgyXSxbODIzNiw4NTU2XSxbODI0MCw4NTcwXSxbODI2Miw4NTk2XSxbODI2NCw4NjAyXSxbODM3NCw4NzEzXSxbODM4MCw4NzIwXSxbODM4MSw4NzIyXSxbODM4NCw4NzI2XSxbODM4OCw4NzMxXSxbODM5MCw4NzM3XSxbODM5Miw4NzQwXSxbODM5Myw4NzQyXSxbODM5NCw4NzQ4XSxbODM5Niw4NzUxXSxbODQwMSw4NzYwXSxbODQwNiw4NzY2XSxbODQxNiw4Nzc3XSxbODQxOSw4NzgxXSxbODQyNCw4Nzg3XSxbODQzNyw4ODAyXSxbODQzOSw4ODA4XSxbODQ0NSw4ODE2XSxbODQ4Miw4ODU0XSxbODQ4NSw4ODU4XSxbODQ5Niw4ODcwXSxbODUyMSw4ODk2XSxbODYwMyw4OTc5XSxbODkzNiw5MzIyXSxbODk0Niw5MzcyXSxbOTA0Niw5NTQ4XSxbOTA1MCw5NTg4XSxbOTA2Myw5NjE2XSxbOTA2Niw5NjIyXSxbOTA3Niw5NjM0XSxbOTA5Miw5NjUyXSxbOTEwMCw5NjYyXSxbOTEwOCw5NjcyXSxbOTExMSw5Njc2XSxbOTExMyw5NjgwXSxbOTEzMSw5NzAyXSxbOTE2Miw5NzM1XSxbOTE2NCw5NzM4XSxbOTIxOCw5NzkzXSxbOTIxOSw5Nzk1XSxbMTEzMjksMTE5MDZdLFsxMTMzMSwxMTkwOV0sWzExMzM0LDExOTEzXSxbMTEzMzYsMTE5MTddLFsxMTM0NiwxMTkyOF0sWzExMzYxLDExOTQ0XSxbMTEzNjMsMTE5NDddLFsxMTM2NiwxMTk1MV0sWzExMzcwLDExOTU2XSxbMTEzNzIsMTE5NjBdLFsxMTM3NSwxMTk2NF0sWzExMzg5LDExOTc5XSxbMTE2ODIsMTIyODRdLFsxMTY4NiwxMjI5Ml0sWzExNjg3LDEyMzEyXSxbMTE2OTIsMTIzMTldLFsxMTY5NCwxMjMzMF0sWzExNzE0LDEyMzUxXSxbMTE3MTYsMTI0MzZdLFsxMTcyMywxMjQ0N10sWzExNzI1LDEyNTM1XSxbMTE3MzAsMTI1NDNdLFsxMTczNiwxMjU4Nl0sWzExOTgyLDEyODQyXSxbMTE5ODksMTI4NTBdLFsxMjEwMiwxMjk2NF0sWzEyMzM2LDEzMjAwXSxbMTIzNDgsMTMyMTVdLFsxMjM1MCwxMzIxOF0sWzEyMzg0LDEzMjUzXSxbMTIzOTMsMTMyNjNdLFsxMjM5NSwxMzI2N10sWzEyMzk3LDEzMjcwXSxbMTI1MTAsMTMzODRdLFsxMjU1MywxMzQyOF0sWzEyODUxLDEzNzI3XSxbMTI5NjIsMTM4MzldLFsxMjk3MywxMzg1MV0sWzEzNzM4LDE0NjE3XSxbMTM4MjMsMTQ3MDNdLFsxMzkxOSwxNDgwMV0sWzEzOTMzLDE0ODE2XSxbMTQwODAsMTQ5NjRdLFsxNDI5OCwxNTE4M10sWzE0NTg1LDE1NDcxXSxbMTQ2OTgsMTU1ODVdLFsxNTU4MywxNjQ3MV0sWzE1ODQ3LDE2NzM2XSxbMTYzMTgsMTcyMDhdLFsxNjQzNCwxNzMyNV0sWzE2NDM4LDE3MzMwXSxbMTY0ODEsMTczNzRdLFsxNjcyOSwxNzYyM10sWzE3MTAyLDE3OTk3XSxbMTcxMjIsMTgwMThdLFsxNzMxNSwxODIxMl0sWzE3MzIwLDE4MjE4XSxbMTc0MDIsMTgzMDFdLFsxNzQxOCwxODMxOF0sWzE3ODU5LDE4NzYwXSxbMTc5MDksMTg4MTFdLFsxNzkxMSwxODgxNF0sWzE3OTE1LDE4ODIwXSxbMTc5MTYsMTg4MjNdLFsxNzkzNiwxODg0NF0sWzE3OTM5LDE4ODQ4XSxbMTc5NjEsMTg4NzJdLFsxODY2NCwxOTU3Nl0sWzE4NzAzLDE5NjIwXSxbMTg4MTQsMTk3MzhdLFsxODk2MiwxOTg4N10sWzE5MDQzLDQwODcwXSxbMzM0NjksNTkyNDRdLFszMzQ3MCw1OTMzNl0sWzMzNDcxLDU5MzY3XSxbMzM0ODQsNTk0MTNdLFszMzQ4NSw1OTQxN10sWzMzNDkwLDU5NDIzXSxbMzM0OTcsNTk0MzFdLFszMzUwMSw1OTQzN10sWzMzNTA1LDU5NDQzXSxbMzM1MTMsNTk0NTJdLFszMzUyMCw1OTQ2MF0sWzMzNTM2LDU5NDc4XSxbMzM1NTAsNTk0OTNdLFszNzg0NSw2Mzc4OV0sWzM3OTIxLDYzODY2XSxbMzc5NDgsNjM4OTRdLFszODAyOSw2Mzk3Nl0sWzM4MDM4LDYzOTg2XSxbMzgwNjQsNjQwMTZdLFszODA2NSw2NDAxOF0sWzM4MDY2LDY0MDIxXSxbMzgwNjksNjQwMjVdLFszODA3NSw2NDAzNF0sWzM4MDc2LDY0MDM3XSxbMzgwNzgsNjQwNDJdLFszOTEwOCw2NTA3NF0sWzM5MTA5LDY1MDkzXSxbMzkxMTMsNjUxMDddLFszOTExNCw2NTExMl0sWzM5MTE1LDY1MTI3XSxbMzkxMTYsNjUxMzJdLFszOTI2NSw2NTM3NV0sWzM5Mzk0LDY1NTEwXSxbMTg5MDAwLDY1NTM2XV0sXG4gIFwiamlzMDIwOFwiOlsxMjI4OCwxMjI4OSwxMjI5MCw2NTI5Miw2NTI5NCwxMjUzOSw2NTMwNiw2NTMwNyw2NTMxMSw2NTI4MSwxMjQ0MywxMjQ0NCwxODAsNjUzNDQsMTY4LDY1MzQyLDY1NTA3LDY1MzQzLDEyNTQxLDEyNTQyLDEyNDQ1LDEyNDQ2LDEyMjkxLDIwMTg5LDEyMjkzLDEyMjk0LDEyMjk1LDEyNTQwLDgyMTMsODIwOCw2NTI5NSw2NTM0MCw2NTM3NCw4NzQxLDY1MzcyLDgyMzAsODIyOSw4MjE2LDgyMTcsODIyMCw4MjIxLDY1Mjg4LDY1Mjg5LDEyMzA4LDEyMzA5LDY1MzM5LDY1MzQxLDY1MzcxLDY1MzczLDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEyMzA1LDY1MjkxLDY1MjkzLDE3NywyMTUsMjQ3LDY1MzA5LDg4MDAsNjUzMDgsNjUzMTAsODgwNiw4ODA3LDg3MzQsODc1Niw5Nzk0LDk3OTIsMTc2LDgyNDIsODI0Myw4NDUxLDY1NTA5LDY1Mjg0LDY1NTA0LDY1NTA1LDY1Mjg1LDY1MjgzLDY1Mjg2LDY1MjkwLDY1MzEyLDE2Nyw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYwLDgyNTEsMTIzMDYsODU5NCw4NTkyLDg1OTMsODU5NSwxMjMwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4MzUsODc0Niw4NzQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzQzLDg3NDQsNjU1MDYsODY1OCw4NjYwLDg3MDQsODcwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4Niw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NDkxLDgyNDAsOTgzOSw5ODM3LDk4MzQsODIyNCw4MjI1LDE4MixudWxsLG51bGwsbnVsbCxudWxsLDk3MTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCxudWxsLG51bGwsbnVsbCxudWxsLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDI1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMTA1LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1MjgsOTUzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiw5MzI3LDkzMjgsOTMyOSw5MzMwLDkzMzEsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MyxudWxsLDEzMTI5LDEzMDc2LDEzMDkwLDEzMTMzLDEzMDgwLDEzMDk1LDEzMDU5LDEzMTEwLDEzMTM3LDEzMTQzLDEzMDY5LDEzMDk0LDEzMDkxLDEzMDk5LDEzMTMwLDEzMTE1LDEzMjEyLDEzMjEzLDEzMjE0LDEzMTk4LDEzMTk5LDEzMjUyLDEzMjE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMzE3OSwxMjMxNywxMjMxOSw4NDcwLDEzMjYxLDg0ODEsMTI5NjQsMTI5NjUsMTI5NjYsMTI5NjcsMTI5NjgsMTI4NDksMTI4NTAsMTI4NTcsMTMxODIsMTMxODEsMTMxODAsODc4Niw4ODAxLDg3NDcsODc1MCw4NzIxLDg3MzAsODg2OSw4NzM2LDg3MzUsODg5NSw4NzU3LDg3NDUsODc0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMTI0LDIxNzgyLDIzMDQzLDM4NDYzLDIxNjk2LDI0ODU5LDI1Mzg0LDIzMDMwLDM2ODk4LDMzOTA5LDMzNTY0LDMxMzEyLDI0NzQ2LDI1NTY5LDI4MTk3LDI2MDkzLDMzODk0LDMzNDQ2LDM5OTI1LDI2NzcxLDIyMzExLDI2MDE3LDI1MjAxLDIzNDUxLDIyOTkyLDM0NDI3LDM5MTU2LDMyMDk4LDMyMTkwLDM5ODIyLDI1MTEwLDMxOTAzLDM0OTk5LDIzNDMzLDI0MjQ1LDI1MzUzLDI2MjYzLDI2Njk2LDM4MzQzLDM4Nzk3LDI2NDQ3LDIwMTk3LDIwMjM0LDIwMzAxLDIwMzgxLDIwNTUzLDIyMjU4LDIyODM5LDIyOTk2LDIzMDQxLDIzNTYxLDI0Nzk5LDI0ODQ3LDI0OTQ0LDI2MTMxLDI2ODg1LDI4ODU4LDMwMDMxLDMwMDY0LDMxMjI3LDMyMTczLDMyMjM5LDMyOTYzLDMzODA2LDM0OTE1LDM1NTg2LDM2OTQ5LDM2OTg2LDIxMzA3LDIwMTE3LDIwMTMzLDIyNDk1LDMyOTQ2LDM3MDU3LDMwOTU5LDE5OTY4LDIyNzY5LDI4MzIyLDM2OTIwLDMxMjgyLDMzNTc2LDMzNDE5LDM5OTgzLDIwODAxLDIxMzYwLDIxNjkzLDIxNzI5LDIyMjQwLDIzMDM1LDI0MzQxLDM5MTU0LDI4MTM5LDMyOTk2LDM0MDkzLDM4NDk4LDM4NTEyLDM4NTYwLDM4OTA3LDIxNTE1LDIxNDkxLDIzNDMxLDI4ODc5LDMyNzAxLDM2ODAyLDM4NjMyLDIxMzU5LDQwMjg0LDMxNDE4LDE5OTg1LDMwODY3LDMzMjc2LDI4MTk4LDIyMDQwLDIxNzY0LDI3NDIxLDM0MDc0LDM5OTk1LDIzMDEzLDIxNDE3LDI4MDA2LDI5OTE2LDM4Mjg3LDIyMDgyLDIwMTEzLDM2OTM5LDM4NjQyLDMzNjE1LDM5MTgwLDIxNDczLDIxOTQyLDIzMzQ0LDI0NDMzLDI2MTQ0LDI2MzU1LDI2NjI4LDI3NzA0LDI3ODkxLDI3OTQ1LDI5Nzg3LDMwNDA4LDMxMzEwLDM4OTY0LDMzNTIxLDM0OTA3LDM1NDI0LDM3NjEzLDI4MDgyLDMwMTIzLDMwNDEwLDM5MzY1LDI0NzQyLDM1NTg1LDM2MjM0LDM4MzIyLDI3MDIyLDIxNDIxLDIwODcwLDIyMjkwLDIyNTc2LDIyODUyLDIzNDc2LDI0MzEwLDI0NjE2LDI1NTEzLDI1NTg4LDI3ODM5LDI4NDM2LDI4ODE0LDI4OTQ4LDI5MDE3LDI5MTQxLDI5NTAzLDMyMjU3LDMzMzk4LDMzNDg5LDM0MTk5LDM2OTYwLDM3NDY3LDQwMjE5LDIyNjMzLDI2MDQ0LDI3NzM4LDI5OTg5LDIwOTg1LDIyODMwLDIyODg1LDI0NDQ4LDI0NTQwLDI1Mjc2LDI2MTA2LDI3MTc4LDI3NDMxLDI3NTcyLDI5NTc5LDMyNzA1LDM1MTU4LDQwMjM2LDQwMjA2LDQwNjQ0LDIzNzEzLDI3Nzk4LDMzNjU5LDIwNzQwLDIzNjI3LDI1MDE0LDMzMjIyLDI2NzQyLDI5MjgxLDIwMDU3LDIwNDc0LDIxMzY4LDI0NjgxLDI4MjAxLDMxMzExLDM4ODk5LDE5OTc5LDIxMjcwLDIwMjA2LDIwMzA5LDIwMjg1LDIwMzg1LDIwMzM5LDIxMTUyLDIxNDg3LDIyMDI1LDIyNzk5LDIzMjMzLDIzNDc4LDIzNTIxLDMxMTg1LDI2MjQ3LDI2NTI0LDI2NTUwLDI3NDY4LDI3ODI3LDI4Nzc5LDI5NjM0LDMxMTE3LDMxMTY2LDMxMjkyLDMxNjIzLDMzNDU3LDMzNDk5LDMzNTQwLDMzNjU1LDMzNzc1LDMzNzQ3LDM0NjYyLDM1NTA2LDIyMDU3LDM2MDA4LDM2ODM4LDM2OTQyLDM4Njg2LDM0NDQyLDIwNDIwLDIzNzg0LDI1MTA1LDI5MjczLDMwMDExLDMzMjUzLDMzNDY5LDM0NTU4LDM2MDMyLDM4NTk3LDM5MTg3LDM5MzgxLDIwMTcxLDIwMjUwLDM1Mjk5LDIyMjM4LDIyNjAyLDIyNzMwLDI0MzE1LDI0NTU1LDI0NjE4LDI0NzI0LDI0Njc0LDI1MDQwLDI1MTA2LDI1Mjk2LDI1OTEzLDM5NzQ1LDI2MjE0LDI2ODAwLDI4MDIzLDI4Nzg0LDMwMDI4LDMwMzQyLDMyMTE3LDMzNDQ1LDM0ODA5LDM4MjgzLDM4NTQyLDM1OTk3LDIwOTc3LDIxMTgyLDIyODA2LDIxNjgzLDIzNDc1LDIzODMwLDI0OTM2LDI3MDEwLDI4MDc5LDMwODYxLDMzOTk1LDM0OTAzLDM1NDQyLDM3Nzk5LDM5NjA4LDI4MDEyLDM5MzM2LDM0NTIxLDIyNDM1LDI2NjIzLDM0NTEwLDM3MzkwLDIxMTIzLDIyMTUxLDIxNTA4LDI0Mjc1LDI1MzEzLDI1Nzg1LDI2Njg0LDI2NjgwLDI3NTc5LDI5NTU0LDMwOTA2LDMxMzM5LDM1MjI2LDM1MjgyLDM2MjAzLDM2NjExLDM3MTAxLDM4MzA3LDM4NTQ4LDM4NzYxLDIzMzk4LDIzNzMxLDI3MDA1LDM4OTg5LDM4OTkwLDI1NDk5LDMxNTIwLDI3MTc5LDI3MjYzLDI2ODA2LDM5OTQ5LDI4NTExLDIxMTA2LDIxOTE3LDI0Njg4LDI1MzI0LDI3OTYzLDI4MTY3LDI4MzY5LDMzODgzLDM1MDg4LDM2Njc2LDE5OTg4LDM5OTkzLDIxNDk0LDI2OTA3LDI3MTk0LDM4Nzg4LDI2NjY2LDIwODI4LDMxNDI3LDMzOTcwLDM3MzQwLDM3NzcyLDIyMTA3LDQwMjMyLDI2NjU4LDMzNTQxLDMzODQxLDMxOTA5LDIxMDAwLDMzNDc3LDI5OTI2LDIwMDk0LDIwMzU1LDIwODk2LDIzNTA2LDIxMDAyLDIxMjA4LDIxMjIzLDI0MDU5LDIxOTE0LDIyNTcwLDIzMDE0LDIzNDM2LDIzNDQ4LDIzNTE1LDI0MTc4LDI0MTg1LDI0NzM5LDI0ODYzLDI0OTMxLDI1MDIyLDI1NTYzLDI1OTU0LDI2NTc3LDI2NzA3LDI2ODc0LDI3NDU0LDI3NDc1LDI3NzM1LDI4NDUwLDI4NTY3LDI4NDg1LDI5ODcyLDI5OTc2LDMwNDM1LDMwNDc1LDMxNDg3LDMxNjQ5LDMxNzc3LDMyMjMzLDMyNTY2LDMyNzUyLDMyOTI1LDMzMzgyLDMzNjk0LDM1MjUxLDM1NTMyLDM2MDExLDM2OTk2LDM3OTY5LDM4MjkxLDM4Mjg5LDM4MzA2LDM4NTAxLDM4ODY3LDM5MjA4LDMzMzA0LDIwMDI0LDIxNTQ3LDIzNzM2LDI0MDEyLDI5NjA5LDMwMjg0LDMwNTI0LDIzNzIxLDMyNzQ3LDM2MTA3LDM4NTkzLDM4OTI5LDM4OTk2LDM5MDAwLDIwMjI1LDIwMjM4LDIxMzYxLDIxOTE2LDIyMTIwLDIyNTIyLDIyODU1LDIzMzA1LDIzNDkyLDIzNjk2LDI0MDc2LDI0MTkwLDI0NTI0LDI1NTgyLDI2NDI2LDI2MDcxLDI2MDgyLDI2Mzk5LDI2ODI3LDI2ODIwLDI3MjMxLDI0MTEyLDI3NTg5LDI3NjcxLDI3NzczLDMwMDc5LDMxMDQ4LDIzMzk1LDMxMjMyLDMyMDAwLDI0NTA5LDM1MjE1LDM1MzUyLDM2MDIwLDM2MjE1LDM2NTU2LDM2NjM3LDM5MTM4LDM5NDM4LDM5NzQwLDIwMDk2LDIwNjA1LDIwNzM2LDIyOTMxLDIzNDUyLDI1MTM1LDI1MjE2LDI1ODM2LDI3NDUwLDI5MzQ0LDMwMDk3LDMxMDQ3LDMyNjgxLDM0ODExLDM1NTE2LDM1Njk2LDI1NTE2LDMzNzM4LDM4ODE2LDIxNTEzLDIxNTA3LDIxOTMxLDI2NzA4LDI3MjI0LDM1NDQwLDMwNzU5LDI2NDg1LDQwNjUzLDIxMzY0LDIzNDU4LDMzMDUwLDM0Mzg0LDM2ODcwLDE5OTkyLDIwMDM3LDIwMTY3LDIwMjQxLDIxNDUwLDIxNTYwLDIzNDcwLDI0MzM5LDI0NjEzLDI1OTM3LDI2NDI5LDI3NzE0LDI3NzYyLDI3ODc1LDI4NzkyLDI5Njk5LDMxMzUwLDMxNDA2LDMxNDk2LDMyMDI2LDMxOTk4LDMyMTAyLDI2MDg3LDI5Mjc1LDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1MzEyLDI1MzY5LDI4MTkyLDM0Mzk0LDM1Mzc3LDM2MzE3LDM3NjI0LDI4NDE3LDMxMTQyLDM5NzcwLDIwMTM2LDIwMTM5LDIwMTQwLDIwMzc5LDIwMzg0LDIwNjg5LDIwODA3LDMxNDc4LDIwODQ5LDIwOTgyLDIxMzMyLDIxMjgxLDIxMzc1LDIxNDgzLDIxOTMyLDIyNjU5LDIzNzc3LDI0Mzc1LDI0Mzk0LDI0NjIzLDI0NjU2LDI0Njg1LDI1Mzc1LDI1OTQ1LDI3MjExLDI3ODQxLDI5Mzc4LDI5NDIxLDMwNzAzLDMzMDE2LDMzMDI5LDMzMjg4LDM0MTI2LDM3MTExLDM3ODU3LDM4OTExLDM5MjU1LDM5NTE0LDIwMjA4LDIwOTU3LDIzNTk3LDI2MjQxLDI2OTg5LDIzNjE2LDI2MzU0LDI2OTk3LDI5NTc3LDI2NzA0LDMxODczLDIwNjc3LDIxMjIwLDIyMzQzLDI0MDYyLDM3NjcwLDI2MDIwLDI3NDI3LDI3NDUzLDI5NzQ4LDMxMTA1LDMxMTY1LDMxNTYzLDMyMjAyLDMzNDY1LDMzNzQwLDM0OTQzLDM1MTY3LDM1NjQxLDM2ODE3LDM3MzI5LDIxNTM1LDM3NTA0LDIwMDYxLDIwNTM0LDIxNDc3LDIxMzA2LDI5Mzk5LDI5NTkwLDMwNjk3LDMzNTEwLDM2NTI3LDM5MzY2LDM5MzY4LDM5Mzc4LDIwODU1LDI0ODU4LDM0Mzk4LDIxOTM2LDMxMzU0LDIwNTk4LDIzNTA3LDM2OTM1LDM4NTMzLDIwMDE4LDI3MzU1LDM3MzUxLDIzNjMzLDIzNjI0LDI1NDk2LDMxMzkxLDI3Nzk1LDM4NzcyLDM2NzA1LDMxNDAyLDI5MDY2LDM4NTM2LDMxODc0LDI2NjQ3LDMyMzY4LDI2NzA1LDM3NzQwLDIxMjM0LDIxNTMxLDM0MjE5LDM1MzQ3LDMyNjc2LDM2NTU3LDM3MDg5LDIxMzUwLDM0OTUyLDMxMDQxLDIwNDE4LDIwNjcwLDIxMDA5LDIwODA0LDIxODQzLDIyMzE3LDI5Njc0LDIyNDExLDIyODY1LDI0NDE4LDI0NDUyLDI0NjkzLDI0OTUwLDI0OTM1LDI1MDAxLDI1NTIyLDI1NjU4LDI1OTY0LDI2MjIzLDI2NjkwLDI4MTc5LDMwMDU0LDMxMjkzLDMxOTk1LDMyMDc2LDMyMTUzLDMyMzMxLDMyNjE5LDMzNTUwLDMzNjEwLDM0NTA5LDM1MzM2LDM1NDI3LDM1Njg2LDM2NjA1LDM4OTM4LDQwMzM1LDMzNDY0LDM2ODE0LDM5OTEyLDIxMTI3LDI1MTE5LDI1NzMxLDI4NjA4LDM4NTUzLDI2Njg5LDIwNjI1LDI3NDI0LDI3NzcwLDI4NTAwLDMxMzQ4LDMyMDgwLDM0ODgwLDM1MzYzLDI2Mzc2LDIwMjE0LDIwNTM3LDIwNTE4LDIwNTgxLDIwODYwLDIxMDQ4LDIxMDkxLDIxOTI3LDIyMjg3LDIyNTMzLDIzMjQ0LDI0MzE0LDI1MDEwLDI1MDgwLDI1MzMxLDI1NDU4LDI2OTA4LDI3MTc3LDI5MzA5LDI5MzU2LDI5NDg2LDMwNzQwLDMwODMxLDMyMTIxLDMwNDc2LDMyOTM3LDM1MjExLDM1NjA5LDM2MDY2LDM2NTYyLDM2OTYzLDM3NzQ5LDM4NTIyLDM4OTk3LDM5NDQzLDQwNTY4LDIwODAzLDIxNDA3LDIxNDI3LDI0MTg3LDI0MzU4LDI4MTg3LDI4MzA0LDI5NTcyLDI5Njk0LDMyMDY3LDMzMzM1LDM1MzI4LDM1NTc4LDM4NDgwLDIwMDQ2LDIwNDkxLDIxNDc2LDIxNjI4LDIyMjY2LDIyOTkzLDIzMzk2LDI0MDQ5LDI0MjM1LDI0MzU5LDI1MTQ0LDI1OTI1LDI2NTQzLDI4MjQ2LDI5MzkyLDMxOTQ2LDM0OTk2LDMyOTI5LDMyOTkzLDMzNzc2LDM0MzgyLDM1NDYzLDM2MzI4LDM3NDMxLDM4NTk5LDM5MDE1LDQwNzIzLDIwMTE2LDIwMTE0LDIwMjM3LDIxMzIwLDIxNTc3LDIxNTY2LDIzMDg3LDI0NDYwLDI0NDgxLDI0NzM1LDI2NzkxLDI3Mjc4LDI5Nzg2LDMwODQ5LDM1NDg2LDM1NDkyLDM1NzAzLDM3MjY0LDIwMDYyLDM5ODgxLDIwMTMyLDIwMzQ4LDIwMzk5LDIwNTA1LDIwNTAyLDIwODA5LDIwODQ0LDIxMTUxLDIxMTc3LDIxMjQ2LDIxNDAyLDIxNDc1LDIxNTIxLDIxNTE4LDIxODk3LDIyMzUzLDIyNDM0LDIyOTA5LDIzMzgwLDIzMzg5LDIzNDM5LDI0MDM3LDI0MDM5LDI0MDU1LDI0MTg0LDI0MTk1LDI0MjE4LDI0MjQ3LDI0MzQ0LDI0NjU4LDI0OTA4LDI1MjM5LDI1MzA0LDI1NTExLDI1OTE1LDI2MTE0LDI2MTc5LDI2MzU2LDI2NDc3LDI2NjU3LDI2Nzc1LDI3MDgzLDI3NzQzLDI3OTQ2LDI4MDA5LDI4MjA3LDI4MzE3LDMwMDAyLDMwMzQzLDMwODI4LDMxMjk1LDMxOTY4LDMyMDA1LDMyMDI0LDMyMDk0LDMyMTc3LDMyNzg5LDMyNzcxLDMyOTQzLDMyOTQ1LDMzMTA4LDMzMTY3LDMzMzIyLDMzNjE4LDM0ODkyLDM0OTEzLDM1NjExLDM2MDAyLDM2MDkyLDM3MDY2LDM3MjM3LDM3NDg5LDMwNzgzLDM3NjI4LDM4MzA4LDM4NDc3LDM4OTE3LDM5MzIxLDM5NjQwLDQwMjUxLDIxMDgzLDIxMTYzLDIxNDk1LDIxNTEyLDIyNzQxLDI1MzM1LDI4NjQwLDM1OTQ2LDM2NzAzLDQwNjMzLDIwODExLDIxMDUxLDIxNTc4LDIyMjY5LDMxMjk2LDM3MjM5LDQwMjg4LDQwNjU4LDI5NTA4LDI4NDI1LDMzMTM2LDI5OTY5LDI0NTczLDI0Nzk0LDM5NTkyLDI5NDAzLDM2Nzk2LDI3NDkyLDM4OTE1LDIwMTcwLDIyMjU2LDIyMzcyLDIyNzE4LDIzMTMwLDI0NjgwLDI1MDMxLDI2MTI3LDI2MTE4LDI2NjgxLDI2ODAxLDI4MTUxLDMwMTY1LDMyMDU4LDMzMzkwLDM5NzQ2LDIwMTIzLDIwMzA0LDIxNDQ5LDIxNzY2LDIzOTE5LDI0MDM4LDI0MDQ2LDI2NjE5LDI3ODAxLDI5ODExLDMwNzIyLDM1NDA4LDM3NzgyLDM1MDM5LDIyMzUyLDI0MjMxLDI1Mzg3LDIwNjYxLDIwNjUyLDIwODc3LDI2MzY4LDIxNzA1LDIyNjIyLDIyOTcxLDIzNDcyLDI0NDI1LDI1MTY1LDI1NTA1LDI2Njg1LDI3NTA3LDI4MTY4LDI4Nzk3LDM3MzE5LDI5MzEyLDMwNzQxLDMwNzU4LDMxMDg1LDI1OTk4LDMyMDQ4LDMzNzU2LDM1MDA5LDM2NjE3LDM4NTU1LDIxMDkyLDIyMzEyLDI2NDQ4LDMyNjE4LDM2MDAxLDIwOTE2LDIyMzM4LDM4NDQyLDIyNTg2LDI3MDE4LDMyOTQ4LDIxNjgyLDIzODIyLDIyNTI0LDMwODY5LDQwNDQyLDIwMzE2LDIxMDY2LDIxNjQzLDI1NjYyLDI2MTUyLDI2Mzg4LDI2NjEzLDMxMzY0LDMxNTc0LDMyMDM0LDM3Njc5LDI2NzE2LDM5ODUzLDMxNTQ1LDIxMjczLDIwODc0LDIxMDQ3LDIzNTE5LDI1MzM0LDI1Nzc0LDI1ODMwLDI2NDEzLDI3NTc4LDM0MjE3LDM4NjA5LDMwMzUyLDM5ODk0LDI1NDIwLDM3NjM4LDM5ODUxLDMwMzk5LDI2MTk0LDE5OTc3LDIwNjMyLDIxNDQyLDIzNjY1LDI0ODA4LDI1NzQ2LDI1OTU1LDI2NzE5LDI5MTU4LDI5NjQyLDI5OTg3LDMxNjM5LDMyMzg2LDM0NDUzLDM1NzE1LDM2MDU5LDM3MjQwLDM5MTg0LDI2MDI4LDI2MjgzLDI3NTMxLDIwMTgxLDIwMTgwLDIwMjgyLDIwMzUxLDIxMDUwLDIxNDk2LDIxNDkwLDIxOTg3LDIyMjM1LDIyNzYzLDIyOTg3LDIyOTg1LDIzMDM5LDIzMzc2LDIzNjI5LDI0MDY2LDI0MTA3LDI0NTM1LDI0NjA1LDI1MzUxLDI1OTAzLDIzMzg4LDI2MDMxLDI2MDQ1LDI2MDg4LDI2NTI1LDI3NDkwLDI3NTE1LDI3NjYzLDI5NTA5LDMxMDQ5LDMxMTY5LDMxOTkyLDMyMDI1LDMyMDQzLDMyOTMwLDMzMDI2LDMzMjY3LDM1MjIyLDM1NDIyLDM1NDMzLDM1NDMwLDM1NDY4LDM1NTY2LDM2MDM5LDM2MDYwLDM4NjA0LDM5MTY0LDI3NTAzLDIwMTA3LDIwMjg0LDIwMzY1LDIwODE2LDIzMzgzLDIzNTQ2LDI0OTA0LDI1MzQ1LDI2MTc4LDI3NDI1LDI4MzYzLDI3ODM1LDI5MjQ2LDI5ODg1LDMwMTY0LDMwOTEzLDMxMDM0LDMyNzgwLDMyODE5LDMzMjU4LDMzOTQwLDM2NzY2LDI3NzI4LDQwNTc1LDI0MzM1LDM1NjcyLDQwMjM1LDMxNDgyLDM2NjAwLDIzNDM3LDM4NjM1LDE5OTcxLDIxNDg5LDIyNTE5LDIyODMzLDIzMjQxLDIzNDYwLDI0NzEzLDI4Mjg3LDI4NDIyLDMwMTQyLDM2MDc0LDIzNDU1LDM0MDQ4LDMxNzEyLDIwNTk0LDI2NjEyLDMzNDM3LDIzNjQ5LDM0MTIyLDMyMjg2LDMzMjk0LDIwODg5LDIzNTU2LDI1NDQ4LDM2MTk4LDI2MDEyLDI5MDM4LDMxMDM4LDMyMDIzLDMyNzczLDM1NjEzLDM2NTU0LDM2OTc0LDM0NTAzLDM3MDM0LDIwNTExLDIxMjQyLDIzNjEwLDI2NDUxLDI4Nzk2LDI5MjM3LDM3MTk2LDM3MzIwLDM3Njc1LDMzNTA5LDIzNDkwLDI0MzY5LDI0ODI1LDIwMDI3LDIxNDYyLDIzNDMyLDI1MTYzLDI2NDE3LDI3NTMwLDI5NDE3LDI5NjY0LDMxMjc4LDMzMTMxLDM2MjU5LDM3MjAyLDM5MzE4LDIwNzU0LDIxNDYzLDIxNjEwLDIzNTUxLDI1NDgwLDI3MTkzLDMyMTcyLDM4NjU2LDIyMjM0LDIxNDU0LDIxNjA4LDIzNDQ3LDIzNjAxLDI0MDMwLDIwNDYyLDI0ODMzLDI1MzQyLDI3OTU0LDMxMTY4LDMxMTc5LDMyMDY2LDMyMzMzLDMyNzIyLDMzMjYxLDMzMzExLDMzOTM2LDM0ODg2LDM1MTg2LDM1NzI4LDM2NDY4LDM2NjU1LDM2OTEzLDM3MTk1LDM3MjI4LDM4NTk4LDM3Mjc2LDIwMTYwLDIwMzAzLDIwODA1LDIxMzEzLDI0NDY3LDI1MTAyLDI2NTgwLDI3NzEzLDI4MTcxLDI5NTM5LDMyMjk0LDM3MzI1LDM3NTA3LDIxNDYwLDIyODA5LDIzNDg3LDI4MTEzLDMxMDY5LDMyMzAyLDMxODk5LDIyNjU0LDI5MDg3LDIwOTg2LDM0ODk5LDM2ODQ4LDIwNDI2LDIzODAzLDI2MTQ5LDMwNjM2LDMxNDU5LDMzMzA4LDM5NDIzLDIwOTM0LDI0NDkwLDI2MDkyLDI2OTkxLDI3NTI5LDI4MTQ3LDI4MzEwLDI4NTE2LDMwNDYyLDMyMDIwLDI0MDMzLDM2OTgxLDM3MjU1LDM4OTE4LDIwOTY2LDIxMDIxLDI1MTUyLDI2MjU3LDI2MzI5LDI4MTg2LDI0MjQ2LDMyMjEwLDMyNjI2LDI2MzYwLDM0MjIzLDM0Mjk1LDM1NTc2LDIxMTYxLDIxNDY1LDIyODk5LDI0MjA3LDI0NDY0LDI0NjYxLDM3NjA0LDM4NTAwLDIwNjYzLDIwNzY3LDIxMjEzLDIxMjgwLDIxMzE5LDIxNDg0LDIxNzM2LDIxODMwLDIxODA5LDIyMDM5LDIyODg4LDIyOTc0LDIzMTAwLDIzNDc3LDIzNTU4LDIzNTY3LDIzNTY5LDIzNTc4LDI0MTk2LDI0MjAyLDI0Mjg4LDI0NDMyLDI1MjE1LDI1MjIwLDI1MzA3LDI1NDg0LDI1NDYzLDI2MTE5LDI2MTI0LDI2MTU3LDI2MjMwLDI2NDk0LDI2Nzg2LDI3MTY3LDI3MTg5LDI3ODM2LDI4MDQwLDI4MTY5LDI4MjQ4LDI4OTg4LDI4OTY2LDI5MDMxLDMwMTUxLDMwNDY1LDMwODEzLDMwOTc3LDMxMDc3LDMxMjE2LDMxNDU2LDMxNTA1LDMxOTExLDMyMDU3LDMyOTE4LDMzNzUwLDMzOTMxLDM0MTIxLDM0OTA5LDM1MDU5LDM1MzU5LDM1Mzg4LDM1NDEyLDM1NDQzLDM1OTM3LDM2MDYyLDM3Mjg0LDM3NDc4LDM3NzU4LDM3OTEyLDM4NTU2LDM4ODA4LDE5OTc4LDE5OTc2LDE5OTk4LDIwMDU1LDIwODg3LDIxMTA0LDIyNDc4LDIyNTgwLDIyNzMyLDIzMzMwLDI0MTIwLDI0NzczLDI1ODU0LDI2NDY1LDI2NDU0LDI3OTcyLDI5MzY2LDMwMDY3LDMxMzMxLDMzOTc2LDM1Njk4LDM3MzA0LDM3NjY0LDIyMDY1LDIyNTE2LDM5MTY2LDI1MzI1LDI2ODkzLDI3NTQyLDI5MTY1LDMyMzQwLDMyODg3LDMzMzk0LDM1MzAyLDM5MTM1LDM0NjQ1LDM2Nzg1LDIzNjExLDIwMjgwLDIwNDQ5LDIwNDA1LDIxNzY3LDIzMDcyLDIzNTE3LDIzNTI5LDI0NTE1LDI0OTEwLDI1MzkxLDI2MDMyLDI2MTg3LDI2ODYyLDI3MDM1LDI4MDI0LDI4MTQ1LDMwMDAzLDMwMTM3LDMwNDk1LDMxMDcwLDMxMjA2LDMyMDUxLDMzMjUxLDMzNDU1LDM0MjE4LDM1MjQyLDM1Mzg2LDM2NTIzLDM2NzYzLDM2OTE0LDM3MzQxLDM4NjYzLDIwMTU0LDIwMTYxLDIwOTk1LDIyNjQ1LDIyNzY0LDIzNTYzLDI5OTc4LDIzNjEzLDMzMTAyLDM1MzM4LDM2ODA1LDM4NDk5LDM4NzY1LDMxNTI1LDM1NTM1LDM4OTIwLDM3MjE4LDIyMjU5LDIxNDE2LDM2ODg3LDIxNTYxLDIyNDAyLDI0MTAxLDI1NTEyLDI3NzAwLDI4ODEwLDMwNTYxLDMxODgzLDMyNzM2LDM0OTI4LDM2OTMwLDM3MjA0LDM3NjQ4LDM3NjU2LDM4NTQzLDI5NzkwLDM5NjIwLDIzODE1LDIzOTEzLDI1OTY4LDI2NTMwLDM2MjY0LDM4NjE5LDI1NDU0LDI2NDQxLDI2OTA1LDMzNzMzLDM4OTM1LDM4NTkyLDM1MDcwLDI4NTQ4LDI1NzIyLDIzNTQ0LDE5OTkwLDI4NzE2LDMwMDQ1LDI2MTU5LDIwOTMyLDIxMDQ2LDIxMjE4LDIyOTk1LDI0NDQ5LDI0NjE1LDI1MTA0LDI1OTE5LDI1OTcyLDI2MTQzLDI2MjI4LDI2ODY2LDI2NjQ2LDI3NDkxLDI4MTY1LDI5Mjk4LDI5OTgzLDMwNDI3LDMxOTM0LDMyODU0LDIyNzY4LDM1MDY5LDM1MTk5LDM1NDg4LDM1NDc1LDM1NTMxLDM2ODkzLDM3MjY2LDM4NzM4LDM4NzQ1LDI1OTkzLDMxMjQ2LDMzMDMwLDM4NTg3LDI0MTA5LDI0Nzk2LDI1MTE0LDI2MDIxLDI2MTMyLDI2NTEyLDMwNzA3LDMxMzA5LDMxODIxLDMyMzE4LDMzMDM0LDM2MDEyLDM2MTk2LDM2MzIxLDM2NDQ3LDMwODg5LDIwOTk5LDI1MzA1LDI1NTA5LDI1NjY2LDI1MjQwLDM1MzczLDMxMzYzLDMxNjgwLDM1NTAwLDM4NjM0LDMyMTE4LDMzMjkyLDM0NjMzLDIwMTg1LDIwODA4LDIxMzE1LDIxMzQ0LDIzNDU5LDIzNTU0LDIzNTc0LDI0MDI5LDI1MTI2LDI1MTU5LDI1Nzc2LDI2NjQzLDI2Njc2LDI3ODQ5LDI3OTczLDI3OTI3LDI2NTc5LDI4NTA4LDI5MDA2LDI5MDUzLDI2MDU5LDMxMzU5LDMxNjYxLDMyMjE4LDMyMzMwLDMyNjgwLDMzMTQ2LDMzMzA3LDMzMzM3LDM0MjE0LDM1NDM4LDM2MDQ2LDM2MzQxLDM2OTg0LDM2OTgzLDM3NTQ5LDM3NTIxLDM4Mjc1LDM5ODU0LDIxMDY5LDIxODkyLDI4NDcyLDI4OTgyLDIwODQwLDMxMTA5LDMyMzQxLDMzMjAzLDMxOTUwLDIyMDkyLDIyNjA5LDIzNzIwLDI1NTE0LDI2MzY2LDI2MzY1LDI2OTcwLDI5NDAxLDMwMDk1LDMwMDk0LDMwOTkwLDMxMDYyLDMxMTk5LDMxODk1LDMyMDMyLDMyMDY4LDM0MzExLDM1MzgwLDM4NDU5LDM2OTYxLDQwNzM2LDIwNzExLDIxMTA5LDIxNDUyLDIxNDc0LDIwNDg5LDIxOTMwLDIyNzY2LDIyODYzLDI5MjQ1LDIzNDM1LDIzNjUyLDIxMjc3LDI0ODAzLDI0ODE5LDI1NDM2LDI1NDc1LDI1NDA3LDI1NTMxLDI1ODA1LDI2MDg5LDI2MzYxLDI0MDM1LDI3MDg1LDI3MTMzLDI4NDM3LDI5MTU3LDIwMTA1LDMwMTg1LDMwNDU2LDMxMzc5LDMxOTY3LDMyMjA3LDMyMTU2LDMyODY1LDMzNjA5LDMzNjI0LDMzOTAwLDMzOTgwLDM0Mjk5LDM1MDEzLDM2MjA4LDM2ODY1LDM2OTczLDM3NzgzLDM4Njg0LDM5NDQyLDIwNjg3LDIyNjc5LDI0OTc0LDMzMjM1LDM0MTAxLDM2MTA0LDM2ODk2LDIwNDE5LDIwNTk2LDIxMDYzLDIxMzYzLDI0Njg3LDI1NDE3LDI2NDYzLDI4MjA0LDM2Mjc1LDM2ODk1LDIwNDM5LDIzNjQ2LDM2MDQyLDI2MDYzLDMyMTU0LDIxMzMwLDM0OTY2LDIwODU0LDI1NTM5LDIzMzg0LDIzNDAzLDIzNTYyLDI1NjEzLDI2NDQ5LDM2OTU2LDIwMTgyLDIyODEwLDIyODI2LDI3NzYwLDM1NDA5LDIxODIyLDIyNTQ5LDIyOTQ5LDI0ODE2LDI1MTcxLDI2NTYxLDMzMzMzLDI2OTY1LDM4NDY0LDM5MzY0LDM5NDY0LDIwMzA3LDIyNTM0LDIzNTUwLDMyNzg0LDIzNzI5LDI0MTExLDI0NDUzLDI0NjA4LDI0OTA3LDI1MTQwLDI2MzY3LDI3ODg4LDI4MzgyLDMyOTc0LDMzMTUxLDMzNDkyLDM0OTU1LDM2MDI0LDM2ODY0LDM2OTEwLDM4NTM4LDQwNjY3LDM5ODk5LDIwMTk1LDIxNDg4LDIyODIzLDMxNTMyLDM3MjYxLDM4OTg4LDQwNDQxLDI4MzgxLDI4NzExLDIxMzMxLDIxODI4LDIzNDI5LDI1MTc2LDI1MjQ2LDI1Mjk5LDI3ODEwLDI4NjU1LDI5NzMwLDM1MzUxLDM3OTQ0LDI4NjA5LDM1NTgyLDMzNTkyLDIwOTY3LDM0NTUyLDIxNDgyLDIxNDgxLDIwMjk0LDM2OTQ4LDM2Nzg0LDIyODkwLDMzMDczLDI0MDYxLDMxNDY2LDM2Nzk5LDI2ODQyLDM1ODk1LDI5NDMyLDQwMDA4LDI3MTk3LDM1NTA0LDIwMDI1LDIxMzM2LDIyMDIyLDIyMzc0LDI1Mjg1LDI1NTA2LDI2MDg2LDI3NDcwLDI4MTI5LDI4MjUxLDI4ODQ1LDMwNzAxLDMxNDcxLDMxNjU4LDMyMTg3LDMyODI5LDMyOTY2LDM0NTA3LDM1NDc3LDM3NzIzLDIyMjQzLDIyNzI3LDI0MzgyLDI2MDI5LDI2MjYyLDI3MjY0LDI3NTczLDMwMDA3LDM1NTI3LDIwNTE2LDMwNjkzLDIyMzIwLDI0MzQ3LDI0Njc3LDI2MjM0LDI3NzQ0LDMwMTk2LDMxMjU4LDMyNjIyLDMzMjY4LDM0NTg0LDM2OTMzLDM5MzQ3LDMxNjg5LDMwMDQ0LDMxNDgxLDMxNTY5LDMzOTg4LDM2ODgwLDMxMjA5LDMxMzc4LDMzNTkwLDIzMjY1LDMwNTI4LDIwMDEzLDIwMjEwLDIzNDQ5LDI0NTQ0LDI1Mjc3LDI2MTcyLDI2NjA5LDI3ODgwLDM0NDExLDM0OTM1LDM1Mzg3LDM3MTk4LDM3NjE5LDM5Mzc2LDI3MTU5LDI4NzEwLDI5NDgyLDMzNTExLDMzODc5LDM2MDE1LDE5OTY5LDIwODA2LDIwOTM5LDIxODk5LDIzNTQxLDI0MDg2LDI0MTE1LDI0MTkzLDI0MzQwLDI0MzczLDI0NDI3LDI0NTAwLDI1MDc0LDI1MzYxLDI2Mjc0LDI2Mzk3LDI4NTI2LDI5MjY2LDMwMDEwLDMwNTIyLDMyODg0LDMzMDgxLDMzMTQ0LDM0Njc4LDM1NTE5LDM1NTQ4LDM2MjI5LDM2MzM5LDM3NTMwLDM4MjYzLDM4OTE0LDQwMTY1LDIxMTg5LDI1NDMxLDMwNDUyLDI2Mzg5LDI3Nzg0LDI5NjQ1LDM2MDM1LDM3ODA2LDM4NTE1LDI3OTQxLDIyNjg0LDI2ODk0LDI3MDg0LDM2ODYxLDM3Nzg2LDMwMTcxLDM2ODkwLDIyNjE4LDI2NjI2LDI1NTI0LDI3MTMxLDIwMjkxLDI4NDYwLDI2NTg0LDM2Nzk1LDM0MDg2LDMyMTgwLDM3NzE2LDI2OTQzLDI4NTI4LDIyMzc4LDIyNzc1LDIzMzQwLDMyMDQ0LDI5MjI2LDIxNTE0LDM3MzQ3LDQwMzcyLDIwMTQxLDIwMzAyLDIwNTcyLDIwNTk3LDIxMDU5LDM1OTk4LDIxNTc2LDIyNTY0LDIzNDUwLDI0MDkzLDI0MjEzLDI0MjM3LDI0MzExLDI0MzUxLDI0NzE2LDI1MjY5LDI1NDAyLDI1NTUyLDI2Nzk5LDI3NzEyLDMwODU1LDMxMTE4LDMxMjQzLDMyMjI0LDMzMzUxLDM1MzMwLDM1NTU4LDM2NDIwLDM2ODgzLDM3MDQ4LDM3MTY1LDM3MzM2LDQwNzE4LDI3ODc3LDI1Njg4LDI1ODI2LDI1OTczLDI4NDA0LDMwMzQwLDMxNTE1LDM2OTY5LDM3ODQxLDI4MzQ2LDIxNzQ2LDI0NTA1LDI1NzY0LDM2Njg1LDM2ODQ1LDM3NDQ0LDIwODU2LDIyNjM1LDIyODI1LDIzNjM3LDI0MjE1LDI4MTU1LDMyMzk5LDI5OTgwLDM2MDI4LDM2NTc4LDM5MDAzLDI4ODU3LDIwMjUzLDI3NTgzLDI4NTkzLDMwMDAwLDM4NjUxLDIwODE0LDIxNTIwLDIyNTgxLDIyNjE1LDIyOTU2LDIzNjQ4LDI0NDY2LDI2MDA3LDI2NDYwLDI4MTkzLDMwMzMxLDMzNzU5LDM2MDc3LDM2ODg0LDM3MTE3LDM3NzA5LDMwNzU3LDMwNzc4LDIxMTYyLDI0MjMwLDIyMzAzLDIyOTAwLDI0NTk0LDIwNDk4LDIwODI2LDIwOTA4LDIwOTQxLDIwOTkyLDIxNzc2LDIyNjEyLDIyNjE2LDIyODcxLDIzNDQ1LDIzNzk4LDIzOTQ3LDI0NzY0LDI1MjM3LDI1NjQ1LDI2NDgxLDI2NjkxLDI2ODEyLDI2ODQ3LDMwNDIzLDI4MTIwLDI4MjcxLDI4MDU5LDI4NzgzLDI5MTI4LDI0NDAzLDMwMTY4LDMxMDk1LDMxNTYxLDMxNTcyLDMxNTcwLDMxOTU4LDMyMTEzLDIxMDQwLDMzODkxLDM0MTUzLDM0Mjc2LDM1MzQyLDM1NTg4LDM1OTEwLDM2MzY3LDM2ODY3LDM2ODc5LDM3OTEzLDM4NTE4LDM4OTU3LDM5NDcyLDM4MzYwLDIwNjg1LDIxMjA1LDIxNTE2LDIyNTMwLDIzNTY2LDI0OTk5LDI1NzU4LDI3OTM0LDMwNjQzLDMxNDYxLDMzMDEyLDMzNzk2LDM2OTQ3LDM3NTA5LDIzNzc2LDQwMTk5LDIxMzExLDI0NDcxLDI0NDk5LDI4MDYwLDI5MzA1LDMwNTYzLDMxMTY3LDMxNzE2LDI3NjAyLDI5NDIwLDM1NTAxLDI2NjI3LDI3MjMzLDIwOTg0LDMxMzYxLDI2OTMyLDIzNjI2LDQwMTgyLDMzNTE1LDIzNDkzLDM3MTkzLDI4NzAyLDIyMTM2LDIzNjYzLDI0Nzc1LDI1OTU4LDI3Nzg4LDM1OTMwLDM2OTI5LDM4OTMxLDIxNTg1LDI2MzExLDM3Mzg5LDIyODU2LDM3MDI3LDIwODY5LDIwMDQ1LDIwOTcwLDM0MjAxLDM1NTk4LDI4NzYwLDI1NDY2LDM3NzA3LDI2OTc4LDM5MzQ4LDMyMjYwLDMwMDcxLDIxMzM1LDI2OTc2LDM2NTc1LDM4NjI3LDI3NzQxLDIwMTA4LDIzNjEyLDI0MzM2LDM2ODQxLDIxMjUwLDM2MDQ5LDMyOTA1LDM0NDI1LDI0MzE5LDI2MDg1LDIwMDgzLDIwODM3LDIyOTE0LDIzNjE1LDM4ODk0LDIwMjE5LDIyOTIyLDI0NTI1LDM1NDY5LDI4NjQxLDMxMTUyLDMxMDc0LDIzNTI3LDMzOTA1LDI5NDgzLDI5MTA1LDI0MTgwLDI0NTY1LDI1NDY3LDI1NzU0LDI5MTIzLDMxODk2LDIwMDM1LDI0MzE2LDIwMDQzLDIyNDkyLDIyMTc4LDI0NzQ1LDI4NjExLDMyMDEzLDMzMDIxLDMzMDc1LDMzMjE1LDM2Nzg2LDM1MjIzLDM0NDY4LDI0MDUyLDI1MjI2LDI1NzczLDM1MjA3LDI2NDg3LDI3ODc0LDI3OTY2LDI5NzUwLDMwNzcyLDIzMTEwLDMyNjI5LDMzNDUzLDM5MzQwLDIwNDY3LDI0MjU5LDI1MzA5LDI1NDkwLDI1OTQzLDI2NDc5LDMwNDAzLDI5MjYwLDMyOTcyLDMyOTU0LDM2NjQ5LDM3MTk3LDIwNDkzLDIyNTIxLDIzMTg2LDI2NzU3LDI2OTk1LDI5MDI4LDI5NDM3LDM2MDIzLDIyNzcwLDM2MDY0LDM4NTA2LDM2ODg5LDM0Njg3LDMxMjA0LDMwNjk1LDMzODMzLDIwMjcxLDIxMDkzLDIxMzM4LDI1MjkzLDI2NTc1LDI3ODUwLDMwMzMzLDMxNjM2LDMxODkzLDMzMzM0LDM0MTgwLDM2ODQzLDI2MzMzLDI4NDQ4LDI5MTkwLDMyMjgzLDMzNzA3LDM5MzYxLDQwNjE0LDIwOTg5LDMxNjY1LDMwODM0LDMxNjcyLDMyOTAzLDMxNTYwLDI3MzY4LDI0MTYxLDMyOTA4LDMwMDMzLDMwMDQ4LDIwODQzLDM3NDc0LDI4MzAwLDMwMzMwLDM3MjcxLDM5NjU4LDIwMjQwLDMyNjI0LDI1MjQ0LDMxNTY3LDM4MzA5LDQwMTY5LDIyMTM4LDIyNjE3LDM0NTMyLDM4NTg4LDIwMjc2LDIxMDI4LDIxMzIyLDIxNDUzLDIxNDY3LDI0MDcwLDI1NjQ0LDI2MDAxLDI2NDk1LDI3NzEwLDI3NzI2LDI5MjU2LDI5MzU5LDI5Njc3LDMwMDM2LDMyMzIxLDMzMzI0LDM0MjgxLDM2MDA5LDMxNjg0LDM3MzE4LDI5MDMzLDM4OTMwLDM5MTUxLDI1NDA1LDI2MjE3LDMwMDU4LDMwNDM2LDMwOTI4LDM0MTE1LDM0NTQyLDIxMjkwLDIxMzI5LDIxNTQyLDIyOTE1LDI0MTk5LDI0NDQ0LDI0NzU0LDI1MTYxLDI1MjA5LDI1MjU5LDI2MDAwLDI3NjA0LDI3ODUyLDMwMTMwLDMwMzgyLDMwODY1LDMxMTkyLDMyMjAzLDMyNjMxLDMyOTMzLDM0OTg3LDM1NTEzLDM2MDI3LDM2OTkxLDM4NzUwLDM5MTMxLDI3MTQ3LDMxODAwLDIwNjMzLDIzNjE0LDI0NDk0LDI2NTAzLDI3NjA4LDI5NzQ5LDMwNDczLDMyNjU0LDQwNzYzLDI2NTcwLDMxMjU1LDIxMzA1LDMwMDkxLDM5NjYxLDI0NDIyLDMzMTgxLDMzNzc3LDMyOTIwLDI0MzgwLDI0NTE3LDMwMDUwLDMxNTU4LDM2OTI0LDI2NzI3LDIzMDE5LDIzMTk1LDMyMDE2LDMwMzM0LDM1NjI4LDIwNDY5LDI0NDI2LDI3MTYxLDI3NzAzLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1NDEzLDM1OTYxLDI0Mjg3LDI1NTUxLDMwMTQ5LDMxMTg2LDMzNDk1LDM3NjcyLDM3NjE4LDMzOTQ4LDM0NTQxLDM5OTgxLDIxNjk3LDI0NDI4LDI1OTk2LDI3OTk2LDI4NjkzLDM2MDA3LDM2MDUxLDM4OTcxLDI1OTM1LDI5OTQyLDE5OTgxLDIwMTg0LDIyNDk2LDIyODI3LDIzMTQyLDIzNTAwLDIwOTA0LDI0MDY3LDI0MjIwLDI0NTk4LDI1MjA2LDI1OTc1LDI2MDIzLDI2MjIyLDI4MDE0LDI5MjM4LDMxNTI2LDMzMTA0LDMzMTc4LDMzNDMzLDM1Njc2LDM2MDAwLDM2MDcwLDM2MjEyLDM4NDI4LDM4NDY4LDIwMzk4LDI1NzcxLDI3NDk0LDMzMzEwLDMzODg5LDM0MTU0LDM3MDk2LDIzNTUzLDI2OTYzLDM5MDgwLDMzOTE0LDM0MTM1LDIwMjM5LDIxMTAzLDI0NDg5LDI0MTMzLDI2MzgxLDMxMTE5LDMzMTQ1LDM1MDc5LDM1MjA2LDI4MTQ5LDI0MzQzLDI1MTczLDI3ODMyLDIwMTc1LDI5Mjg5LDM5ODI2LDIwOTk4LDIxNTYzLDIyMTMyLDIyNzA3LDI0OTk2LDI1MTk4LDI4OTU0LDIyODk0LDMxODgxLDMxOTY2LDMyMDI3LDM4NjQwLDI1OTkxLDMyODYyLDE5OTkzLDIwMzQxLDIwODUzLDIyNTkyLDI0MTYzLDI0MTc5LDI0MzMwLDI2NTY0LDIwMDA2LDM0MTA5LDM4MjgxLDM4NDkxLDMxODU5LDM4OTEzLDIwNzMxLDIyNzIxLDMwMjk0LDMwODg3LDIxMDI5LDMwNjI5LDM0MDY1LDMxNjIyLDIwNTU5LDIyNzkzLDI5MjU1LDMxNjg3LDMyMjMyLDM2Nzk0LDM2ODIwLDM2OTQxLDIwNDE1LDIxMTkzLDIzMDgxLDI0MzIxLDM4ODI5LDIwNDQ1LDMzMzAzLDM3NjEwLDIyMjc1LDI1NDI5LDI3NDk3LDI5OTk1LDM1MDM2LDM2NjI4LDMxMjk4LDIxMjE1LDIyNjc1LDI0OTE3LDI1MDk4LDI2Mjg2LDI3NTk3LDMxODA3LDMzNzY5LDIwNTE1LDIwNDcyLDIxMjUzLDIxNTc0LDIyNTc3LDIyODU3LDIzNDUzLDIzNzkyLDIzNzkxLDIzODQ5LDI0MjE0LDI1MjY1LDI1NDQ3LDI1OTE4LDI2MDQxLDI2Mzc5LDI3ODYxLDI3ODczLDI4OTIxLDMwNzcwLDMyMjk5LDMyOTkwLDMzNDU5LDMzODA0LDM0MDI4LDM0NTYyLDM1MDkwLDM1MzcwLDM1OTE0LDM3MDMwLDM3NTg2LDM5MTY1LDQwMTc5LDQwMzAwLDIwMDQ3LDIwMTI5LDIwNjIxLDIxMDc4LDIyMzQ2LDIyOTUyLDI0MTI1LDI0NTM2LDI0NTM3LDI1MTUxLDI2MjkyLDI2Mzk1LDI2NTc2LDI2ODM0LDIwODgyLDMyMDMzLDMyOTM4LDMzMTkyLDM1NTg0LDM1OTgwLDM2MDMxLDM3NTAyLDM4NDUwLDIxNTM2LDM4OTU2LDIxMjcxLDIwNjkzLDIxMzQwLDIyNjk2LDI1Nzc4LDI2NDIwLDI5Mjg3LDMwNTY2LDMxMzAyLDM3MzUwLDIxMTg3LDI3ODA5LDI3NTI2LDIyNTI4LDI0MTQwLDIyODY4LDI2NDEyLDMyNzYzLDIwOTYxLDMwNDA2LDI1NzA1LDMwOTUyLDM5NzY0LDQwNjM1LDIyNDc1LDIyOTY5LDI2MTUxLDI2NTIyLDI3NTk4LDIxNzM3LDI3MDk3LDI0MTQ5LDMzMTgwLDI2NTE3LDM5ODUwLDI2NjIyLDQwMDE4LDI2NzE3LDIwMTM0LDIwNDUxLDIxNDQ4LDI1MjczLDI2NDExLDI3ODE5LDM2ODA0LDIwMzk3LDMyMzY1LDQwNjM5LDE5OTc1LDI0OTMwLDI4Mjg4LDI4NDU5LDM0MDY3LDIxNjE5LDI2NDEwLDM5NzQ5LDI0MDUxLDMxNjM3LDIzNzI0LDIzNDk0LDM0NTg4LDI4MjM0LDM0MDAxLDMxMjUyLDMzMDMyLDIyOTM3LDMxODg1LDI3NjY1LDMwNDk2LDIxMjA5LDIyODE4LDI4OTYxLDI5Mjc5LDMwNjgzLDM4Njk1LDQwMjg5LDI2ODkxLDIzMTY3LDIzMDY0LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDMwNDMxLDM2ODU1LDM3NTI4LDQwMTgwLDIzMDE4LDI5Mjc3LDI4MzU3LDIwODEzLDI2ODI1LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjM0LDI1NzIwLDI3MTY5LDMzNTM4LDIyOTE2LDIzMzkxLDI3NjExLDI5NDY3LDMwNDUwLDMyMTc4LDMyNzkxLDMzOTQ1LDIwNzg2LDI2NDA4LDQwNjY1LDMwNDQ2LDI2NDY2LDIxMjQ3LDM5MTczLDIzNTg4LDI1MTQ3LDMxODcwLDM2MDE2LDIxODM5LDI0NzU4LDMyMDExLDM4MjcyLDIxMjQ5LDIwMDYzLDIwOTE4LDIyODEyLDI5MjQyLDMyODIyLDM3MzI2LDI0MzU3LDMwNjkwLDIxMzgwLDI0NDQxLDMyMDA0LDM0MjIwLDM1Mzc5LDM2NDkzLDM4NzQyLDI2NjExLDM0MjIyLDM3OTcxLDI0ODQxLDI0ODQwLDI3ODMzLDMwMjkwLDM1NTY1LDM2NjY0LDIxODA3LDIwMzA1LDIwNzc4LDIxMTkxLDIxNDUxLDIzNDYxLDI0MTg5LDI0NzM2LDI0OTYyLDI1NTU4LDI2Mzc3LDI2NTg2LDI4MjYzLDI4MDQ0LDI5NDk0LDI5NDk1LDMwMDAxLDMxMDU2LDM1MDI5LDM1NDgwLDM2OTM4LDM3MDA5LDM3MTA5LDM4NTk2LDM0NzAxLDIyODA1LDIwMTA0LDIwMzEzLDE5OTgyLDM1NDY1LDM2NjcxLDM4OTI4LDIwNjUzLDI0MTg4LDIyOTM0LDIzNDgxLDI0MjQ4LDI1NTYyLDI1NTk0LDI1NzkzLDI2MzMyLDI2OTU0LDI3MDk2LDI3OTE1LDI4MzQyLDI5MDc2LDI5OTkyLDMxNDA3LDMyNjUwLDMyNzY4LDMzODY1LDMzOTkzLDM1MjAxLDM1NjE3LDM2MzYyLDM2OTY1LDM4NTI1LDM5MTc4LDI0OTU4LDI1MjMzLDI3NDQyLDI3Nzc5LDI4MDIwLDMyNzE2LDMyNzY0LDI4MDk2LDMyNjQ1LDM0NzQ2LDM1MDY0LDI2NDY5LDMzNzEzLDM4OTcyLDM4NjQ3LDI3OTMxLDMyMDk3LDMzODUzLDM3MjI2LDIwMDgxLDIxMzY1LDIzODg4LDI3Mzk2LDI4NjUxLDM0MjUzLDM0MzQ5LDM1MjM5LDIxMDMzLDIxNTE5LDIzNjUzLDI2NDQ2LDI2NzkyLDI5NzAyLDI5ODI3LDMwMTc4LDM1MDIzLDM1MDQxLDM3MzI0LDM4NjI2LDM4NTIwLDI0NDU5LDI5NTc1LDMxNDM1LDMzODcwLDI1NTA0LDMwMDUzLDIxMTI5LDI3OTY5LDI4MzE2LDI5NzA1LDMwMDQxLDMwODI3LDMxODkwLDM4NTM0LDMxNDUyLDQwODQ1LDIwNDA2LDI0OTQyLDI2MDUzLDM0Mzk2LDIwMTAyLDIwMTQyLDIwNjk4LDIwMDAxLDIwOTQwLDIzNTM0LDI2MDA5LDI2NzUzLDI4MDkyLDI5NDcxLDMwMjc0LDMwNjM3LDMxMjYwLDMxOTc1LDMzMzkxLDM1NTM4LDM2OTg4LDM3MzI3LDM4NTE3LDM4OTM2LDIxMTQ3LDMyMjA5LDIwNTIzLDIxNDAwLDI2NTE5LDI4MTA3LDI5MTM2LDI5NzQ3LDMzMjU2LDM2NjUwLDM4NTYzLDQwMDIzLDQwNjA3LDI5NzkyLDIyNTkzLDI4MDU3LDMyMDQ3LDM5MDA2LDIwMTk2LDIwMjc4LDIwMzYzLDIwOTE5LDIxMTY5LDIzOTk0LDI0NjA0LDI5NjE4LDMxMDM2LDMzNDkxLDM3NDI4LDM4NTgzLDM4NjQ2LDM4NjY2LDQwNTk5LDQwODAyLDI2Mjc4LDI3NTA4LDIxMDE1LDIxMTU1LDI4ODcyLDM1MDEwLDI0MjY1LDI0NjUxLDI0OTc2LDI4NDUxLDI5MDAxLDMxODA2LDMyMjQ0LDMyODc5LDM0MDMwLDM2ODk5LDM3Njc2LDIxNTcwLDM5NzkxLDI3MzQ3LDI4ODA5LDM2MDM0LDM2MzM1LDM4NzA2LDIxMTcyLDIzMTA1LDI0MjY2LDI0MzI0LDI2MzkxLDI3MDA0LDI3MDI4LDI4MDEwLDI4NDMxLDI5MjgyLDI5NDM2LDMxNzI1LDMyNzY5LDMyODk0LDM0NjM1LDM3MDcwLDIwODQ1LDQwNTk1LDMxMTA4LDMyOTA3LDM3NjgyLDM1NTQyLDIwNTI1LDIxNjQ0LDM1NDQxLDI3NDk4LDM2MDM2LDMzMDMxLDI0Nzg1LDI2NTI4LDQwNDM0LDIwMTIxLDIwMTIwLDM5OTUyLDM1NDM1LDM0MjQxLDM0MTUyLDI2ODgwLDI4Mjg2LDMwODcxLDMzMTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjQzMzIsMTk5ODQsMTk5ODksMjAwMTAsMjAwMTcsMjAwMjIsMjAwMjgsMjAwMzEsMjAwMzQsMjAwNTQsMjAwNTYsMjAwOTgsMjAxMDEsMzU5NDcsMjAxMDYsMzMyOTgsMjQzMzMsMjAxMTAsMjAxMjYsMjAxMjcsMjAxMjgsMjAxMzAsMjAxNDQsMjAxNDcsMjAxNTAsMjAxNzQsMjAxNzMsMjAxNjQsMjAxNjYsMjAxNjIsMjAxODMsMjAxOTAsMjAyMDUsMjAxOTEsMjAyMTUsMjAyMzMsMjAzMTQsMjAyNzIsMjAzMTUsMjAzMTcsMjAzMTEsMjAyOTUsMjAzNDIsMjAzNjAsMjAzNjcsMjAzNzYsMjAzNDcsMjAzMjksMjAzMzYsMjAzNjksMjAzMzUsMjAzNTgsMjAzNzQsMjA3NjAsMjA0MzYsMjA0NDcsMjA0MzAsMjA0NDAsMjA0NDMsMjA0MzMsMjA0NDIsMjA0MzIsMjA0NTIsMjA0NTMsMjA1MDYsMjA1MjAsMjA1MDAsMjA1MjIsMjA1MTcsMjA0ODUsMjAyNTIsMjA0NzAsMjA1MTMsMjA1MjEsMjA1MjQsMjA0NzgsMjA0NjMsMjA0OTcsMjA0ODYsMjA1NDcsMjA1NTEsMjYzNzEsMjA1NjUsMjA1NjAsMjA1NTIsMjA1NzAsMjA1NjYsMjA1ODgsMjA2MDAsMjA2MDgsMjA2MzQsMjA2MTMsMjA2NjAsMjA2NTgsMjA2ODEsMjA2ODIsMjA2NTksMjA2NzQsMjA2OTQsMjA3MDIsMjA3MDksMjA3MTcsMjA3MDcsMjA3MTgsMjA3MjksMjA3MjUsMjA3NDUsMjA3MzcsMjA3MzgsMjA3NTgsMjA3NTcsMjA3NTYsMjA3NjIsMjA3NjksMjA3OTQsMjA3OTEsMjA3OTYsMjA3OTUsMjA3OTksMjA4MDAsMjA4MTgsMjA4MTIsMjA4MjAsMjA4MzQsMzE0ODAsMjA4NDEsMjA4NDIsMjA4NDYsMjA4NjQsMjA4NjYsMjIyMzIsMjA4NzYsMjA4NzMsMjA4NzksMjA4ODEsMjA4ODMsMjA4ODUsMjA4ODYsMjA5MDAsMjA5MDIsMjA4OTgsMjA5MDUsMjA5MDYsMjA5MDcsMjA5MTUsMjA5MTMsMjA5MTQsMjA5MTIsMjA5MTcsMjA5MjUsMjA5MzMsMjA5MzcsMjA5NTUsMjA5NjAsMzQzODksMjA5NjksMjA5NzMsMjA5NzYsMjA5ODEsMjA5OTAsMjA5OTYsMjEwMDMsMjEwMTIsMjEwMDYsMjEwMzEsMjEwMzQsMjEwMzgsMjEwNDMsMjEwNDksMjEwNzEsMjEwNjAsMjEwNjcsMjEwNjgsMjEwODYsMjEwNzYsMjEwOTgsMjExMDgsMjEwOTcsMjExMDcsMjExMTksMjExMTcsMjExMzMsMjExNDAsMjExMzgsMjExMDUsMjExMjgsMjExMzcsMzY3NzYsMzY3NzUsMjExNjQsMjExNjUsMjExODAsMjExNzMsMjExODUsMjExOTcsMjEyMDcsMjEyMTQsMjEyMTksMjEyMjIsMzkxNDksMjEyMTYsMjEyMzUsMjEyMzcsMjEyNDAsMjEyNDEsMjEyNTQsMjEyNTYsMzAwMDgsMjEyNjEsMjEyNjQsMjEyNjMsMjEyNjksMjEyNzQsMjEyODMsMjEyOTUsMjEyOTcsMjEyOTksMjEzMDQsMjEzMTIsMjEzMTgsMjEzMTcsMTk5OTEsMjEzMjEsMjEzMjUsMjA5NTAsMjEzNDIsMjEzNTMsMjEzNTgsMjI4MDgsMjEzNzEsMjEzNjcsMjEzNzgsMjEzOTgsMjE0MDgsMjE0MTQsMjE0MTMsMjE0MjIsMjE0MjQsMjE0MzAsMjE0NDMsMzE3NjIsMzg2MTcsMjE0NzEsMjYzNjQsMjkxNjYsMjE0ODYsMjE0ODAsMjE0ODUsMjE0OTgsMjE1MDUsMjE1NjUsMjE1NjgsMjE1NDgsMjE1NDksMjE1NjQsMjE1NTAsMjE1NTgsMjE1NDUsMjE1MzMsMjE1ODIsMjE2NDcsMjE2MjEsMjE2NDYsMjE1OTksMjE2MTcsMjE2MjMsMjE2MTYsMjE2NTAsMjE2MjcsMjE2MzIsMjE2MjIsMjE2MzYsMjE2NDgsMjE2MzgsMjE3MDMsMjE2NjYsMjE2ODgsMjE2NjksMjE2NzYsMjE3MDAsMjE3MDQsMjE2NzIsMjE2NzUsMjE2OTgsMjE2NjgsMjE2OTQsMjE2OTIsMjE3MjAsMjE3MzMsMjE3MzQsMjE3NzUsMjE3ODAsMjE3NTcsMjE3NDIsMjE3NDEsMjE3NTQsMjE3MzAsMjE4MTcsMjE4MjQsMjE4NTksMjE4MzYsMjE4MDYsMjE4NTIsMjE4MjksMjE4NDYsMjE4NDcsMjE4MTYsMjE4MTEsMjE4NTMsMjE5MTMsMjE4ODgsMjE2NzksMjE4OTgsMjE5MTksMjE4ODMsMjE4ODYsMjE5MTIsMjE5MTgsMjE5MzQsMjE4ODQsMjE4OTEsMjE5MjksMjE4OTUsMjE5MjgsMjE5NzgsMjE5NTcsMjE5ODMsMjE5NTYsMjE5ODAsMjE5ODgsMjE5NzIsMjIwMzYsMjIwMDcsMjIwMzgsMjIwMTQsMjIwMTMsMjIwNDMsMjIwMDksMjIwOTQsMjIwOTYsMjkxNTEsMjIwNjgsMjIwNzAsMjIwNjYsMjIwNzIsMjIxMjMsMjIxMTYsMjIwNjMsMjIxMjQsMjIxMjIsMjIxNTAsMjIxNDQsMjIxNTQsMjIxNzYsMjIxNjQsMjIxNTksMjIxODEsMjIxOTAsMjIxOTgsMjIxOTYsMjIyMTAsMjIyMDQsMjIyMDksMjIyMTEsMjIyMDgsMjIyMTYsMjIyMjIsMjIyMjUsMjIyMjcsMjIyMzEsMjIyNTQsMjIyNjUsMjIyNzIsMjIyNzEsMjIyNzYsMjIyODEsMjIyODAsMjIyODMsMjIyODUsMjIyOTEsMjIyOTYsMjIyOTQsMjE5NTksMjIzMDAsMjIzMTAsMjIzMjcsMjIzMjgsMjIzNTAsMjIzMzEsMjIzMzYsMjIzNTEsMjIzNzcsMjI0NjQsMjI0MDgsMjIzNjksMjIzOTksMjI0MDksMjI0MTksMjI0MzIsMjI0NTEsMjI0MzYsMjI0NDIsMjI0NDgsMjI0NjcsMjI0NzAsMjI0ODQsMjI0ODIsMjI0ODMsMjI1MzgsMjI0ODYsMjI0OTksMjI1MzksMjI1NTMsMjI1NTcsMjI2NDIsMjI1NjEsMjI2MjYsMjI2MDMsMjI2NDAsMjc1ODQsMjI2MTAsMjI1ODksMjI2NDksMjI2NjEsMjI3MTMsMjI2ODcsMjI2OTksMjI3MTQsMjI3NTAsMjI3MTUsMjI3MTIsMjI3MDIsMjI3MjUsMjI3MzksMjI3MzcsMjI3NDMsMjI3NDUsMjI3NDQsMjI3NTcsMjI3NDgsMjI3NTYsMjI3NTEsMjI3NjcsMjI3NzgsMjI3NzcsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODYsMjI3OTQsMjI4MDAsMjI4MTEsMjY3OTAsMjI4MjEsMjI4MjgsMjI4MjksMjI4MzQsMjI4NDAsMjI4NDYsMzE0NDIsMjI4NjksMjI4NjQsMjI4NjIsMjI4NzQsMjI4NzIsMjI4ODIsMjI4ODAsMjI4ODcsMjI4OTIsMjI4ODksMjI5MDQsMjI5MTMsMjI5NDEsMjAzMTgsMjAzOTUsMjI5NDcsMjI5NjIsMjI5ODIsMjMwMTYsMjMwMDQsMjI5MjUsMjMwMDEsMjMwMDIsMjMwNzcsMjMwNzEsMjMwNTcsMjMwNjgsMjMwNDksMjMwNjYsMjMxMDQsMjMxNDgsMjMxMTMsMjMwOTMsMjMwOTQsMjMxMzgsMjMxNDYsMjMxOTQsMjMyMjgsMjMyMzAsMjMyNDMsMjMyMzQsMjMyMjksMjMyNjcsMjMyNTUsMjMyNzAsMjMyNzMsMjMyNTQsMjMyOTAsMjMyOTEsMjMzMDgsMjMzMDcsMjMzMTgsMjMzNDYsMjMyNDgsMjMzMzgsMjMzNTAsMjMzNTgsMjMzNjMsMjMzNjUsMjMzNjAsMjMzNzcsMjMzODEsMjMzODYsMjMzODcsMjMzOTcsMjM0MDEsMjM0MDgsMjM0MTEsMjM0MTMsMjM0MTYsMjU5OTIsMjM0MTgsMjM0MjQsMjM0MjcsMjM0NjIsMjM0ODAsMjM0OTEsMjM0OTUsMjM0OTcsMjM1MDgsMjM1MDQsMjM1MjQsMjM1MjYsMjM1MjIsMjM1MTgsMjM1MjUsMjM1MzEsMjM1MzYsMjM1NDIsMjM1MzksMjM1NTcsMjM1NTksMjM1NjAsMjM1NjUsMjM1NzEsMjM1ODQsMjM1ODYsMjM1OTIsMjM2MDgsMjM2MDksMjM2MTcsMjM2MjIsMjM2MzAsMjM2MzUsMjM2MzIsMjM2MzEsMjM0MDksMjM2NjAsMjM2NjIsMjAwNjYsMjM2NzAsMjM2NzMsMjM2OTIsMjM2OTcsMjM3MDAsMjI5MzksMjM3MjMsMjM3MzksMjM3MzQsMjM3NDAsMjM3MzUsMjM3NDksMjM3NDIsMjM3NTEsMjM3NjksMjM3ODUsMjM4MDUsMjM4MDIsMjM3ODksMjM5NDgsMjM3ODYsMjM4MTksMjM4MjksMjM4MzEsMjM5MDAsMjM4MzksMjM4MzUsMjM4MjUsMjM4MjgsMjM4NDIsMjM4MzQsMjM4MzMsMjM4MzIsMjM4ODQsMjM4OTAsMjM4ODYsMjM4ODMsMjM5MTYsMjM5MjMsMjM5MjYsMjM5NDMsMjM5NDAsMjM5MzgsMjM5NzAsMjM5NjUsMjM5ODAsMjM5ODIsMjM5OTcsMjM5NTIsMjM5OTEsMjM5OTYsMjQwMDksMjQwMTMsMjQwMTksMjQwMTgsMjQwMjIsMjQwMjcsMjQwNDMsMjQwNTAsMjQwNTMsMjQwNzUsMjQwOTAsMjQwODksMjQwODEsMjQwOTEsMjQxMTgsMjQxMTksMjQxMzIsMjQxMzEsMjQxMjgsMjQxNDIsMjQxNTEsMjQxNDgsMjQxNTksMjQxNjIsMjQxNjQsMjQxMzUsMjQxODEsMjQxODIsMjQxODYsNDA2MzYsMjQxOTEsMjQyMjQsMjQyNTcsMjQyNTgsMjQyNjQsMjQyNzIsMjQyNzEsMjQyNzgsMjQyOTEsMjQyODUsMjQyODIsMjQyODMsMjQyOTAsMjQyODksMjQyOTYsMjQyOTcsMjQzMDAsMjQzMDUsMjQzMDcsMjQzMDQsMjQzMDgsMjQzMTIsMjQzMTgsMjQzMjMsMjQzMjksMjQ0MTMsMjQ0MTIsMjQzMzEsMjQzMzcsMjQzNDIsMjQzNjEsMjQzNjUsMjQzNzYsMjQzODUsMjQzOTIsMjQzOTYsMjQzOTgsMjQzNjcsMjQ0MDEsMjQ0MDYsMjQ0MDcsMjQ0MDksMjQ0MTcsMjQ0MjksMjQ0MzUsMjQ0MzksMjQ0NTEsMjQ0NTAsMjQ0NDcsMjQ0NTgsMjQ0NTYsMjQ0NjUsMjQ0NTUsMjQ0NzgsMjQ0NzMsMjQ0NzIsMjQ0ODAsMjQ0ODgsMjQ0OTMsMjQ1MDgsMjQ1MzQsMjQ1NzEsMjQ1NDgsMjQ1NjgsMjQ1NjEsMjQ1NDEsMjQ3NTUsMjQ1NzUsMjQ2MDksMjQ2NzIsMjQ2MDEsMjQ1OTIsMjQ2MTcsMjQ1OTAsMjQ2MjUsMjQ2MDMsMjQ1OTcsMjQ2MTksMjQ2MTQsMjQ1OTEsMjQ2MzQsMjQ2NjYsMjQ2NDEsMjQ2ODIsMjQ2OTUsMjQ2NzEsMjQ2NTAsMjQ2NDYsMjQ2NTMsMjQ2NzUsMjQ2NDMsMjQ2NzYsMjQ2NDIsMjQ2ODQsMjQ2ODMsMjQ2NjUsMjQ3MDUsMjQ3MTcsMjQ4MDcsMjQ3MDcsMjQ3MzAsMjQ3MDgsMjQ3MzEsMjQ3MjYsMjQ3MjcsMjQ3MjIsMjQ3NDMsMjQ3MTUsMjQ4MDEsMjQ3NjAsMjQ4MDAsMjQ3ODcsMjQ3NTYsMjQ1NjAsMjQ3NjUsMjQ3NzQsMjQ3NTcsMjQ3OTIsMjQ5MDksMjQ4NTMsMjQ4MzgsMjQ4MjIsMjQ4MjMsMjQ4MzIsMjQ4MjAsMjQ4MjYsMjQ4MzUsMjQ4NjUsMjQ4MjcsMjQ4MTcsMjQ4NDUsMjQ4NDYsMjQ5MDMsMjQ4OTQsMjQ4NzIsMjQ4NzEsMjQ5MDYsMjQ4OTUsMjQ4OTIsMjQ4NzYsMjQ4ODQsMjQ4OTMsMjQ4OTgsMjQ5MDAsMjQ5NDcsMjQ5NTEsMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MzksMjQ5NDgsMjQ5NDMsMjQ5MzMsMjQ5NDUsMjQ5MjcsMjQ5MjUsMjQ5MTUsMjQ5NDksMjQ5ODUsMjQ5ODIsMjQ5NjcsMjUwMDQsMjQ5ODAsMjQ5ODYsMjQ5NzAsMjQ5NzcsMjUwMDMsMjUwMDYsMjUwMzYsMjUwMzQsMjUwMzMsMjUwNzksMjUwMzIsMjUwMjcsMjUwMzAsMjUwMTgsMjUwMzUsMzI2MzMsMjUwMzcsMjUwNjIsMjUwNTksMjUwNzgsMjUwODIsMjUwNzYsMjUwODcsMjUwODUsMjUwODQsMjUwODYsMjUwODgsMjUwOTYsMjUwOTcsMjUxMDEsMjUxMDAsMjUxMDgsMjUxMTUsMjUxMTgsMjUxMjEsMjUxMzAsMjUxMzQsMjUxMzYsMjUxMzgsMjUxMzksMjUxNTMsMjUxNjYsMjUxODIsMjUxODcsMjUxNzksMjUxODQsMjUxOTIsMjUyMTIsMjUyMTgsMjUyMjUsMjUyMTQsMjUyMzQsMjUyMzUsMjUyMzgsMjUzMDAsMjUyMTksMjUyMzYsMjUzMDMsMjUyOTcsMjUyNzUsMjUyOTUsMjUzNDMsMjUyODYsMjU4MTIsMjUyODgsMjUzMDgsMjUyOTIsMjUyOTAsMjUyODIsMjUyODcsMjUyNDMsMjUyODksMjUzNTYsMjUzMjYsMjUzMjksMjUzODMsMjUzNDYsMjUzNTIsMjUzMjcsMjUzMzMsMjU0MjQsMjU0MDYsMjU0MjEsMjU2MjgsMjU0MjMsMjU0OTQsMjU0ODYsMjU0NzIsMjU1MTUsMjU0NjIsMjU1MDcsMjU0ODcsMjU0ODEsMjU1MDMsMjU1MjUsMjU0NTEsMjU0NDksMjU1MzQsMjU1NzcsMjU1MzYsMjU1NDIsMjU1NzEsMjU1NDUsMjU1NTQsMjU1OTAsMjU1NDAsMjU2MjIsMjU2NTIsMjU2MDYsMjU2MTksMjU2MzgsMjU2NTQsMjU4ODUsMjU2MjMsMjU2NDAsMjU2MTUsMjU3MDMsMjU3MTEsMjU3MTgsMjU2NzgsMjU4OTgsMjU3NDksMjU3NDcsMjU3NjUsMjU3NjksMjU3MzYsMjU3ODgsMjU4MTgsMjU4MTAsMjU3OTcsMjU3OTksMjU3ODcsMjU4MTYsMjU3OTQsMjU4NDEsMjU4MzEsMzMyODksMjU4MjQsMjU4MjUsMjUyNjAsMjU4MjcsMjU4MzksMjU5MDAsMjU4NDYsMjU4NDQsMjU4NDIsMjU4NTAsMjU4NTYsMjU4NTMsMjU4ODAsMjU4ODQsMjU4NjEsMjU4OTIsMjU4OTEsMjU4OTksMjU5MDgsMjU5MDksMjU5MTEsMjU5MTAsMjU5MTIsMzAwMjcsMjU5MjgsMjU5NDIsMjU5NDEsMjU5MzMsMjU5NDQsMjU5NTAsMjU5NDksMjU5NzAsMjU5NzYsMjU5ODYsMjU5ODcsMzU3MjIsMjYwMTEsMjYwMTUsMjYwMjcsMjYwMzksMjYwNTEsMjYwNTQsMjYwNDksMjYwNTIsMjYwNjAsMjYwNjYsMjYwNzUsMjYwNzMsMjYwODAsMjYwODEsMjYwOTcsMjY0ODIsMjYxMjIsMjYxMTUsMjYxMDcsMjY0ODMsMjYxNjUsMjYxNjYsMjYxNjQsMjYxNDAsMjYxOTEsMjYxODAsMjYxODUsMjYxNzcsMjYyMDYsMjYyMDUsMjYyMTIsMjYyMTUsMjYyMTYsMjYyMDcsMjYyMTAsMjYyMjQsMjYyNDMsMjYyNDgsMjYyNTQsMjYyNDksMjYyNDQsMjYyNjQsMjYyNjksMjYzMDUsMjYyOTcsMjYzMTMsMjYzMDIsMjYzMDAsMjYzMDgsMjYyOTYsMjYzMjYsMjYzMzAsMjYzMzYsMjYxNzUsMjYzNDIsMjYzNDUsMjYzNTIsMjYzNTcsMjYzNTksMjYzODMsMjYzOTAsMjYzOTgsMjY0MDYsMjY0MDcsMzg3MTIsMjY0MTQsMjY0MzEsMjY0MjIsMjY0MzMsMjY0MjQsMjY0MjMsMjY0MzgsMjY0NjIsMjY0NjQsMjY0NTcsMjY0NjcsMjY0NjgsMjY1MDUsMjY0ODAsMjY1MzcsMjY0OTIsMjY0NzQsMjY1MDgsMjY1MDcsMjY1MzQsMjY1MjksMjY1MDEsMjY1NTEsMjY2MDcsMjY1NDgsMjY2MDQsMjY1NDcsMjY2MDEsMjY1NTIsMjY1OTYsMjY1OTAsMjY1ODksMjY1OTQsMjY2MDYsMjY1NTMsMjY1NzQsMjY1NjYsMjY1OTksMjcyOTIsMjY2NTQsMjY2OTQsMjY2NjUsMjY2ODgsMjY3MDEsMjY2NzQsMjY3MDIsMjY4MDMsMjY2NjcsMjY3MTMsMjY3MjMsMjY3NDMsMjY3NTEsMjY3ODMsMjY3NjcsMjY3OTcsMjY3NzIsMjY3ODEsMjY3NzksMjY3NTUsMjczMTAsMjY4MDksMjY3NDAsMjY4MDUsMjY3ODQsMjY4MTAsMjY4OTUsMjY3NjUsMjY3NTAsMjY4ODEsMjY4MjYsMjY4ODgsMjY4NDAsMjY5MTQsMjY5MTgsMjY4NDksMjY4OTIsMjY4MjksMjY4MzYsMjY4NTUsMjY4MzcsMjY5MzQsMjY4OTgsMjY4ODQsMjY4MzksMjY4NTEsMjY5MTcsMjY4NzMsMjY4NDgsMjY4NjMsMjY5MjAsMjY5MjIsMjY5MDYsMjY5MTUsMjY5MTMsMjY4MjIsMjcwMDEsMjY5OTksMjY5NzIsMjcwMDAsMjY5ODcsMjY5NjQsMjcwMDYsMjY5OTAsMjY5MzcsMjY5OTYsMjY5NDEsMjY5NjksMjY5MjgsMjY5NzcsMjY5NzQsMjY5NzMsMjcwMDksMjY5ODYsMjcwNTgsMjcwNTQsMjcwODgsMjcwNzEsMjcwNzMsMjcwOTEsMjcwNzAsMjcwODYsMjM1MjgsMjcwODIsMjcxMDEsMjcwNjcsMjcwNzUsMjcwNDcsMjcxODIsMjcwMjUsMjcwNDAsMjcwMzYsMjcwMjksMjcwNjAsMjcxMDIsMjcxMTIsMjcxMzgsMjcxNjMsMjcxMzUsMjc0MDIsMjcxMjksMjcxMjIsMjcxMTEsMjcxNDEsMjcwNTcsMjcxNjYsMjcxMTcsMjcxNTYsMjcxMTUsMjcxNDYsMjcxNTQsMjczMjksMjcxNzEsMjcxNTUsMjcyMDQsMjcxNDgsMjcyNTAsMjcxOTAsMjcyNTYsMjcyMDcsMjcyMzQsMjcyMjUsMjcyMzgsMjcyMDgsMjcxOTIsMjcxNzAsMjcyODAsMjcyNzcsMjcyOTYsMjcyNjgsMjcyOTgsMjcyOTksMjcyODcsMzQzMjcsMjczMjMsMjczMzEsMjczMzAsMjczMjAsMjczMTUsMjczMDgsMjczNTgsMjczNDUsMjczNTksMjczMDYsMjczNTQsMjczNzAsMjczODcsMjczOTcsMzQzMjYsMjczODYsMjc0MTAsMjc0MTQsMzk3MjksMjc0MjMsMjc0NDgsMjc0NDcsMzA0MjgsMjc0NDksMzkxNTAsMjc0NjMsMjc0NTksMjc0NjUsMjc0NzIsMjc0ODEsMjc0NzYsMjc0ODMsMjc0ODcsMjc0ODksMjc1MTIsMjc1MTMsMjc1MTksMjc1MjAsMjc1MjQsMjc1MjMsMjc1MzMsMjc1NDQsMjc1NDEsMjc1NTAsMjc1NTYsMjc1NjIsMjc1NjMsMjc1NjcsMjc1NzAsMjc1NjksMjc1NzEsMjc1NzUsMjc1ODAsMjc1OTAsMjc1OTUsMjc2MDMsMjc2MTUsMjc2MjgsMjc2MjcsMjc2MzUsMjc2MzEsNDA2MzgsMjc2NTYsMjc2NjcsMjc2NjgsMjc2NzUsMjc2ODQsMjc2ODMsMjc3NDIsMjc3MzMsMjc3NDYsMjc3NTQsMjc3NzgsMjc3ODksMjc4MDIsMjc3NzcsMjc4MDMsMjc3NzQsMjc3NTIsMjc3NjMsMjc3OTQsMjc3OTIsMjc4NDQsMjc4ODksMjc4NTksMjc4MzcsMjc4NjMsMjc4NDUsMjc4NjksMjc4MjIsMjc4MjUsMjc4MzgsMjc4MzQsMjc4NjcsMjc4ODcsMjc4NjUsMjc4ODIsMjc5MzUsMzQ4OTMsMjc5NTgsMjc5NDcsMjc5NjUsMjc5NjAsMjc5MjksMjc5NTcsMjc5NTUsMjc5MjIsMjc5MTYsMjgwMDMsMjgwNTEsMjgwMDQsMjc5OTQsMjgwMjUsMjc5OTMsMjgwNDYsMjgwNTMsMjg2NDQsMjgwMzcsMjgxNTMsMjgxODEsMjgxNzAsMjgwODUsMjgxMDMsMjgxMzQsMjgwODgsMjgxMDIsMjgxNDAsMjgxMjYsMjgxMDgsMjgxMzYsMjgxMTQsMjgxMDEsMjgxNTQsMjgxMjEsMjgxMzIsMjgxMTcsMjgxMzgsMjgxNDIsMjgyMDUsMjgyNzAsMjgyMDYsMjgxODUsMjgyNzQsMjgyNTUsMjgyMjIsMjgxOTUsMjgyNjcsMjgyMDMsMjgyNzgsMjgyMzcsMjgxOTEsMjgyMjcsMjgyMTgsMjgyMzgsMjgxOTYsMjg0MTUsMjgxODksMjgyMTYsMjgyOTAsMjgzMzAsMjgzMTIsMjgzNjEsMjgzNDMsMjgzNzEsMjgzNDksMjgzMzUsMjgzNTYsMjgzMzgsMjgzNzIsMjgzNzMsMjgzMDMsMjgzMjUsMjgzNTQsMjgzMTksMjg0ODEsMjg0MzMsMjg3NDgsMjgzOTYsMjg0MDgsMjg0MTQsMjg0NzksMjg0MDIsMjg0NjUsMjgzOTksMjg0NjYsMjgzNjQsMjg0NzgsMjg0MzUsMjg0MDcsMjg1NTAsMjg1MzgsMjg1MzYsMjg1NDUsMjg1NDQsMjg1MjcsMjg1MDcsMjg2NTksMjg1MjUsMjg1NDYsMjg1NDAsMjg1MDQsMjg1NTgsMjg1NjEsMjg2MTAsMjg1MTgsMjg1OTUsMjg1NzksMjg1NzcsMjg1ODAsMjg2MDEsMjg2MTQsMjg1ODYsMjg2MzksMjg2MjksMjg2NTIsMjg2MjgsMjg2MzIsMjg2NTcsMjg2NTQsMjg2MzUsMjg2ODEsMjg2ODMsMjg2NjYsMjg2ODksMjg2NzMsMjg2ODcsMjg2NzAsMjg2OTksMjg2OTgsMjg1MzIsMjg3MDEsMjg2OTYsMjg3MDMsMjg3MjAsMjg3MzQsMjg3MjIsMjg3NTMsMjg3NzEsMjg4MjUsMjg4MTgsMjg4NDcsMjg5MTMsMjg4NDQsMjg4NTYsMjg4NTEsMjg4NDYsMjg4OTUsMjg4NzUsMjg4OTMsMjg4ODksMjg5MzcsMjg5MjUsMjg5NTYsMjg5NTMsMjkwMjksMjkwMTMsMjkwNjQsMjkwMzAsMjkwMjYsMjkwMDQsMjkwMTQsMjkwMzYsMjkwNzEsMjkxNzksMjkwNjAsMjkwNzcsMjkwOTYsMjkxMDAsMjkxNDMsMjkxMTMsMjkxMTgsMjkxMzgsMjkxMjksMjkxNDAsMjkxMzQsMjkxNTIsMjkxNjQsMjkxNTksMjkxNzMsMjkxODAsMjkxNzcsMjkxODMsMjkxOTcsMjkyMDAsMjkyMTEsMjkyMjQsMjkyMjksMjkyMjgsMjkyMzIsMjkyMzQsMjkyNDMsMjkyNDQsMjkyNDcsMjkyNDgsMjkyNTQsMjkyNTksMjkyNzIsMjkzMDAsMjkzMTAsMjkzMTQsMjkzMTMsMjkzMTksMjkzMzAsMjkzMzQsMjkzNDYsMjkzNTEsMjkzNjksMjkzNjIsMjkzNzksMjkzODIsMjkzODAsMjkzOTAsMjkzOTQsMjk0MTAsMjk0MDgsMjk0MDksMjk0MzMsMjk0MzEsMjA0OTUsMjk0NjMsMjk0NTAsMjk0NjgsMjk0NjIsMjk0NjksMjk0OTIsMjk0ODcsMjk0ODEsMjk0NzcsMjk1MDIsMjk1MTgsMjk1MTksNDA2NjQsMjk1MjcsMjk1NDYsMjk1NDQsMjk1NTIsMjk1NjAsMjk1NTcsMjk1NjMsMjk1NjIsMjk2NDAsMjk2MTksMjk2NDYsMjk2MjcsMjk2MzIsMjk2NjksMjk2NzgsMjk2NjIsMjk4NTgsMjk3MDEsMjk4MDcsMjk3MzMsMjk2ODgsMjk3NDYsMjk3NTQsMjk3ODEsMjk3NTksMjk3OTEsMjk3ODUsMjk3NjEsMjk3ODgsMjk4MDEsMjk4MDgsMjk3OTUsMjk4MDIsMjk4MTQsMjk4MjIsMjk4MzUsMjk4NTQsMjk4NjMsMjk4OTgsMjk5MDMsMjk5MDgsMjk2ODEsMjk5MjAsMjk5MjMsMjk5MjcsMjk5MjksMjk5MzQsMjk5MzgsMjk5MzYsMjk5MzcsMjk5NDQsMjk5NDMsMjk5NTYsMjk5NTUsMjk5NTcsMjk5NjQsMjk5NjYsMjk5NjUsMjk5NzMsMjk5NzEsMjk5ODIsMjk5OTAsMjk5OTYsMzAwMTIsMzAwMjAsMzAwMjksMzAwMjYsMzAwMjUsMzAwNDMsMzAwMjIsMzAwNDIsMzAwNTcsMzAwNTIsMzAwNTUsMzAwNTksMzAwNjEsMzAwNzIsMzAwNzAsMzAwODYsMzAwODcsMzAwNjgsMzAwOTAsMzAwODksMzAwODIsMzAxMDAsMzAxMDYsMzAxMDksMzAxMTcsMzAxMTUsMzAxNDYsMzAxMzEsMzAxNDcsMzAxMzMsMzAxNDEsMzAxMzYsMzAxNDAsMzAxMjksMzAxNTcsMzAxNTQsMzAxNjIsMzAxNjksMzAxNzksMzAxNzQsMzAyMDYsMzAyMDcsMzAyMDQsMzAyMDksMzAxOTIsMzAyMDIsMzAxOTQsMzAxOTUsMzAyMTksMzAyMjEsMzAyMTcsMzAyMzksMzAyNDcsMzAyNDAsMzAyNDEsMzAyNDIsMzAyNDQsMzAyNjAsMzAyNTYsMzAyNjcsMzAyNzksMzAyODAsMzAyNzgsMzAzMDAsMzAyOTYsMzAzMDUsMzAzMDYsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTEsMzAzMTYsMzAzMjAsMzAzMjIsMzAzMjYsMzAzMjgsMzAzMzIsMzAzMzYsMzAzMzksMzAzNDQsMzAzNDcsMzAzNTAsMzAzNTgsMzAzNTUsMzAzNjEsMzAzNjIsMzAzODQsMzAzODgsMzAzOTIsMzAzOTMsMzAzOTQsMzA0MDIsMzA0MTMsMzA0MjIsMzA0MTgsMzA0MzAsMzA0MzMsMzA0MzcsMzA0MzksMzA0NDIsMzQzNTEsMzA0NTksMzA0NzIsMzA0NzEsMzA0NjgsMzA1MDUsMzA1MDAsMzA0OTQsMzA1MDEsMzA1MDIsMzA0OTEsMzA1MTksMzA1MjAsMzA1MzUsMzA1NTQsMzA1NjgsMzA1NzEsMzA1NTUsMzA1NjUsMzA1OTEsMzA1OTAsMzA1ODUsMzA2MDYsMzA2MDMsMzA2MDksMzA2MjQsMzA2MjIsMzA2NDAsMzA2NDYsMzA2NDksMzA2NTUsMzA2NTIsMzA2NTMsMzA2NTEsMzA2NjMsMzA2NjksMzA2NzksMzA2ODIsMzA2ODQsMzA2OTEsMzA3MDIsMzA3MTYsMzA3MzIsMzA3MzgsMzEwMTQsMzA3NTIsMzEwMTgsMzA3ODksMzA4NjIsMzA4MzYsMzA4NTQsMzA4NDQsMzA4NzQsMzA4NjAsMzA4ODMsMzA5MDEsMzA4OTAsMzA4OTUsMzA5MjksMzA5MTgsMzA5MjMsMzA5MzIsMzA5MTAsMzA5MDgsMzA5MTcsMzA5MjIsMzA5NTYsMzA5NTEsMzA5MzgsMzA5NzMsMzA5NjQsMzA5ODMsMzA5OTQsMzA5OTMsMzEwMDEsMzEwMjAsMzEwMTksMzEwNDAsMzEwNzIsMzEwNjMsMzEwNzEsMzEwNjYsMzEwNjEsMzEwNTksMzEwOTgsMzExMDMsMzExMTQsMzExMzMsMzExNDMsNDA3NzksMzExNDYsMzExNTAsMzExNTUsMzExNjEsMzExNjIsMzExNzcsMzExODksMzEyMDcsMzEyMTIsMzEyMDEsMzEyMDMsMzEyNDAsMzEyNDUsMzEyNTYsMzEyNTcsMzEyNjQsMzEyNjMsMzExMDQsMzEyODEsMzEyOTEsMzEyOTQsMzEyODcsMzEyOTksMzEzMTksMzEzMDUsMzEzMjksMzEzMzAsMzEzMzcsNDA4NjEsMzEzNDQsMzEzNTMsMzEzNTcsMzEzNjgsMzEzODMsMzEzODEsMzEzODQsMzEzODIsMzE0MDEsMzE0MzIsMzE0MDgsMzE0MTQsMzE0MjksMzE0MjgsMzE0MjMsMzY5OTUsMzE0MzEsMzE0MzQsMzE0MzcsMzE0MzksMzE0NDUsMzE0NDMsMzE0NDksMzE0NTAsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjIsMzE0NjksMzE0NzIsMzE0OTAsMzE1MDMsMzE0OTgsMzE0OTQsMzE1MzksMzE1MTIsMzE1MTMsMzE1MTgsMzE1NDEsMzE1MjgsMzE1NDIsMzE1NjgsMzE2MTAsMzE0OTIsMzE1NjUsMzE0OTksMzE1NjQsMzE1NTcsMzE2MDUsMzE1ODksMzE2MDQsMzE1OTEsMzE2MDAsMzE2MDEsMzE1OTYsMzE1OTgsMzE2NDUsMzE2NDAsMzE2NDcsMzE2MjksMzE2NDQsMzE2NDIsMzE2MjcsMzE2MzQsMzE2MzEsMzE1ODEsMzE2NDEsMzE2OTEsMzE2ODEsMzE2OTIsMzE2OTUsMzE2NjgsMzE2ODYsMzE3MDksMzE3MjEsMzE3NjEsMzE3NjQsMzE3MTgsMzE3MTcsMzE4NDAsMzE3NDQsMzE3NTEsMzE3NjMsMzE3MzEsMzE3MzUsMzE3NjcsMzE3NTcsMzE3MzQsMzE3NzksMzE3ODMsMzE3ODYsMzE3NzUsMzE3OTksMzE3ODcsMzE4MDUsMzE4MjAsMzE4MTEsMzE4MjgsMzE4MjMsMzE4MDgsMzE4MjQsMzE4MzIsMzE4MzksMzE4NDQsMzE4MzAsMzE4NDUsMzE4NTIsMzE4NjEsMzE4NzUsMzE4ODgsMzE5MDgsMzE5MTcsMzE5MDYsMzE5MTUsMzE5MDUsMzE5MTIsMzE5MjMsMzE5MjIsMzE5MjEsMzE5MTgsMzE5MjksMzE5MzMsMzE5MzYsMzE5NDEsMzE5MzgsMzE5NjAsMzE5NTQsMzE5NjQsMzE5NzAsMzk3MzksMzE5ODMsMzE5ODYsMzE5ODgsMzE5OTAsMzE5OTQsMzIwMDYsMzIwMDIsMzIwMjgsMzIwMjEsMzIwMTAsMzIwNjksMzIwNzUsMzIwNDYsMzIwNTAsMzIwNjMsMzIwNTMsMzIwNzAsMzIxMTUsMzIwODYsMzIwNzgsMzIxMTQsMzIxMDQsMzIxMTAsMzIwNzksMzIwOTksMzIxNDcsMzIxMzcsMzIwOTEsMzIxNDMsMzIxMjUsMzIxNTUsMzIxODYsMzIxNzQsMzIxNjMsMzIxODEsMzIxOTksMzIxODksMzIxNzEsMzIzMTcsMzIxNjIsMzIxNzUsMzIyMjAsMzIxODQsMzIxNTksMzIxNzYsMzIyMTYsMzIyMjEsMzIyMjgsMzIyMjIsMzIyNTEsMzIyNDIsMzIyMjUsMzIyNjEsMzIyNjYsMzIyOTEsMzIyODksMzIyNzQsMzIzMDUsMzIyODcsMzIyNjUsMzIyNjcsMzIyOTAsMzIzMjYsMzIzNTgsMzIzMTUsMzIzMDksMzIzMTMsMzIzMjMsMzIzMTEsMzIzMDYsMzIzMTQsMzIzNTksMzIzNDksMzIzNDIsMzIzNTAsMzIzNDUsMzIzNDYsMzIzNzcsMzIzNjIsMzIzNjEsMzIzODAsMzIzNzksMzIzODcsMzIyMTMsMzIzODEsMzY3ODIsMzIzODMsMzIzOTIsMzIzOTMsMzIzOTYsMzI0MDIsMzI0MDAsMzI0MDMsMzI0MDQsMzI0MDYsMzIzOTgsMzI0MTEsMzI0MTIsMzI1NjgsMzI1NzAsMzI1ODEsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTIsMzI1OTMsMzI1OTcsMzI1OTYsMzI2MDAsMzI2MDcsMzI2MDgsMzI2MTYsMzI2MTcsMzI2MTUsMzI2MzIsMzI2NDIsMzI2NDYsMzI2NDMsMzI2NDgsMzI2NDcsMzI2NTIsMzI2NjAsMzI2NzAsMzI2NjksMzI2NjYsMzI2NzUsMzI2ODcsMzI2OTAsMzI2OTcsMzI2ODYsMzI2OTQsMzI2OTYsMzU2OTcsMzI3MDksMzI3MTAsMzI3MTQsMzI3MjUsMzI3MjQsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTUsMzI3NjEsMzkxMzIsMzI3NzQsMzI3NzIsMzI3NzksMzI3ODYsMzI3OTIsMzI3OTMsMzI3OTYsMzI4MDEsMzI4MDgsMzI4MzEsMzI4MjcsMzI4NDIsMzI4MzgsMzI4NTAsMzI4NTYsMzI4NTgsMzI4NjMsMzI4NjYsMzI4NzIsMzI4ODMsMzI4ODIsMzI4ODAsMzI4ODYsMzI4ODksMzI4OTMsMzI4OTUsMzI5MDAsMzI5MDIsMzI5MDEsMzI5MjMsMzI5MTUsMzI5MjIsMzI5NDEsMjA4ODAsMzI5NDAsMzI5ODcsMzI5OTcsMzI5ODUsMzI5ODksMzI5NjQsMzI5ODYsMzI5ODIsMzMwMzMsMzMwMDcsMzMwMDksMzMwNTEsMzMwNjUsMzMwNTksMzMwNzEsMzMwOTksMzg1MzksMzMwOTQsMzMwODYsMzMxMDcsMzMxMDUsMzMwMjAsMzMxMzcsMzMxMzQsMzMxMjUsMzMxMjYsMzMxNDAsMzMxNTUsMzMxNjAsMzMxNjIsMzMxNTIsMzMxNTQsMzMxODQsMzMxNzMsMzMxODgsMzMxODcsMzMxMTksMzMxNzEsMzMxOTMsMzMyMDAsMzMyMDUsMzMyMTQsMzMyMDgsMzMyMTMsMzMyMTYsMzMyMTgsMzMyMTAsMzMyMjUsMzMyMjksMzMyMzMsMzMyNDEsMzMyNDAsMzMyMjQsMzMyNDIsMzMyNDcsMzMyNDgsMzMyNTUsMzMyNzQsMzMyNzUsMzMyNzgsMzMyODEsMzMyODIsMzMyODUsMzMyODcsMzMyOTAsMzMyOTMsMzMyOTYsMzMzMDIsMzMzMjEsMzMzMjMsMzMzMzYsMzMzMzEsMzMzNDQsMzMzNjksMzMzNjgsMzMzNzMsMzMzNzAsMzMzNzUsMzMzODAsMzMzNzgsMzMzODQsMzMzODYsMzMzODcsMzMzMjYsMzMzOTMsMzMzOTksMzM0MDAsMzM0MDYsMzM0MjEsMzM0MjYsMzM0NTEsMzM0MzksMzM0NjcsMzM0NTIsMzM1MDUsMzM1MDcsMzM1MDMsMzM0OTAsMzM1MjQsMzM1MjMsMzM1MzAsMzM2ODMsMzM1MzksMzM1MzEsMzM1MjksMzM1MDIsMzM1NDIsMzM1MDAsMzM1NDUsMzM0OTcsMzM1ODksMzM1ODgsMzM1NTgsMzM1ODYsMzM1ODUsMzM2MDAsMzM1OTMsMzM2MTYsMzM2MDUsMzM1ODMsMzM1NzksMzM1NTksMzM1NjAsMzM2NjksMzM2OTAsMzM3MDYsMzM2OTUsMzM2OTgsMzM2ODYsMzM1NzEsMzM2NzgsMzM2NzEsMzM2NzQsMzM2NjAsMzM3MTcsMzM2NTEsMzM2NTMsMzM2OTYsMzM2NzMsMzM3MDQsMzM3ODAsMzM4MTEsMzM3NzEsMzM3NDIsMzM3ODksMzM3OTUsMzM3NTIsMzM4MDMsMzM3MjksMzM3ODMsMzM3OTksMzM3NjAsMzM3NzgsMzM4MDUsMzM4MjYsMzM4MjQsMzM3MjUsMzM4NDgsMzQwNTQsMzM3ODcsMzM5MDEsMzM4MzQsMzM4NTIsMzQxMzgsMzM5MjQsMzM5MTEsMzM4OTksMzM5NjUsMzM5MDIsMzM5MjIsMzM4OTcsMzM4NjIsMzM4MzYsMzM5MDMsMzM5MTMsMzM4NDUsMzM5OTQsMzM4OTAsMzM5NzcsMzM5ODMsMzM5NTEsMzQwMDksMzM5OTcsMzM5NzksMzQwMTAsMzQwMDAsMzM5ODUsMzM5OTAsMzQwMDYsMzM5NTMsMzQwODEsMzQwNDcsMzQwMzYsMzQwNzEsMzQwNzIsMzQwOTIsMzQwNzksMzQwNjksMzQwNjgsMzQwNDQsMzQxMTIsMzQxNDcsMzQxMzYsMzQxMjAsMzQxMTMsMzQzMDYsMzQxMjMsMzQxMzMsMzQxNzYsMzQyMTIsMzQxODQsMzQxOTMsMzQxODYsMzQyMTYsMzQxNTcsMzQxOTYsMzQyMDMsMzQyODIsMzQxODMsMzQyMDQsMzQxNjcsMzQxNzQsMzQxOTIsMzQyNDksMzQyMzQsMzQyNTUsMzQyMzMsMzQyNTYsMzQyNjEsMzQyNjksMzQyNzcsMzQyNjgsMzQyOTcsMzQzMTQsMzQzMjMsMzQzMTUsMzQzMDIsMzQyOTgsMzQzMTAsMzQzMzgsMzQzMzAsMzQzNTIsMzQzNjcsMzQzODEsMjAwNTMsMzQzODgsMzQzOTksMzQ0MDcsMzQ0MTcsMzQ0NTEsMzQ0NjcsMzQ0NzMsMzQ0NzQsMzQ0NDMsMzQ0NDQsMzQ0ODYsMzQ0NzksMzQ1MDAsMzQ1MDIsMzQ0ODAsMzQ1MDUsMzQ4NTEsMzQ0NzUsMzQ1MTYsMzQ1MjYsMzQ1MzcsMzQ1NDAsMzQ1MjcsMzQ1MjMsMzQ1NDMsMzQ1NzgsMzQ1NjYsMzQ1NjgsMzQ1NjAsMzQ1NjMsMzQ1NTUsMzQ1NzcsMzQ1NjksMzQ1NzMsMzQ1NTMsMzQ1NzAsMzQ2MTIsMzQ2MjMsMzQ2MTUsMzQ2MTksMzQ1OTcsMzQ2MDEsMzQ1ODYsMzQ2NTYsMzQ2NTUsMzQ2ODAsMzQ2MzYsMzQ2MzgsMzQ2NzYsMzQ2NDcsMzQ2NjQsMzQ2NzAsMzQ2NDksMzQ2NDMsMzQ2NTksMzQ2NjYsMzQ4MjEsMzQ3MjIsMzQ3MTksMzQ2OTAsMzQ3MzUsMzQ3NjMsMzQ3NDksMzQ3NTIsMzQ3NjgsMzg2MTQsMzQ3MzEsMzQ3NTYsMzQ3MzksMzQ3NTksMzQ3NTgsMzQ3NDcsMzQ3OTksMzQ4MDIsMzQ3ODQsMzQ4MzEsMzQ4MjksMzQ4MTQsMzQ4MDYsMzQ4MDcsMzQ4MzAsMzQ3NzAsMzQ4MzMsMzQ4MzgsMzQ4MzcsMzQ4NTAsMzQ4NDksMzQ4NjUsMzQ4NzAsMzQ4NzMsMzQ4NTUsMzQ4NzUsMzQ4ODQsMzQ4ODIsMzQ4OTgsMzQ5MDUsMzQ5MTAsMzQ5MTQsMzQ5MjMsMzQ5NDUsMzQ5NDIsMzQ5NzQsMzQ5MzMsMzQ5NDEsMzQ5OTcsMzQ5MzAsMzQ5NDYsMzQ5NjcsMzQ5NjIsMzQ5OTAsMzQ5NjksMzQ5NzgsMzQ5NTcsMzQ5ODAsMzQ5OTIsMzUwMDcsMzQ5OTMsMzUwMTEsMzUwMTIsMzUwMjgsMzUwMzIsMzUwMzMsMzUwMzcsMzUwNjUsMzUwNzQsMzUwNjgsMzUwNjAsMzUwNDgsMzUwNTgsMzUwNzYsMzUwODQsMzUwODIsMzUwOTEsMzUxMzksMzUxMDIsMzUxMDksMzUxMTQsMzUxMTUsMzUxMzcsMzUxNDAsMzUxMzEsMzUxMjYsMzUxMjgsMzUxNDgsMzUxMDEsMzUxNjgsMzUxNjYsMzUxNzQsMzUxNzIsMzUxODEsMzUxNzgsMzUxODMsMzUxODgsMzUxOTEsMzUxOTgsMzUyMDMsMzUyMDgsMzUyMTAsMzUyMTksMzUyMjQsMzUyMzMsMzUyNDEsMzUyMzgsMzUyNDQsMzUyNDcsMzUyNTAsMzUyNTgsMzUyNjEsMzUyNjMsMzUyNjQsMzUyOTAsMzUyOTIsMzUyOTMsMzUzMDMsMzUzMTYsMzUzMjAsMzUzMzEsMzUzNTAsMzUzNDQsMzUzNDAsMzUzNTUsMzUzNTcsMzUzNjUsMzUzODIsMzUzOTMsMzU0MTksMzU0MTAsMzUzOTgsMzU0MDAsMzU0NTIsMzU0MzcsMzU0MzYsMzU0MjYsMzU0NjEsMzU0NTgsMzU0NjAsMzU0OTYsMzU0ODksMzU0NzMsMzU0OTMsMzU0OTQsMzU0ODIsMzU0OTEsMzU1MjQsMzU1MzMsMzU1MjIsMzU1NDYsMzU1NjMsMzU1NzEsMzU1NTksMzU1NTYsMzU1NjksMzU2MDQsMzU1NTIsMzU1NTQsMzU1NzUsMzU1NTAsMzU1NDcsMzU1OTYsMzU1OTEsMzU2MTAsMzU1NTMsMzU2MDYsMzU2MDAsMzU2MDcsMzU2MTYsMzU2MzUsMzg4MjcsMzU2MjIsMzU2MjcsMzU2NDYsMzU2MjQsMzU2NDksMzU2NjAsMzU2NjMsMzU2NjIsMzU2NTcsMzU2NzAsMzU2NzUsMzU2NzQsMzU2OTEsMzU2NzksMzU2OTIsMzU2OTUsMzU3MDAsMzU3MDksMzU3MTIsMzU3MjQsMzU3MjYsMzU3MzAsMzU3MzEsMzU3MzQsMzU3MzcsMzU3MzgsMzU4OTgsMzU5MDUsMzU5MDMsMzU5MTIsMzU5MTYsMzU5MTgsMzU5MjAsMzU5MjUsMzU5MzgsMzU5NDgsMzU5NjAsMzU5NjIsMzU5NzAsMzU5NzcsMzU5NzMsMzU5NzgsMzU5ODEsMzU5ODIsMzU5ODgsMzU5NjQsMzU5OTIsMjUxMTcsMzYwMTMsMzYwMTAsMzYwMjksMzYwMTgsMzYwMTksMzYwMTQsMzYwMjIsMzYwNDAsMzYwMzMsMzYwNjgsMzYwNjcsMzYwNTgsMzYwOTMsMzYwOTAsMzYwOTEsMzYxMDAsMzYxMDEsMzYxMDYsMzYxMDMsMzYxMTEsMzYxMDksMzYxMTIsNDA3ODIsMzYxMTUsMzYwNDUsMzYxMTYsMzYxMTgsMzYxOTksMzYyMDUsMzYyMDksMzYyMTEsMzYyMjUsMzYyNDksMzYyOTAsMzYyODYsMzYyODIsMzYzMDMsMzYzMTQsMzYzMTAsMzYzMDAsMzYzMTUsMzYyOTksMzYzMzAsMzYzMzEsMzYzMTksMzYzMjMsMzYzNDgsMzYzNjAsMzYzNjEsMzYzNTEsMzYzODEsMzYzODIsMzYzNjgsMzYzODMsMzY0MTgsMzY0MDUsMzY0MDAsMzY0MDQsMzY0MjYsMzY0MjMsMzY0MjUsMzY0MjgsMzY0MzIsMzY0MjQsMzY0NDEsMzY0NTIsMzY0NDgsMzYzOTQsMzY0NTEsMzY0MzcsMzY0NzAsMzY0NjYsMzY0NzYsMzY0ODEsMzY0ODcsMzY0ODUsMzY0ODQsMzY0OTEsMzY0OTAsMzY0OTksMzY0OTcsMzY1MDAsMzY1MDUsMzY1MjIsMzY1MTMsMzY1MjQsMzY1MjgsMzY1NTAsMzY1MjksMzY1NDIsMzY1NDksMzY1NTIsMzY1NTUsMzY1NzEsMzY1NzksMzY2MDQsMzY2MDMsMzY1ODcsMzY2MDYsMzY2MTgsMzY2MTMsMzY2MjksMzY2MjYsMzY2MzMsMzY2MjcsMzY2MzYsMzY2MzksMzY2MzUsMzY2MjAsMzY2NDYsMzY2NTksMzY2NjcsMzY2NjUsMzY2NzcsMzY2NzQsMzY2NzAsMzY2ODQsMzY2ODEsMzY2NzgsMzY2ODYsMzY2OTUsMzY3MDAsMzY3MDYsMzY3MDcsMzY3MDgsMzY3NjQsMzY3NjcsMzY3NzEsMzY3ODEsMzY3ODMsMzY3OTEsMzY4MjYsMzY4MzcsMzY4MzQsMzY4NDIsMzY4NDcsMzY5OTksMzY4NTIsMzY4NjksMzY4NTcsMzY4NTgsMzY4ODEsMzY4ODUsMzY4OTcsMzY4NzcsMzY4OTQsMzY4ODYsMzY4NzUsMzY5MDMsMzY5MTgsMzY5MTcsMzY5MjEsMzY4NTYsMzY5NDMsMzY5NDQsMzY5NDUsMzY5NDYsMzY4NzgsMzY5MzcsMzY5MjYsMzY5NTAsMzY5NTIsMzY5NTgsMzY5NjgsMzY5NzUsMzY5ODIsMzg1NjgsMzY5NzgsMzY5OTQsMzY5ODksMzY5OTMsMzY5OTIsMzcwMDIsMzcwMDEsMzcwMDcsMzcwMzIsMzcwMzksMzcwNDEsMzcwNDUsMzcwOTAsMzcwOTIsMjUxNjAsMzcwODMsMzcxMjIsMzcxMzgsMzcxNDUsMzcxNzAsMzcxNjgsMzcxOTQsMzcyMDYsMzcyMDgsMzcyMTksMzcyMjEsMzcyMjUsMzcyMzUsMzcyMzQsMzcyNTksMzcyNTcsMzcyNTAsMzcyODIsMzcyOTEsMzcyOTUsMzcyOTAsMzczMDEsMzczMDAsMzczMDYsMzczMTIsMzczMTMsMzczMjEsMzczMjMsMzczMjgsMzczMzQsMzczNDMsMzczNDUsMzczMzksMzczNzIsMzczNjUsMzczNjYsMzc0MDYsMzczNzUsMzczOTYsMzc0MjAsMzczOTcsMzczOTMsMzc0NzAsMzc0NjMsMzc0NDUsMzc0NDksMzc0NzYsMzc0NDgsMzc1MjUsMzc0MzksMzc0NTEsMzc0NTYsMzc1MzIsMzc1MjYsMzc1MjMsMzc1MzEsMzc0NjYsMzc1ODMsMzc1NjEsMzc1NTksMzc2MDksMzc2NDcsMzc2MjYsMzc3MDAsMzc2NzgsMzc2NTcsMzc2NjYsMzc2NTgsMzc2NjcsMzc2OTAsMzc2ODUsMzc2OTEsMzc3MjQsMzc3MjgsMzc3NTYsMzc3NDIsMzc3MTgsMzc4MDgsMzc4MDQsMzc4MDUsMzc3ODAsMzc4MTcsMzc4NDYsMzc4NDcsMzc4NjQsMzc4NjEsMzc4NDgsMzc4MjcsMzc4NTMsMzc4NDAsMzc4MzIsMzc4NjAsMzc5MTQsMzc5MDgsMzc5MDcsMzc4OTEsMzc4OTUsMzc5MDQsMzc5NDIsMzc5MzEsMzc5NDEsMzc5MjEsMzc5NDYsMzc5NTMsMzc5NzAsMzc5NTYsMzc5NzksMzc5ODQsMzc5ODYsMzc5ODIsMzc5OTQsMzc0MTcsMzgwMDAsMzgwMDUsMzgwMDcsMzgwMTMsMzc5NzgsMzgwMTIsMzgwMTQsMzgwMTcsMzgwMTUsMzgyNzQsMzgyNzksMzgyODIsMzgyOTIsMzgyOTQsMzgyOTYsMzgyOTcsMzgzMDQsMzgzMTIsMzgzMTEsMzgzMTcsMzgzMzIsMzgzMzEsMzgzMjksMzgzMzQsMzgzNDYsMjg2NjIsMzgzMzksMzgzNDksMzgzNDgsMzgzNTcsMzgzNTYsMzgzNTgsMzgzNjQsMzgzNjksMzgzNzMsMzgzNzAsMzg0MzMsMzg0NDAsMzg0NDYsMzg0NDcsMzg0NjYsMzg0NzYsMzg0NzksMzg0NzUsMzg1MTksMzg0OTIsMzg0OTQsMzg0OTMsMzg0OTUsMzg1MDIsMzg1MTQsMzg1MDgsMzg1NDEsMzg1NTIsMzg1NDksMzg1NTEsMzg1NzAsMzg1NjcsMzg1NzcsMzg1NzgsMzg1NzYsMzg1ODAsMzg1ODIsMzg1ODQsMzg1ODUsMzg2MDYsMzg2MDMsMzg2MDEsMzg2MDUsMzUxNDksMzg2MjAsMzg2NjksMzg2MTMsMzg2NDksMzg2NjAsMzg2NjIsMzg2NjQsMzg2NzUsMzg2NzAsMzg2NzMsMzg2NzEsMzg2NzgsMzg2ODEsMzg2OTIsMzg2OTgsMzg3MDQsMzg3MTMsMzg3MTcsMzg3MTgsMzg3MjQsMzg3MjYsMzg3MjgsMzg3MjIsMzg3MjksMzg3NDgsMzg3NTIsMzg3NTYsMzg3NTgsMzg3NjAsMjEyMDIsMzg3NjMsMzg3NjksMzg3NzcsMzg3ODksMzg3ODAsMzg3ODUsMzg3NzgsMzg3OTAsMzg3OTUsMzg3OTksMzg4MDAsMzg4MTIsMzg4MjQsMzg4MjIsMzg4MTksMzg4MzUsMzg4MzYsMzg4NTEsMzg4NTQsMzg4NTYsMzg4NTksMzg4NzYsMzg4OTMsNDA3ODMsMzg4OTgsMzE0NTUsMzg5MDIsMzg5MDEsMzg5MjcsMzg5MjQsMzg5NjgsMzg5NDgsMzg5NDUsMzg5NjcsMzg5NzMsMzg5ODIsMzg5OTEsMzg5ODcsMzkwMTksMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjgsMzkwMjcsMzkwODIsMzkwODcsMzkwODksMzkwOTQsMzkxMDgsMzkxMDcsMzkxMTAsMzkxNDUsMzkxNDcsMzkxNzEsMzkxNzcsMzkxODYsMzkxODgsMzkxOTIsMzkyMDEsMzkxOTcsMzkxOTgsMzkyMDQsMzkyMDAsMzkyMTIsMzkyMTQsMzkyMjksMzkyMzAsMzkyMzQsMzkyNDEsMzkyMzcsMzkyNDgsMzkyNDMsMzkyNDksMzkyNTAsMzkyNDQsMzkyNTMsMzkzMTksMzkzMjAsMzkzMzMsMzkzNDEsMzkzNDIsMzkzNTYsMzkzOTEsMzkzODcsMzkzODksMzkzODQsMzkzNzcsMzk0MDUsMzk0MDYsMzk0MDksMzk0MTAsMzk0MTksMzk0MTYsMzk0MjUsMzk0MzksMzk0MjksMzkzOTQsMzk0NDksMzk0NjcsMzk0NzksMzk0OTMsMzk0OTAsMzk0ODgsMzk0OTEsMzk0ODYsMzk1MDksMzk1MDEsMzk1MTUsMzk1MTEsMzk1MTksMzk1MjIsMzk1MjUsMzk1MjQsMzk1MjksMzk1MzEsMzk1MzAsMzk1OTcsMzk2MDAsMzk2MTIsMzk2MTYsMzk2MzEsMzk2MzMsMzk2MzUsMzk2MzYsMzk2NDYsMzk2NDcsMzk2NTAsMzk2NTEsMzk2NTQsMzk2NjMsMzk2NTksMzk2NjIsMzk2NjgsMzk2NjUsMzk2NzEsMzk2NzUsMzk2ODYsMzk3MDQsMzk3MDYsMzk3MTEsMzk3MTQsMzk3MTUsMzk3MTcsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjYsMzk3MjcsMzk3MzAsMzk3NDgsMzk3NDcsMzk3NTksMzk3NTcsMzk3NTgsMzk3NjEsMzk3NjgsMzk3OTYsMzk4MjcsMzk4MTEsMzk4MjUsMzk4MzAsMzk4MzEsMzk4MzksMzk4NDAsMzk4NDgsMzk4NjAsMzk4NzIsMzk4ODIsMzk4NjUsMzk4NzgsMzk4ODcsMzk4ODksMzk4OTAsMzk5MDcsMzk5MDYsMzk5MDgsMzk4OTIsMzk5MDUsMzk5OTQsMzk5MjIsMzk5MjEsMzk5MjAsMzk5NTcsMzk5NTYsMzk5NDUsMzk5NTUsMzk5NDgsMzk5NDIsMzk5NDQsMzk5NTQsMzk5NDYsMzk5NDAsMzk5ODIsMzk5NjMsMzk5NzMsMzk5NzIsMzk5NjksMzk5ODQsNDAwMDcsMzk5ODYsNDAwMDYsMzk5OTgsNDAwMjYsNDAwMzIsNDAwMzksNDAwNTQsNDAwNTYsNDAxNjcsNDAxNzIsNDAxNzYsNDAyMDEsNDAyMDAsNDAxNzEsNDAxOTUsNDAxOTgsNDAyMzQsNDAyMzAsNDAzNjcsNDAyMjcsNDAyMjMsNDAyNjAsNDAyMTMsNDAyMTAsNDAyNTcsNDAyNTUsNDAyNTQsNDAyNjIsNDAyNjQsNDAyODUsNDAyODYsNDAyOTIsNDAyNzMsNDAyNzIsNDAyODEsNDAzMDYsNDAzMjksNDAzMjcsNDAzNjMsNDAzMDMsNDAzMTQsNDAzNDYsNDAzNTYsNDAzNjEsNDAzNzAsNDAzODgsNDAzODUsNDAzNzksNDAzNzYsNDAzNzgsNDAzOTAsNDAzOTksNDAzODYsNDA0MDksNDA0MDMsNDA0NDAsNDA0MjIsNDA0MjksNDA0MzEsNDA0NDUsNDA0NzQsNDA0NzUsNDA0NzgsNDA1NjUsNDA1NjksNDA1NzMsNDA1NzcsNDA1ODQsNDA1ODcsNDA1ODgsNDA1OTQsNDA1OTcsNDA1OTMsNDA2MDUsNDA2MTMsNDA2MTcsNDA2MzIsNDA2MTgsNDA2MjEsMzg3NTMsNDA2NTIsNDA2NTQsNDA2NTUsNDA2NTYsNDA2NjAsNDA2NjgsNDA2NzAsNDA2NjksNDA2NzIsNDA2NzcsNDA2ODAsNDA2ODcsNDA2OTIsNDA2OTQsNDA2OTUsNDA2OTcsNDA2OTksNDA3MDAsNDA3MDEsNDA3MTEsNDA3MTIsMzAzOTEsNDA3MjUsNDA3MzcsNDA3NDgsNDA3NjYsNDA3NzgsNDA3ODYsNDA3ODgsNDA4MDMsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDYsNDA4MDcsNDA4MTIsNDA4MTAsNDA4MjMsNDA4MTgsNDA4MjIsNDA4NTMsNDA4NjAsNDA4NjQsMjI1NzUsMjcwNzksMzY5NTMsMjk3OTYsMjA5NTYsMjkwODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLDY1NTA2LDY1NTA4LDY1Mjg3LDY1MjgyLDEyODQ5LDg0NzAsODQ4MSw4NzU3LDMyMzk0LDM1MTAwLDM3NzA0LDM3NTEyLDM0MDEyLDIwNDI1LDI4ODU5LDI2MTYxLDI2ODI0LDM3NjI1LDI2MzYzLDI0Mzg5LDIwMDA4LDIwMTkzLDIwMjIwLDIwMjI0LDIwMjI3LDIwMjgxLDIwMzEwLDIwMzcwLDIwMzYyLDIwMzc4LDIwMzcyLDIwNDI5LDIwNTQ0LDIwNTE0LDIwNDc5LDIwNTEwLDIwNTUwLDIwNTkyLDIwNTQ2LDIwNjI4LDIwNzI0LDIwNjk2LDIwODEwLDIwODM2LDIwODkzLDIwOTI2LDIwOTcyLDIxMDEzLDIxMTQ4LDIxMTU4LDIxMTg0LDIxMjExLDIxMjQ4LDIxMjU1LDIxMjg0LDIxMzYyLDIxMzk1LDIxNDI2LDIxNDY5LDY0MDE0LDIxNjYwLDIxNjQyLDIxNjczLDIxNzU5LDIxODk0LDIyMzYxLDIyMzczLDIyNDQ0LDIyNDcyLDIyNDcxLDY0MDE1LDY0MDE2LDIyNjg2LDIyNzA2LDIyNzk1LDIyODY3LDIyODc1LDIyODc3LDIyODgzLDIyOTQ4LDIyOTcwLDIzMzgyLDIzNDg4LDI5OTk5LDIzNTEyLDIzNTMyLDIzNTgyLDIzNzE4LDIzNzM4LDIzNzk3LDIzODQ3LDIzODkxLDY0MDE3LDIzODc0LDIzOTE3LDIzOTkyLDIzOTkzLDI0MDE2LDI0MzUzLDI0MzcyLDI0NDIzLDI0NTAzLDI0NTQyLDI0NjY5LDI0NzA5LDI0NzE0LDI0Nzk4LDI0Nzg5LDI0ODY0LDI0ODE4LDI0ODQ5LDI0ODg3LDI0ODgwLDI0OTg0LDI1MTA3LDI1MjU0LDI1NTg5LDI1Njk2LDI1NzU3LDI1ODA2LDI1OTM0LDI2MTEyLDI2MTMzLDI2MTcxLDI2MTIxLDI2MTU4LDI2MTQyLDI2MTQ4LDI2MjEzLDI2MTk5LDI2MjAxLDY0MDE4LDI2MjI3LDI2MjY1LDI2MjcyLDI2MjkwLDI2MzAzLDI2MzYyLDI2MzgyLDYzNzg1LDI2NDcwLDI2NTU1LDI2NzA2LDI2NTYwLDI2NjI1LDI2NjkyLDI2ODMxLDY0MDE5LDI2OTg0LDY0MDIwLDI3MDMyLDI3MTA2LDI3MTg0LDI3MjQzLDI3MjA2LDI3MjUxLDI3MjYyLDI3MzYyLDI3MzY0LDI3NjA2LDI3NzExLDI3NzQwLDI3NzgyLDI3NzU5LDI3ODY2LDI3OTA4LDI4MDM5LDI4MDE1LDI4MDU0LDI4MDc2LDI4MTExLDI4MTUyLDI4MTQ2LDI4MTU2LDI4MjE3LDI4MjUyLDI4MTk5LDI4MjIwLDI4MzUxLDI4NTUyLDI4NTk3LDI4NjYxLDI4Njc3LDI4Njc5LDI4NzEyLDI4ODA1LDI4ODQzLDI4OTQzLDI4OTMyLDI5MDIwLDI4OTk4LDI4OTk5LDY0MDIxLDI5MTIxLDI5MTgyLDI5MzYxLDI5Mzc0LDI5NDc2LDY0MDIyLDI5NTU5LDI5NjI5LDI5NjQxLDI5NjU0LDI5NjY3LDI5NjUwLDI5NzAzLDI5Njg1LDI5NzM0LDI5NzM4LDI5NzM3LDI5NzQyLDI5Nzk0LDI5ODMzLDI5ODU1LDI5OTUzLDMwMDYzLDMwMzM4LDMwMzY0LDMwMzY2LDMwMzYzLDMwMzc0LDY0MDIzLDMwNTM0LDIxMTY3LDMwNzUzLDMwNzk4LDMwODIwLDMwODQyLDMxMDI0LDY0MDI0LDY0MDI1LDY0MDI2LDMxMTI0LDY0MDI3LDMxMTMxLDMxNDQxLDMxNDYzLDY0MDI4LDMxNDY3LDMxNjQ2LDY0MDI5LDMyMDcyLDMyMDkyLDMyMTgzLDMyMTYwLDMyMjE0LDMyMzM4LDMyNTgzLDMyNjczLDY0MDMwLDMzNTM3LDMzNjM0LDMzNjYzLDMzNzM1LDMzNzgyLDMzODY0LDMzOTcyLDM0MTMxLDM0MTM3LDM0MTU1LDY0MDMxLDM0MjI0LDY0MDMyLDY0MDMzLDM0ODIzLDM1MDYxLDM1MzQ2LDM1MzgzLDM1NDQ5LDM1NDk1LDM1NTE4LDM1NTUxLDY0MDM0LDM1NTc0LDM1NjY3LDM1NzExLDM2MDgwLDM2MDg0LDM2MTE0LDM2MjE0LDY0MDM1LDM2NTU5LDY0MDM2LDY0MDM3LDM2OTY3LDM3MDg2LDY0MDM4LDM3MTQxLDM3MTU5LDM3MzM4LDM3MzM1LDM3MzQyLDM3MzU3LDM3MzU4LDM3MzQ4LDM3MzQ5LDM3MzgyLDM3MzkyLDM3Mzg2LDM3NDM0LDM3NDQwLDM3NDM2LDM3NDU0LDM3NDY1LDM3NDU3LDM3NDMzLDM3NDc5LDM3NTQzLDM3NDk1LDM3NDk2LDM3NjA3LDM3NTkxLDM3NTkzLDM3NTg0LDY0MDM5LDM3NTg5LDM3NjAwLDM3NTg3LDM3NjY5LDM3NjY1LDM3NjI3LDY0MDQwLDM3NjYyLDM3NjMxLDM3NjYxLDM3NjM0LDM3NzQ0LDM3NzE5LDM3Nzk2LDM3ODMwLDM3ODU0LDM3ODgwLDM3OTM3LDM3OTU3LDM3OTYwLDM4MjkwLDYzOTY0LDY0MDQxLDM4NTU3LDM4NTc1LDM4NzA3LDM4NzE1LDM4NzIzLDM4NzMzLDM4NzM1LDM4NzM3LDM4NzQxLDM4OTk5LDM5MDEzLDY0MDQyLDY0MDQzLDM5MjA3LDY0MDQ0LDM5MzI2LDM5NTAyLDM5NjQxLDM5NjQ0LDM5Nzk3LDM5Nzk0LDM5ODIzLDM5ODU3LDM5ODY3LDM5OTM2LDQwMzA0LDQwMjk5LDY0MDQ1LDQwNDczLDQwNjU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiamlzMDIxMlwiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw3MjgsNzExLDE4NCw3MjksNzMzLDE3NSw3MzEsNzMwLDY1Mzc0LDkwMCw5MDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MSwxNjYsMTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxODYsMTcwLDE2OSwxNzQsODQ4MiwxNjQsODQ3MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTAyLDkwNCw5MDUsOTA2LDkzOCxudWxsLDkwOCxudWxsLDkxMCw5MzksbnVsbCw5MTEsbnVsbCxudWxsLG51bGwsbnVsbCw5NDAsOTQxLDk0Miw5NDMsOTcwLDkxMiw5NzIsOTYyLDk3Myw5NzEsOTQ0LDk3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzgsMTAzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTgsMTExOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OCwyNzIsbnVsbCwyOTQsbnVsbCwzMDYsbnVsbCwzMjEsMzE5LG51bGwsMzMwLDIxNiwzMzgsbnVsbCwzNTgsMjIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMiwzMjAsMzI5LDMzMSwyNDgsMzM5LDIyMywzNTksMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTkzLDE5MiwxOTYsMTk0LDI1OCw0NjEsMjU2LDI2MCwxOTcsMTk1LDI2MiwyNjQsMjY4LDE5OSwyNjYsMjcwLDIwMSwyMDAsMjAzLDIwMiwyODIsMjc4LDI3NCwyODAsbnVsbCwyODQsMjg2LDI5MCwyODgsMjkyLDIwNSwyMDQsMjA3LDIwNiw0NjMsMzA0LDI5OCwzMDIsMjk2LDMwOCwzMTAsMzEzLDMxNywzMTUsMzIzLDMyNywzMjUsMjA5LDIxMSwyMTAsMjE0LDIxMiw0NjUsMzM2LDMzMiwyMTMsMzQwLDM0NCwzNDIsMzQ2LDM0OCwzNTIsMzUwLDM1NiwzNTQsMjE4LDIxNywyMjAsMjE5LDM2NCw0NjcsMzY4LDM2MiwzNzAsMzY2LDM2MCw0NzEsNDc1LDQ3Myw0NjksMzcyLDIyMSwzNzYsMzc0LDM3NywzODEsMzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjI1LDIyNCwyMjgsMjI2LDI1OSw0NjIsMjU3LDI2MSwyMjksMjI3LDI2MywyNjUsMjY5LDIzMSwyNjcsMjcxLDIzMywyMzIsMjM1LDIzNCwyODMsMjc5LDI3NSwyODEsNTAxLDI4NSwyODcsbnVsbCwyODksMjkzLDIzNywyMzYsMjM5LDIzOCw0NjQsbnVsbCwyOTksMzAzLDI5NywzMDksMzExLDMxNCwzMTgsMzE2LDMyNCwzMjgsMzI2LDI0MSwyNDMsMjQyLDI0NiwyNDQsNDY2LDMzNywzMzMsMjQ1LDM0MSwzNDUsMzQzLDM0NywzNDksMzUzLDM1MSwzNTcsMzU1LDI1MCwyNDksMjUyLDI1MSwzNjUsNDY4LDM2OSwzNjMsMzcxLDM2NywzNjEsNDcyLDQ3Niw0NzQsNDcwLDM3MywyNTMsMjU1LDM3NSwzNzgsMzgyLDM4MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk5NzAsMTk5NzIsMTk5NzMsMTk5ODAsMTk5ODYsMTk5OTksMjAwMDMsMjAwMDQsMjAwMDgsMjAwMTEsMjAwMTQsMjAwMTUsMjAwMTYsMjAwMjEsMjAwMzIsMjAwMzMsMjAwMzYsMjAwMzksMjAwNDksMjAwNTgsMjAwNjAsMjAwNjcsMjAwNzIsMjAwNzMsMjAwODQsMjAwODUsMjAwODksMjAwOTUsMjAxMDksMjAxMTgsMjAxMTksMjAxMjUsMjAxNDMsMjAxNTMsMjAxNjMsMjAxNzYsMjAxODYsMjAxODcsMjAxOTIsMjAxOTMsMjAxOTQsMjAyMDAsMjAyMDcsMjAyMDksMjAyMTEsMjAyMTMsMjAyMjEsMjAyMjIsMjAyMjMsMjAyMjQsMjAyMjYsMjAyMjcsMjAyMzIsMjAyMzUsMjAyMzYsMjAyNDIsMjAyNDUsMjAyNDYsMjAyNDcsMjAyNDksMjAyNzAsMjAyNzMsMjAzMjAsMjAyNzUsMjAyNzcsMjAyNzksMjAyODEsMjAyODMsMjAyODYsMjAyODgsMjAyOTAsMjAyOTYsMjAyOTcsMjAyOTksMjAzMDAsMjAzMDYsMjAzMDgsMjAzMTAsMjAzMTIsMjAzMTksMjAzMjMsMjAzMzAsMjAzMzIsMjAzMzQsMjAzMzcsMjAzNDMsMjAzNDQsMjAzNDUsMjAzNDYsMjAzNDksMjAzNTAsMjAzNTMsMjAzNTQsMjAzNTYsMjAzNTcsMjAzNjEsMjAzNjIsMjAzNjQsMjAzNjYsMjAzNjgsMjAzNzAsMjAzNzEsMjAzNzIsMjAzNzUsMjAzNzcsMjAzNzgsMjAzODIsMjAzODMsMjA0MDIsMjA0MDcsMjA0MDksMjA0MTEsMjA0MTIsMjA0MTMsMjA0MTQsMjA0MTYsMjA0MTcsMjA0MjEsMjA0MjIsMjA0MjQsMjA0MjUsMjA0MjcsMjA0MjgsMjA0MjksMjA0MzEsMjA0MzQsMjA0NDQsMjA0NDgsMjA0NTAsMjA0NjQsMjA0NjYsMjA0NzYsMjA0NzcsMjA0NzksMjA0ODAsMjA0ODEsMjA0ODQsMjA0ODcsMjA0OTAsMjA0OTIsMjA0OTQsMjA0OTYsMjA0OTksMjA1MDMsMjA1MDQsMjA1MDcsMjA1MDgsMjA1MDksMjA1MTAsMjA1MTQsMjA1MTksMjA1MjYsMjA1MjgsMjA1MzAsMjA1MzEsMjA1MzMsMjA1NDQsMjA1NDUsMjA1NDYsMjA1NDksMjA1NTAsMjA1NTQsMjA1NTYsMjA1NTgsMjA1NjEsMjA1NjIsMjA1NjMsMjA1NjcsMjA1NjksMjA1NzUsMjA1NzYsMjA1NzgsMjA1NzksMjA1ODIsMjA1ODMsMjA1ODYsMjA1ODksMjA1OTIsMjA1OTMsMjA1MzksMjA2MDksMjA2MTEsMjA2MTIsMjA2MTQsMjA2MTgsMjA2MjIsMjA2MjMsMjA2MjQsMjA2MjYsMjA2MjcsMjA2MjgsMjA2MzAsMjA2MzUsMjA2MzYsMjA2MzgsMjA2MzksMjA2NDAsMjA2NDEsMjA2NDIsMjA2NTAsMjA2NTUsMjA2NTYsMjA2NjUsMjA2NjYsMjA2NjksMjA2NzIsMjA2NzUsMjA2NzYsMjA2NzksMjA2ODQsMjA2ODYsMjA2ODgsMjA2OTEsMjA2OTIsMjA2OTYsMjA3MDAsMjA3MDEsMjA3MDMsMjA3MDYsMjA3MDgsMjA3MTAsMjA3MTIsMjA3MTMsMjA3MTksMjA3MjEsMjA3MjYsMjA3MzAsMjA3MzQsMjA3MzksMjA3NDIsMjA3NDMsMjA3NDQsMjA3NDcsMjA3NDgsMjA3NDksMjA3NTAsMjA3MjIsMjA3NTIsMjA3NTksMjA3NjEsMjA3NjMsMjA3NjQsMjA3NjUsMjA3NjYsMjA3NzEsMjA3NzUsMjA3NzYsMjA3ODAsMjA3ODEsMjA3ODMsMjA3ODUsMjA3ODcsMjA3ODgsMjA3ODksMjA3OTIsMjA3OTMsMjA4MDIsMjA4MTAsMjA4MTUsMjA4MTksMjA4MjEsMjA4MjMsMjA4MjQsMjA4MzEsMjA4MzYsMjA4MzgsMjA4NjIsMjA4NjcsMjA4NjgsMjA4NzUsMjA4NzgsMjA4ODgsMjA4OTMsMjA4OTcsMjA4OTksMjA5MDksMjA5MjAsMjA5MjIsMjA5MjQsMjA5MjYsMjA5MjcsMjA5MzAsMjA5MzYsMjA5NDMsMjA5NDUsMjA5NDYsMjA5NDcsMjA5NDksMjA5NTIsMjA5NTgsMjA5NjIsMjA5NjUsMjA5NzQsMjA5NzgsMjA5NzksMjA5ODAsMjA5ODMsMjA5OTMsMjA5OTQsMjA5OTcsMjEwMTAsMjEwMTEsMjEwMTMsMjEwMTQsMjEwMTYsMjEwMjYsMjEwMzIsMjEwNDEsMjEwNDIsMjEwNDUsMjEwNTIsMjEwNjEsMjEwNjUsMjEwNzcsMjEwNzksMjEwODAsMjEwODIsMjEwODQsMjEwODcsMjEwODgsMjEwODksMjEwOTQsMjExMDIsMjExMTEsMjExMTIsMjExMTMsMjExMjAsMjExMjIsMjExMjUsMjExMzAsMjExMzIsMjExMzksMjExNDEsMjExNDIsMjExNDMsMjExNDQsMjExNDYsMjExNDgsMjExNTYsMjExNTcsMjExNTgsMjExNTksMjExNjcsMjExNjgsMjExNzQsMjExNzUsMjExNzYsMjExNzgsMjExNzksMjExODEsMjExODQsMjExODgsMjExOTAsMjExOTIsMjExOTYsMjExOTksMjEyMDEsMjEyMDQsMjEyMDYsMjEyMTEsMjEyMTIsMjEyMTcsMjEyMjEsMjEyMjQsMjEyMjUsMjEyMjYsMjEyMjgsMjEyMzIsMjEyMzMsMjEyMzYsMjEyMzgsMjEyMzksMjEyNDgsMjEyNTEsMjEyNTgsMjEyNTksMjEyNjAsMjEyNjUsMjEyNjcsMjEyNzIsMjEyNzUsMjEyNzYsMjEyNzgsMjEyNzksMjEyODUsMjEyODcsMjEyODgsMjEyODksMjEyOTEsMjEyOTIsMjEyOTMsMjEyOTYsMjEyOTgsMjEzMDEsMjEzMDgsMjEzMDksMjEzMTAsMjEzMTQsMjEzMjQsMjEzMjMsMjEzMzcsMjEzMzksMjEzNDUsMjEzNDcsMjEzNDksMjEzNTYsMjEzNTcsMjEzNjIsMjEzNjksMjEzNzQsMjEzNzksMjEzODMsMjEzODQsMjEzOTAsMjEzOTUsMjEzOTYsMjE0MDEsMjE0MDUsMjE0MDksMjE0MTIsMjE0MTgsMjE0MTksMjE0MjMsMjE0MjYsMjE0MjgsMjE0MjksMjE0MzEsMjE0MzIsMjE0MzQsMjE0MzcsMjE0NDAsMjE0NDUsMjE0NTUsMjE0NTgsMjE0NTksMjE0NjEsMjE0NjYsMjE0NjksMjE0NzAsMjE0NzIsMjE0NzgsMjE0NzksMjE0OTMsMjE1MDYsMjE1MjMsMjE1MzAsMjE1MzcsMjE1NDMsMjE1NDQsMjE1NDYsMjE1NTEsMjE1NTMsMjE1NTYsMjE1NTcsMjE1NzEsMjE1NzIsMjE1NzUsMjE1ODEsMjE1ODMsMjE1OTgsMjE2MDIsMjE2MDQsMjE2MDYsMjE2MDcsMjE2MDksMjE2MTEsMjE2MTMsMjE2MTQsMjE2MjAsMjE2MzEsMjE2MzMsMjE2MzUsMjE2MzcsMjE2NDAsMjE2NDEsMjE2NDUsMjE2NDksMjE2NTMsMjE2NTQsMjE2NjAsMjE2NjMsMjE2NjUsMjE2NzAsMjE2NzEsMjE2NzMsMjE2NzQsMjE2NzcsMjE2NzgsMjE2ODEsMjE2ODcsMjE2ODksMjE2OTAsMjE2OTEsMjE2OTUsMjE3MDIsMjE3MDYsMjE3MDksMjE3MTAsMjE3MjgsMjE3MzgsMjE3NDAsMjE3NDMsMjE3NTAsMjE3NTYsMjE3NTgsMjE3NTksMjE3NjAsMjE3NjEsMjE3NjUsMjE3NjgsMjE3NjksMjE3NzIsMjE3NzMsMjE3NzQsMjE3ODEsMjE4MDIsMjE4MDMsMjE4MTAsMjE4MTMsMjE4MTQsMjE4MTksMjE4MjAsMjE4MjEsMjE4MjUsMjE4MzEsMjE4MzMsMjE4MzQsMjE4MzcsMjE4NDAsMjE4NDEsMjE4NDgsMjE4NTAsMjE4NTEsMjE4NTQsMjE4NTYsMjE4NTcsMjE4NjAsMjE4NjIsMjE4ODcsMjE4ODksMjE4OTAsMjE4OTQsMjE4OTYsMjE5MDIsMjE5MDMsMjE5MDUsMjE5MDYsMjE5MDcsMjE5MDgsMjE5MTEsMjE5MjMsMjE5MjQsMjE5MzMsMjE5MzgsMjE5NTEsMjE5NTMsMjE5NTUsMjE5NTgsMjE5NjEsMjE5NjMsMjE5NjQsMjE5NjYsMjE5NjksMjE5NzAsMjE5NzEsMjE5NzUsMjE5NzYsMjE5NzksMjE5ODIsMjE5ODYsMjE5OTMsMjIwMDYsMjIwMTUsMjIwMjEsMjIwMjQsMjIwMjYsMjIwMjksMjIwMzAsMjIwMzEsMjIwMzIsMjIwMzMsMjIwMzQsMjIwNDEsMjIwNjAsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzMsMjIwNzUsMjIwNzYsMjIwNzcsMjIwNzksMjIwODAsMjIwODEsMjIwODMsMjIwODQsMjIwODYsMjIwODksMjIwOTEsMjIwOTMsMjIwOTUsMjIxMDAsMjIxMTAsMjIxMTIsMjIxMTMsMjIxMTQsMjIxMTUsMjIxMTgsMjIxMjEsMjIxMjUsMjIxMjcsMjIxMjksMjIxMzAsMjIxMzMsMjIxNDgsMjIxNDksMjIxNTIsMjIxNTUsMjIxNTYsMjIxNjUsMjIxNjksMjIxNzAsMjIxNzMsMjIxNzQsMjIxNzUsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODcsMjIxODgsMjIxODksMjIxOTMsMjIxOTUsMjIxOTksMjIyMDYsMjIyMTMsMjIyMTcsMjIyMTgsMjIyMTksMjIyMjMsMjIyMjQsMjIyMjAsMjIyMjEsMjIyMzMsMjIyMzYsMjIyMzcsMjIyMzksMjIyNDEsMjIyNDQsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNTcsMjIyNTEsMjIyNTMsMjIyNjIsMjIyNjMsMjIyNzMsMjIyNzQsMjIyNzksMjIyODIsMjIyODQsMjIyODksMjIyOTMsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDQsMjIzMDYsMjIzMDcsMjIzMDgsMjIzMDksMjIzMTMsMjIzMTQsMjIzMTYsMjIzMTgsMjIzMTksMjIzMjMsMjIzMjQsMjIzMzMsMjIzMzQsMjIzMzUsMjIzNDEsMjIzNDIsMjIzNDgsMjIzNDksMjIzNTQsMjIzNzAsMjIzNzMsMjIzNzUsMjIzNzYsMjIzNzksMjIzODEsMjIzODIsMjIzODMsMjIzODQsMjIzODUsMjIzODcsMjIzODgsMjIzODksMjIzOTEsMjIzOTMsMjIzOTQsMjIzOTUsMjIzOTYsMjIzOTgsMjI0MDEsMjI0MDMsMjI0MTIsMjI0MjAsMjI0MjMsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzMsMjI0MjEsMjI0MzksMjI0NDAsMjI0NDEsMjI0NDQsMjI0NTYsMjI0NjEsMjI0NzEsMjI0NzIsMjI0NzYsMjI0NzksMjI0ODUsMjI0OTMsMjI0OTQsMjI1MDAsMjI1MDIsMjI1MDMsMjI1MDUsMjI1MDksMjI1MTIsMjI1MTcsMjI1MTgsMjI1MjAsMjI1MjUsMjI1MjYsMjI1MjcsMjI1MzEsMjI1MzIsMjI1MzYsMjI1MzcsMjI0OTcsMjI1NDAsMjI1NDEsMjI1NTUsMjI1NTgsMjI1NTksMjI1NjAsMjI1NjYsMjI1NjcsMjI1NzMsMjI1NzgsMjI1ODUsMjI1OTEsMjI2MDEsMjI2MDQsMjI2MDUsMjI2MDcsMjI2MDgsMjI2MTMsMjI2MjMsMjI2MjUsMjI2MjgsMjI2MzEsMjI2MzIsMjI2NDgsMjI2NTIsMjI2NTUsMjI2NTYsMjI2NTcsMjI2NjMsMjI2NjQsMjI2NjUsMjI2NjYsMjI2NjgsMjI2NjksMjI2NzEsMjI2NzIsMjI2NzYsMjI2NzgsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTQsMjI2OTcsMjI3MDUsMjI3MDYsMjI3MjQsMjI3MTYsMjI3MjIsMjI3MjgsMjI3MzMsMjI3MzQsMjI3MzYsMjI3MzgsMjI3NDAsMjI3NDIsMjI3NDYsMjI3NDksMjI3NTMsMjI3NTQsMjI3NjEsMjI3NzEsMjI3ODksMjI3OTAsMjI3OTUsMjI3OTYsMjI4MDIsMjI4MDMsMjI4MDQsMzQzNjksMjI4MTMsMjI4MTcsMjI4MTksMjI4MjAsMjI4MjQsMjI4MzEsMjI4MzIsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDcsMjI4NTEsMjI4NTQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4OTEsMjI4OTMsMjI4OTUsMjI4OTgsMjI5MDEsMjI5MDIsMjI5MDUsMjI5MDcsMjI5MDgsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MzAsMjI5MzMsMjI5MzUsMjI5NDMsMjI5NDgsMjI5NTEsMjI5NTcsMjI5NTgsMjI5NTksMjI5NjAsMjI5NjMsMjI5NjcsMjI5NzAsMjI5NzIsMjI5NzcsMjI5NzksMjI5ODAsMjI5ODQsMjI5ODYsMjI5ODksMjI5OTQsMjMwMDUsMjMwMDYsMjMwMDcsMjMwMTEsMjMwMTIsMjMwMTUsMjMwMjIsMjMwMjMsMjMwMjUsMjMwMjYsMjMwMjgsMjMwMzEsMjMwNDAsMjMwNDQsMjMwNTIsMjMwNTMsMjMwNTQsMjMwNTgsMjMwNTksMjMwNzAsMjMwNzUsMjMwNzYsMjMwNzksMjMwODAsMjMwODIsMjMwODUsMjMwODgsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTYsMjMxMjAsMjMxMjUsMjMxMzQsMjMxMzksMjMxNDEsMjMxNDMsMjMxNDksMjMxNTksMjMxNjIsMjMxNjMsMjMxNjYsMjMxNzksMjMxODQsMjMxODcsMjMxOTAsMjMxOTMsMjMxOTYsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDIsMjMyMDcsMjMyMTIsMjMyMTcsMjMyMTgsMjMyMTksMjMyMjEsMjMyMjQsMjMyMjYsMjMyMjcsMjMyMzEsMjMyMzYsMjMyMzgsMjMyNDAsMjMyNDcsMjMyNTgsMjMyNjAsMjMyNjQsMjMyNjksMjMyNzQsMjMyNzgsMjMyODUsMjMyODYsMjMyOTMsMjMyOTYsMjMyOTcsMjMzMDQsMjMzMTksMjMzNDgsMjMzMjEsMjMzMjMsMjMzMjUsMjMzMjksMjMzMzMsMjMzNDEsMjMzNTIsMjMzNjEsMjMzNzEsMjMzNzIsMjMzNzgsMjMzODIsMjMzOTAsMjM0MDAsMjM0MDYsMjM0MDcsMjM0MjAsMjM0MjEsMjM0MjIsMjM0MjMsMjM0MjUsMjM0MjgsMjM0MzAsMjM0MzQsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDMsMjM0NDQsMjM0NDYsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODQsMjM0ODgsMjM0ODksMjM1MDEsMjM1MDMsMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MjAsMjM1MzUsMjM1MzcsMjM1NDAsMjM1NDksMjM1NjQsMjM1NzUsMjM1ODIsMjM1ODMsMjM1ODcsMjM1OTAsMjM1OTMsMjM1OTUsMjM1OTYsMjM1OTgsMjM2MDAsMjM2MDIsMjM2MDUsMjM2MDYsMjM2NDEsMjM2NDIsMjM2NDQsMjM2NTAsMjM2NTEsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NjEsMjM2NjQsMjM2NjgsMjM2NjksMjM2NzQsMjM2NzUsMjM2NzYsMjM2NzcsMjM2ODcsMjM2ODgsMjM2OTAsMjM2OTUsMjM2OTgsMjM3MDksMjM3MTEsMjM3MTIsMjM3MTQsMjM3MTUsMjM3MTgsMjM3MjIsMjM3MzAsMjM3MzIsMjM3MzMsMjM3MzgsMjM3NTMsMjM3NTUsMjM3NjIsMjM3NzMsMjM3NjcsMjM3OTAsMjM3OTMsMjM3OTQsMjM3OTYsMjM4MDksMjM4MTQsMjM4MjEsMjM4MjYsMjM4NTEsMjM4NDMsMjM4NDQsMjM4NDYsMjM4NDcsMjM4NTcsMjM4NjAsMjM4NjUsMjM4NjksMjM4NzEsMjM4NzQsMjM4NzUsMjM4NzgsMjM4ODAsMjM4OTMsMjM4ODksMjM4OTcsMjM4ODIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDgsMjM5MTQsMjM5MTcsMjM5MjAsMjM5MjksMjM5MzAsMjM5MzQsMjM5MzUsMjM5MzcsMjM5MzksMjM5NDQsMjM5NDYsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NjEsMjM5NjMsMjM5NjcsMjM5NjgsMjM5NzUsMjM5NzksMjM5ODQsMjM5ODgsMjM5OTIsMjM5OTMsMjQwMDMsMjQwMDcsMjQwMTEsMjQwMTYsMjQwMTQsMjQwMjQsMjQwMjUsMjQwMzIsMjQwMzYsMjQwNDEsMjQwNTYsMjQwNTcsMjQwNjQsMjQwNzEsMjQwNzcsMjQwODIsMjQwODQsMjQwODUsMjQwODgsMjQwOTUsMjQwOTYsMjQxMTAsMjQxMDQsMjQxMTQsMjQxMTcsMjQxMjYsMjQxMzksMjQxNDQsMjQxMzcsMjQxNDUsMjQxNTAsMjQxNTIsMjQxNTUsMjQxNTYsMjQxNTgsMjQxNjgsMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzYsMjQxOTIsMjQyMDMsMjQyMDYsMjQyMjYsMjQyMjgsMjQyMjksMjQyMzIsMjQyMzQsMjQyMzYsMjQyNDEsMjQyNDMsMjQyNTMsMjQyNTQsMjQyNTUsMjQyNjIsMjQyNjgsMjQyNjcsMjQyNzAsMjQyNzMsMjQyNzQsMjQyNzYsMjQyNzcsMjQyODQsMjQyODYsMjQyOTMsMjQyOTksMjQzMjIsMjQzMjYsMjQzMjcsMjQzMjgsMjQzMzQsMjQzNDUsMjQzNDgsMjQzNDksMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzIsMjQzNzQsMjQzNzksMjQzODEsMjQzODMsMjQzODQsMjQzODgsMjQzODksMjQzOTEsMjQzOTcsMjQ0MDAsMjQ0MDQsMjQ0MDgsMjQ0MTEsMjQ0MTYsMjQ0MTksMjQ0MjAsMjQ0MjMsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NTcsMjQ0NjEsMjQ0NjMsMjQ0NzAsMjQ0NzYsMjQ0NzcsMjQ0ODIsMjQ0ODcsMjQ0OTEsMjQ0ODQsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ1MDQsMjQ1MTYsMjQ1MTksMjQ1MjAsMjQ1MjEsMjQ1MjMsMjQ1MjgsMjQ1MjksMjQ1MzAsMjQ1MzEsMjQ1MzIsMjQ1NDIsMjQ1NDUsMjQ1NDYsMjQ1NTIsMjQ1NTMsMjQ1NTQsMjQ1NTYsMjQ1NTcsMjQ1NTgsMjQ1NTksMjQ1NjIsMjQ1NjMsMjQ1NjYsMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODYsMjQ1ODksMjQ1OTUsMjQ1OTYsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDcsMjQ2MTIsMjQ2MjEsMjQ2MjcsMjQ2MjksMjQ2NDAsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTIsMjQ2NTcsMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjksMjQ2NzMsMjQ2NzksMjQ2ODksMjQ3MDIsMjQ3MDMsMjQ3MDYsMjQ3MTAsMjQ3MTIsMjQ3MTQsMjQ3MTgsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjgsMjQ3MzMsMjQ3MzQsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDQsMjQ3NTIsMjQ3NTMsMjQ3NTksMjQ3NjMsMjQ3NjYsMjQ3NzAsMjQ3NzIsMjQ3NzYsMjQ3NzcsMjQ3NzgsMjQ3NzksMjQ3ODIsMjQ3ODMsMjQ3ODgsMjQ3ODksMjQ3OTMsMjQ3OTUsMjQ3OTcsMjQ3OTgsMjQ4MDIsMjQ4MDUsMjQ4MTgsMjQ4MjEsMjQ4MjQsMjQ4MjgsMjQ4MjksMjQ4MzQsMjQ4MzksMjQ4NDIsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTcsMjQ4NjAsMjQ4NjIsMjQ4NjYsMjQ4NzQsMjQ4NzUsMjQ4ODAsMjQ4ODEsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODksMjQ4OTcsMjQ5MDEsMjQ5MDIsMjQ5MDUsMjQ5MjYsMjQ5MjgsMjQ5NDAsMjQ5NDYsMjQ5NTIsMjQ5NTUsMjQ5NTYsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjMsMjQ5NjQsMjQ5NzEsMjQ5NzMsMjQ5NzgsMjQ5NzksMjQ5ODMsMjQ5ODQsMjQ5ODgsMjQ5ODksMjQ5OTEsMjQ5OTIsMjQ5OTcsMjUwMDAsMjUwMDIsMjUwMDUsMjUwMTYsMjUwMTcsMjUwMjAsMjUwMjQsMjUwMjUsMjUwMjYsMjUwMzgsMjUwMzksMjUwNDUsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTcsMjUwNTgsMjUwNjMsMjUwNjUsMjUwNjEsMjUwNjgsMjUwNjksMjUwNzEsMjUwODksMjUwOTEsMjUwOTIsMjUwOTUsMjUxMDcsMjUxMDksMjUxMTYsMjUxMjAsMjUxMjIsMjUxMjMsMjUxMjcsMjUxMjksMjUxMzEsMjUxNDUsMjUxNDksMjUxNTQsMjUxNTUsMjUxNTYsMjUxNTgsMjUxNjQsMjUxNjgsMjUxNjksMjUxNzAsMjUxNzIsMjUxNzQsMjUxNzgsMjUxODAsMjUxODgsMjUxOTcsMjUxOTksMjUyMDMsMjUyMTAsMjUyMTMsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyNTQsMjUyNTYsMjUyNjcsMjUyNzAsMjUyNzEsMjUyNzQsMjUyNzgsMjUyNzksMjUyODQsMjUyOTQsMjUzMDEsMjUzMDIsMjUzMDYsMjUzMjIsMjUzMzAsMjUzMzIsMjUzNDAsMjUzNDEsMjUzNDcsMjUzNDgsMjUzNTQsMjUzNTUsMjUzNTcsMjUzNjAsMjUzNjMsMjUzNjYsMjUzNjgsMjUzODUsMjUzODYsMjUzODksMjUzOTcsMjUzOTgsMjU0MDEsMjU0MDQsMjU0MDksMjU0MTAsMjU0MTEsMjU0MTIsMjU0MTQsMjU0MTgsMjU0MTksMjU0MjIsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzIsMjU0MzUsMjU0NDUsMjU0NDYsMjU0NTIsMjU0NTMsMjU0NTcsMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjgsMjU0NjksMjU0NzEsMjU0NzQsMjU0NzYsMjU0NzksMjU0ODIsMjU0ODgsMjU0OTIsMjU0OTMsMjU0OTcsMjU0OTgsMjU1MDIsMjU1MDgsMjU1MTAsMjU1MTcsMjU1MTgsMjU1MTksMjU1MzMsMjU1MzcsMjU1NDEsMjU1NDQsMjU1NTAsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NjQsMjU1NjgsMjU1NzMsMjU1NzgsMjU1ODAsMjU1ODYsMjU1ODcsMjU1ODksMjU1OTIsMjU1OTMsMjU2MDksMjU2MTAsMjU2MTYsMjU2MTgsMjU2MjAsMjU2MjQsMjU2MzAsMjU2MzIsMjU2MzQsMjU2MzYsMjU2MzcsMjU2NDEsMjU2NDIsMjU2NDcsMjU2NDgsMjU2NTMsMjU2NjEsMjU2NjMsMjU2NzUsMjU2NzksMjU2ODEsMjU2ODIsMjU2ODMsMjU2ODQsMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTksMjU3MDksMjU3MTUsMjU3MTYsMjU3MjMsMjU3MjUsMjU3MzMsMjU3MzUsMjU3NDMsMjU3NDQsMjU3NDUsMjU3NTIsMjU3NTMsMjU3NTUsMjU3NTcsMjU3NTksMjU3NjEsMjU3NjMsMjU3NjYsMjU3NjgsMjU3NzIsMjU3NzksMjU3ODksMjU3OTAsMjU3OTEsMjU3OTYsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDYsMjU4MDgsMjU4MDksMjU4MTMsMjU4MTUsMjU4MjgsMjU4MjksMjU4MzMsMjU4MzQsMjU4MzcsMjU4NDAsMjU4NDUsMjU4NDcsMjU4NTEsMjU4NTUsMjU4NTcsMjU4NjAsMjU4NjQsMjU4NjUsMjU4NjYsMjU4NzEsMjU4NzUsMjU4NzYsMjU4NzgsMjU4ODEsMjU4ODMsMjU4ODYsMjU4ODcsMjU4OTAsMjU4OTQsMjU4OTcsMjU5MDIsMjU5MDUsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjMsMjU5MjcsMjU5MjksMjU5MzYsMjU5MzgsMjU5NDAsMjU5NTEsMjU5NTIsMjU5NTksMjU5NjMsMjU5NzgsMjU5ODEsMjU5ODUsMjU5ODksMjU5OTQsMjYwMDIsMjYwMDUsMjYwMDgsMjYwMTMsMjYwMTYsMjYwMTksMjYwMjIsMjYwMzAsMjYwMzQsMjYwMzUsMjYwMzYsMjYwNDcsMjYwNTAsMjYwNTYsMjYwNTcsMjYwNjIsMjYwNjQsMjYwNjgsMjYwNzAsMjYwNzIsMjYwNzksMjYwOTYsMjYwOTgsMjYxMDAsMjYxMDEsMjYxMDUsMjYxMTAsMjYxMTEsMjYxMTIsMjYxMTYsMjYxMjAsMjYxMjEsMjYxMjUsMjYxMjksMjYxMzAsMjYxMzMsMjYxMzQsMjYxNDEsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjEsMjYxNjMsMjYxNjksMjYxNjcsMjYxNzYsMjYxODEsMjYxODIsMjYxODYsMjYxODgsMjYxOTMsMjYxOTAsMjYxOTksMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDgsMjYyMDksMjYzNjMsMjYyMTgsMjYyMTksMjYyMjAsMjYyMzgsMjYyMjcsMjYyMjksMjYyMzksMjYyMzEsMjYyMzIsMjYyMzMsMjYyMzUsMjYyNDAsMjYyMzYsMjYyNTEsMjYyNTIsMjYyNTMsMjYyNTYsMjYyNTgsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzEsMjYyNzIsMjYyNzYsMjYyODUsMjYyODksMjYyOTAsMjYyOTMsMjYyOTksMjYzMDMsMjYzMDQsMjYzMDYsMjYzMDcsMjYzMTIsMjYzMTYsMjYzMTgsMjYzMTksMjYzMjQsMjYzMzEsMjYzMzUsMjYzNDQsMjYzNDcsMjYzNDgsMjYzNTAsMjYzNjIsMjYzNzMsMjYzNzUsMjYzODIsMjYzODcsMjYzOTMsMjYzOTYsMjY0MDAsMjY0MDIsMjY0MTksMjY0MzAsMjY0MzcsMjY0MzksMjY0NDAsMjY0NDQsMjY0NTIsMjY0NTMsMjY0NjEsMjY0NzAsMjY0NzYsMjY0NzgsMjY0ODQsMjY0ODYsMjY0OTEsMjY0OTcsMjY1MDAsMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTUsMjY1MTgsMjY1MjAsMjY1MjEsMjY1MjMsMjY1NDQsMjY1NDUsMjY1NDYsMjY1NDksMjY1NTUsMjY1NTYsMjY1NTcsMjY2MTcsMjY1NjAsMjY1NjIsMjY1NjMsMjY1NjUsMjY1NjgsMjY1NjksMjY1NzgsMjY1ODMsMjY1ODUsMjY1ODgsMjY1OTMsMjY1OTgsMjY2MDgsMjY2MTAsMjY2MTQsMjY2MTUsMjY3MDYsMjY2NDQsMjY2NDksMjY2NTMsMjY2NTUsMjY2NjQsMjY2NjMsMjY2NjgsMjY2NjksMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzUsMjY2ODMsMjY2ODcsMjY2OTIsMjY2OTMsMjY2OTgsMjY3MDAsMjY3MDksMjY3MTEsMjY3MTIsMjY3MTUsMjY3MzEsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3NDEsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NTQsMjY3NTYsMjY3NTgsMjY3NjAsMjY3NzQsMjY3NzYsMjY3NzgsMjY3ODAsMjY3ODUsMjY3ODcsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTgsMjY4MDIsMjY4MTEsMjY4MjEsMjY4MjQsMjY4MjgsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzgsMjY4NDEsMjY4NDQsMjY4NDUsMjY4NTMsMjY4NTYsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjQsMjY4NjUsMjY4NjksMjY4NzAsMjY4NzUsMjY4NzYsMjY4NzcsMjY4ODYsMjY4ODksMjY4OTAsMjY4OTYsMjY4OTcsMjY4OTksMjY5MDIsMjY5MDMsMjY5MjksMjY5MzEsMjY5MzMsMjY5MzYsMjY5MzksMjY5NDYsMjY5NDksMjY5NTMsMjY5NTgsMjY5NjcsMjY5NzEsMjY5NzksMjY5ODAsMjY5ODEsMjY5ODIsMjY5ODQsMjY5ODUsMjY5ODgsMjY5OTIsMjY5OTMsMjY5OTQsMjcwMDIsMjcwMDMsMjcwMDcsMjcwMDgsMjcwMjEsMjcwMjYsMjcwMzAsMjcwMzIsMjcwNDEsMjcwNDUsMjcwNDYsMjcwNDgsMjcwNTEsMjcwNTMsMjcwNTUsMjcwNjMsMjcwNjQsMjcwNjYsMjcwNjgsMjcwNzcsMjcwODAsMjcwODksMjcwOTQsMjcwOTUsMjcxMDYsMjcxMDksMjcxMTgsMjcxMTksMjcxMjEsMjcxMjMsMjcxMjUsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzksMjcxNTEsMjcxNTMsMjcxNTcsMjcxNjIsMjcxNjUsMjcxNjgsMjcxNzIsMjcxNzYsMjcxODQsMjcxODYsMjcxODgsMjcxOTEsMjcxOTUsMjcxOTgsMjcxOTksMjcyMDUsMjcyMDYsMjcyMDksMjcyMTAsMjcyMTQsMjcyMTYsMjcyMTcsMjcyMTgsMjcyMjEsMjcyMjIsMjcyMjcsMjcyMzYsMjcyMzksMjcyNDIsMjcyNDksMjcyNTEsMjcyNjIsMjcyNjUsMjcyNjcsMjcyNzAsMjcyNzEsMjcyNzMsMjcyNzUsMjcyODEsMjcyOTEsMjcyOTMsMjcyOTQsMjcyOTUsMjczMDEsMjczMDcsMjczMTEsMjczMTIsMjczMTMsMjczMTYsMjczMjUsMjczMjYsMjczMjcsMjczMzQsMjczMzcsMjczMzYsMjczNDAsMjczNDQsMjczNDgsMjczNDksMjczNTAsMjczNTYsMjczNTcsMjczNjQsMjczNjcsMjczNzIsMjczNzYsMjczNzcsMjczNzgsMjczODgsMjczODksMjczOTQsMjczOTUsMjczOTgsMjczOTksMjc0MDEsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTUsMjc0MTksMjc0MjIsMjc0MjgsMjc0MzIsMjc0MzUsMjc0MzYsMjc0MzksMjc0NDUsMjc0NDYsMjc0NTEsMjc0NTUsMjc0NjIsMjc0NjYsMjc0NjksMjc0NzQsMjc0NzgsMjc0ODAsMjc0ODUsMjc0ODgsMjc0OTUsMjc0OTksMjc1MDIsMjc1MDQsMjc1MDksMjc1MTcsMjc1MTgsMjc1MjIsMjc1MjUsMjc1NDMsMjc1NDcsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NjAsMjc1NjEsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjgsMjc1NzYsMjc1NzcsMjc1ODEsMjc1ODIsMjc1ODcsMjc1ODgsMjc1OTMsMjc1OTYsMjc2MDYsMjc2MTAsMjc2MTcsMjc2MTksMjc2MjIsMjc2MjMsMjc2MzAsMjc2MzMsMjc2MzksMjc2NDEsMjc2NDcsMjc2NTAsMjc2NTIsMjc2NTMsMjc2NTcsMjc2NjEsMjc2NjIsMjc2NjQsMjc2NjYsMjc2NzMsMjc2NzksMjc2ODYsMjc2ODcsMjc2ODgsMjc2OTIsMjc2OTQsMjc2OTksMjc3MDEsMjc3MDIsMjc3MDYsMjc3MDcsMjc3MTEsMjc3MjIsMjc3MjMsMjc3MjUsMjc3MjcsMjc3MzAsMjc3MzIsMjc3MzcsMjc3MzksMjc3NDAsMjc3NTUsMjc3NTcsMjc3NTksMjc3NjQsMjc3NjYsMjc3NjgsMjc3NjksMjc3NzEsMjc3ODEsMjc3ODIsMjc3ODMsMjc3ODUsMjc3OTYsMjc3OTcsMjc3OTksMjc4MDAsMjc4MDQsMjc4MDcsMjc4MjQsMjc4MjYsMjc4MjgsMjc4NDIsMjc4NDYsMjc4NTMsMjc4NTUsMjc4NTYsMjc4NTcsMjc4NTgsMjc4NjAsMjc4NjIsMjc4NjYsMjc4NjgsMjc4NzIsMjc4NzksMjc4ODEsMjc4ODMsMjc4ODQsMjc4ODYsMjc4OTAsMjc4OTIsMjc5MDgsMjc5MTEsMjc5MTQsMjc5MTgsMjc5MTksMjc5MjEsMjc5MjMsMjc5MzAsMjc5NDIsMjc5NDMsMjc5NDQsMjc3NTEsMjc5NTAsMjc5NTEsMjc5NTMsMjc5NjEsMjc5NjQsMjc5NjcsMjc5OTEsMjc5OTgsMjc5OTksMjgwMDEsMjgwMDUsMjgwMDcsMjgwMTUsMjgwMTYsMjgwMjgsMjgwMzQsMjgwMzksMjgwNDksMjgwNTAsMjgwNTIsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNzQsMjgwNzYsMjgwODQsMjgwODcsMjgwODksMjgwOTMsMjgwOTUsMjgxMDAsMjgxMDQsMjgxMDYsMjgxMTAsMjgxMTEsMjgxMTgsMjgxMjMsMjgxMjUsMjgxMjcsMjgxMjgsMjgxMzAsMjgxMzMsMjgxMzcsMjgxNDMsMjgxNDQsMjgxNDgsMjgxNTAsMjgxNTYsMjgxNjAsMjgxNjQsMjgxOTAsMjgxOTQsMjgxOTksMjgyMTAsMjgyMTQsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjgsMjgyMjksMjgyMzIsMjgyMzMsMjgyMzUsMjgyMzksMjgyNDEsMjgyNDIsMjgyNDMsMjgyNDQsMjgyNDcsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTgsMjgyNTksMjgyNjQsMjgyNzUsMjgyODMsMjgyODUsMjgzMDEsMjgzMDcsMjgzMTMsMjgzMjAsMjgzMjcsMjgzMzMsMjgzMzQsMjgzMzcsMjgzMzksMjgzNDcsMjgzNTEsMjgzNTIsMjgzNTMsMjgzNTUsMjgzNTksMjgzNjAsMjgzNjIsMjgzNjUsMjgzNjYsMjgzNjcsMjgzOTUsMjgzOTcsMjgzOTgsMjg0MDksMjg0MTEsMjg0MTMsMjg0MjAsMjg0MjQsMjg0MjYsMjg0MjgsMjg0MjksMjg0MzgsMjg0NDAsMjg0NDIsMjg0NDMsMjg0NTQsMjg0NTcsMjg0NTgsMjg0NjMsMjg0NjQsMjg0NjcsMjg0NzAsMjg0NzUsMjg0NzYsMjg0NjEsMjg0OTUsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDksMjg1MTAsMjg1MTMsMjg1MTQsMjg1MjAsMjg1MjQsMjg1NDEsMjg1NDIsMjg1NDcsMjg1NTEsMjg1NTIsMjg1NTUsMjg1NTYsMjg1NTcsMjg1NjAsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjYsMjg1NzAsMjg1NzUsMjg1NzYsMjg1ODEsMjg1ODIsMjg1ODMsMjg1ODQsMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTcsMjg1OTgsMjg2MDQsMjg2MTMsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MzQsMjg2MzgsMjg2NDgsMjg2NDksMjg2NTYsMjg2NjEsMjg2NjUsMjg2NjgsMjg2NjksMjg2NzIsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODUsMjg2OTUsMjg3MDQsMjg3MDcsMjg3MTksMjg3MjQsMjg3MjcsMjg3MjksMjg3MzIsMjg3MzksMjg3NDAsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NTYsMjg3NTcsMjg3NjUsMjg3NjYsMjg3NTAsMjg3NzIsMjg3NzMsMjg3ODAsMjg3ODIsMjg3ODksMjg3OTAsMjg3OTgsMjg4MDEsMjg4MDUsMjg4MDYsMjg4MjAsMjg4MjEsMjg4MjIsMjg4MjMsMjg4MjQsMjg4MjcsMjg4MzYsMjg4NDMsMjg4NDgsMjg4NDksMjg4NTIsMjg4NTUsMjg4NzQsMjg4ODEsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODgsMjg4OTIsMjg5MDAsMjg5MjIsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzksMjg5NDAsMjg5NDMsMjg5NTgsMjg5NjAsMjg5NzEsMjg5NzMsMjg5NzUsMjg5NzYsMjg5NzcsMjg5ODQsMjg5OTMsMjg5OTcsMjg5OTgsMjg5OTksMjkwMDIsMjkwMDMsMjkwMDgsMjkwMTAsMjkwMTUsMjkwMTgsMjkwMjAsMjkwMjIsMjkwMjQsMjkwMzIsMjkwNDksMjkwNTYsMjkwNjEsMjkwNjMsMjkwNjgsMjkwNzQsMjkwODIsMjkwODMsMjkwODgsMjkwOTAsMjkxMDMsMjkxMDQsMjkxMDYsMjkxMDcsMjkxMTQsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjQsMjkxMzEsMjkxMzIsMjkxMzksMjkxNDIsMjkxNDUsMjkxNDYsMjkxNDgsMjkxNzYsMjkxODIsMjkxODQsMjkxOTEsMjkxOTIsMjkxOTMsMjkyMDMsMjkyMDcsMjkyMTAsMjkyMTMsMjkyMTUsMjkyMjAsMjkyMjcsMjkyMzEsMjkyMzYsMjkyNDAsMjkyNDEsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTMsMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjcsMjkyNjksMjkyNzAsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODgsMjkyOTEsMjkyOTQsMjkyOTUsMjkyOTcsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMTEsMjkzMTYsMjkzMjEsMjkzMjUsMjkzMjYsMjkzMzEsMjkzMzksMjkzNTIsMjkzNTcsMjkzNTgsMjkzNjEsMjkzNjQsMjkzNzQsMjkzNzcsMjkzODMsMjkzODUsMjkzODgsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDcsMjk0MTMsMjk0MjcsMjk0MjgsMjk0MzQsMjk0MzUsMjk0MzgsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDcsMjk0NTEsMjk0NTMsMjk0NTgsMjk0NTksMjk0NjQsMjk0NjUsMjk0NzAsMjk0NzQsMjk0NzYsMjk0NzksMjk0ODAsMjk0ODQsMjk0ODksMjk0OTAsMjk0OTMsMjk0OTgsMjk0OTksMjk1MDEsMjk1MDcsMjk1MTcsMjk1MjAsMjk1MjIsMjk1MjYsMjk1MjgsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzYsMjk1NDIsMjk1NDMsMjk1NDUsMjk1NDcsMjk1NDgsMjk1NTAsMjk1NTEsMjk1NTMsMjk1NTksMjk1NjEsMjk1NjQsMjk1NjgsMjk1NjksMjk1NzEsMjk1NzMsMjk1NzQsMjk1ODIsMjk1ODQsMjk1ODcsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTYsMjk1OTgsMjk1OTksMjk2MDAsMjk2MDIsMjk2MDUsMjk2MDYsMjk2MTAsMjk2MTEsMjk2MTMsMjk2MjEsMjk2MjMsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzEsMjk2MzcsMjk2MzgsMjk2NDEsMjk2NDMsMjk2NDQsMjk2NDcsMjk2NTAsMjk2NTEsMjk2NTQsMjk2NTcsMjk2NjEsMjk2NjUsMjk2NjcsMjk2NzAsMjk2NzEsMjk2NzMsMjk2ODQsMjk2ODUsMjk2ODcsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTMsMjk2OTUsMjk2OTYsMjk2OTcsMjk3MDAsMjk3MDMsMjk3MDYsMjk3MTMsMjk3MjIsMjk3MjMsMjk3MzIsMjk3MzQsMjk3MzYsMjk3MzcsMjk3MzgsMjk3MzksMjk3NDAsMjk3NDEsMjk3NDIsMjk3NDMsMjk3NDQsMjk3NDUsMjk3NTMsMjk3NjAsMjk3NjMsMjk3NjQsMjk3NjYsMjk3NjcsMjk3NzEsMjk3NzMsMjk3NzcsMjk3NzgsMjk3ODMsMjk3ODksMjk3OTQsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDMsMjk4MDUsMjk4MDYsMjk4MDksMjk4MTAsMjk4MjQsMjk4MjUsMjk4MjksMjk4MzAsMjk4MzEsMjk4MzMsMjk4MzksMjk4NDAsMjk4NDEsMjk4NDIsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTIsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTksMjk4NjIsMjk4NjQsMjk4NjUsMjk4NjYsMjk4NjcsMjk4NzAsMjk4NzEsMjk4NzMsMjk4NzQsMjk4NzcsMjk4ODEsMjk4ODMsMjk4ODcsMjk4OTYsMjk4OTcsMjk5MDAsMjk5MDQsMjk5MDcsMjk5MTIsMjk5MTQsMjk5MTUsMjk5MTgsMjk5MTksMjk5MjQsMjk5MjgsMjk5MzAsMjk5MzEsMjk5MzUsMjk5NDAsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NTEsMjk5NTgsMjk5NzAsMjk5NzQsMjk5NzUsMjk5ODQsMjk5ODUsMjk5ODgsMjk5OTEsMjk5OTMsMjk5OTQsMjk5OTksMzAwMDYsMzAwMDksMzAwMTMsMzAwMTQsMzAwMTUsMzAwMTYsMzAwMTksMzAwMjMsMzAwMjQsMzAwMzAsMzAwMzIsMzAwMzQsMzAwMzksMzAwNDYsMzAwNDcsMzAwNDksMzAwNjMsMzAwNjUsMzAwNzMsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODEsMzAwODUsMzAwOTYsMzAwOTgsMzAwOTksMzAxMDEsMzAxMDUsMzAxMDgsMzAxMTQsMzAxMTYsMzAxMzIsMzAxMzgsMzAxNDMsMzAxNDQsMzAxNDUsMzAxNDgsMzAxNTAsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjcsMzAxNzIsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODAsMzAxODMsMzAxODgsMzAxOTAsMzAxOTEsMzAxOTMsMzAyMDEsMzAyMDgsMzAyMTAsMzAyMTEsMzAyMTIsMzAyMTUsMzAyMTYsMzAyMTgsMzAyMjAsMzAyMjMsMzAyMjYsMzAyMjcsMzAyMjksMzAyMzAsMzAyMzMsMzAyMzUsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDMsMzAyNDUsMzAyNDYsMzAyNDksMzAyNTMsMzAyNTgsMzAyNTksMzAyNjEsMzAyNjQsMzAyNjUsMzAyNjYsMzAyNjgsMzAyODIsMzAyNzIsMzAyNzMsMzAyNzUsMzAyNzYsMzAyNzcsMzAyODEsMzAyODMsMzAyOTMsMzAyOTcsMzAzMDMsMzAzMDgsMzAzMDksMzAzMTcsMzAzMTgsMzAzMTksMzAzMjEsMzAzMjQsMzAzMzcsMzAzNDEsMzAzNDgsMzAzNDksMzAzNTcsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjcsMzAzNjgsMzAzNzAsMzAzNzEsMzAzNzIsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzgsMzAzODEsMzAzOTcsMzA0MDEsMzA0MDUsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTQsMzA0MjAsMzA0MjUsMzA0MzIsMzA0MzgsMzA0NDAsMzA0NDQsMzA0NDgsMzA0NDksMzA0NTQsMzA0NTcsMzA0NjAsMzA0NjQsMzA0NzAsMzA0NzQsMzA0NzgsMzA0ODIsMzA0ODQsMzA0ODUsMzA0ODcsMzA0ODksMzA0OTAsMzA0OTIsMzA0OTgsMzA1MDQsMzA1MDksMzA1MTAsMzA1MTEsMzA1MTYsMzA1MTcsMzA1MTgsMzA1MjEsMzA1MjUsMzA1MjYsMzA1MzAsMzA1MzMsMzA1MzQsMzA1MzgsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NTAsMzA1NTEsMzA1NTYsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjIsMzA1NjQsMzA1NjcsMzA1NzAsMzA1NzIsMzA1NzYsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODYsMzA1ODksMzA1OTIsMzA1OTYsMzA2MDQsMzA2MDUsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTgsMzA2MjMsMzA2MjYsMzA2MzEsMzA2MzQsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDUsMzA2NTQsMzA2NTksMzA2NjUsMzA2NzMsMzA2NzQsMzA2NzcsMzA2ODEsMzA2ODYsMzA2ODcsMzA2ODgsMzA2OTIsMzA2OTQsMzA2OTgsMzA3MDAsMzA3MDQsMzA3MDUsMzA3MDgsMzA3MTIsMzA3MTUsMzA3MjUsMzA3MjYsMzA3MjksMzA3MzMsMzA3MzQsMzA3MzcsMzA3NDksMzA3NTMsMzA3NTQsMzA3NTUsMzA3NjUsMzA3NjYsMzA3NjgsMzA3NzMsMzA3NzUsMzA3ODcsMzA3ODgsMzA3OTEsMzA3OTIsMzA3OTYsMzA3OTgsMzA4MDIsMzA4MTIsMzA4MTQsMzA4MTYsMzA4MTcsMzA4MTksMzA4MjAsMzA4MjQsMzA4MjYsMzA4MzAsMzA4NDIsMzA4NDYsMzA4NTgsMzA4NjMsMzA4NjgsMzA4NzIsMzA4ODEsMzA4NzcsMzA4NzgsMzA4NzksMzA4ODQsMzA4ODgsMzA4OTIsMzA4OTMsMzA4OTYsMzA4OTcsMzA4OTgsMzA4OTksMzA5MDcsMzA5MDksMzA5MTEsMzA5MTksMzA5MjAsMzA5MjEsMzA5MjQsMzA5MjYsMzA5MzAsMzA5MzEsMzA5MzMsMzA5MzQsMzA5NDgsMzA5MzksMzA5NDMsMzA5NDQsMzA5NDUsMzA5NTAsMzA5NTQsMzA5NjIsMzA5NjMsMzA5NzYsMzA5NjYsMzA5NjcsMzA5NzAsMzA5NzEsMzA5NzUsMzA5ODIsMzA5ODgsMzA5OTIsMzEwMDIsMzEwMDQsMzEwMDYsMzEwMDcsMzEwMDgsMzEwMTMsMzEwMTUsMzEwMTcsMzEwMjEsMzEwMjUsMzEwMjgsMzEwMjksMzEwMzUsMzEwMzcsMzEwMzksMzEwNDQsMzEwNDUsMzEwNDYsMzEwNTAsMzEwNTEsMzEwNTUsMzEwNTcsMzEwNjAsMzEwNjQsMzEwNjcsMzEwNjgsMzEwNzksMzEwODEsMzEwODMsMzEwOTAsMzEwOTcsMzEwOTksMzExMDAsMzExMDIsMzExMTUsMzExMTYsMzExMjEsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjgsMzExMzEsMzExMzIsMzExMzcsMzExNDQsMzExNDUsMzExNDcsMzExNTEsMzExNTMsMzExNTYsMzExNjAsMzExNjMsMzExNzAsMzExNzIsMzExNzUsMzExNzYsMzExNzgsMzExODMsMzExODgsMzExOTAsMzExOTQsMzExOTcsMzExOTgsMzEyMDAsMzEyMDIsMzEyMDUsMzEyMTAsMzEyMTEsMzEyMTMsMzEyMTcsMzEyMjQsMzEyMjgsMzEyMzQsMzEyMzUsMzEyMzksMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDksMzEyNTMsMzEyNTksMzEyNjIsMzEyNjUsMzEyNzEsMzEyNzUsMzEyNzcsMzEyNzksMzEyODAsMzEyODQsMzEyODUsMzEyODgsMzEyODksMzEyOTAsMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDgsMzEzMTcsMzEzMTgsMzEzMjEsMzEzMjQsMzEzMjUsMzEzMjcsMzEzMjgsMzEzMzMsMzEzMzUsMzEzMzgsMzEzNDEsMzEzNDksMzEzNTIsMzEzNTgsMzEzNjAsMzEzNjIsMzEzNjUsMzEzNjYsMzEzNzAsMzEzNzEsMzEzNzYsMzEzNzcsMzEzODAsMzEzOTAsMzEzOTIsMzEzOTUsMzE0MDQsMzE0MTEsMzE0MTMsMzE0MTcsMzE0MTksMzE0MjAsMzE0MzAsMzE0MzMsMzE0MzYsMzE0MzgsMzE0NDEsMzE0NTEsMzE0NjQsMzE0NjUsMzE0NjcsMzE0NjgsMzE0NzMsMzE0NzYsMzE0ODMsMzE0ODUsMzE0ODYsMzE0OTUsMzE1MDgsMzE1MTksMzE1MjMsMzE1MjcsMzE1MjksMzE1MzAsMzE1MzEsMzE1MzMsMzE1MzQsMzE1MzUsMzE1MzYsMzE1MzcsMzE1NDAsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTksMzE1NjYsMzE1NzMsMzE1ODQsMzE1ODgsMzE1OTAsMzE1OTMsMzE1OTQsMzE1OTcsMzE1OTksMzE2MDIsMzE2MDMsMzE2MDcsMzE2MjAsMzE2MjUsMzE2MzAsMzE2MzIsMzE2MzMsMzE2MzgsMzE2NDMsMzE2NDYsMzE2NDgsMzE2NTMsMzE2NjAsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjksMzE2NzAsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2ODIsMzE2ODUsMzE2ODgsMzE2OTAsMzE3MDAsMzE3MDIsMzE3MDMsMzE3MDUsMzE3MDYsMzE3MDcsMzE3MjAsMzE3MjIsMzE3MzAsMzE3MzIsMzE3MzMsMzE3MzYsMzE3MzcsMzE3MzgsMzE3NDAsMzE3NDIsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NTAsMzE3NTMsMzE3NTUsMzE3NTYsMzE3NTgsMzE3NTksMzE3NjksMzE3NzEsMzE3NzYsMzE3ODEsMzE3ODIsMzE3ODQsMzE3ODgsMzE3OTMsMzE3OTUsMzE3OTYsMzE3OTgsMzE4MDEsMzE4MDIsMzE4MTQsMzE4MTgsMzE4MjksMzE4MjUsMzE4MjYsMzE4MjcsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4NDEsMzE4NDMsMzE4NDcsMzE4NDksMzE4NTMsMzE4NTQsMzE4NTYsMzE4NTgsMzE4NjUsMzE4NjgsMzE4NjksMzE4NzgsMzE4NzksMzE4ODcsMzE4OTIsMzE5MDIsMzE5MDQsMzE5MTAsMzE5MjAsMzE5MjYsMzE5MjcsMzE5MzAsMzE5MzEsMzE5MzIsMzE5MzUsMzE5NDAsMzE5NDMsMzE5NDQsMzE5NDUsMzE5NDksMzE5NTEsMzE5NTUsMzE5NTYsMzE5NTcsMzE5NTksMzE5NjEsMzE5NjIsMzE5NjUsMzE5NzQsMzE5NzcsMzE5NzksMzE5ODksMzIwMDMsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTUsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjIsMzIwMjksMzIwMzAsMzIwMzUsMzIwMzgsMzIwNDIsMzIwNDUsMzIwNDksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjQsMzIwNjUsMzIwNzEsMzIwNzIsMzIwNzcsMzIwODEsMzIwODMsMzIwODcsMzIwODksMzIwOTAsMzIwOTIsMzIwOTMsMzIxMDEsMzIxMDMsMzIxMDYsMzIxMTIsMzIxMjAsMzIxMjIsMzIxMjMsMzIxMjcsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzMsMzIxMzQsMzIxMzYsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDUsMzIxNTAsMzIxNTEsMzIxNTcsMzIxNTgsMzIxNjYsMzIxNjcsMzIxNzAsMzIxNzksMzIxODIsMzIxODMsMzIxODUsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMTUsMzIyMTcsMzIyNTYsMzIyMjYsMzIyMjksMzIyMzAsMzIyMzQsMzIyMzUsMzIyMzcsMzIyNDEsMzIyNDUsMzIyNDYsMzIyNDksMzIyNTAsMzIyNjQsMzIyNzIsMzIyNzMsMzIyNzcsMzIyNzksMzIyODQsMzIyODUsMzIyODgsMzIyOTUsMzIyOTYsMzIzMDAsMzIzMDEsMzIzMDMsMzIzMDcsMzIzMTAsMzIzMTksMzIzMjQsMzIzMjUsMzIzMjcsMzIzMzQsMzIzMzYsMzIzMzgsMzIzNDQsMzIzNTEsMzIzNTMsMzIzNTQsMzIzNTcsMzIzNjMsMzIzNjYsMzIzNjcsMzIzNzEsMzIzNzYsMzIzODIsMzIzODUsMzIzOTAsMzIzOTEsMzIzOTQsMzIzOTcsMzI0MDEsMzI0MDUsMzI0MDgsMzI0MTAsMzI0MTMsMzI0MTQsMzI1NzIsMzI1NzEsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzksMzI1ODAsMzI1ODMsMzI1OTEsMzI1OTQsMzI1OTUsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDksMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MjEsMzI2MjUsMzI2MzcsMzI2MzgsMzI2MzksMzI2NDAsMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NjIsMzI2NjMsMzI2NjgsMzI2NzMsMzI2NzQsMzI2NzgsMzI2ODIsMzI2ODUsMzI2OTIsMzI3MDAsMzI3MDMsMzI3MDQsMzI3MDcsMzI3MTIsMzI3MTgsMzI3MTksMzI3MzEsMzI3MzUsMzI3MzksMzI3NDEsMzI3NDQsMzI3NDgsMzI3NTAsMzI3NTEsMzI3NTQsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzUsMzI3NzYsMzI3NzgsMzI3ODEsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3ODgsMzI3OTAsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDAsMzI4MDQsMzI4MDYsMzI4MTIsMzI4MTQsMzI4MTYsMzI4MjAsMzI4MjEsMzI4MjMsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzYsMzI4NjQsMzI4NjgsMzI4NzAsMzI4NzcsMzI4ODEsMzI4ODUsMzI4OTcsMzI5MDQsMzI5MTAsMzI5MjQsMzI5MjYsMzI5MzQsMzI5MzUsMzI5MzksMzI5NTIsMzI5NTMsMzI5NjgsMzI5NzMsMzI5NzUsMzI5NzgsMzI5ODAsMzI5ODEsMzI5ODMsMzI5ODQsMzI5OTIsMzMwMDUsMzMwMDYsMzMwMDgsMzMwMTAsMzMwMTEsMzMwMTQsMzMwMTcsMzMwMTgsMzMwMjIsMzMwMjcsMzMwMzUsMzMwNDYsMzMwNDcsMzMwNDgsMzMwNTIsMzMwNTQsMzMwNTYsMzMwNjAsMzMwNjMsMzMwNjgsMzMwNzIsMzMwNzcsMzMwODIsMzMwODQsMzMwOTMsMzMwOTUsMzMwOTgsMzMxMDAsMzMxMDYsMzMxMTEsMzMxMjAsMzMxMjEsMzMxMjcsMzMxMjgsMzMxMjksMzMxMzMsMzMxMzUsMzMxNDMsMzMxNTMsMzMxNjgsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNjMsMzMxNjYsMzMxNzQsMzMxNzYsMzMxNzksMzMxODIsMzMxODYsMzMxOTgsMzMyMDIsMzMyMDQsMzMyMTEsMzMyMjcsMzMyMTksMzMyMjEsMzMyMjYsMzMyMzAsMzMyMzEsMzMyMzcsMzMyMzksMzMyNDMsMzMyNDUsMzMyNDYsMzMyNDksMzMyNTIsMzMyNTksMzMyNjAsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzIsMzMyNzMsMzMyNzcsMzMyNzksMzMyODAsMzMyODMsMzMyOTUsMzMyOTksMzMzMDAsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTMsMzMzMTQsMzMzMjAsMzMzMzAsMzMzMzIsMzMzMzgsMzMzNDcsMzMzNDgsMzMzNDksMzMzNTAsMzMzNTUsMzMzNTgsMzMzNTksMzMzNjEsMzMzNjYsMzMzNzIsMzMzNzYsMzMzNzksMzMzODMsMzMzODksMzMzOTYsMzM0MDMsMzM0MDUsMzM0MDcsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTIsMzM0MTUsMzM0MTcsMzM0MTgsMzM0MjIsMzM0MjUsMzM0MjgsMzM0MzAsMzM0MzIsMzM0MzQsMzM0MzUsMzM0NDAsMzM0NDEsMzM0NDMsMzM0NDQsMzM0NDcsMzM0NDgsMzM0NDksMzM0NTAsMzM0NTQsMzM0NTYsMzM0NTgsMzM0NjAsMzM0NjMsMzM0NjYsMzM0NjgsMzM0NzAsMzM0NzEsMzM0NzgsMzM0ODgsMzM0OTMsMzM0OTgsMzM1MDQsMzM1MDYsMzM1MDgsMzM1MTIsMzM1MTQsMzM1MTcsMzM1MTksMzM1MjYsMzM1MjcsMzM1MzMsMzM1MzQsMzM1MzYsMzM1MzcsMzM1NDMsMzM1NDQsMzM1NDYsMzM1NDcsMzM2MjAsMzM1NjMsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjksMzM1NzAsMzM1ODAsMzM1ODEsMzM1ODIsMzM1ODQsMzM1ODcsMzM1OTEsMzM1OTQsMzM1OTYsMzM1OTcsMzM2MDIsMzM2MDMsMzM2MDQsMzM2MDcsMzM2MTMsMzM2MTQsMzM2MTcsMzM2MjEsMzM2MjIsMzM2MjMsMzM2NDgsMzM2NTYsMzM2NjEsMzM2NjMsMzM2NjQsMzM2NjYsMzM2NjgsMzM2NzAsMzM2NzcsMzM2ODIsMzM2ODQsMzM2ODUsMzM2ODgsMzM2ODksMzM2OTEsMzM2OTIsMzM2OTMsMzM3MDIsMzM3MDMsMzM3MDUsMzM3MDgsMzM3MjYsMzM3MjcsMzM3MjgsMzM3MzUsMzM3MzcsMzM3NDMsMzM3NDQsMzM3NDUsMzM3NDgsMzM3NTcsMzM2MTksMzM3NjgsMzM3NzAsMzM3ODIsMzM3ODQsMzM3ODUsMzM3ODgsMzM3OTMsMzM3OTgsMzM4MDIsMzM4MDcsMzM4MDksMzM4MTMsMzM4MTcsMzM3MDksMzM4MzksMzM4NDksMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjYsMzM4NjksMzM4NzEsMzM4NzMsMzM4NzQsMzM4NzgsMzM4ODAsMzM4ODEsMzM4ODIsMzM4ODQsMzM4ODgsMzM4OTIsMzM4OTMsMzM4OTUsMzM4OTgsMzM5MDQsMzM5MDcsMzM5MDgsMzM5MTAsMzM5MTIsMzM5MTYsMzM5MTcsMzM5MjEsMzM5MjUsMzM5MzgsMzM5MzksMzM5NDEsMzM5NTAsMzM5NTgsMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjcsMzM5NjksMzM5NzIsMzM5NzgsMzM5ODEsMzM5ODIsMzM5ODQsMzM5ODYsMzM5OTEsMzM5OTIsMzM5OTYsMzM5OTksMzQwMDMsMzQwMTIsMzQwMjMsMzQwMjYsMzQwMzEsMzQwMzIsMzQwMzMsMzQwMzQsMzQwMzksMzQwOTgsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNTAsMzQwNTEsMzQwNTUsMzQwNjAsMzQwNjIsMzQwNjQsMzQwNzYsMzQwNzgsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODcsMzQwOTAsMzQwOTEsMzQwOTUsMzQwOTksMzQxMDAsMzQxMDIsMzQxMTEsMzQxMTgsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzQsMzQxMzcsMzQxNDAsMzQxNDEsMzQxNDIsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDgsMzQxNTUsMzQxNTksMzQxNjksMzQxNzAsMzQxNzEsMzQxNzMsMzQxNzUsMzQxNzcsMzQxODEsMzQxODIsMzQxODUsMzQxODcsMzQxODgsMzQxOTEsMzQxOTUsMzQyMDAsMzQyMDUsMzQyMDcsMzQyMDgsMzQyMTAsMzQyMTMsMzQyMTUsMzQyMjgsMzQyMzAsMzQyMzEsMzQyMzIsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDIsMzQyNDcsMzQyNTAsMzQyNTEsMzQyNTQsMzQyMjEsMzQyNjQsMzQyNjYsMzQyNzEsMzQyNzIsMzQyNzgsMzQyODAsMzQyODUsMzQyOTEsMzQyOTQsMzQzMDAsMzQzMDMsMzQzMDQsMzQzMDgsMzQzMDksMzQzMTcsMzQzMTgsMzQzMjAsMzQzMjEsMzQzMjIsMzQzMjgsMzQzMjksMzQzMzEsMzQzMzQsMzQzMzcsMzQzNDMsMzQzNDUsMzQzNTgsMzQzNjAsMzQzNjIsMzQzNjQsMzQzNjUsMzQzNjgsMzQzNzAsMzQzNzQsMzQzODYsMzQzODcsMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTcsMzQ0MDAsMzQ0MDEsMzQ0MDIsMzQ0MDMsMzQ0MDQsMzQ0MDksMzQ0MTIsMzQ0MTUsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjYsMzQ0NDUsMzQ0NDksMzQ0NTQsMzQ0NTYsMzQ0NTgsMzQ0NjAsMzQ0NjUsMzQ0NzAsMzQ0NzEsMzQ0NzIsMzQ0NzcsMzQ0ODEsMzQ0ODMsMzQ0ODQsMzQ0ODUsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTUsMzQ0OTYsMzQ0OTcsMzQ0OTksMzQ1MDEsMzQ1MTMsMzQ1MTQsMzQ1MTcsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjgsMzQ1MzEsMzQ1MzMsMzQ1MzUsMzQ0NDAsMzQ1NTQsMzQ1NTYsMzQ1NTcsMzQ1NjQsMzQ1NjUsMzQ1NjcsMzQ1NzEsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzksMzQ1ODAsMzQ1ODUsMzQ1OTAsMzQ1OTEsMzQ1OTMsMzQ1OTUsMzQ2MDAsMzQ2MDYsMzQ2MDcsMzQ2MDksMzQ2MTAsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjIsMzQ2MjQsMzQ2MjcsMzQ2MjksMzQ2MzcsMzQ2NDgsMzQ2NTMsMzQ2NTcsMzQ2NjAsMzQ2NjEsMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2ODMsMzQ2OTEsMzQ2OTIsMzQ2OTMsMzQ2OTQsMzQ2OTUsMzQ2OTYsMzQ2OTcsMzQ2OTksMzQ3MDAsMzQ3MDQsMzQ3MDcsMzQ3MDksMzQ3MTEsMzQ3MTIsMzQ3MTMsMzQ3MTgsMzQ3MjAsMzQ3MjMsMzQ3MjcsMzQ3MzIsMzQ3MzMsMzQ3MzQsMzQ3MzcsMzQ3NDEsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NjAsMzQ3NjEsMzQ3NjIsMzQ3NjYsMzQ3NzMsMzQ3NzQsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODMsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTQsMzQ3OTUsMzQ3OTcsMzQ4MDEsMzQ4MDMsMzQ4MDgsMzQ4MTAsMzQ4MTUsMzQ4MTcsMzQ4MTksMzQ4MjIsMzQ4MjUsMzQ4MjYsMzQ4MjcsMzQ4MzIsMzQ4NDEsMzQ4MzQsMzQ4MzUsMzQ4MzYsMzQ4NDAsMzQ4NDIsMzQ4NDMsMzQ4NDQsMzQ4NDYsMzQ4NDcsMzQ4NTYsMzQ4NjEsMzQ4NjIsMzQ4NjQsMzQ4NjYsMzQ4NjksMzQ4NzQsMzQ4NzYsMzQ4ODEsMzQ4ODMsMzQ4ODUsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTcsMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDgsMzQ5MTEsMzQ5MTIsMzQ5MTYsMzQ5MjEsMzQ5MjksMzQ5MzcsMzQ5MzksMzQ5NDQsMzQ5NjgsMzQ5NzAsMzQ5NzEsMzQ5NzIsMzQ5NzUsMzQ5NzYsMzQ5ODQsMzQ5ODYsMzUwMDIsMzUwMDUsMzUwMDYsMzUwMDgsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjIsMzUwMjUsMzUwMjYsMzUwMjcsMzUwMzUsMzUwMzgsMzUwNDcsMzUwNTUsMzUwNTYsMzUwNTcsMzUwNjEsMzUwNjMsMzUwNzMsMzUwNzgsMzUwODUsMzUwODYsMzUwODcsMzUwOTMsMzUwOTQsMzUwOTYsMzUwOTcsMzUwOTgsMzUxMDAsMzUxMDQsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMjAsMzUxMjEsMzUxMjIsMzUxMjUsMzUxMjksMzUxMzAsMzUxMzQsMzUxMzYsMzUxMzgsMzUxNDEsMzUxNDIsMzUxNDUsMzUxNTEsMzUxNTQsMzUxNTksMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzksMzUxODIsMzUxODQsMzUxODcsMzUxODksMzUxOTQsMzUxOTUsMzUxOTYsMzUxOTcsMzUyMDksMzUyMTMsMzUyMTYsMzUyMjAsMzUyMjEsMzUyMjcsMzUyMjgsMzUyMzEsMzUyMzIsMzUyMzcsMzUyNDgsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNjAsMzUyODQsMzUyODUsMzUyODYsMzUyODcsMzUyODgsMzUzMDEsMzUzMDUsMzUzMDcsMzUzMDksMzUzMTMsMzUzMTUsMzUzMTgsMzUzMjEsMzUzMjUsMzUzMjcsMzUzMzIsMzUzMzMsMzUzMzUsMzUzNDMsMzUzNDUsMzUzNDYsMzUzNDgsMzUzNDksMzUzNTgsMzUzNjAsMzUzNjIsMzUzNjQsMzUzNjYsMzUzNzEsMzUzNzIsMzUzNzUsMzUzODEsMzUzODMsMzUzODksMzUzOTAsMzUzOTIsMzUzOTUsMzUzOTcsMzUzOTksMzU0MDEsMzU0MDUsMzU0MDYsMzU0MTEsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MjAsMzU0MjEsMzU0MjUsMzU0MjksMzU0MzEsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDksMzU0NTAsMzU0NTEsMzU0NTQsMzU0NTUsMzU0NTYsMzU0NTksMzU0NjIsMzU0NjcsMzU0NzEsMzU0NzIsMzU0NzQsMzU0NzgsMzU0NzksMzU0ODEsMzU0ODcsMzU0OTUsMzU0OTcsMzU1MDIsMzU1MDMsMzU1MDcsMzU1MTAsMzU1MTEsMzU1MTUsMzU1MTgsMzU1MjMsMzU1MjYsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzcsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDMsMzU1NDksMzU1NTEsMzU1NjQsMzU1NjgsMzU1NzIsMzU1NzMsMzU1NzQsMzU1ODAsMzU1ODMsMzU1ODksMzU1OTAsMzU1OTUsMzU2MDEsMzU2MTIsMzU2MTQsMzU2MTUsMzU1OTQsMzU2MjksMzU2MzIsMzU2MzksMzU2NDQsMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMzU2NTQsMzU2NTYsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NzMsMzU2NjEsMzU2NzgsMzU2ODMsMzU2OTMsMzU3MDIsMzU3MDQsMzU3MDUsMzU3MDgsMzU3MTAsMzU3MTMsMzU3MTYsMzU3MTcsMzU3MjMsMzU3MjUsMzU3MjcsMzU3MzIsMzU3MzMsMzU3NDAsMzU3NDIsMzU3NDMsMzU4OTYsMzU4OTcsMzU5MDEsMzU5MDIsMzU5MDksMzU5MTEsMzU5MTMsMzU5MTUsMzU5MTksMzU5MjEsMzU5MjMsMzU5MjQsMzU5MjcsMzU5MjgsMzU5MzEsMzU5MzMsMzU5MjksMzU5MzksMzU5NDAsMzU5NDIsMzU5NDQsMzU5NDUsMzU5NDksMzU5NTUsMzU5NTcsMzU5NTgsMzU5NjMsMzU5NjYsMzU5NzQsMzU5NzUsMzU5NzksMzU5ODQsMzU5ODYsMzU5ODcsMzU5OTMsMzU5OTUsMzU5OTYsMzYwMDQsMzYwMjUsMzYwMjYsMzYwMzcsMzYwMzgsMzYwNDEsMzYwNDMsMzYwNDcsMzYwNTQsMzYwNTMsMzYwNTcsMzYwNjEsMzYwNjUsMzYwNzIsMzYwNzYsMzYwNzksMzYwODAsMzYwODIsMzYwODUsMzYwODcsMzYwODgsMzYwOTQsMzYwOTUsMzYwOTcsMzYwOTksMzYxMDUsMzYxMTQsMzYxMTksMzYxMjMsMzYxOTcsMzYyMDEsMzYyMDQsMzYyMDYsMzYyMjMsMzYyMjYsMzYyMjgsMzYyMzIsMzYyMzcsMzYyNDAsMzYyNDEsMzYyNDUsMzYyNTQsMzYyNTUsMzYyNTYsMzYyNjIsMzYyNjcsMzYyNjgsMzYyNzEsMzYyNzQsMzYyNzcsMzYyNzksMzYyODEsMzYyODMsMzYyODgsMzYyOTMsMzYyOTQsMzYyOTUsMzYyOTYsMzYyOTgsMzYzMDIsMzYzMDUsMzYzMDgsMzYzMDksMzYzMTEsMzYzMTMsMzYzMjQsMzYzMjUsMzYzMjcsMzYzMzIsMzYzMzYsMzYyODQsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDksMzYzNTMsMzYzNTYsMzYzNTcsMzYzNTgsMzYzNjMsMzYzNjksMzYzNzIsMzYzNzQsMzYzODQsMzYzODUsMzYzODYsMzYzODcsMzYzOTAsMzYzOTEsMzY0MDEsMzY0MDMsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MDksMzY0MTMsMzY0MTYsMzY0MTcsMzY0MjcsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzYsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDksMzY0NTAsMzY0NTcsMzY0NjAsMzY0NjEsMzY0NjMsMzY0NjQsMzY0NjUsMzY0NzMsMzY0NzQsMzY0NzUsMzY0ODIsMzY0ODMsMzY0ODksMzY0OTYsMzY0OTgsMzY1MDEsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTAsMzY1MTQsMzY1MTksMzY1MjEsMzY1MjUsMzY1MjYsMzY1MzEsMzY1MzMsMzY1MzgsMzY1MzksMzY1NDQsMzY1NDUsMzY1NDcsMzY1NDgsMzY1NTEsMzY1NTksMzY1NjEsMzY1NjQsMzY1NzIsMzY1ODQsMzY1OTAsMzY1OTIsMzY1OTMsMzY1OTksMzY2MDEsMzY2MDIsMzY1ODksMzY2MDgsMzY2MTAsMzY2MTUsMzY2MTYsMzY2MjMsMzY2MjQsMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzgsMzY2NDAsMzY2NDEsMzY2NDMsMzY2NDUsMzY2NDcsMzY2NDgsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjYsMzY2NzIsMzY2NzMsMzY2NzUsMzY2NzksMzY2ODcsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTYsMzY3MDEsMzY3MDIsMzY3MDksMzY3NjUsMzY3NjgsMzY3NjksMzY3NzIsMzY3NzMsMzY3NzQsMzY3ODksMzY3OTAsMzY3OTIsMzY3OTgsMzY4MDAsMzY4MDEsMzY4MDYsMzY4MTAsMzY4MTEsMzY4MTMsMzY4MTYsMzY4MTgsMzY4MTksMzY4MjEsMzY4MzIsMzY4MzUsMzY4MzYsMzY4NDAsMzY4NDYsMzY4NDksMzY4NTMsMzY4NTQsMzY4NTksMzY4NjIsMzY4NjYsMzY4NjgsMzY4NzIsMzY4NzYsMzY4ODgsMzY4OTEsMzY5MDQsMzY5MDUsMzY5MTEsMzY5MDYsMzY5MDgsMzY5MDksMzY5MTUsMzY5MTYsMzY5MTksMzY5MjcsMzY5MzEsMzY5MzIsMzY5NDAsMzY5NTUsMzY5NTcsMzY5NjIsMzY5NjYsMzY5NjcsMzY5NzIsMzY5NzYsMzY5ODAsMzY5ODUsMzY5OTcsMzcwMDAsMzcwMDMsMzcwMDQsMzcwMDYsMzcwMDgsMzcwMTMsMzcwMTUsMzcwMTYsMzcwMTcsMzcwMTksMzcwMjQsMzcwMjUsMzcwMjYsMzcwMjksMzcwNDAsMzcwNDIsMzcwNDMsMzcwNDQsMzcwNDYsMzcwNTMsMzcwNjgsMzcwNTQsMzcwNTksMzcwNjAsMzcwNjEsMzcwNjMsMzcwNjQsMzcwNzcsMzcwNzksMzcwODAsMzcwODEsMzcwODQsMzcwODUsMzcwODcsMzcwOTMsMzcwNzQsMzcxMTAsMzcwOTksMzcxMDMsMzcxMDQsMzcxMDgsMzcxMTgsMzcxMTksMzcxMjAsMzcxMjQsMzcxMjUsMzcxMjYsMzcxMjgsMzcxMzMsMzcxMzYsMzcxNDAsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDgsMzcxNTAsMzcxNTIsMzcxNTcsMzcxNTQsMzcxNTUsMzcxNTksMzcxNjEsMzcxNjYsMzcxNjcsMzcxNjksMzcxNzIsMzcxNzQsMzcxNzUsMzcxNzcsMzcxNzgsMzcxODAsMzcxODEsMzcxODcsMzcxOTEsMzcxOTIsMzcxOTksMzcyMDMsMzcyMDcsMzcyMDksMzcyMTAsMzcyMTEsMzcyMTcsMzcyMjAsMzcyMjMsMzcyMjksMzcyMzYsMzcyNDEsMzcyNDIsMzcyNDMsMzcyNDksMzcyNTEsMzcyNTMsMzcyNTQsMzcyNTgsMzcyNjIsMzcyNjUsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzIsMzcyNzgsMzcyODEsMzcyODYsMzcyODgsMzcyOTIsMzcyOTMsMzcyOTQsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDcsMzczMDgsMzczMDksMzczMTEsMzczMTQsMzczMTUsMzczMTcsMzczMzEsMzczMzIsMzczMzUsMzczMzcsMzczMzgsMzczNDIsMzczNDgsMzczNDksMzczNTMsMzczNTQsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjcsMzczNjksMzczNzEsMzczNzMsMzczNzYsMzczNzcsMzczODAsMzczODEsMzczODIsMzczODMsMzczODUsMzczODYsMzczODgsMzczOTIsMzczOTQsMzczOTUsMzczOTgsMzc0MDAsMzc0MDQsMzc0MDUsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTYsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjcsMzc0MjksMzc0MzAsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzYsMzc0MzgsMzc0NDAsMzc0NDIsMzc0NDMsMzc0NDYsMzc0NDcsMzc0NTAsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTcsMzc0NjQsMzc0NjUsMzc0NjgsMzc0NjksMzc0NzIsMzc0NzMsMzc0NzcsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODYsMzc0ODcsMzc0ODgsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDMsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTcsMzc1MTgsMzc1MjIsMzc1MjcsMzc1MjksMzc1MzUsMzc1MzYsMzc1NDAsMzc1NDEsMzc1NDMsMzc1NDQsMzc1NDcsMzc1NTEsMzc1NTQsMzc1NTgsMzc1NjAsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzYsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODQsMzc1ODcsMzc1ODksMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTYsMzc1OTcsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDMsMzc2MDUsMzc2MDcsMzc2MDgsMzc2MTIsMzc2MTQsMzc2MTYsMzc2MjUsMzc2MjcsMzc2MzEsMzc2MzIsMzc2MzQsMzc2NDAsMzc2NDUsMzc2NDksMzc2NTIsMzc2NTMsMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjUsMzc2NjgsMzc2NjksMzc2NzEsMzc2NzMsMzc2NzQsMzc2ODMsMzc2ODQsMzc2ODYsMzc2ODcsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTcsMzc3MTksMzc3MjAsMzc3MjIsMzc3MjYsMzc3MzIsMzc3MzMsMzc3MzUsMzc3MzcsMzc3MzgsMzc3NDEsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDcsMzc3NDgsMzc3NTAsMzc3NTQsMzc3NTcsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjgsMzc3NzAsMzc3NzEsMzc3NzMsMzc3NzUsMzc3NzgsMzc3ODEsMzc3ODQsMzc3ODcsMzc3OTAsMzc3OTMsMzc3OTUsMzc3OTYsMzc3OTgsMzc4MDAsMzc4MDMsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTgsMzc4MDEsMzc4MjUsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzMsMzc4MzQsMzc4MzUsMzc4MzYsMzc4MzcsMzc4NDMsMzc4NDksMzc4NTIsMzc4NTQsMzc4NTUsMzc4NTgsMzc4NjIsMzc4NjMsMzc4ODEsMzc4NzksMzc4ODAsMzc4ODIsMzc4ODMsMzc4ODUsMzc4ODksMzc4OTAsMzc4OTIsMzc4OTYsMzc4OTcsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTksMzc5MzQsMzc5MzUsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDcsMzc5NTEsMzc5NDksMzc5NTUsMzc5NTcsMzc5NjAsMzc5NjIsMzc5NjQsMzc5NzMsMzc5NzcsMzc5ODAsMzc5ODMsMzc5ODUsMzc5ODcsMzc5OTIsMzc5OTUsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDEsMzgwMDIsMzgwMjAsMzgwMTksMzgyNjQsMzgyNjUsMzgyNzAsMzgyNzYsMzgyODAsMzgyODQsMzgyODUsMzgyODYsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDUsMzgzMTAsMzgzMTMsMzgzMTUsMzgzMTYsMzgzMjQsMzgzMjYsMzgzMzAsMzgzMzMsMzgzMzUsMzgzNDIsMzgzNDQsMzgzNDUsMzgzNDcsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNjEsMzgzNjIsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNzIsMzgzNzQsMzg0MjksMzg0MzAsMzg0MzQsMzg0MzYsMzg0MzcsMzg0MzgsMzg0NDQsMzg0NDksMzg0NTEsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjAsMzg0NjEsMzg0NjUsMzg0ODIsMzg0ODQsMzg0ODYsMzg0ODcsMzg0ODgsMzg0OTcsMzg1MTAsMzg1MTYsMzg1MjMsMzg1MjQsMzg1MjYsMzg1MjcsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzcsMzg1NDUsMzg1NTAsMzg1NTQsMzg1NTcsMzg1NTksMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjksMzg1NzQsMzg1NzUsMzg1NzksMzg1ODYsMzg2MDIsMzg2MTAsMjM5ODYsMzg2MTYsMzg2MTgsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MzMsMzg2MzksMzg2NDEsMzg2NTAsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjUsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTYsMzg3MDUsMzg3MDcsMzg3MjEsMzg3MjMsMzg3MzAsMzg3MzQsMzg3MzUsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDcsMzg3NTUsMzg3NTksMzg3NjIsMzg3NjYsMzg3NzEsMzg3NzQsMzg3NzUsMzg3NzYsMzg3NzksMzg3ODEsMzg3ODMsMzg3ODQsMzg3OTMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTQsMzg4MTUsMzg4MTgsMzg4MjgsMzg4MzAsMzg4MzMsMzg4MzQsMzg4MzcsMzg4MzgsMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDQsMzg4NDYsMzg4NDcsMzg4NDksMzg4NTIsMzg4NTMsMzg4NTUsMzg4NTcsMzg4NTgsMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjQsMzg4NjUsMzg4NjgsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzcsMzg4NzgsMzg4ODAsMzg4NzUsMzg4ODEsMzg4ODQsMzg4OTUsMzg4OTcsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDYsMzg5MTksMzg5MjIsMzg5MzcsMzg5MjUsMzg5MjYsMzg5MzIsMzg5MzQsMzg5NDAsMzg5NDIsMzg5NDQsMzg5NDcsMzg5NTAsMzg5NTUsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjIsMzg5NjMsMzg5NjUsMzg5NDksMzg5NzQsMzg5ODAsMzg5ODMsMzg5ODYsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTgsMzg5OTksMzkwMDEsMzkwMDIsMzkwMTAsMzkwMTEsMzkwMTMsMzkwMTQsMzkwMTgsMzkwMjAsMzkwODMsMzkwODUsMzkwODYsMzkwODgsMzkwOTIsMzkwOTUsMzkwOTYsMzkwOTgsMzkwOTksMzkxMDMsMzkxMDYsMzkxMDksMzkxMTIsMzkxMTYsMzkxMzcsMzkxMzksMzkxNDEsMzkxNDIsMzkxNDMsMzkxNDYsMzkxNTUsMzkxNTgsMzkxNzAsMzkxNzUsMzkxNzYsMzkxODUsMzkxODksMzkxOTAsMzkxOTEsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTksMzkyMDIsMzkyMDYsMzkyMDcsMzkyMTEsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMzIsMzkyMzMsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDUsMzkyNDYsMzkyNTIsMzkyNTYsMzkyNTcsMzkyNTksMzkyNjAsMzkyNjIsMzkyNjMsMzkyNjQsMzkzMjMsMzkzMjUsMzkzMjcsMzkzMzQsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDksMzkzNTMsMzkzNTQsMzkzNTcsMzkzNTksMzkzNjMsMzkzNjksMzkzNzksMzkzODAsMzkzODUsMzkzODYsMzkzODgsMzkzOTAsMzkzOTksMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDgsMzk0MTIsMzk0MTMsMzk0MTcsMzk0MjEsMzk0MjIsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MzUsMzk0MzYsMzk0NDAsMzk0NDEsMzk0NDYsMzk0NTQsMzk0NTYsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjMsMzk0NjksMzk0NzAsMzk0NzUsMzk0NzcsMzk0NzgsMzk0ODAsMzk0OTUsMzk0ODksMzk0OTIsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDIsMzk1MDUsMzk1MDgsMzk1MTAsMzk1MTcsMzk1OTQsMzk1OTYsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDQsMzk2MDUsMzk2MDYsMzk2MDksMzk2MTEsMzk2MTQsMzk2MTUsMzk2MTcsMzk2MTksMzk2MjIsMzk2MjQsMzk2MzAsMzk2MzIsMzk2MzQsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDMsMzk2NDQsMzk2NDgsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTcsMzk2NjAsMzk2NjYsMzk2NjcsMzk2NjksMzk2NzMsMzk2NzQsMzk2NzcsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODMsMzk2ODQsMzk2ODUsMzk2ODgsMzk2ODksMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTgsMzk3MDIsMzk3MDUsMzk3MDcsMzk3MDgsMzk3MTIsMzk3MTgsMzk3MjMsMzk3MjUsMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzUsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NTIsMzk3NTUsMzk3NTYsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NzEsMzk3NzQsMzk3NzcsMzk3NzksMzk3ODEsMzk3ODIsMzk3ODQsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTUsMzk3OTcsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDcsMzk4MDgsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjEsMzk4MjMsMzk4MjQsMzk4MjgsMzk4MzQsMzk4MzcsMzk4MzgsMzk4NDYsMzk4NDcsMzk4NDksMzk4NTIsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NjMsMzk4NjQsMzk4NjcsMzk4NjgsMzk4NzAsMzk4NzEsMzk4NzMsMzk4NzksMzk4ODAsMzk4ODYsMzk4ODgsMzk4OTUsMzk4OTYsMzk5MDEsMzk5MDMsMzk5MDksMzk5MTEsMzk5MTQsMzk5MTUsMzk5MTksMzk5MjMsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzMsMzk5MzUsMzk5MzYsMzk5MzgsMzk5NDcsMzk5NTEsMzk5NTMsMzk5NTgsMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjQsMzk5NjYsMzk5NzAsMzk5NzEsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5ODUsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTcsNDAwMDEsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDksNDAwMTAsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTksNDAwMjAsNDAwMjIsNDAwMjQsNDAwMjcsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzUsNDAwNDEsNDAwNDIsNDAwMjgsNDAwNDMsNDAwNDAsNDAwNDYsNDAwNDgsNDAwNTAsNDAwNTMsNDAwNTUsNDAwNTksNDAxNjYsNDAxNzgsNDAxODMsNDAxODUsNDAyMDMsNDAxOTQsNDAyMDksNDAyMTUsNDAyMTYsNDAyMjAsNDAyMjEsNDAyMjIsNDAyMzksNDAyNDAsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNTAsNDAyNTIsNDAyNjEsNDAyNTMsNDAyNTgsNDAyNTksNDAyNjMsNDAyNjYsNDAyNzUsNDAyNzYsNDAyODcsNDAyOTEsNDAyOTAsNDAyOTMsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDQsNDAzMTAsNDAzMTEsNDAzMTUsNDAzMTYsNDAzMTgsNDAzMjMsNDAzMjQsNDAzMjYsNDAzMzAsNDAzMzMsNDAzMzQsNDAzMzgsNDAzMzksNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNTMsNDAzNjIsNDAzNjQsNDAzNjYsNDAzNjksNDAzNzMsNDAzNzcsNDAzODAsNDAzODMsNDAzODcsNDAzOTEsNDAzOTMsNDAzOTQsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MTAsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MjEsNDA0MjMsNDA0MjUsNDA0MjcsNDA0MzAsNDA0MzIsNDA0MzUsNDA0MzYsNDA0NDYsNDA0NTgsNDA0NTAsNDA0NTUsNDA0NjIsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjksNDA0NzAsNDA0NzMsNDA0NzYsNDA0NzcsNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzYsNDA1NzgsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODMsNDA1OTAsNDA1OTEsNDA1OTgsNDA2MDAsNDA2MDMsNDA2MDYsNDA2MTIsNDA2MTYsNDA2MjAsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjcsNDA2MjgsNDA2MjksNDA2NDYsNDA2NDgsNDA2NTEsNDA2NjEsNDA2NzEsNDA2NzYsNDA2NzksNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTMsNDA2OTYsNDA3MDMsNDA3MDYsNDA3MDcsNDA3MTMsNDA3MTksNDA3MjAsNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjYsNDA3MjcsNDA3MjksNDA3MzAsNDA3MzEsNDA3MzUsNDA3MzgsNDA3NDIsNDA3NDYsNDA3NDcsNDA3NTEsNDA3NTMsNDA3NTQsNDA3NTYsNDA3NTksNDA3NjEsNDA3NjIsNDA3NjQsNDA3NjUsNDA3NjcsNDA3NjksNDA3NzEsNDA3NzIsNDA3NzMsNDA3NzQsNDA3NzUsNDA3ODcsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTQsNDA3OTcsNDA3OTgsNDA4MDgsNDA4MDksNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTksNDA4MjEsNDA4MjYsNDA4MjksNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTIsNDA4NTQsNDA4NTUsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJpYm04NjZcIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsOTYxNyw5NjE4LDk2MTksOTQ3NCw5NTA4LDk1NjksOTU3MCw5NTU4LDk1NTcsOTU3MSw5NTUzLDk1NTksOTU2NSw5NTY0LDk1NjMsOTQ4OCw5NDkyLDk1MjQsOTUxNiw5NTAwLDk0NzIsOTUzMiw5NTY2LDk1NjcsOTU2Miw5NTU2LDk1NzcsOTU3NCw5NTY4LDk1NTIsOTU4MCw5NTc1LDk1NzYsOTU3Miw5NTczLDk1NjEsOTU2MCw5NTU0LDk1NTUsOTU3OSw5NTc4LDk0OTYsOTQ4NCw5NjA4LDk2MDQsOTYxMiw5NjE2LDk2MDAsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMDI1LDExMDUsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDM4LDExMTgsMTc2LDg3MjksMTgzLDg3MzAsODQ3MCwxNjQsOTYzMiwxNjBdLFxuICBcImlzby04ODU5LTJcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDcyOCwzMjEsMTY0LDMxNywzNDYsMTY3LDE2OCwzNTIsMzUwLDM1NiwzNzcsMTczLDM4MSwzNzksMTc2LDI2MSw3MzEsMzIyLDE4MCwzMTgsMzQ3LDcxMSwxODQsMzUzLDM1MSwzNTcsMzc4LDczMywzODIsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sXG4gIFwiaXNvLTg4NTktM1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyOTQsNzI4LDE2MywxNjQsbnVsbCwyOTIsMTY3LDE2OCwzMDQsMzUwLDI4NiwzMDgsMTczLG51bGwsMzc5LDE3NiwyOTUsMTc4LDE3OSwxODAsMTgxLDI5MywxODMsMTg0LDMwNSwzNTEsMjg3LDMwOSwxODksbnVsbCwzODAsMTkyLDE5MywxOTQsbnVsbCwxOTYsMjY2LDI2NCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNyxudWxsLDIwOSwyMTAsMjExLDIxMiwyODgsMjE0LDIxNSwyODQsMjE3LDIxOCwyMTksMjIwLDM2NCwzNDgsMjIzLDIyNCwyMjUsMjI2LG51bGwsMjI4LDI2NywyNjUsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksbnVsbCwyNDEsMjQyLDI0MywyNDQsMjg5LDI0NiwyNDcsMjg1LDI0OSwyNTAsMjUxLDI1MiwzNjUsMzQ5LDcyOV0sXG4gIFwiaXNvLTg4NTktNFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMzEyLDM0MiwxNjQsMjk2LDMxNSwxNjcsMTY4LDM1MiwyNzQsMjkwLDM1OCwxNzMsMzgxLDE3NSwxNzYsMjYxLDczMSwzNDMsMTgwLDI5NywzMTYsNzExLDE4NCwzNTMsMjc1LDI5MSwzNTksMzMwLDM4MiwzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjk4LDI3MiwzMjUsMzMyLDMxMCwyMTIsMjEzLDIxNCwyMTUsMjE2LDM3MCwyMTgsMjE5LDIyMCwzNjAsMzYyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyOTksMjczLDMyNiwzMzMsMzExLDI0NCwyNDUsMjQ2LDI0NywyNDgsMzcxLDI1MCwyNTEsMjUyLDM2MSwzNjMsNzI5XSxcbiAgXCJpc28tODg1OS01XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDE3MywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMyw4NDcwLDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDE2NywxMTE4LDExMTldLFxuICBcImlzby04ODU5LTZcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCxudWxsLG51bGwsMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU0OCwxNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNTYzLG51bGwsbnVsbCxudWxsLDE1NjcsbnVsbCwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDE1OTEsMTU5MiwxNTkzLDE1OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE2MDAsMTYwMSwxNjAyLDE2MDMsMTYwNCwxNjA1LDE2MDYsMTYwNywxNjA4LDE2MDksMTYxMCwxNjExLDE2MTIsMTYxMywxNjE0LDE2MTUsMTYxNiwxNjE3LDE2MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiaXNvLTg4NTktN1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjE2LDgyMTcsMTYzLDgzNjQsODM2NywxNjYsMTY3LDE2OCwxNjksODkwLDE3MSwxNzIsMTczLG51bGwsODIxMywxNzYsMTc3LDE3OCwxNzksOTAwLDkwMSw5MDIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLFxuICBcImlzby04ODU5LThcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4MjE1LDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgyMDcsbnVsbF0sXG4gIFwiaXNvLTg4NTktMTBcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDI3NCwyOTAsMjk4LDI5NiwzMTAsMTY3LDMxNSwyNzIsMzUyLDM1OCwzODEsMTczLDM2MiwzMzAsMTc2LDI2MSwyNzUsMjkxLDI5OSwyOTcsMzExLDE4MywzMTYsMjczLDM1MywzNTksMzgyLDgyMTMsMzYzLDMzMSwyNTYsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMzAyLDI2OCwyMDEsMjgwLDIwMywyNzgsMjA1LDIwNiwyMDcsMjA4LDMyNSwzMzIsMjExLDIxMiwyMTMsMjE0LDM2MCwyMTYsMzcwLDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDI1NywyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwzMDMsMjY5LDIzMywyODEsMjM1LDI3OSwyMzcsMjM4LDIzOSwyNDAsMzI2LDMzMywyNDMsMjQ0LDI0NSwyNDYsMzYxLDI0OCwzNzEsMjUwLDI1MSwyNTIsMjUzLDI1NCwzMTJdLFxuICBcImlzby04ODU5LTEzXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDgyMjEsMTYyLDE2MywxNjQsODIyMiwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgsMTc5LDgyMjAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw4MjE3XSxcbiAgXCJpc28tODg1OS0xNFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw3NjgyLDc2ODMsMTYzLDI2NiwyNjcsNzY5MCwxNjcsNzgwOCwxNjksNzgxMCw3NjkxLDc5MjIsMTczLDE3NCwzNzYsNzcxMCw3NzExLDI4OCwyODksNzc0NCw3NzQ1LDE4Miw3NzY2LDc4MDksNzc2Nyw3ODExLDc3NzYsNzkyMyw3ODEyLDc4MTMsNzc3NywxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMzcyLDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDc3ODYsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMzc0LDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMzczLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDc3ODcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMzc1LDI1NV0sXG4gIFwiaXNvLTg4NTktMTVcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2NCwxNjUsMzUyLDE2NywzNTMsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwzODEsMTgxLDE4MiwxODMsMzgyLDE4NSwxODYsMTg3LDMzOCwzMzksMzc2LDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLFxuICBcImlzby04ODU5LTE2XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNjEsMzIxLDgzNjQsODIyMiwzNTIsMTY3LDM1MywxNjksNTM2LDE3MSwzNzcsMTczLDM3OCwzNzksMTc2LDE3NywyNjgsMzIyLDM4MSw4MjIxLDE4MiwxODMsMzgyLDI2OSw1MzcsMTg3LDMzOCwzMzksMzc2LDM4MCwxOTIsMTkzLDE5NCwyNTgsMTk2LDI2MiwxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjcyLDMyMywyMTAsMjExLDIxMiwzMzYsMjE0LDM0NiwzNjgsMjE3LDIxOCwyMTksMjIwLDI4MCw1MzgsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjYzLDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNzMsMzI0LDI0MiwyNDMsMjQ0LDMzNywyNDYsMzQ3LDM2OSwyNDksMjUwLDI1MSwyNTIsMjgxLDUzOSwyNTVdLFxuICBcImtvaTgtclwiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLFxuICBcImtvaTgtdVwiOls5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDg5OTIsOTYzMiw4NzI5LDg3MzAsODc3Niw4ODA0LDg4MDUsMTYwLDg5OTMsMTc2LDE3OCwxODMsMjQ3LDk1NTIsOTU1Myw5NTU0LDExMDUsMTEwOCw5NTU2LDExMTAsMTExMSw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsMTE2OSwxMTE4LDk1NjYsOTU2Nyw5NTY4LDk1NjksMTAyNSwxMDI4LDk1NzEsMTAzMCwxMDMxLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCwxMTY4LDEwMzgsMTY5LDExMDIsMTA3MiwxMDczLDEwOTQsMTA3NiwxMDc3LDEwOTIsMTA3NSwxMDkzLDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMTAzLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA3OCwxMDc0LDExMDAsMTA5OSwxMDc5LDEwOTYsMTEwMSwxMDk3LDEwOTUsMTA5OCwxMDcwLDEwNDAsMTA0MSwxMDYyLDEwNDQsMTA0NSwxMDYwLDEwNDMsMTA2MSwxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA3MSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNDYsMTA0MiwxMDY4LDEwNjcsMTA0NywxMDY0LDEwNjksMTA2NSwxMDYzLDEwNjZdLFxuICBcIm1hY2ludG9zaFwiOlsxOTYsMTk3LDE5OSwyMDEsMjA5LDIxNCwyMjAsMjI1LDIyNCwyMjYsMjI4LDIyNywyMjksMjMxLDIzMywyMzIsMjM0LDIzNSwyMzcsMjM2LDIzOCwyMzksMjQxLDI0MywyNDIsMjQ0LDI0NiwyNDUsMjUwLDI0OSwyNTEsMjUyLDgyMjQsMTc2LDE2MiwxNjMsMTY3LDgyMjYsMTgyLDIyMywxNzQsMTY5LDg0ODIsMTgwLDE2OCw4ODAwLDE5OCwyMTYsODczNCwxNzcsODgwNCw4ODA1LDE2NSwxODEsODcwNiw4NzIxLDg3MTksOTYwLDg3NDcsMTcwLDE4Niw5MzcsMjMwLDI0OCwxOTEsMTYxLDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxOTIsMTk1LDIxMywzMzgsMzM5LDgyMTEsODIxMiw4MjIwLDgyMjEsODIxNiw4MjE3LDI0Nyw5Njc0LDI1NSwzNzYsODI2MCw4MzY0LDgyNDksODI1MCw2NDI1Nyw2NDI1OCw4MjI1LDE4Myw4MjE4LDgyMjIsODI0MCwxOTQsMjAyLDE5MywyMDMsMjAwLDIwNSwyMDYsMjA3LDIwNCwyMTEsMjEyLDYzNzQzLDIxMCwyMTgsMjE5LDIxNywzMDUsNzEwLDczMiwxNzUsNzI4LDcyOSw3MzAsMTg0LDczMyw3MzEsNzExXSxcbiAgXCJ3aW5kb3dzLTg3NFwiOls4MzY0LDEyOSwxMzAsMTMxLDEzMiw4MjMwLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwzNTg1LDM1ODYsMzU4NywzNTg4LDM1ODksMzU5MCwzNTkxLDM1OTIsMzU5MywzNTk0LDM1OTUsMzU5NiwzNTk3LDM1OTgsMzU5OSwzNjAwLDM2MDEsMzYwMiwzNjAzLDM2MDQsMzYwNSwzNjA2LDM2MDcsMzYwOCwzNjA5LDM2MTAsMzYxMSwzNjEyLDM2MTMsMzYxNCwzNjE1LDM2MTYsMzYxNywzNjE4LDM2MTksMzYyMCwzNjIxLDM2MjIsMzYyMywzNjI0LDM2MjUsMzYyNiwzNjI3LDM2MjgsMzYyOSwzNjMwLDM2MzEsMzYzMiwzNjMzLDM2MzQsMzYzNSwzNjM2LDM2MzcsMzYzOCwzNjM5LDM2NDAsMzY0MSwzNjQyLG51bGwsbnVsbCxudWxsLG51bGwsMzY0NywzNjQ4LDM2NDksMzY1MCwzNjUxLDM2NTIsMzY1MywzNjU0LDM2NTUsMzY1NiwzNjU3LDM2NTgsMzY1OSwzNjYwLDM2NjEsMzY2MiwzNjYzLDM2NjQsMzY2NSwzNjY2LDM2NjcsMzY2OCwzNjY5LDM2NzAsMzY3MSwzNjcyLDM2NzMsMzY3NCwzNjc1LG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcIndpbmRvd3MtMTI1MFwiOls4MzY0LDEyOSw4MjE4LDEzMSw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDM1Miw4MjQ5LDM0NiwzNTYsMzgxLDM3NywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwzNTMsODI1MCwzNDcsMzU3LDM4MiwzNzgsMTYwLDcxMSw3MjgsMzIxLDE2NCwyNjAsMTY2LDE2NywxNjgsMTY5LDM1MCwxNzEsMTcyLDE3MywxNzQsMzc5LDE3NiwxNzcsNzMxLDMyMiwxODAsMTgxLDE4MiwxODMsMTg0LDI2MSwzNTEsMTg3LDMxNyw3MzMsMzE4LDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLFxuICBcIndpbmRvd3MtMTI1MVwiOlsxMDI2LDEwMjcsODIxOCwxMTA3LDgyMjIsODIzMCw4MjI0LDgyMjUsODM2NCw4MjQwLDEwMzMsODI0OSwxMDM0LDEwMzYsMTAzNSwxMDM5LDExMDYsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxMTEzLDgyNTAsMTExNCwxMTE2LDExMTUsMTExOSwxNjAsMTAzOCwxMTE4LDEwMzIsMTY0LDExNjgsMTY2LDE2NywxMDI1LDE2OSwxMDI4LDE3MSwxNzIsMTczLDE3NCwxMDMxLDE3NiwxNzcsMTAzMCwxMTEwLDExNjksMTgxLDE4MiwxODMsMTEwNSw4NDcwLDExMDgsMTg3LDExMTIsMTAyOSwxMTA5LDExMTEsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwM10sXG4gIFwid2luZG93cy0xMjUyXCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwzODEsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcsMzgyLDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV0sXG4gIFwid2luZG93cy0xMjUzXCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsOTAxLDkwMiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksbnVsbCwxNzEsMTcyLDE3MywxNzQsODIxMywxNzYsMTc3LDE3OCwxNzksOTAwLDE4MSwxODIsMTgzLDkwNCw5MDUsOTA2LDE4Nyw5MDgsMTg5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksbnVsbCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LG51bGxdLFxuICBcIndpbmRvd3MtMTI1NFwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjg2LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDMwNCwzNTAsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyODcsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMzA1LDM1MSwyNTVdLFxuICBcIndpbmRvd3MtMTI1NVwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjIsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCwxOTEsMTQ1NiwxNDU3LDE0NTgsMTQ1OSwxNDYwLDE0NjEsMTQ2MiwxNDYzLDE0NjQsMTQ2NSxudWxsLDE0NjcsMTQ2OCwxNDY5LDE0NzAsMTQ3MSwxNDcyLDE0NzMsMTQ3NCwxNDc1LDE1MjAsMTUyMSwxNTIyLDE1MjMsMTUyNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LG51bGwsbnVsbCw4MjA2LDgyMDcsbnVsbF0sXG4gIFwid2luZG93cy0xMjU2XCI6WzgzNjQsMTY2Miw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDE2NTcsODI0OSwzMzgsMTY3MCwxNjg4LDE2NzIsMTcxMSw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE3MDUsODQ4MiwxNjgxLDgyNTAsMzM5LDgyMDQsODIwNSwxNzIyLDE2MCwxNTQ4LDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcyNiwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxNTYzLDE4NywxODgsMTg5LDE5MCwxNTY3LDE3MjksMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwyMTUsMTU5MSwxNTkyLDE1OTMsMTU5NCwxNjAwLDE2MDEsMTYwMiwxNjAzLDIyNCwxNjA0LDIyNiwxNjA1LDE2MDYsMTYwNywxNjA4LDIzMSwyMzIsMjMzLDIzNCwyMzUsMTYwOSwxNjEwLDIzOCwyMzksMTYxMSwxNjEyLDE2MTMsMTYxNCwyNDQsMTYxNSwxNjE2LDI0NywxNjE3LDI0OSwxNjE4LDI1MSwyNTIsODIwNiw4MjA3LDE3NDZdLFxuICBcIndpbmRvd3MtMTI1N1wiOls4MzY0LDEyOSw4MjE4LDEzMSw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNjgsNzExLDE4NCwxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTc1LDczMSwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsbnVsbCwxNjYsMTY3LDIxNiwxNjksMzQyLDE3MSwxNzIsMTczLDE3NCwxOTgsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywyNDgsMTg1LDM0MywxODcsMTg4LDE4OSwxOTAsMjMwLDI2MCwzMDIsMjU2LDI2MiwxOTYsMTk3LDI4MCwyNzQsMjY4LDIwMSwzNzcsMjc4LDI5MCwzMTAsMjk4LDMxNSwzNTIsMzIzLDMyNSwyMTEsMzMyLDIxMywyMTQsMjE1LDM3MCwzMjEsMzQ2LDM2MiwyMjAsMzc5LDM4MSwyMjMsMjYxLDMwMywyNTcsMjYzLDIyOCwyMjksMjgxLDI3NSwyNjksMjMzLDM3OCwyNzksMjkxLDMxMSwyOTksMzE2LDM1MywzMjQsMzI2LDI0MywzMzMsMjQ1LDI0NiwyNDcsMzcxLDMyMiwzNDcsMzYzLDI1MiwzODAsMzgyLDcyOV0sXG4gIFwid2luZG93cy0xMjU4XCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1NCw4MjUwLDMzOSwxNTcsMTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDI1OCwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDc2OCwyMDUsMjA2LDIwNywyNzIsMjA5LDc3NywyMTEsMjEyLDQxNiwyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsNDMxLDc3MSwyMjMsMjI0LDIyNSwyMjYsMjU5LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsNzY5LDIzNywyMzgsMjM5LDI3MywyNDEsODAzLDI0MywyNDQsNDE3LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1Miw0MzIsODM2MywyNTVdLFxuICBcIngtbWFjLWN5cmlsbGljXCI6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSw4MjI0LDE3NiwxMTY4LDE2MywxNjcsODIyNiwxODIsMTAzMCwxNzQsMTY5LDg0ODIsMTAyNiwxMTA2LDg4MDAsMTAyNywxMTA3LDg3MzQsMTc3LDg4MDQsODgwNSwxMTEwLDE4MSwxMTY5LDEwMzIsMTAyOCwxMTA4LDEwMzEsMTExMSwxMDMzLDExMTMsMTAzNCwxMTE0LDExMTIsMTAyOSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTAzNSwxMTE1LDEwMzYsMTExNiwxMTA5LDgyMTEsODIxMiw4MjIwLDgyMjEsODIxNiw4MjE3LDI0Nyw4MjIyLDEwMzgsMTExOCwxMDM5LDExMTksODQ3MCwxMDI1LDExMDUsMTEwMywxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDgzNjRdXG59O1xufSh0aGlzKSk7XG4iLCIvLyBUaGlzIGlzIGZyZWUgYW5kIHVuZW5jdW1iZXJlZCBzb2Z0d2FyZSByZWxlYXNlZCBpbnRvIHRoZSBwdWJsaWMgZG9tYWluLlxuLy8gU2VlIExJQ0VOU0UubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbi8vIElmIHdlJ3JlIGluIG5vZGUgcmVxdWlyZSBlbmNvZGluZy1pbmRleGVzIGFuZCBhdHRhY2ggaXQgdG8gdGhlIGdsb2JhbC5cbi8qKlxuICogQGZpbGVvdmVydmlldyBHbG9iYWwgfHRoaXN8IHJlcXVpcmVkIGZvciByZXNvbHZpbmcgaW5kZXhlcyBpbiBub2RlLlxuICogQHN1cHByZXNzIHtnbG9iYWxUaGlzfVxuICovXG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUuZXhwb3J0cykge1xuICB0aGlzW1wiZW5jb2RpbmctaW5kZXhlc1wiXSA9XG4gICAgcmVxdWlyZShcIi4vZW5jb2RpbmctaW5kZXhlcy5qc1wiKVtcImVuY29kaW5nLWluZGV4ZXNcIl07XG59XG5cbihmdW5jdGlvbihnbG9iYWwpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vXG4gIC8vIFV0aWxpdGllc1xuICAvL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gYSBUaGUgbnVtYmVyIHRvIHRlc3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgaW4gdGhlIHJhbmdlLCBpbmNsdXNpdmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXggVGhlIG1heGltdW0gdmFsdWUgaW4gdGhlIHJhbmdlLCBpbmNsdXNpdmUuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYSA+PSBtaW4gYW5kIGEgPD0gbWF4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5SYW5nZShhLCBtaW4sIG1heCkge1xuICAgIHJldHVybiBtaW4gPD0gYSAmJiBhIDw9IG1heDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtZXJhdG9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZCBUaGUgZGVub21pbmF0b3IuXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIHJlc3VsdCBvZiB0aGUgaW50ZWdlciBkaXZpc2lvbiBvZiBuIGJ5IGQuXG4gICAqL1xuICBmdW5jdGlvbiBkaXYobiwgZCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKG4gLyBkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG9cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZnVuY3Rpb24gVG9EaWN0aW9uYXJ5KG8pIHtcbiAgICBpZiAobyA9PT0gdW5kZWZpbmVkKSByZXR1cm4ge307XG4gICAgaWYgKG8gPT09IE9iamVjdChvKSkgcmV0dXJuIG87XG4gICAgdGhyb3cgVHlwZUVycm9yKCdDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCB0byBkaWN0aW9uYXJ5Jyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBJbnB1dCBzdHJpbmcgb2YgVVRGLTE2IGNvZGUgdW5pdHMuXG4gICAqIEByZXR1cm4geyFBcnJheS48bnVtYmVyPn0gQ29kZSBwb2ludHMuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0NvZGVQb2ludHMoc3RyaW5nKSB7XG4gICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLW9idGFpbi11bmljb2RlXG5cbiAgICAvLyAxLiBMZXQgUyBiZSB0aGUgRE9NU3RyaW5nIHZhbHVlLlxuICAgIHZhciBzID0gU3RyaW5nKHN0cmluZyk7XG5cbiAgICAvLyAyLiBMZXQgbiBiZSB0aGUgbGVuZ3RoIG9mIFMuXG4gICAgdmFyIG4gPSBzLmxlbmd0aDtcblxuICAgIC8vIDMuIEluaXRpYWxpemUgaSB0byAwLlxuICAgIHZhciBpID0gMDtcblxuICAgIC8vIDQuIEluaXRpYWxpemUgVSB0byBiZSBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBVbmljb2RlIGNoYXJhY3RlcnMuXG4gICAgdmFyIHUgPSBbXTtcblxuICAgIC8vIDUuIFdoaWxlIGkgPCBuOlxuICAgIHdoaWxlIChpIDwgbikge1xuXG4gICAgICAvLyAxLiBMZXQgYyBiZSB0aGUgY29kZSB1bml0IGluIFMgYXQgaW5kZXggaS5cbiAgICAgIHZhciBjID0gcy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAvLyAyLiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGM6XG5cbiAgICAgIC8vIGMgPCAweEQ4MDAgb3IgYyA+IDB4REZGRlxuICAgICAgaWYgKGMgPCAweEQ4MDAgfHwgYyA+IDB4REZGRikge1xuICAgICAgICAvLyBBcHBlbmQgdG8gVSB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCBjb2RlIHBvaW50IGMuXG4gICAgICAgIHUucHVzaChjKTtcbiAgICAgIH1cblxuICAgICAgLy8gMHhEQzAwIOKJpCBjIOKJpCAweERGRkZcbiAgICAgIGVsc2UgaWYgKDB4REMwMCA8PSBjICYmIGMgPD0gMHhERkZGKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0byBVIGEgVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUi5cbiAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDB4RDgwMCDiiaQgYyDiiaQgMHhEQkZGXG4gICAgICBlbHNlIGlmICgweEQ4MDAgPD0gYyAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICAvLyAxLiBJZiBpID0gbuKIkjEsIHRoZW4gYXBwZW5kIHRvIFUgYSBVK0ZGRkQgUkVQTEFDRU1FTlRcbiAgICAgICAgLy8gQ0hBUkFDVEVSLlxuICAgICAgICBpZiAoaSA9PT0gbiAtIDEpIHtcbiAgICAgICAgICB1LnB1c2goMHhGRkZEKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyLiBPdGhlcndpc2UsIGkgPCBu4oiSMTpcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gMS4gTGV0IGQgYmUgdGhlIGNvZGUgdW5pdCBpbiBTIGF0IGluZGV4IGkrMS5cbiAgICAgICAgICB2YXIgZCA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcblxuICAgICAgICAgIC8vIDIuIElmIDB4REMwMCDiiaQgZCDiiaQgMHhERkZGLCB0aGVuOlxuICAgICAgICAgIGlmICgweERDMDAgPD0gZCAmJiBkIDw9IDB4REZGRikge1xuICAgICAgICAgICAgLy8gMS4gTGV0IGEgYmUgYyAmIDB4M0ZGLlxuICAgICAgICAgICAgdmFyIGEgPSBjICYgMHgzRkY7XG5cbiAgICAgICAgICAgIC8vIDIuIExldCBiIGJlIGQgJiAweDNGRi5cbiAgICAgICAgICAgIHZhciBiID0gZCAmIDB4M0ZGO1xuXG4gICAgICAgICAgICAvLyAzLiBBcHBlbmQgdG8gVSB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCBjb2RlIHBvaW50XG4gICAgICAgICAgICAvLyAyXjE2KzJeMTAqYStiLlxuICAgICAgICAgICAgdS5wdXNoKDB4MTAwMDAgKyAoYSA8PCAxMCkgKyBiKTtcblxuICAgICAgICAgICAgLy8gNC4gU2V0IGkgdG8gaSsxLlxuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDMuIE90aGVyd2lzZSwgZCA8IDB4REMwMCBvciBkID4gMHhERkZGLiBBcHBlbmQgdG8gVSBhXG4gICAgICAgICAgLy8gVStGRkZEIFJFUExBQ0VNRU5UIENIQVJBQ1RFUi5cbiAgICAgICAgICBlbHNlICB7XG4gICAgICAgICAgICB1LnB1c2goMHhGRkZEKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gMy4gU2V0IGkgdG8gaSsxLlxuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIC8vIDYuIFJldHVybiBVLlxuICAgIHJldHVybiB1O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBjb2RlX3BvaW50cyBBcnJheSBvZiBjb2RlIHBvaW50cy5cbiAgICogQHJldHVybiB7c3RyaW5nfSBzdHJpbmcgU3RyaW5nIG9mIFVURi0xNiBjb2RlIHVuaXRzLlxuICAgKi9cbiAgZnVuY3Rpb24gY29kZVBvaW50c1RvU3RyaW5nKGNvZGVfcG9pbnRzKSB7XG4gICAgdmFyIHMgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVfcG9pbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY3AgPSBjb2RlX3BvaW50c1tpXTtcbiAgICAgIGlmIChjcCA8PSAweEZGRkYpIHtcbiAgICAgICAgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNwIC09IDB4MTAwMDA7XG4gICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoY3AgPj4gMTApICsgMHhEODAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwICYgMHgzRkYpICsgMHhEQzAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuXG4gIC8vXG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIEVuY29kaW5nIHNwZWNpZmljYXRpb25cbiAgLy8gaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvXG4gIC8vXG5cbiAgLy9cbiAgLy8gMy4gVGVybWlub2xvZ3lcbiAgLy9cblxuICAvKipcbiAgICogRW5kLW9mLXN0cmVhbSBpcyBhIHNwZWNpYWwgdG9rZW4gdGhhdCBzaWduaWZpZXMgbm8gbW9yZSB0b2tlbnNcbiAgICogYXJlIGluIHRoZSBzdHJlYW0uXG4gICAqIEBjb25zdFxuICAgKi8gdmFyIGVuZF9vZl9zdHJlYW0gPSAtMTtcblxuICAvKipcbiAgICogQSBzdHJlYW0gcmVwcmVzZW50cyBhbiBvcmRlcmVkIHNlcXVlbmNlIG9mIHRva2Vucy5cbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7IShBcnJheS48bnVtYmVyPnxVaW50OEFycmF5KX0gdG9rZW5zIEFycmF5IG9mIHRva2VucyB0aGF0IHByb3ZpZGUgdGhlXG4gICAqIHN0cmVhbS5cbiAgICovXG4gIGZ1bmN0aW9uIFN0cmVhbSh0b2tlbnMpIHtcbiAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICB0aGlzLnRva2VucyA9IFtdLnNsaWNlLmNhbGwodG9rZW5zKTtcbiAgfVxuXG4gIFN0cmVhbS5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBlbmQtb2Ytc3RyZWFtIGhhcyBiZWVuIGhpdC5cbiAgICAgKi9cbiAgICBlbmRPZlN0cmVhbTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gIXRoaXMudG9rZW5zLmxlbmd0aDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hlbiBhIHRva2VuIGlzIHJlYWQgZnJvbSBhIHN0cmVhbSwgdGhlIGZpcnN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbSBtdXN0IGJlIHJldHVybmVkIGFuZCBzdWJzZXF1ZW50bHkgcmVtb3ZlZCwgYW5kXG4gICAgICogZW5kLW9mLXN0cmVhbSBtdXN0IGJlIHJldHVybmVkIG90aGVyd2lzZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gR2V0IHRoZSBuZXh0IHRva2VuIGZyb20gdGhlIHN0cmVhbSwgb3JcbiAgICAgKiBlbmRfb2Zfc3RyZWFtLlxuICAgICAqL1xuICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy50b2tlbnMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gZW5kX29mX3N0cmVhbTtcbiAgICAgICByZXR1cm4gdGhpcy50b2tlbnMuc2hpZnQoKTtcbiAgICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gb25lIG9yIG1vcmUgdG9rZW5zIGFyZSBwcmVwZW5kZWQgdG8gYSBzdHJlYW0sIHRob3NlIHRva2Vuc1xuICAgICAqIG11c3QgYmUgaW5zZXJ0ZWQsIGluIGdpdmVuIG9yZGVyLCBiZWZvcmUgdGhlIGZpcnN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSB0b2tlbiBUaGUgdG9rZW4ocykgdG8gcHJlcGVuZCB0byB0aGUgc3RyZWFtLlxuICAgICAqL1xuICAgIHByZXBlbmQ6IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0b2tlbikpIHtcbiAgICAgICAgdmFyIHRva2VucyA9IC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8odG9rZW4pO1xuICAgICAgICB3aGlsZSAodG9rZW5zLmxlbmd0aClcbiAgICAgICAgICB0aGlzLnRva2Vucy51bnNoaWZ0KHRva2Vucy5wb3AoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy51bnNoaWZ0KHRva2VuKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hlbiBvbmUgb3IgbW9yZSB0b2tlbnMgYXJlIHB1c2hlZCB0byBhIHN0cmVhbSwgdGhvc2UgdG9rZW5zXG4gICAgICogbXVzdCBiZSBpbnNlcnRlZCwgaW4gZ2l2ZW4gb3JkZXIsIGFmdGVyIHRoZSBsYXN0IHRva2VuIGluIHRoZVxuICAgICAqIHN0cmVhbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSB0b2tlbiBUaGUgdG9rZW5zKHMpIHRvIHByZXBlbmQgdG8gdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwdXNoOiBmdW5jdGlvbih0b2tlbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9rZW4pKSB7XG4gICAgICAgIHZhciB0b2tlbnMgPSAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHRva2VuKTtcbiAgICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbnMuc2hpZnQoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy9cbiAgLy8gNC4gRW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gNC4xIEVuY29kZXJzIGFuZCBkZWNvZGVyc1xuXG4gIC8qKiBAY29uc3QgKi9cbiAgdmFyIGZpbmlzaGVkID0gLTE7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZmF0YWwgSWYgdHJ1ZSwgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXI9fSBvcHRfY29kZV9wb2ludCBPdmVycmlkZSB0aGUgc3RhbmRhcmQgZmFsbGJhY2sgY29kZSBwb2ludC5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgY29kZSBwb2ludCB0byBpbnNlcnQgb24gYSBkZWNvZGluZyBlcnJvci5cbiAgICovXG4gIGZ1bmN0aW9uIGRlY29kZXJFcnJvcihmYXRhbCwgb3B0X2NvZGVfcG9pbnQpIHtcbiAgICBpZiAoZmF0YWwpXG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0RlY29kZXIgZXJyb3InKTtcbiAgICByZXR1cm4gb3B0X2NvZGVfcG9pbnQgfHwgMHhGRkZEO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSBjb2RlIHBvaW50IHRoYXQgY291bGQgbm90IGJlIGVuY29kZWQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gQWx3YXlzIHRocm93cywgbm8gdmFsdWUgaXMgYWN0dWFsbHkgcmV0dXJuZWQuXG4gICAqL1xuICBmdW5jdGlvbiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCkge1xuICAgIHRocm93IFR5cGVFcnJvcignVGhlIGNvZGUgcG9pbnQgJyArIGNvZGVfcG9pbnQgKyAnIGNvdWxkIG5vdCBiZSBlbmNvZGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbnRlcmZhY2UgKi9cbiAgZnVuY3Rpb24gRGVjb2RlcigpIHt9XG4gIERlY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LCBvciB8ZmluaXNoZWR8LlxuICAgICAqL1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge31cbiAgfTtcblxuICAvKiogQGludGVyZmFjZSAqL1xuICBmdW5jdGlvbiBFbmNvZGVyKCkge31cbiAgRW5jb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGNvZGUgcG9pbnRzIGJlaW5nIGVuY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LCBvciB8ZmluaXNoZWR8LlxuICAgICAqL1xuICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge31cbiAgfTtcblxuICAvLyA0LjIgTmFtZXMgYW5kIGxhYmVsc1xuXG4gIC8vIFRPRE86IERlZmluZSBAdHlwZWRlZiBmb3IgRW5jb2Rpbmc6IHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9pc3N1ZXMvMjQ3XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYWJlbCBUaGUgZW5jb2RpbmcgbGFiZWwuXG4gICAqIEByZXR1cm4gez97bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fX1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEVuY29kaW5nKGxhYmVsKSB7XG4gICAgLy8gMS4gUmVtb3ZlIGFueSBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlIGZyb20gbGFiZWwuXG4gICAgbGFiZWwgPSBTdHJpbmcobGFiZWwpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gMi4gSWYgbGFiZWwgaXMgYW4gQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgYW55IG9mIHRoZVxuICAgIC8vIGxhYmVscyBsaXN0ZWQgaW4gdGhlIHRhYmxlIGJlbG93LCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAvLyBlbmNvZGluZywgYW5kIGZhaWx1cmUgb3RoZXJ3aXNlLlxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobGFiZWxfdG9fZW5jb2RpbmcsIGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsX3RvX2VuY29kaW5nW2xhYmVsXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RpbmdzIHRhYmxlOiBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy9lbmNvZGluZ3MuanNvblxuICAgKiBAY29uc3RcbiAgICogQHR5cGUgeyFBcnJheS48e1xuICAgKiAgICAgICAgICBoZWFkaW5nOiBzdHJpbmcsXG4gICAqICAgICAgICAgIGVuY29kaW5nczogQXJyYXkuPHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59PlxuICAgKiAgICAgICAgfT59XG4gICAqL1xuICB2YXIgZW5jb2RpbmdzID0gW1xuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ1bmljb2RlLTEtMS11dGYtOFwiLFxuICAgICAgICAgIFwidXRmLThcIixcbiAgICAgICAgICBcInV0ZjhcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ1dGYtOFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJUaGUgRW5jb2RpbmdcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCI4NjZcIixcbiAgICAgICAgICBcImNwODY2XCIsXG4gICAgICAgICAgXCJjc2libTg2NlwiLFxuICAgICAgICAgIFwiaWJtODY2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaWJtODY2XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW4yXCIsXG4gICAgICAgICAgXCJpc28tODg1OS0yXCIsXG4gICAgICAgICAgXCJpc28taXItMTAxXCIsXG4gICAgICAgICAgXCJpc284ODU5LTJcIixcbiAgICAgICAgICBcImlzbzg4NTkyXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0yXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0yOjE5ODdcIixcbiAgICAgICAgICBcImwyXCIsXG4gICAgICAgICAgXCJsYXRpbjJcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0yXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW4zXCIsXG4gICAgICAgICAgXCJpc28tODg1OS0zXCIsXG4gICAgICAgICAgXCJpc28taXItMTA5XCIsXG4gICAgICAgICAgXCJpc284ODU5LTNcIixcbiAgICAgICAgICBcImlzbzg4NTkzXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0zXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0zOjE5ODhcIixcbiAgICAgICAgICBcImwzXCIsXG4gICAgICAgICAgXCJsYXRpbjNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0zXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW40XCIsXG4gICAgICAgICAgXCJpc28tODg1OS00XCIsXG4gICAgICAgICAgXCJpc28taXItMTEwXCIsXG4gICAgICAgICAgXCJpc284ODU5LTRcIixcbiAgICAgICAgICBcImlzbzg4NTk0XCIsXG4gICAgICAgICAgXCJpc29fODg1OS00XCIsXG4gICAgICAgICAgXCJpc29fODg1OS00OjE5ODhcIixcbiAgICAgICAgICBcImw0XCIsXG4gICAgICAgICAgXCJsYXRpbjRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS00XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW5jeXJpbGxpY1wiLFxuICAgICAgICAgIFwiY3lyaWxsaWNcIixcbiAgICAgICAgICBcImlzby04ODU5LTVcIixcbiAgICAgICAgICBcImlzby1pci0xNDRcIixcbiAgICAgICAgICBcImlzbzg4NTktNVwiLFxuICAgICAgICAgIFwiaXNvODg1OTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTU6MTk4OFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYXJhYmljXCIsXG4gICAgICAgICAgXCJhc21vLTcwOFwiLFxuICAgICAgICAgIFwiY3Npc284ODU5NmVcIixcbiAgICAgICAgICBcImNzaXNvODg1OTZpXCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluYXJhYmljXCIsXG4gICAgICAgICAgXCJlY21hLTExNFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNi1lXCIsXG4gICAgICAgICAgXCJpc28tODg1OS02LWlcIixcbiAgICAgICAgICBcImlzby1pci0xMjdcIixcbiAgICAgICAgICBcImlzbzg4NTktNlwiLFxuICAgICAgICAgIFwiaXNvODg1OTZcIixcbiAgICAgICAgICBcImlzb184ODU5LTZcIixcbiAgICAgICAgICBcImlzb184ODU5LTY6MTk4N1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbmdyZWVrXCIsXG4gICAgICAgICAgXCJlY21hLTExOFwiLFxuICAgICAgICAgIFwiZWxvdF85MjhcIixcbiAgICAgICAgICBcImdyZWVrXCIsXG4gICAgICAgICAgXCJncmVlazhcIixcbiAgICAgICAgICBcImlzby04ODU5LTdcIixcbiAgICAgICAgICBcImlzby1pci0xMjZcIixcbiAgICAgICAgICBcImlzbzg4NTktN1wiLFxuICAgICAgICAgIFwiaXNvODg1OTdcIixcbiAgICAgICAgICBcImlzb184ODU5LTdcIixcbiAgICAgICAgICBcImlzb184ODU5LTc6MTk4N1wiLFxuICAgICAgICAgIFwic3VuX2V1X2dyZWVrXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktN1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzg4NTk4ZVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbmhlYnJld1wiLFxuICAgICAgICAgIFwiaGVicmV3XCIsXG4gICAgICAgICAgXCJpc28tODg1OS04XCIsXG4gICAgICAgICAgXCJpc28tODg1OS04LWVcIixcbiAgICAgICAgICBcImlzby1pci0xMzhcIixcbiAgICAgICAgICBcImlzbzg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvODg1OThcIixcbiAgICAgICAgICBcImlzb184ODU5LThcIixcbiAgICAgICAgICBcImlzb184ODU5LTg6MTk4OFwiLFxuICAgICAgICAgIFwidmlzdWFsXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktOFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzg4NTk4aVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOC1pXCIsXG4gICAgICAgICAgXCJsb2dpY2FsXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktOC1pXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW42XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xMFwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE1N1wiLFxuICAgICAgICAgIFwiaXNvODg1OS0xMFwiLFxuICAgICAgICAgIFwiaXNvODg1OTEwXCIsXG4gICAgICAgICAgXCJsNlwiLFxuICAgICAgICAgIFwibGF0aW42XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiaXNvLTg4NTktMTNcIixcbiAgICAgICAgICBcImlzbzg4NTktMTNcIixcbiAgICAgICAgICBcImlzbzg4NTkxM1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTEzXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTE0XCIsXG4gICAgICAgICAgXCJpc284ODU5LTE0XCIsXG4gICAgICAgICAgXCJpc284ODU5MTRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xNFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluOVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTVcIixcbiAgICAgICAgICBcImlzbzg4NTktMTVcIixcbiAgICAgICAgICBcImlzbzg4NTkxNVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMTVcIixcbiAgICAgICAgICBcImw5XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiaXNvLTg4NTktMTZcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xNlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2tvaThyXCIsXG4gICAgICAgICAgXCJrb2lcIixcbiAgICAgICAgICBcImtvaThcIixcbiAgICAgICAgICBcImtvaTgtclwiLFxuICAgICAgICAgIFwia29pOF9yXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwia29pOC1yXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImtvaTgtcnVcIixcbiAgICAgICAgICBcImtvaTgtdVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImtvaTgtdVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc21hY2ludG9zaFwiLFxuICAgICAgICAgIFwibWFjXCIsXG4gICAgICAgICAgXCJtYWNpbnRvc2hcIixcbiAgICAgICAgICBcIngtbWFjLXJvbWFuXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwibWFjaW50b3NoXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImRvcy04NzRcIixcbiAgICAgICAgICBcImlzby04ODU5LTExXCIsXG4gICAgICAgICAgXCJpc284ODU5LTExXCIsXG4gICAgICAgICAgXCJpc284ODU5MTFcIixcbiAgICAgICAgICBcInRpcy02MjBcIixcbiAgICAgICAgICBcIndpbmRvd3MtODc0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy04NzRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjUwXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTBcIixcbiAgICAgICAgICBcIngtY3AxMjUwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1MVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUxXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJhbnNpX3gzLjQtMTk2OFwiLFxuICAgICAgICAgIFwiYXNjaWlcIixcbiAgICAgICAgICBcImNwMTI1MlwiLFxuICAgICAgICAgIFwiY3A4MTlcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW4xXCIsXG4gICAgICAgICAgXCJpYm04MTlcIixcbiAgICAgICAgICBcImlzby04ODU5LTFcIixcbiAgICAgICAgICBcImlzby1pci0xMDBcIixcbiAgICAgICAgICBcImlzbzg4NTktMVwiLFxuICAgICAgICAgIFwiaXNvODg1OTFcIixcbiAgICAgICAgICBcImlzb184ODU5LTFcIixcbiAgICAgICAgICBcImlzb184ODU5LTE6MTk4N1wiLFxuICAgICAgICAgIFwibDFcIixcbiAgICAgICAgICBcImxhdGluMVwiLFxuICAgICAgICAgIFwidXMtYXNjaWlcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MlwiLFxuICAgICAgICAgIFwieC1jcDEyNTJcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTJcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjUzXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTNcIixcbiAgICAgICAgICBcIngtY3AxMjUzXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUzXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NFwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbjVcIixcbiAgICAgICAgICBcImlzby04ODU5LTlcIixcbiAgICAgICAgICBcImlzby1pci0xNDhcIixcbiAgICAgICAgICBcImlzbzg4NTktOVwiLFxuICAgICAgICAgIFwiaXNvODg1OTlcIixcbiAgICAgICAgICBcImlzb184ODU5LTlcIixcbiAgICAgICAgICBcImlzb184ODU5LTk6MTk4OVwiLFxuICAgICAgICAgIFwibDVcIixcbiAgICAgICAgICBcImxhdGluNVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU0XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTVcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NVwiLFxuICAgICAgICAgIFwieC1jcDEyNTVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU2XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTZcIixcbiAgICAgICAgICBcIngtY3AxMjU2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU2XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1N1wiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU3XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1N1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1N1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNThcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1OFwiLFxuICAgICAgICAgIFwieC1jcDEyNThcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNThcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwieC1tYWMtY3lyaWxsaWNcIixcbiAgICAgICAgICBcIngtbWFjLXVrcmFpbmlhblwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIngtbWFjLWN5cmlsbGljXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjaGluZXNlXCIsXG4gICAgICAgICAgXCJjc2diMjMxMlwiLFxuICAgICAgICAgIFwiY3Npc281OGdiMjMxMjgwXCIsXG4gICAgICAgICAgXCJnYjIzMTJcIixcbiAgICAgICAgICBcImdiXzIzMTJcIixcbiAgICAgICAgICBcImdiXzIzMTItODBcIixcbiAgICAgICAgICBcImdia1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTU4XCIsXG4gICAgICAgICAgXCJ4LWdia1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImdia1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJnYjE4MDMwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiZ2IxODAzMFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlIChzaW1wbGlmaWVkKSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJiaWc1XCIsXG4gICAgICAgICAgXCJiaWc1LWhrc2NzXCIsXG4gICAgICAgICAgXCJjbi1iaWc1XCIsXG4gICAgICAgICAgXCJjc2JpZzVcIixcbiAgICAgICAgICBcIngteC1iaWc1XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiYmlnNVwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NldWNwa2RmbXRqYXBhbmVzZVwiLFxuICAgICAgICAgIFwiZXVjLWpwXCIsXG4gICAgICAgICAgXCJ4LWV1Yy1qcFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImV1Yy1qcFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzIwMjJqcFwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItanBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tMjAyMi1qcFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc3NoaWZ0amlzXCIsXG4gICAgICAgICAgXCJtczkzMlwiLFxuICAgICAgICAgIFwibXNfa2FuamlcIixcbiAgICAgICAgICBcInNoaWZ0LWppc1wiLFxuICAgICAgICAgIFwic2hpZnRfamlzXCIsXG4gICAgICAgICAgXCJzamlzXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTMxalwiLFxuICAgICAgICAgIFwieC1zamlzXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwic2hpZnRfamlzXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtdWx0aS1ieXRlIEphcGFuZXNlIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzZXVja3JcIixcbiAgICAgICAgICBcImNza3NjNTYwMTE5ODdcIixcbiAgICAgICAgICBcImV1Yy1rclwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE0OVwiLFxuICAgICAgICAgIFwia29yZWFuXCIsXG4gICAgICAgICAgXCJrc19jXzU2MDEtMTk4N1wiLFxuICAgICAgICAgIFwia3NfY181NjAxLTE5ODlcIixcbiAgICAgICAgICBcImtzYzU2MDFcIixcbiAgICAgICAgICBcImtzY181NjAxXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTk0OVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImV1Yy1rclwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc28yMDIya3JcIixcbiAgICAgICAgICBcImh6LWdiLTIzMTJcIixcbiAgICAgICAgICBcImlzby0yMDIyLWNuXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1jbi1leHRcIixcbiAgICAgICAgICBcImlzby0yMDIyLWtyXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwicmVwbGFjZW1lbnRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidXRmLTE2YmVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ1dGYtMTZiZVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ1dGYtMTZcIixcbiAgICAgICAgICBcInV0Zi0xNmxlXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLTE2bGVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwieC11c2VyLWRlZmluZWRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ4LXVzZXItZGVmaW5lZFwiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbWlzY2VsbGFuZW91cyBlbmNvZGluZ3NcIlxuICB9XG4gIF07XG5cbiAgLy8gTGFiZWwgdG8gZW5jb2RpbmcgcmVnaXN0cnkuXG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcse25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn0+fSAqL1xuICB2YXIgbGFiZWxfdG9fZW5jb2RpbmcgPSB7fTtcbiAgZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oY2F0ZWdvcnkpIHtcbiAgICBjYXRlZ29yeS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgZW5jb2RpbmcubGFiZWxzLmZvckVhY2goZnVuY3Rpb24obGFiZWwpIHtcbiAgICAgICAgbGFiZWxfdG9fZW5jb2RpbmdbbGFiZWxdID0gZW5jb2Rpbmc7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gUmVnaXN0cnkgb2Ygb2YgZW5jb2Rlci9kZWNvZGVyIGZhY3RvcmllcywgYnkgZW5jb2RpbmcgbmFtZS5cbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oe2ZhdGFsOmJvb2xlYW59KTogRW5jb2Rlcj59ICovXG4gIHZhciBlbmNvZGVycyA9IHt9O1xuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBmdW5jdGlvbih7ZmF0YWw6Ym9vbGVhbn0pOiBEZWNvZGVyPn0gKi9cbiAgdmFyIGRlY29kZXJzID0ge307XG5cbiAgLy9cbiAgLy8gNS4gSW5kZXhlc1xuICAvL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9pbnRlciBUaGUgfHBvaW50ZXJ8IHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7KCFBcnJheS48P251bWJlcj58dW5kZWZpbmVkKX0gaW5kZXggVGhlIHxpbmRleHwgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB8aW5kZXh8LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgpIHtcbiAgICBpZiAoIWluZGV4KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gaW5kZXhbcG9pbnRlcl0gfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGUgcG9pbnR8IHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7IUFycmF5Ljw/bnVtYmVyPn0gaW5kZXggVGhlIHxpbmRleHwgdG8gc2VhcmNoIHdpdGhpbi5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGZpcnN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byB8Y29kZSBwb2ludHwgaW5cbiAgICogICAgIHxpbmRleHwsIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB8aW5kZXh8LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KSB7XG4gICAgdmFyIHBvaW50ZXIgPSBpbmRleC5pbmRleE9mKGNvZGVfcG9pbnQpO1xuICAgIHJldHVybiBwb2ludGVyID09PSAtMSA/IG51bGwgOiBwb2ludGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGluZGV4LlxuICAgKiBAcmV0dXJuIHsoIUFycmF5LjxudW1iZXI+fCFBcnJheS48QXJyYXkuPG51bWJlcj4+KX1cbiAgICogICovXG4gIGZ1bmN0aW9uIGluZGV4KG5hbWUpIHtcbiAgICBpZiAoISgnZW5jb2RpbmctaW5kZXhlcycgaW4gZ2xvYmFsKSkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmRleGVzIG1pc3NpbmcuXCIgK1xuICAgICAgICAgICAgICAgICAgXCIgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzP1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGdsb2JhbFsnZW5jb2RpbmctaW5kZXhlcyddW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb2ludGVyIFRoZSB8cG9pbnRlcnwgdG8gc2VhcmNoIGZvciBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4R0IxODAzMFJhbmdlc0NvZGVQb2ludEZvcihwb2ludGVyKSB7XG4gICAgLy8gMS4gSWYgcG9pbnRlciBpcyBncmVhdGVyIHRoYW4gMzk0MTkgYW5kIGxlc3MgdGhhbiAxODkwMDAsIG9yXG4gICAgLy8gcG9pbnRlciBpcyBncmVhdGVyIHRoYW4gMTIzNzU3NSwgcmV0dXJuIG51bGwuXG4gICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYgcG9pbnRlciA8IDE4OTAwMCkgfHwgKHBvaW50ZXIgPiAxMjM3NTc1KSlcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgLy8gMi4gTGV0IG9mZnNldCBiZSB0aGUgbGFzdCBwb2ludGVyIGluIGluZGV4IGdiMTgwMzAgcmFuZ2VzIHRoYXRcbiAgICAvLyBpcyBlcXVhbCB0byBvciBsZXNzIHRoYW4gcG9pbnRlciBhbmQgbGV0IGNvZGUgcG9pbnQgb2Zmc2V0IGJlXG4gICAgLy8gaXRzIGNvcnJlc3BvbmRpbmcgY29kZSBwb2ludC5cbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgY29kZV9wb2ludF9vZmZzZXQgPSAwO1xuICAgIHZhciBpZHggPSBpbmRleCgnZ2IxODAzMCcpO1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpZHgubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgICAgdmFyIGVudHJ5ID0gaWR4W2ldO1xuICAgICAgaWYgKGVudHJ5WzBdIDw9IHBvaW50ZXIpIHtcbiAgICAgICAgb2Zmc2V0ID0gZW50cnlbMF07XG4gICAgICAgIGNvZGVfcG9pbnRfb2Zmc2V0ID0gZW50cnlbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAzLiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQgb2Zmc2V0ICtcbiAgICAvLyBwb2ludGVyIOKIkiBvZmZzZXQuXG4gICAgcmV0dXJuIGNvZGVfcG9pbnRfb2Zmc2V0ICsgcG9pbnRlciAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGUgcG9pbnR8IHRvIGxvY2F0ZSBpbiB0aGUgZ2IxODAzMCBpbmRleC5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgZmlyc3QgcG9pbnRlciBjb3JyZXNwb25kaW5nIHRvIHxjb2RlIHBvaW50fCBpbiB0aGVcbiAgICogICAgIGdiMTgwMzAgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEdCMTgwMzBSYW5nZXNQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcbiAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIHRoZSBsYXN0IGNvZGUgcG9pbnQgaW4gaW5kZXggZ2IxODAzMCByYW5nZXNcbiAgICAvLyB0aGF0IGlzIGVxdWFsIHRvIG9yIGxlc3MgdGhhbiBjb2RlIHBvaW50IGFuZCBsZXQgcG9pbnRlciBvZmZzZXRcbiAgICAvLyBiZSBpdHMgY29ycmVzcG9uZGluZyBwb2ludGVyLlxuICAgIHZhciBvZmZzZXQgPSAwO1xuICAgIHZhciBwb2ludGVyX29mZnNldCA9IDA7XG4gICAgdmFyIGlkeCA9IGluZGV4KCdnYjE4MDMwJyk7XG4gICAgdmFyIGk7XG4gICAgZm9yIChpID0gMDsgaSA8IGlkeC5sZW5ndGg7ICsraSkge1xuICAgICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgICB2YXIgZW50cnkgPSBpZHhbaV07XG4gICAgICBpZiAoZW50cnlbMV0gPD0gY29kZV9wb2ludCkge1xuICAgICAgICBvZmZzZXQgPSBlbnRyeVsxXTtcbiAgICAgICAgcG9pbnRlcl9vZmZzZXQgPSBlbnRyeVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIuIFJldHVybiBhIHBvaW50ZXIgd2hvc2UgdmFsdWUgaXMgcG9pbnRlciBvZmZzZXQgKyBjb2RlIHBvaW50XG4gICAgLy8g4oiSIG9mZnNldC5cbiAgICByZXR1cm4gcG9pbnRlcl9vZmZzZXQgKyBjb2RlX3BvaW50IC0gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZV9wb2ludHwgdG8gc2VhcmNoIGZvciBpbiB0aGUgc2hpZnRfamlzIGluZGV4LlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHxwb2ludGVyfCBpbiB8aW5kZXh8LFxuICAgKiAgICAgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHRoZSBzaGlmdF9qaXMgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleFNoaWZ0SklTUG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG4gICAgLy8gMS4gTGV0IGluZGV4IGJlIGluZGV4IGppczAyMDggZXhjbHVkaW5nIGFsbCBwb2ludGVycyBpbiB0aGVcbiAgICAvLyByYW5nZSA4MjcyIHRvIDg4MzUuXG4gICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG4gICAgaWYgKHBvaW50ZXIgPT09IG51bGwgfHwgaW5SYW5nZShwb2ludGVyLCA4MjcyLCA4ODM1KSlcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgLy8gMi4gUmV0dXJuIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4LlxuICAgIHJldHVybiBwb2ludGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZV9wb2ludHwgdG8gc2VhcmNoIGZvciBpbiB0aGUgYmlnNSBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgYmlnNSBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4QmlnNVBvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuXG4gICAgLy8gMS4gTGV0IGluZGV4IGJlIGluZGV4IGJpZzUuXG4gICAgdmFyIGluZGV4XyA9IGluZGV4KCdiaWc1Jyk7XG5cbiAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIFUrMjU1MCwgVSsyNTVFLCBVKzI1NjEsIFUrMjU2QSwgVSs1MzQxLCBvclxuICAgIC8vIFUrNTM0NSwgcmV0dXJuIHRoZSBsYXN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byBjb2RlIHBvaW50IGluXG4gICAgLy8gaW5kZXguXG4gICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjU1MCB8fCBjb2RlX3BvaW50ID09PSAweDI1NUUgfHxcbiAgICAgICAgY29kZV9wb2ludCA9PT0gMHgyNTYxIHx8IGNvZGVfcG9pbnQgPT09IDB4MjU2QSB8fFxuICAgICAgICBjb2RlX3BvaW50ID09PSAweDUzNDEgfHwgY29kZV9wb2ludCA9PT0gMHg1MzQ1KSB7XG4gICAgICByZXR1cm4gaW5kZXgubGFzdEluZGV4T2YoY29kZV9wb2ludCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4LlxuICAgIHJldHVybiBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXhfKTtcbiAgfVxuXG4gIC8vXG4gIC8vIDcuIEFQSVxuICAvL1xuXG4gIC8qKiBAY29uc3QgKi8gdmFyIERFRkFVTFRfRU5DT0RJTkcgPSAndXRmLTgnO1xuXG4gIC8vIDcuMSBJbnRlcmZhY2UgVGV4dERlY29kZXJcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nPX0gZW5jb2RpbmcgVGhlIGxhYmVsIG9mIHRoZSBlbmNvZGluZztcbiAgICogICAgIGRlZmF1bHRzIHRvICd1dGYtOCcuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVGV4dERlY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVGV4dERlY29kZXIpKSB7XG4gICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKTtcbiAgICB9XG4gICAgZW5jb2RpbmcgPSBlbmNvZGluZyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKGVuY29kaW5nKSA6IERFRkFVTFRfRU5DT0RJTkc7XG4gICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9lbmNvZGluZyA9IGdldEVuY29kaW5nKGVuY29kaW5nKTtcbiAgICBpZiAodGhpcy5fZW5jb2RpbmcgPT09IG51bGwgfHwgdGhpcy5fZW5jb2RpbmcubmFtZSA9PT0gJ3JlcGxhY2VtZW50JylcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICBpZiAoIWRlY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKSB7XG4gICAgICB0aHJvdyBFcnJvcignRGVjb2RlciBub3QgcHJlc2VudC4nICtcbiAgICAgICAgICAgICAgICAgICcgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzPycpO1xuICAgIH1cblxuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9zdHJlYW1pbmcgPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fQk9Nc2VlbiA9IGZhbHNlO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7P0RlY29kZXJ9ICovXG4gICAgdGhpcy5fZGVjb2RlciA9IG51bGw7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX2ZhdGFsID0gQm9vbGVhbihvcHRpb25zWydmYXRhbCddKTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5faWdub3JlQk9NID0gQm9vbGVhbihvcHRpb25zWydpZ25vcmVCT00nXSk7XG5cbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuY29kaW5nJywge3ZhbHVlOiB0aGlzLl9lbmNvZGluZy5uYW1lfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2ZhdGFsJywge3ZhbHVlOiB0aGlzLl9mYXRhbH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdpZ25vcmVCT00nLCB7dmFsdWU6IHRoaXMuX2lnbm9yZUJPTX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuY29kaW5nID0gdGhpcy5fZW5jb2RpbmcubmFtZTtcbiAgICAgIHRoaXMuZmF0YWwgPSB0aGlzLl9mYXRhbDtcbiAgICAgIHRoaXMuaWdub3JlQk9NID0gdGhpcy5faWdub3JlQk9NO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgVGV4dERlY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJWaWV3PX0gaW5wdXQgVGhlIGJ1ZmZlciBvZiBieXRlcyB0byBkZWNvZGUuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZGVjb2RlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZGVjb2RlOiBmdW5jdGlvbiBkZWNvZGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBieXRlcztcbiAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIGlucHV0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShpbnB1dCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiYgJ2J1ZmZlcicgaW4gaW5wdXQgJiZcbiAgICAgICAgICAgICAgICAgaW5wdXQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShpbnB1dC5idWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5ieXRlTGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgICB9XG5cbiAgICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG5cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIHRoaXMuX2RlY29kZXIgPSBkZWNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSh7ZmF0YWw6IHRoaXMuX2ZhdGFsfSk7XG4gICAgICAgIHRoaXMuX0JPTXNlZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3N0cmVhbWluZyA9IEJvb2xlYW4ob3B0aW9uc1snc3RyZWFtJ10pO1xuXG4gICAgICB2YXIgaW5wdXRfc3RyZWFtID0gbmV3IFN0cmVhbShieXRlcyk7XG5cbiAgICAgIHZhciBjb2RlX3BvaW50cyA9IFtdO1xuXG4gICAgICAvKiogQHR5cGUgez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9ICovXG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICB3aGlsZSAoIWlucHV0X3N0cmVhbS5lbmRPZlN0cmVhbSgpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoLmFwcGx5KGNvZGVfcG9pbnRzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9wb2ludHMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoLmFwcGx5KGNvZGVfcG9pbnRzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgfSB3aGlsZSAoIWlucHV0X3N0cmVhbS5lbmRPZlN0cmVhbSgpKTtcbiAgICAgICAgdGhpcy5fZGVjb2RlciA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2RlX3BvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gSWYgZW5jb2RpbmcgaXMgb25lIG9mIHV0Zi04LCB1dGYtMTZiZSwgYW5kIHV0Zi0xNmxlLCBhbmRcbiAgICAgICAgLy8gaWdub3JlIEJPTSBmbGFnIGFuZCBCT00gc2VlbiBmbGFnIGFyZSB1bnNldCwgcnVuIHRoZXNlXG4gICAgICAgIC8vIHN1YnN1YnN0ZXBzOlxuICAgICAgICBpZiAoWyd1dGYtOCcsICd1dGYtMTZsZScsICd1dGYtMTZiZSddLmluZGV4T2YodGhpcy5lbmNvZGluZykgIT09IC0xICYmXG4gICAgICAgICAgICAhdGhpcy5faWdub3JlQk9NICYmICF0aGlzLl9CT01zZWVuKSB7XG4gICAgICAgICAgLy8gSWYgdG9rZW4gaXMgVStGRUZGLCBzZXQgQk9NIHNlZW4gZmxhZy5cbiAgICAgICAgICBpZiAoY29kZV9wb2ludHNbMF0gPT09IDB4RkVGRikge1xuICAgICAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IHRydWU7XG4gICAgICAgICAgICBjb2RlX3BvaW50cy5zaGlmdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRva2VuIGlzIG5vdCBlbmQtb2Ytc3RyZWFtLCBzZXQgQk9NIHNlZW5cbiAgICAgICAgICAgIC8vIGZsYWcgYW5kIGFwcGVuZCB0b2tlbiB0byBvdXRwdXQuXG4gICAgICAgICAgICB0aGlzLl9CT01zZWVuID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvZGVQb2ludHNUb1N0cmluZyhjb2RlX3BvaW50cyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIDcuMiBJbnRlcmZhY2UgVGV4dEVuY29kZXJcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nPX0gZW5jb2RpbmcgVGhlIGxhYmVsIG9mIHRoZSBlbmNvZGluZztcbiAgICogICAgIGRlZmF1bHRzIHRvICd1dGYtOCcuXG4gICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVGV4dEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVGV4dEVuY29kZXIpKVxuICAgICAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG4gICAgZW5jb2RpbmcgPSBlbmNvZGluZyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKGVuY29kaW5nKSA6IERFRkFVTFRfRU5DT0RJTkc7XG4gICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcbiAgICAvKiogQHByaXZhdGUgKi9cbiAgICB0aGlzLl9lbmNvZGluZyA9IGdldEVuY29kaW5nKGVuY29kaW5nKTtcbiAgICBpZiAodGhpcy5fZW5jb2RpbmcgPT09IG51bGwgfHwgdGhpcy5fZW5jb2RpbmcubmFtZSA9PT0gJ3JlcGxhY2VtZW50JylcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICB2YXIgYWxsb3dMZWdhY3lFbmNvZGluZyA9XG4gICAgICAgICAgQm9vbGVhbihvcHRpb25zWydOT05TVEFOREFSRF9hbGxvd0xlZ2FjeUVuY29kaW5nJ10pO1xuICAgIHZhciBpc0xlZ2FjeUVuY29kaW5nID0gKHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtOCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTE2bGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi0xNmJlJyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IChpc0xlZ2FjeUVuY29kaW5nICYmICFhbGxvd0xlZ2FjeUVuY29kaW5nKSlcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG5cbiAgICBpZiAoIWVuY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKSB7XG4gICAgICB0aHJvdyBFcnJvcignRW5jb2RlciBub3QgcHJlc2VudC4nICtcbiAgICAgICAgICAgICAgICAgICcgRGlkIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSBlbmNvZGluZy1pbmRleGVzLmpzPycpO1xuICAgIH1cblxuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9zdHJlYW1pbmcgPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUgez9FbmNvZGVyfSAqL1xuICAgIHRoaXMuX2VuY29kZXIgPSBudWxsO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7e2ZhdGFsOiBib29sZWFufX0gKi9cbiAgICB0aGlzLl9vcHRpb25zID0ge2ZhdGFsOiBCb29sZWFuKG9wdGlvbnNbJ2ZhdGFsJ10pfTtcblxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuY29kaW5nJywge3ZhbHVlOiB0aGlzLl9lbmNvZGluZy5uYW1lfSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5lbmNvZGluZyA9IHRoaXMuX2VuY29kaW5nLm5hbWU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIFRleHRFbmNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZz19IG9wdF9zdHJpbmcgVGhlIHN0cmluZyB0byBlbmNvZGUuXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAgICogQHJldHVybiB7VWludDhBcnJheX0gRW5jb2RlZCBieXRlcywgYXMgYSBVaW50OEFycmF5LlxuICAgICAqL1xuICAgIGVuY29kZTogZnVuY3Rpb24gZW5jb2RlKG9wdF9zdHJpbmcsIG9wdGlvbnMpIHtcbiAgICAgIG9wdF9zdHJpbmcgPSBvcHRfc3RyaW5nID8gU3RyaW5nKG9wdF9zdHJpbmcpIDogJyc7XG4gICAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuXG4gICAgICAvLyBOT1RFOiBUaGlzIG9wdGlvbiBpcyBub25zdGFuZGFyZC4gTm9uZSBvZiB0aGUgZW5jb2RpbmdzXG4gICAgICAvLyBwZXJtaXR0ZWQgZm9yIGVuY29kaW5nIChpLmUuIFVURi04LCBVVEYtMTYpIGFyZSBzdGF0ZWZ1bCxcbiAgICAgIC8vIHNvIHN0cmVhbWluZyBpcyBub3QgbmVjZXNzYXJ5LlxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpXG4gICAgICAgIHRoaXMuX2VuY29kZXIgPSBlbmNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSh0aGlzLl9vcHRpb25zKTtcbiAgICAgIHRoaXMuX3N0cmVhbWluZyA9IEJvb2xlYW4ob3B0aW9uc1snc3RyZWFtJ10pO1xuXG4gICAgICB2YXIgYnl0ZXMgPSBbXTtcbiAgICAgIHZhciBpbnB1dF9zdHJlYW0gPSBuZXcgU3RyZWFtKHN0cmluZ1RvQ29kZVBvaW50cyhvcHRfc3RyaW5nKSk7XG4gICAgICAvKiogQHR5cGUgez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9ICovXG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgYnl0ZXMucHVzaC5hcHBseShieXRlcywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJ5dGVzLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgICAgYnl0ZXMucHVzaC5hcHBseShieXRlcywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBieXRlcy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW5jb2RlciA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgIH1cbiAgfTtcblxuXG4gIC8vXG4gIC8vIDguIFRoZSBlbmNvZGluZ1xuICAvL1xuXG4gIC8vIDguMSB1dGYtOFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGOERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyB1dGYtOCdzIGRlY29kZXIncyBoYXMgYW4gYXNzb2NpYXRlZCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOFxuICAgIC8vIGJ5dGVzIHNlZW4sIGFuZCB1dGYtOCBieXRlcyBuZWVkZWQgKGFsbCBpbml0aWFsbHkgMCksIGEgdXRmLThcbiAgICAvLyBsb3dlciBib3VuZGFyeSAoaW5pdGlhbGx5IDB4ODApLCBhbmQgYSB1dGYtOCB1cHBlciBib3VuZGFyeVxuICAgIC8vIChpbml0aWFsbHkgMHhCRikuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2NvZGVfcG9pbnQgPSAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9ieXRlc19zZWVuID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgdXRmLTggYnl0ZXMgbmVlZGVkIGlzIG5vdCAwLFxuICAgICAgLy8gc2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiB1dGY4X2J5dGVzX25lZWRlZCAhPT0gMCkge1xuICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIHV0Zi04IGJ5dGVzIG5lZWRlZCBpcyAwLCBiYXNlZCBvbiBieXRlOlxuICAgICAgaWYgKHV0ZjhfYnl0ZXNfbmVlZGVkID09PSAwKSB7XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhDMiB0byAweERGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4QzIsIDB4REYpKSB7XG4gICAgICAgICAgLy8gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAxIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvIGJ5dGVcbiAgICAgICAgICAvLyDiiJIgMHhDMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDE7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4QzA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweEUwIHRvIDB4RUZcbiAgICAgICAgZWxzZSBpZiAoaW5SYW5nZShiaXRlLCAweEUwLCAweEVGKSkge1xuICAgICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgMHhFMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4QTAuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RTApXG4gICAgICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHhBMDtcbiAgICAgICAgICAvLyAyLiBJZiBieXRlIGlzIDB4RUQsIHNldCB1dGYtOCB1cHBlciBib3VuZGFyeSB0byAweDlGLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEVEKVxuICAgICAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4OUY7XG4gICAgICAgICAgLy8gMy4gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAyIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvXG4gICAgICAgICAgLy8gYnl0ZSDiiJIgMHhFMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDI7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4RTA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweEYwIHRvIDB4RjRcbiAgICAgICAgZWxzZSBpZiAoaW5SYW5nZShiaXRlLCAweEYwLCAweEY0KSkge1xuICAgICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgMHhGMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4OTAuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RjApXG4gICAgICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg5MDtcbiAgICAgICAgICAvLyAyLiBJZiBieXRlIGlzIDB4RjQsIHNldCB1dGYtOCB1cHBlciBib3VuZGFyeSB0byAweDhGLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEY0KVxuICAgICAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4OEY7XG4gICAgICAgICAgLy8gMy4gU2V0IHV0Zi04IGJ5dGVzIG5lZWRlZCB0byAzIGFuZCB1dGYtOCBjb2RlIHBvaW50IHRvXG4gICAgICAgICAgLy8gYnl0ZSDiiJIgMHhGMC5cbiAgICAgICAgICB1dGY4X2J5dGVzX25lZWRlZCA9IDM7XG4gICAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gYml0ZSAtIDB4RjA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGVycm9yLlxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlbiAoYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhDMiB0byAweEY0KSBzZXQgdXRmLTggY29kZVxuICAgICAgICAvLyBwb2ludCB0byB1dGYtOCBjb2RlIHBvaW50IDw8ICg2IMOXIHV0Zi04IGJ5dGVzIG5lZWRlZCkgYW5kXG4gICAgICAgIC8vIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9jb2RlX3BvaW50IDw8ICg2ICogdXRmOF9ieXRlc19uZWVkZWQpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBub3QgaW4gdGhlIHJhbmdlIHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIHV0Zi04XG4gICAgICAvLyB1cHBlciBib3VuZGFyeSwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKCFpblJhbmdlKGJpdGUsIHV0ZjhfbG93ZXJfYm91bmRhcnksIHV0ZjhfdXBwZXJfYm91bmRhcnkpKSB7XG5cbiAgICAgICAgLy8gMS4gU2V0IHV0Zi04IGNvZGUgcG9pbnQsIHV0Zi04IGJ5dGVzIG5lZWRlZCwgYW5kIHV0Zi04XG4gICAgICAgIC8vIGJ5dGVzIHNlZW4gdG8gMCwgc2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4ODAsIGFuZCBzZXRcbiAgICAgICAgLy8gdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHhCRi5cbiAgICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9ieXRlc19uZWVkZWQgPSB1dGY4X2J5dGVzX3NlZW4gPSAwO1xuICAgICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MDtcbiAgICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gMy4gUmV0dXJuIGVycm9yLlxuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gU2V0IHV0Zi04IGxvd2VyIGJvdW5kYXJ5IHRvIDB4ODAgYW5kIHV0Zi04IHVwcGVyIGJvdW5kYXJ5XG4gICAgICAvLyB0byAweEJGLlxuICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODA7XG4gICAgICB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHhCRjtcblxuICAgICAgLy8gNi4gSW5jcmVhc2UgdXRmLTggYnl0ZXMgc2VlbiBieSBvbmUgYW5kIHNldCB1dGYtOCBjb2RlIHBvaW50XG4gICAgICAvLyB0byB1dGYtOCBjb2RlIHBvaW50ICsgKGJ5dGUg4oiSIDB4ODApIDw8ICg2IMOXICh1dGYtOCBieXRlc1xuICAgICAgLy8gbmVlZGVkIOKIkiB1dGYtOCBieXRlcyBzZWVuKSkuXG4gICAgICB1dGY4X2J5dGVzX3NlZW4gKz0gMTtcbiAgICAgIHV0ZjhfY29kZV9wb2ludCArPSAoYml0ZSAtIDB4ODApIDw8ICg2ICogKHV0ZjhfYnl0ZXNfbmVlZGVkIC0gdXRmOF9ieXRlc19zZWVuKSk7XG5cbiAgICAgIC8vIDcuIElmIHV0Zi04IGJ5dGVzIHNlZW4gaXMgbm90IGVxdWFsIHRvIHV0Zi04IGJ5dGVzIG5lZWRlZCxcbiAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgaWYgKHV0ZjhfYnl0ZXNfc2VlbiAhPT0gdXRmOF9ieXRlc19uZWVkZWQpXG4gICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAvLyA4LiBMZXQgY29kZSBwb2ludCBiZSB1dGYtOCBjb2RlIHBvaW50LlxuICAgICAgdmFyIGNvZGVfcG9pbnQgPSB1dGY4X2NvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDkuIFNldCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOCBieXRlcyBuZWVkZWQsIGFuZCB1dGYtOCBieXRlc1xuICAgICAgLy8gc2VlbiB0byAwLlxuICAgICAgdXRmOF9jb2RlX3BvaW50ID0gdXRmOF9ieXRlc19uZWVkZWQgPSB1dGY4X2J5dGVzX3NlZW4gPSAwO1xuXG4gICAgICAvLyAxMC4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGOEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN2YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gU2V0IGNvdW50IGFuZCBvZmZzZXQgYmFzZWQgb24gdGhlIHJhbmdlIGNvZGUgcG9pbnQgaXMgaW46XG4gICAgICB2YXIgY291bnQsIG9mZnNldDtcbiAgICAgIC8vIFUrMDA4MCB0byBVKzA3RkY6ICAgIDEgYW5kIDB4QzBcbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDA4MCwgMHgwN0ZGKSkge1xuICAgICAgICBjb3VudCA9IDE7XG4gICAgICAgIG9mZnNldCA9IDB4QzA7XG4gICAgICB9XG4gICAgICAvLyBVKzA4MDAgdG8gVStGRkZGOiAgICAyIGFuZCAweEUwXG4gICAgICBlbHNlIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDgwMCwgMHhGRkZGKSkge1xuICAgICAgICBjb3VudCA9IDI7XG4gICAgICAgIG9mZnNldCA9IDB4RTA7XG4gICAgICB9XG4gICAgICAvLyBVKzEwMDAwIHRvIFUrMTBGRkZGOiAzIGFuZCAweEYwXG4gICAgICBlbHNlIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MTAwMDAsIDB4MTBGRkZGKSkge1xuICAgICAgICBjb3VudCA9IDM7XG4gICAgICAgIG9mZnNldCA9IDB4RjA7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuTGV0IGJ5dGVzIGJlIGEgYnl0ZSBzZXF1ZW5jZSB3aG9zZSBmaXJzdCBieXRlIGlzIChjb2RlXG4gICAgICAvLyBwb2ludCA+PiAoNiDDlyBjb3VudCkpICsgb2Zmc2V0LlxuICAgICAgdmFyIGJ5dGVzID0gWyhjb2RlX3BvaW50ID4+ICg2ICogY291bnQpKSArIG9mZnNldF07XG5cbiAgICAgIC8vIDUuIFJ1biB0aGVzZSBzdWJzdGVwcyB3aGlsZSBjb3VudCBpcyBncmVhdGVyIHRoYW4gMDpcbiAgICAgIHdoaWxlIChjb3VudCA+IDApIHtcblxuICAgICAgICAvLyAxLiBTZXQgdGVtcCB0byBjb2RlIHBvaW50ID4+ICg2IMOXIChjb3VudCDiiJIgMSkpLlxuICAgICAgICB2YXIgdGVtcCA9IGNvZGVfcG9pbnQgPj4gKDYgKiAoY291bnQgLSAxKSk7XG5cbiAgICAgICAgLy8gMi4gQXBwZW5kIHRvIGJ5dGVzIDB4ODAgfCAodGVtcCAmIDB4M0YpLlxuICAgICAgICBieXRlcy5wdXNoKDB4ODAgfCAodGVtcCAmIDB4M0YpKTtcblxuICAgICAgICAvLyAzLiBEZWNyZWFzZSBjb3VudCBieSBvbmUuXG4gICAgICAgIGNvdW50IC09IDE7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBieXRlcyBieXRlcywgaW4gb3JkZXIuXG4gICAgICByZXR1cm4gYnl0ZXM7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi04J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEY4RW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTgnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjhEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vXG4gIC8vIDkuIExlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyA5LjEgc2luZ2xlLWJ5dGUgZGVjb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gaW5kZXggVGhlIGVuY29kaW5nIGluZGV4LlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNpbmdsZUJ5dGVEZWNvZGVyKGluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyAzLiBMZXQgY29kZSBwb2ludCBiZSB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgYnl0ZSDiiJIgMHg4MCBpblxuICAgICAgLy8gaW5kZXggc2luZ2xlLWJ5dGUuXG4gICAgICB2YXIgY29kZV9wb2ludCA9IGluZGV4W2JpdGUgLSAweDgwXTtcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgIH07XG4gIH1cblxuICAvLyA5LjIgc2luZ2xlLWJ5dGUgZW5jb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0geyFBcnJheS48P251bWJlcj59IGluZGV4IFRoZSBlbmNvZGluZyBpbmRleC5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaW5nbGVCeXRlRW5jb2RlcihpbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIHNpbmdsZS1ieXRlLlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBieXRlIHdob3NlIHZhbHVlIGlzIHBvaW50ZXIgKyAweDgwLlxuICAgICAgcmV0dXJuIHBvaW50ZXIgKyAweDgwO1xuICAgIH07XG4gIH1cblxuICAoZnVuY3Rpb24oKSB7XG4gICAgaWYgKCEoJ2VuY29kaW5nLWluZGV4ZXMnIGluIGdsb2JhbCkpXG4gICAgICByZXR1cm47XG4gICAgZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oY2F0ZWdvcnkpIHtcbiAgICAgIGlmIChjYXRlZ29yeS5oZWFkaW5nICE9PSAnTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29kaW5ncycpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhdGVnb3J5LmVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgIHZhciBuYW1lID0gZW5jb2RpbmcubmFtZTtcbiAgICAgICAgdmFyIGlkeCA9IGluZGV4KG5hbWUpO1xuICAgICAgICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gICAgICAgIGRlY29kZXJzW25hbWVdID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlQnl0ZURlY29kZXIoaWR4LCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICAgICAgICBlbmNvZGVyc1tuYW1lXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZUJ5dGVFbmNvZGVyKGlkeCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSgpKTtcblxuICAvL1xuICAvLyAxMC4gTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTAuMSBnYmtcblxuICAvLyAxMC4xLjEgZ2JrIGRlY29kZXJcbiAgLy8gZ2JrJ3MgZGVjb2RlciBpcyBnYjE4MDMwJ3MgZGVjb2Rlci5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZ2JrJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxMC4xLjIgZ2JrIGVuY29kZXJcbiAgLy8gZ2JrJ3MgZW5jb2RlciBpcyBnYjE4MDMwJ3MgZW5jb2RlciB3aXRoIGl0cyBnYmsgZmxhZyBzZXQuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2diayddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMEVuY29kZXIob3B0aW9ucywgdHJ1ZSk7XG4gIH07XG5cbiAgLy8gMTAuMiBnYjE4MDMwXG5cbiAgLy8gMTAuMi4xIGdiMTgwMzAgZGVjb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEdCMTgwMzBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGdiMTgwMzAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAvLyBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIChhbGwgaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF9maXJzdCA9IDB4MDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnYjE4MDMwX3NlY29uZCA9IDB4MDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnYjE4MDMwX3RoaXJkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMFxuICAgICAgLy8gc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCBhcmUgMHgwMCwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZ2IxODAzMF9maXJzdCA9PT0gMHgwMCAmJlxuICAgICAgICAgIGdiMTgwMzBfc2Vjb25kID09PSAweDAwICYmIGdiMTgwMzBfdGhpcmQgPT09IDB4MDApIHtcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgfVxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCBhbmQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMFxuICAgICAgLy8gc2Vjb25kLCBvciBnYjE4MDMwIHRoaXJkIGlzIG5vdCAweDAwLCBzZXQgZ2IxODAzMCBmaXJzdCxcbiAgICAgIC8vIGdiMTgwMzAgc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiZcbiAgICAgICAgICAoZ2IxODAzMF9maXJzdCAhPT0gMHgwMCB8fCBnYjE4MDMwX3NlY29uZCAhPT0gMHgwMCB8fCBnYjE4MDMwX3RoaXJkICE9PSAweDAwKSkge1xuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3RoaXJkID0gMHgwMDtcbiAgICAgICAgZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cbiAgICAgIHZhciBjb2RlX3BvaW50O1xuICAgICAgLy8gMy4gSWYgZ2IxODAzMCB0aGlyZCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfdGhpcmQgIT09IDB4MDApIHtcbiAgICAgICAgLy8gMS4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbC5cbiAgICAgICAgY29kZV9wb2ludCA9IG51bGw7XG4gICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHgzOSwgc2V0IGNvZGUgcG9pbnQgdG9cbiAgICAgICAgLy8gdGhlIGluZGV4IGdiMTgwMzAgcmFuZ2VzIGNvZGUgcG9pbnQgZm9yICgoKGdiMTgwMzAgZmlyc3Qg4oiSXG4gICAgICAgIC8vIDB4ODEpIMOXIDEwICsgZ2IxODAzMCBzZWNvbmQg4oiSIDB4MzApIMOXIDEyNiArIGdiMTgwMzAgdGhpcmQg4oiSXG4gICAgICAgIC8vIDB4ODEpIMOXIDEwICsgYnl0ZSDiiJIgMHgzMC5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgzMCwgMHgzOSkpIHtcbiAgICAgICAgICBjb2RlX3BvaW50ID0gaW5kZXhHQjE4MDMwUmFuZ2VzQ29kZVBvaW50Rm9yKFxuICAgICAgICAgICAgICAoKChnYjE4MDMwX2ZpcnN0IC0gMHg4MSkgKiAxMCArIChnYjE4MDMwX3NlY29uZCAtIDB4MzApKSAqIDEyNiArXG4gICAgICAgICAgICAgICAoZ2IxODAzMF90aGlyZCAtIDB4ODEpKSAqIDEwICsgYml0ZSAtIDB4MzApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gTGV0IGJ1ZmZlciBiZSBhIGJ5dGUgc2VxdWVuY2UgY29uc2lzdGluZyBvZiBnYjE4MDMwXG4gICAgICAgIC8vIHNlY29uZCwgZ2IxODAzMCB0aGlyZCwgYW5kIGJ5dGUsIGluIG9yZGVyLlxuICAgICAgICB2YXIgYnVmZmVyID0gW2diMTgwMzBfc2Vjb25kLCBnYjE4MDMwX3RoaXJkLCBiaXRlXTtcblxuICAgICAgICAvLyA0LiBTZXQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMCBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIHRvXG4gICAgICAgIC8vIDB4MDAuXG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfdGhpcmQgPSAweDAwO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcHJlcGVuZCBidWZmZXIgdG8gc3RyZWFtIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYnVmZmVyKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDYuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGdiMTgwMzAgc2Vjb25kIGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF9zZWNvbmQgIT09IDB4MDApIHtcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBnYjE4MDMwIHRoaXJkXG4gICAgICAgIC8vIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgICBnYjE4MDMwX3RoaXJkID0gYml0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgZ2IxODAzMCBzZWNvbmQgZm9sbG93ZWQgYnkgYnl0ZSB0byBzdHJlYW0sIHNldFxuICAgICAgICAvLyBnYjE4MDMwIGZpcnN0IGFuZCBnYjE4MDMwIHNlY29uZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChbZ2IxODAzMF9zZWNvbmQsIGJpdGVdKTtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGdiMTgwMzAgZmlyc3QgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX2ZpcnN0ICE9PSAweDAwKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDM5LCBzZXQgZ2IxODAzMCBzZWNvbmRcbiAgICAgICAgLy8gdG8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDMwLCAweDM5KSkge1xuICAgICAgICAgIGdiMTgwMzBfc2Vjb25kID0gYml0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIExldCBsZWFkIGJlIGdiMTgwMzAgZmlyc3QsIGxldCBwb2ludGVyIGJlIG51bGwsIGFuZCBzZXRcbiAgICAgICAgLy8gZ2IxODAzMCBmaXJzdCB0byAweDAwLlxuICAgICAgICB2YXIgbGVhZCA9IGdiMTgwMzBfZmlyc3Q7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMy4gTGV0IG9mZnNldCBiZSAweDQwIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YgYW5kIDB4NDFcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gYml0ZSA8IDB4N0YgPyAweDQwIDogMHg0MTtcblxuICAgICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHg4MCB0byAweEZFLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgMHg4MSkgw5cgMTkwICsgKGJ5dGUg4oiSIG9mZnNldCkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHg4MCwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxOTAgKyAoYml0ZSAtIG9mZnNldCk7XG5cbiAgICAgICAgLy8gNS4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCBpZiBwb2ludGVyIGlzIG51bGwgYW5kIHRoZSBpbmRleFxuICAgICAgICAvLyBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGdiMTgwMzAgb3RoZXJ3aXNlLlxuICAgICAgICBjb2RlX3BvaW50ID0gcG9pbnRlciA9PT0gbnVsbCA/IG51bGwgOlxuICAgICAgICAgICAgaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2diMTgwMzAnKSk7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDguIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNy4gSWYgYnl0ZSBpcyAweDgwLCByZXR1cm4gY29kZSBwb2ludCBVKzIwQUMuXG4gICAgICBpZiAoYml0ZSA9PT0gMHg4MClcbiAgICAgICAgcmV0dXJuIDB4MjBBQztcblxuICAgICAgLy8gOC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZ2IxODAzMCBmaXJzdCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA5LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gMTAuMi4yIGdiMTgwMzAgZW5jb2RlclxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFuPX0gZ2JrX2ZsYWdcbiAgICovXG4gIGZ1bmN0aW9uIEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMsIGdia19mbGFnKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBnYjE4MDMwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBnYmsgZmxhZyAoaW5pdGlhbGx5IHVuc2V0KS5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpIHtcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHRoZSBnYmsgZmxhZyBpcyBzZXQgYW5kIGNvZGUgcG9pbnQgaXMgVSsyMEFDLCByZXR1cm5cbiAgICAgIC8vIGJ5dGUgMHg4MC5cbiAgICAgIGlmIChnYmtfZmxhZyAmJiBjb2RlX3BvaW50ID09PSAweDIwQUMpXG4gICAgICAgIHJldHVybiAweDgwO1xuXG4gICAgICAvLyA0LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gZ2IxODAzMC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdnYjE4MDMwJykpO1xuXG4gICAgICAvLyA1LiBJZiBwb2ludGVyIGlzIG5vdCBudWxsLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAocG9pbnRlciAhPT0gbnVsbCkge1xuXG4gICAgICAgIC8vIDEuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxOTAgKyAweDgxLlxuICAgICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxOTApICsgMHg4MTtcblxuICAgICAgICAvLyAyLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE5MC5cbiAgICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE5MDtcblxuICAgICAgICAvLyAzLiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YgYW5kIDB4NDEgb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gdHJhaWwgPCAweDNGID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gNC4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgICByZXR1cm4gW2xlYWQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgZ2JrIGZsYWcgaXMgc2V0LCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKGdia19mbGFnKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA3LiBTZXQgcG9pbnRlciB0byB0aGUgaW5kZXggZ2IxODAzMCByYW5nZXMgcG9pbnRlciBmb3IgY29kZVxuICAgICAgLy8gcG9pbnQuXG4gICAgICBwb2ludGVyID0gaW5kZXhHQjE4MDMwUmFuZ2VzUG9pbnRlckZvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOC4gTGV0IGJ5dGUxIGJlIHBvaW50ZXIgLyAxMCAvIDEyNiAvIDEwLlxuICAgICAgdmFyIGJ5dGUxID0gZGl2KGRpdihkaXYocG9pbnRlciwgMTApLCAxMjYpLCAxMCk7XG5cbiAgICAgIC8vIDkuIFNldCBwb2ludGVyIHRvIHBvaW50ZXIg4oiSIGJ5dGUxIMOXIDEwIMOXIDEyNiDDlyAxMC5cbiAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gYnl0ZTEgKiAxMCAqIDEyNiAqIDEwO1xuXG4gICAgICAvLyAxMC4gTGV0IGJ5dGUyIGJlIHBvaW50ZXIgLyAxMCAvIDEyNi5cbiAgICAgIHZhciBieXRlMiA9IGRpdihkaXYocG9pbnRlciwgMTApLCAxMjYpO1xuXG4gICAgICAvLyAxMS4gU2V0IHBvaW50ZXIgdG8gcG9pbnRlciDiiJIgYnl0ZTIgw5cgMTAgw5cgMTI2LlxuICAgICAgcG9pbnRlciA9IHBvaW50ZXIgLSBieXRlMiAqIDEwICogMTI2O1xuXG4gICAgICAvLyAxMi4gTGV0IGJ5dGUzIGJlIHBvaW50ZXIgLyAxMC5cbiAgICAgIHZhciBieXRlMyA9IGRpdihwb2ludGVyLCAxMCk7XG5cbiAgICAgIC8vIDEzLiBMZXQgYnl0ZTQgYmUgcG9pbnRlciDiiJIgYnl0ZTMgw5cgMTAuXG4gICAgICB2YXIgYnl0ZTQgPSBwb2ludGVyIC0gYnl0ZTMgKiAxMDtcblxuICAgICAgLy8gMTQuIFJldHVybiBmb3VyIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgYnl0ZTEgKyAweDgxLCBieXRlMiArXG4gICAgICAvLyAweDMwLCBieXRlMyArIDB4ODEsIGJ5dGU0ICsgMHgzMC5cbiAgICAgIHJldHVybiBbYnl0ZTEgKyAweDgxLFxuICAgICAgICAgICAgICBieXRlMiArIDB4MzAsXG4gICAgICAgICAgICAgIGJ5dGUzICsgMHg4MSxcbiAgICAgICAgICAgICAgYnl0ZTQgKyAweDMwXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZ2IxODAzMCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2diMTgwMzAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTEuIExlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHRyYWRpdGlvbmFsKSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMS4xIGJpZzVcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEJpZzVEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGJpZzUncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGJpZzUgbGVhZCAoaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gYmlnNV9sZWFkID0gMHgwMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBiaWc1IGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gYmlnNSBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGJpZzVfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBiaWc1X2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBiaWc1IGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGJpZzVfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBiaWc1IGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGJpZzUgbGVhZCwgbGV0XG4gICAgICAvLyBwb2ludGVyIGJlIG51bGwsIHNldCBiaWc1IGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuIHRoZXNlXG4gICAgICAvLyBzdWJzdGVwczpcbiAgICAgIGlmIChiaWc1X2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBiaWc1X2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgYmlnNV9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgYnl0ZSBpcyBsZXNzIHRoYW4gMHg3RiBhbmQgMHg2MlxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSBiaXRlIDwgMHg3RiA/IDB4NDAgOiAweDYyO1xuXG4gICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweEExIHRvIDB4RkUsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiAweDgxKSDDlyAxNTcgKyAoYnl0ZSDiiJIgb2Zmc2V0KS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg0MCwgMHg3RSkgfHwgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE1NyArIChiaXRlIC0gb2Zmc2V0KTtcblxuICAgICAgICAvLyAzLiBJZiB0aGVyZSBpcyBhIHJvdyBpbiB0aGUgdGFibGUgYmVsb3cgd2hvc2UgZmlyc3QgY29sdW1uXG4gICAgICAgIC8vIGlzIHBvaW50ZXIsIHJldHVybiB0aGUgdHdvIGNvZGUgcG9pbnRzIGxpc3RlZCBpbiBpdHMgc2Vjb25kXG4gICAgICAgIC8vIGNvbHVtblxuICAgICAgICAvLyBQb2ludGVyIHwgQ29kZSBwb2ludHNcbiAgICAgICAgLy8gLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgLy8gMTEzMyAgICB8IFUrMDBDQSBVKzAzMDRcbiAgICAgICAgLy8gMTEzNSAgICB8IFUrMDBDQSBVKzAzMENcbiAgICAgICAgLy8gMTE2NCAgICB8IFUrMDBFQSBVKzAzMDRcbiAgICAgICAgLy8gMTE2NiAgICB8IFUrMDBFQSBVKzAzMENcbiAgICAgICAgc3dpdGNoIChwb2ludGVyKSB7XG4gICAgICAgICAgY2FzZSAxMTMzOiByZXR1cm4gWzB4MDBDQSwgMHgwMzA0XTtcbiAgICAgICAgICBjYXNlIDExMzU6IHJldHVybiBbMHgwMENBLCAweDAzMENdO1xuICAgICAgICAgIGNhc2UgMTE2NDogcmV0dXJuIFsweDAwRUEsIDB4MDMwNF07XG4gICAgICAgICAgY2FzZSAxMTY2OiByZXR1cm4gWzB4MDBFQSwgMHgwMzBDXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDQuIExldCBjb2RlIHBvaW50IGJlIG51bGwgaWYgcG9pbnRlciBpcyBudWxsIGFuZCB0aGUgaW5kZXhcbiAgICAgICAgLy8gY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBiaWc1IG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDpcbiAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdiaWc1JykpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA3LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDUuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGJpZzUgbGVhZCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgYmlnNV9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEJpZzVFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBiaWc1IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4QmlnNVBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2JpZzUnKSk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTU3ICsgMHg4MS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE1NykgKyAweDgxO1xuXG4gICAgICAvLyA2LiBJZiBsZWFkIGlzIGxlc3MgdGhhbiAweEExLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKGxlYWQgPCAweEExKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA3LiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE1Ny5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxNTc7XG5cbiAgICAgIC8vIDguIExldCBvZmZzZXQgYmUgMHg0MCBpZiB0cmFpbCBpcyBsZXNzIHRoYW4gMHgzRiBhbmQgMHg2MlxuICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgdmFyIG9mZnNldCA9IHRyYWlsIDwgMHgzRiA/IDB4NDAgOiAweDYyO1xuXG4gICAgICAvLyBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwgKyBvZmZzZXQuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snYmlnNSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQmlnNUVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2JpZzUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpZzVEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTIuIExlZ2FjeSBtdWx0aS1ieXRlIEphcGFuZXNlIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEyLjEgZXVjLWpwXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNKUERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyBldWMtanAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGV1Yy1qcCBqaXMwMjEyIGZsYWdcbiAgICAvLyAoaW5pdGlhbGx5IHVuc2V0KSBhbmQgZXVjLWpwIGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtib29sZWFufSAqLyBldWNqcF9qaXMwMjEyX2ZsYWcgPSBmYWxzZSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGV1Y2pwX2xlYWQgPSAweDAwO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGV1Yy1qcCBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIDB4MDAsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNqcF9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMtanAgbGVhZCBpcyAweDAwLCByZXR1cm5cbiAgICAgIC8vIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVjanBfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBldWMtanAgbGVhZCBpcyAweDhFIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweEExIHRvXG4gICAgICAvLyAweERGLCBzZXQgZXVjLWpwIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZVxuICAgICAgLy8gdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHhBMS5cbiAgICAgIGlmIChldWNqcF9sZWFkID09PSAweDhFICYmIGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhERikpIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHhBMTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgZXVjLWpwIGxlYWQgaXMgMHg4RiBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0b1xuICAgICAgLy8gMHhGRSwgc2V0IHRoZSBldWMtanAgamlzMDIxMiBmbGFnLCBzZXQgZXVjLWpwIGxlYWQgdG8gYnl0ZSxcbiAgICAgIC8vIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoZXVjanBfbGVhZCA9PT0gMHg4RiAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKSB7XG4gICAgICAgIGV1Y2pwX2ppczAyMTJfZmxhZyA9IHRydWU7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gSWYgZXVjLWpwIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGV1Yy1qcCBsZWFkLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIDB4MDAsIGFuZCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZXVjanBfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGV1Y2pwX2xlYWQ7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDEuIExldCBjb2RlIHBvaW50IGJlIG51bGwuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gbnVsbDtcblxuICAgICAgICAvLyAyLiBJZiBsZWFkIGFuZCBieXRlIGFyZSBib3RoIGluIHRoZSByYW5nZSAweEExIHRvIDB4RkUsIHNldFxuICAgICAgICAvLyBjb2RlIHBvaW50IHRvIHRoZSBpbmRleCBjb2RlIHBvaW50IGZvciAobGVhZCDiiJIgMHhBMSkgw5cgOTQgK1xuICAgICAgICAvLyBieXRlIOKIkiAweEExIGluIGluZGV4IGppczAyMDggaWYgdGhlIGV1Yy1qcCBqaXMwMjEyIGZsYWcgaXNcbiAgICAgICAgLy8gdW5zZXQgYW5kIGluIGluZGV4IGppczAyMTIgb3RoZXJ3aXNlLlxuICAgICAgICBpZiAoaW5SYW5nZShsZWFkLCAweEExLCAweEZFKSAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKSB7XG4gICAgICAgICAgY29kZV9wb2ludCA9IGluZGV4Q29kZVBvaW50Rm9yKFxuICAgICAgICAgICAgKGxlYWQgLSAweEExKSAqIDk0ICsgKGJpdGUgLSAweEExKSxcbiAgICAgICAgICAgIGluZGV4KCFldWNqcF9qaXMwMjEyX2ZsYWcgPyAnamlzMDIwOCcgOiAnamlzMDIxMicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFVuc2V0IHRoZSBldWMtanAgamlzMDIxMiBmbGFnLlxuICAgICAgICBldWNqcF9qaXMwMjEyX2ZsYWcgPSBmYWxzZTtcblxuICAgICAgICAvLyA0LiBJZiBieXRlIGlzIG5vdCBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBwcmVwZW5kIGJ5dGVcbiAgICAgICAgLy8gdG8gc3RyZWFtLlxuICAgICAgICBpZiAoIWluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDYuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNy4gSWYgYnl0ZSBpcyAweDhFLCAweDhGLCBvciBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBzZXRcbiAgICAgIC8vIGV1Yy1qcCBsZWFkIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChiaXRlID09PSAweDhFIHx8IGJpdGUgPT09IDB4OEYgfHwgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICBldWNqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDguIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0pQRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIFUrMDBBNSwgcmV0dXJuIGJ5dGUgMHg1Qy5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDAwQTUpXG4gICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAzRSwgcmV0dXJuIGJ5dGUgMHg3RS5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwM0UpXG4gICAgICAgIHJldHVybiAweDdFO1xuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVK0ZGNjEgdG8gVStGRjlGLCByZXR1cm4gdHdvXG4gICAgICAvLyBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIDB4OEUgYW5kIGNvZGUgcG9pbnQg4oiSIDB4RkY2MSArIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEZGNjEsIDB4RkY5RikpXG4gICAgICAgIHJldHVybiBbMHg4RSwgY29kZV9wb2ludCAtIDB4RkY2MSArIDB4QTFdO1xuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDcuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBqaXMwMjA4LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgIC8vIDguIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA5LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gOTQgKyAweEExLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgOTQpICsgMHhBMTtcblxuICAgICAgLy8gMTAuIExldCB0cmFpbCBiZSBwb2ludGVyICUgOTQgKyAweEExLlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDk0ICsgMHhBMTtcblxuICAgICAgLy8gMTEuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydldWMtanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0pQRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZXVjLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNKUERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTIuMiBpc28tMjAyMi1qcFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gSVNPMjAyMkpQRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKiogQGVudW0gKi9cbiAgICB2YXIgc3RhdGVzID0ge1xuICAgICAgQVNDSUk6IDAsXG4gICAgICBSb21hbjogMSxcbiAgICAgIEthdGFrYW5hOiAyLFxuICAgICAgTGVhZEJ5dGU6IDMsXG4gICAgICBUcmFpbEJ5dGU6IDQsXG4gICAgICBFc2NhcGVTdGFydDogNSxcbiAgICAgIEVzY2FwZTogNlxuICAgIH07XG4gICAgLy8gaXNvLTIwMjItanAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGlzby0yMDIyLWpwIGRlY29kZXJcbiAgICAvLyBzdGF0ZSAoaW5pdGlhbGx5IEFTQ0lJKSwgaXNvLTIwMjItanAgZGVjb2RlciBvdXRwdXQgc3RhdGVcbiAgICAvLyAoaW5pdGlhbGx5IEFTQ0lJKSwgaXNvLTIwMjItanAgbGVhZCAoaW5pdGlhbGx5IDB4MDApLCBhbmRcbiAgICAvLyBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyAoaW5pdGlhbGx5IHVuc2V0KS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkFTQ0lJLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX2RlY29kZXJfb3V0cHV0X3N0YXRlID0gc3RhdGVzLkFTQ0lJLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX2xlYWQgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGU6XG4gICAgICBzd2l0Y2ggKGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBzdGF0ZXMuQVNDSUk6XG4gICAgICAgIC8vIEFTQ0lJXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDAwIHRvIDB4N0YsIGV4Y2x1ZGluZyAweDBFLCAweDBGLCBhbmQgMHgxQlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSAmJiBiaXRlICE9PSAweDBFXG4gICAgICAgICAgICAmJiBiaXRlICE9PSAweDBGICYmIGJpdGUgIT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuUm9tYW46XG4gICAgICAgIC8vIFJvbWFuXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDVDXG4gICAgICAgIGlmIChiaXRlID09PSAweDVDKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gY29kZSBwb2ludFxuICAgICAgICAgIC8vIFUrMDBBNS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHgwMEE1O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHg3RVxuICAgICAgICBpZiAoYml0ZSA9PT0gMHg3RSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyBVKzIwM0UuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4MjAzRTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RiwgZXhjbHVkaW5nIDB4MEUsIDB4MEYsIDB4MUIsIDB4NUMsIGFuZCAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpICYmIGJpdGUgIT09IDB4MEUgJiYgYml0ZSAhPT0gMHgwRlxuICAgICAgICAgICAgJiYgYml0ZSAhPT0gMHgxQiAmJiBiaXRlICE9PSAweDVDICYmIGJpdGUgIT09IDB4N0UpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBiaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuS2F0YWthbmE6XG4gICAgICAgIC8vIEthdGFrYW5hXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4NUZcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg1RikpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyB3aG9zZSB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweDIxLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHgyMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkxlYWRCeXRlOlxuICAgICAgICAvLyBMZWFkIGJ5dGVcbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MjEgdG8gMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDIxLCAweDdFKSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZywgc2V0IGlzby0yMDIyLWpwIGxlYWRcbiAgICAgICAgICAvLyB0byBieXRlLCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIHRyYWlsIGJ5dGUsIGFuZFxuICAgICAgICAgIC8vIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICBpc28yMDIyanBfbGVhZCA9IGJpdGU7XG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuVHJhaWxCeXRlO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuVHJhaWxCeXRlOlxuICAgICAgICAvLyBUcmFpbCBieXRlXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg3RSkpIHtcbiAgICAgICAgICAvLyAxLiBTZXQgdGhlIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gbGVhZCBieXRlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuXG4gICAgICAgICAgLy8gMi4gTGV0IHBvaW50ZXIgYmUgKGlzby0yMDIyLWpwIGxlYWQg4oiSIDB4MjEpIMOXIDk0ICsgYnl0ZSDiiJIgMHgyMS5cbiAgICAgICAgICB2YXIgcG9pbnRlciA9IChpc28yMDIyanBfbGVhZCAtIDB4MjEpICogOTQgKyBiaXRlIC0gMHgyMTtcblxuICAgICAgICAgIC8vIDMuIExldCBjb2RlIHBvaW50IGJlIHRoZSBpbmRleCBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGppczAyMDguXG4gICAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gU2V0IHRoZSBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZSwgcHJlcGVuZFxuICAgICAgICAgIC8vIGJ5dGUgdG8gc3RyZWFtLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZSBhbmQgcmV0dXJuXG4gICAgICAgIC8vIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkVzY2FwZVN0YXJ0OlxuICAgICAgICAvLyBFc2NhcGUgc3RhcnRcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGVpdGhlciAweDI0IG9yIDB4MjgsIHNldCBpc28tMjAyMi1qcCBsZWFkIHRvXG4gICAgICAgIC8vIGJ5dGUsIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlLCBhbmQgcmV0dXJuXG4gICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgyNCB8fCBiaXRlID09PSAweDI4KSB7XG4gICAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSBiaXRlO1xuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDMuIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZywgc2V0IGlzby0yMDIyLWpwXG4gICAgICAgIC8vIGRlY29kZXIgc3RhdGUgdG8gaXNvLTIwMjItanAgZGVjb2RlciBvdXRwdXQgc3RhdGUsIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkVzY2FwZTpcbiAgICAgICAgLy8gRXNjYXBlXG5cbiAgICAgICAgLy8gMS4gTGV0IGxlYWQgYmUgaXNvLTIwMjItanAgbGVhZCBhbmQgc2V0IGlzby0yMDIyLWpwIGxlYWQgdG9cbiAgICAgICAgLy8gMHgwMC5cbiAgICAgICAgdmFyIGxlYWQgPSBpc28yMDIyanBfbGVhZDtcbiAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDIuIExldCBzdGF0ZSBiZSBudWxsLlxuICAgICAgICB2YXIgc3RhdGUgPSBudWxsO1xuXG4gICAgICAgIC8vIDMuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDQyLCBzZXQgc3RhdGUgdG8gQVNDSUkuXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NDIpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG5cbiAgICAgICAgLy8gNC4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NEEsIHNldCBzdGF0ZSB0byBSb21hbi5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0QSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5Sb21hbjtcblxuICAgICAgICAvLyA1LiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0OSwgc2V0IHN0YXRlIHRvIEthdGFrYW5hLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDQ5KVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkthdGFrYW5hO1xuXG4gICAgICAgIC8vIDYuIElmIGxlYWQgaXMgMHgyNCBhbmQgYnl0ZSBpcyBlaXRoZXIgMHg0MCBvciAweDQyLCBzZXRcbiAgICAgICAgLy8gc3RhdGUgdG8gbGVhZCBieXRlLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyNCAmJiAoYml0ZSA9PT0gMHg0MCB8fCBiaXRlID09PSAweDQyKSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcblxuICAgICAgICAvLyA3LiBJZiBzdGF0ZSBpcyBub24tbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgICBpZiAoc3RhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAvLyAxLiBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSBhbmQgaXNvLTIwMjItanAgZGVjb2RlclxuICAgICAgICAgIC8vIG91dHB1dCBzdGF0ZSB0byBzdGF0ZXMuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgICAgLy8gMi4gTGV0IG91dHB1dCBmbGFnIGJlIHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZy5cbiAgICAgICAgICB2YXIgb3V0cHV0X2ZsYWcgPSBpc28yMDIyanBfb3V0cHV0X2ZsYWc7XG5cbiAgICAgICAgICAvLyAzLiBTZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IHRydWU7XG5cbiAgICAgICAgICAvLyA0LiBSZXR1cm4gY29udGludWUsIGlmIG91dHB1dCBmbGFnIGlzIHVuc2V0LCBhbmQgZXJyb3JcbiAgICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgICAgcmV0dXJuICFvdXRwdXRfZmxhZyA/IG51bGwgOiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gOC4gUHJlcGVuZCBsZWFkIGFuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoW2xlYWQsIGJpdGVdKTtcblxuICAgICAgICAvLyA5LiBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcFxuICAgICAgICAvLyBkZWNvZGVyIHN0YXRlIHRvIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlIGFuZFxuICAgICAgICAvLyByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gSVNPMjAyMkpQRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBpc28tMjAyMi1qcCdzIGVuY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgaXNvLTIwMjItanAgZW5jb2RlclxuICAgIC8vIHN0YXRlIHdoaWNoIGlzIG9uZSBvZiBBU0NJSSwgUm9tYW4sIGFuZCBqaXMwMjA4IChpbml0aWFsbHlcbiAgICAvLyBBU0NJSSkuXG4gICAgLyoqIEBlbnVtICovXG4gICAgdmFyIHN0YXRlcyA9IHtcbiAgICAgIEFTQ0lJOiAwLFxuICAgICAgUm9tYW46IDEsXG4gICAgICBqaXMwMjA4OiAyXG4gICAgfTtcbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5BU0NJSTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0gYW5kIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAgIC8vIHN0YXRlIGlzIG5vdCBBU0NJSSwgcHJlcGVuZCBjb2RlIHBvaW50IHRvIHN0cmVhbSwgc2V0XG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIEFTQ0lJLCBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzXG4gICAgICAvLyAweDFCIDB4MjggMHg0Mi5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuQVNDSUkpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyOCwgMHg0Ml07XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSBhbmQgaXNvLTIwMjItanAgZW5jb2RlclxuICAgICAgLy8gc3RhdGUgaXMgQVNDSUksIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtICYmIGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLkFTQ0lJKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgQVNDSUkgYW5kIGNvZGUgcG9pbnQgaXMgaW5cbiAgICAgIC8vIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYSBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGVcbiAgICAgIC8vIHBvaW50LlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLkFTQ0lJICYmXG4gICAgICAgICAgaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyA0LiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIFJvbWFuIGFuZCBjb2RlIHBvaW50IGlzIGluXG4gICAgICAvLyB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgZXhjbHVkaW5nIFUrMDA1QyBhbmQgVSswMDdFLCBvclxuICAgICAgLy8gaXMgVSswMEE1IG9yIFUrMjAzRSwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSA9PT0gc3RhdGVzLlJvbWFuICYmXG4gICAgICAgICAgaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikgJiZcbiAgICAgICAgICBjb2RlX3BvaW50ICE9PSAweDAwNUMgJiYgY29kZV9wb2ludCAhPT0gMHgwMDdFKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDAwQTUpXG4gICAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwM0UpXG4gICAgICAgICAgcmV0dXJuIDB4N0U7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIGFuZFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBub3QgQVNDSUksIHByZXBlbmQgY29kZSBwb2ludCB0b1xuICAgICAgLy8gc3RyZWFtLCBzZXQgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBBU0NJSSwgYW5kIHJldHVyblxuICAgICAgLy8gdGhyZWUgYnl0ZXMgMHgxQiAweDI4IDB4NDIuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikgJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5BU0NJSSkge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLkFTQ0lJO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIGVpdGhlciBVKzAwQTUgb3IgVSsyMDNFLCBhbmQgaXNvLTIwMjItanBcbiAgICAgIC8vIGVuY29kZXIgc3RhdGUgaXMgbm90IFJvbWFuLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG8gc3RyZWFtLCBzZXRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gUm9tYW4sIGFuZCByZXR1cm4gdGhyZWUgYnl0ZXNcbiAgICAgIC8vIDB4MUIgMHgyOCAweDRBLlxuICAgICAgaWYgKChjb2RlX3BvaW50ID09PSAweDAwQTUgfHwgY29kZV9wb2ludCA9PT0gMHgyMDNFKSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLlJvbWFuKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuUm9tYW47XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyOCwgMHg0QV07XG4gICAgICB9XG5cbiAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDIyLCBzZXQgaXQgdG8gVStGRjBELlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAyMilcbiAgICAgICAgY29kZV9wb2ludCA9IDB4RkYwRDtcblxuICAgICAgLy8gOC4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGppczAyMDguXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgLy8gOS4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDEwLiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIG5vdCBqaXMwMjA4LCBwcmVwZW5kIGNvZGVcbiAgICAgIC8vIHBvaW50IHRvIHN0cmVhbSwgc2V0IGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gamlzMDIwOCxcbiAgICAgIC8vIGFuZCByZXR1cm4gdGhyZWUgYnl0ZXMgMHgxQiAweDI0IDB4NDIuXG4gICAgICBpZiAoaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuamlzMDIwOCkge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLmppczAyMDg7XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyNCwgMHg0Ml07XG4gICAgICB9XG5cbiAgICAgIC8vIDExLiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gOTQgKyAweDIxLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgOTQpICsgMHgyMTtcblxuICAgICAgLy8gMTIuIExldCB0cmFpbCBiZSBwb2ludGVyICUgOTQgKyAweDIxLlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDk0ICsgMHgyMTtcblxuICAgICAgLy8gMTMuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydpc28tMjAyMi1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSVNPMjAyMkpQRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snaXNvLTIwMjItanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IElTTzIwMjJKUERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTIuMyBzaGlmdF9qaXNcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNoaWZ0SklTRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBzaGlmdF9qaXMncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIHNoaWZ0X2ppcyBsZWFkIChpbml0aWFsbHlcbiAgICAvLyAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHNoaWZ0amlzX2xlYWQgPSAweDAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBzaGlmdF9qaXMgbGVhZCBpcyBub3QgMHgwMCxcbiAgICAgIC8vIHNldCBzaGlmdF9qaXMgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBzaGlmdGppc19sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBzaGlmdF9qaXMgbGVhZCBpcyAweDAwLFxuICAgICAgLy8gcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgc2hpZnRqaXNfbGVhZCA9PT0gMHgwMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBzaGlmdF9qaXMgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgc2hpZnRfamlzIGxlYWQsXG4gICAgICAvLyBsZXQgcG9pbnRlciBiZSBudWxsLCBzZXQgc2hpZnRfamlzIGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuXG4gICAgICAvLyB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChzaGlmdGppc19sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gc2hpZnRqaXNfbGVhZDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBzaGlmdGppc19sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgb2Zmc2V0IGJlIDB4NDAsIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YsIGFuZCAweDQxXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IChiaXRlIDwgMHg3RikgPyAweDQwIDogMHg0MTtcblxuICAgICAgICAvLyAyLiBMZXQgbGVhZCBvZmZzZXQgYmUgMHg4MSwgaWYgbGVhZCBpcyBsZXNzIHRoYW4gMHhBMCwgYW5kXG4gICAgICAgIC8vIDB4QzEgb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgbGVhZF9vZmZzZXQgPSAobGVhZCA8IDB4QTApID8gMHg4MSA6IDB4QzE7XG5cbiAgICAgICAgLy8gMy4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4ODAgdG8gMHhGQyxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIGxlYWQgb2Zmc2V0KSDDlyAxODggKyBieXRlIOKIkiBvZmZzZXQuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHg4MCwgMHhGQykpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gbGVhZF9vZmZzZXQpICogMTg4ICsgYml0ZSAtIG9mZnNldDtcblxuICAgICAgICAvLyA0LiBMZXQgY29kZSBwb2ludCBiZSBudWxsLCBpZiBwb2ludGVyIGlzIG51bGwsIGFuZCB0aGVcbiAgICAgICAgLy8gaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBqaXMwMjA4IG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDpcbiAgICAgICAgICAgICAgaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBwb2ludGVyIGlzIGluIHRoZSByYW5nZSA4ODM2XG4gICAgICAgIC8vIHRvIDEwNTI4LCByZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4RTAwMCArXG4gICAgICAgIC8vIHBvaW50ZXIg4oiSIDg4MzYuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIHBvaW50ZXIgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGluUmFuZ2UocG9pbnRlciwgODgzNiwgMTA1MjgpKVxuICAgICAgICAgIHJldHVybiAweEUwMDAgKyBwb2ludGVyIC0gODgzNjtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gOC4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDgwLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg4MCkpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweEExIHRvIDB4REYsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweEExLCAweERGKSlcbiAgICAgICAgcmV0dXJuIDB4RkY2MSArIGJpdGUgLSAweEExO1xuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4OUYgb3IgMHhFMCB0byAweEZDLCBzZXRcbiAgICAgIC8vIHNoaWZ0X2ppcyBsZWFkIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4OUYpIHx8IGluUmFuZ2UoYml0ZSwgMHhFMCwgMHhGQykpIHtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaGlmdEpJU0VuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDgwLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwODApKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICByZXR1cm4gMHg3RTtcblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGRjYxIHRvIFUrRkY5RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCDiiJIgMHhGRjYxICsgMHhBMS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4RkY2MSwgMHhGRjlGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQgLSAweEZGNjEgKyAweEExO1xuXG4gICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDcuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBzaGlmdF9qaXMgcG9pbnRlciBmb3IgY29kZSBwb2ludC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhTaGlmdEpJU1BvaW50ZXJGb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDguIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA5LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTg4LlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTg4KTtcblxuICAgICAgLy8gMTAuIExldCBsZWFkIG9mZnNldCBiZSAweDgxLCBpZiBsZWFkIGlzIGxlc3MgdGhhbiAweDFGLCBhbmRcbiAgICAgIC8vIDB4QzEgb3RoZXJ3aXNlLlxuICAgICAgdmFyIGxlYWRfb2Zmc2V0ID0gKGxlYWQgPCAweDFGKSA/IDB4ODEgOiAweEMxO1xuXG4gICAgICAvLyAxMS4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxODguXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTg4O1xuXG4gICAgICAvLyAxMi4gTGV0IG9mZnNldCBiZSAweDQwLCBpZiB0cmFpbCBpcyBsZXNzIHRoYW4gMHgzRiwgYW5kIDB4NDFcbiAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgIHZhciBvZmZzZXQgPSAodHJhaWwgPCAweDNGKSA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAvLyAxMy4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgKyBsZWFkIG9mZnNldCBhbmRcbiAgICAgIC8vIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgcmV0dXJuIFtsZWFkICsgbGVhZF9vZmZzZXQsIHRyYWlsICsgb2Zmc2V0XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snc2hpZnRfamlzJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBTaGlmdEpJU0VuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3NoaWZ0X2ppcyddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2hpZnRKSVNEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vXG4gIC8vIDEzLiBMZWdhY3kgbXVsdGktYnl0ZSBLb3JlYW4gZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTMuMSBldWMta3JcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0tSRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcblxuICAgIC8vIGV1Yy1rcidzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZXVjLWtyIGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGV1Y2tyX2xlYWQgPSAweDAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMta3IgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBldWMta3IgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNrcl9sZWFkICE9PSAwKSB7XG4gICAgICAgIGV1Y2tyX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMta3IgbGVhZCBpcyAweDAwLCByZXR1cm5cbiAgICAgIC8vIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVja3JfbGVhZCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBldWMta3IgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgZXVjLWtyIGxlYWQsIGxldFxuICAgICAgLy8gcG9pbnRlciBiZSBudWxsLCBzZXQgZXVjLWtyIGxlYWQgdG8gMHgwMCwgYW5kIHRoZW4gcnVuIHRoZXNlXG4gICAgICAvLyBzdWJzdGVwczpcbiAgICAgIGlmIChldWNrcl9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gZXVja3JfbGVhZDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBldWNrcl9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQxIHRvIDB4RkUsIHNldCBwb2ludGVyIHRvXG4gICAgICAgIC8vIChsZWFkIOKIkiAweDgxKSDDlyAxOTAgKyAoYnl0ZSDiiJIgMHg0MSkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDEsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTkwICsgKGJpdGUgLSAweDQxKTtcblxuICAgICAgICAvLyAyLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLCBpZiBwb2ludGVyIGlzIG51bGwsIGFuZCB0aGVcbiAgICAgICAgLy8gaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBldWMta3Igb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IChwb2ludGVyID09PSBudWxsKSA/IG51bGwgOiBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnZXVjLWtyJykpO1xuXG4gICAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAocG9pbnRlciA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDUuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGV1Yy1rciBsZWFkIHRvXG4gICAgICAvLyBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweEZFKSkge1xuICAgICAgICBldWNrcl9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0tSRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gZXVjLWtyLlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2V1Yy1rcicpKTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDUuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxOTAgKyAweDgxLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTkwKSArIDB4ODE7XG5cbiAgICAgIC8vIDYuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTkwICsgMHg0MS5cbiAgICAgIHZhciB0cmFpbCA9IChwb2ludGVyICUgMTkwKSArIDB4NDE7XG5cbiAgICAgIC8vIDcuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWxdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydldWMta3InXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0tSRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZXVjLWtyJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNLUkRlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cblxuICAvL1xuICAvLyAxNC4gTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTQuMSByZXBsYWNlbWVudFxuXG4gIC8vIE5vdCBuZWVkZWQgLSBBUEkgdGhyb3dzIFJhbmdlRXJyb3JcblxuICAvLyAxNC4yIHV0Zi0xNlxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV91bml0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZiZVxuICAgKiBAcmV0dXJuIHshQXJyYXkuPG51bWJlcj59IGJ5dGVzXG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKGNvZGVfdW5pdCwgdXRmMTZiZSkge1xuICAgIC8vIDEuIExldCBieXRlMSBiZSBjb2RlIHVuaXQgPj4gOC5cbiAgICB2YXIgYnl0ZTEgPSBjb2RlX3VuaXQgPj4gODtcblxuICAgIC8vIDIuIExldCBieXRlMiBiZSBjb2RlIHVuaXQgJiAweDAwRkYuXG4gICAgdmFyIGJ5dGUyID0gY29kZV91bml0ICYgMHgwMEZGO1xuXG4gICAgLy8gMy4gVGhlbiByZXR1cm4gdGhlIGJ5dGVzIGluIG9yZGVyOlxuICAgICAgICAvLyB1dGYtMTZiZSBmbGFnIGlzIHNldDogYnl0ZTEsIHRoZW4gYnl0ZTIuXG4gICAgaWYgKHV0ZjE2YmUpXG4gICAgICByZXR1cm4gW2J5dGUxLCBieXRlMl07XG4gICAgLy8gdXRmLTE2YmUgZmxhZyBpcyB1bnNldDogYnl0ZTIsIHRoZW4gYnl0ZTEuXG4gICAgcmV0dXJuIFtieXRlMiwgYnl0ZTFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHtib29sZWFufSB1dGYxNl9iZSBUcnVlIGlmIGJpZy1lbmRpYW4sIGZhbHNlIGlmIGxpdHRsZS1lbmRpYW4uXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGMTZEZWNvZGVyKHV0ZjE2X2JlLCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICB2YXIgLyoqIEB0eXBlIHs/bnVtYmVyfSAqLyB1dGYxNl9sZWFkX2J5dGUgPSBudWxsLFxuICAgICAgICAvKiogQHR5cGUgez9udW1iZXJ9ICovIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZWl0aGVyIHV0Zi0xNiBsZWFkIGJ5dGUgb3JcbiAgICAgIC8vIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSBpcyBub3QgbnVsbCwgc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgYW5kXG4gICAgICAvLyB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgdG8gbnVsbCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmICh1dGYxNl9sZWFkX2J5dGUgIT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgIT09IG51bGwpKSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHV0Zi0xNiBsZWFkIGJ5dGUgYW5kIHV0Zi0xNlxuICAgICAgLy8gbGVhZCBzdXJyb2dhdGUgYXJlIG51bGwsIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHV0ZjE2X2xlYWRfYnl0ZSA9PT0gbnVsbCAmJlxuICAgICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgIH1cblxuICAgICAgLy8gMy4gSWYgdXRmLTE2IGxlYWQgYnl0ZSBpcyBudWxsLCBzZXQgdXRmLTE2IGxlYWQgYnl0ZSB0byBieXRlXG4gICAgICAvLyBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKHV0ZjE2X2xlYWRfYnl0ZSA9PT0gbnVsbCkge1xuICAgICAgICB1dGYxNl9sZWFkX2J5dGUgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gTGV0IGNvZGUgdW5pdCBiZSB0aGUgcmVzdWx0IG9mOlxuICAgICAgdmFyIGNvZGVfdW5pdDtcbiAgICAgIGlmICh1dGYxNl9iZSkge1xuICAgICAgICAvLyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgaXMgc2V0XG4gICAgICAgIC8vICAgKHV0Zi0xNiBsZWFkIGJ5dGUgPDwgOCkgKyBieXRlLlxuICAgICAgICBjb2RlX3VuaXQgPSAodXRmMTZfbGVhZF9ieXRlIDw8IDgpICsgYml0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHV0Zi0xNmJlIGRlY29kZXIgZmxhZyBpcyB1bnNldFxuICAgICAgICAvLyAgIChieXRlIDw8IDgpICsgdXRmLTE2IGxlYWQgYnl0ZS5cbiAgICAgICAgY29kZV91bml0ID0gKGJpdGUgPDwgOCkgKyB1dGYxNl9sZWFkX2J5dGU7XG4gICAgICB9XG4gICAgICAvLyBUaGVuIHNldCB1dGYtMTYgbGVhZCBieXRlIHRvIG51bGwuXG4gICAgICB1dGYxNl9sZWFkX2J5dGUgPSBudWxsO1xuXG4gICAgICAvLyA1LiBJZiB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgaXMgbm90IG51bGwsIGxldCBsZWFkIHN1cnJvZ2F0ZVxuICAgICAgLy8gYmUgdXRmLTE2IGxlYWQgc3Vycm9nYXRlLCBzZXQgdXRmLTE2IGxlYWQgc3Vycm9nYXRlIHRvIG51bGwsXG4gICAgICAvLyBhbmQgdGhlbiBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAodXRmMTZfbGVhZF9zdXJyb2dhdGUgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIGxlYWRfc3Vycm9nYXRlID0gdXRmMTZfbGVhZF9zdXJyb2dhdGU7XG4gICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gbnVsbDtcblxuICAgICAgICAvLyAxLiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrREMwMCB0byBVK0RGRkYsIHJldHVybiBhXG4gICAgICAgIC8vIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHgxMDAwMCArICgobGVhZCBzdXJyb2dhdGUg4oiSXG4gICAgICAgIC8vIDB4RDgwMCkgPDwgMTApICsgKGNvZGUgdW5pdCDiiJIgMHhEQzAwKS5cbiAgICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweERDMDAsIDB4REZGRikpIHtcbiAgICAgICAgICByZXR1cm4gMHgxMDAwMCArIChsZWFkX3N1cnJvZ2F0ZSAtIDB4RDgwMCkgKiAweDQwMCArXG4gICAgICAgICAgICAgIChjb2RlX3VuaXQgLSAweERDMDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCB0aGUgc2VxdWVuY2UgcmVzdWx0aW5nIG9mIGNvbnZlcnRpbmcgY29kZSB1bml0XG4gICAgICAgIC8vIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGRlY29kZXIgZmxhZyB0byBzdHJlYW0gYW5kIHJldHVyblxuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3VuaXQsIHV0ZjE2X2JlKSk7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrRDgwMCB0byBVK0RCRkYsIHNldCB1dGYtMTZcbiAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIHRvIGNvZGUgdW5pdCBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweEQ4MDAsIDB4REJGRikpIHtcbiAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgPSBjb2RlX3VuaXQ7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBJZiBjb2RlIHVuaXQgaXMgaW4gdGhlIHJhbmdlIFUrREMwMCB0byBVK0RGRkYsIHJldHVyblxuICAgICAgLy8gZXJyb3IuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3VuaXQsIDB4REMwMCwgMHhERkZGKSlcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIC8vIDguIFJldHVybiBjb2RlIHBvaW50IGNvZGUgdW5pdC5cbiAgICAgIHJldHVybiBjb2RlX3VuaXQ7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZfYmUgVHJ1ZSBpZiBiaWctZW5kaWFuLCBmYWxzZSBpZiBsaXR0bGUtZW5kaWFuLlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjE2RW5jb2Rlcih1dGYxNl9iZSwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVStGRkZGLCByZXR1cm4gdGhlXG4gICAgICAvLyBzZXF1ZW5jZSByZXN1bHRpbmcgb2YgY29udmVydGluZyBjb2RlIHBvaW50IHRvIGJ5dGVzIHVzaW5nXG4gICAgICAvLyB1dGYtMTZiZSBlbmNvZGVyIGZsYWcuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4RkZGRikpXG4gICAgICAgIHJldHVybiBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKGNvZGVfcG9pbnQsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gMy4gTGV0IGxlYWQgYmUgKChjb2RlIHBvaW50IOKIkiAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAvLyBjb252ZXJ0ZWQgdG8gYnl0ZXMgdXNpbmcgdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgdmFyIGxlYWQgPSBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKFxuICAgICAgICAoKGNvZGVfcG9pbnQgLSAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gNC4gTGV0IHRyYWlsIGJlICgoY29kZSBwb2ludCDiiJIgMHgxMDAwMCkgJiAweDNGRikgKyAweERDMDAsXG4gICAgICAvLyBjb252ZXJ0ZWQgdG8gYnl0ZXMgdXNpbmcgdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgdmFyIHRyYWlsID0gY29udmVydENvZGVVbml0VG9CeXRlcyhcbiAgICAgICAgKChjb2RlX3BvaW50IC0gMHgxMDAwMCkgJiAweDNGRikgKyAweERDMDAsIHV0ZjE2X2JlKTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgYnl0ZSBzZXF1ZW5jZSBvZiBsZWFkIGZvbGxvd2VkIGJ5IHRyYWlsLlxuICAgICAgcmV0dXJuIGxlYWQuY29uY2F0KHRyYWlsKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gMTQuMyB1dGYtMTZiZVxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtMTZiZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZFbmNvZGVyKHRydWUsIG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtMTZiZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZEZWNvZGVyKHRydWUsIG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDE0LjQgdXRmLTE2bGVcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTE2bGUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RW5jb2RlcihmYWxzZSwgb3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi0xNmxlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkRlY29kZXIoZmFsc2UsIG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDE0LjUgeC11c2VyLWRlZmluZWRcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFhVc2VyRGVmaW5lZERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gMy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweEY3ODAgKyBieXRlIOKIkiAweDgwLlxuICAgICAgcmV0dXJuIDB4Rjc4MCArIGJpdGUgLSAweDgwO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFhVc2VyRGVmaW5lZEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS5JZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVK0Y3ODAgdG8gVStGN0ZGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IOKIkiAweEY3ODAgKyAweDgwLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGNzgwLCAweEY3RkYpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludCAtIDB4Rjc4MCArIDB4ODA7XG5cbiAgICAgIC8vIDQuIFJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd4LXVzZXItZGVmaW5lZCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgWFVzZXJEZWZpbmVkRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sneC11c2VyLWRlZmluZWQnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFhVc2VyRGVmaW5lZERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgaWYgKCFnbG9iYWxbJ1RleHRFbmNvZGVyJ10pXG4gICAgZ2xvYmFsWydUZXh0RW5jb2RlciddID0gVGV4dEVuY29kZXI7XG4gIGlmICghZ2xvYmFsWydUZXh0RGVjb2RlciddKVxuICAgIGdsb2JhbFsnVGV4dERlY29kZXInXSA9IFRleHREZWNvZGVyO1xufSh0aGlzKSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3g1LCBfeDYsIF94NykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDUsIHByb3BlcnR5ID0gX3g2LCByZWNlaXZlciA9IF94NzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDUgPSBwYXJlbnQ7IF94NiA9IHByb3BlcnR5OyBfeDcgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX3Nlc3Npb24gPSByZXF1aXJlKCcuL3Nlc3Npb24nKTtcblxudmFyIF9zZXNzaW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nlc3Npb24pO1xuXG52YXIgX2ludGVybmFsUG9vbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvcG9vbCcpO1xuXG52YXIgX2ludGVybmFsQ29ubmVjdG9yID0gcmVxdWlyZShcIi4vaW50ZXJuYWwvY29ubmVjdG9yXCIpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfdmVyc2lvbiA9IHJlcXVpcmUoJy4uL3ZlcnNpb24nKTtcblxuLyoqXG4gKiBBIGRyaXZlciBtYWludGFpbnMgb25lIG9yIG1vcmUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHdpdGggYSByZW1vdGVcbiAqIE5lbzRqIGluc3RhbmNlLiBUaHJvdWdoIHRoZSB7QGxpbmsgU2Vzc2lvbiBzZXNzaW9uc30geW91IGNhbiBzZW5kIHN0YXRlbWVudHNcbiAqIGFuZCByZXRyaWV2ZSByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlLlxuICpcbiAqIERyaXZlcnMgYXJlIHJlYXNvbmFibHkgZXhwZW5zaXZlIHRvIGNyZWF0ZSAtIHlvdSBzaG91bGQgc3RyaXZlIHRvIGtlZXAgb25lXG4gKiBkcml2ZXIgaW5zdGFuY2UgYXJvdW5kIHBlciBOZW80aiBJbnN0YW5jZSB5b3UgY29ubmVjdCB0by5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBEcml2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogWW91IHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSB7QGxpbmsgZHJpdmVyfS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJBZ2VudFxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgZnVuY3Rpb24gRHJpdmVyKHVybCkge1xuICAgIHZhciB1c2VyQWdlbnQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyAnbmVvNGotamF2YXNjcmlwdC8wLjAnIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB0b2tlbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzJdO1xuICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1szXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEcml2ZXIpO1xuXG4gICAgdGhpcy5fdXJsID0gdXJsO1xuICAgIHRoaXMuX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDtcbiAgICB0aGlzLl9vcGVuU2Vzc2lvbnMgPSB7fTtcbiAgICB0aGlzLl9zZXNzaW9uSWRHZW5lcmF0b3IgPSAwO1xuICAgIHRoaXMuX3Rva2VuID0gdG9rZW47XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuX3Bvb2wgPSBuZXcgX2ludGVybmFsUG9vbC5Qb29sKHRoaXMuX2NyZWF0ZUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fZGVzdHJveUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fdmFsaWRhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIGNvbmZpZy5jb25uZWN0aW9uUG9vbFNpemUpO1xuICB9XG5cbiAgLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciBjb25uZWN0aW9uIHN0YXRlICovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHtDb25uZWN0aW9ufSBuZXcgY29ubmVjdG9yLWFwaSBzZXNzaW9uIGluc3RhbmNlLCBhIGxvdyBsZXZlbCBzZXNzaW9uIEFQSS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhEcml2ZXIsIFt7XG4gICAga2V5OiAnX2NyZWF0ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlQ29ubmVjdGlvbihyZWxlYXNlKSB7XG4gICAgICB2YXIgc2Vzc2lvbklkID0gdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yKys7XG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKTtcbiAgICAgIHZhciBjb25uID0gKDAsIF9pbnRlcm5hbENvbm5lY3Rvci5jb25uZWN0KSh0aGlzLl91cmwsIHRoaXMuX2NvbmZpZyk7XG4gICAgICBjb25uLmluaXRpYWxpemUodGhpcy5fdXNlckFnZW50LCB0aGlzLl90b2tlbiwgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgY29ubi5faWQgPSBzZXNzaW9uSWQ7XG4gICAgICBjb25uLl9yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVsZWFzZShjb25uKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdID0gY29ubjtcbiAgICAgIHJldHVybiBjb25uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIHRoYXQgYSBjb25uZWN0aW9uIGlzIHVzYWJsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgb3BlblxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqKi9cbiAgfSwge1xuICAgIGtleTogJ192YWxpZGF0ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdmFsaWRhdGVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIHJldHVybiBjb25uLmlzT3BlbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc3Bvc2Ugb2YgYSBsaXZlIHNlc3Npb24sIGNsb3NpbmcgYW55IGFzc29jaWF0ZWQgcmVzb3VyY2VzLlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnX2Rlc3Ryb3lDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Rlc3Ryb3lDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLl9vcGVuU2Vzc2lvbnNbY29ubi5faWRdO1xuICAgICAgY29ubi5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjcXVpcmUgYSBzZXNzaW9uIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRhdGFiYXNlLiBUaGUgZHJpdmVyIG1haW50YWluc1xuICAgICAqIGEgcG9vbCBvZiBzZXNzaW9ucywgc28gY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBub3JtYWxseSBjaGVhcCBiZWNhdXNlIHlvdVxuICAgICAqIHdpbGwgYmUgcHVsbGluZyBhIHNlc3Npb24gb3V0IG9mIHRoZSBjb21tb24gcG9vbC5cbiAgICAgKlxuICAgICAqIFRoaXMgY29tZXMgd2l0aCBzb21lIHJlc3BvbnNpYmlsaXR5IC0gbWFrZSBzdXJlIHlvdSBhbHdheXMgY2FsbFxuICAgICAqIHtAbGluayBTZXNzaW9uI2Nsb3NlKCl9IHdoZW4geW91IGFyZSBkb25lIHVzaW5nIGEgc2Vzc2lvbiwgYW5kIGxpa2V3aXNlLFxuICAgICAqIG1ha2Ugc3VyZSB5b3UgZG9uJ3QgY2xvc2UgeW91ciBzZXNzaW9uIGJlZm9yZSB5b3UgYXJlIGRvbmUgdXNpbmcgaXQuIE9uY2VcbiAgICAgKiBpdCBpcyByZXR1cm5lZCB0byB0aGUgcG9vbCwgdGhlIHNlc3Npb24gd2lsbCBiZSByZXNldCB0byBhIGNsZWFuIHN0YXRlIGFuZFxuICAgICAqIG1hZGUgYXZhaWxhYmxlIGZvciBvdGhlcnMgdG8gdXNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7U2Vzc2lvbn0gbmV3IHNlc3Npb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzZXNzaW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vzc2lvbigpIHtcbiAgICAgIHZhciBjb25uID0gdGhpcy5fcG9vbC5hY3F1aXJlKCk7XG4gICAgICByZXR1cm4gbmV3IF9zZXNzaW9uMlsnZGVmYXVsdCddKGNvbm4sIGZ1bmN0aW9uIChjYikge1xuICAgICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIG9uIFNlc3Npb24jY2xvc2UoKSwgYW5kIGlzIHdoZXJlIHdlIHJldHVyblxuICAgICAgICAvLyB0aGUgcG9vbGVkICdjb25uZWN0aW9uJyBpbnN0YW5jZS5cblxuICAgICAgICAvLyBXZSBkb24ndCBwb29sIFNlc3Npb24gaW5zdGFuY2VzLCB0byBhdm9pZCB1c2VycyB1c2luZyB0aGUgU2Vzc2lvblxuICAgICAgICAvLyBhZnRlciB0aGV5J3ZlIGNhbGxlZCBjbG9zZS4gVGhlIGBTZXNzaW9uYCBvYmplY3QgaXMganVzdCBhIHRoaW5cbiAgICAgICAgLy8gd3JhcHBlciBhcm91bmQgQ29ubmVjdGlvbiBhbnl3YXksIHNvIGl0IG1ha2VzIGxpdHRsZSBkaWZmZXJlbmNlLlxuXG4gICAgICAgIC8vIFF1ZXVlIHVwIGEgJ3Jlc2V0JywgdG8gZW5zdXJlIHRoZSBuZXh0IHVzZXIgZ2V0cyBhIGNsZWFuXG4gICAgICAgIC8vIHNlc3Npb24gdG8gd29yayB3aXRoLlxuICAgICAgICBjb25uLnJlc2V0KCk7XG4gICAgICAgIGNvbm4uc3luYygpO1xuXG4gICAgICAgIC8vIFJldHVybiBjb25uZWN0aW9uIHRvIHRoZSBwb29sXG4gICAgICAgIGNvbm4uX3JlbGVhc2UoKTtcblxuICAgICAgICAvLyBDYWxsIHVzZXIgY2FsbGJhY2tcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgYWxsIG9wZW4gc2Vzc2lvbnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBZb3Ugc2hvdWxkXG4gICAgICogbWFrZSBzdXJlIHRvIHVzZSB0aGlzIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBkcml2ZXIgaW5zdGFuY2UuXG4gICAgICogQHJldHVybiB1bmRlZmluZWRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICBmb3IgKHZhciBzZXNzaW9uSWQgaW4gdGhpcy5fb3BlblNlc3Npb25zKSB7XG4gICAgICAgIGlmICh0aGlzLl9vcGVuU2Vzc2lvbnMuaGFzT3duUHJvcGVydHkoc2Vzc2lvbklkKSkge1xuICAgICAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRHJpdmVyO1xufSkoKTtcblxudmFyIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKF9TdHJlYW1PYnNlcnZlcikge1xuICBfaW5oZXJpdHMoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKGRyaXZlcikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcbiAgICB0aGlzLl9kcml2ZXIgPSBkcml2ZXI7XG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnb25FcnJvcicsIHRoaXMpLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICBpZiAodGhpcy5fZHJpdmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9kcml2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbXBsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1lc3NhZ2UpIHtcbiAgICAgIGlmICh0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQpIHtcbiAgICAgICAgdGhpcy5fZHJpdmVyLm9uQ29tcGxldGVkKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyO1xufSkoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyWydkZWZhdWx0J10pO1xuXG52YXIgVVNFUl9BR0VOVCA9IFwibmVvNGotamF2YXNjcmlwdC9cIiArIF92ZXJzaW9uLlZFUlNJT047XG5cbi8qKlxuICogQ29uc3RydWN0IGEgbmV3IE5lbzRqIERyaXZlci4gVGhpcyBpcyB5b3VyIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoaXNcbiAqIGxpYnJhcnkuXG4gKlxuICogIyMgQ29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gYXJndW1lbnQuIEF2YWlsYWJsZSBjb25maWd1cmF0aW9uXG4gKiBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOlxuICpcbiAqICAgICB7XG4gKiAgICAgICAvLyBFbmFibGUgVExTIGVuY3J5cHRpb24uIFRoaXMgaXMgb24gYnkgZGVmYXVsdCBpbiBtb2Rlcm4gTm9kZUpTIGluc3RhbGxzLFxuICogICAgICAgLy8gYnV0IG9mZiBieSBkZWZhdWx0IGluIHRoZSBXZWIgQnVuZGxlIGFuZCBvbGQgKDw9MS4wLjApIE5vZGVKUyBpbnN0YWxsc1xuICogICAgICAgLy8gZHVlIHRvIHRlY2huaWNhbCBsaW1pdGF0aW9ucyBvbiB0aG9zZSBwbGF0Zm9ybXMuXG4gKiAgICAgICBlbmNyeXB0ZWQ6IHRydWV8ZmFsc2UsXG4gKlxuICogICAgICAgLy8gVHJ1c3Qgc3RyYXRlZ3kgdG8gdXNlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4gVGhlcmUgaXMgbm8gbW9kZSB0byBkaXNhYmxlXG4gKiAgICAgICAvLyB0cnVzdCBvdGhlciB0aGFuIGRpc2FibGluZyBlbmNyeXB0aW9uIGFsdG9nZXRoZXIuIFRoZSByZWFzb24gZm9yXG4gKiAgICAgICAvLyB0aGlzIGlzIHRoYXQgaWYgeW91IGRvbid0IGtub3cgd2hvIHlvdSBhcmUgdGFsa2luZyB0bywgaXQgaXMgZWFzeSBmb3IgYW5cbiAqICAgICAgIC8vIGF0dGFja2VyIHRvIGhpamFjayB5b3VyIGVuY3J5cHRlZCBjb25uZWN0aW9uLCByZW5kZXJpbmcgZW5jcnlwdGlvbiBwb2ludGxlc3MuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfT05fRklSU1RfVVNFIGlzIHRoZSBkZWZhdWx0IGZvciBtb2Rlcm4gTm9kZUpTIGRlcGxveW1lbnRzLCBhbmQgd29ya3NcbiAqICAgICAgIC8vIHNpbWlsYXJseSB0byBob3cgYHNzbGAgd29ya3MgLSB0aGUgZmlyc3QgdGltZSB3ZSBjb25uZWN0IHRvIGEgbmV3IGhvc3QsXG4gKiAgICAgICAvLyB3ZSByZW1lbWJlciB0aGUgY2VydGlmaWNhdGUgdGhleSB1c2UuIElmIHRoZSBjZXJ0aWZpY2F0ZSBldmVyIGNoYW5nZXMsIHdlXG4gKiAgICAgICAvLyBhc3N1bWUgaXQgaXMgYW4gYXR0ZW1wdCB0byBoaWphY2sgdGhlIGNvbm5lY3Rpb24gYW5kIHJlcXVpcmUgbWFudWFsIGludGVydmVudGlvbi5cbiAqICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBieSBkZWZhdWx0LCBjb25uZWN0aW9ucyBcImp1c3Qgd29ya1wiIHdoaWxlIHN0aWxsIGdpdmluZyB5b3VcbiAqICAgICAgIC8vIGdvb2QgZW5jcnlwdGVkIHByb3RlY3Rpb24uXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyBpcyB0aGUgY2xhc3NpYyBhcHByb2FjaCB0byB0cnVzdCB2ZXJpZmljYXRpb24gLVxuICogICAgICAgLy8gd2hlbmV2ZXIgd2UgZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBjb25uZWN0aW9uLCB3ZSBlbnN1cmUgdGhlIGhvc3QgaXMgdXNpbmdcbiAqICAgICAgIC8vIGFuIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgdGhhdCBpcyBpbiwgb3IgaXMgc2lnbmVkIGJ5LCBhIGNlcnRpZmljYXRlIGxpc3RlZFxuICogICAgICAgLy8gYXMgdHJ1c3RlZC4gSW4gdGhlIHdlYiBidW5kbGUsIHRoaXMgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBtYWludGFpbmVkXG4gKiAgICAgICAvLyBieSB0aGUgd2ViIGJyb3dzZXIuIEluIE5vZGVKUywgeW91IGNvbmZpZ3VyZSB0aGUgbGlzdCB3aXRoIHRoZSBuZXh0IGNvbmZpZyBvcHRpb24uXG4gKiAgICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiB8IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICpcbiAqICAgICAgIC8vIExpc3Qgb2Ygb25lIG9yIG1vcmUgcGF0aHMgdG8gdHJ1c3RlZCBlbmNyeXB0aW9uIGNlcnRpZmljYXRlcy4gVGhpcyBvbmx5XG4gKiAgICAgICAvLyB3b3JrcyBpbiB0aGUgTm9kZUpTIGJ1bmRsZSwgYW5kIG9ubHkgbWF0dGVycyBpZiB5b3UgdXNlIFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLlxuICogICAgICAgLy8gVGhlIGNlcnRpZmljYXRlIGZpbGVzIHNob3VsZCBiZSBpbiByZWd1bGFyIFguNTA5IFBFTSBmb3JtYXQuXG4gKiAgICAgICAvLyBGb3IgaW5zdGFuY2UsIFsnLi90cnVzdGVkLnBlbSddXG4gKiAgICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXSxcbiAqXG4gKiAgICAgICAvLyBQYXRoIHRvIGEgZmlsZSB3aGVyZSB0aGUgZHJpdmVyIHNhdmVzIGhvc3RzIGl0IGhhcyBzZWVuIGluIHRoZSBwYXN0LCB0aGlzIGlzXG4gKiAgICAgICAvLyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHNzbCB0b29sJ3Mga25vd25faG9zdHMgZmlsZS4gRWFjaCB0aW1lIHdlIGNvbm5lY3QgdG8gYVxuICogICAgICAgLy8gbmV3IGhvc3QsIGEgaGFzaCBvZiB0aGVpciBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZG9tYWluIG5hbWUgYW5kXG4gKiAgICAgICAvLyBwb3J0LCBhbmQgdGhpcyBpcyB0aGVuIHVzZWQgdG8gdmVyaWZ5IHRoZSBob3N0IGNlcnRpZmljYXRlIGRvZXMgbm90IGNoYW5nZS5cbiAqICAgICAgIC8vIFRoaXMgc2V0dGluZyBoYXMgbm8gZWZmZWN0IHVubGVzcyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgZW5hYmxlZC5cbiAqICAgICAgIGtub3duSG9zdHM6XCJ+Ly5uZW80ai9rbm93bl9ob3N0c1wiLFxuICogICAgIH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgZm9yIHRoZSBOZW80aiBkYXRhYmFzZSwgZm9yIGluc3RhbmNlIFwiYm9sdDovL2xvY2FsaG9zdFwiXG4gKiBAcGFyYW0ge01hcDxTdHJpbmcsU3RyaW5nPn0gYXV0aFRva2VuIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBTZWUge0BsaW5rIGF1dGh9IGZvciBoZWxwZXJzLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdC4gU2VlIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gYWJvdmUgZm9yIGRldGFpbHMuXG4gKiBAcmV0dXJucyB7RHJpdmVyfVxuICovXG5mdW5jdGlvbiBkcml2ZXIodXJsLCBhdXRoVG9rZW4pIHtcbiAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzJdO1xuXG4gIHJldHVybiBuZXcgRHJpdmVyKHVybCwgVVNFUl9BR0VOVCwgYXV0aFRva2VuLCBjb25maWcpO1xufVxuXG5leHBvcnRzLkRyaXZlciA9IERyaXZlcjtcbmV4cG9ydHMuZHJpdmVyID0gZHJpdmVyOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBBIGNvbW1vbiBwbGFjZSBmb3IgY29uc3RydWN0aW5nIGVycm9yIG9iamVjdHMsIHRvIGtlZXAgdGhlbVxuLy8gdW5pZm9ybSBhY3Jvc3MgdGhlIGRyaXZlciBzdXJmYWNlLlxuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gzLCBfeDQsIF94NSkgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDMsIHByb3BlcnR5ID0gX3g0LCByZWNlaXZlciA9IF94NTsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDMgPSBwYXJlbnQ7IF94NCA9IHByb3BlcnR5OyBfeDUgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoXCJ2YWx1ZVwiIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBuZXdFcnJvcihtZXNzYWdlKSB7XG4gIHZhciBjb2RlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gXCJOL0FcIiA6IGFyZ3VtZW50c1sxXTtcblxuICAvLyBUT0RPOiBJZGVhIGlzIHRoYXQgd2UgY2FuIGNoZWNrIHRoZSBjb2QgaGVyZSBhbmQgdGhyb3cgc3ViLWNsYXNzZXNcbiAgLy8gb2YgTmVvNGpFcnJvciBhcyBhcHByb3ByaWF0ZVxuICByZXR1cm4gbmV3IE5lbzRqRXJyb3IobWVzc2FnZSwgY29kZSk7XG59XG5cbnZhciBOZW80akVycm9yID0gKGZ1bmN0aW9uIChfRXJyb3IpIHtcbiAgX2luaGVyaXRzKE5lbzRqRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gTmVvNGpFcnJvcihtZXNzYWdlKSB7XG4gICAgdmFyIGNvZGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBcIk4vQVwiIDogYXJndW1lbnRzWzFdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5lbzRqRXJyb3IpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoTmVvNGpFcnJvci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgbWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgcmV0dXJuIE5lbzRqRXJyb3I7XG59KShFcnJvcik7XG5cbmV4cG9ydHMubmV3RXJyb3IgPSBuZXdFcnJvcjtcbmV4cG9ydHMuTmVvNGpFcnJvciA9IE5lbzRqRXJyb3I7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQ2xhc3MgZm9yIE5vZGUgVHlwZS5cbiAqL1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIE5vZGUgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge0FycmF5fSBsYWJlbHMgLSBBcnJheSBmb3IgYWxsIGxhYmVsc1xuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIG5vZGUgcHJvcGVydGllc1xuICAgKi9cblxuICBmdW5jdGlvbiBOb2RlKGlkZW50aXR5LCBsYWJlbHMsIHByb3BlcnRpZXMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZSk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzcyBmb3IgUmVsYXRpb25zaGlwIFR5cGUuXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhOb2RlLCBbe1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHZhciBzID0gXCIoXCIgKyB0aGlzLmlkZW50aXR5O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzICs9IFwiOlwiICsgdGhpcy5sYWJlbHNbaV07XG4gICAgICB9XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGU7XG59KSgpO1xuXG52YXIgUmVsYXRpb25zaGlwID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlbGF0aW9uc2hpcChpZGVudGl0eSwgc3RhcnQsIGVuZCwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWxhdGlvbnNoaXApO1xuXG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQ2xhc3MgZm9yIFVuYm91bmRSZWxhdGlvbnNoaXAgVHlwZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZWxhdGlvbnNoaXAsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuc3RhcnQgKyBcIiktWzpcIiArIHRoaXMudHlwZTtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJdLT4oXCIgKyB0aGlzLmVuZCArIFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlbGF0aW9uc2hpcDtcbn0pKCk7XG5cbnZhciBVbmJvdW5kUmVsYXRpb25zaGlwID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFVuYm91bmRSZWxhdGlvbnNoaXAoaWRlbnRpdHksIHR5cGUsIHByb3BlcnRpZXMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5ib3VuZFJlbGF0aW9uc2hpcCk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYXNzIGZvciBQYXRoU2VnbWVudCBUeXBlLlxuICAgKi9cblxuICAvKipcbiAgICogQmluZCByZWxhdGlvbnNoaXBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSW5kZW50aXR5IG9mIHN0YXJ0IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVuZCAtIEluZGVudGl0eSBvZiBlbmQgbm9kZVxuICAgKiBAcmV0dXJuIHtSZWxhdGlvbnNoaXB9IC0gQ3JlYXRlZCByZWxhdGlvbnNoaXBcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFVuYm91bmRSZWxhdGlvbnNoaXAsIFt7XG4gICAga2V5OiBcImJpbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmluZChzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcCh0aGlzLmlkZW50aXR5LCBzdGFydCwgZW5kLCB0aGlzLnR5cGUsIHRoaXMucHJvcGVydGllcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIi1bOlwiICsgdGhpcy50eXBlO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcyArPSBcIl0tPlwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVuYm91bmRSZWxhdGlvbnNoaXA7XG59KSgpO1xuXG52YXIgUGF0aFNlZ21lbnQgPVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGFydCAtIElkZW50aXR5IG9mIHN0YXJ0IE5vZGVcbiAqIEBwYXJhbSB7UmVsYXRpb25zaGlwfSByZWwgLSBSZWxhdGlvbnNoaXAgc2VnbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IGVuZCAtIElkZW50aXR5IG9mIGVuZCBOb2RlXG4gKi9cbmZ1bmN0aW9uIFBhdGhTZWdtZW50KHN0YXJ0LCByZWwsIGVuZCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGF0aFNlZ21lbnQpO1xuXG4gIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWw7XG4gIHRoaXMuZW5kID0gZW5kO1xufVxuXG4vKipcbiAqIENsYXNzIGZvciBQYXRoIFR5cGUuXG4gKi9cbjtcblxudmFyIFBhdGggPVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7Tm9kZX0gc3RhcnQgIC0gc3RhcnQgbm9kZVxuICogQHBhcmFtIHtOb2RlfSBlbmQgLSBlbmQgbm9kZVxuICogQHBhcmFtIHtBcnJheX0gc2VnbWVudHMgLSBBcnJheSBvZiBTZWdtZW50c1xuICovXG5mdW5jdGlvbiBQYXRoKHN0YXJ0LCBlbmQsIHNlZ21lbnRzKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoKTtcblxuICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gIHRoaXMuZW5kID0gZW5kO1xuICB0aGlzLnNlZ21lbnRzID0gc2VnbWVudHM7XG4gIHRoaXMubGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xufTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIE5vZGU6IE5vZGUsXG4gIFJlbGF0aW9uc2hpcDogUmVsYXRpb25zaGlwLFxuICBVbmJvdW5kUmVsYXRpb25zaGlwOiBVbmJvdW5kUmVsYXRpb25zaGlwLFxuICBQYXRoOiBQYXRoLFxuICBQYXRoU2VnbWVudDogUGF0aFNlZ21lbnRcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuL2ludGVnZXInKTtcblxudmFyIF9kcml2ZXIgPSByZXF1aXJlKCcuL2RyaXZlcicpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuL2dyYXBoLXR5cGVzJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgZHJpdmVyOiBfZHJpdmVyLmRyaXZlcixcbiAgaW50OiBfaW50ZWdlci5pbnQsXG4gIGlzSW50OiBfaW50ZWdlci5pc0ludCxcbiAgTmVvNGpFcnJvcjogX2Vycm9yLk5lbzRqRXJyb3IsXG4gIGF1dGg6IHtcbiAgICBiYXNpYzogZnVuY3Rpb24gYmFzaWModXNlcm5hbWUsIHBhc3N3b3JkKSB7XG4gICAgICByZXR1cm4geyBzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiB1c2VybmFtZSwgY3JlZGVudGlhbHM6IHBhc3N3b3JkIH07XG4gICAgfVxuICB9LFxuICB0eXBlczoge1xuICAgIE5vZGU6IF9ncmFwaFR5cGVzLk5vZGUsXG4gICAgUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5SZWxhdGlvbnNoaXAsXG4gICAgVW5ib3VuZFJlbGF0aW9uc2hpcDogX2dyYXBoVHlwZXMuVW5ib3VuZFJlbGF0aW9uc2hpcCxcbiAgICBQYXRoU2VnbWVudDogX2dyYXBoVHlwZXMuUGF0aFNlZ21lbnQsXG4gICAgUGF0aDogX2dyYXBoVHlwZXMuUGF0aFxuICB9XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIDY0LWJpdCBJbnRlZ2VyIGxpYnJhcnksIG9yaWdpbmFsbHkgZnJvbSBMb25nLmpzIGJ5IGRjb2RlSU9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL0xvbmcuanNcbi8vIExpY2Vuc2UgQXBhY2hlIDJcblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciwgZ2l2ZW4gaXRzIGxvdyBhbmQgaGlnaCAzMiBiaXQgdmFsdWVzIGFzICpzaWduZWQqIGludGVnZXJzLlxuICogIFNlZSB0aGUgZnJvbSogZnVuY3Rpb25zIGJlbG93IGZvciBtb3JlIGNvbnZlbmllbnQgd2F5cyBvZiBjb25zdHJ1Y3RpbmcgSW50ZWdlcnMuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQGV4cG9ydHMgSW50ZWdlclxuICogQGNsYXNzIEEgSW50ZWdlciBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciB2YWx1ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuXG52YXIgSW50ZWdlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEludGVnZXIobG93LCBoaWdoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEludGVnZXIpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxvdyAzMiBiaXRzIGFzIGEgc2lnbmVkIHZhbHVlLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICAgIHRoaXMubG93ID0gbG93IHwgMDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5oaWdoID0gaGlnaCB8IDA7XG4gIH1cblxuICAvKipcbiAgICogQW4gaW5kaWNhdG9yIHVzZWQgdG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEludGVnZXIgb3Igbm90LlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGNvbnN0XG4gICAqIEBleHBvc2VcbiAgICogQHByaXZhdGVcbiAgICovXG5cbiAgLy8gVGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIEludGVnZXIgaXMgdGhlIHR3byBnaXZlbiBzaWduZWQsIDMyLWJpdCB2YWx1ZXMuXG4gIC8vIFdlIHVzZSAzMi1iaXQgcGllY2VzIGJlY2F1c2UgdGhlc2UgYXJlIHRoZSBzaXplIG9mIGludGVnZXJzIG9uIHdoaWNoXG4gIC8vIEphdmFzY3JpcHQgcGVyZm9ybXMgYml0LW9wZXJhdGlvbnMuICBGb3Igb3BlcmF0aW9ucyBsaWtlIGFkZGl0aW9uIGFuZFxuICAvLyBtdWx0aXBsaWNhdGlvbiwgd2Ugc3BsaXQgZWFjaCBudW1iZXIgaW50byAxNiBiaXQgcGllY2VzLCB3aGljaCBjYW4gZWFzaWx5IGJlXG4gIC8vIG11bHRpcGxpZWQgd2l0aGluIEphdmFzY3JpcHQncyBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiB3aXRob3V0IG92ZXJmbG93XG4gIC8vIG9yIGNoYW5nZSBpbiBzaWduLlxuICAvL1xuICAvLyBJbiB0aGUgYWxnb3JpdGhtcyBiZWxvdywgd2UgZnJlcXVlbnRseSByZWR1Y2UgdGhlIG5lZ2F0aXZlIGNhc2UgdG8gdGhlXG4gIC8vIHBvc2l0aXZlIGNhc2UgYnkgbmVnYXRpbmcgdGhlIGlucHV0KHMpIGFuZCB0aGVuIHBvc3QtcHJvY2Vzc2luZyB0aGUgcmVzdWx0LlxuICAvLyBOb3RlIHRoYXQgd2UgbXVzdCBBTFdBWVMgY2hlY2sgc3BlY2lhbGx5IHdoZXRoZXIgdGhvc2UgdmFsdWVzIGFyZSBNSU5fVkFMVUVcbiAgLy8gKC0yXjYzKSBiZWNhdXNlIC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFIChzaW5jZSAyXjYzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhc1xuICAvLyBhIHBvc2l0aXZlIG51bWJlciwgaXQgb3ZlcmZsb3dzIGJhY2sgaW50byBhIG5lZ2F0aXZlKS4gIE5vdCBoYW5kbGluZyB0aGlzXG4gIC8vIGNhc2Ugd291bGQgb2Z0ZW4gcmVzdWx0IGluIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgLy9cbiAgLy8gQ29tbW9uIGNvbnN0YW50IHZhbHVlcyBaRVJPLCBPTkUsIE5FR19PTkUsIGV0Yy4gYXJlIGRlZmluZWQgYmVsb3cgdGhlIGZyb20qXG4gIC8vIG1ldGhvZHMgb24gd2hpY2ggdGhleSBkZXBlbmQuXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGFuIGV4YWN0IGphdmFzY3JpcHQgTnVtYmVyLCBhc3N1bWluZyBpdCBpcyBhIDMyIGJpdCBpbnRlZ2VyLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhJbnRlZ2VyLCBbe1xuICAgIGtleTogJ3RvSW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9JbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb3c7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndG9OdW1iZXInLFxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYSB0aGUgbmVhcmVzdCBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlIChkb3VibGUsIDUzIGJpdCBtYW50aXNzYSkuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvTnVtYmVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCAqIFRXT19QV1JfMzJfREJMICsgKHRoaXMubG93ID4+PiAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHN0cmluZyB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gICAgICogQHBhcmFtIHtudW1iZXI9fSByYWRpeCBSYWRpeCAoMi0zNiksIGRlZmF1bHRzIHRvIDEwXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBgcmFkaXhgIGlzIG91dCBvZiByYW5nZVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3RvU3RyaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcocmFkaXgpIHtcbiAgICAgIHJhZGl4ID0gcmFkaXggfHwgMTA7XG4gICAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpIHRocm93IFJhbmdlRXJyb3IoJ3JhZGl4IG91dCBvZiByYW5nZTogJyArIHJhZGl4KTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gJzAnO1xuICAgICAgdmFyIHJlbTtcbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGFuZ2UgdGhlIEludGVnZXIgdmFsdWUgYmVmb3JlIGl0IGNhbiBiZSBuZWdhdGVkLCBzbyB3ZSByZW1vdmVcbiAgICAgICAgICAvLyB0aGUgYm90dG9tLW1vc3QgZGlnaXQgaW4gdGhpcyBiYXNlIGFuZCB0aGVuIHJlY3Vyc2UgdG8gZG8gdGhlIHJlc3QuXG4gICAgICAgICAgdmFyIHJhZGl4SW50ZWdlciA9IEludGVnZXIuZnJvbU51bWJlcihyYWRpeCk7XG4gICAgICAgICAgdmFyIGRpdiA9IHRoaXMuZGl2KHJhZGl4SW50ZWdlcik7XG4gICAgICAgICAgcmVtID0gZGl2Lm11bHRpcGx5KHJhZGl4SW50ZWdlcikuc3VidHJhY3QodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkgKyByZW0udG9JbnQoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gJy0nICsgdGhpcy5uZWdhdGUoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIHNldmVyYWwgKDYpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgICAgIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICAgICAgdmFyIHJhZGl4VG9Qb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgNikpO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZW1EaXYgPSByZW0uZGl2KHJhZGl4VG9Qb3dlciksXG4gICAgICAgICAgICBpbnR2YWwgPSByZW0uc3VidHJhY3QocmVtRGl2Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcikpLnRvSW50KCkgPj4+IDAsXG4gICAgICAgICAgICBkaWdpdHMgPSBpbnR2YWwudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZW0gPSByZW1EaXY7XG4gICAgICAgIGlmIChyZW0uaXNaZXJvKCkpIHJldHVybiBkaWdpdHMgKyByZXN1bHQ7ZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKGRpZ2l0cy5sZW5ndGggPCA2KSBkaWdpdHMgPSAnMCcgKyBkaWdpdHM7XG4gICAgICAgICAgcmVzdWx0ID0gJycgKyBkaWdpdHMgKyByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgaGlnaCBiaXRzXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ2V0SGlnaEJpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRIaWdoQml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2g7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgbG93IGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRMb3dCaXRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG93Qml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXROdW1CaXRzQWJzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TnVtQml0c0FicygpIHtcbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSA/IDY0IDogdGhpcy5uZWdhdGUoKS5nZXROdW1CaXRzQWJzKCk7XG4gICAgICB2YXIgdmFsID0gdGhpcy5oaWdoICE9IDAgPyB0aGlzLmhpZ2ggOiB0aGlzLmxvdztcbiAgICAgIGZvciAodmFyIGJpdCA9IDMxOyBiaXQgPiAwOyBiaXQtLSkgaWYgKCh2YWwgJiAxIDw8IGJpdCkgIT0gMCkgYnJlYWs7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoICE9IDAgPyBiaXQgKyAzMyA6IGJpdCArIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZXF1YWxzIHplcm8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNaZXJvJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNaZXJvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gMCAmJiB0aGlzLmxvdyA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBuZWdhdGl2ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc05lZ2F0aXZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOZWdhdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIHBvc2l0aXZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzUG9zaXRpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1Bvc2l0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG9kZC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc09kZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT2RkKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGV2ZW4uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNFdmVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFdmVuKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2VxdWFscycsXG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gb3RoZXIuaGlnaCAmJiB0aGlzLmxvdyA9PT0gb3RoZXIubG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ25vdEVxdWFscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vdEVxdWFscyhvdGhlcikge1xuICAgICAgIXRoaXMuZXF1YWxzKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGVzc1RoYW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsZXNzVGhhbihvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDwgMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsZXNzVGhhbk9yRXF1YWwob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA8PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dyZWF0ZXJUaGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW4ob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW5PckVxdWFsKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0aGlzIEludGVnZXIncyB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgMSBpZiB0aGUgdGhpcyBpcyBncmVhdGVyIGFuZCAtMVxuICAgICAqICBpZiB0aGUgZ2l2ZW4gb25lIGlzIGdyZWF0ZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb21wYXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGFyZShvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKG90aGVyKSkgcmV0dXJuIDA7XG4gICAgICB2YXIgdGhpc05lZyA9IHRoaXMuaXNOZWdhdGl2ZSgpLFxuICAgICAgICAgIG90aGVyTmVnID0gb3RoZXIuaXNOZWdhdGl2ZSgpO1xuICAgICAgaWYgKHRoaXNOZWcgJiYgIW90aGVyTmVnKSByZXR1cm4gLTE7XG4gICAgICBpZiAoIXRoaXNOZWcgJiYgb3RoZXJOZWcpIHJldHVybiAxO1xuICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgc2lnbiBiaXRzIGFyZSB0aGUgc2FtZVxuICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qob3RoZXIpLmlzTmVnYXRpdmUoKSA/IC0xIDogMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOZWdhdGVzIHRoaXMgSW50ZWdlcidzIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gTmVnYXRlZCBJbnRlZ2VyXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbmVnYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbmVnYXRlKCkge1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICAgICAgcmV0dXJuIHRoaXMubm90KCkuYWRkKEludGVnZXIuT05FKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gYWRkZW5kIEFkZGVuZFxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU3VtXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYWRkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKGFkZGVuZCkge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihhZGRlbmQpKSBhZGRlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShhZGRlbmQpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBudW1iZXIgaW50byA0IGNodW5rcyBvZiAxNiBiaXRzLCBhbmQgdGhlbiBzdW0gdGhlIGNodW5rcy5cblxuICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGI0OCA9IGFkZGVuZC5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBiMzIgPSBhZGRlbmQuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBhZGRlbmQubG93ID4+PiAxNjtcbiAgICAgIHZhciBiMDAgPSBhZGRlbmQubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYzQ4ID0gMCxcbiAgICAgICAgICBjMzIgPSAwLFxuICAgICAgICAgIGMxNiA9IDAsXG4gICAgICAgICAgYzAwID0gMDtcbiAgICAgIGMwMCArPSBhMDAgKyBiMDA7XG4gICAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICAgIGMwMCAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTE2ICsgYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiArIGIzMjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGM0OCArPSBhNDggKyBiNDg7XG4gICAgICBjNDggJj0gMHhGRkZGO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoYzE2IDw8IDE2IHwgYzAwLCBjNDggPDwgMTYgfCBjMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gc3VidHJhaGVuZCBTdWJ0cmFoZW5kXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBEaWZmZXJlbmNlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc3VidHJhY3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJ0cmFjdChzdWJ0cmFoZW5kKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKHN1YnRyYWhlbmQpKSBzdWJ0cmFoZW5kID0gSW50ZWdlci5mcm9tVmFsdWUoc3VidHJhaGVuZCk7XG4gICAgICByZXR1cm4gdGhpcy5hZGQoc3VidHJhaGVuZC5uZWdhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBtdWx0aXBsaWVyIE11bHRpcGxpZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFByb2R1Y3RcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtdWx0aXBseScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG11bHRpcGx5KG11bHRpcGxpZXIpIHtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihtdWx0aXBsaWVyKSkgbXVsdGlwbGllciA9IEludGVnZXIuZnJvbVZhbHVlKG11bHRpcGxpZXIpO1xuICAgICAgaWYgKG11bHRpcGxpZXIuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gbXVsdGlwbGllci5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAobXVsdGlwbGllci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gdGhpcy5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG5cbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpO2Vsc2UgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gSWYgYm90aCBsb25ncyBhcmUgc21hbGwsIHVzZSBmbG9hdCBtdWx0aXBsaWNhdGlvblxuICAgICAgaWYgKHRoaXMubGVzc1RoYW4oVFdPX1BXUl8yNCkgJiYgbXVsdGlwbGllci5sZXNzVGhhbihUV09fUFdSXzI0KSkgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkgKiBtdWx0aXBsaWVyLnRvTnVtYmVyKCkpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBsb25nIGludG8gNCBjaHVua3Mgb2YgMTYgYml0cywgYW5kIHRoZW4gYWRkIHVwIDR4NCBwcm9kdWN0cy5cbiAgICAgIC8vIFdlIGNhbiBza2lwIHByb2R1Y3RzIHRoYXQgd291bGQgb3ZlcmZsb3cuXG5cbiAgICAgIHZhciBhNDggPSB0aGlzLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBhMTYgPSB0aGlzLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYTAwID0gdGhpcy5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBiNDggPSBtdWx0aXBsaWVyLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IG11bHRpcGxpZXIuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBtdWx0aXBsaWVyLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYjAwID0gbXVsdGlwbGllci5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCAqIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKiBiMDA7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTAwICogYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiAqIGIwMDtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMTYgKiBiMTY7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTAwICogYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGl2JyxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIGRpdmlkZWQgYnkgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUXVvdGllbnRcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpdihkaXZpc29yKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGRpdmlzb3IpKSBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgICBpZiAoZGl2aXNvci5pc1plcm8oKSkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ2RpdmlzaW9uIGJ5IHplcm8nKTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgdmFyIGFwcHJveCwgcmVtLCByZXM7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk9ORSkgfHwgZGl2aXNvci5lcXVhbHMoSW50ZWdlci5ORUdfT05FKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFOyAvLyByZWNhbGwgdGhhdCAtTUlOX1ZBTFVFID09IE1JTl9WQUxVRVxuICAgICAgICBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLk9ORTtlbHNlIHtcbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgfG90aGVyfCA+PSAyLCBzbyB8dGhpcy9vdGhlcnwgPCB8TUlOX1ZBTFVFfC5cbiAgICAgICAgICAgIHZhciBoYWxmVGhpcyA9IHRoaXMuc2hpZnRSaWdodCgxKTtcbiAgICAgICAgICAgIGFwcHJveCA9IGhhbGZUaGlzLmRpdihkaXZpc29yKS5zaGlmdExlZnQoMSk7XG4gICAgICAgICAgICBpZiAoYXBwcm94LmVxdWFscyhJbnRlZ2VyLlpFUk8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaXZpc29yLmlzTmVnYXRpdmUoKSA/IEludGVnZXIuT05FIDogSW50ZWdlci5ORUdfT05FO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVtID0gdGhpcy5zdWJ0cmFjdChkaXZpc29yLm11bHRpcGx5KGFwcHJveCkpO1xuICAgICAgICAgICAgICByZXMgPSBhcHByb3guYWRkKHJlbS5kaXYoZGl2aXNvcikpO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KGRpdmlzb3IubmVnYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5kaXYoZGl2aXNvci5uZWdhdGUoKSkubmVnYXRlKCk7XG5cbiAgICAgIC8vIFJlcGVhdCB0aGUgZm9sbG93aW5nIHVudGlsIHRoZSByZW1haW5kZXIgaXMgbGVzcyB0aGFuIG90aGVyOiAgZmluZCBhXG4gICAgICAvLyBmbG9hdGluZy1wb2ludCB0aGF0IGFwcHJveGltYXRlcyByZW1haW5kZXIgLyBvdGhlciAqZnJvbSBiZWxvdyosIGFkZCB0aGlzXG4gICAgICAvLyBpbnRvIHRoZSByZXN1bHQsIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSByZW1haW5kZXIuICBJdCBpcyBjcml0aWNhbCB0aGF0XG4gICAgICAvLyB0aGUgYXBwcm94aW1hdGUgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSByZWFsIHZhbHVlIHNvIHRoYXQgdGhlXG4gICAgICAvLyByZW1haW5kZXIgbmV2ZXIgYmVjb21lcyBuZWdhdGl2ZS5cbiAgICAgIHJlcyA9IEludGVnZXIuWkVSTztcbiAgICAgIHJlbSA9IHRoaXM7XG4gICAgICB3aGlsZSAocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChkaXZpc29yKSkge1xuICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uLiBUaGlzIG1heSBiZSBhIGxpdHRsZSBncmVhdGVyIG9yXG4gICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIHZhbHVlLlxuICAgICAgICBhcHByb3ggPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHJlbS50b051bWJlcigpIC8gZGl2aXNvci50b051bWJlcigpKSk7XG5cbiAgICAgICAgLy8gV2Ugd2lsbCB0d2VhayB0aGUgYXBwcm94aW1hdGUgcmVzdWx0IGJ5IGNoYW5naW5nIGl0IGluIHRoZSA0OC10aCBkaWdpdCBvclxuICAgICAgICAvLyB0aGUgc21hbGxlc3Qgbm9uLWZyYWN0aW9uYWwgZGlnaXQsIHdoaWNoZXZlciBpcyBsYXJnZXIuXG4gICAgICAgIHZhciBsb2cyID0gTWF0aC5jZWlsKE1hdGgubG9nKGFwcHJveCkgLyBNYXRoLkxOMiksXG4gICAgICAgICAgICBkZWx0YSA9IGxvZzIgPD0gNDggPyAxIDogTWF0aC5wb3coMiwgbG9nMiAtIDQ4KSxcblxuICAgICAgICAvLyBEZWNyZWFzZSB0aGUgYXBwcm94aW1hdGlvbiB1bnRpbCBpdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHJlbWFpbmRlci4gIE5vdGVcbiAgICAgICAgLy8gdGhhdCBpZiBpdCBpcyB0b28gbGFyZ2UsIHRoZSBwcm9kdWN0IG92ZXJmbG93cyBhbmQgaXMgbmVnYXRpdmUuXG4gICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpLFxuICAgICAgICAgICAgYXBwcm94UmVtID0gYXBwcm94UmVzLm11bHRpcGx5KGRpdmlzb3IpO1xuICAgICAgICB3aGlsZSAoYXBwcm94UmVtLmlzTmVnYXRpdmUoKSB8fCBhcHByb3hSZW0uZ3JlYXRlclRoYW4ocmVtKSkge1xuICAgICAgICAgIGFwcHJveCAtPSBkZWx0YTtcbiAgICAgICAgICBhcHByb3hSZXMgPSBJbnRlZ2VyLmZyb21OdW1iZXIoYXBwcm94KTtcbiAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBrbm93IHRoZSBhbnN3ZXIgY2FuJ3QgYmUgemVyby4uLiBhbmQgYWN0dWFsbHksIHplcm8gd291bGQgY2F1c2VcbiAgICAgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIHNpbmNlIHdlIHdvdWxkIG1ha2Ugbm8gcHJvZ3Jlc3MuXG4gICAgICAgIGlmIChhcHByb3hSZXMuaXNaZXJvKCkpIGFwcHJveFJlcyA9IEludGVnZXIuT05FO1xuXG4gICAgICAgIHJlcyA9IHJlcy5hZGQoYXBwcm94UmVzKTtcbiAgICAgICAgcmVtID0gcmVtLnN1YnRyYWN0KGFwcHJveFJlbSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIG1vZHVsbyB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBSZW1haW5kZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtb2R1bG8nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtb2R1bG8oZGl2aXNvcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihkaXZpc29yKSkgZGl2aXNvciA9IEludGVnZXIuZnJvbVZhbHVlKGRpdmlzb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3QodGhpcy5kaXYoZGl2aXNvcikubXVsdGlwbHkoZGl2aXNvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgTk9UIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm90JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm90KCkge1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMofnRoaXMubG93LCB+dGhpcy5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIEFORCBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2FuZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFuZChvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgJiBvdGhlci5sb3csIHRoaXMuaGlnaCAmIG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9yKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyB8IG90aGVyLmxvdywgdGhpcy5oaWdoIHwgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBYT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgZ2l2ZW4gb25lLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd4b3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IF4gb3RoZXIubG93LCB0aGlzLmhpZ2ggXiBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzaGlmdExlZnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdExlZnQobnVtQml0cykge1xuICAgICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKSBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMCkgcmV0dXJuIHRoaXM7ZWxzZSBpZiAobnVtQml0cyA8IDMyKSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA8PCBudW1CaXRzLCB0aGlzLmhpZ2ggPDwgbnVtQml0cyB8IHRoaXMubG93ID4+PiAzMiAtIG51bUJpdHMpO2Vsc2UgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoMCwgdGhpcy5sb3cgPDwgbnVtQml0cyAtIDMyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgYXJpdGhtZXRpY2FsbHkgc2hpZnRlZCB0byB0aGUgcmlnaHQgYnkgdGhlIGdpdmVuIGFtb3VudC5cbiAgICAgKiBAcGFyYW0ge251bWJlcnwhSW50ZWdlcn0gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU2hpZnRlZCBJbnRlZ2VyXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc2hpZnRSaWdodCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0UmlnaHQobnVtQml0cykge1xuICAgICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKSBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMCkgcmV0dXJuIHRoaXM7ZWxzZSBpZiAobnVtQml0cyA8IDMyKSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA+Pj4gbnVtQml0cyB8IHRoaXMuaGlnaCA8PCAzMiAtIG51bUJpdHMsIHRoaXMuaGlnaCA+PiBudW1CaXRzKTtlbHNlIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMuaGlnaCA+PiBudW1CaXRzIC0gMzIsIHRoaXMuaGlnaCA+PSAwID8gMCA6IC0xKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSW50ZWdlcjtcbn0pKCk7XG5cbkludGVnZXIuX19pc0ludGVnZXJfXztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEludGVnZXIucHJvdG90eXBlLCBcIl9faXNJbnRlZ2VyX19cIiwge1xuICB2YWx1ZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGNvbmZpZ3VyYWJsZTogZmFsc2Vcbn0pO1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGEgSW50ZWdlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBvYmogT2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5pc0ludGVnZXIgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiAob2JqICYmIG9ialtcIl9faXNJbnRlZ2VyX19cIl0pID09PSB0cnVlO1xufTtcblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBvZiBzbWFsbCBpbnRlZ2VyIHZhbHVlcy5cbiAqIEB0eXBlIHshT2JqZWN0fVxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5UX0NBQ0hFID0ge307XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiAzMiBiaXQgaW50ZWdlciB2YWx1ZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSAzMiBiaXQgaW50ZWdlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUludCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgb2JqLCBjYWNoZWRPYmo7XG4gIHZhbHVlID0gdmFsdWUgfCAwO1xuICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOCkge1xuICAgIGNhY2hlZE9iaiA9IElOVF9DQUNIRVt2YWx1ZV07XG4gICAgaWYgKGNhY2hlZE9iaikgcmV0dXJuIGNhY2hlZE9iajtcbiAgfVxuICBvYmogPSBuZXcgSW50ZWdlcih2YWx1ZSwgdmFsdWUgPCAwID8gLTEgOiAwLCBmYWxzZSk7XG4gIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSBJTlRfQ0FDSEVbdmFsdWVdID0gb2JqO1xuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHZhbHVlLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgZmluaXRlIG51bWJlci4gT3RoZXJ3aXNlLCB6ZXJvIGlzIHJldHVybmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIG51bWJlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbU51bWJlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gIGlmICh2YWx1ZSA8PSAtVFdPX1BXUl82M19EQkwpIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgaWYgKHZhbHVlICsgMSA+PSBUV09fUFdSXzYzX0RCTCkgcmV0dXJuIEludGVnZXIuTUFYX1ZBTFVFO1xuICBpZiAodmFsdWUgPCAwKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCk7XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWx1ZSAlIFRXT19QV1JfMzJfREJMIHwgMCwgdmFsdWUgLyBUV09fUFdSXzMyX0RCTCB8IDApO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIDY0IGJpdCBpbnRlZ2VyIHRoYXQgY29tZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZ2l2ZW4gbG93IGFuZCBoaWdoIGJpdHMuIEVhY2ggaXNcbiAqICBhc3N1bWVkIHRvIHVzZSAzMiBiaXRzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbG93Qml0cyBUaGUgbG93IDMyIGJpdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoQml0cyBUaGUgaGlnaCAzMiBiaXRzXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tQml0cyA9IGZ1bmN0aW9uIChsb3dCaXRzLCBoaWdoQml0cykge1xuICByZXR1cm4gbmV3IEludGVnZXIobG93Qml0cywgaGlnaEJpdHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLCB3cml0dGVuIHVzaW5nIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEludGVnZXJcbiAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggVGhlIHJhZGl4IGluIHdoaWNoIHRoZSB0ZXh0IGlzIHdyaXR0ZW4gKDItMzYpLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzdHIsIHJhZGl4KSB7XG4gIGlmIChzdHIubGVuZ3RoID09PSAwKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnbnVtYmVyIGZvcm1hdCBlcnJvcjogZW1wdHkgc3RyaW5nJyk7XG4gIGlmIChzdHIgPT09IFwiTmFOXCIgfHwgc3RyID09PSBcIkluZmluaXR5XCIgfHwgc3RyID09PSBcIitJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCItSW5maW5pdHlcIikgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuXG4gIHZhciBwO1xuICBpZiAoKHAgPSBzdHIuaW5kZXhPZignLScpKSA+IDApIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciBcIi1cIiBjaGFyYWN0ZXI6ICcgKyBzdHIpO2Vsc2UgaWYgKHAgPT09IDApIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcoc3RyLnN1YnN0cmluZygxKSwgcmFkaXgpLm5lZ2F0ZSgpO1xuXG4gIC8vIERvIHNldmVyYWwgKDgpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXG4gIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDgpKTtcblxuICB2YXIgcmVzdWx0ID0gSW50ZWdlci5aRVJPO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkgKz0gOCkge1xuICAgIHZhciBzaXplID0gTWF0aC5taW4oOCwgc3RyLmxlbmd0aCAtIGkpO1xuICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcoaSwgaSArIHNpemUpLCByYWRpeCk7XG4gICAgaWYgKHNpemUgPCA4KSB7XG4gICAgICB2YXIgcG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIHNpemUpKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShwb3dlcikuYWRkKEludGVnZXIuZnJvbU51bWJlcih2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocmFkaXhUb1Bvd2VyKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICBpZiAodmFsIC8qIGlzIGNvbXBhdGlibGUgKi8gaW5zdGFuY2VvZiBJbnRlZ2VyKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIodmFsKTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHZhbCk7XG4gIC8vIFRocm93cyBmb3Igbm9uLW9iamVjdHMsIGNvbnZlcnRzIG5vbi1pbnN0YW5jZW9mIEludGVnZXI6XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWwubG93LCB2YWwuaGlnaCk7XG59O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMTZfREJMID0gMSA8PCAxNjtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzI0X0RCTCA9IDEgPDwgMjQ7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8zMl9EQkwgPSBUV09fUFdSXzE2X0RCTCAqIFRXT19QV1JfMTZfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjRfREJMID0gVFdPX1BXUl8zMl9EQkwgKiBUV09fUFdSXzMyX0RCTDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzYzX0RCTCA9IFRXT19QV1JfNjRfREJMIC8gMjtcblxuLyoqXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjQgPSBJbnRlZ2VyLmZyb21JbnQoVFdPX1BXUl8yNF9EQkwpO1xuXG4vKipcbiAqIFNpZ25lZCB6ZXJvLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLlpFUk8gPSBJbnRlZ2VyLmZyb21JbnQoMCk7XG5cbi8qKlxuICogU2lnbmVkIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5PTkUgPSBJbnRlZ2VyLmZyb21JbnQoMSk7XG5cbi8qKlxuICogU2lnbmVkIG5lZ2F0aXZlIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5ORUdfT05FID0gSW50ZWdlci5mcm9tSW50KC0xKTtcblxuLyoqXG4gKiBNYXhpbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NQVhfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4RkZGRkZGRkYgfCAwLCAweDdGRkZGRkZGIHwgMCwgZmFsc2UpO1xuXG4vKipcbiAqIE1pbmltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1JTl9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMCwgMHg4MDAwMDAwMCB8IDAsIGZhbHNlKTtcblxuLyoqXG4gKiBDYXN0IHZhbHVlIHRvIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB1c2UuXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSAtIEFuIG9iamVjdCBvZiB0eXBlIEludGVnZXIuXG4gKi9cbnZhciBpbnQgPSBJbnRlZ2VyLmZyb21WYWx1ZTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhcmlhYmxlIGlzIG9mIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJhaWJsZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IC0gSXMgaXQgb2YgdGhlIEludGVnZXIgdHlwZT9cbiAqL1xudmFyIGlzSW50ID0gSW50ZWdlci5pc0ludGVnZXI7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgSW50ZWdlcjogSW50ZWdlcixcbiAgaW50OiBpbnQsXG4gIGlzSW50OiBpc0ludFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNvbW1vbiBBUEkgZm9yIGRlYWxpbmcgd2l0aCBiaW5hcnkgZGF0YSB0aGF0XG4gICogd29ya3MgZm9yIGJvdGggYnJvd3NlcnMgKHZpYSBBcnJheUJ1ZmZlci9EYXRhVmlldykgYW5kIGZvciBOb2RlSlNcbiAgKih2aWEgQnVmZmVyIEFQSSkuXG4gICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIF9ub2RlID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcbi8qKlxuICAqIENvbW1vbiBiYXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgbW9zdCBidWZmZXIgbWV0aG9kcy5cbiAgKiBCdWZmZXJzIGFyZSBzdGF0ZWZ1bCAtIHRoZXkgdHJhY2sgYSBjdXJyZW50IFwicG9zaXRpb25cIiwgdGhpcyBoZWxwcyBncmVhdGx5XG4gICogd2hlbiByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20gdGhlbSBpbmNyZW1lbnRhbGx5LiBZb3UgY2FuIGFsc28gaWdub3JlIHRoZVxuICAqIHN0YXRlZnVsIHJlYWQvd3JpdGUgbWV0aG9kcy5cbiAgKiByZWFkWFhYIGFuZCB3cml0ZVhYWC1tZXRob2RzIG1vdmUgdGhlIGlubmVyIHBvc2l0aW9uIG9mIHRoZSBidWZmZXIuXG4gICogcHV0WFhYIGFuZCBnZXRYWFgtbWV0aG9kcyBkbyBub3QuXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5cbnZhciBCYXNlQnVmZmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGluc3RhbmNlIHdpdGggdGhlIGluamVjdGVkIHNpemUuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHNpemVcbiAgICovXG5cbiAgZnVuY3Rpb24gQmFzZUJ1ZmZlcihzaXplKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhc2VCdWZmZXIpO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgdGhpcy5sZW5ndGggPSBzaXplO1xuICAgIC8vIENhbGxpbmcgdGhlc2Ugb3V0IC0gdGhpcyBpcyB0aGUgcmVxdWlyZWRcbiAgICAvLyBtZXRob2RzIGEgc3ViY2xhc3MgbmVlZHMgdG8gaW1wbGVtZW50XG4gICAgdmFyIGdldFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0SW50OCA9IG51bGw7XG4gICAgdmFyIGdldEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBnZXRTbGljZSA9IG51bGw7XG4gICAgdmFyIHB1dEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBwdXRVSW50OCA9IG51bGw7XG4gICAgdmFyIHB1dEludDggPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEJhc2ljIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiB0aGF0IHNob3VsZCB3b3JrIGluIG1vc3QgYW55IG1vZGVybiBKUyBlbnYuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEJhc2VCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldEludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDE2KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQxNihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQzMihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDMyKHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ2NChwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDU2IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgNDggfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA0MCB8IHRoaXMuZ2V0VUludDgocCArIDMpIDw8IDMyIHwgdGhpcy5nZXRVSW50OChwICsgNCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyA1KSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDYpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBzdGFydFxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRTbGljZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTbGljZShzdGFydCwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDE2KHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiA4KTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQzMihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gMjQpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDE2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQzMihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0VUludDgocCwgdmFsID4+IDI0ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ2NChwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gNDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDQyICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gMzYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCA+PiAzMCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNCwgdmFsID4+IDI0ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA1LCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDYsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA3LCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gb3RoZXJcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgb3RoZXIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBvdGhlci5yZW1haW5pbmcoKTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgIHRoaXMucHV0VUludDgocG9zaXRpb24gKyBpLCBvdGhlci5yZWFkVUludDgoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OCh0aGlzLl91cGRhdGVQb3MoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgodGhpcy5fdXBkYXRlUG9zKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFVJbnQzMigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQzMih0aGlzLl91cGRhdGVQb3MoNCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQzMigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50NjQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQzMih0aGlzLl91cGRhdGVQb3MoOCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkRmxvYXQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZsb2F0NjQodGhpcy5fdXBkYXRlUG9zKDgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVVJbnQ4KHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDgodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgodGhpcy5fdXBkYXRlUG9zKDEpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MTYodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDMyKHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlVUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlVUludDMyKHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50MzIodGhpcy5fdXBkYXRlUG9zKDQpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50NjQodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlRmxvYXQ2NCh2YWwpIHtcbiAgICAgIHRoaXMucHV0RmxvYXQ2NCh0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlQnl0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVCeXRlcyh2YWwpIHtcbiAgICAgIHRoaXMucHV0Qnl0ZXModGhpcy5fdXBkYXRlUG9zKHZhbC5yZW1haW5pbmcoKSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgc2xpY2Ugb2YgdGhpcyBidWZmZXIuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNvcHkgYW55IGRhdGEsXG4gICAgICogYnV0IHNpbXBseSBwcm92aWRlcyBhIHNsaWNlIHZpZXcgb2YgdGhpcyBidWZmZXJcbiAgICAgKiBAcGFyYW0gbGVuZ3RoXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRTbGljZShsZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNsaWNlKHRoaXMuX3VwZGF0ZVBvcyhsZW5ndGgpLCBsZW5ndGgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfdXBkYXRlUG9zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVQb3MobGVuZ3RoKSB7XG4gICAgICB2YXIgcCA9IHRoaXMucG9zaXRpb247XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCByZW1hbmluZ1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlbWFpbmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1haW5pbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSB0aGlzLnBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyByZW1hbmluZ1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImhhc1JlbWFpbmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNSZW1haW5pbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW1haW5pbmcoKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXQgcG9zaXRpb24gc3RhdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyIGFuZCBpdCdzIHN0YXRlLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgXCIoIHBvc2l0aW9uPVwiICsgdGhpcy5wb3NpdGlvbiArIFwiIClcXG4gIFwiICsgdGhpcy50b0hleCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwidG9IZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9IZXgoKSB7XG4gICAgICAvLyBUT0RPIHNvbWV0aGluZyBsaWtlIFN0cmluZ0J1aWxkZXI/XG4gICAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgaGV4Qnl0ZSA9IHRoaXMuZ2V0VUludDgoaSkudG9TdHJpbmcoMTYpO1xuICAgICAgICBpZiAoaGV4Qnl0ZS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIGhleEJ5dGUgPSBcIjBcIiArIGhleEJ5dGU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ICs9IGhleEJ5dGUgKyBcIiBcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJhc2VCdWZmZXI7XG59KSgpO1xuXG52YXIgSGVhcEJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXIpIHtcbiAgX2luaGVyaXRzKEhlYXBCdWZmZXIsIF9CYXNlQnVmZmVyKTtcblxuICBmdW5jdGlvbiBIZWFwQnVmZmVyKGFyZykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIZWFwQnVmZmVyKTtcblxuICAgIHZhciBidWZmZXIgPSBhcmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA/IGFyZyA6IG5ldyBBcnJheUJ1ZmZlcihhcmcpO1xuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKEhlYXBCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICB0aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gICAgdGhpcy5fdmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSB2aWV3IGFzIHNsaWNlIG9mIGFub3RoZXIgYnVmZmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEhlYXBCdWZmZXIsIFt7XG4gICAga2V5OiBcInB1dFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0VWludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRVaW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0RmxvYXQ2NChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEZsb2F0NjQocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIuc2xpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFwQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNvbWUgcGxhdGZvcm1zIChlZy4gcGhhbnRvbWpzKSBkb24ndCBzdXBwb3J0IHNsaWNlLCBzbyBmYWxsIGJhY2sgdG8gYSBjb3B5XG4gICAgICAgIC8vIFdlIGRvIHRoaXMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgU2xpY2VCdWZmZXIsIGJlY2F1c2Ugc2xpY2VCdWZmZXIgY2Fubm90XG4gICAgICAgIC8vIGJlIHBhc3NlZCB0byBuYXRpdmUgbmV0d29yayB3cml0ZSBvcHMgZXRjIC0gd2UgbmVlZCBBcnJheUJ1ZmZlciBmb3IgdGhhdFxuICAgICAgICB2YXIgY29weSA9IG5ldyBIZWFwQnVmZmVyKGxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb3B5LnB1dFVJbnQ4KGksIHRoaXMuZ2V0VUludDgoaSArIHN0YXJ0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmljIHRvIEhlYXBCdWZmZXIsIHRoaXMgZ2V0cyBhIERhdGFWaWV3IGZyb20gdGhlXG4gICAgICogY3VycmVudCBwb3NpdGlvbiBhbmQgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguIFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRWaWV3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRWaWV3KGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRhVmlldyh0aGlzLl9idWZmZXIsIHRoaXMuX3VwZGF0ZVBvcyhsZW5ndGgpLCBsZW5ndGgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBIZWFwQnVmZmVyO1xufSkoQmFzZUJ1ZmZlcik7XG5cbnZhciBTbGljZUJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXIyKSB7XG4gIF9pbmhlcml0cyhTbGljZUJ1ZmZlciwgX0Jhc2VCdWZmZXIyKTtcblxuICBmdW5jdGlvbiBTbGljZUJ1ZmZlcihzdGFydCwgbGVuZ3RoLCBpbm5lcikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTbGljZUJ1ZmZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihTbGljZUJ1ZmZlci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgbGVuZ3RoKTtcbiAgICB0aGlzLl9zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuX2lubmVyID0gaW5uZXI7XG4gIH1cblxuICAvKipcbiAgICogQnVmZmVyIHRoYXQgY29tYmluZXMgbXVsdGlwbGUgYnVmZmVycywgZXhwb3NpbmcgdGhlbSBhcyBvbmUgc2luZ2xlIGJ1ZmZlci5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTbGljZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0VUludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRVSW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEZsb2F0NjQodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0SW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0RmxvYXQ2NCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2xpY2VCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIENvbWJpbmVkQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjMpIHtcbiAgX2luaGVyaXRzKENvbWJpbmVkQnVmZmVyLCBfQmFzZUJ1ZmZlcjMpO1xuXG4gIGZ1bmN0aW9uIENvbWJpbmVkQnVmZmVyKGJ1ZmZlcnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29tYmluZWRCdWZmZXIpO1xuXG4gICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gYnVmZmVyc1tpXS5sZW5ndGg7XG4gICAgfVxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENvbWJpbmVkQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBsZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlcnMgPSBidWZmZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1ZmZlciB1c2VkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudFxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENvbWJpbmVkQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0VUludDgocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICAvLyBBdCBzb21lIHBvaW50LCBhIG1vcmUgZWZmaWNpZW50IGltcGwuIEZvciBub3csIHdlIGNvcHkgdGhlIDggYnl0ZXNcbiAgICAgIC8vIHdlIHdhbnQgdG8gcmVhZCBhbmQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBpbXBsIG9mIElFRUUgNzU0LlxuICAgICAgdmFyIGIgPSBhbGxvYyg4KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGIucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChwb3NpdGlvbiArIGkpKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gYi5nZXRGbG9hdDY0KDApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDb21iaW5lZEJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgTm9kZUJ1ZmZlciA9IChmdW5jdGlvbiAoX0Jhc2VCdWZmZXI0KSB7XG4gIF9pbmhlcml0cyhOb2RlQnVmZmVyLCBfQmFzZUJ1ZmZlcjQpO1xuXG4gIGZ1bmN0aW9uIE5vZGVCdWZmZXIoYXJnKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5vZGVCdWZmZXIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIF9ub2RlLkJ1ZmZlciA/IGFyZyA6IG5ldyBfbm9kZS5CdWZmZXIoYXJnKTtcbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihOb2RlQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBidWZmZXIubGVuZ3RoKTtcbiAgICB0aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gIH1cblxuICAvLyBVc2UgSGVhcEJ1ZmZlciBieSBkZWZhdWx0LCB1bmxlc3MgQnVmZmVyIEFQSSBpcyBhdmFpbGFibGUsIHNlZSBiZWxvd1xuXG4gIF9jcmVhdGVDbGFzcyhOb2RlQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkVUludDgocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZEludDgocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZERvdWJsZUJFKHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCwgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlRG91YmxlQkUodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEJ5dGVzKHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOb2RlQnVmZmVyKSB7XG4gICAgICAgIHZhciBieXRlc1RvQ29weSA9IE1hdGgubWluKHZhbC5sZW5ndGggLSB2YWwucG9zaXRpb24sIHRoaXMubGVuZ3RoIC0gcG9zaXRpb24pO1xuICAgICAgICB2YWwuX2J1ZmZlci5jb3B5KHRoaXMuX2J1ZmZlciwgcG9zaXRpb24sIHZhbC5wb3NpdGlvbiwgdmFsLnBvc2l0aW9uICsgYnl0ZXNUb0NvcHkpO1xuICAgICAgICB2YWwucG9zaXRpb24gKz0gYnl0ZXNUb0NvcHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkNvcHlpbmcgbm90IHlldCBpbXBsZW1lbnRlZC5cIik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgTm9kZUJ1ZmZlcih0aGlzLl9idWZmZXIuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vZGVCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIF9EZWZhdWx0QnVmZmVyID0gSGVhcEJ1ZmZlcjtcbnRyeSB7XG4gIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgd2UncmUgbm90IHJ1bm5pbmcgb24gTm9kZUpTIG9yIGVxdWl2YWxlbnRcbiAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICBfRGVmYXVsdEJ1ZmZlciA9IE5vZGVCdWZmZXI7XG59IGNhdGNoIChlKSB7fVxuXG4vKipcbiAqIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciB1c2luZyB3aGF0ZXZlciBtZWNoYW5pc20gaXMgbW9zdCBzZW5zaWJsZSBmb3IgdGhlXG4gKiBjdXJyZW50IHBsYXRmb3JtXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICogQHJldHVybiBuZXcgYnVmZmVyXG4gKi9cbmZ1bmN0aW9uIGFsbG9jKHNpemUpIHtcbiAgcmV0dXJuIG5ldyBfRGVmYXVsdEJ1ZmZlcihzaXplKTtcbn1cblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIEJhc2VCdWZmZXI6IEJhc2VCdWZmZXIsXG4gIEhlYXBCdWZmZXI6IEhlYXBCdWZmZXIsXG4gIFNsaWNlQnVmZmVyOiBTbGljZUJ1ZmZlcixcbiAgQ29tYmluZWRCdWZmZXI6IENvbWJpbmVkQnVmZmVyLFxuICBOb2RlQnVmZmVyOiBOb2RlQnVmZmVyLFxuICBhbGxvYzogYWxsb2Ncbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBvYnNlcnZlciA9IHtcbiAgaW5zdGFuY2U6IG51bGwsXG4gIHVwZGF0ZUluc3RhbmNlOiBmdW5jdGlvbiB1cGRhdGVJbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIG9ic2VydmVyLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gIH1cbn07XG5cbnZhciBEdW1teUNoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEdW1teUNoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEdW1teUNoYW5uZWwpO1xuXG4gICAgdGhpcy53cml0dGVuID0gW107XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRHVtbXlDaGFubmVsLCBbe1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWYpIHtcbiAgICAgIHRoaXMud3JpdHRlbi5wdXNoKGJ1Zik7XG4gICAgICBvYnNlcnZlci51cGRhdGVJbnN0YW5jZSh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9IZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9IZXgoKSB7XG4gICAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy53cml0dGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dCArPSB0aGlzLndyaXR0ZW5baV0udG9IZXgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvQnVmZmVyKCkge1xuICAgICAgcmV0dXJuIG5ldyBfYnVmLkNvbWJpbmVkQnVmZmVyKHRoaXMud3JpdHRlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIER1bW15Q2hhbm5lbDtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjaGFubmVsOiBEdW1teUNoYW5uZWwsXG4gIG9ic2VydmVyOiBvYnNlcnZlclxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbnZhciBfbmV0ID0gcmVxdWlyZSgnbmV0Jyk7XG5cbnZhciBfbmV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX25ldCk7XG5cbnZhciBfdGxzID0gcmVxdWlyZSgndGxzJyk7XG5cbnZhciBfdGxzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Rscyk7XG5cbnZhciBfZnMgPSByZXF1aXJlKCdmcycpO1xuXG52YXIgX2ZzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZzKTtcblxudmFyIF9wYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG52YXIgX3BhdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGF0aCk7XG5cbnZhciBfb3MgPSByZXF1aXJlKCdvcycpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBfQ09OTkVDVElPTl9JREdFTiA9IDA7XG5cbmZ1bmN0aW9uIHVzZXJIb21lKCkge1xuICAvLyBGb3Igc29tZSByZWFzb24sIEJyb3dzZXJpZnkgY2hva2VzIG9uIHNoaW1taW5nIGBwcm9jZXNzYC4gVGhpcyBjb2RlXG4gIC8vIHdpbGwgbmV2ZXIgZ2V0IGV4ZWN1dGVkIG9uIHRoZSBicm93c2VyIGFueXdheSwgdG8ganVzdCBoYWNrIGFyb3VuZCBpdFxuICB2YXIgZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsgPSByZXF1aXJlO1xuICB2YXIgcHJvY2VzcyA9IGdldE91dE9mSGVyZUJyb3dzZXJpZnlZb3VyZURydW5rKCdwcm9jZXNzJyk7XG5cbiAgcmV0dXJuIHByb2Nlc3MuZW52W3Byb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdVU0VSUFJPRklMRScgOiAnSE9NRSddO1xufVxuXG5mdW5jdGlvbiBta0Z1bGxQYXRoKHBhdGhUb0NyZWF0ZSkge1xuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5ta2RpclN5bmMocGF0aFRvQ3JlYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvLyBDcmVhdGUgcGFyZW50IGRpclxuICAgICAgbWtGdWxsUGF0aChfcGF0aDJbJ2RlZmF1bHQnXS5kaXJuYW1lKHBhdGhUb0NyZWF0ZSkpO1xuICAgICAgLy8gQW5kIG5vdyB0cnkgYWdhaW5cbiAgICAgIG1rRnVsbFBhdGgocGF0aFRvQ3JlYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBjYikge1xuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjYihudWxsKTtcbiAgfVxuICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgcmVxdWlyZSgncmVhZGxpbmUnKS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBfZnMyWydkZWZhdWx0J10uY3JlYXRlUmVhZFN0cmVhbShrbm93bkhvc3RzUGF0aClcbiAgfSkub24oJ2xpbmUnLCBmdW5jdGlvbiAobGluZSkge1xuICAgIGlmICghZm91bmQgJiYgbGluZS5zdGFydHNXaXRoKHNlcnZlcklkKSkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgY2IobGluZS5zcGxpdChcIiBcIilbMV0pO1xuICAgIH1cbiAgfSkub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZyA9IHt9O1xuZnVuY3Rpb24gc3RvcmVGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZpbmdlcnByaW50LCBjYikge1xuICAvLyB3ZSBjaGVjayBpZiB0aGUgc2VydmVySWQgaGFzIGJlZW4gYXBwZW5kZWRcbiAgaWYgKCEhX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdKSB7XG4gICAgLy8gaWYgaXQgaGFzLCB3ZSBpZ25vcmUgaXRcbiAgICByZXR1cm4gY2IobnVsbCk7XG4gIH1cblxuICAvLyB3ZSBtYWtlIHRoZSBsaW5lIGFzIGFwcGVuZGVkXG4gIC8vICggMSBpcyBtb3JlIGVmZmljaWVudCB0byBzdG9yZSB0aGFuIHRydWUgYmVjYXVzZSB0cnVlIGlzIGFuIG9kZGJhbGwgKVxuICBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF0gPSAxO1xuXG4gIC8vIElmIGZpbGUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGZ1bGwgcGF0aCB0byBpdFxuICB0cnkge1xuICAgIF9mczJbJ2RlZmF1bHQnXS5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG1rRnVsbFBhdGgoX3BhdGgyWydkZWZhdWx0J10uZGlybmFtZShrbm93bkhvc3RzUGF0aCkpO1xuICB9XG5cbiAgX2ZzMlsnZGVmYXVsdCddLmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIF9vcy5FT0wsIFwidXRmOFwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgZGVsZXRlIF9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2IoZXJyKTtcbiAgfSk7XG59XG5cbnZhciBUcnVzdFN0cmF0ZWd5ID0ge1xuICBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgaWYgKCFvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMgfHwgb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJZb3UgYXJlIHVzaW5nIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMgYXMgdGhlIG1ldGhvZCBcIiArIFwidG8gdmVyaWZ5IHRydXN0IGZvciBlbmNyeXB0ZWQgIGNvbm5lY3Rpb25zLCBidXQgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgXCIgKyBcInRydXN0ZWRDZXJ0aWZpY2F0ZXMuIFlvdSAgbXVzdCBzcGVjaWZ5IHRoZSBwYXRoIHRvIGF0IGxlYXN0IG9uZSB0cnVzdGVkIFwiICsgXCJYLjUwOSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyB0byB3b3JrLiBUd28gb3RoZXIgYWx0ZXJuYXRpdmVzIGlzIHRvIHVzZSBcIiArIFwiVFJVU1RfT05fRklSU1RfVVNFIG9yIHRvIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIGVuY3J5cHRlZD1mYWxzZSBcIiArIFwiaW4geW91ciBkcml2ZXIgY29uZmlndXJhdGlvbi5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgY2E6IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5tYXAoX2ZzMlsnZGVmYXVsdCddLnJlYWRGaWxlU3luYyksXG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IGNoZWNrIGZvciB0aGlzIGluIHRoZSBjb25uZWN0IGNhbGxiYWNrLCB0byBnaXZlXG4gICAgICAvLyBhIG1vcmUgaGVscGZ1bCBlcnJvciB0byB0aGUgdXNlclxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgc29ja2V0ID0gX3RsczJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNvY2tldC5hdXRob3JpemVkKSB7XG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4gSWYgeW91IHRydXN0IHRoZSBkYXRhYmFzZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8sIGFkZFwiICsgXCIgdGhlIHNpZ25pbmcgY2VydGlmaWNhdGUsIG9yIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUsIHRvIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlcyB0cnVzdGVkIGJ5IHRoaXMgZHJpdmVyXCIgKyBcIiB1c2luZyBgbmVvNGoudjEuZHJpdmVyKC4uLCB7IHRydXN0ZWRDZXJ0aWZpY2F0ZXM6WydwYXRoL3RvL2NlcnRpZmljYXRlLmNydCddfSkuIFRoaXMgXCIgKyBcIiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgdG8gcHJvdGVjdCBhZ2FpbnN0IG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgKyBcIiBOZW80aiBvdXQgYW5kIGFyZSBub3QgY29uY2VybmVkIGFib3V0IGVuY3J5cHRpb24sIHNpbXBseSBkaXNhYmxlIGl0IHVzaW5nIGBlbmNyeXB0ZWQ9ZmFsc2VgIGluIHRoZSBkcml2ZXJcIiArIFwiIG9wdGlvbnMuXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH0sXG4gIFRSVVNUX09OX0ZJUlNUX1VTRTogZnVuY3Rpb24gVFJVU1RfT05fRklSU1RfVVNFKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IHZlcmlmeSB0aGUgY2VydGlmaWNhdGUgYWdhaW5zdCBrbm93bl9ob3N0c1xuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgc29ja2V0ID0gX3RsczJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2VydmVyQ2VydCA9IHNvY2tldC5nZXRQZWVyQ2VydGlmaWNhdGUoIC8qcmF3PSovdHJ1ZSk7XG5cbiAgICAgIGlmICghc2VydmVyQ2VydC5yYXcpIHtcbiAgICAgICAgLy8gSWYgYHJhd2AgaXMgbm90IGF2YWlsYWJsZSwgd2UncmUgb24gYW4gb2xkIHZlcnNpb24gb2YgTm9kZUpTLCBhbmRcbiAgICAgICAgLy8gdGhlIHJhdyBjZXJ0IGNhbm5vdCBiZSBhY2Nlc3NlZCAob3IsIGF0IGxlYXN0IEkgY291bGRuJ3QgZmluZCBhIHdheSB0bylcbiAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSBjYW4ndCBnZW5lcmF0ZSBhIFNIQTUxMiBmaW5nZXJwcmludCwgbWVhbmluZyB3ZSBjYW4ndFxuICAgICAgICAvLyBkbyBUT0ZVLCBhbmQgdGhlIHNhZmUgYXBwcm9hY2ggaXMgdG8gZmFpbC5cbiAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgTm9kZUpTIHRoYXQgZG9lcyBub3QgXCIgKyBcInN1cHBvcnQgdHJ1c3Qtb24tZmlyc3QgdXNlIGVuY3J5cHRpb24uIFlvdSBjYW4gZWl0aGVyIHVwZ3JhZGUgTm9kZUpTIHRvIFwiICsgXCJhIG5ld2VyIHZlcnNpb24sIHVzZSBgdHJ1c3Q6VFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU2AgaW4geW91ciBkcml2ZXIgXCIgKyBcImNvbmZpZyBpbnN0ZWFkLCBvciBkaXNhYmxlIGVuY3J5cHRpb24gdXNpbmcgYGVuY3J5cHRlZDpmYWxzZWAuXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VydmVyRmluZ2VycHJpbnQgPSByZXF1aXJlKCdjcnlwdG8nKS5jcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoc2VydmVyQ2VydC5yYXcpLmRpZ2VzdChcImhleFwiKTtcbiAgICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IG9wdHMua25vd25Ib3N0cyB8fCBfcGF0aDJbJ2RlZmF1bHQnXS5qb2luKHVzZXJIb21lKCksIFwiLm5lbzRqXCIsIFwia25vd25faG9zdHNcIik7XG4gICAgICB2YXIgc2VydmVySWQgPSBvcHRzLmhvc3QgKyBcIjpcIiArIG9wdHMucG9ydDtcblxuICAgICAgbG9hZEZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgZnVuY3Rpb24gKGtub3duRmluZ2VycHJpbnQpIHtcbiAgICAgICAgaWYgKGtub3duRmluZ2VycHJpbnQgPT09IHNlcnZlckZpbmdlcnByaW50KSB7XG4gICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa25vd25GaW5nZXJwcmludCA9PSBudWxsKSB7XG4gICAgICAgICAgc3RvcmVGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIHNlcnZlckZpbmdlcnByaW50LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvbkZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvblN1Y2Nlc3MoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBhbmQgbm8gbG9uZ2VyIFwiICsgXCJtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIFwiICsgc2VydmVySWQgKyBcIiBpbiBgXCIgKyBrbm93bkhvc3RzUGF0aCArIFwiYC4gQXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLCB0aGlzIGRyaXZlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IHRydXN0IHRoZSBuZXcgXCIgKyBcImNlcnRpZmljYXRlLCBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIGFsbG93IGFuIGF0dGFja2VyIHRvIHByZXRlbmQgdG8gYmUgdGhlIE5lbzRqIFwiICsgXCJpbnN0YW5jZSB3ZSB3YW50IHRvIGNvbm5lY3QgdG8uIFRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBieSB0aGUgc2VydmVyIGxvb2tzIGxpa2U6IFwiICsgc2VydmVyQ2VydCArIFwiLiBJZiB5b3UgdHJ1c3QgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHZhbGlkLCBzaW1wbHkgcmVtb3ZlIHRoZSBsaW5lIFwiICsgXCJzdGFydGluZyB3aXRoIFwiICsgc2VydmVySWQgKyBcIiBpbiBgXCIgKyBrbm93bkhvc3RzUGF0aCArIFwiYCwgYW5kIHRoZSBkcml2ZXIgd2lsbCBcIiArIFwidXBkYXRlIHRoZSBmaWxlIHdpdGggdGhlIG5ldyBjZXJ0aWZpY2F0ZS4gWW91IGNhbiBjb25maWd1cmUgd2hpY2ggZmlsZSB0aGUgZHJpdmVyIFwiICsgXCJzaG91bGQgdXNlIHRvIHN0b3JlIHRoaXMgaW5mb3JtYXRpb24gYnkgc2V0dGluZyBga25vd25Ib3N0c2AgdG8gYW5vdGhlciBwYXRoIGluIFwiICsgXCJ5b3VyIGRyaXZlciBjb25maWd1cmF0aW9uIC0gYW5kIHlvdSBjYW4gZGlzYWJsZSBlbmNyeXB0aW9uIHRoZXJlIGFzIHdlbGwgdXNpbmcgXCIgKyBcImBlbmNyeXB0ZWQ6ZmFsc2VgLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbm5lY3Qob3B0cywgb25TdWNjZXNzKSB7XG4gIHZhciBvbkZhaWx1cmUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gOiBhcmd1bWVudHNbMl07XG5cbiAgaWYgKG9wdHMuZW5jcnlwdGVkID09PSBmYWxzZSkge1xuICAgIHZhciBjb25uID0gX25ldDJbJ2RlZmF1bHQnXS5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCBvblN1Y2Nlc3MpO1xuICAgIGNvbm4ub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gY29ubjtcbiAgfSBlbHNlIGlmIChUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKSB7XG4gICAgcmV0dXJuIFRydXN0U3RyYXRlZ3lbb3B0cy50cnVzdF0ob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuICB9IGVsc2Uge1xuICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gdHJ1c3Qgc3RyYXRlZ3k6IFwiICsgb3B0cy50cnVzdCArIFwiLiBQbGVhc2UgdXNlIGVpdGhlciBcIiArIFwidHJ1c3Q6J1RSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMnIG9yIHRydXN0OidUUlVTVF9PTl9GSVJTVF9VU0UnIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWd1cmF0aW9uLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIFwiICsgXCJgZW5jcnlwdGVkOmZhbHNlYC4gVGhlcmUgaXMgbm8gbWVjaGFuaXNtIHRvIHVzZSBlbmNyeXB0aW9uIHdpdGhvdXQgdHJ1c3QgdmVyaWZpY2F0aW9uLCBcIiArIFwiYmVjYXVzZSB0aGlzIGluY3VycyB0aGUgb3ZlcmhlYWQgb2YgZW5jcnlwdGlvbiB3aXRob3V0IGltcHJvdmluZyBzZWN1cml0eS4gSWYgXCIgKyBcInRoZSBkcml2ZXIgZG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlIHBlZXIgaXQgaXMgY29ubmVjdGVkIHRvIGlzIHJlYWxseSBOZW80aiwgaXQgXCIgKyBcImlzIHZlcnkgZWFzeSBmb3IgYW4gYXR0YWNrZXIgdG8gYnlwYXNzIHRoZSBlbmNyeXB0aW9uIGJ5IHByZXRlbmRpbmcgdG8gYmUgTmVvNGouXCIpKTtcbiAgfVxufVxuXG4vKipcbiAqIEluIGEgTm9kZS5qcyBlbnZpcm9ubWVudCB0aGUgJ25ldCcgbW9kdWxlIGlzIHVzZWRcbiAqIGFzIHRyYW5zcG9ydC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBOb2RlQ2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG5cbiAgZnVuY3Rpb24gTm9kZUNoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlQ2hhbm5lbCk7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmlkID0gX0NPTk5FQ1RJT05fSURHRU4rKztcbiAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2Nvbm4gPSBjb25uZWN0KG9wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc2VsZi5fb3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2RhdGEnLCBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgIGlmIChzZWxmLm9ubWVzc2FnZSkge1xuICAgICAgICAgIHNlbGYub25tZXNzYWdlKG5ldyBfYnVmLk5vZGVCdWZmZXIoYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzZWxmLl9jb25uLm9uKCdlcnJvcicsIHNlbGYuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG5cbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTm9kZUNoYW5uZWwsIFt7XG4gICAga2V5OiAnX2hhbmRsZUNvbm5lY3Rpb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoZXJyKSB7XG4gICAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7Tm9kZUJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd3cml0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1ZmZlcikge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHF1ZXVlLCBwdXNoIHRoaXMgb24gdGhhdCBxdWV1ZS4gVGhpcyBtZWFuc1xuICAgICAgLy8gd2UgYXJlIG5vdCB5ZXQgY29ubmVjdGVkLCBzbyB3ZSBxdWV1ZSB0aGluZ3MgbG9jYWxseS5cbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmcucHVzaChidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmLk5vZGVCdWZmZXIpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coIFwiW0Nvbm4jXCIrdGhpcy5pZCtcIl0gU0VORDogXCIsIGJ1ZmZlci50b1N0cmluZygpICk7XG4gICAgICAgIHRoaXMuX2Nvbm4ud3JpdGUoYnVmZmVyLl9idWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byB3cml0ZTogXCIgKyBidWZmZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5fY29ubikge1xuICAgICAgICB0aGlzLl9jb25uLmVuZCgpO1xuICAgICAgICB0aGlzLl9jb25uLm9uKCdlbmQnLCBjYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOb2RlQ2hhbm5lbDtcbn0pKCk7XG5cbnZhciBfbm9kZUNoYW5uZWxNb2R1bGUgPSB7IGNoYW5uZWw6IE5vZGVDaGFubmVsLCBhdmFpbGFibGU6IHRydWUgfTtcblxudHJ5IHtcbiAgLy8gT25seSBkZWZpbmUgdGhpcyBtb2R1bGUgaWYgJ25ldCcgaXMgYXZhaWxhYmxlXG4gIHJlcXVpcmUucmVzb2x2ZShcIm5ldFwiKTtcbn0gY2F0Y2ggKGUpIHtcbiAgX25vZGVDaGFubmVsTW9kdWxlID0geyBhdmFpbGFibGU6IGZhbHNlIH07XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IF9ub2RlQ2hhbm5lbE1vZHVsZTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IFdlYlNvY2tldENoYW5uZWwgdG8gYmUgdXNlZCBpbiB3ZWIgYnJvd3NlcnMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgV2ViU29ja2V0Q2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG5cbiAgZnVuY3Rpb24gV2ViU29ja2V0Q2hhbm5lbChvcHRzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYlNvY2tldENoYW5uZWwpO1xuXG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcblxuICAgIHZhciBzY2hlbWUgPSBcIndzXCI7XG4gICAgaWYgKG9wdHMuZW5jcnlwdGVkKSB7XG4gICAgICBpZiAoIW9wdHMudHJ1c3QgfHwgb3B0cy50cnVzdCA9PT0gXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIpIHtcbiAgICAgICAgc2NoZW1lID0gXCJ3c3NcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoXCJUaGUgYnJvd3NlciB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMgb25lIHRydXN0IFwiICsgXCJzdHJhdGVneSwgJ1RSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMnLiBcIiArIG9wdHMudHJ1c3QgKyBcIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgXCIgKyBcImVpdGhlciB1c2UgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyBvciBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpmYWxzZWAgaW4gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cmwgPSBzY2hlbWUgKyBcIjovL1wiICsgb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHRoaXMuX3VybCk7XG4gICAgdGhpcy5fd3MuYmluYXJ5VHlwZSA9IFwiYXJyYXlidWZmZXJcIjtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAvL0FsbCBjb25uZWN0aW9uIGVycm9ycyBhcmUgbm90IHNlbnQgdG8gdGhlIGVycm9yIGhhbmRsZXJcbiAgICAvL3dlIG11c3QgYWxzbyBjaGVjayBmb3IgZGlydHkgY2xvc2UgY2FsbHNcbiAgICB0aGlzLl93cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghZS53YXNDbGVhbikge1xuICAgICAgICBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIGIgPSBuZXcgX2J1Zi5IZWFwQnVmZmVyKGV2ZW50LmRhdGEpO1xuICAgICAgICBzZWxmLm9ubWVzc2FnZShiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fd3Mub25lcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJTb2NrZXRDaGFubmVsLCBbe1xuICAgIGtleTogXCJfaGFuZGxlQ29ubmVjdGlvbkVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKSB7XG4gICAgICAvLyBvbmVycm9yIHRyaWdnZXJzIG9uIHdlYnNvY2tldCBjbG9zZSBhcyB3ZWxsLi4gZG9uJ3QgZ2V0IG1lIHN0YXJ0ZWQuXG4gICAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1Nzc5ODMxL2hvdy10by1jYXRjaC13ZWJzb2NrZXQtY29ubmVjdGlvbi10by13cy14eHhubi1mYWlsZWQtY29ubmVjdGlvbi1jbG9zZWQtYmVcbiAgICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWx1cmUuIER1ZSB0byBzZWN1cml0eSBcIiArIFwiY29uc3RyYWludHMgaW4geW91ciB3ZWIgYnJvd3NlciwgdGhlIHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUgaXMgbm90IGF2YWlsYWJsZSBcIiArIFwidG8gdGhpcyBOZW80aiBEcml2ZXIuIFBsZWFzZSB1c2UgeW91ciBicm93c2VycyBkZXZlbG9wbWVudCBjb25zb2xlIHRvIGRldGVybWluZSBcIiArIFwidGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGZhaWx1cmUuIENvbW1vbiByZWFzb25zIGluY2x1ZGUgdGhlIGRhdGFiYXNlIGJlaW5nIFwiICsgXCJ1bmF2YWlsYWJsZSwgdXNpbmcgdGhlIHdyb25nIGNvbm5lY3Rpb24gVVJMIG9yIHRlbXBvcmFyeSBuZXR3b3JrIHByb2JsZW1zLiBcIiArIFwiSWYgeW91IGhhdmUgZW5hYmxlZCBlbmNyeXB0aW9uLCBlbnN1cmUgeW91ciBicm93c2VyIGlzIGNvbmZpZ3VyZWQgdG8gdHJ1c3QgdGhlIFwiICsgXCJjZXJ0aWZpY2F0ZSBOZW80aiBpcyBjb25maWd1cmVkIHRvIHVzZS4gV2ViU29ja2V0IGByZWFkeVN0YXRlYCBpczogXCIgKyB0aGlzLl93cy5yZWFkeVN0YXRlKTtcbiAgICAgICAgaWYgKHRoaXMub25lcnJvcikge1xuICAgICAgICAgIHRoaXMub25lcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0aGUgcGFzc2VkIGluIGJ1ZmZlciB0byBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtIZWFwQnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgdG8gd3JpdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5IZWFwQnVmZmVyKSB7XG4gICAgICAgIHRoaXMuX3dzLnNlbmQoYnVmZmVyLl9idWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBzZW5kIGJ1ZmZlcjogXCIgKyBidWZmZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdmFyIGNiID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gICAgICB0aGlzLl93cy5vbmNsb3NlID0gY2I7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw7XG59KSgpO1xuXG52YXIgYXZhaWxhYmxlID0gdHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgX3dlYnNvY2tldENoYW5uZWxNb2R1bGUgPSB7IGNoYW5uZWw6IFdlYlNvY2tldENoYW5uZWwsIGF2YWlsYWJsZTogYXZhaWxhYmxlIH07XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX3dlYnNvY2tldENoYW5uZWxNb2R1bGU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIF9idWYyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYnVmKTtcblxudmFyIF9DSFVOS19IRUFERVJfU0laRSA9IDIsXG4gICAgX01FU1NBR0VfQk9VTkRBUlkgPSAweDAwLFxuICAgIF9ERUZBVUxUX0JVRkZFUl9TSVpFID0gMTQwMDsgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjEzNzM0L21heGltdW0tcGFja2V0LXNpemUtZm9yLWEtdGNwLWNvbm5lY3Rpb25cblxuLyoqXG4gKiBMb29rcyBsaWtlIGEgd3JpdGFibGUgYnVmZmVyLCBjaHVua3Mgb3V0cHV0IHRyYW5zcGFyZW50bHkgaW50byBhIGNoYW5uZWwgYmVsb3cuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgQ2h1bmtlciA9IChmdW5jdGlvbiAoX2J1ZiRCYXNlQnVmZmVyKSB7XG4gIF9pbmhlcml0cyhDaHVua2VyLCBfYnVmJEJhc2VCdWZmZXIpO1xuXG4gIGZ1bmN0aW9uIENodW5rZXIoY2hhbm5lbCwgYnVmZmVyU2l6ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDaHVua2VyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENodW5rZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzLCAwKTtcbiAgICB0aGlzLl9idWZmZXJTaXplID0gYnVmZmVyU2l6ZSB8fCBfREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fYnVmZmVyID0gX2J1ZjJbJ2RlZmF1bHQnXS5hbGxvYyh0aGlzLl9idWZmZXJTaXplKTtcbiAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IDA7XG4gICAgdGhpcy5fY2h1bmtPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ29tYmluZXMgY2h1bmtzIHVudGlsIGEgY29tcGxldGUgbWVzc2FnZSBpcyBnYXRoZXJlZCB1cCwgYW5kIHRoZW4gZm9yd2FyZHMgdGhhdFxuICAgKiBtZXNzYWdlIHRvIGFuICdvbm1lc3NhZ2UnIGxpc3RlbmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENodW5rZXIsIFt7XG4gICAga2V5OiAncHV0VUludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2Vuc3VyZSgxKTtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRGbG9hdDY0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoOCk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVGbG9hdDY0KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0Qnl0ZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgZGF0YSkge1xuICAgICAgLy8gVE9ETzogSWYgZGF0YSBpcyBsYXJnZXIgdGhhbiBvdXIgY2h1bmsgc2l6ZSBvciBzbywgd2UncmUgdmVyeSBsaWtlbHkgYmV0dGVyIG9mZiBqdXN0IHBhc3NpbmcgdGhpcyBidWZmZXIgb25cbiAgICAgIC8vIHJhdGhlciB0aGFuIGRvaW5nIHRoZSBjb3B5IGhlcmUgVE9ETzogKmhvd2V2ZXIqIG5vdGUgdGhhdCB3ZSBuZWVkIHNvbWUgd2F5IHRvIGZpbmQgb3V0IHdoZW4gdGhlIGRhdGEgaGFzIGJlZW5cbiAgICAgIC8vIHdyaXR0ZW4gKGFuZCB0aHVzIHRoZSBidWZmZXIgY2FuIGJlIHJlLXVzZWQpIGlmIHdlIHRha2UgdGhhdCBhcHByb2FjaFxuICAgICAgd2hpbGUgKGRhdGEucmVtYWluaW5nKCkgPiAwKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbiBvcGVuIGNodW5rLCBhbmQgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygc3BhY2UgbGVmdFxuICAgICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPiBkYXRhLnJlbWFpbmluZygpKSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YS5yZWFkU2xpY2UodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZsdXNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnBvc2l0aW9uID4gMCkge1xuICAgICAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICAgICAgLy8gTG9jYWwgY29weSBhbmQgY2xlYXIgdGhlIGJ1ZmZlciBmaWVsZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGJ1ZmZlciBpcyBub3QgcmUtcmVsZWFzZWQgaWYgdGhlIGZsdXNoIGNhbGwgZmFpbHNcbiAgICAgICAgdmFyIG91dCA9IHRoaXMuX2J1ZmZlcjtcbiAgICAgICAgdGhpcy5fYnVmZmVyID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaC53cml0ZShvdXQuZ2V0U2xpY2UoMCwgb3V0LnBvc2l0aW9uKSk7XG5cbiAgICAgICAgLy8gQWxsb2MgYSBuZXcgb3V0cHV0IGJ1ZmZlci4gV2UgYXNzdW1lIHdlJ3JlIHVzaW5nIE5vZGVKUydzIGJ1ZmZlciBwb29saW5nIHVuZGVyIHRoZSBob29kIGhlcmUhXG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IF9idWYyWydkZWZhdWx0J10uYWxsb2ModGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQm9sdCBtZXNzYWdlcyBhcmUgZW5jb2RlZCBpbiBvbmUgb3IgbW9yZSBjaHVua3MsIGFuZCB0aGUgYm91bmRhcnkgYmV0d2VlbiB0d28gbWVzc2FnZXNcbiAgICAgKiBpcyBlbmNvZGVkIGFzIGEgMC1sZW5ndGggY2h1bmssIGAwMCAwMGAuIFRoaXMgaW5zZXJ0cyBzdWNoIGEgbWVzc2FnZSBib3VuZGFyeSwgY2xvc2luZ1xuICAgICAqIGFueSBjdXJyZW50bHkgb3BlbiBjaHVuayBhcyBuZWVkZWRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ21lc3NhZ2VCb3VuZGFyeScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1lc3NhZ2VCb3VuZGFyeSgpIHtcblxuICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgX0NIVU5LX0hFQURFUl9TSVpFKSB7XG4gICAgICAgIHRoaXMuZmx1c2goKTtcbiAgICAgIH1cblxuICAgICAgLy8gV3JpdGUgbWVzc2FnZSBib3VuZGFyeVxuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlSW50MTYoX01FU1NBR0VfQk9VTkRBUlkpO1xuICAgIH1cblxuICAgIC8qKiBFbnN1cmUgYXQgbGVhc3QgdGhlIGdpdmVuIHNpemUgaXMgYXZhaWxhYmxlIGZvciB3cml0aW5nICovXG4gIH0sIHtcbiAgICBrZXk6ICdfZW5zdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Vuc3VyZShzaXplKSB7XG4gICAgICB2YXIgdG9Xcml0ZVNpemUgPSB0aGlzLl9jaHVua09wZW4gPyBzaXplIDogc2l6ZSArIF9DSFVOS19IRUFERVJfU0laRTtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCB0b1dyaXRlU2l6ZSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9idWZmZXIucG9zaXRpb24gPSB0aGlzLl9idWZmZXIucG9zaXRpb24gKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2Nsb3NlQ2h1bmtJZk9wZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2xvc2VDaHVua0lmT3BlbigpIHtcbiAgICAgIGlmICh0aGlzLl9jaHVua09wZW4pIHtcbiAgICAgICAgdmFyIGNodW5rU2l6ZSA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbiAtICh0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCArIF9DSFVOS19IRUFERVJfU0laRSk7XG4gICAgICAgIHRoaXMuX2J1ZmZlci5wdXRVSW50MTYodGhpcy5fY3VycmVudENodW5rU3RhcnQsIGNodW5rU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDaHVua2VyO1xufSkoX2J1ZjJbJ2RlZmF1bHQnXS5CYXNlQnVmZmVyKTtcblxudmFyIERlY2h1bmtlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERlY2h1bmtlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGVjaHVua2VyKTtcblxuICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gMDtcbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRGVjaHVua2VyLCBbe1xuICAgIGtleTogJ0FXQUlUSU5HX0NIVU5LJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVdBSVRJTkdfQ0hVTksoYnVmKSB7XG4gICAgICBpZiAoYnVmLnJlbWFpbmluZygpID49IDIpIHtcbiAgICAgICAgLy8gV2hvbGUgaGVhZGVyIGF2YWlsYWJsZSwgcmVhZCB0aGF0XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcihidWYucmVhZFVJbnQxNigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9ubHkgb25lIGJ5dGUgYXZhaWxhYmxlLCByZWFkIHRoYXQgYW5kIHdhaXQgZm9yIHRoZSBzZWNvbmQgYnl0ZVxuICAgICAgICB0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgPSBidWYucmVhZFVJbnQ4KCkgPDwgODtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fSEVBREVSO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ0lOX0hFQURFUicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0hFQURFUihidWYpIHtcbiAgICAgIC8vIEZpcnN0IGhlYWRlciBieXRlIHJlYWQsIG5vdyB3ZSByZWFkIHRoZSBuZXh0IG9uZVxuICAgICAgcmV0dXJuIHRoaXMuX29uSGVhZGVyKCh0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgfCBidWYucmVhZFVJbnQ4KCkpICYgMHhGRkZGKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdJTl9DSFVOSycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0NIVU5LKGJ1Zikge1xuICAgICAgaWYgKHRoaXMuX2NodW5rU2l6ZSA8PSBidWYucmVtYWluaW5nKCkpIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gY3VycmVudCBjaHVuaywgb3Igc2FtZSBzaXplOlxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZS5wdXNoKGJ1Zi5yZWFkU2xpY2UodGhpcy5fY2h1bmtTaXplKSk7XG4gICAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgc21hbGxlciB0aGFuIHRoZSBjaHVuayB3ZSdyZSByZWFkaW5nLCBzcGxpdCB0aGUgY3VycmVudCBjaHVuayBpdHNlbGYgdXBcbiAgICAgICAgdGhpcy5fY2h1bmtTaXplIC09IGJ1Zi5yZW1haW5pbmcoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5JTl9DSFVOSztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdDTE9TRUQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBDTE9TRUQoYnVmKSB7fVxuICAgIC8vIG5vLW9wXG5cbiAgICAvKiogQ2FsbGVkIHdoZW4gYSBjb21wbGV0ZSBjaHVuayBoZWFkZXIgaGFzIGJlZW4gcmVjaWV2ZWQgKi9cblxuICB9LCB7XG4gICAga2V5OiAnX29uSGVhZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uSGVhZGVyKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlciA9PSAwKSB7XG4gICAgICAgIC8vIE1lc3NhZ2UgYm91bmRhcnlcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50TWVzc2FnZS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLl9jdXJyZW50TWVzc2FnZVswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IF9idWYyWydkZWZhdWx0J10uQ29tYmluZWRCdWZmZXIodGhpcy5fY3VycmVudE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgICAgIHRoaXMub25tZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NodW5rU2l6ZSA9IGhlYWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnd3JpdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWYpIHtcbiAgICAgIHdoaWxlIChidWYuaGFzUmVtYWluaW5nKCkpIHtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSB0aGlzLl9zdGF0ZShidWYpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEZWNodW5rZXI7XG59KSgpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSB7XG4gIENodW5rZXI6IENodW5rZXIsXG4gIERlY2h1bmtlcjogRGVjaHVua2VyXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2NoV2Vic29ja2V0ID0gcmVxdWlyZShcIi4vY2gtd2Vic29ja2V0XCIpO1xuXG52YXIgX2NoV2Vic29ja2V0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NoV2Vic29ja2V0KTtcblxudmFyIF9jaE5vZGUgPSByZXF1aXJlKFwiLi9jaC1ub2RlXCIpO1xuXG52YXIgX2NoTm9kZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaE5vZGUpO1xuXG52YXIgX2NodW5raW5nID0gcmVxdWlyZShcIi4vY2h1bmtpbmdcIik7XG5cbnZhciBfY2h1bmtpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2h1bmtpbmcpO1xuXG52YXIgX2ZlYXR1cmVzID0gcmVxdWlyZShcIi4vZmVhdHVyZXNcIik7XG5cbnZhciBfZmVhdHVyZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmVhdHVyZXMpO1xuXG52YXIgX3BhY2tzdHJlYW0gPSByZXF1aXJlKFwiLi9wYWNrc3RyZWFtXCIpO1xuXG52YXIgX3BhY2tzdHJlYW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFja3N0cmVhbSk7XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuLi9ncmFwaC10eXBlcycpO1xuXG52YXIgX2dyYXBoVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ3JhcGhUeXBlcyk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVnZXInKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIENoYW5uZWwgPSB1bmRlZmluZWQ7XG5pZiAoX2NoV2Vic29ja2V0MltcImRlZmF1bHRcIl0uYXZhaWxhYmxlKSB7XG4gIENoYW5uZWwgPSBfY2hXZWJzb2NrZXQyW1wiZGVmYXVsdFwiXS5jaGFubmVsO1xufSBlbHNlIGlmIChfY2hOb2RlMltcImRlZmF1bHRcIl0uYXZhaWxhYmxlKSB7XG4gIENoYW5uZWwgPSBfY2hOb2RlMltcImRlZmF1bHRcIl0uY2hhbm5lbDtcbn0gZWxzZSB7XG4gIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRmF0YWw6IE5vIGNvbXBhdGlibGUgdHJhbnNwb3J0IGF2YWlsYWJsZS4gTmVlZCB0byBydW4gb24gYSBwbGF0Zm9ybSB3aXRoIHRoZSBXZWJTb2NrZXQgQVBJLlwiKTtcbn1cblxudmFyXG4vLyBTaWduYXR1cmUgYnl0ZXMgZm9yIGVhY2ggbWVzc2FnZSB0eXBlXG5JTklUID0gMHgwMSxcbiAgICAvLyAwMDAwIDAwMDEgLy8gSU5JVCA8dXNlcl9hZ2VudD5cbkFDS19GQUlMVVJFID0gMHgwRSxcbiAgICAvLyAwMDAwIDExMTAgLy8gQUNLX0ZBSUxVUkVcblJFU0VUID0gMHgwRixcbiAgICAvLyAwMDAwIDExMTEgLy8gUkVTRVRcblJVTiA9IDB4MTAsXG4gICAgLy8gMDAwMSAwMDAwIC8vIFJVTiA8c3RhdGVtZW50PiA8cGFyYW1ldGVycz5cbkRJU0NBUkRfQUxMID0gMHgyRixcbiAgICAvLyAwMDEwIDExMTEgLy8gRElTQ0FSRCAqXG5QVUxMX0FMTCA9IDB4M0YsXG4gICAgLy8gMDAxMSAxMTExIC8vIFBVTEwgKlxuU1VDQ0VTUyA9IDB4NzAsXG4gICAgLy8gMDExMSAwMDAwIC8vIFNVQ0NFU1MgPG1ldGFkYXRhPlxuUkVDT1JEID0gMHg3MSxcbiAgICAvLyAwMTExIDAwMDEgLy8gUkVDT1JEIDx2YWx1ZT5cbklHTk9SRUQgPSAweDdFLFxuICAgIC8vIDAxMTEgMTExMCAvLyBJR05PUkVEIDxtZXRhZGF0YT5cbkZBSUxVUkUgPSAweDdGLFxuICAgIC8vIDAxMTEgMTExMSAvLyBGQUlMVVJFIDxtZXRhZGF0YT5cblxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBoaWdoZXItbGV2ZWwgZ3JhcGggb2JqZWN0c1xuTk9ERSA9IDB4NEUsXG4gICAgUkVMQVRJT05TSElQID0gMHg1MixcbiAgICBVTkJPVU5EX1JFTEFUSU9OU0hJUCA9IDB4NzIsXG4gICAgUEFUSCA9IDB4NTAsXG5cbi8vc2VudCBiZWZvcmUgdmVyc2lvbiBuZWdvdGlhdGlvblxuTUFHSUNfUFJFQU1CTEUgPSAweDYwNjBCMDE3O1xuXG52YXIgVVJMUkVHRVggPSBuZXcgUmVnRXhwKFtcIlteL10rLy9cIiwgLy8gc2NoZW1lXG5cIigoW146Lz8jXSopXCIsIC8vIGhvc3RuYW1lXG5cIig/OjooWzAtOV0rKSk/KVwiLCAvLyBwb3J0IChvcHRpb25hbClcblwiLipcIl0uam9pbihcIlwiKSk7IC8vIGV2ZXJ5dGhpbmcgZWxzZVxuXG5mdW5jdGlvbiBob3N0KHVybCkge1xuICByZXR1cm4gdXJsLm1hdGNoKFVSTFJFR0VYKVsyXTtcbn1cblxuZnVuY3Rpb24gcG9ydCh1cmwpIHtcbiAgcmV0dXJuIHVybC5tYXRjaChVUkxSRUdFWClbM107XG59XG5cbmZ1bmN0aW9uIE5PX09QKCkge31cblxudmFyIE5PX09QX09CU0VSVkVSID0ge1xuICBvbk5leHQ6IE5PX09QLFxuICBvbkNvbXBsZXRlZDogTk9fT1AsXG4gIG9uRXJyb3I6IE5PX09QXG59O1xuXG4vKiogTWFwcyBmcm9tIHBhY2tzdHJlYW0gc3RydWN0dXJlcyB0byBOZW80aiBkb21haW4gb2JqZWN0cyAqL1xudmFyIF9tYXBwZXJzID0ge1xuICBub2RlOiBmdW5jdGlvbiBub2RlKHVucGFja2VyLCBidWYpIHtcbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uTm9kZSh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gTGFiZWxzXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHJlbDogZnVuY3Rpb24gcmVsKHVucGFja2VyLCBidWYpIHtcbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBTdGFydCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIEVuZCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIFR5cGVcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgdW5ib3VuZFJlbDogZnVuY3Rpb24gdW5ib3VuZFJlbCh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlVuYm91bmRSZWxhdGlvbnNoaXAodW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIFR5cGVcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgcGF0aDogZnVuY3Rpb24gcGF0aCh1bnBhY2tlciwgYnVmKSB7XG4gICAgdmFyIG5vZGVzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHJlbHMgPSB1bnBhY2tlci51bnBhY2soYnVmKSxcbiAgICAgICAgc2VxdWVuY2UgPSB1bnBhY2tlci51bnBhY2soYnVmKTtcbiAgICB2YXIgcHJldk5vZGUgPSBub2Rlc1swXSxcbiAgICAgICAgc2VnbWVudHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VxdWVuY2UubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIHZhciByZWxJbmRleCA9IHNlcXVlbmNlW2ldLFxuICAgICAgICAgIG5leHROb2RlID0gbm9kZXNbc2VxdWVuY2VbaSArIDFdXSxcbiAgICAgICAgICByZWwgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAocmVsSW5kZXggPiAwKSB7XG4gICAgICAgIHJlbCA9IHJlbHNbcmVsSW5kZXggLSAxXTtcbiAgICAgICAgaWYgKHJlbCBpbnN0YW5jZW9mIF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFRvIGF2b2lkIGR1cGxpY2F0aW9uLCByZWxhdGlvbnNoaXBzIGluIGEgcGF0aCBkbyBub3QgY29udGFpblxuICAgICAgICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHN0YXJ0IGFuZCBlbmQgbm9kZXMsIHRoYXQncyBpbnN0ZWFkXG4gICAgICAgICAgLy8gaW5mZXJyZWQgZnJvbSB0aGUgcGF0aCBzZXF1ZW5jZS4gVGhpcyBpcyB1cyBpbmZlcnJpbmcgKGFuZCxcbiAgICAgICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyByZW1lbWJlcmluZykgdGhlIHN0YXJ0L2VuZCBvZiBhIHJlbC5cbiAgICAgICAgICByZWxzW3JlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChwcmV2Tm9kZS5pZGVudGl0eSwgbmV4dE5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWwgPSByZWxzWy1yZWxJbmRleCAtIDFdO1xuICAgICAgICBpZiAocmVsIGluc3RhbmNlb2YgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5VbmJvdW5kUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgLy8gU2VlIGFib3ZlXG4gICAgICAgICAgcmVsc1stcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKG5leHROb2RlLmlkZW50aXR5LCBwcmV2Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIERvbmUgaHlkcmF0aW5nIG9uZSBwYXRoIHNlZ21lbnQuXG4gICAgICBzZWdtZW50cy5wdXNoKG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlBhdGhTZWdtZW50KHByZXZOb2RlLCByZWwsIG5leHROb2RlKSk7XG4gICAgICBwcmV2Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uUGF0aChub2Rlc1swXSwgbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0sIHNlZ21lbnRzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gbWFuYWdlcyBzZW5kaW5nIGFuZCByZWNpZXZpbmcgbWVzc2FnZXMgb3ZlciBhIGNoYW5uZWwuIEFcbiAqIGNvbm5lY3RvciBpcyB2ZXJ5IGNsb3NlbHkgdGllZCB0byB0aGUgQm9sdCBwcm90b2NvbCwgaXQgaW1wbGVtZW50cyB0aGVcbiAqIHNhbWUgbWVzc2FnZSBzdHJ1Y3R1cmUgd2l0aCB2ZXJ5IGxpdHRsZSBmcmlsbHMuIFRoaXMgbWVhbnMgQ29ubmVjdG9ycyBhcmVcbiAqIG5hdHVyYWxseSB0aWVkIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3ZSBleHBlY3RcbiAqIGFub3RoZXIgbGF5ZXIgd2lsbCBiZSBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB2ZXJzaW9ucy5cbiAqXG4gKiBUaGUgY29ubmVjdG9yIHRyaWVzIHRvIGJhdGNoIG91dGJvdW5kIG1lc3NhZ2VzIGJ5IHJlcXVpcmluZyBpdHMgdXNlcnNcbiAqIHRvIGNhbGwgJ3N5bmMnIHdoZW4gbWVzc2FnZXMgbmVlZCB0byBiZSBzZW50LCBhbmQgaXQgcm91dGVzIHJlc3BvbnNlXG4gKiBtZXNzYWdlcyBiYWNrIHRvIHRoZSBvcmlnaW5hdG9ycyBvZiB0aGUgcmVxdWVzdHMgdGhhdCBjcmVhdGVkIHRob3NlXG4gKiByZXNwb25zZSBtZXNzYWdlcy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBDb25uZWN0aW9uID0gKGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBjaGFubmVsIC0gY2hhbm5lbCB3aXRoIGEgJ3dyaXRlJyBmdW5jdGlvbiBhbmQgYSAnb25tZXNzYWdlJ1xuICAgKiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrIHByb3BlcnR5XG4gICAqL1xuXG4gIGZ1bmN0aW9uIENvbm5lY3Rpb24oY2hhbm5lbCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25uZWN0aW9uKTtcblxuICAgIC8qKlxuICAgICAqIEFuIG9yZGVyZWQgcXVldWUgb2Ygb2JzZXJ2ZXJzLCBlYWNoIGV4Y2hhbmdlIHJlc3BvbnNlICh6ZXJvIG9yIG1vcmVcbiAgICAgKiBSRUNPUkQgbWVzc2FnZXMgZm9sbG93ZWQgYnkgYSBTVUNDRVNTIG1lc3NhZ2UpIHdlIHJlY2lldmUgd2lsbCBiZSByb3V0ZWRcbiAgICAgKiB0byB0aGUgbmV4dCBwZW5kaW5nIG9ic2VydmVyLlxuICAgICAqL1xuICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMgPSBbXTtcbiAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2RlY2h1bmtlciA9IG5ldyBfY2h1bmtpbmcyW1wiZGVmYXVsdFwiXS5EZWNodW5rZXIoKTtcbiAgICB0aGlzLl9jaHVua2VyID0gbmV3IF9jaHVua2luZzJbXCJkZWZhdWx0XCJdLkNodW5rZXIoY2hhbm5lbCk7XG4gICAgdGhpcy5fcGFja2VyID0gbmV3IF9wYWNrc3RyZWFtMltcImRlZmF1bHRcIl0uUGFja2VyKHRoaXMuX2NodW5rZXIpO1xuICAgIHRoaXMuX3VucGFja2VyID0gbmV3IF9wYWNrc3RyZWFtMltcImRlZmF1bHRcIl0uVW5wYWNrZXIoKTtcbiAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuXG4gICAgLy8gU2V0IHRvIHRydWUgb24gZmF0YWwgZXJyb3JzLCB0byBnZXQgdGhpcyBvdXQgb2Ygc2Vzc2lvbiBwb29sLlxuICAgIHRoaXMuX2lzQnJva2VuID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLCBleHBsYWluIHRvIHRoZSB1bnBhY2tlciBob3cgdG8gdW5wYWNrIG5vZGVzLCByZWxzLCBwYXRocztcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW05PREVdID0gX21hcHBlcnMubm9kZTtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy5yZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tVTkJPVU5EX1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy51bmJvdW5kUmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUEFUSF0gPSBfbWFwcGVycy5wYXRoO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIC8vIFRPRE86IFVzaW5nIGBvbm1lc3NhZ2VgIGFuZCBgb25lcnJvcmAgY2FtZSBmcm9tIHRoZSBXZWJTb2NrZXQgQVBJLFxuICAgIC8vIGl0IHJlYWRzIHBvb3JseSBhbmQgaGFzIHNldmVyYWwgYW5ub3lpbmcgZHJhd2JhY2tzLiBTd2FwIHRvIGhhdmluZ1xuICAgIC8vIENoYW5uZWwgZXh0ZW5kIEV2ZW50RW1pdHRlciBpbnN0ZWFkLCB0aGVuIHdlIGNhbiB1c2UgYG9uKCdkYXRhJywuLilgXG4gICAgdGhpcy5fY2gub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgdmFyIHByb3Bvc2VkID0gYnVmLnJlYWRJbnQzMigpO1xuICAgICAgaWYgKHByb3Bvc2VkID09IDEpIHtcbiAgICAgICAgLy8gT2ssIHByb3RvY29sIHJ1bm5pbmcuIFNpbXBseSBmb3J3YXJkIGFsbCBtZXNzYWdlcyBwYXN0XG4gICAgICAgIC8vIHRoaXMgdG8gdGhlIGRlY2h1bmtlclxuICAgICAgICBzZWxmLl9jaC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zik7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGJ1Zi5oYXNSZW1haW5pbmcoKSkge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3Bvc2VkID09IDEyMTM0ODYxNjApIHtcbiAgICAgICAgLy9zZXJ2ZXIgcmVzcG9uZGVkIDEyMTM0ODYxNjAgPT0gMHg0ODU0NTQ1MCA9PSBcIkhUVFBcIlxuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU2VydmVyIHJlc3BvbmRlZCBIVFRQLiBNYWtlIHN1cmUgeW91IGFyZSBub3QgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIGh0dHAgZW5kcG9pbnQgXCIgKyBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIHZlcnNpb246IFwiICsgcHJvcG9zZWQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIHRvIGNvbm5lY3Rpb24gZXJyb3JzLiBJbXBvcnRhbnQgbm90ZSB0aG91Z2g7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB3aWxsIGdldCBhIGNoYW5uZWwgdGhhdCBpcyBhbHJlYWR5IGJyb2tlbiAoZm9yIGluc3RhbmNlLFxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucykuIEluIHRoaXMgY2FzZSwgb25lcnJvclxuICAgIC8vIHdpbGwgaGF2ZSBcImFscmVhZHkgdHJpZ2dlcmVkXCIgYmVmb3JlIHdlIGFkZCBvdXQgbGlzdGVuZXIgaGVyZS4gU28gdGhlIGxpbmVcbiAgICAvLyBiZWxvdyBhbHNvIGNoZWNrcyB0aGF0IHRoZSBjaGFubmVsIGlzIG5vdCBhbHJlYWR5IGZhaWxlZC4gVGhpcyBjb3VsZCBiZSBuaWNlbHlcbiAgICAvLyBlbmNhcHN1bGF0ZWQgaW50byBDaGFubmVsIGlmIHdlIHVzZWQgYG9uKCdlcnJvcicsIC4uKWAgcmF0aGVyIHRoYW4gYG9uZXJyb3I9Li5gXG4gICAgLy8gYXMgb3V0bGluZWQgaW4gdGhlIGNvbW1lbnQgYWJvdXQgYG9ubWVzc2FnZWAgZnVydGhlciB1cCBpbiB0aGlzIGZpbGUuXG4gICAgdGhpcy5fY2gub25lcnJvciA9IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IuYmluZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fY2guX2Vycm9yKSB7XG4gICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKHRoaXMuX2NoLl9lcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgIHNlbGYuX2hhbmRsZU1lc3NhZ2Uoc2VsZi5fdW5wYWNrZXIudW5wYWNrKGJ1ZikpO1xuICAgIH07XG5cbiAgICB2YXIgaGFuZHNoYWtlID0gKDAsIF9idWYuYWxsb2MpKDUgKiA0KTtcbiAgICAvL21hZ2ljIHByZWFtYmxlXG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoTUFHSUNfUFJFQU1CTEUpO1xuICAgIC8vcHJvcG9zZWQgdmVyc2lvbnNcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigxKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2UucmVzZXQoKTtcbiAgICB0aGlzLl9jaC53cml0ZShoYW5kc2hha2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZXRlIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gJ25lbzRqJy1wcmVmaXhlZCBVUkwgdG8gTmVvNGogQm9sdCBlbmRwb2ludFxuICAgKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gICAqIEByZXR1cm4ge0Nvbm5lY3Rpb259IC0gTmV3IGNvbm5lY3Rpb25cbiAgICovXG5cbiAgLyoqXG4gICAqIFwiRmF0YWxcIiBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBkZWFkLiBPbmx5IGNhbGwgdGhpcyBpZiBzb21ldGhpbmdcbiAgICogaGFwcGVucyB0aGF0IGNhbm5vdCBiZSByZWNvdmVyZWQgZnJvbS4gVGhpcyB3aWxsIGxlYWQgdG8gYWxsIHN1YnNjcmliZXJzXG4gICAqIGZhaWxpbmcsIGFuZCB0aGUgY29ubmVjdGlvbiBnZXR0aW5nIGVqZWN0ZWQgZnJvbSB0aGUgc2Vzc2lvbiBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIGFuIGVycm9yIG9iamVjdCwgZm9yd2FyZGVkIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgc3Vic2NyaWJlcnNcbiAgICogQHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKENvbm5lY3Rpb24sIFt7XG4gICAga2V5OiBcIl9oYW5kbGVGYXRhbEVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVGYXRhbEVycm9yKGVycikge1xuICAgICAgdGhpcy5faXNCcm9rZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fZXJyb3IgPSBlcnI7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyICYmIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICB9XG4gICAgICB3aGlsZSAodGhpcy5fcGVuZGluZ09ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICBvYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX2hhbmRsZU1lc3NhZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZU1lc3NhZ2UobXNnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBzd2l0Y2ggKG1zZy5zaWduYXR1cmUpIHtcbiAgICAgICAgY2FzZSBSRUNPUkQ6XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uTmV4dChtc2cuZmllbGRzWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTVUNDRVNTOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25Db21wbGV0ZWQobXNnLmZpZWxkc1swXSk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRkFJTFVSRTpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IobXNnKTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yTXNnID0gbXNnO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgICAvLyBUaGluZ3MgYXJlIG5vdyBicm9rZW4uIFBlbmRpbmcgb2JzZXJ2ZXJzIHdpbGwgZ2V0IEZBSUxVUkUgbWVzc2FnZXMgcm91dGVkIHVudGlsXG4gICAgICAgICAgICAvLyBXZSBhcmUgZG9uZSBoYW5kbGluZyB0aGlzIGZhaWx1cmUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlKSB7XG4gICAgICAgICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IF90aGlzO1xuXG4gICAgICAgICAgICAgICAgLy8gaXNIYW5kbGluZ0ZhaWx1cmUgd2FzIGZhbHNlLCBtZWFuaW5nIHRoaXMgaXMgdGhlIGZpcnN0IGZhaWx1cmUgbWVzc2FnZVxuICAgICAgICAgICAgICAgIC8vIHdlIHNlZSBmcm9tIHRoaXMgZmFpbHVyZS4gV2UgbWF5IHNlZSBzZXZlcmFsIG90aGVycywgb25lIGZvciBlYWNoIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAvLyB3ZSBoYWQgXCJvcHRpbWlzdGljYWxseVwiIGFscmVhZHkgc2VudCBhZnRlciB3aGF0ZXZlciBpdCB3YXMgdGhhdCBmYWlsZWQuXG4gICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGFuZCBuZWVkIHRvIEFDSyB0aGUgZmlyc3Qgb25lLCB3aGljaCBpcyB3aHkgd2UgYXJlIHRyYWNraW5nXG4gICAgICAgICAgICAgICAgLy8gdGhpcyBfaXNIYW5kbGluZ0ZhaWx1cmUgdGhpbmcuXG4gICAgICAgICAgICAgICAgX3RoaXMuX2Fja0ZhaWx1cmUoe1xuICAgICAgICAgICAgICAgICAgb25OZXh0OiBOT19PUCxcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3I6IE5PX09QLFxuICAgICAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJR05PUkVEOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZXJyb3JNc2cgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yTXNnKTtlbHNlIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcikgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IobXNnKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIG1lc3NhZ2U6IFwiICsgbXNnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGFuIElOSVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcImluaXRpYWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZShjbGllbnROYW1lLCB0b2tlbiwgb2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KElOSVQsIFt0aGlzLl9wYWNrYWJsZShjbGllbnROYW1lKSwgdGhpcy5fcGFja2FibGUodG9rZW4pXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgICB0aGlzLnN5bmMoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBSVU4tbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50LCBwYXJhbXMsIG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSVU4sIFt0aGlzLl9wYWNrYWJsZShzdGF0ZW1lbnQpLCB0aGlzLl9wYWNrYWJsZShwYXJhbXMpXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXMzLl9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUFVMTF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1bGxBbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHVsbEFsbChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoUFVMTF9BTEwsIFtdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczQuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBESVNDQVJEX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZGlzY2FyZEFsbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkaXNjYXJkQWxsKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChESVNDQVJEX0FMTCwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNS5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciB3cmFwcGVkT2JzID0ge1xuICAgICAgICBvbk5leHQ6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25OZXh0IDogTk9fT1AsXG4gICAgICAgIG9uRXJyb3I6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25FcnJvciA6IE5PX09QLFxuICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoKSB7XG4gICAgICAgICAgc2VsZi5faXNIYW5kbGluZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcih3cmFwcGVkT2JzKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJFU0VULCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM2Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgQUNLX0ZBSUxVUkUtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcIl9hY2tGYWlsdXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9hY2tGYWlsdXJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM3ID0gdGhpcztcblxuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChBQ0tfRkFJTFVSRSwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNy5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfcXVldWVPYnNlcnZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcXVldWVPYnNlcnZlcihvYnNlcnZlcikge1xuICAgICAgaWYgKHRoaXMuX2lzQnJva2VuKSB7XG4gICAgICAgIGlmIChvYnNlcnZlciAmJiBvYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZXIgPSBvYnNlcnZlciB8fCBOT19PUF9PQlNFUlZFUjtcbiAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkID0gb2JzZXJ2ZXIub25Db21wbGV0ZWQgfHwgTk9fT1A7XG4gICAgICBvYnNlcnZlci5vbkVycm9yID0gb2JzZXJ2ZXIub25FcnJvciB8fCBOT19PUDtcbiAgICAgIG9ic2VydmVyLm9uTmV4dCA9IG9ic2VydmVyLm9uTmV4dCB8fCBOT19PUDtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3luY2hyb25pemUgLSBmbHVzaCBhbGwgcXVldWVkIG91dGdvaW5nIG1lc3NhZ2VzIGFuZCByb3V0ZSB0aGVpciByZXNwb25zZXNcbiAgICAgKiB0byB0aGVpciByZXNwZWN0aXZlIGhhbmRsZXJzLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3luYygpIHtcbiAgICAgIHRoaXMuX2NodW5rZXIuZmx1c2goKTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgdGhpcyBjb25uZWN0aW9uIGlzIGluIHdvcmtpbmcgY29uZGl0aW9uICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaXNPcGVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3BlbigpIHtcbiAgICAgIHJldHVybiAhdGhpcy5faXNCcm9rZW4gJiYgdGhpcy5fY2guX29wZW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBjbG9zZSBvbiB0aGUgY2hhbm5lbC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiAtIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2xvc2UuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiY2xvc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoY2IpIHtcbiAgICAgIHRoaXMuX2NoLmNsb3NlKGNiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX3BhY2thYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9wYWNrYWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl9wYWNrZXIucGFja2FibGUodmFsdWUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzOC5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbm5lY3Rpb247XG59KSgpO1xuXG5mdW5jdGlvbiBjb25uZWN0KHVybCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cbiAgdmFyIENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgcmV0dXJuIG5ldyBDb25uZWN0aW9uKG5ldyBDaCh7XG4gICAgaG9zdDogaG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBvcnQodXJsKSB8fCA3Njg3LFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgZW5jcnlwdGlvbiBpZiB0cnVzdC1vbi1maXJzdC11c2UgaXMgYXZhaWxhYmxlXG4gICAgZW5jcnlwdGVkOiBjb25maWcuZW5jcnlwdGVkID09IG51bGwgPyAoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpIDogY29uZmlnLmVuY3J5cHRlZCxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIHRydXN0LW9uLWZpcnN0LXVzZSBpZiBpdCBpcyBhdmFpbGFibGVcbiAgICB0cnVzdDogY29uZmlnLnRydXN0IHx8ICgoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpID8gXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiA6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzOiBjb25maWcua25vd25Ib3N0c1xuICB9KSk7XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjb25uZWN0OiBjb25uZWN0LFxuICBDb25uZWN0aW9uOiBDb25uZWN0aW9uXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZTogZnVuY3Rpb24gdHJ1c3Rfb25fZmlyc3RfdXNlKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIGluc2FuZS4gV2UgYXJlIHZlcmlmeWluZyB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIGdldFBlZXJDZXJ0aWZpY2F0ZVxuICAgICAgLy8gdGhhdCBzdXBwb3J0cyByZWFkaW5nIHRoZSB3aG9sZSBjZXJ0aWZpY2F0ZSwgZWcgdGhpcyBjb21taXQ6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzM0NWM0MGI2XG4gICAgICB2YXIgZGVzYyA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgcmV0dXJuIGRlc2MubGVuZ3RoID49IDE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaGFzRmVhdHVyZShuYW1lKSB7XG4gIHJldHVybiBGRUFUVVJFU1tuYW1lXSAmJiBGRUFUVVJFU1tuYW1lXSgpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBoYXNGZWF0dXJlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFwiZGVidWdcIjogZnVuY3Rpb24gZGVidWcodmFsKSB7XG4gICAgY29uc29sZS5sb2codmFsKTtcbiAgfVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfdXRmOCA9IHJlcXVpcmUoXCIuL3V0ZjhcIik7XG5cbnZhciBfdXRmODIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGY4KTtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZShcIi4uL2ludGVnZXJcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBNQVhfQ0hVTktfU0laRSA9IDE2MzgzLFxuICAgIFRJTllfU1RSSU5HID0gMHg4MCxcbiAgICBUSU5ZX0xJU1QgPSAweDkwLFxuICAgIFRJTllfTUFQID0gMHhBMCxcbiAgICBUSU5ZX1NUUlVDVCA9IDB4QjAsXG4gICAgTlVMTCA9IDB4QzAsXG4gICAgRkxPQVRfNjQgPSAweEMxLFxuICAgIEZBTFNFID0gMHhDMixcbiAgICBUUlVFID0gMHhDMyxcbiAgICBJTlRfOCA9IDB4QzgsXG4gICAgSU5UXzE2ID0gMHhDOSxcbiAgICBJTlRfMzIgPSAweENBLFxuICAgIElOVF82NCA9IDB4Q0IsXG4gICAgU1RSSU5HXzggPSAweEQwLFxuICAgIFNUUklOR18xNiA9IDB4RDEsXG4gICAgU1RSSU5HXzMyID0gMHhEMixcbiAgICBMSVNUXzggPSAweEQ0LFxuICAgIExJU1RfMTYgPSAweEQ1LFxuICAgIExJU1RfMzIgPSAweEQ2LFxuICAgIE1BUF84ID0gMHhEOCxcbiAgICBNQVBfMTYgPSAweEQ5LFxuICAgIE1BUF8zMiA9IDB4REEsXG4gICAgU1RSVUNUXzggPSAweERDLFxuICAgIFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIFN0cnVjdHVyZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cnVjdHVyZShzaWduYXR1cmUsIGZpZWxkcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJ1Y3R1cmUpO1xuXG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHBhY2tcbiAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cnVjdHVyZSwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgZmllbGRTdHIgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBmaWVsZFN0ciArPSBcIiwgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJTdHJ1Y3R1cmUoXCIgKyB0aGlzLnNpZ25hdHVyZSArIFwiLCBbXCIgKyB0aGlzLmZpZWxkcyArIFwiXSlcIjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RydWN0dXJlO1xufSkoKTtcblxudmFyIFBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhY2tlcihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhY2tlcik7XG5cbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHVucGFja1xuICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgKi9cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhY2thYmxlIGZ1bmN0aW9uIG91dCBvZiB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICogQHBhcmFtIHggdGhlIHZhbHVlIHRvIHBhY2tcbiAgICogQHBhcmFtIG9uRXJyb3IgY2FsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZW4gdmFsdWUgY2Fubm90IGJlIHBhY2tlZFxuICAgKiBAcmV0dXJucyBGdW5jdGlvblxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUGFja2VyLCBbe1xuICAgIGtleTogXCJwYWNrYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrYWJsZSh4LCBvbkVycm9yKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChOVUxMKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChUUlVFKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NoLndyaXRlVUludDgoRkFMU0UpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tGbG9hdCh4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrU3RyaW5nKHgsIG9uRXJyb3IpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgX2ludGVnZXIuSW50ZWdlcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrSW50ZWdlcih4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMucGFja0xpc3RIZWFkZXIoeC5sZW5ndGgsIG9uRXJyb3IpO1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB4Lmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgX3RoaXMucGFja2FibGUoeFtfaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB4W19pXSwgb25FcnJvcikoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBTdHJ1Y3R1cmUpIHtcbiAgICAgICAgdmFyIHBhY2thYmxlRmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwYWNrYWJsZUZpZWxkc1tpXSA9IHRoaXMucGFja2FibGUoeC5maWVsZHNbaV0sIG9uRXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tTdHJ1Y3QoeC5zaWduYXR1cmUsIHBhY2thYmxlRmllbGRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG5cbiAgICAgICAgICB2YXIgY291bnQgPSAwO1xuICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGtleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgaWYgKHhba2V5c1tfaTJdXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIF90aGlzLnBhY2tNYXBIZWFkZXIoY291bnQsIG9uRXJyb3IpO1xuICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGtleXMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbX2kzXTtcbiAgICAgICAgICAgIGlmICh4W2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBfdGhpcy5wYWNrU3RyaW5nKGtleSk7XG4gICAgICAgICAgICAgIF90aGlzLnBhY2thYmxlKHhba2V5XSwgb25FcnJvcikoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJDYW5ub3QgcGFjayB0aGlzIHZhbHVlOiBcIiArIHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFja3MgYSBzdHJ1Y3RcbiAgICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgb2YgdGhlIHN0cnVjdFxuICAgICAqIEBwYXJhbSBwYWNrYWJsZUZpZWxkcyB0aGUgZmllbGRzIG9mIHRoZSBzdHJ1Y3QsIG1ha2Ugc3VyZSB5b3UgY2FsbCBgcGFja2FibGUgb24gYWxsIGZpZWxkc2BcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3Qoc2lnbmF0dXJlLCBwYWNrYWJsZUZpZWxkcywgb25FcnJvcikge1xuICAgICAgcGFja2FibGVGaWVsZHMgPSBwYWNrYWJsZUZpZWxkcyB8fCBbXTtcbiAgICAgIHRoaXMucGFja1N0cnVjdEhlYWRlcihwYWNrYWJsZUZpZWxkcy5sZW5ndGgsIHNpZ25hdHVyZSwgb25FcnJvcik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhY2thYmxlRmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhY2thYmxlRmllbGRzW2ldKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tJbnRlZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tJbnRlZ2VyKHgpIHtcbiAgICAgIHZhciBoaWdoID0geC5oaWdoLFxuICAgICAgICAgIGxvdyA9IHgubG93O1xuXG4gICAgICBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4MTApICYmIHgubGVzc1RoYW4oMHg4MCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwKSAmJiB4Lmxlc3NUaGFuKC0weDEwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MTYobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMDAwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwMDAwMCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDMyKGxvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF82NCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIoaGlnaCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0Zsb2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tGbG9hdCh4KSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZMT0FUXzY0KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlRmxvYXQ2NCh4KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrU3RyaW5nKHgsIG9uRXJyb3IpIHtcbiAgICAgIHZhciBieXRlcyA9IF91dGY4MltcImRlZmF1bHRcIl0uZW5jb2RlKHgpO1xuICAgICAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUklORyB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0xpc3RIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0xpc3RIZWFkZXIoc2l6ZSwgb25FcnJvcikge1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9MSVNUIHwgc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDE2Nzc3MjE2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDY1NTM2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tNYXBIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja01hcEhlYWRlcihzaXplLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX01BUCB8IHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0SGVhZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3RIZWFkZXIoc2l6ZSwgc2lnbmF0dXJlLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUlVDVCB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQYWNrZXI7XG59KSgpO1xuXG52YXIgVW5wYWNrZXIgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbnBhY2tlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5wYWNrZXIpO1xuXG4gICAgLy8gSGlnaGVyIGxldmVsIGxheWVycyBjYW4gc3BlY2lmeSBob3cgdG8gbWFwIHN0cnVjdHMgdG8gaGlnaGVyLWxldmVsIG9iamVjdHMuXG4gICAgLy8gSWYgd2UgcmVjaWV2ZSBhIHN0cnVjdCB0aGF0IGhhcyBhIHNpZ25hdHVyZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBtYXBwZXIsXG4gICAgLy8gd2Ugc2ltcGx5IHJldHVybiBhIFN0cnVjdHVyZSBvYmplY3QuXG4gICAgdGhpcy5zdHJ1Y3RNYXBwZXJzID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVW5wYWNrZXIsIFt7XG4gICAga2V5OiBcInVucGFja0xpc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrTGlzdChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFsdWUucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrTWFwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFja01hcChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHt9O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICAgIHZhbHVlW2tleV0gPSB0aGlzLnVucGFjayhidWZmZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tTdHJ1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrU3RydWN0KHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHNpZ25hdHVyZSA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICAgIHZhciBtYXBwZXIgPSB0aGlzLnN0cnVjdE1hcHBlcnNbc2lnbmF0dXJlXTtcbiAgICAgIGlmIChtYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuIG1hcHBlcih0aGlzLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbmV3IFN0cnVjdHVyZShzaWduYXR1cmUsIFtdKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICB2YWx1ZS5maWVsZHMucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2soYnVmZmVyKSB7XG4gICAgICB2YXIgbWFya2VyID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgICAgaWYgKG1hcmtlciA9PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gVFJVRSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZBTFNFKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZMT0FUXzY0KSB7XG4gICAgICAgIHJldHVybiBidWZmZXIucmVhZEZsb2F0NjQoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID49IDAgJiYgbWFya2VyIDwgMTI4KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShtYXJrZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMjQwICYmIG1hcmtlciA8IDI1Nikge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkobWFya2VyIC0gMjU2KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF84KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShidWZmZXIucmVhZEludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMTYpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGJ1ZmZlci5yZWFkSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMzIpIHtcbiAgICAgICAgdmFyIGIgPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShiKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF82NCkge1xuICAgICAgICB2YXIgaGlnaCA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgdmFyIGxvdyA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBfaW50ZWdlci5JbnRlZ2VyKGxvdywgaGlnaCk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfOCkge1xuICAgICAgICByZXR1cm4gX3V0ZjgyW1wiZGVmYXVsdFwiXS5kZWNvZGUoYnVmZmVyLCBidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzE2KSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDE2KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzMyKSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDMyKCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzMyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfMzIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDMyKCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfOCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSVUNUXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQxNigpLCBidWZmZXIpO1xuICAgICAgfVxuICAgICAgdmFyIG1hcmtlckhpZ2ggPSBtYXJrZXIgJiAweEYwO1xuICAgICAgdmFyIG1hcmtlckxvdyA9IG1hcmtlciAmIDB4MEY7XG4gICAgICBpZiAobWFya2VySGlnaCA9PSAweDgwKSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIG1hcmtlckxvdyk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHg5MCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEEwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHhCMCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIHBhY2tlZCB2YWx1ZSB3aXRoIG1hcmtlciBcIiArIG1hcmtlci50b1N0cmluZygxNikpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBVbnBhY2tlcjtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBQYWNrZXI6IFBhY2tlcixcbiAgVW5wYWNrZXI6IFVucGFja2VyLFxuICBTdHJ1Y3R1cmU6IFN0cnVjdHVyZVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBQb29sID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBjcmVhdGUgIGFuIGFsbG9jYXRpb24gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbmV3IHJlc291cmNlLiBJdCdzIGdpdmVuXG4gICAqICAgICAgICAgICAgICAgIGEgc2luZ2xlIGFyZ3VtZW50LCBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHJlc291cmNlIHRvXG4gICAqICAgICAgICAgICAgICAgIHRoZSBwb29sIGlmIGludm9rZWQsIHdoaWNoIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBvbiAuZGlzcG9zZVxuICAgKiAgICAgICAgICAgICAgICBvciAuY2xvc2Ugb3Igd2hhdGV2ZXIgbWVjaGFuaXNtIHRoZSByZXNvdXJjZSB1c2VzIHRvIGZpbmFsaXplLlxuICAgKiBAcGFyYW0gZGVzdHJveSBjYWxsZWQgd2l0aCB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBldmljdGVkIGZyb20gdGhpcyBwb29sXG4gICAqIEBwYXJhbSB2YWxpZGF0ZSBjYWxsZWQgYXQgdmFyaW91cyB0aW1lcyAobGlrZSB3aGVuIGFuIGluc3RhbmNlIGlzIGFjcXVpcmVkIGFuZFxuICAgKiAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyByZXR1cm5lZCkuIElmIHRoaXMgcmV0dXJucyBmYWxzZSwgdGhlIHJlc291cmNlIHdpbGxcbiAgICogICAgICAgICAgICAgICAgIGJlIGV2aWN0ZWRcbiAgICogQHBhcmFtIG1heElkbGUgdGhlIG1heCBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdFxuICAgKiAgICAgICAgICAgICAgICBhbnkgdGltZS4gSWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQsIHJlc291cmNlcyB3aWxsIGJlIGV2aWN0ZWQuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFBvb2woY3JlYXRlKSB7XG4gICAgdmFyIGRlc3Ryb3kgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWxpZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gOiBhcmd1bWVudHNbMl07XG4gICAgdmFyIG1heElkbGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDMgfHwgYXJndW1lbnRzWzNdID09PSB1bmRlZmluZWQgPyA1MCA6IGFyZ3VtZW50c1szXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQb29sKTtcblxuICAgIHRoaXMuX2NyZWF0ZSA9IGNyZWF0ZTtcbiAgICB0aGlzLl9kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLl92YWxpZGF0ZSA9IHZhbGlkYXRlO1xuICAgIHRoaXMuX21heElkbGUgPSBtYXhJZGxlO1xuICAgIHRoaXMuX3Bvb2wgPSBbXTtcbiAgICB0aGlzLl9yZWxlYXNlID0gdGhpcy5fcmVsZWFzZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBvb2wsIFt7XG4gICAga2V5OiBcImFjcXVpcmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWNxdWlyZSgpIHtcbiAgICAgIGlmICh0aGlzLl9wb29sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvb2wucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlKHRoaXMuX3JlbGVhc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfcmVsZWFzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVsZWFzZShyZXNvdXJjZSkge1xuICAgICAgaWYgKHRoaXMuX3Bvb2wubGVuZ3RoID49IHRoaXMuX21heElkbGUgfHwgIXRoaXMuX3ZhbGlkYXRlKHJlc291cmNlKSkge1xuICAgICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3Bvb2wucHVzaChyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBvb2w7XG59KSgpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgUG9vbDogUG9vbFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfcmVjb3JkID0gcmVxdWlyZShcIi4uL3JlY29yZFwiKTtcblxuLyoqXG4gKiBIYW5kbGVzIGEgUlVOL1BVTExfQUxMLCBvciBSVU4vRElTQ0FSRF9BTEwgcmVxdWVzdHMsIG1hcHMgdGhlIHJlc3BvbnNlc1xuICogaW4gYSB3YXkgdGhhdCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgY2FuIHNlZSB0aGVzZSBhcyBhIGNsZWFuIFN0cmVhbVxuICogb2YgcmVjb3Jkcy5cbiAqIFRoaXMgY2xhc3Mgd2lsbCBxdWV1ZSB1cCBpbmNvbWluZyBtZXNzYWdlcyB1bnRpbCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXJcbiAqIGZvciB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIHJlZ2lzdGVyZWQuIFRodXMsIHdlIGtlZXAgZmllbGRzIGFyb3VuZFxuICogZm9yIHRyYWNraW5nIGhlYWQvcmVjb3Jkcy90YWlsLiBUaGVzZSBhcmUgb25seSB1c2VkIGlmIHRoZXJlIGlzIG5vXG4gKiBvYnNlcnZlciByZWdpc3RlcmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIFN0cmVhbU9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cblxuICBmdW5jdGlvbiBTdHJlYW1PYnNlcnZlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdGhpcy5fZmllbGRLZXlzID0gbnVsbDtcbiAgICB0aGlzLl9maWVsZExvb2t1cCA9IG51bGw7XG4gICAgdGhpcy5fcXVldWVkUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX3RhaWwgPSBudWxsO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBldmVyeSByZWNvcmQgdGhhdCBjb21lcyBpbiBhbmQgdHJhbnNmb3JtIGEgcmF3IHJlY29yZFxuICAgKiB0byBhIE9iamVjdC4gSWYgdXNlci1wcm92aWRlZCBvYnNlcnZlciBpcyBwcmVzZW50LCBwYXNzIHRyYW5zZm9ybWVkIHJlY29yZFxuICAgKiB0byBpdCdzIG9uTmV4dCBtZXRob2QsIG90aGVyd2lzZSwgcHVzaCB0byByZWNvcmQgcXVlLlxuICAgKiBAcGFyYW0ge0FycmF5fSByYXdSZWNvcmQgLSBBbiBhcnJheSB3aXRoIHRoZSByYXcgcmVjb3JkXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6IFwib25OZXh0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTmV4dChyYXdSZWNvcmQpIHtcbiAgICAgIHZhciByZWNvcmQgPSBuZXcgX3JlY29yZC5SZWNvcmQodGhpcy5fZmllbGRLZXlzLCByYXdSZWNvcmQsIHRoaXMuX2ZpZWxkTG9va3VwKTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICB0aGlzLl9vYnNlcnZlci5vbk5leHQocmVjb3JkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlZFJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkNvbXBsZXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgICBpZiAodGhpcy5fZmllbGRLZXlzID09PSBudWxsKSB7XG4gICAgICAgIC8vIFN0cmVhbSBoZWFkZXIsIGJ1aWxkIGEgbmFtZS0+aW5kZXggZmllbGQgbG9va3VwIHRhYmxlXG4gICAgICAgIC8vIHRvIGJlIHVzZWQgYnkgcmVjb3Jkcy4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWFrZSBpdFxuICAgICAgICAvLyBmYXN0ZXIgdG8gbG9vayB1cCBmaWVsZHMgaW4gYSByZWNvcmQgYnkgbmFtZSwgcmF0aGVyIHRoYW4gYnkgaW5kZXguXG4gICAgICAgIC8vIFNpbmNlIHRoZSByZWNvcmRzIHdlIGdldCBiYWNrIHZpYSBCb2x0IGFyZSBqdXN0IGFycmF5cyBvZiB2YWx1ZXMuXG4gICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IFtdO1xuICAgICAgICB0aGlzLl9maWVsZExvb2t1cCA9IHt9O1xuICAgICAgICBpZiAobWV0YS5maWVsZHMgJiYgbWV0YS5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IG1ldGEuZmllbGRzO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YS5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwW21ldGEuZmllbGRzW2ldXSA9IGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uQ29tcGxldGVkKG1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RhaWwgPSBtZXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2lsbCBiZSBjYWxsZWQgb24gZXJyb3JzLlxuICAgICAqIElmIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgaXMgcHJlc2VudCwgcGFzcyB0aGUgZXJyb3JcbiAgICAgKiB0byBpdCdzIG9uRXJyb3IgbWV0aG9kLCBvdGhlcndpc2Ugc2V0IGluc3RhbmNlIHZhcmlhYmxlIF9lcnJvci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXJyb3IgLSBBbiBlcnJvciBvYmplY3RcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJvbkVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gZXZlbnRzIHdpdGggcHJvdmlkZWQgb2JzZXJ2ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IE9iamVjdCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGUgLSBIYW5kbGUgc3RyZWFtIHRhaWwsIHRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiBPYmplY3QpfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJzdWJzY3JpYmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICBpZiAodGhpcy5fZXJyb3IpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9xdWV1ZWRSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcXVldWVkUmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9ic2VydmVyLm9uTmV4dChfcXVldWVkUmVjb3Jkc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl90YWlsKSB7XG4gICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKHRoaXMuX3RhaWwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RyZWFtT2JzZXJ2ZXI7XG59KSgpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFN0cmVhbU9ic2VydmVyO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNyb3NzLXBsYXRmb3JtIFVURi04IGVuY29kZXIgYW5kIGRlY29kZXIgdGhhdCB3b3Jrc1xuLy8gd2l0aCB0aGUgQnVmZmVyIEFQSSBkZWZpbmVkIGluIGJ1Zi5qc1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2J1ZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9idWYpO1xuXG52YXIgX3N0cmluZ19kZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXInKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIHBsYXRmb3JtT2JqID0ge307XG5cbnRyeSB7XG4gIChmdW5jdGlvbiAoKSB7XG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpcyAnYnVmZmVyJyBpcyBub3QgYXZhaWxhYmxlXG4gICAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICAgIHZhciBkZWNvZGVyID0gbmV3IF9zdHJpbmdfZGVjb2Rlci5TdHJpbmdEZWNvZGVyKCd1dGY4Jyk7XG4gICAgdmFyIG5vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuXG4gICAgcGxhdGZvcm1PYmogPSB7XG4gICAgICBcImVuY29kZVwiOiBmdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gICAgICAgIHJldHVybiBuZXcgX2J1ZjJbJ2RlZmF1bHQnXS5Ob2RlQnVmZmVyKG5ldyBub2RlLkJ1ZmZlcihzdHIsIFwiVVRGLThcIikpO1xuICAgICAgfSxcbiAgICAgIFwiZGVjb2RlXCI6IGZ1bmN0aW9uIGRlY29kZShidWZmZXIsIGxlbmd0aCkge1xuICAgICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5Ob2RlQnVmZmVyKSB7XG4gICAgICAgICAgdmFyIHN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9uLFxuICAgICAgICAgICAgICBlbmQgPSBzdGFydCArIGxlbmd0aDtcbiAgICAgICAgICBidWZmZXIucG9zaXRpb24gPSBNYXRoLm1pbihlbmQsIGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgICAgIHJldHVybiBidWZmZXIuX2J1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYyWydkZWZhdWx0J10uQ29tYmluZWRCdWZmZXIpIHtcbiAgICAgICAgICB2YXIgb3V0ID0gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoYnVmZmVyLCBsZW5ndGgsIGZ1bmN0aW9uIChwYXJ0QnVmZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2Rlci53cml0ZShwYXJ0QnVmZmVyLl9idWZmZXIpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLmVuZCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBkZWNvZGUgc3RyaW5ncyBmcm9tIGBcIiArIGJ1ZmZlciArIFwiYC5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9KSgpO1xufSBjYXRjaCAoZSkge1xuICB2YXIgdGV4dEVuY29kaW5nO1xuXG4gIChmdW5jdGlvbiAoKSB7XG5cbiAgICAvLyBOb3Qgb24gTm9kZUpTLCBhZGQgc2hpbSBmb3IgV2ViQVBJIFRleHRFbmNvZGVyL1RleHREZWNvZGVyXG4gICAgdGV4dEVuY29kaW5nID0gcmVxdWlyZSgnLi4vLi4vZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleCcpO1xuXG4gICAgdmFyIGVuY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHRFbmNvZGVyKFwidXRmLThcIik7XG4gICAgdmFyIGRlY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHREZWNvZGVyKFwidXRmLThcIik7XG5cbiAgICBwbGF0Zm9ybU9iaiA9IHtcbiAgICAgIFwiZW5jb2RlXCI6IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBfYnVmMlsnZGVmYXVsdCddLkhlYXBCdWZmZXIoZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXIpO1xuICAgICAgfSxcbiAgICAgIFwiZGVjb2RlXCI6IGZ1bmN0aW9uIGRlY29kZShidWZmZXIsIGxlbmd0aCkge1xuICAgICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5IZWFwQnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ1ZmZlci5yZWFkVmlldyhNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5sZW5ndGggLSBidWZmZXIucG9zaXRpb24pKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVjb2RpbmcgY29tYmluZWQgYnVmZmVyIGlzIGNvbXBsaWNhdGVkLiBGb3Igc2ltcGxpY2l0eSwgZm9yIG5vdyxcbiAgICAgICAgICAvLyB3ZSBzaW1wbHkgY29weSB0aGUgY29tYmluZWQgYnVmZmVyIGludG8gYSByZWd1bGFyIGJ1ZmZlciBhbmQgZGVjb2RlIHRoYXQuXG4gICAgICAgICAgdmFyIHRtcEJ1ZiA9IF9idWYyWydkZWZhdWx0J10uYWxsb2MobGVuZ3RoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0bXBCdWYud3JpdGVVSW50OChidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0bXBCdWYucmVzZXQoKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodG1wQnVmLnJlYWRWaWV3KGxlbmd0aCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSkoKTtcbn1cblxudmFyIHN0cmVhbURlY29kZUNvbWJpbmVkQnVmZmVyID0gZnVuY3Rpb24gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoY29tYmluZWRCdWZmZXJzLCBsZW5ndGgsIGRlY29kZUZuLCBlbmRGbikge1xuICB2YXIgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBsZW5ndGg7XG4gIHZhciBwb3NpdGlvbiA9IGNvbWJpbmVkQnVmZmVycy5wb3NpdGlvbjtcbiAgY29tYmluZWRCdWZmZXJzLl91cGRhdGVQb3MoTWF0aC5taW4obGVuZ3RoLCBjb21iaW5lZEJ1ZmZlcnMubGVuZ3RoIC0gcG9zaXRpb24pKTtcbiAgLy8gUmVkdWNlIENvbWJpbmVkQnVmZmVycyB0byBhIGRlY29kZWQgc3RyaW5nXG4gIHZhciBvdXQgPSBjb21iaW5lZEJ1ZmZlcnMuX2J1ZmZlcnMucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBwYXJ0QnVmZmVyKSB7XG4gICAgaWYgKHJlbWFpbmluZ0J5dGVzVG9SZWFkIDw9IDApIHtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPj0gcGFydEJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHBvc2l0aW9uIC09IHBhcnRCdWZmZXIubGVuZ3RoO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MocG9zaXRpb24gLSBwYXJ0QnVmZmVyLnBvc2l0aW9uKTtcbiAgICAgIHZhciBieXRlc1RvUmVhZCA9IE1hdGgubWluKHBhcnRCdWZmZXIubGVuZ3RoIC0gcG9zaXRpb24sIHJlbWFpbmluZ0J5dGVzVG9SZWFkKTtcbiAgICAgIHZhciBsYXN0U2xpY2UgPSBwYXJ0QnVmZmVyLnJlYWRTbGljZShieXRlc1RvUmVhZCk7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MoYnl0ZXNUb1JlYWQpO1xuICAgICAgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBNYXRoLm1heChyZW1haW5pbmdCeXRlc1RvUmVhZCAtIGxhc3RTbGljZS5sZW5ndGgsIDApO1xuICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgcmV0dXJuIGxhc3QgKyBkZWNvZGVGbihsYXN0U2xpY2UpO1xuICAgIH1cbiAgfSwgJycpO1xuICByZXR1cm4gb3V0ICsgZW5kRm4oKTtcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHBsYXRmb3JtT2JqO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVGaWVsZExvb2t1cChrZXlzKSB7XG4gIHZhciBsb29rdXAgPSB7fTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpZHgpIHtcbiAgICBsb29rdXBbbmFtZV0gPSBpZHg7XG4gIH0pO1xuICByZXR1cm4gbG9va3VwO1xufVxuXG4vKipcbiAqIFJlY29yZHMgbWFrZSB1cCB0aGUgY29udGVudHMgb2YgdGhlIHtAbGluayBSZXN1bHR9LCBhbmQgaXMgaG93IHlvdSBhY2Nlc3NcbiAqIHRoZSBvdXRwdXQgb2YgYSBzdGF0ZW1lbnQuIEEgc2ltcGxlIHN0YXRlbWVudCBtaWdodCB5aWVsZCBhIHJlc3VsdCBzdHJlYW1cbiAqIHdpdGggYSBzaW5nbGUgcmVjb3JkLCBmb3IgaW5zdGFuY2U6XG4gKlxuICogICAgIE1BVENIICh1OlVzZXIpIFJFVFVSTiB1Lm5hbWUsIHUuYWdlXG4gKlxuICogVGhpcyByZXR1cm5zIGEgc3RyZWFtIG9mIHJlY29yZHMgd2l0aCB0d28gZmllbGRzLCBuYW1lZCBgdS5uYW1lYCBhbmQgYHUuYWdlYCxcbiAqIGVhY2ggcmVjb3JkIHJlcHJlc2VudHMgb25lIHVzZXIgZm91bmQgYnkgdGhlIHN0YXRlbWVudCBhYm92ZS4gWW91IGNhbiBhY2Nlc3NcbiAqIHRoZSB2YWx1ZXMgb2YgZWFjaCBmaWVsZCBlaXRoZXIgYnkgbmFtZTpcbiAqXG4gKiAgICAgcmVjb3JkLmdldChcIm4ubmFtZVwiKVxuICpcbiAqIE9yIGJ5IGl0J3MgcG9zaXRpb246XG4gKlxuICogICAgIHJlY29yZC5nZXQoMClcbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBSZWNvcmQgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJlY29yZCBvYmplY3QuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGtleXMgQW4gYXJyYXkgb2YgZmllbGQga2V5cywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgYXBwZWFyXG4gICAqICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNvcmRcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkcyBBbiBhcnJheSBvZiBmaWVsZCB2YWx1ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkTG9va3VwIEFuIG9iamVjdCBvZiBmaWVsZE5hbWUgLT4gdmFsdWUgaW5kZXgsIHVzZWQgdG8gbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIG5hbWVzIHRvIHZhbHVlcy4gSWYgdGhpcyBpcyBudWxsLCBvbmUgd2lsbCBiZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlY29yZChrZXlzLCBmaWVsZHMpIHtcbiAgICB2YXIgZmllbGRMb29rdXAgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBudWxsIDogYXJndW1lbnRzWzJdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlY29yZCk7XG5cbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdGhpcy5fZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gZmllbGRMb29rdXAgfHwgZ2VuZXJhdGVGaWVsZExvb2t1cChrZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIGZvciBlYWNoIGZpZWxkIGluIHRoaXMgcmVjb3JkLiBUaGUgZnVuY3Rpb25cbiAgICogd2lsbCBnZXQgdGhyZWUgYXJndW1lbnRzIC0gdGhlIHZhbHVlLCB0aGUga2V5IGFuZCB0aGlzIHJlY29yZCwgaW4gdGhhdFxuICAgKiBvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHZpc2l0b3JcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlY29yZCwgW3tcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKHZpc2l0b3IpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZpc2l0b3IodGhpcy5fZmllbGRzW2ldLCB0aGlzLmtleXNbaV0sIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHZhbHVlIGZyb20gdGhpcyByZWNvcmQsIGVpdGhlciBieSBpbmRleCBvciBieSBmaWVsZCBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xOdW1iZXJ9IGtleSBGaWVsZCBrZXksIG9yIHRoZSBpbmRleCBvZiB0aGUgZmllbGQuXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHZhciBpbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICghKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIpKSB7XG4gICAgICAgIGluZGV4ID0gdGhpcy5fZmllbGRMb29rdXBba2V5XTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGtleSAnXCIgKyBrZXkgKyBcIicsIGF2YWlsYWJsZSBrZXkgYXJlOiBbXCIgKyB0aGlzLmtleXMgKyBcIl0uXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleCA9IGtleTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ID4gdGhpcy5fZmllbGRzLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGggaW5kZXggJ1wiICsgaW5kZXggKyBcIicuIFJlbWVtYmVyIHRoYXQgaW5kZXhlcyBzdGFydCBhdCBgMGAsIFwiICsgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tpbmRleF07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlY29yZDtcbn0pKCk7XG5cbmV4cG9ydHMuUmVjb3JkID0gUmVjb3JkOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZSgnLi9pbnRlZ2VyJyk7XG5cbi8qKlxuICAqIEEgUmVzdWx0U3VtbWFyeSBpbnN0YW5jZSBjb250YWlucyBzdHJ1Y3R1cmVkIG1ldGFkYXRhIGZvciBhIHtSZXN1bHR9LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cbnZhciBSZXN1bHRTdW1tYXJ5ID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gVGhlIHN0YXRlbWVudCB0aGlzIHN1bW1hcnkgaXMgZm9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBmb3IgdGhlIHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gbWV0YWRhdGEgLSBTdGF0ZW1lbnQgbWV0YWRhdGFcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVzdWx0U3VtbWFyeShzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIG1ldGFkYXRhKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc3VsdFN1bW1hcnkpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnQgPSB7IHRleHQ6IHN0YXRlbWVudCwgcGFyYW1ldGVyczogcGFyYW1ldGVycyB9O1xuICAgIHRoaXMuc3RhdGVtZW50VHlwZSA9IG1ldGFkYXRhLnR5cGU7XG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzID0gbmV3IFN0YXRlbWVudFN0YXRpc3RpY3MobWV0YWRhdGEuc3RhdHMgfHwge30pO1xuICAgIHRoaXMucGxhbiA9IG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSA/IG5ldyBQbGFuKG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSkgOiBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGUgPSBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFByb2ZpbGVkUGxhbihtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMuX2J1aWxkTm90aWZpY2F0aW9ucyhtZXRhZGF0YS5ub3RpZmljYXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggRVhQTEFJTi5cbiAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUmVzdWx0U3VtbWFyeSwgW3tcbiAgICBrZXk6ICdfYnVpbGROb3RpZmljYXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2J1aWxkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSB7XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBuZXcgTm90aWZpY2F0aW9uKG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCBzdW1tYXJ5IGhhcyBhIHBsYW5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaGFzUGxhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1BsYW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGFuIGluc3RhbmNlb2YgUGxhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcHJvZmlsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdoYXNQcm9maWxlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUHJvZmlsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2ZpbGUgaW5zdGFuY2VvZiBQcm9maWxlZFBsYW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc3VsdFN1bW1hcnk7XG59KSgpO1xuXG52YXIgUGxhbiA9XG4vKipcbiAqIENyZWF0ZSBhIFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHBsYW4gLSBPYmplY3Qgd2l0aCBwbGFuIGRhdGFcbiAqL1xuZnVuY3Rpb24gUGxhbihwbGFuKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQbGFuKTtcblxuICB0aGlzLm9wZXJhdG9yVHlwZSA9IHBsYW4ub3BlcmF0b3JUeXBlO1xuICB0aGlzLmlkZW50aWZpZXJzID0gcGxhbi5pZGVudGlmaWVycztcbiAgdGhpcy5hcmd1bWVudHMgPSBwbGFuLmFyZ3M7XG4gIHRoaXMuY2hpbGRyZW4gPSBwbGFuLmNoaWxkcmVuID8gcGxhbi5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG5ldyBQbGFuKGNoaWxkKTtcbiAgfSkgOiBbXTtcbn1cblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggUFJPRklMRS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuO1xuXG52YXIgUHJvZmlsZWRQbGFuID1cbi8qKlxuICogQ3JlYXRlIGEgUHJvZmlsZWRQbGFuIGluc3RhbmNlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9maWxlIC0gT2JqZWN0IHdpdGggcHJvZmlsZSBkYXRhXG4gKi9cbmZ1bmN0aW9uIFByb2ZpbGVkUGxhbihwcm9maWxlKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQcm9maWxlZFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcHJvZmlsZS5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwcm9maWxlLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHByb2ZpbGUuYXJncztcbiAgdGhpcy5kYkhpdHMgPSBwcm9maWxlLmFyZ3MuRGJIaXRzLnRvSW50KCk7XG4gIHRoaXMucm93cyA9IHByb2ZpbGUuYXJncy5Sb3dzLnRvSW50KCk7XG4gIHRoaXMuY2hpbGRyZW4gPSBwcm9maWxlLmNoaWxkcmVuID8gcHJvZmlsZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9maWxlZFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufVxuXG4vKipcbiAgKiBHZXQgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbjtcblxudmFyIFN0YXRlbWVudFN0YXRpc3RpY3MgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogU3RydWN0dXJpemUgdGhlIHN0YXRpc3RpY3NcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNzIC0gUmVzdWx0IHN0YXRpc3RpY3NcbiAgICovXG5cbiAgZnVuY3Rpb24gU3RhdGVtZW50U3RhdGlzdGljcyhzdGF0aXN0aWNzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdGF0ZW1lbnRTdGF0aXN0aWNzKTtcblxuICAgIHRoaXMuX3N0YXRzID0ge1xuICAgICAgbm9kZXNDcmVhdGVkOiAwLFxuICAgICAgbm9kZXNEZWxldGVkOiAwLFxuICAgICAgcmVsYXRpb25zaGlwc0NyZWF0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzRGVsZXRlZDogMCxcbiAgICAgIHByb3BlcnRpZXNTZXQ6IDAsXG4gICAgICBsYWJlbHNBZGRlZDogMCxcbiAgICAgIGxhYmVsc1JlbW92ZWQ6IDAsXG4gICAgICBpbmRleGVzQWRkZWQ6IDAsXG4gICAgICBpbmRleGVzUmVtb3ZlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzQWRkZWQ6IDAsXG4gICAgICBjb25zdHJhaW50c1JlbW92ZWQ6IDBcbiAgICB9O1xuICAgIE9iamVjdC5rZXlzKHN0YXRpc3RpY3MpLmZvckVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAvL1RvIGNhbWVsQ2FzZVxuICAgICAgX3RoaXMuX3N0YXRzW2luZGV4LnJlcGxhY2UoLyhcXC1cXHcpL2csIGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHJldHVybiBtWzFdLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KV0gPSAoMCwgX2ludGVnZXIuaXNJbnQpKHN0YXRpc3RpY3NbaW5kZXhdKSA/IHN0YXRpc3RpY3NbaW5kZXhdLnRvSW50KCkgOiBzdGF0aXN0aWNzW2luZGV4XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgICogQ2xhc3MgZm9yIEN5cGhlciBub3RpZmljYXRpb25zXG4gICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgICovXG5cbiAgLyoqXG4gICAqIERpZCB0aGUgZGF0YWJhc2UgZ2V0IHVwZGF0ZWQ/XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhTdGF0ZW1lbnRTdGF0aXN0aWNzLCBbe1xuICAgIGtleTogJ2NvbnRhaW5zVXBkYXRlcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnRhaW5zVXBkYXRlcygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fc3RhdHMpLnJlZHVjZShmdW5jdGlvbiAobGFzdCwgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gbGFzdCArIF90aGlzMi5fc3RhdHNbY3VycmVudF07XG4gICAgICB9LCAwKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBjcmVhdGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm9kZXNDcmVhdGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm9kZXNDcmVhdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLm5vZGVzQ3JlYXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0RlbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNEZWxldGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcmVsYXRpb25zaGlwcyBjcmVhdGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAncmVsYXRpb25zaGlwc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxhdGlvbnNoaXBzQ3JlYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5yZWxhdGlvbnNoaXBzQ3JlYXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxhdGlvbnNoaXBzRGVsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHNEZWxldGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNEZWxldGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcHJvcGVydGllcyBzZXQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdwcm9wZXJ0aWVzU2V0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvcGVydGllc1NldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5wcm9wZXJ0aWVzU2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIGFkZGVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGFiZWxzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsYWJlbHNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNBZGRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGxhYmVscyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbGFiZWxzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhYmVsc1JlbW92ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubGFiZWxzUmVtb3ZlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGluZGV4ZXMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzQWRkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuaW5kZXhlc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaW5kZXhlc1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzUmVtb3ZlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGNvbnRyYWludHMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb25zdHJhaW50c0FkZGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3RyYWludHNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5jb25zdHJhaW50c0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyByZW1vdmVkLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY29uc3RyYWludHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3RyYWludHNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzUmVtb3ZlZDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RhdGVtZW50U3RhdGlzdGljcztcbn0pKCk7XG5cbnZhciBOb3RpZmljYXRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgTm90aWZpY2F0aW9uIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gbm90aWZpY2F0aW9uIC0gT2JqZWN0IHdpdGggbm90aWZpY2F0aW9uIGRhdGFcbiAgICovXG5cbiAgZnVuY3Rpb24gTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb3RpZmljYXRpb24pO1xuXG4gICAgdGhpcy5jb2RlID0gbm90aWZpY2F0aW9uLmNvZGU7XG4gICAgdGhpcy50aXRsZSA9IG5vdGlmaWNhdGlvbi50aXRsZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gbm90aWZpY2F0aW9uLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuc2V2ZXJpdHkgPSBub3RpZmljYXRpb24uc2V2ZXJpdHk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IE5vdGlmaWNhdGlvbi5fY29uc3RydWN0UG9zaXRpb24obm90aWZpY2F0aW9uLnBvc2l0aW9uKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhOb3RpZmljYXRpb24sIG51bGwsIFt7XG4gICAga2V5OiAnX2NvbnN0cnVjdFBvc2l0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NvbnN0cnVjdFBvc2l0aW9uKHBvcykge1xuICAgICAgaWYgKCFwb3MpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LnRvSW50KCksXG4gICAgICAgIGxpbmU6IHBvcy5saW5lLnRvSW50KCksXG4gICAgICAgIGNvbHVtbjogcG9zLmNvbHVtbi50b0ludCgpXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBOb3RpZmljYXRpb247XG59KSgpO1xuXG52YXIgc3RhdGVtZW50VHlwZSA9IHtcbiAgUkVBRF9PTkxZOiAncicsXG4gIFJFQURfV1JJVEU6ICdydycsXG4gIFdSSVRFX09OTFk6ICd3JyxcbiAgU0NIRU1BX1dSSVRFOiAncydcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IHtcbiAgUmVzdWx0U3VtbWFyeTogUmVzdWx0U3VtbWFyeSxcbiAgc3RhdGVtZW50VHlwZTogc3RhdGVtZW50VHlwZVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9yZXN1bHRTdW1tYXJ5ID0gcmVxdWlyZSgnLi9yZXN1bHQtc3VtbWFyeScpO1xuXG4vLyBFbnN1cmUgUHJvbWlzZSBpcyBhdmFpbGFibGVcblxudmFyIF9leHRlcm5hbEVzNlByb21pc2UgPSByZXF1aXJlKCcuLi9leHRlcm5hbC9lczYtcHJvbWlzZScpO1xuXG4oMCwgX2V4dGVybmFsRXM2UHJvbWlzZS5wb2x5ZmlsbCkoKTtcblxuLyoqXG4gICogQSBzdHJlYW0gb2Yge0BsaW5rIFJlY29yZH0gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSBzdGF0ZW1lbnQuXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxudmFyIFJlc3VsdCA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBJbmplY3QgdGhlIG9ic2VydmVyIHRvIGJlIHVzZWQuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICogQHBhcmFtIHtTdHJlYW1PYnNlcnZlcn0gc3RyZWFtT2JzZXJ2ZXJcbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqL1xuXG4gIGZ1bmN0aW9uIFJlc3VsdChzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc3VsdCk7XG5cbiAgICB0aGlzLl9zdHJlYW1PYnNlcnZlciA9IHN0cmVhbU9ic2VydmVyO1xuICAgIHRoaXMuX3AgPSBudWxsO1xuICAgIHRoaXMuX3N0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBuZXcgUHJvbWlzZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBuZXcgUHJvbWlzZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZXN1bHQsIFt7XG4gICAga2V5OiAnX2NyZWF0ZVByb21pc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlUHJvbWlzZSgpIHtcbiAgICAgIGlmICh0aGlzLl9wKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHRoaXMuX3AgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciByZWNvcmRzID0gW107XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICBvbk5leHQ6IGZ1bmN0aW9uIG9uTmV4dChyZWNvcmQpIHtcbiAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKHN1bW1hcnkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeyByZWNvcmRzOiByZWNvcmRzLCBzdW1tYXJ5OiBzdW1tYXJ5IH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNlbGYuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdhaXRzIGZvciBhbGwgcmVzdWx0cyBhbmQgY2FsbHMgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aXRoIHRoZSByZXN1bHRzLlxuICAgICAqIENhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHRoZSB7QGxpbmsgI3N1YnNjcmliZX0gZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlc3VsdDoge3JlY29yZHM6QXJyYXk8UmVjb3JkPn0pfSBvbkZ1bGZpbGxlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAndGhlbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLl9wLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhdGNoIGVycm9ycyB3aGVuIHVzaW5nIHByb21pc2VzLlxuICAgICAqIENhbm5vdCBiZSB1c2VkIHdpdGggdGhlIHN1YnNjcmliZSBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiB7bWVzc2FnZTpzdHJpbmcsIGNvZGU6c3RyaW5nfSl9IG9uUmVqZWN0ZWQgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgdXBvbiBlcnJvcnMuXG4gICAgICogQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NhdGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLl9wWydjYXRjaCddKG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSByZWNvcmRzIHRvIG9ic2VydmVyIGFzIHRoZXkgY29tZSBpbiwgdGhpcyBpcyBhIG1vcmUgZWZmaWNpZW50IG1ldGhvZFxuICAgICAqIG9mIGhhbmRsaW5nIHRoZSByZXN1bHRzLCBhbmQgYWxsb3dzIHlvdSB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciAtIE9ic2VydmVyIG9iamVjdFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBSZWNvcmQpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1ldGFkYXRhOiBPYmplY3QpfSBvYnNlcnZlci5vbkNvbXBsZXRlZCAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb2JzZXJ2ZXIub25FcnJvciAtIEhhbmRsZSBlcnJvcnMuXG4gICAgICogQHJldHVyblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc3Vic2NyaWJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgb25Db21wbGV0ZWRPcmlnaW5hbCA9IG9ic2VydmVyLm9uQ29tcGxldGVkO1xuICAgICAgdmFyIG9uQ29tcGxldGVkV3JhcHBlciA9IGZ1bmN0aW9uIG9uQ29tcGxldGVkV3JhcHBlcihtZXRhZGF0YSkge1xuICAgICAgICB2YXIgc3VtID0gbmV3IF9yZXN1bHRTdW1tYXJ5LlJlc3VsdFN1bW1hcnkoX3RoaXMuX3N0YXRlbWVudCwgX3RoaXMuX3BhcmFtZXRlcnMsIG1ldGFkYXRhKTtcbiAgICAgICAgb25Db21wbGV0ZWRPcmlnaW5hbC5jYWxsKG9ic2VydmVyLCBzdW0pO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkID0gb25Db21wbGV0ZWRXcmFwcGVyO1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9ic2VydmVyLm9uRXJyb3IgfHwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlVuY2F1Z2h0IGVycm9yIHdoZW4gcHJvY2Vzc2luZyByZXN1bHQ6IFwiICsgZXJyKTtcbiAgICAgIH07XG4gICAgICB0aGlzLl9zdHJlYW1PYnNlcnZlci5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZXN1bHQ7XG59KSgpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBSZXN1bHQ7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3Jlc3VsdCA9IHJlcXVpcmUoJy4vcmVzdWx0Jyk7XG5cbnZhciBfcmVzdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdCk7XG5cbnZhciBfdHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL3RyYW5zYWN0aW9uJyk7XG5cbnZhciBfdHJhbnNhY3Rpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHJhbnNhY3Rpb24pO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZShcIi4vZXJyb3JcIik7XG5cbi8qKlxuICAqIEEgU2Vzc2lvbiBpbnN0YW5jZSBpcyB1c2VkIGZvciBoYW5kbGluZyB0aGUgY29ubmVjdGlvbiBhbmRcbiAgKiBzZW5kaW5nIHN0YXRlbWVudHMgdGhyb3VnaCB0aGUgY29ubmVjdGlvbi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG52YXIgU2Vzc2lvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uIC0gQSBjb25uZWN0aW9uIHRvIHVzZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gY29ubmVjdGlvbiBjbG9zZVxuICAgKi9cblxuICBmdW5jdGlvbiBTZXNzaW9uKGNvbm4sIG9uQ2xvc2UpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Vzc2lvbik7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubjtcbiAgICB0aGlzLl9vbkNsb3NlID0gb25DbG9zZTtcbiAgICB0aGlzLl9oYXNUeCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW1lbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFNlc3Npb24sIFt7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCkge1xuICAgICAgdmFyIHBhcmFtZXRlcnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdvYmplY3QnICYmIHN0YXRlbWVudC50ZXh0KSB7XG4gICAgICAgIHBhcmFtZXRlcnMgPSBzdGF0ZW1lbnQucGFyYW1ldGVycyB8fCB7fTtcbiAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRleHQ7XG4gICAgICB9XG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyWydkZWZhdWx0J10oKTtcbiAgICAgIGlmICghdGhpcy5faGFzVHgpIHtcbiAgICAgICAgdGhpcy5fY29ubi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIHRoaXMuX2Nvbm4ucHVsbEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIHRoaXMuX2Nvbm4uc3luYygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtT2JzZXJ2ZXIub25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlN0YXRlbWVudHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBvbiBhIFwiICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIG9yIHVzZSBhIGRpZmZlcmVudCBzZXNzaW9uLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10oc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVnaW4gYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBzZXNzaW9uLiBBIHNlc3Npb24gY2FuIGhhdmUgYXQgbW9zdCBvbmUgdHJhbnNhY3Rpb24gcnVubmluZyBhdCBhIHRpbWUsIGlmIHlvdVxuICAgICAqIHdhbnQgdG8gcnVuIG11bHRpcGxlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zLCB5b3Ugc2hvdWxkIHVzZSBtdWx0aXBsZSBjb25jdXJyZW50IHNlc3Npb25zLlxuICAgICAqXG4gICAgICogV2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBvcGVuIHRoZSBzZXNzaW9uIGNhbm5vdCBiZSB1c2VkIHRvIHJ1biBzdGF0ZW1lbnRzIG91dHNpZGUgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSAtIE5ldyBUcmFuc2FjdGlvblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYmVnaW5UcmFuc2FjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5faGFzVHgpIHtcbiAgICAgICAgdGhyb3cgbmV3IF9lcnJvci5uZXdFcnJvcihcIllvdSBjYW5ub3QgYmVnaW4gYSB0cmFuc2FjdGlvbiBvbiBhIHNlc3Npb24gd2l0aCBhbiBcIiArIFwib3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24gb3IgdXNlIGEgXCIgKyBcImRpZmZlcmVudCBzZXNzaW9uLlwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faGFzVHggPSB0cnVlO1xuICAgICAgcmV0dXJuIG5ldyBfdHJhbnNhY3Rpb24yWydkZWZhdWx0J10odGhpcy5fY29ubiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5faGFzVHggPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoaXMgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNiIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBzZXNzaW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgICAqIEByZXR1cm5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB2YXIgY2IgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgaWYgKHRoaXMuX29uQ2xvc2UpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLl9vbkNsb3NlKGNiKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLl9vbkNsb3NlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2Vzc2lvbjtcbn0pKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFNlc3Npb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3Jlc3VsdCA9IHJlcXVpcmUoJy4vcmVzdWx0Jyk7XG5cbnZhciBfcmVzdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdCk7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHRyYW5zYWN0aW9uIGluIHRoZSBOZW80aiBkYXRhYmFzZS5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5cbnZhciBUcmFuc2FjdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtDb25uZWN0aW9ufSBjb25uIC0gQSBjb25uZWN0aW9uIHRvIHVzZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb3Igcm9sbGVkIGJhY2suXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFRyYW5zYWN0aW9uKGNvbm4sIG9uQ2xvc2UpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNhY3Rpb24pO1xuXG4gICAgdGhpcy5fY29ubiA9IGNvbm47XG4gICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpO1xuICAgIHRoaXMuX2Nvbm4ucnVuKFwiQkVHSU5cIiwge30sIHN0cmVhbU9ic2VydmVyKTtcbiAgICB0aGlzLl9jb25uLmRpc2NhcmRBbGwoc3RyZWFtT2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5BQ1RJVkU7XG4gICAgdGhpcy5fb25DbG9zZSA9IG9uQ2xvc2U7XG4gIH1cblxuICAvKiogSW50ZXJuYWwgc3RyZWFtIG9ic2VydmVyIHVzZWQgZm9yIHRyYW5zYWN0aW9uYWwgcmVzdWx0cyovXG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW0gZW50IGFuZCBwYXJhbWV0ZXJzIGFzIHNlcGFyYXRlIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2FjdGlvbiwgW3tcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZS5ydW4odGhpcy5fY29ubiwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1pdHMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbW1pdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5jb21taXQodGhpcy5fY29ubiwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpKTtcbiAgICAgIHRoaXMuX3N0YXRlID0gY29tbWl0dGVkLnN0YXRlO1xuICAgICAgLy9jbGVhbiB1cFxuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgcmV0dXJuIGNvbW1pdHRlZC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUm9sbGJhY2tzIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIEFmdGVyIHJvbGxpbmcgYmFjaywgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAncm9sbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByb2xsYmFjaygpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5yb2xsYmFjayh0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vbkVycm9yKCkge1xuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkZBSUxFRDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVHJhbnNhY3Rpb247XG59KSgpO1xuXG52YXIgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKF9TdHJlYW1PYnNlcnZlcikge1xuICBfaW5oZXJpdHMoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIF9TdHJlYW1PYnNlcnZlcik7XG5cbiAgZnVuY3Rpb24gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodHgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcbiAgICB0aGlzLl90eCA9IHR4O1xuICAgIC8vdGhpcyBpcyB0byB0byBhdm9pZCBtdWx0aXBsZSBjYWxscyB0byBvbkVycm9yIGNhdXNlZCBieSBJR05PUkVEXG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICAvKiogaW50ZXJuYWwgc3RhdGUgbWFjaGluZSBvZiB0aGUgdHJhbnNhY3Rpb24qL1xuXG4gIF9jcmVhdGVDbGFzcyhfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgdGhpcy5fdHguX29uRXJyb3IoKTtcbiAgICAgICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCB0aGlzKS5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KShfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSk7XG5cbnZhciBfc3RhdGVzID0ge1xuICAvL1RoZSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIHdpdGggbm8gZXhwbGljaXQgc3VjY2VzcyBvciBmYWlsdXJlIG1hcmtlZFxuICBBQ1RJVkU6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBfcnVuRGlzY2FyZEFsbChcIkNPTU1JVFwiLCBjb25uLCBvYnNlcnZlciksXG4gICAgICAgIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRCB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5EaXNjYXJkQWxsKFwiUk9MTEJBQ0tcIiwgY29ubiwgb2JzZXJ2ZXIpLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDSyB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubiwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgY29ubi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzIHx8IHt9LCBvYnNlcnZlcik7XG4gICAgICBjb25uLnB1bGxBbGwob2JzZXJ2ZXIpO1xuICAgICAgY29ubi5zeW5jKCk7XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9LFxuXG4gIC8vQW4gZXJyb3IgaGFzIG9jY3VycmVkLCB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgYW5kIG5vIG1vcmUgbWVzc2FnZXMgd2lsbFxuICAvLyBiZSBzZW50IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICBGQUlMRUQ6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgc3RhdGVtZW50cyBpbiB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2suIFBsZWFzZSBzdGFydCBhIG5ld1wiICsgXCIgdHJhbnNhY3Rpb24gdG8gcnVuIGFub3RoZXIgc3RhdGVtZW50LlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRCB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubiwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9UaGlzIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tbWl0dGVkXG4gIFNVQ0NFRURFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgY29tbWl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZCBvbiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2tcbiAgUk9MTEVEX0JBQ0s6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ydW5EaXNjYXJkQWxsKG1zZywgY29ubiwgb2JzZXJ2ZXIpIHtcbiAgY29ubi5ydW4obXNnLCB7fSwgb2JzZXJ2ZXIpO1xuICBjb25uLmRpc2NhcmRBbGwob2JzZXJ2ZXIpO1xuICBjb25uLnN5bmMoKTtcbiAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBtc2csIHt9KTtcbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gVHJhbnNhY3Rpb247XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gRE8gTk9UIENIQU5HRSBUSEUgVkVSU0lPTiBCRUxPVyBIRVJFXG4vLyBUaGlzIGlzIHNldCBieSB0aGUgYnVpbGQgc3lzdGVtIGF0IHJlbGVhc2UgdGltZSwgdXNpbmdcbi8vICAgZ3VscCBzZXQgLS12ZXJzaW9uIDxyZWxlYXNldmVyc2lvbj5cbi8vXG4vLyBUaGlzIGlzIHNldCB1cCB0aGlzIHdheSB0byBrZWVwIHRoZSB2ZXJzaW9uIGluIHRoZSBjb2RlIGluXG4vLyBzeW5jIHdpdGggdGhlIG5wbSBwYWNrYWdlIHZlcnNpb24sIGFuZCB0byBhbGxvdyB0aGUgYnVpbGRcbi8vIHN5c3RlbSB0byBjb250cm9sIHZlcnNpb24gbmFtZXMgYXQgcGFja2FnaW5nIHRpbWUuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0geyBWRVJTSU9OOiBcIjAuMC4wLWRldlwiIH07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsInZhciBhc24xID0gZXhwb3J0cztcblxuYXNuMS5iaWdudW0gPSByZXF1aXJlKCdibi5qcycpO1xuXG5hc24xLmRlZmluZSA9IHJlcXVpcmUoJy4vYXNuMS9hcGknKS5kZWZpbmU7XG5hc24xLmJhc2UgPSByZXF1aXJlKCcuL2FzbjEvYmFzZScpO1xuYXNuMS5jb25zdGFudHMgPSByZXF1aXJlKCcuL2FzbjEvY29uc3RhbnRzJyk7XG5hc24xLmRlY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2RlY29kZXJzJyk7XG5hc24xLmVuY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2VuY29kZXJzJyk7XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4uL2FzbjEnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChiYXNlKSB7XG4gIHZhciBuYW1lZDtcbiAgdHJ5IHtcbiAgICBuYW1lZCA9IHJlcXVpcmUoJ3ZtJykucnVuSW5UaGlzQ29udGV4dChcbiAgICAgICcoZnVuY3Rpb24gJyArIHRoaXMubmFtZSArICcoZW50aXR5KSB7XFxuJyArXG4gICAgICAnICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG4nICtcbiAgICAgICd9KSdcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbmFtZWQgPSBmdW5jdGlvbiAoZW50aXR5KSB7XG4gICAgICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcbiAgICB9O1xuICB9XG4gIGluaGVyaXRzKG5hbWVkLCBiYXNlKTtcbiAgbmFtZWQucHJvdG90eXBlLl9pbml0TmFtZWQgPSBmdW5jdGlvbiBpbml0bmFtZWQoZW50aXR5KSB7XG4gICAgYmFzZS5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBuYW1lZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5kZWNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZGVjb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlbmMpLmRlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldEVuY29kZXIgPSBmdW5jdGlvbiBfZ2V0RW5jb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGVuY29kZXJcbiAgaWYgKCF0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5lbmNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5lbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5mdW5jdGlvbiBEZWNvZGVyQnVmZmVyKGJhc2UsIG9wdGlvbnMpIHtcbiAgUmVwb3J0ZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYmFzZSkpIHtcbiAgICB0aGlzLmVycm9yKCdJbnB1dCBub3QgQnVmZmVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5iYXNlID0gYmFzZTtcbiAgdGhpcy5vZmZzZXQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IGJhc2UubGVuZ3RoO1xufVxuaW5oZXJpdHMoRGVjb2RlckJ1ZmZlciwgUmVwb3J0ZXIpO1xuZXhwb3J0cy5EZWNvZGVyQnVmZmVyID0gRGVjb2RlckJ1ZmZlcjtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgdmFyIHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIEVuY29kZXJCdWZmZXIodmFsdWUsIHJlcG9ydGVyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghKGl0ZW0gaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihvdXQsIG9mZnNldCkge1xuICBpZiAoIW91dClcbiAgICBvdXQgPSBuZXcgQnVmZmVyKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsInZhciBiYXNlID0gZXhwb3J0cztcblxuYmFzZS5SZXBvcnRlciA9IHJlcXVpcmUoJy4vcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmJhc2UuRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmJhc2UuRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmJhc2UuTm9kZSA9IHJlcXVpcmUoJy4vbm9kZScpO1xuIiwidmFyIFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZScpLlJlcG9ydGVyO1xudmFyIEVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRW5jb2RlckJ1ZmZlcjtcbnZhciBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZScpLkRlY29kZXJCdWZmZXI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG4vLyBTdXBwb3J0ZWQgdGFnc1xudmFyIHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JyxcbiAgJ2JpdHN0cicsICdibXBzdHInLCAnY2hhcnN0cicsICdnZW5zdHInLCAnZ3JhcGhzdHInLCAnaWE1c3RyJywgJ2lzbzY0NnN0cicsXG4gICdudW1zdHInLCAnb2N0c3RyJywgJ3ByaW50c3RyJywgJ3Q2MXN0cicsICd1bmlzdHInLCAndXRmOHN0cicsICd2aWRlb3N0cidcbl07XG5cbi8vIFB1YmxpYyBtZXRob2RzIGxpc3RcbnZhciBtZXRob2RzID0gW1xuICAna2V5JywgJ29iaicsICd1c2UnLCAnb3B0aW9uYWwnLCAnZXhwbGljaXQnLCAnaW1wbGljaXQnLCAnZGVmJywgJ2Nob2ljZScsXG4gICdhbnknLCAnY29udGFpbnMnXG5dLmNvbmNhdCh0YWdzKTtcblxuLy8gT3ZlcnJpZGVkIG1ldGhvZHMgbGlzdFxudmFyIG92ZXJyaWRlZCA9IFtcbiAgJ19wZWVrVGFnJywgJ19kZWNvZGVUYWcnLCAnX3VzZScsXG4gICdfZGVjb2RlU3RyJywgJ19kZWNvZGVPYmppZCcsICdfZGVjb2RlVGltZScsXG4gICdfZGVjb2RlTnVsbCcsICdfZGVjb2RlSW50JywgJ19kZWNvZGVCb29sJywgJ19kZWNvZGVMaXN0JyxcblxuICAnX2VuY29kZUNvbXBvc2l0ZScsICdfZW5jb2RlU3RyJywgJ19lbmNvZGVPYmppZCcsICdfZW5jb2RlVGltZScsXG4gICdfZW5jb2RlTnVsbCcsICdfZW5jb2RlSW50JywgJ19lbmNvZGVCb29sJ1xuXTtcblxuZnVuY3Rpb24gTm9kZShlbmMsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB7fTtcbiAgdGhpcy5fYmFzZVN0YXRlID0gc3RhdGU7XG5cbiAgc3RhdGUuZW5jID0gZW5jO1xuXG4gIHN0YXRlLnBhcmVudCA9IHBhcmVudCB8fCBudWxsO1xuICBzdGF0ZS5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLy8gU3RhdGVcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuYXJncyA9IG51bGw7XG4gIHN0YXRlLnJldmVyc2VBcmdzID0gbnVsbDtcbiAgc3RhdGUuY2hvaWNlID0gbnVsbDtcbiAgc3RhdGUub3B0aW9uYWwgPSBmYWxzZTtcbiAgc3RhdGUuYW55ID0gZmFsc2U7XG4gIHN0YXRlLm9iaiA9IGZhbHNlO1xuICBzdGF0ZS51c2UgPSBudWxsO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gbnVsbDtcbiAgc3RhdGUua2V5ID0gbnVsbDtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IG51bGw7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICBzdGF0ZS5jb250YWlucyA9IG51bGw7XG5cbiAgLy8gU2hvdWxkIGNyZWF0ZSBuZXcgaW5zdGFuY2Ugb24gZWFjaCBtZXRob2RcbiAgaWYgKCFzdGF0ZS5wYXJlbnQpIHtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMuX3dyYXAoKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBOb2RlO1xuXG52YXIgc3RhdGVQcm9wcyA9IFtcbiAgJ2VuYycsICdwYXJlbnQnLCAnY2hpbGRyZW4nLCAndGFnJywgJ2FyZ3MnLCAncmV2ZXJzZUFyZ3MnLCAnY2hvaWNlJyxcbiAgJ29wdGlvbmFsJywgJ2FueScsICdvYmonLCAndXNlJywgJ2FsdGVyZWRVc2UnLCAna2V5JywgJ2RlZmF1bHQnLCAnZXhwbGljaXQnLFxuICAnaW1wbGljaXQnLCAnY29udGFpbnMnXG5dO1xuXG5Ob2RlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBjc3RhdGUgPSB7fTtcbiAgc3RhdGVQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICBjc3RhdGVbcHJvcF0gPSBzdGF0ZVtwcm9wXTtcbiAgfSk7XG4gIHZhciByZXMgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcihjc3RhdGUucGFyZW50KTtcbiAgcmVzLl9iYXNlU3RhdGUgPSBjc3RhdGU7XG4gIHJldHVybiByZXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fd3JhcCA9IGZ1bmN0aW9uIHdyYXAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgIHRoaXNbbWV0aG9kXSA9IGZ1bmN0aW9uIF93cmFwcGVkTWV0aG9kKCkge1xuICAgICAgdmFyIGNsb25lID0gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5wdXNoKGNsb25lKTtcbiAgICAgIHJldHVybiBjbG9uZVttZXRob2RdLmFwcGx5KGNsb25lLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sIHRoaXMpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGJvZHkpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBib2R5LmNhbGwodGhpcyk7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuXG4gIHN0YXRlLmNoaWxkcmVuID0gc3RhdGUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID09PSB0aGlzO1xuICB9LCB0aGlzKTtcbiAgYXNzZXJ0LmVxdWFsKHN0YXRlLmNoaWxkcmVuLmxlbmd0aCwgMSwgJ1Jvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3VzZUFyZ3MgPSBmdW5jdGlvbiB1c2VBcmdzKGFyZ3MpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIEZpbHRlciBjaGlsZHJlbiBhbmQgYXJnc1xuICB2YXIgY2hpbGRyZW4gPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvcjtcbiAgfSwgdGhpcyk7XG4gIGFyZ3MgPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gIShhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5jaGlsZHJlbiA9PT0gbnVsbCk7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgIC8vIFJlcGxhY2UgcGFyZW50IHRvIG1haW50YWluIGJhY2t3YXJkIGxpbmtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9IHRoaXM7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmFyZ3MgPT09IG51bGwpO1xuICAgIHN0YXRlLmFyZ3MgPSBhcmdzO1xuICAgIHN0YXRlLnJldmVyc2VBcmdzID0gYXJncy5tYXAoZnVuY3Rpb24oYXJnKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcgfHwgYXJnLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpXG4gICAgICAgIHJldHVybiBhcmc7XG5cbiAgICAgIHZhciByZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGFyZykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSAoa2V5IHwgMCkpXG4gICAgICAgICAga2V5IHw9IDA7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFyZ1trZXldO1xuICAgICAgICByZXNbdmFsdWVdID0ga2V5O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuICB9XG59O1xuXG4vL1xuLy8gT3ZlcnJpZGVkIG1ldGhvZHNcbi8vXG5cbm92ZXJyaWRlZC5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBOb2RlLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gX292ZXJyaWRlZCgpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogJyArIHN0YXRlLmVuYyk7XG4gIH07XG59KTtcblxuLy9cbi8vIFB1YmxpYyBtZXRob2RzXG4vL1xuXG50YWdzLmZvckVhY2goZnVuY3Rpb24odGFnKSB7XG4gIE5vZGUucHJvdG90eXBlW3RhZ10gPSBmdW5jdGlvbiBfdGFnTWV0aG9kKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBhc3NlcnQoc3RhdGUudGFnID09PSBudWxsKTtcbiAgICBzdGF0ZS50YWcgPSB0YWc7XG5cbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59KTtcblxuTm9kZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGl0ZW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmRlZiA9IGZ1bmN0aW9uIGRlZih2YWwpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub2JqID0gZnVuY3Rpb24gb2JqKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmtleSA9PT0gbnVsbCk7XG4gIHN0YXRlLmtleSA9IG5ld0tleTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uIGFueSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUuY29udGFpbnMgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vIERlY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIHZhciByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICB2YXIgcHJlc2VudCA9IHRydWU7XG5cbiAgdmFyIHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICB2YXIgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgdmFyIHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIHZhciBleHBsaWNpdCA9IHRoaXMuX2RlY29kZVRhZyhpbnB1dCwgc3RhdGUuZXhwbGljaXQpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoZXhwbGljaXQpKVxuICAgICAgICByZXR1cm4gZXhwbGljaXQ7XG4gICAgICBpbnB1dCA9IGV4cGxpY2l0O1xuICAgIH1cblxuICAgIHZhciBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHZhciBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgcmVzdWx0ID0gcmVzdWx0O1xuICAgIGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgZWxzZVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIHZhciBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9tbWl0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB0aGlzLmV4aXRLZXkoaW5kZXgpO1xuICBpZiAoc3RhdGUub2JqICE9PSBudWxsKVxuICAgIHN0YXRlLm9ialtrZXldID0gdmFsdWU7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbignLycpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyT2JqZWN0ID0gZnVuY3Rpb24gZW50ZXJPYmplY3QoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIHZhciBlcnI7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIGluaGVyaXRlZCA9IG1zZyBpbnN0YW5jZW9mIFJlcG9ydGVyRXJyb3I7XG4gIGlmIChpbmhlcml0ZWQpIHtcbiAgICBlcnIgPSBtc2c7XG4gIH0gZWxzZSB7XG4gICAgZXJyID0gbmV3IFJlcG9ydGVyRXJyb3Ioc3RhdGUucGF0aC5tYXAoZnVuY3Rpb24oZWxlbSkge1xuICAgICAgcmV0dXJuICdbJyArIEpTT04uc3RyaW5naWZ5KGVsZW0pICsgJ10nO1xuICAgIH0pLmpvaW4oJycpLCBtc2cubWVzc2FnZSB8fCBtc2csIG1zZy5zdGFjayk7XG4gIH1cblxuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICB0aHJvdyBlcnI7XG5cbiAgaWYgKCFpbmhlcml0ZWQpXG4gICAgc3RhdGUuZXJyb3JzLnB1c2goZXJyKTtcblxuICByZXR1cm4gZXJyO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLndyYXBSZXN1bHQgPSBmdW5jdGlvbiB3cmFwUmVzdWx0KHJlc3VsdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufTtcbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCJ2YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJyk7XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZyk7XG4iLCJ2YXIgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICB2YXIgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICB2YXIgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xudmFyIGJpZ251bSA9IGFzbjEuYmlnbnVtO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRGVjb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBiYXNlLkRlY29kZXJCdWZmZXIpKVxuICAgIGRhdGEgPSBuZXcgYmFzZS5EZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLnRyZWUuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsICdGYWlsZWQgdG8gcGVlayB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuXG4gIHJldHVybiBkZWNvZGVkVGFnLnRhZyA9PT0gdGFnIHx8IGRlY29kZWRUYWcudGFnU3RyID09PSB0YWcgfHxcbiAgICAoZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnKSA9PT0gdGFnIHx8IGFueTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUYWcgPSBmdW5jdGlvbiBkZWNvZGVUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgICBidWZmZXIsXG4gICAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKVxuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIsICdkZXInLCBvcHRpb25zKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSAmJiBwb3NzaWJsZUVuZClcbiAgICAgIGJyZWFrO1xuICAgIHJlc3VsdC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVTdHIgPSBmdW5jdGlvbiBkZWNvZGVTdHIoYnVmZmVyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICB2YXIgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIHZhciBzdHIgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgdmFyIG51bXN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKG51bXN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBudW1zdHI7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2N0c3RyJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgdmFyIHByaW50c3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihwcmludHN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByaW50c3RyO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgKyAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVPYmppZCA9IGZ1bmN0aW9uIGRlY29kZU9iamlkKGJ1ZmZlciwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgdmFyIGlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIHZhciBmaXJzdCA9IChpZGVudGlmaWVyc1swXSAvIDQwKSB8IDA7XG4gIHZhciBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICB2YXIgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIHZhciBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoMiwgNCkgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoYnVmZmVyKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICB2YXIgcmF3ID0gYnVmZmVyLnJhdygpO1xuICB2YXIgcmVzID0gbmV3IGJpZ251bShyYXcpO1xuXG4gIGlmICh2YWx1ZXMpXG4gICAgcmVzID0gdmFsdWVzW3Jlcy50b1N0cmluZygxMCldIHx8IHJlcztcblxuICByZXR1cm4gcmVzO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RGVjb2RlcignZGVyJykudHJlZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBkZXJEZWNvZGVUYWcoYnVmLCBmYWlsKSB7XG4gIHZhciB0YWcgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IodGFnKSlcbiAgICByZXR1cm4gdGFnO1xuXG4gIHZhciBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICB2YXIgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIHZhciBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICB2YXIgdGFnU3RyID0gZGVyLnRhZ1t0YWddO1xuXG4gIHJldHVybiB7XG4gICAgY2xzOiBjbHMsXG4gICAgcHJpbWl0aXZlOiBwcmltaXRpdmUsXG4gICAgdGFnOiB0YWcsXG4gICAgdGFnU3RyOiB0YWdTdHJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVyRGVjb2RlTGVuKGJ1ZiwgcHJpbWl0aXZlLCBmYWlsKSB7XG4gIHZhciBsZW4gPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIC8vIEluZGVmaW5pdGUgZm9ybVxuICBpZiAoIXByaW1pdGl2ZSAmJiBsZW4gPT09IDB4ODApXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgLy8gRGVmaW5pdGUgZm9ybVxuICBpZiAoKGxlbiAmIDB4ODApID09PSAwKSB7XG4gICAgLy8gU2hvcnQgZm9ybVxuICAgIHJldHVybiBsZW47XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgdmFyIG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPj0gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICB2YXIgaiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgaWYgKGJ1Zi5pc0Vycm9yKGopKVxuICAgICAgcmV0dXJuIGo7XG4gICAgbGVuIHw9IGo7XG4gIH1cblxuICByZXR1cm4gbGVuO1xufVxuIiwidmFyIGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIERFUkRlY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1EZWNvZGVyKGVudGl0eSkge1xuICBERVJEZWNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgdmFyIGxhYmVsID0gb3B0aW9ucy5sYWJlbC50b1VwcGVyQ2FzZSgpO1xuXG4gIHZhciByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgdmFyIHN0YXJ0ID0gLTE7XG4gIHZhciBlbmQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIHZhciBiYXNlNjQgPSBsaW5lcy5zbGljZShzdGFydCArIDEsIGVuZCkuam9pbignJyk7XG4gIC8vIFJlbW92ZSBleGNlc3NpdmUgc3ltYm9sc1xuICBiYXNlNjQucmVwbGFjZSgvW15hLXowLTlcXCtcXC89XSsvZ2ksICcnKTtcblxuICB2YXIgaW5wdXQgPSBuZXcgQnVmZmVyKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkVuY29kZXI7XG5cbkRFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpLmpvaW4oKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkge1xuICB2YXIgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgdmFyIGxlbk9jdGV0cyA9IDE7XG4gIGZvciAodmFyIGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigxICsgMSArIGxlbk9jdGV0cyk7XG4gIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gIGhlYWRlclsxXSA9IDB4ODAgfCBsZW5PY3RldHM7XG5cbiAgZm9yICh2YXIgaSA9IDEgKyBsZW5PY3RldHMsIGogPSBjb250ZW50Lmxlbmd0aDsgaiA+IDA7IGktLSwgaiA+Pj0gOClcbiAgICBoZWFkZXJbaV0gPSBqICYgMHhmZjtcblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVTdHIgPSBmdW5jdGlvbiBlbmNvZGVTdHIoc3RyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIHN0ci51bnVzZWQgfCAwLCBzdHIuZGF0YSBdKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzXFwuXSsvZyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICBpZCA9IGlkLnNsaWNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3Q6ICcgKyBKU09OLnN0cmluZ2lmeShpZCkpO1xuICB9XG5cbiAgaWYgKCFyZWxhdGl2ZSkge1xuICAgIGlmIChpZFsxXSA+PSA0MClcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0InKTtcbiAgICBpZC5zcGxpY2UoMCwgMiwgaWRbMF0gKiA0MCArIGlkWzFdKTtcbiAgfVxuXG4gIC8vIENvdW50IG51bWJlciBvZiBvY3RldHNcbiAgdmFyIHNpemUgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgZm9yIChzaXplKys7IGlkZW50ID49IDB4ODA7IGlkZW50ID4+PSA3KVxuICAgICAgc2l6ZSsrO1xuICB9XG5cbiAgdmFyIG9iamlkID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgdmFyIG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAodmFyIGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICB2YXIgc3RyO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xuXG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSAlIDEwMCksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihzdHIsICdvY3RzdHInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVOdWxsID0gZnVuY3Rpb24gZW5jb2RlTnVsbCgpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoJycpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0sIHZhbHVlcykge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkobnVtKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1ZhbHVlcyBtYXAgZG9lc25cXCd0IGNvbnRhaW46ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobnVtKSk7XG4gICAgfVxuICAgIG51bSA9IHZhbHVlc1tudW1dO1xuICB9XG5cbiAgLy8gQmlnbnVtLCBhc3N1bWUgYmlnIGVuZGlhblxuICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgJiYgIUJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gbmV3IEJ1ZmZlcihudW1BcnJheSk7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgc2l6ZSA9IG51bS5sZW5ndGg7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBzaXplKys7XG5cbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMFxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKHZhciBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobmV3IEJ1ZmZlcihvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZGF0YSA9IGRhdGFCdWZmZXIuam9pbigpO1xuICBpZiAoc3RhdGUuZGVmYXVsdEJ1ZmZlciA9PT0gdW5kZWZpbmVkKVxuICAgIHN0YXRlLmRlZmF1bHRCdWZmZXIgPSB0aGlzLl9lbmNvZGVWYWx1ZShzdGF0ZVsnZGVmYXVsdCddLCByZXBvcnRlciwgcGFyZW50KS5qb2luKCk7XG5cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChpPTA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkYXRhW2ldICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyW2ldKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCByZXBvcnRlcikge1xuICB2YXIgcmVzO1xuXG4gIGlmICh0YWcgPT09ICdzZXFvZicpXG4gICAgdGFnID0gJ3NlcSc7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ3NldG9mJylcbiAgICB0YWcgPSAnc2V0JztcblxuICBpZiAoZGVyLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eSh0YWcpKVxuICAgIHJlcyA9IGRlci50YWdCeU5hbWVbdGFnXTtcbiAgZWxzZSBpZiAodHlwZW9mIHRhZyA9PT0gJ251bWJlcicgJiYgKHRhZyB8IDApID09PSB0YWcpXG4gICAgcmVzID0gdGFnO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdVbmtub3duIHRhZzogJyArIHRhZyk7XG5cbiAgaWYgKHJlcyA+PSAweDFmKVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkJyk7XG5cbiAgaWYgKCFwcmltaXRpdmUpXG4gICAgcmVzIHw9IDB4MjA7XG5cbiAgcmVzIHw9IChkZXIudGFnQ2xhc3NCeU5hbWVbY2xzIHx8ICd1bml2ZXJzYWwnXSA8PCA2KTtcblxuICByZXR1cm4gcmVzO1xufVxuIiwidmFyIGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTUVuY29kZXIsIERFUkVuY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1FbmNvZGVyO1xuXG5QRU1FbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgdmFyIHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB2YXIgb3V0ID0gWyAnLS0tLS1CRUdJTiAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScgXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSArPSA2NClcbiAgICBvdXQucHVzaChwLnNsaWNlKGksIGkgKyA2NCkpO1xuICBvdXQucHVzaCgnLS0tLS1FTkQgJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nKTtcbiAgcmV0dXJuIG91dC5qb2luKCdcXG4nKTtcbn07XG4iLCJ2YXIgbG9va3VwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nO1xuXG47KGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuICB2YXIgQXJyID0gKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJylcbiAgICA/IFVpbnQ4QXJyYXlcbiAgICA6IEFycmF5XG5cblx0dmFyIFBMVVMgICA9ICcrJy5jaGFyQ29kZUF0KDApXG5cdHZhciBTTEFTSCAgPSAnLycuY2hhckNvZGVBdCgwKVxuXHR2YXIgTlVNQkVSID0gJzAnLmNoYXJDb2RlQXQoMClcblx0dmFyIExPV0VSICA9ICdhJy5jaGFyQ29kZUF0KDApXG5cdHZhciBVUFBFUiAgPSAnQScuY2hhckNvZGVBdCgwKVxuXHR2YXIgUExVU19VUkxfU0FGRSA9ICctJy5jaGFyQ29kZUF0KDApXG5cdHZhciBTTEFTSF9VUkxfU0FGRSA9ICdfJy5jaGFyQ29kZUF0KDApXG5cblx0ZnVuY3Rpb24gZGVjb2RlIChlbHQpIHtcblx0XHR2YXIgY29kZSA9IGVsdC5jaGFyQ29kZUF0KDApXG5cdFx0aWYgKGNvZGUgPT09IFBMVVMgfHxcblx0XHQgICAgY29kZSA9PT0gUExVU19VUkxfU0FGRSlcblx0XHRcdHJldHVybiA2MiAvLyAnKydcblx0XHRpZiAoY29kZSA9PT0gU0xBU0ggfHxcblx0XHQgICAgY29kZSA9PT0gU0xBU0hfVVJMX1NBRkUpXG5cdFx0XHRyZXR1cm4gNjMgLy8gJy8nXG5cdFx0aWYgKGNvZGUgPCBOVU1CRVIpXG5cdFx0XHRyZXR1cm4gLTEgLy9ubyBtYXRjaFxuXHRcdGlmIChjb2RlIDwgTlVNQkVSICsgMTApXG5cdFx0XHRyZXR1cm4gY29kZSAtIE5VTUJFUiArIDI2ICsgMjZcblx0XHRpZiAoY29kZSA8IFVQUEVSICsgMjYpXG5cdFx0XHRyZXR1cm4gY29kZSAtIFVQUEVSXG5cdFx0aWYgKGNvZGUgPCBMT1dFUiArIDI2KVxuXHRcdFx0cmV0dXJuIGNvZGUgLSBMT1dFUiArIDI2XG5cdH1cblxuXHRmdW5jdGlvbiBiNjRUb0J5dGVBcnJheSAoYjY0KSB7XG5cdFx0dmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnJcblxuXHRcdGlmIChiNjQubGVuZ3RoICUgNCA+IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG5cdFx0fVxuXG5cdFx0Ly8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycylcblx0XHQvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0XG5cdFx0Ly8gcmVwcmVzZW50IG9uZSBieXRlXG5cdFx0Ly8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzXG5cdFx0Ly8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZVxuXHRcdHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cdFx0cGxhY2VIb2xkZXJzID0gJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDIpID8gMiA6ICc9JyA9PT0gYjY0LmNoYXJBdChsZW4gLSAxKSA/IDEgOiAwXG5cblx0XHQvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcblx0XHRhcnIgPSBuZXcgQXJyKGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuXHRcdC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcblx0XHRsID0gcGxhY2VIb2xkZXJzID4gMCA/IGI2NC5sZW5ndGggLSA0IDogYjY0Lmxlbmd0aFxuXG5cdFx0dmFyIEwgPSAwXG5cblx0XHRmdW5jdGlvbiBwdXNoICh2KSB7XG5cdFx0XHRhcnJbTCsrXSA9IHZcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz0gNCwgaiArPSAzKSB7XG5cdFx0XHR0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDE4KSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDEyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMikpIDw8IDYpIHwgZGVjb2RlKGI2NC5jaGFyQXQoaSArIDMpKVxuXHRcdFx0cHVzaCgodG1wICYgMHhGRjAwMDApID4+IDE2KVxuXHRcdFx0cHVzaCgodG1wICYgMHhGRjAwKSA+PiA4KVxuXHRcdFx0cHVzaCh0bXAgJiAweEZGKVxuXHRcdH1cblxuXHRcdGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMikgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA+PiA0KVxuXHRcdFx0cHVzaCh0bXAgJiAweEZGKVxuXHRcdH0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7XG5cdFx0XHR0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDEwKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDQpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPj4gMilcblx0XHRcdHB1c2goKHRtcCA+PiA4KSAmIDB4RkYpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIGFyclxuXHR9XG5cblx0ZnVuY3Rpb24gdWludDhUb0Jhc2U2NCAodWludDgpIHtcblx0XHR2YXIgaSxcblx0XHRcdGV4dHJhQnl0ZXMgPSB1aW50OC5sZW5ndGggJSAzLCAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuXHRcdFx0b3V0cHV0ID0gXCJcIixcblx0XHRcdHRlbXAsIGxlbmd0aFxuXG5cdFx0ZnVuY3Rpb24gZW5jb2RlIChudW0pIHtcblx0XHRcdHJldHVybiBsb29rdXAuY2hhckF0KG51bSlcblx0XHR9XG5cblx0XHRmdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuXHRcdFx0cmV0dXJuIGVuY29kZShudW0gPj4gMTggJiAweDNGKSArIGVuY29kZShudW0gPj4gMTIgJiAweDNGKSArIGVuY29kZShudW0gPj4gNiAmIDB4M0YpICsgZW5jb2RlKG51bSAmIDB4M0YpXG5cdFx0fVxuXG5cdFx0Ly8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuXHRcdGZvciAoaSA9IDAsIGxlbmd0aCA9IHVpbnQ4Lmxlbmd0aCAtIGV4dHJhQnl0ZXM7IGkgPCBsZW5ndGg7IGkgKz0gMykge1xuXHRcdFx0dGVtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcblx0XHRcdG91dHB1dCArPSB0cmlwbGV0VG9CYXNlNjQodGVtcClcblx0XHR9XG5cblx0XHQvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG5cdFx0c3dpdGNoIChleHRyYUJ5dGVzKSB7XG5cdFx0XHRjYXNlIDE6XG5cdFx0XHRcdHRlbXAgPSB1aW50OFt1aW50OC5sZW5ndGggLSAxXVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKHRlbXAgPj4gMilcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCA0KSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSAnPT0nXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlIDI6XG5cdFx0XHRcdHRlbXAgPSAodWludDhbdWludDgubGVuZ3RoIC0gMl0gPDwgOCkgKyAodWludDhbdWludDgubGVuZ3RoIC0gMV0pXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAxMClcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA+PiA0KSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUoKHRlbXAgPDwgMikgJiAweDNGKVxuXHRcdFx0XHRvdXRwdXQgKz0gJz0nXG5cdFx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG5cblx0ZXhwb3J0cy50b0J5dGVBcnJheSA9IGI2NFRvQnl0ZUFycmF5XG5cdGV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IHVpbnQ4VG9CYXNlNjRcbn0odHlwZW9mIGV4cG9ydHMgPT09ICd1bmRlZmluZWQnID8gKHRoaXMuYmFzZTY0anMgPSB7fSkgOiBleHBvcnRzKSlcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXggKHN0ciwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByIDw8PSA0O1xuXG4gICAgICAvLyAnYScgLSAnZidcbiAgICAgIGlmIChjID49IDQ5ICYmIGMgPD0gNTQpIHtcbiAgICAgICAgciB8PSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJyAtICdGJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3ICYmIGMgPD0gMjIpIHtcbiAgICAgICAgciB8PSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciB8PSBjICYgMHhmO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQpIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICAvLyBTY2FuIDI0LWJpdCBjaHVua3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBudW1iZXJcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gNiwgaiA9IDA7IGkgPj0gc3RhcnQ7IGkgLT0gNikge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgaSwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgLy8gTk9URTogYDB4M2ZmZmZmYCBpcyBpbnRlbnRpb25hbCBoZXJlLCAyNmJpdHMgbWF4IHNoaWZ0ICsgMjRiaXQgaGV4IGxpbWJcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICAgIG9mZiArPSAyNDtcbiAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICBqKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpICsgNiAhPT0gc3RhcnQpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIHN0YXJ0LCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgfVxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICBpZiAod2luZG93LmNyeXB0byAmJiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIE1vZGVybiBicm93c2Vyc1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cubXNDcnlwdG8gJiYgd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIElFXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyXG4gIHRyeSB7XG4gICAgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeScgKyAncHRvJyk7XG5cbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMobik7XG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gIH1cbn1cbiIsbnVsbCwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG52YXIgcm9vdFBhcmVudCA9IHt9XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gU2FmYXJpIDUtNyBsYWNrcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgYE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3JgIHByb3BlcnR5XG4gKiAgICAgb24gb2JqZWN0cy5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIGZ1bmN0aW9uIEJhciAoKSB7fVxuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5mb28gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9XG4gICAgYXJyLmNvbnN0cnVjdG9yID0gQmFyXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgYXJyLmNvbnN0cnVjdG9yID09PSBCYXIgJiYgLy8gY29uc3RydWN0b3IgY2FuIGJlIHNldFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG4vKipcbiAqIENsYXNzOiBCdWZmZXJcbiAqID09PT09PT09PT09PT1cbiAqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGFyZSBhdWdtZW50ZWRcbiAqIHdpdGggZnVuY3Rpb24gcHJvcGVydGllcyBmb3IgYWxsIHRoZSBub2RlIGBCdWZmZXJgIEFQSSBmdW5jdGlvbnMuIFdlIHVzZVxuICogYFVpbnQ4QXJyYXlgIHNvIHRoYXQgc3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXQgcmV0dXJuc1xuICogYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogQnkgYXVnbWVudGluZyB0aGUgaW5zdGFuY2VzLCB3ZSBjYW4gYXZvaWQgbW9kaWZ5aW5nIHRoZSBgVWludDhBcnJheWBcbiAqIHByb3RvdHlwZS5cbiAqL1xuZnVuY3Rpb24gQnVmZmVyIChhcmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAvLyBBdm9pZCBnb2luZyB0aHJvdWdoIGFuIEFyZ3VtZW50c0FkYXB0b3JUcmFtcG9saW5lIGluIHRoZSBjb21tb24gY2FzZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHJldHVybiBuZXcgQnVmZmVyKGFyZywgYXJndW1lbnRzWzFdKVxuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZylcbiAgfVxuXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDBcbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmcm9tTnVtYmVyKHRoaXMsIGFyZylcbiAgfVxuXG4gIC8vIFNsaWdodGx5IGxlc3MgY29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoaXMsIGFyZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiAndXRmOCcpXG4gIH1cblxuICAvLyBVbnVzdWFsLlxuICByZXR1cm4gZnJvbU9iamVjdCh0aGlzLCBhcmcpXG59XG5cbmZ1bmN0aW9uIGZyb21OdW1iZXIgKHRoYXQsIGxlbmd0aCkge1xuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGxlbmd0aCkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgLy8gQXNzdW1wdGlvbjogYnl0ZUxlbmd0aCgpIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgPCBrTWF4TGVuZ3RoLlxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcblxuICB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHJldHVybiBmcm9tQnVmZmVyKHRoYXQsIG9iamVjdClcblxuICBpZiAoaXNBcnJheShvYmplY3QpKSByZXR1cm4gZnJvbUFycmF5KHRoYXQsIG9iamVjdClcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtdXN0IHN0YXJ0IHdpdGggbnVtYmVyLCBidWZmZXIsIGFycmF5IG9yIHN0cmluZycpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChvYmplY3QuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBmcm9tVHlwZWRBcnJheSh0aGF0LCBvYmplY3QpXG4gICAgfVxuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCBvYmplY3QpXG4gICAgfVxuICB9XG5cbiAgaWYgKG9iamVjdC5sZW5ndGgpIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iamVjdClcblxuICByZXR1cm4gZnJvbUpzb25PYmplY3QodGhhdCwgb2JqZWN0KVxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyICh0aGF0LCBidWZmZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYnVmZmVyLmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIGJ1ZmZlci5jb3B5KHRoYXQsIDAsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5ICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLy8gRHVwbGljYXRlIG9mIGZyb21BcnJheSgpIHRvIGtlZXAgZnJvbUFycmF5KCkgbW9ub21vcnBoaWMuXG5mdW5jdGlvbiBmcm9tVHlwZWRBcnJheSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgLy8gVHJ1bmNhdGluZyB0aGUgZWxlbWVudHMgaXMgcHJvYmFibHkgbm90IHdoYXQgcGVvcGxlIGV4cGVjdCBmcm9tIHR5cGVkXG4gIC8vIGFycmF5cyB3aXRoIEJZVEVTX1BFUl9FTEVNRU5UID4gMSBidXQgaXQncyBjb21wYXRpYmxlIHdpdGggdGhlIGJlaGF2aW9yXG4gIC8vIG9mIHRoZSBvbGQgQnVmZmVyIGNvbnN0cnVjdG9yLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICBhcnJheS5ieXRlTGVuZ3RoXG4gICAgdGhhdCA9IEJ1ZmZlci5fYXVnbWVudChuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tVHlwZWRBcnJheSh0aGF0LCBuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8vIERlc2VyaWFsaXplIHsgdHlwZTogJ0J1ZmZlcicsIGRhdGE6IFsxLDIsMywuLi5dIH0gaW50byBhIEJ1ZmZlciBvYmplY3QuXG4vLyBSZXR1cm5zIGEgemVyby1sZW5ndGggYnVmZmVyIGZvciBpbnB1dHMgdGhhdCBkb24ndCBjb25mb3JtIHRvIHRoZSBzcGVjLlxuZnVuY3Rpb24gZnJvbUpzb25PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICB2YXIgYXJyYXlcbiAgdmFyIGxlbmd0aCA9IDBcblxuICBpZiAob2JqZWN0LnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqZWN0LmRhdGEpKSB7XG4gICAgYXJyYXkgPSBvYmplY3QuZGF0YVxuICAgIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgfVxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxufSBlbHNlIHtcbiAgLy8gcHJlLXNldCBmb3IgdmFsdWVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBmdXR1cmVcbiAgQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSB1bmRlZmluZWRcbiAgQnVmZmVyLnByb3RvdHlwZS5wYXJlbnQgPSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gYWxsb2NhdGUgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGxlbmd0aCkpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhhdC5faXNCdWZmZXIgPSB0cnVlXG4gIH1cblxuICB2YXIgZnJvbVBvb2wgPSBsZW5ndGggIT09IDAgJiYgbGVuZ3RoIDw9IEJ1ZmZlci5wb29sU2l6ZSA+Pj4gMVxuICBpZiAoZnJvbVBvb2wpIHRoYXQucGFyZW50ID0gcm9vdFBhcmVudFxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAoc3ViamVjdCwgZW5jb2RpbmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNsb3dCdWZmZXIpKSByZXR1cm4gbmV3IFNsb3dCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG4gIGRlbGV0ZSBidWYucGFyZW50XG4gIHJldHVybiBidWZcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIHZhciBpID0gMFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgYnJlYWtcblxuICAgICsraVxuICB9XG5cbiAgaWYgKGkgIT09IGxlbikge1xuICAgIHggPSBhW2ldXG4gICAgeSA9IGJbaV1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAncmF3JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMuJylcblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgaXRlbS5jb3B5KGJ1ZiwgcG9zKVxuICAgIHBvcyArPSBpdGVtLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHN0cmluZyA9ICcnICsgc3RyaW5nXG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAvLyBEZXByZWNhdGVkXG4gICAgICBjYXNlICdyYXcnOlxuICAgICAgY2FzZSAncmF3cyc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgc3RhcnQgPSBzdGFydCB8IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBJbmZpbml0eSA/IHRoaXMubGVuZ3RoIDogZW5kIHwgMFxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG4gIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGJpbmFyeVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gMFxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYilcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0KSB7XG4gIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgYnl0ZU9mZnNldCA+Pj0gMFxuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG4gIGlmIChieXRlT2Zmc2V0ID49IHRoaXMubGVuZ3RoKSByZXR1cm4gLTFcblxuICAvLyBOZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoICsgYnl0ZU9mZnNldCwgMClcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xIC8vIHNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nIGFsd2F5cyBmYWlsc1xuICAgIHJldHVybiBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcywgdmFsLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIFsgdmFsIF0sIGJ5dGVPZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0KSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAodmFyIGkgPSAwOyBieXRlT2Zmc2V0ICsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltieXRlT2Zmc2V0ICsgaV0gPT09IHZhbFtmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleF0pIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWwubGVuZ3RoKSByZXR1cm4gYnl0ZU9mZnNldCArIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbi8vIGBnZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5nZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLnJlYWRVSW50OChvZmZzZXQpXG59XG5cbi8vIGBzZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gc2V0ICh2LCBvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5zZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLndyaXRlVUludDgodiwgb2Zmc2V0KVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJpbmFyeVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3dhcCA9IGVuY29kaW5nXG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSBsZW5ndGggfCAwXG4gICAgbGVuZ3RoID0gc3dhcFxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBiaW5hcnlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGJpbmFyeVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSBCdWZmZXIuX2F1Z21lbnQodGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSlcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyBpKyspIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdCdWYubGVuZ3RoKSBuZXdCdWYucGFyZW50ID0gdGhpcy5wYXJlbnQgfHwgdGhpc1xuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZSBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyBpKyspIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgaSsrKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IHZhbHVlIDwgMCA/IDEgOiAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gdmFsdWUgPCAwID8gMSA6IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWUgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5fc2V0KHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIGZpbGwodmFsdWUsIHN0YXJ0PTAsIGVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCkgZW5kID0gdGhpcy5sZW5ndGhcblxuICBpZiAoZW5kIDwgc3RhcnQpIHRocm93IG5ldyBSYW5nZUVycm9yKCdlbmQgPCBzdGFydCcpXG5cbiAgLy8gRmlsbCAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpc1tpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IHV0ZjhUb0J5dGVzKHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXNbaV0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBgQXJyYXlCdWZmZXJgIHdpdGggdGhlICpjb3BpZWQqIG1lbW9yeSBvZiB0aGUgYnVmZmVyIGluc3RhbmNlLlxuICogQWRkZWQgaW4gTm9kZSAwLjEyLiBPbmx5IGF2YWlsYWJsZSBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgQXJyYXlCdWZmZXIuXG4gKi9cbkJ1ZmZlci5wcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIgKCkge1xuICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgICByZXR1cm4gKG5ldyBCdWZmZXIodGhpcykpLmJ1ZmZlclxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgpXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYnVmLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGJ1ZltpXSA9IHRoaXNbaV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBidWYuYnVmZmVyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1ZmZlci50b0FycmF5QnVmZmVyIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyJylcbiAgfVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBCUCA9IEJ1ZmZlci5wcm90b3R5cGVcblxuLyoqXG4gKiBBdWdtZW50IGEgVWludDhBcnJheSAqaW5zdGFuY2UqIChub3QgdGhlIFVpbnQ4QXJyYXkgY2xhc3MhKSB3aXRoIEJ1ZmZlciBtZXRob2RzXG4gKi9cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIF9hdWdtZW50IChhcnIpIHtcbiAgYXJyLmNvbnN0cnVjdG9yID0gQnVmZmVyXG4gIGFyci5faXNCdWZmZXIgPSB0cnVlXG5cbiAgLy8gc2F2ZSByZWZlcmVuY2UgdG8gb3JpZ2luYWwgVWludDhBcnJheSBzZXQgbWV0aG9kIGJlZm9yZSBvdmVyd3JpdGluZ1xuICBhcnIuX3NldCA9IGFyci5zZXRcblxuICAvLyBkZXByZWNhdGVkXG4gIGFyci5nZXQgPSBCUC5nZXRcbiAgYXJyLnNldCA9IEJQLnNldFxuXG4gIGFyci53cml0ZSA9IEJQLndyaXRlXG4gIGFyci50b1N0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0xvY2FsZVN0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0pTT04gPSBCUC50b0pTT05cbiAgYXJyLmVxdWFscyA9IEJQLmVxdWFsc1xuICBhcnIuY29tcGFyZSA9IEJQLmNvbXBhcmVcbiAgYXJyLmluZGV4T2YgPSBCUC5pbmRleE9mXG4gIGFyci5jb3B5ID0gQlAuY29weVxuICBhcnIuc2xpY2UgPSBCUC5zbGljZVxuICBhcnIucmVhZFVJbnRMRSA9IEJQLnJlYWRVSW50TEVcbiAgYXJyLnJlYWRVSW50QkUgPSBCUC5yZWFkVUludEJFXG4gIGFyci5yZWFkVUludDggPSBCUC5yZWFkVUludDhcbiAgYXJyLnJlYWRVSW50MTZMRSA9IEJQLnJlYWRVSW50MTZMRVxuICBhcnIucmVhZFVJbnQxNkJFID0gQlAucmVhZFVJbnQxNkJFXG4gIGFyci5yZWFkVUludDMyTEUgPSBCUC5yZWFkVUludDMyTEVcbiAgYXJyLnJlYWRVSW50MzJCRSA9IEJQLnJlYWRVSW50MzJCRVxuICBhcnIucmVhZEludExFID0gQlAucmVhZEludExFXG4gIGFyci5yZWFkSW50QkUgPSBCUC5yZWFkSW50QkVcbiAgYXJyLnJlYWRJbnQ4ID0gQlAucmVhZEludDhcbiAgYXJyLnJlYWRJbnQxNkxFID0gQlAucmVhZEludDE2TEVcbiAgYXJyLnJlYWRJbnQxNkJFID0gQlAucmVhZEludDE2QkVcbiAgYXJyLnJlYWRJbnQzMkxFID0gQlAucmVhZEludDMyTEVcbiAgYXJyLnJlYWRJbnQzMkJFID0gQlAucmVhZEludDMyQkVcbiAgYXJyLnJlYWRGbG9hdExFID0gQlAucmVhZEZsb2F0TEVcbiAgYXJyLnJlYWRGbG9hdEJFID0gQlAucmVhZEZsb2F0QkVcbiAgYXJyLnJlYWREb3VibGVMRSA9IEJQLnJlYWREb3VibGVMRVxuICBhcnIucmVhZERvdWJsZUJFID0gQlAucmVhZERvdWJsZUJFXG4gIGFyci53cml0ZVVJbnQ4ID0gQlAud3JpdGVVSW50OFxuICBhcnIud3JpdGVVSW50TEUgPSBCUC53cml0ZVVJbnRMRVxuICBhcnIud3JpdGVVSW50QkUgPSBCUC53cml0ZVVJbnRCRVxuICBhcnIud3JpdGVVSW50MTZMRSA9IEJQLndyaXRlVUludDE2TEVcbiAgYXJyLndyaXRlVUludDE2QkUgPSBCUC53cml0ZVVJbnQxNkJFXG4gIGFyci53cml0ZVVJbnQzMkxFID0gQlAud3JpdGVVSW50MzJMRVxuICBhcnIud3JpdGVVSW50MzJCRSA9IEJQLndyaXRlVUludDMyQkVcbiAgYXJyLndyaXRlSW50TEUgPSBCUC53cml0ZUludExFXG4gIGFyci53cml0ZUludEJFID0gQlAud3JpdGVJbnRCRVxuICBhcnIud3JpdGVJbnQ4ID0gQlAud3JpdGVJbnQ4XG4gIGFyci53cml0ZUludDE2TEUgPSBCUC53cml0ZUludDE2TEVcbiAgYXJyLndyaXRlSW50MTZCRSA9IEJQLndyaXRlSW50MTZCRVxuICBhcnIud3JpdGVJbnQzMkxFID0gQlAud3JpdGVJbnQzMkxFXG4gIGFyci53cml0ZUludDMyQkUgPSBCUC53cml0ZUludDMyQkVcbiAgYXJyLndyaXRlRmxvYXRMRSA9IEJQLndyaXRlRmxvYXRMRVxuICBhcnIud3JpdGVGbG9hdEJFID0gQlAud3JpdGVGbG9hdEJFXG4gIGFyci53cml0ZURvdWJsZUxFID0gQlAud3JpdGVEb3VibGVMRVxuICBhcnIud3JpdGVEb3VibGVCRSA9IEJQLndyaXRlRG91YmxlQkVcbiAgYXJyLmZpbGwgPSBCUC5maWxsXG4gIGFyci5pbnNwZWN0ID0gQlAuaW5zcGVjdFxuICBhcnIudG9BcnJheUJ1ZmZlciA9IEJQLnRvQXJyYXlCdWZmZXJcblxuICByZXR1cm4gYXJyXG59XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJ2YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG5pbmhlcml0cyhDaXBoZXJCYXNlLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgdGhpcy5fZGVjb2RlciA9IG51bGxcbiAgdGhpcy5fZW5jb2RpbmcgPSBudWxsXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgaW5wdXRFbmMsIG91dHB1dEVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgaW5wdXRFbmMpXG4gIH1cbiAgdmFyIG91dERhdGEgPSB0aGlzLl91cGRhdGUoZGF0YSlcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKCkge31cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX2ZpbmFsKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnIgPSBlXG4gIH0gZmluYWxseSB7XG4gICAgZG9uZShlcnIpXG4gIH1cbn1cbkNpcGhlckJhc2UucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0ID0gZnVuY3Rpb24gKG91dHB1dEVuYykge1xuICB2YXIgb3V0RGF0YSA9IHRoaXMuX2ZpbmFsKCkgfHwgbmV3IEJ1ZmZlcignJylcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbmFsKSB7XG4gIGlmICghdGhpcy5fZGVjb2Rlcikge1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBlbmNcbiAgfVxuICBpZiAodGhpcy5fZW5jb2RpbmcgIT09IGVuYykge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FuXFwndCBzd2l0Y2ggZW5jb2RpbmdzJylcbiAgfVxuICB2YXIgb3V0ID0gdGhpcy5fZGVjb2Rlci53cml0ZSh2YWx1ZSlcbiAgaWYgKGZpbmFsKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFQ0RIKGN1cnZlKSB7XG5cdHJldHVybiBuZXcgRUNESChjdXJ2ZSk7XG59O1xuXG52YXIgYWxpYXNlcyA9IHtcblx0c2VjcDI1NmsxOiB7XG5cdFx0bmFtZTogJ3NlY3AyNTZrMScsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0c2VjcDIyNHIxOiB7XG5cdFx0bmFtZTogJ3AyMjQnLFxuXHRcdGJ5dGVMZW5ndGg6IDI4XG5cdH0sXG5cdHByaW1lMjU2djE6IHtcblx0XHRuYW1lOiAncDI1NicsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0cHJpbWUxOTJ2MToge1xuXHRcdG5hbWU6ICdwMTkyJyxcblx0XHRieXRlTGVuZ3RoOiAyNFxuXHR9LFxuXHRlZDI1NTE5OiB7XG5cdFx0bmFtZTogJ2VkMjU1MTknLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AzODRyMToge1xuXHRcdG5hbWU6ICdwMzg0Jyxcblx0XHRieXRlTGVuZ3RoOiA0OFxuXHR9LFxuXHRzZWNwNTIxcjE6IHtcblx0XHRuYW1lOiAncDUyMScsXG5cdFx0Ynl0ZUxlbmd0aDogNjZcblx0fVxufTtcblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjE7XG5hbGlhc2VzLnAyNTYgPSBhbGlhc2VzLnNlY3AyNTZyMSA9IGFsaWFzZXMucHJpbWUyNTZ2MTtcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxO1xuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjE7XG5hbGlhc2VzLnA1MjEgPSBhbGlhc2VzLnNlY3A1MjFyMTtcblxuZnVuY3Rpb24gRUNESChjdXJ2ZSkge1xuXHR0aGlzLmN1cnZlVHlwZSA9IGFsaWFzZXNbY3VydmVdO1xuXHRpZiAoIXRoaXMuY3VydmVUeXBlICkge1xuXHRcdHRoaXMuY3VydmVUeXBlID0ge1xuXHRcdFx0bmFtZTogY3VydmVcblx0XHR9O1xuXHR9XG5cdHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSk7XG5cdHRoaXMua2V5cyA9IHZvaWQgMDtcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpO1xuXHRyZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpO1xufTtcblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuXHRpbmVuYyA9IGluZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG5cdFx0b3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYyk7XG5cdH1cblx0dmFyIG90aGVyUHViID0gdGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKG90aGVyKS5nZXRQdWJsaWMoKTtcblx0dmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCk7XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcblx0dmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpO1xuXHRpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuXHRcdGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuXHRcdFx0a2V5WzBdID0gNztcblx0XHR9IGVsc2Uge1xuXHRcdFx0a2V5IFswXSA9IDY7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKTtcbn07XG5cbkVDREgucHJvdG90eXBlLnNldFB1YmxpY0tleSA9IGZ1bmN0aW9uIChwdWIsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG5cdFx0cHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG5cdH1cblx0dGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuXHRcdHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG5cdH1cblx0dmFyIF9wcml2ID0gbmV3IEJOKHByaXYpO1xuXHRfcHJpdiA9IF9wcml2LnRvU3RyaW5nKDE2KTtcblx0dGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jLCBsZW4pIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGJuKSkge1xuXHRcdGJuID0gYm4udG9BcnJheSgpO1xuXHR9XG5cdHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKTtcblx0aWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG5cdFx0dmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKTtcblx0XHR6ZXJvcy5maWxsKDApO1xuXHRcdGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKTtcblx0fVxuXHRpZiAoIWVuYykge1xuXHRcdHJldHVybiBidWY7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuXHR9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgbWQ1ID0gcmVxdWlyZSgnLi9tZDUnKVxudmFyIHJtZDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2hOb0NvbnN0cnVjdG9yKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG4gIHRoaXMuYnVmZmVycyA9IFtdXG59XG5cbmluaGVyaXRzKEhhc2hOb0NvbnN0cnVjdG9yLCBCYXNlKVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuYnVmZmVycy5wdXNoKGRhdGEpXG59XG5cbkhhc2hOb0NvbnN0cnVjdG9yLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuYnVmZmVycylcbiAgdmFyIHIgPSB0aGlzLl9oYXNoKGJ1ZilcbiAgdGhpcy5idWZmZXJzID0gbnVsbFxuXG4gIHJldHVybiByXG59XG5cbmZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKCdtZDUnID09PSBhbGcpIHJldHVybiBuZXcgSGFzaE5vQ29uc3RydWN0b3IobWQ1KVxuICBpZiAoJ3JtZDE2MCcgPT09IGFsZyB8fCAncmlwZW1kMTYwJyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKHJtZDE2MClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50U2l6ZSA9IDQ7XG52YXIgemVyb0J1ZmZlciA9IG5ldyBCdWZmZXIoaW50U2l6ZSk7IHplcm9CdWZmZXIuZmlsbCgwKTtcbnZhciBjaHJzeiA9IDg7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pIHtcbiAgaWYgKChidWYubGVuZ3RoICUgaW50U2l6ZSkgIT09IDApIHtcbiAgICB2YXIgbGVuID0gYnVmLmxlbmd0aCArIChpbnRTaXplIC0gKGJ1Zi5sZW5ndGggJSBpbnRTaXplKSk7XG4gICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB6ZXJvQnVmZmVyXSwgbGVuKTtcbiAgfVxuXG4gIHZhciBhcnIgPSBbXTtcbiAgdmFyIGZuID0gYmlnRW5kaWFuID8gYnVmLnJlYWRJbnQzMkJFIDogYnVmLnJlYWRJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkgKz0gaW50U2l6ZSkge1xuICAgIGFyci5wdXNoKGZuLmNhbGwoYnVmLCBpKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIoYXJyLCBzaXplLCBiaWdFbmRpYW4pIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi53cml0ZUludDMyQkUgOiBidWYud3JpdGVJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGZuLmNhbGwoYnVmLCBhcnJbaV0sIGkgKiA0LCB0cnVlKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5mdW5jdGlvbiBoYXNoKGJ1ZiwgZm4sIGhhc2hTaXplLCBiaWdFbmRpYW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gbmV3IEJ1ZmZlcihidWYpO1xuICB2YXIgYXJyID0gZm4odG9BcnJheShidWYsIGJpZ0VuZGlhbiksIGJ1Zi5sZW5ndGggKiBjaHJzeik7XG4gIHJldHVybiB0b0J1ZmZlcihhcnIsIGhhc2hTaXplLCBiaWdFbmRpYW4pO1xufVxuZXhwb3J0cy5oYXNoID0gaGFzaDsiLCIndXNlIHN0cmljdCc7XG4vKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZVxuICogRGlnZXN0IEFsZ29yaXRobSwgYXMgZGVmaW5lZCBpbiBSRkMgMTMyMS5cbiAqIFZlcnNpb24gMi4xIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuXG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG4vKlxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aFxuICovXG5mdW5jdGlvbiBjb3JlX21kNSh4LCBsZW4pXG57XG4gIC8qIGFwcGVuZCBwYWRkaW5nICovXG4gIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgKChsZW4pICUgMzIpO1xuICB4WygoKGxlbiArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBsZW47XG5cbiAgdmFyIGEgPSAgMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9ICAyNzE3MzM4Nzg7XG5cbiAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KVxuICB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuXG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDBdLCA3ICwgLTY4MDg3NjkzNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDFdLCAxMiwgLTM4OTU2NDU4Nik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDJdLCAxNywgIDYwNjEwNTgxOSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDNdLCAyMiwgLTEwNDQ1MjUzMzApO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA0XSwgNyAsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA1XSwgMTIsICAxMjAwMDgwNDI2KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsgNl0sIDE3LCAtMTQ3MzIzMTM0MSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDddLCAyMiwgLTQ1NzA1OTgzKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgOF0sIDcgLCAgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTcsIC00MjA2Myk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTFdLCAyMiwgLTE5OTA0MDQxNjIpO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKzEyXSwgNyAsICAxODA0NjAzNjgyKTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsxM10sIDEyLCAtNDAzNDExMDEpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1X2ZmKGIsIGMsIGQsIGEsIHhbaSsxNV0sIDIyLCAgMTIzNjUzNTMyOSk7XG5cbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgMV0sIDUgLCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgNl0sIDkgLCAtMTA2OTUwMTYzMik7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTFdLCAxNCwgIDY0MzcxNzcxMyk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDBdLCAyMCwgLTM3Mzg5NzMwMik7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDVdLCA1ICwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTBdLCA5ICwgIDM4MDE2MDgzKTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDUgLCAgNTY4NDQ2NDM4KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsxNF0sIDkgLCAtMTAxOTgwMzY5MCk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krIDNdLCAxNCwgLTE4NzM2Mzk2MSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDhdLCAyMCwgIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKzEzXSwgNSAsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgMl0sIDkgLCAtNTE0MDM3ODQpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyA3XSwgMTQsICAxNzM1MzI4NDczKTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsxMl0sIDIwLCAtMTkyNjYwNzczNCk7XG5cbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgNV0sIDQgLCAtMzc4NTU4KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgOF0sIDExLCAtMjAyMjU3NDQ2Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTFdLCAxNiwgIDE4MzkwMzA1NjIpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDFdLCA0ICwgLTE1MzA5OTIwNjApO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyA0XSwgMTEsICAxMjcyODkzMzUzKTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE2LCAtMTU1NDk3NjMyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxMF0sIDIzLCAtMTA5NDczMDY0MCk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krMTNdLCA0ICwgIDY4MTI3OTE3NCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDBdLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDZdLCAyMywgIDc2MDI5MTg5KTtcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDQgLCAtNjQwMzY0NDg3KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsxMl0sIDExLCAtNDIxODE1ODM1KTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE2LCAgNTMwNzQyNTIwKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcblxuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyAwXSwgNiAsIC0xOTg2MzA4NDQpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyA3XSwgMTAsICAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDVdLCAyMSwgLTU3NDM0MDU1KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDYgLCAgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTUsIC0xMDUxNTIzKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDhdLCA2ICwgIDE4NzMzMTMzNTkpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKzE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKzEzXSwgMjEsICAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDYgLCAtMTQ1NTIzMDcwKTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDJdLCAxNSwgIDcxODc4NzI1OSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDldLCAyMSwgLTM0MzQ4NTU1MSk7XG5cbiAgICBhID0gc2FmZV9hZGQoYSwgb2xkYSk7XG4gICAgYiA9IHNhZmVfYWRkKGIsIG9sZGIpO1xuICAgIGMgPSBzYWZlX2FkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZV9hZGQoZCwgb2xkZCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5KGEsIGIsIGMsIGQpO1xuXG59XG5cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5mdW5jdGlvbiBtZDVfY21uKHEsIGEsIGIsIHgsIHMsIHQpXG57XG4gIHJldHVybiBzYWZlX2FkZChiaXRfcm9sKHNhZmVfYWRkKHNhZmVfYWRkKGEsIHEpLCBzYWZlX2FkZCh4LCB0KSksIHMpLGIpO1xufVxuZnVuY3Rpb24gbWQ1X2ZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9nZyhhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaGgoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9paShhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbihjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5mdW5jdGlvbiBzYWZlX2FkZCh4LCB5KVxue1xuICB2YXIgbHN3ID0gKHggJiAweEZGRkYpICsgKHkgJiAweEZGRkYpO1xuICB2YXIgbXN3ID0gKHggPj4gMTYpICsgKHkgPj4gMTYpICsgKGxzdyA+PiAxNik7XG4gIHJldHVybiAobXN3IDw8IDE2KSB8IChsc3cgJiAweEZGRkYpO1xufVxuXG4vKlxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxuICovXG5mdW5jdGlvbiBiaXRfcm9sKG51bSwgY250KVxue1xuICByZXR1cm4gKG51bSA8PCBjbnQpIHwgKG51bSA+Pj4gKDMyIC0gY250KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWQ1KGJ1Zikge1xuICByZXR1cm4gaGVscGVycy5oYXNoKGJ1ZiwgY29yZV9tZDUsIDE2KTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9icm93c2VyJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cblxudmFyIFpFUk9TID0gbmV3IEJ1ZmZlcigxMjgpXG5aRVJPUy5maWxsKDApXG5cbmZ1bmN0aW9uIEhtYWMoYWxnLCBrZXkpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gbmV3IEJ1ZmZlcihrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGNyZWF0ZUhhc2goYWxnKS51cGRhdGUoa2V5KS5kaWdlc3QoKVxuXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBuZXcgQnVmZmVyKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIFRyYW5zZm9ybSlcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhLCBlbmMpXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSG1hYy5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG5cbiAgbmV4dCgpXG59XG5cbkhtYWMucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChuZXh0KSB7XG4gIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuXG4gIHJldHVybiBjcmVhdGVIYXNoKHRoaXMuX2FsZykudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShoKS5kaWdlc3QoZW5jKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhtYWMoYWxnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoT2JqZWN0LmtleXMocmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduL2FsZ29zJykpKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG47W1xuICAnQ2lwaGVyJyxcbiAgJ2NyZWF0ZUNpcGhlcicsXG4gICdDaXBoZXJpdicsXG4gICdjcmVhdGVDaXBoZXJpdicsXG4gICdEZWNpcGhlcicsXG4gICdjcmVhdGVEZWNpcGhlcicsXG4gICdEZWNpcGhlcml2JyxcbiAgJ2NyZWF0ZURlY2lwaGVyaXYnLFxuICAnZ2V0Q2lwaGVycycsXG4gICdsaXN0Q2lwaGVycydcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGFlc1trZXldXG59KVxuXG52YXIgZGggPSByZXF1aXJlKCdkaWZmaWUtaGVsbG1hbicpXG47W1xuICAnRGlmZmllSGVsbG1hbkdyb3VwJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdnZXREaWZmaWVIZWxsbWFuJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW4nLFxuICAnRGlmZmllSGVsbG1hbidcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGRoW2tleV1cbn0pXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcbjtbXG4gICdjcmVhdGVTaWduJyxcbiAgJ1NpZ24nLFxuICAnY3JlYXRlVmVyaWZ5JyxcbiAgJ1ZlcmlmeSdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHNpZ25ba2V5XVxufSlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuO1tcbiAgJ3B1YmxpY0VuY3J5cHQnLFxuICAncHJpdmF0ZUVuY3J5cHQnLFxuICAncHVibGljRGVjcnlwdCcsXG4gICdwcml2YXRlRGVjcnlwdCdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHB1YmxpY0VuY3J5cHRba2V5XVxufSlcblxuLy8gdGhlIGxlYXN0IEkgY2FuIGRvIGlzIG1ha2UgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSByZXN0IG9mIHRoZSBub2RlLmpzL2NyeXB0byBhcGkuXG47W1xuICAnY3JlYXRlQ3JlZGVudGlhbHMnXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgZXhwb3J0c1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgJ3NvcnJ5LCAnICsgbmFtZSArICcgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgICAnd2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMnLFxuICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgICBdLmpvaW4oJ1xcbicpKVxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnV0aWxzID0gcmVxdWlyZSgnLi9kZXMvdXRpbHMnKTtcbmV4cG9ydHMuQ2lwaGVyID0gcmVxdWlyZSgnLi9kZXMvY2lwaGVyJyk7XG5leHBvcnRzLkRFUyA9IHJlcXVpcmUoJy4vZGVzL2RlcycpO1xuZXhwb3J0cy5DQkMgPSByZXF1aXJlKCcuL2Rlcy9jYmMnKTtcbmV4cG9ydHMuRURFID0gcmVxdWlyZSgnLi9kZXMvZWRlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgcHJvdG8gPSB7fTtcblxuZnVuY3Rpb24gQ0JDU3RhdGUoaXYpIHtcbiAgYXNzZXJ0LmVxdWFsKGl2Lmxlbmd0aCwgOCwgJ0ludmFsaWQgSVYgbGVuZ3RoJyk7XG5cbiAgdGhpcy5pdiA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml2Lmxlbmd0aDsgaSsrKVxuICAgIHRoaXMuaXZbaV0gPSBpdltpXTtcbn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUoQmFzZSkge1xuICBmdW5jdGlvbiBDQkMob3B0aW9ucykge1xuICAgIEJhc2UuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLl9jYmNJbml0KCk7XG4gIH1cbiAgaW5oZXJpdHMoQ0JDLCBCYXNlKTtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHByb3RvKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgQ0JDLnByb3RvdHlwZVtrZXldID0gcHJvdG9ba2V5XTtcbiAgfVxuXG4gIENCQy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQ0JDKG9wdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBDQkM7XG59XG5cbmV4cG9ydHMuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0ZTtcblxucHJvdG8uX2NiY0luaXQgPSBmdW5jdGlvbiBfY2JjSW5pdCgpIHtcbiAgdmFyIHN0YXRlID0gbmV3IENCQ1N0YXRlKHRoaXMub3B0aW9ucy5pdik7XG4gIHRoaXMuX2NiY1N0YXRlID0gc3RhdGU7XG59O1xuXG5wcm90by5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9jYmNTdGF0ZTtcbiAgdmFyIHN1cGVyUHJvdG8gPSB0aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGU7XG5cbiAgdmFyIGl2ID0gc3RhdGUuaXY7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldIF49IGlucFtpbk9mZiArIGldO1xuXG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaXYsIDAsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gb3V0W291dE9mZiArIGldO1xuICB9IGVsc2Uge1xuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIG91dFtvdXRPZmYgKyBpXSBePSBpdltpXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gaW5wW2luT2ZmICsgaV07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIENpcGhlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgdGhpcy50eXBlID0gdGhpcy5vcHRpb25zLnR5cGU7XG4gIHRoaXMuYmxvY2tTaXplID0gODtcbiAgdGhpcy5faW5pdCgpO1xuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXI7XG5cbkNpcGhlci5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBfaW5pdCgpIHtcbiAgLy8gTWlnaHQgYmUgb3ZlcnJpZGVkXG59O1xuXG5DaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShkYXRhKSB7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY3J5cHQnKVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVEZWNyeXB0KGRhdGEpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUVuY3J5cHQoZGF0YSk7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9idWZmZXIgPSBmdW5jdGlvbiBfYnVmZmVyKGRhdGEsIG9mZikge1xuICAvLyBBcHBlbmQgZGF0YSB0byBidWZmZXJcbiAgdmFyIG1pbiA9IE1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aCAtIHRoaXMuYnVmZmVyT2ZmLCBkYXRhLmxlbmd0aCAtIG9mZik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYgKyBpXSA9IGRhdGFbb2ZmICsgaV07XG4gIHRoaXMuYnVmZmVyT2ZmICs9IG1pbjtcblxuICAvLyBTaGlmdCBuZXh0XG4gIHJldHVybiBtaW47XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9mbHVzaEJ1ZmZlciA9IGZ1bmN0aW9uIF9mbHVzaEJ1ZmZlcihvdXQsIG9mZikge1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgb2ZmKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xuICByZXR1cm4gdGhpcy5ibG9ja1NpemU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZUVuY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSAoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIHwgMDtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICBpZiAodGhpcy5idWZmZXJPZmYgIT09IDApIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gICAgaWYgKHRoaXMuYnVmZmVyT2ZmID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gV3JpdGUgYmxvY2tzXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCAtICgoZGF0YS5sZW5ndGggLSBpbnB1dE9mZikgJSB0aGlzLmJsb2NrU2l6ZSk7XG4gIGZvciAoOyBpbnB1dE9mZiA8IG1heDsgaW5wdXRPZmYgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICB0aGlzLl91cGRhdGUoZGF0YSwgaW5wdXRPZmYsIG91dCwgb3V0cHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5ibG9ja1NpemU7XG4gIH1cblxuICAvLyBRdWV1ZSByZXN0XG4gIGZvciAoOyBpbnB1dE9mZiA8IGRhdGEubGVuZ3RoOyBpbnB1dE9mZisrLCB0aGlzLmJ1ZmZlck9mZisrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXSA9IGRhdGFbaW5wdXRPZmZdO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZURlY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSBNYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIC0gMTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBUT0RPKGluZHV0bnkpOiBvcHRpbWl6ZSBpdCwgdGhpcyBpcyBmYXIgZnJvbSBvcHRpbWFsXG4gIGZvciAoOyBjb3VudCA+IDA7IGNvdW50LS0pIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBCdWZmZXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIGZpbmFsKGJ1ZmZlcikge1xuICB2YXIgZmlyc3Q7XG4gIGlmIChidWZmZXIpXG4gICAgZmlyc3QgPSB0aGlzLnVwZGF0ZShidWZmZXIpO1xuXG4gIHZhciBsYXN0O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRW5jcnlwdCgpO1xuICBlbHNlXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRGVjcnlwdCgpO1xuXG4gIGlmIChmaXJzdClcbiAgICByZXR1cm4gZmlyc3QuY29uY2F0KGxhc3QpO1xuICBlbHNlXG4gICAgcmV0dXJuIGxhc3Q7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIGlmIChvZmYgPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHdoaWxlIChvZmYgPCBidWZmZXIubGVuZ3RoKVxuICAgIGJ1ZmZlcltvZmYrK10gPSAwO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRW5jcnlwdCgpIHtcbiAgaWYgKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsIHRoaXMuYnVmZmVyT2ZmKSlcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCAwKTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRGVjcnlwdCgpIHtcbiAgYXNzZXJ0LmVxdWFsKHRoaXMuYnVmZmVyT2ZmLCB0aGlzLmJsb2NrU2l6ZSwgJ05vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Jyk7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIDApO1xuXG4gIHJldHVybiB0aGlzLl91bnBhZChvdXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciB1dGlscyA9IGRlcy51dGlscztcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xuXG5mdW5jdGlvbiBERVNTdGF0ZSgpIHtcbiAgdGhpcy50bXAgPSBuZXcgQXJyYXkoMik7XG4gIHRoaXMua2V5cyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIERFUyhvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBERVNTdGF0ZSgpO1xuICB0aGlzLl9kZXNTdGF0ZSA9IHN0YXRlO1xuXG4gIHRoaXMuZGVyaXZlS2V5cyhzdGF0ZSwgb3B0aW9ucy5rZXkpO1xufVxuaW5oZXJpdHMoREVTLCBDaXBoZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBERVM7XG5cbkRFUy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IERFUyhvcHRpb25zKTtcbn07XG5cbnZhciBzaGlmdFRhYmxlID0gW1xuICAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLFxuICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxXG5dO1xuXG5ERVMucHJvdG90eXBlLmRlcml2ZUtleXMgPSBmdW5jdGlvbiBkZXJpdmVLZXlzKHN0YXRlLCBrZXkpIHtcbiAgc3RhdGUua2V5cyA9IG5ldyBBcnJheSgxNiAqIDIpO1xuXG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCB0aGlzLmJsb2NrU2l6ZSwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrTCA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDApO1xuICB2YXIga1IgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCA0KTtcblxuICB1dGlscy5wYzEoa0wsIGtSLCBzdGF0ZS50bXAsIDApO1xuICBrTCA9IHN0YXRlLnRtcFswXTtcbiAga1IgPSBzdGF0ZS50bXBbMV07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBzaGlmdCA9IHNoaWZ0VGFibGVbaSA+Pj4gMV07XG4gICAga0wgPSB1dGlscy5yMjhzaGwoa0wsIHNoaWZ0KTtcbiAgICBrUiA9IHV0aWxzLnIyOHNobChrUiwgc2hpZnQpO1xuICAgIHV0aWxzLnBjMihrTCwga1IsIHN0YXRlLmtleXMsIGkpO1xuICB9XG59O1xuXG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Rlc1N0YXRlO1xuXG4gIHZhciBsID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYpO1xuICB2YXIgciA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmICsgNCk7XG5cbiAgLy8gSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5pcChsLCByLCBzdGF0ZS50bXAsIDApO1xuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICB0aGlzLl9lbmNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuICBlbHNlXG4gICAgdGhpcy5fZGVjcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcblxuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCBsLCBvdXRPZmYpO1xuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgciwgb3V0T2ZmICsgNCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIHZhciB2YWx1ZSA9IGJ1ZmZlci5sZW5ndGggLSBvZmY7XG4gIGZvciAodmFyIGkgPSBvZmY7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYnVmZmVyW2ldID0gdmFsdWU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5ERVMucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgdmFyIHBhZCA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gIGZvciAodmFyIGkgPSBidWZmZXIubGVuZ3RoIC0gcGFkOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGFzc2VydC5lcXVhbChidWZmZXJbaV0sIHBhZCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgwLCBidWZmZXIubGVuZ3RoIC0gcGFkKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2VuY3J5cHQgPSBmdW5jdGlvbiBfZW5jcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gbFN0YXJ0O1xuICB2YXIgciA9IHJTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChyLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gcjtcbiAgICByID0gKGwgXiBmKSA+Pj4gMDtcbiAgICBsID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAociwgbCwgb3V0LCBvZmYpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZGVjcnlwdCA9IGZ1bmN0aW9uIF9kZWNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSByU3RhcnQ7XG4gIHZhciByID0gbFN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IHN0YXRlLmtleXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQobCwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IGw7XG4gICAgbCA9IChyIF4gZikgPj4+IDA7XG4gICAgciA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKGwsIHIsIG91dCwgb2ZmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcbnZhciBERVMgPSBkZXMuREVTO1xuXG5mdW5jdGlvbiBFREVTdGF0ZSh0eXBlLCBrZXkpIHtcbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIDI0LCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGsxID0ga2V5LnNsaWNlKDAsIDgpO1xuICB2YXIgazIgPSBrZXkuc2xpY2UoOCwgMTYpO1xuICB2YXIgazMgPSBrZXkuc2xpY2UoMTYsIDI0KTtcblxuICBpZiAodHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMSB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGszIH0pXG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGszIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazEgfSlcbiAgICBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIEVERShvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBFREVTdGF0ZSh0aGlzLnR5cGUsIHRoaXMub3B0aW9ucy5rZXkpO1xuICB0aGlzLl9lZGVTdGF0ZSA9IHN0YXRlO1xufVxuaW5oZXJpdHMoRURFLCBDaXBoZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVERTtcblxuRURFLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRURFKG9wdGlvbnMpO1xufTtcblxuRURFLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9lZGVTdGF0ZTtcblxuICBzdGF0ZS5jaXBoZXJzWzBdLl91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzFdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1syXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG59O1xuXG5FREUucHJvdG90eXBlLl9wYWQgPSBERVMucHJvdG90eXBlLl9wYWQ7XG5FREUucHJvdG90eXBlLl91bnBhZCA9IERFUy5wcm90b3R5cGUuX3VucGFkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRShieXRlcywgb2ZmKSB7XG4gIHZhciByZXMgPSAgKGJ5dGVzWzAgKyBvZmZdIDw8IDI0KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzEgKyBvZmZdIDw8IDE2KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzIgKyBvZmZdIDw8IDgpIHxcbiAgICAgICAgICAgICBieXRlc1szICsgb2ZmXTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn07XG5cbmV4cG9ydHMud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUoYnl0ZXMsIHZhbHVlLCBvZmYpIHtcbiAgYnl0ZXNbMCArIG9mZl0gPSB2YWx1ZSA+Pj4gMjQ7XG4gIGJ5dGVzWzEgKyBvZmZdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICBieXRlc1syICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICBieXRlc1szICsgb2ZmXSA9IHZhbHVlICYgMHhmZjtcbn07XG5cbmV4cG9ydHMuaXAgPSBmdW5jdGlvbiBpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucmlwID0gZnVuY3Rpb24gcmlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaSA9IDQ7IGkgPCA4OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGMxID0gZnVuY3Rpb24gcGMxKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICAvLyA3LCAxNSwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA2LCAxNCwgMjIsIDMwLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA1LCAxMywgMjEsIDI5LCAzOSwgNDcsIDU1LCA2M1xuICAvLyA0LCAxMiwgMjAsIDI4XG4gIGZvciAodmFyIGkgPSA3OyBpID49IDU7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIC8vIDEsIDksIDE3LCAyNSwgMzMsIDQxLCA0OSwgNTdcbiAgLy8gMiwgMTAsIDE4LCAyNiwgMzQsIDQyLCA1MCwgNThcbiAgLy8gMywgMTEsIDE5LCAyNywgMzUsIDQzLCA1MSwgNTlcbiAgLy8gMzYsIDQ0LCA1MiwgNjBcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucjI4c2hsID0gZnVuY3Rpb24gcjI4c2hsKG51bSwgc2hpZnQpIHtcbiAgcmV0dXJuICgobnVtIDw8IHNoaWZ0KSAmIDB4ZmZmZmZmZikgfCAobnVtID4+PiAoMjggLSBzaGlmdCkpO1xufTtcblxudmFyIHBjMnRhYmxlID0gW1xuICAvLyBpbkwgPT4gb3V0TFxuICAxNCwgMTEsIDE3LCA0LCAyNywgMjMsIDI1LCAwLFxuICAxMywgMjIsIDcsIDE4LCA1LCA5LCAxNiwgMjQsXG4gIDIsIDIwLCAxMiwgMjEsIDEsIDgsIDE1LCAyNixcblxuICAvLyBpblIgPT4gb3V0UlxuICAxNSwgNCwgMjUsIDE5LCA5LCAxLCAyNiwgMTYsXG4gIDUsIDExLCAyMywgOCwgMTIsIDcsIDE3LCAwLFxuICAyMiwgMywgMTAsIDE0LCA2LCAyMCwgMjcsIDI0XG5dO1xuXG5leHBvcnRzLnBjMiA9IGZ1bmN0aW9uIHBjMihpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgdmFyIGxlbiA9IHBjMnRhYmxlLmxlbmd0aCA+Pj4gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5MID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IHBjMnRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpblIgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChyLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBvdXRMID0gKChyICYgMSkgPDwgNSkgfCAociA+Pj4gMjcpO1xuICBmb3IgKHZhciBpID0gMjM7IGkgPj0gMTU7IGkgLT0gNCkge1xuICAgIG91dEwgPDw9IDY7XG4gICAgb3V0TCB8PSAociA+Pj4gaSkgJiAweDNmO1xuICB9XG4gIGZvciAodmFyIGkgPSAxMTsgaSA+PSAzOyBpIC09IDQpIHtcbiAgICBvdXRSIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gICAgb3V0UiA8PD0gNjtcbiAgfVxuICBvdXRSIHw9ICgociAmIDB4MWYpIDw8IDEpIHwgKHIgPj4+IDMxKTtcblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxudmFyIHNUYWJsZSA9IFtcbiAgMTQsIDAsIDQsIDE1LCAxMywgNywgMSwgNCwgMiwgMTQsIDE1LCAyLCAxMSwgMTMsIDgsIDEsXG4gIDMsIDEwLCAxMCwgNiwgNiwgMTIsIDEyLCAxMSwgNSwgOSwgOSwgNSwgMCwgMywgNywgOCxcbiAgNCwgMTUsIDEsIDEyLCAxNCwgOCwgOCwgMiwgMTMsIDQsIDYsIDksIDIsIDEsIDExLCA3LFxuICAxNSwgNSwgMTIsIDExLCA5LCAzLCA3LCAxNCwgMywgMTAsIDEwLCAwLCA1LCA2LCAwLCAxMyxcblxuICAxNSwgMywgMSwgMTMsIDgsIDQsIDE0LCA3LCA2LCAxNSwgMTEsIDIsIDMsIDgsIDQsIDE0LFxuICA5LCAxMiwgNywgMCwgMiwgMSwgMTMsIDEwLCAxMiwgNiwgMCwgOSwgNSwgMTEsIDEwLCA1LFxuICAwLCAxMywgMTQsIDgsIDcsIDEwLCAxMSwgMSwgMTAsIDMsIDQsIDE1LCAxMywgNCwgMSwgMixcbiAgNSwgMTEsIDgsIDYsIDEyLCA3LCA2LCAxMiwgOSwgMCwgMywgNSwgMiwgMTQsIDE1LCA5LFxuXG4gIDEwLCAxMywgMCwgNywgOSwgMCwgMTQsIDksIDYsIDMsIDMsIDQsIDE1LCA2LCA1LCAxMCxcbiAgMSwgMiwgMTMsIDgsIDEyLCA1LCA3LCAxNCwgMTEsIDEyLCA0LCAxMSwgMiwgMTUsIDgsIDEsXG4gIDEzLCAxLCA2LCAxMCwgNCwgMTMsIDksIDAsIDgsIDYsIDE1LCA5LCAzLCA4LCAwLCA3LFxuICAxMSwgNCwgMSwgMTUsIDIsIDE0LCAxMiwgMywgNSwgMTEsIDEwLCA1LCAxNCwgMiwgNywgMTIsXG5cbiAgNywgMTMsIDEzLCA4LCAxNCwgMTEsIDMsIDUsIDAsIDYsIDYsIDE1LCA5LCAwLCAxMCwgMyxcbiAgMSwgNCwgMiwgNywgOCwgMiwgNSwgMTIsIDExLCAxLCAxMiwgMTAsIDQsIDE0LCAxNSwgOSxcbiAgMTAsIDMsIDYsIDE1LCA5LCAwLCAwLCA2LCAxMiwgMTAsIDExLCAxLCA3LCAxMywgMTMsIDgsXG4gIDE1LCA5LCAxLCA0LCAzLCA1LCAxNCwgMTEsIDUsIDEyLCAyLCA3LCA4LCAyLCA0LCAxNCxcblxuICAyLCAxNCwgMTIsIDExLCA0LCAyLCAxLCAxMiwgNywgNCwgMTAsIDcsIDExLCAxMywgNiwgMSxcbiAgOCwgNSwgNSwgMCwgMywgMTUsIDE1LCAxMCwgMTMsIDMsIDAsIDksIDE0LCA4LCA5LCA2LFxuICA0LCAxMSwgMiwgOCwgMSwgMTIsIDExLCA3LCAxMCwgMSwgMTMsIDE0LCA3LCAyLCA4LCAxMyxcbiAgMTUsIDYsIDksIDE1LCAxMiwgMCwgNSwgOSwgNiwgMTAsIDMsIDQsIDAsIDUsIDE0LCAzLFxuXG4gIDEyLCAxMCwgMSwgMTUsIDEwLCA0LCAxNSwgMiwgOSwgNywgMiwgMTIsIDYsIDksIDgsIDUsXG4gIDAsIDYsIDEzLCAxLCAzLCAxMywgNCwgMTQsIDE0LCAwLCA3LCAxMSwgNSwgMywgMTEsIDgsXG4gIDksIDQsIDE0LCAzLCAxNSwgMiwgNSwgMTIsIDIsIDksIDgsIDUsIDEyLCAxNSwgMywgMTAsXG4gIDcsIDExLCAwLCAxNCwgNCwgMSwgMTAsIDcsIDEsIDYsIDEzLCAwLCAxMSwgOCwgNiwgMTMsXG5cbiAgNCwgMTMsIDExLCAwLCAyLCAxMSwgMTQsIDcsIDE1LCA0LCAwLCA5LCA4LCAxLCAxMywgMTAsXG4gIDMsIDE0LCAxMiwgMywgOSwgNSwgNywgMTIsIDUsIDIsIDEwLCAxNSwgNiwgOCwgMSwgNixcbiAgMSwgNiwgNCwgMTEsIDExLCAxMywgMTMsIDgsIDEyLCAxLCAzLCA0LCA3LCAxMCwgMTQsIDcsXG4gIDEwLCA5LCAxNSwgNSwgNiwgMCwgOCwgMTUsIDAsIDE0LCA1LCAyLCA5LCAzLCAyLCAxMixcblxuICAxMywgMSwgMiwgMTUsIDgsIDEzLCA0LCA4LCA2LCAxMCwgMTUsIDMsIDExLCA3LCAxLCA0LFxuICAxMCwgMTIsIDksIDUsIDMsIDYsIDE0LCAxMSwgNSwgMCwgMCwgMTQsIDEyLCA5LCA3LCAyLFxuICA3LCAyLCAxMSwgMSwgNCwgMTQsIDEsIDcsIDksIDQsIDEyLCAxMCwgMTQsIDgsIDIsIDEzLFxuICAwLCAxNSwgNiwgMTIsIDEwLCA5LCAxMywgMCwgMTUsIDMsIDMsIDUsIDUsIDYsIDgsIDExXG5dO1xuXG5leHBvcnRzLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGluTCwgaW5SKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluTCA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlW2kgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5SID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbNCAqIDB4NDAgKyBpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxudmFyIHBlcm11dGVUYWJsZSA9IFtcbiAgMTYsIDI1LCAxMiwgMTEsIDMsIDIwLCA0LCAxNSwgMzEsIDE3LCA5LCA2LCAyNywgMTQsIDEsIDIyLFxuICAzMCwgMjQsIDgsIDE4LCAwLCA1LCAyOSwgMjMsIDEzLCAxOSwgMiwgMjYsIDEwLCAyMSwgMjgsIDdcbl07XG5cbmV4cG9ydHMucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUobnVtKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBlcm11dGVUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dCA8PD0gMTtcbiAgICBvdXQgfD0gKG51bSA+Pj4gcGVybXV0ZVRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYWRTcGxpdCA9IGZ1bmN0aW9uIHBhZFNwbGl0KG51bSwgc2l6ZSwgZ3JvdXApIHtcbiAgdmFyIHN0ciA9IG51bS50b1N0cmluZygyKTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBzaXplKVxuICAgIHN0ciA9ICcwJyArIHN0cjtcblxuICB2YXIgb3V0ID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBncm91cClcbiAgICBvdXQucHVzaChzdHIuc2xpY2UoaSwgaSArIGdyb3VwKSk7XG4gIHJldHVybiBvdXQuam9pbignICcpO1xufTtcbiIsInZhciBnZW5lcmF0ZVByaW1lID0gcmVxdWlyZSgnLi9saWIvZ2VuZXJhdGVQcmltZScpXG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9saWIvcHJpbWVzLmpzb24nKVxuXG52YXIgREggPSByZXF1aXJlKCcuL2xpYi9kaCcpXG5cbmZ1bmN0aW9uIGdldERpZmZpZUhlbGxtYW4gKG1vZCkge1xuICB2YXIgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLnByaW1lLCAnaGV4JylcbiAgdmFyIGdlbiA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0uZ2VuLCAnaGV4JylcblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW4pXG59XG5cbnZhciBFTkNPRElOR1MgPSB7XG4gICdiaW5hcnknOiB0cnVlLCAnaGV4JzogdHJ1ZSwgJ2Jhc2U2NCc6IHRydWVcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlmZmllSGVsbG1hbiAocHJpbWUsIGVuYywgZ2VuZXJhdG9yLCBnZW5jKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoZW5jKSB8fCBFTkNPRElOR1NbZW5jXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZURpZmZpZUhlbGxtYW4ocHJpbWUsICdiaW5hcnknLCBlbmMsIGdlbmVyYXRvcilcbiAgfVxuXG4gIGVuYyA9IGVuYyB8fCAnYmluYXJ5J1xuICBnZW5jID0gZ2VuYyB8fCAnYmluYXJ5J1xuICBnZW5lcmF0b3IgPSBnZW5lcmF0b3IgfHwgbmV3IEJ1ZmZlcihbMl0pXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuZXJhdG9yKSkge1xuICAgIGdlbmVyYXRvciA9IG5ldyBCdWZmZXIoZ2VuZXJhdG9yLCBnZW5jKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmltZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV3IERIKGdlbmVyYXRlUHJpbWUocHJpbWUsIGdlbmVyYXRvciksIGdlbmVyYXRvciwgdHJ1ZSlcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaW1lKSkge1xuICAgIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZSwgZW5jKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuZXJhdG9yLCB0cnVlKVxufVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5nZXREaWZmaWVIZWxsbWFuID0gZ2V0RGlmZmllSGVsbG1hblxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuID0gZXhwb3J0cy5EaWZmaWVIZWxsbWFuID0gY3JlYXRlRGlmZmllSGVsbG1hblxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vZ2VuZXJhdGVQcmltZScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gREg7XG5cbmZ1bmN0aW9uIHNldFB1YmxpY0tleShwdWIsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHViID0gbmV3IEJOKHB1Yik7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzZXRQcml2YXRlS2V5KHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuICAgIHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHJpdiA9IG5ldyBCTihwcml2KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbnZhciBwcmltZUNhY2hlID0ge307XG5mdW5jdGlvbiBjaGVja1ByaW1lKHByaW1lLCBnZW5lcmF0b3IpIHtcbiAgdmFyIGdlbiA9IGdlbmVyYXRvci50b1N0cmluZygnaGV4Jyk7XG4gIHZhciBoZXggPSBbZ2VuLCBwcmltZS50b1N0cmluZygxNildLmpvaW4oJ18nKTtcbiAgaWYgKGhleCBpbiBwcmltZUNhY2hlKSB7XG4gICAgcmV0dXJuIHByaW1lQ2FjaGVbaGV4XTtcbiAgfVxuICB2YXIgZXJyb3IgPSAwO1xuXG4gIGlmIChwcmltZS5pc0V2ZW4oKSB8fFxuICAgICFwcmltZXMuc2ltcGxlU2lldmUgfHxcbiAgICAhcHJpbWVzLmZlcm1hdFRlc3QocHJpbWUpIHx8XG4gICAgIW1pbGxlclJhYmluLnRlc3QocHJpbWUpKSB7XG4gICAgLy9ub3QgYSBwcmltZSBzbyArMVxuICAgIGVycm9yICs9IDE7XG5cbiAgICBpZiAoZ2VuID09PSAnMDInIHx8IGdlbiA9PT0gJzA1Jykge1xuICAgICAgLy8gd2UnZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIGl0IHdvdWxkIGZhaWwgc28gKzhcbiAgICAgIGVycm9yICs9IDg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vd2Ugd291bGRuJ3QgYmUgYWJsZSB0byB0ZXN0IHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIHNvICs0XG4gICAgICBlcnJvciArPSA0O1xuICAgIH1cbiAgICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgaWYgKCFtaWxsZXJSYWJpbi50ZXN0KHByaW1lLnNocm4oMSkpKSB7XG4gICAgLy9ub3QgYSBzYWZlIHByaW1lXG4gICAgZXJyb3IgKz0gMjtcbiAgfVxuICB2YXIgcmVtO1xuICBzd2l0Y2ggKGdlbikge1xuICAgIGNhc2UgJzAyJzpcbiAgICAgIGlmIChwcmltZS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgLy8gdW5zdWlkYWJsZSBnZW5lcmF0b3JcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzA1JzpcbiAgICAgIHJlbSA9IHByaW1lLm1vZChURU4pO1xuICAgICAgaWYgKHJlbS5jbXAoVEhSRUUpICYmIHJlbS5jbXAoU0VWRU4pKSB7XG4gICAgICAgIC8vIHByaW1lIG1vZCAxMCBuZWVkcyB0byBlcXVhbCAzIG9yIDdcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBlcnJvciArPSA0O1xuICB9XG4gIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIERIKHByaW1lLCBnZW5lcmF0b3IsIG1hbGxlYWJsZSkge1xuICB0aGlzLnNldEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB0aGlzLl9fcHJpbWUgPSBuZXcgQk4ocHJpbWUpO1xuICB0aGlzLl9wcmltZSA9IEJOLm1vbnQodGhpcy5fX3ByaW1lKTtcbiAgdGhpcy5fcHJpbWVMZW4gPSBwcmltZS5sZW5ndGg7XG4gIHRoaXMuX3B1YiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpdiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpbWVDb2RlID0gdW5kZWZpbmVkO1xuICBpZiAobWFsbGVhYmxlKSB7XG4gICAgdGhpcy5zZXRQdWJsaWNLZXkgPSBzZXRQdWJsaWNLZXk7XG4gICAgdGhpcy5zZXRQcml2YXRlS2V5ID0gc2V0UHJpdmF0ZUtleTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9wcmltZUNvZGUgPSA4O1xuICB9XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoREgucHJvdG90eXBlLCAndmVyaWZ5RXJyb3InLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fcHJpbWVDb2RlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fcHJpbWVDb2RlID0gY2hlY2tQcmltZSh0aGlzLl9fcHJpbWUsIHRoaXMuX19nZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJpbWVDb2RlO1xuICB9XG59KTtcbkRILnByb3RvdHlwZS5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5fcHJpdikge1xuICAgIHRoaXMuX3ByaXYgPSBuZXcgQk4ocmFuZG9tQnl0ZXModGhpcy5fcHJpbWVMZW4pKTtcbiAgfVxuICB0aGlzLl9wdWIgPSB0aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleSgpO1xufTtcblxuREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgb3RoZXIgPSBuZXcgQk4ob3RoZXIpO1xuICBvdGhlciA9IG90aGVyLnRvUmVkKHRoaXMuX3ByaW1lKTtcbiAgdmFyIHNlY3JldCA9IG90aGVyLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNlY3JldC50b0FycmF5KCkpO1xuICB2YXIgcHJpbWUgPSB0aGlzLmdldFByaW1lKCk7XG4gIGlmIChvdXQubGVuZ3RoIDwgcHJpbWUubGVuZ3RoKSB7XG4gICAgdmFyIGZyb250ID0gbmV3IEJ1ZmZlcihwcmltZS5sZW5ndGggLSBvdXQubGVuZ3RoKTtcbiAgICBmcm9udC5maWxsKDApO1xuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW2Zyb250LCBvdXRdKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuREgucHJvdG90eXBlLmdldFB1YmxpY0tleSA9IGZ1bmN0aW9uIGdldFB1YmxpY0tleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3B1YiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3ByaXYsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpbWUgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9fcHJpbWUsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fZ2VuLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLnNldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChnZW4sIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW4pKSB7XG4gICAgZ2VuID0gbmV3IEJ1ZmZlcihnZW4sIGVuYyk7XG4gIH1cbiAgdGhpcy5fX2dlbiA9IGdlbjtcbiAgdGhpcy5fZ2VuID0gbmV3IEJOKGdlbik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYykge1xuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibi50b0FycmF5KCkpO1xuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuICB9XG59XG4iLCJ2YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kUHJpbWU7XG5maW5kUHJpbWUuc2ltcGxlU2lldmUgPSBzaW1wbGVTaWV2ZTtcbmZpbmRQcmltZS5mZXJtYXRUZXN0ID0gZmVybWF0VGVzdDtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIE9ORSA9IG5ldyBCTigxKTtcbnZhciBUV08gPSBuZXcgQk4oMik7XG52YXIgRklWRSA9IG5ldyBCTig1KTtcbnZhciBTSVhURUVOID0gbmV3IEJOKDE2KTtcbnZhciBFSUdIVCA9IG5ldyBCTig4KTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgRk9VUiA9IG5ldyBCTig0KTtcbnZhciBUV0VMVkUgPSBuZXcgQk4oMTIpO1xudmFyIHByaW1lcyA9IG51bGw7XG5cbmZ1bmN0aW9uIF9nZXRQcmltZXMoKSB7XG4gIGlmIChwcmltZXMgIT09IG51bGwpXG4gICAgcmV0dXJuIHByaW1lcztcblxuICB2YXIgbGltaXQgPSAweDEwMDAwMDtcbiAgdmFyIHJlcyA9IFtdO1xuICByZXNbMF0gPSAyO1xuICBmb3IgKHZhciBpID0gMSwgayA9IDM7IGsgPCBsaW1pdDsgayArPSAyKSB7XG4gICAgdmFyIHNxcnQgPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KGspKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGkgJiYgcmVzW2pdIDw9IHNxcnQ7IGorKylcbiAgICAgIGlmIChrICUgcmVzW2pdID09PSAwKVxuICAgICAgICBicmVhaztcblxuICAgIGlmIChpICE9PSBqICYmIHJlc1tqXSA8PSBzcXJ0KVxuICAgICAgY29udGludWU7XG5cbiAgICByZXNbaSsrXSA9IGs7XG4gIH1cbiAgcHJpbWVzID0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVTaWV2ZShwKSB7XG4gIHZhciBwcmltZXMgPSBfZ2V0UHJpbWVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmltZXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHAubW9kbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICBpZiAocC5jbXBuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmZXJtYXRUZXN0KHApIHtcbiAgdmFyIHJlZCA9IEJOLm1vbnQocCk7XG4gIHJldHVybiBUV08udG9SZWQocmVkKS5yZWRQb3cocC5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZmluZFByaW1lKGJpdHMsIGdlbikge1xuICBpZiAoYml0cyA8IDE2KSB7XG4gICAgLy8gdGhpcyBpcyB3aGF0IG9wZW5zc2wgZG9lc1xuICAgIGlmIChnZW4gPT09IDIgfHwgZ2VuID09PSA1KSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDdiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4MjddKTtcbiAgICB9XG4gIH1cbiAgZ2VuID0gbmV3IEJOKGdlbik7XG5cbiAgdmFyIG51bSwgbjI7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBudW0gPSBuZXcgQk4ocmFuZG9tQnl0ZXMoTWF0aC5jZWlsKGJpdHMgLyA4KSkpO1xuICAgIHdoaWxlIChudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7XG4gICAgICBudW0uaXNocm4oMSk7XG4gICAgfVxuICAgIGlmIChudW0uaXNFdmVuKCkpIHtcbiAgICAgIG51bS5pYWRkKE9ORSk7XG4gICAgfVxuICAgIGlmICghbnVtLnRlc3RuKDEpKSB7XG4gICAgICBudW0uaWFkZChUV08pO1xuICAgIH1cbiAgICBpZiAoIWdlbi5jbXAoVFdPKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ2VuLmNtcChGSVZFKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVEVOKS5jbXAoVEhSRUUpKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH1cbiAgICBuMiA9IG51bS5zaHJuKDEpO1xuICAgIGlmIChzaW1wbGVTaWV2ZShuMikgJiYgc2ltcGxlU2lldmUobnVtKSAmJlxuICAgICAgZmVybWF0VGVzdChuMikgJiYgZmVybWF0VGVzdChudW0pICYmXG4gICAgICBtaWxsZXJSYWJpbi50ZXN0KG4yKSAmJiBtaWxsZXJSYWJpbi50ZXN0KG51bSkpIHtcbiAgICAgIHJldHVybiBudW07XG4gICAgfVxuICB9XG5cbn1cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgICBcIm1vZHAxXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDJcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTRcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNlwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5OWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTdcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMThcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfVxufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5obWFjRFJCRyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvaG1hYy1kcmJnJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxKTtcbiAgdmFyIEkgPSAoMSA8PCAoZG91Ymxlcy5zdGVwICsgMSkpIC0gKGRvdWJsZXMuc3RlcCAlIDIgPT09IDAgPyAyIDogMSk7XG4gIEkgLz0gMztcblxuICAvLyBUcmFuc2xhdGUgaW50byBtb3JlIHdpbmRvd2VkIGZvcm1cbiAgdmFyIHJlcHIgPSBbXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIHZhciBuYWZXID0gMDtcbiAgICBmb3IgKHZhciBrID0gaiArIGRvdWJsZXMuc3RlcCAtIDE7IGsgPj0gajsgay0tKVxuICAgICAgbmFmVyA9IChuYWZXIDw8IDEpICsgbmFmW2tdO1xuICAgIHJlcHIucHVzaChuYWZXKTtcbiAgfVxuXG4gIHZhciBhID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciBiID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBJOyBpID4gMDsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3KTtcblxuICAvLyBBZGQgYHRoaXNgKihOKzEpIGZvciBldmVyeSB3LU5BRiBpbmRleFxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBuYWYubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyBDb3VudCB6ZXJvZXNcbiAgICBmb3IgKHZhciBrID0gMDsgaSA+PSAwICYmIG5hZltpXSA9PT0gMDsgaS0tKVxuICAgICAgaysrO1xuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG5cbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcbiAgICB2YXIgeiA9IG5hZltpXTtcbiAgICBhc3NlcnQoeiAhPT0gMCk7XG4gICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpIHtcbiAgICAgIC8vIEogKy0gUFxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSiArLSBKXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwLnR5cGUgPT09ICdhZmZpbmUnID8gYWNjLnRvUCgpIDogYWNjO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bEFkZCA9IGZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0pO1xuICAgICAgbmFmW2JdID0gZ2V0TkFGKGNvZWZmc1tiXSwgd25kV2lkdGhbYl0pO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdIC8qIDcgKi9cbiAgICBdO1xuXG4gICAgLy8gVHJ5IHRvIGF2b2lkIFByb2plY3RpdmUgcG9pbnRzLCBpZiBwb3NzaWJsZVxuICAgIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55LnJlZE5lZygpKSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IFtcbiAgICAgIC0zLCAvKiAtMSAtMSAqL1xuICAgICAgLTEsIC8qIC0xIDAgKi9cbiAgICAgIC01LCAvKiAtMSAxICovXG4gICAgICAtNywgLyogMCAtMSAqL1xuICAgICAgMCwgLyogMCAwICovXG4gICAgICA3LCAvKiAwIDEgKi9cbiAgICAgIDUsIC8qIDEgLTEgKi9cbiAgICAgIDEsIC8qIDEgMCAqL1xuICAgICAgMyAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXg7IGorKykge1xuICAgICAgdmFyIGphID0ganNmWzBdW2pdIHwgMDtcbiAgICAgIHZhciBqYiA9IGpzZlsxXVtqXSB8IDA7XG5cbiAgICAgIG5hZlthXVtqXSA9IGluZGV4WyhqYSArIDEpICogMyArIChqYiArIDEpXTtcbiAgICAgIG5hZltiXVtqXSA9IDA7XG4gICAgICB3bmRbYV0gPSBjb21iO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIHRtcCA9IHRoaXMuX3duYWZUNDtcbiAgZm9yICh2YXIgaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIHZhciB6ID0gdG1wW2pdO1xuICAgICAgdmFyIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSkgO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91Ymxlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzID0gZnVuY3Rpb24gX2dldE5BRlBvaW50cyh3bmQpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5uYWYpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO1xuXG4gIHZhciByZXMgPSBbIHRoaXMgXTtcbiAgdmFyIG1heCA9ICgxIDw8IHduZCkgLSAxO1xuICB2YXIgZGJsID0gbWF4ID09PSAxID8gbnVsbCA6IHRoaXMuZGJsKCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbWF4OyBpKyspXG4gICAgcmVzW2ldID0gcmVzW2kgLSAxXS5hZGQoZGJsKTtcbiAgcmV0dXJuIHtcbiAgICB3bmQ6IHduZCxcbiAgICBwb2ludHM6IHJlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gMSkgLyAoZCB5XjIgKyAxKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMub25lKTtcbiAgdmFyIHJocyA9IHkyLnJlZE11bCh0aGlzLmQpLnJlZEFkZCh0aGlzLm9uZSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5pc09kZCgpICE9PSBvZGQpXG4gICAgeCA9IHgucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDdXJ2ZTogQSAqIFheMiArIFleMiA9IENeMiAqICgxICsgRCAqIFheMiAqIFleMilcbiAgcG9pbnQubm9ybWFsaXplKCk7XG5cbiAgdmFyIHgyID0gcG9pbnQueC5yZWRTcXIoKTtcbiAgdmFyIHkyID0gcG9pbnQueS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHgyLnJlZE11bCh0aGlzLmEpLnJlZEFkZCh5Mik7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh4MikucmVkTXVsKHkyKSkpO1xuXG4gIHJldHVybiBsaHMuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgeiwgdCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMuek9uZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IHogPyBuZXcgQk4oeiwgMTYpIDogdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdCAmJiBuZXcgQk4odCwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICh0aGlzLnQgJiYgIXRoaXMudC5yZWQpXG4gICAgICB0aGlzLnQgPSB0aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG5cbiAgICAvLyBVc2UgZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZCAmJiAhdGhpcy50KSB7XG4gICAgICB0aGlzLnQgPSB0aGlzLngucmVkTXVsKHRoaXMueSk7XG4gICAgICBpZiAoIXRoaXMuek9uZSlcbiAgICAgICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgICB9XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCB6LCB0KTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSwgb2JqWzJdKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMueC5jbXBuKDApID09PSAwICYmXG4gICAgICAgICB0aGlzLnkuY21wKHRoaXMueikgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dERibCA9IGZ1bmN0aW9uIF9leHREYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWh3Y2RcbiAgLy8gNE0gKyA0U1xuXG4gIC8vIEEgPSBYMV4yXG4gIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBCID0gWTFeMlxuICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gQyA9IDIgKiBaMV4yXG4gIHZhciBjID0gdGhpcy56LnJlZFNxcigpO1xuICBjID0gYy5yZWRJQWRkKGMpO1xuICAvLyBEID0gYSAqIEFcbiAgdmFyIGQgPSB0aGlzLmN1cnZlLl9tdWxBKGEpO1xuICAvLyBFID0gKFgxICsgWTEpXjIgLSBBIC0gQlxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYik7XG4gIC8vIEcgPSBEICsgQlxuICB2YXIgZyA9IGQucmVkQWRkKGIpO1xuICAvLyBGID0gRyAtIENcbiAgdmFyIGYgPSBnLnJlZFN1YihjKTtcbiAgLy8gSCA9IEQgLSBCXG4gIHZhciBoID0gZC5yZWRTdWIoYik7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakRibCA9IGZ1bmN0aW9uIF9wcm9qRGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1iYmpscFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA3LWJsXG4gIC8vIGFuZCBvdGhlcnNcbiAgLy8gR2VuZXJhbGx5IDNNICsgNFMgb3IgMk0gKyA0U1xuXG4gIC8vIEIgPSAoWDEgKyBZMSleMlxuICB2YXIgYiA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxXjJcbiAgdmFyIGMgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEQgPSBZMV4yXG4gIHZhciBkID0gdGhpcy55LnJlZFNxcigpO1xuXG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBFID0gYSAqIENcbiAgICB2YXIgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgdmFyIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICB2YXIgaiA9IGYucmVkU3ViKGgpLnJlZElTdWIoaCk7XG4gICAgICAvLyBYMyA9IChCLUMtRCkqSlxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRJU3ViKGQpLnJlZE11bChqKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGICogSlxuICAgICAgbnogPSBmLnJlZE11bChqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRSA9IEMgKyBEXG4gICAgdmFyIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIHZhciBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLmMucmVkTXVsKHRoaXMueikpLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICB2YXIgaiA9IGUucmVkU3ViKGgpLnJlZFN1YihoKTtcbiAgICAvLyBYMyA9IGMgKiAoQiAtIEUpICogSlxuICAgIG54ID0gdGhpcy5jdXJ2ZS5fbXVsQyhiLnJlZElTdWIoZSkpLnJlZE11bChqKTtcbiAgICAvLyBZMyA9IGMgKiBFICogKEMgLSBEKVxuICAgIG55ID0gdGhpcy5jdXJ2ZS5fbXVsQyhlKS5yZWRNdWwoYy5yZWRJU3ViKGQpKTtcbiAgICAvLyBaMyA9IEUgKiBKXG4gICAgbnogPSBlLnJlZE11bChqKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBEb3VibGUgaW4gZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dERibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pEYmwoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0QWRkID0gZnVuY3Rpb24gX2V4dEFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWh3Y2QtM1xuICAvLyA4TVxuXG4gIC8vIEEgPSAoWTEgLSBYMSkgKiAoWTIgLSBYMilcbiAgdmFyIGEgPSB0aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKHAueS5yZWRTdWIocC54KSk7XG4gIC8vIEIgPSAoWTEgKyBYMSkgKiAoWTIgKyBYMilcbiAgdmFyIGIgPSB0aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKHAueS5yZWRBZGQocC54KSk7XG4gIC8vIEMgPSBUMSAqIGsgKiBUMlxuICB2YXIgYyA9IHRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHAudCk7XG4gIC8vIEQgPSBaMSAqIDIgKiBaMlxuICB2YXIgZCA9IHRoaXMuei5yZWRNdWwocC56LnJlZEFkZChwLnopKTtcbiAgLy8gRSA9IEIgLSBBXG4gIHZhciBlID0gYi5yZWRTdWIoYSk7XG4gIC8vIEYgPSBEIC0gQ1xuICB2YXIgZiA9IGQucmVkU3ViKGMpO1xuICAvLyBHID0gRCArIENcbiAgdmFyIGcgPSBkLnJlZEFkZChjKTtcbiAgLy8gSCA9IEIgKyBBXG4gIHZhciBoID0gYi5yZWRBZGQoYSk7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakFkZCA9IGZ1bmN0aW9uIF9wcm9qQWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtYmJqbHBcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwNy1ibFxuICAvLyAxME0gKyAxU1xuXG4gIC8vIEEgPSBaMSAqIFoyXG4gIHZhciBhID0gdGhpcy56LnJlZE11bChwLnopO1xuICAvLyBCID0gQV4yXG4gIHZhciBiID0gYS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxICogWDJcbiAgdmFyIGMgPSB0aGlzLngucmVkTXVsKHAueCk7XG4gIC8vIEQgPSBZMSAqIFkyXG4gIHZhciBkID0gdGhpcy55LnJlZE11bChwLnkpO1xuICAvLyBFID0gZCAqIEMgKiBEXG4gIHZhciBlID0gdGhpcy5jdXJ2ZS5kLnJlZE11bChjKS5yZWRNdWwoZCk7XG4gIC8vIEYgPSBCIC0gRVxuICB2YXIgZiA9IGIucmVkU3ViKGUpO1xuICAvLyBHID0gQiArIEVcbiAgdmFyIGcgPSBiLnJlZEFkZChlKTtcbiAgLy8gWDMgPSBBICogRiAqICgoWDEgKyBZMSkgKiAoWDIgKyBZMikgLSBDIC0gRClcbiAgdmFyIHRtcCA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwocC54LnJlZEFkZChwLnkpKS5yZWRJU3ViKGMpLnJlZElTdWIoZCk7XG4gIHZhciBueCA9IGEucmVkTXVsKGYpLnJlZE11bCh0bXApO1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIGEgKiBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUuX211bEEoYykpKTtcbiAgICAvLyBaMyA9IEYgKiBHXG4gICAgbnogPSBmLnJlZE11bChnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKGMpKTtcbiAgICAvLyBaMyA9IGMgKiBGICogR1xuICAgIG56ID0gdGhpcy5jdXJ2ZS5fbXVsQyhmKS5yZWRNdWwoZyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dEFkZChwKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qQWRkKHApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIGZhbHNlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgaWYgKHRoaXMuek9uZSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdmFyIHppID0gdGhpcy56LnJlZEludm0oKTtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh6aSk7XG4gIHRoaXMueSA9IHRoaXMueS5yZWRNdWwoemkpO1xuICBpZiAodGhpcy50KVxuICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwoemkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgdGhpcy56T25lID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnQgJiYgdGhpcy50LnJlZE5lZygpKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMgPT09IG90aGVyIHx8XG4gICAgICAgICB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy5nZXRZKCkuY21wKG90aGVyLmdldFkoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNilcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYmFzaXMgPSB0aGlzLl9nZXRFbmRvQmFzaXMobGFtYmRhKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmV0YTogYmV0YSxcbiAgICBsYW1iZGE6IGxhbWJkYSxcbiAgICBiYXNpczogYmFzaXNcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH1cbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgbnBvaW50cyA9IHRoaXMuX2VuZG9XbmFmVDE7XG4gIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BsaXQgPSB0aGlzLl9lbmRvU3BsaXQoY29lZmZzW2ldKTtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgIGlmIChzcGxpdC5rMS5uZWdhdGl2ZSkge1xuICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgIH1cbiAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgIGJldGEgPSBiZXRhLm5lZyh0cnVlKTtcbiAgICB9XG5cbiAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgbnBvaW50c1tpICogMiArIDFdID0gYmV0YTtcbiAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICB9XG4gIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHtcbiAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKGVuZG9NdWwpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSlcbiAgICB9LFxuICAgIG5hZjogdGhpcy5wcmVjb21wdXRlZC5uYWYgJiYge1xuICAgICAgd25kOiB0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKVxuICAgIH1cbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfSxcbiAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG5cbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspIHtcbiAgICB2YXIgangyID0gangucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDIgPSBqeWQucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDQgPSBqeWQyLnJlZFNxcigpO1xuICAgIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gICAgdmFyIHQxID0gangucmVkTXVsKGp5ZDIpO1xuICAgIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcbiAgICB2YXIgZG55ID0gYy5yZWRNdWwodDIpO1xuICAgIGRueSA9IGRueS5yZWRJQWRkKGRueSkucmVkSVN1YihqeWQ0KTtcbiAgICB2YXIgbnogPSBqeWQucmVkTXVsKGp6KTtcbiAgICBpZiAoaSArIDEgPCBwb3cpXG4gICAgICBqejQgPSBqejQucmVkTXVsKGp5ZDQpO1xuXG4gICAganggPSBueDtcbiAgICBqeiA9IG56O1xuICAgIGp5ZCA9IGRueTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChqeCwganlkLnJlZE11bCh0aW52KSwganopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5femVyb0RibCgpO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLnRocmVlQSlcbiAgICByZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9kYmwoKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3plcm9EYmwgPSBmdW5jdGlvbiBfemVyb0RibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTRBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYTsgYSA9IDBcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gICAgLy8gVCA9IE0gXiAyIC0gMipTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcblxuICAgIC8vIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcblxuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyKlkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA5LWxcbiAgICAvLyAyTSArIDVTICsgMTNBXG5cbiAgICAvLyBBID0gWDFeMlxuICAgIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIEIgPSBZMV4yXG4gICAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gQyA9IEJeMlxuICAgIHZhciBjID0gYi5yZWRTcXIoKTtcbiAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG4gICAgdmFyIGQgPSB0aGlzLngucmVkQWRkKGIpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihjKTtcbiAgICBkID0gZC5yZWRJQWRkKGQpO1xuICAgIC8vIEUgPSAzICogQVxuICAgIHZhciBlID0gYS5yZWRBZGQoYSkucmVkSUFkZChhKTtcbiAgICAvLyBGID0gRV4yXG4gICAgdmFyIGYgPSBlLnJlZFNxcigpO1xuXG4gICAgLy8gOCAqIENcbiAgICB2YXIgYzggPSBjLnJlZElBZGQoYyk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuXG4gICAgLy8gWDMgPSBGIC0gMiAqIERcbiAgICBueCA9IGYucmVkSVN1YihkKS5yZWRJU3ViKGQpO1xuICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcbiAgICBueSA9IGUucmVkTXVsKGQucmVkSVN1YihueCkpLnJlZElTdWIoYzgpO1xuICAgIC8vIFozID0gMiAqIFkxICogWjFcbiAgICBueiA9IHRoaXMueS5yZWRNdWwodGhpcy56KTtcbiAgICBueiA9IG56LnJlZElBZGQobnopO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fdGhyZWVEYmwgPSBmdW5jdGlvbiBfdGhyZWVEYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE1QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGFcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCkucmVkSUFkZCh0aGlzLmN1cnZlLmEpO1xuICAgIC8vIFQgPSBNXjIgLSAyICogU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMiAqIFkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWwjZG91YmxpbmctZGJsLTIwMDEtYlxuICAgIC8vIDNNICsgNVNcblxuICAgIC8vIGRlbHRhID0gWjFeMlxuICAgIHZhciBkZWx0YSA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAvLyBnYW1tYSA9IFkxXjJcbiAgICB2YXIgZ2FtbWEgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gYmV0YSA9IFgxICogZ2FtbWFcbiAgICB2YXIgYmV0YSA9IHRoaXMueC5yZWRNdWwoZ2FtbWEpO1xuICAgIC8vIGFscGhhID0gMyAqIChYMSAtIGRlbHRhKSAqIChYMSArIGRlbHRhKVxuICAgIHZhciBhbHBoYSA9IHRoaXMueC5yZWRTdWIoZGVsdGEpLnJlZE11bCh0aGlzLngucmVkQWRkKGRlbHRhKSk7XG4gICAgYWxwaGEgPSBhbHBoYS5yZWRBZGQoYWxwaGEpLnJlZElBZGQoYWxwaGEpO1xuICAgIC8vIFgzID0gYWxwaGFeMiAtIDggKiBiZXRhXG4gICAgdmFyIGJldGE0ID0gYmV0YS5yZWRJQWRkKGJldGEpO1xuICAgIGJldGE0ID0gYmV0YTQucmVkSUFkZChiZXRhNCk7XG4gICAgdmFyIGJldGE4ID0gYmV0YTQucmVkQWRkKGJldGE0KTtcbiAgICBueCA9IGFscGhhLnJlZFNxcigpLnJlZElTdWIoYmV0YTgpO1xuICAgIC8vIFozID0gKFkxICsgWjEpXjIgLSBnYW1tYSAtIGRlbHRhXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7XG4gICAgLy8gWTMgPSBhbHBoYSAqICg0ICogYmV0YSAtIFgzKSAtIDggKiBnYW1tYV4yXG4gICAgdmFyIGdnYW1tYTggPSBnYW1tYS5yZWRTcXIoKTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBueSA9IGFscGhhLnJlZE11bChiZXRhNC5yZWRJU3ViKG54KSkucmVkSVN1YihnZ2FtbWE4KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX2RibCA9IGZ1bmN0aW9uIF9kYmwoKSB7XG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIC8vIDRNICsgNlMgKyAxMEFcbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgdmFyIGp5MiA9IGp5LnJlZFNxcigpO1xuXG4gIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gIHZhciBqeGQ0ID0gangucmVkQWRkKGp4KTtcbiAganhkNCA9IGp4ZDQucmVkSUFkZChqeGQ0KTtcbiAgdmFyIHQxID0ganhkNC5yZWRNdWwoankyKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcblxuICB2YXIganlkOCA9IGp5Mi5yZWRTcXIoKTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7XG4gIHZhciBueiA9IGp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRycGwgPSBmdW5jdGlvbiB0cnBsKCkge1xuICBpZiAoIXRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO1xuXG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sI3RyaXBsaW5nLXRwbC0yMDA3LWJsXG4gIC8vIDVNICsgMTBTICsgLi4uXG5cbiAgLy8gWFggPSBYMV4yXG4gIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gWVkgPSBZMV4yXG4gIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gWlogPSBaMV4yXG4gIHZhciB6eiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgLy8gWVlZWSA9IFlZXjJcbiAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgLy8gTSA9IDMgKiBYWCArIGEgKiBaWjI7IGEgPSAwXG4gIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgLy8gTU0gPSBNXjJcbiAgdmFyIG1tID0gbS5yZWRTcXIoKTtcbiAgLy8gRSA9IDYgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpIC0gTU1cbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICBlID0gZS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRBZGQoZSkucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkSVN1YihtbSk7XG4gIC8vIEVFID0gRV4yXG4gIHZhciBlZSA9IGUucmVkU3FyKCk7XG4gIC8vIFQgPSAxNipZWVlZXG4gIHZhciB0ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICAvLyBVID0gKE0gKyBFKV4yIC0gTU0gLSBFRSAtIFRcbiAgdmFyIHUgPSBtLnJlZElBZGQoZSkucmVkU3FyKCkucmVkSVN1YihtbSkucmVkSVN1YihlZSkucmVkSVN1Yih0KTtcbiAgLy8gWDMgPSA0ICogKFgxICogRUUgLSA0ICogWVkgKiBVKVxuICB2YXIgeXl1NCA9IHl5LnJlZE11bCh1KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgdmFyIG54ID0gdGhpcy54LnJlZE11bChlZSkucmVkSVN1Yih5eXU0KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgLy8gWTMgPSA4ICogWTEgKiAoVSAqIChUIC0gVSkgLSBFICogRUUpXG4gIHZhciBueSA9IHRoaXMueS5yZWRNdWwodS5yZWRNdWwodC5yZWRJU3ViKHUpKS5yZWRJU3ViKGUucmVkTXVsKGVlKSkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICAvLyBaMyA9IChaMSArIEUpXjIgLSBaWiAtIEVFXG4gIHZhciBueiA9IHRoaXMuei5yZWRBZGQoZSkucmVkU3FyKCkucmVkSVN1Yih6eikucmVkSVN1YihlZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaywga2Jhc2UpIHtcbiAgayA9IG5ldyBCTihrLCBrYmFzZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICByZXR1cm4gdGhpcy5lcShwLnRvSigpKTtcblxuICBpZiAodGhpcyA9PT0gcClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyB4MSAqIHoyXjIgPT0geDIgKiB6MV4yXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgaWYgKHRoaXMueC5yZWRNdWwocHoyKS5yZWRJU3ViKHAueC5yZWRNdWwoejIpKS5jbXBuKDApICE9PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyB5MSAqIHoyXjMgPT0geTIgKiB6MV4zXG4gIHZhciB6MyA9IHoyLnJlZE11bCh0aGlzLnopO1xuICB2YXIgcHozID0gcHoyLnJlZE11bChwLnopO1xuICByZXR1cm4gdGhpcy55LnJlZE11bChwejMpLnJlZElTdWIocC55LnJlZE11bCh6MykpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciB6cyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHpzKTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHpzKTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vZWxsaXB0aWMnKTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gUHJlc2V0Q3VydmUob3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlID09PSAnc2hvcnQnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuc2hvcnQob3B0aW9ucyk7XG4gIGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Vkd2FyZHMnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuZWR3YXJkcyhvcHRpb25zKTtcbiAgZWxzZVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUubW9udChvcHRpb25zKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcblxuICBhc3NlcnQodGhpcy5nLnZhbGlkYXRlKCksICdJbnZhbGlkIGN1cnZlJyk7XG4gIGFzc2VydCh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCAnSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8nKTtcbn1cbmN1cnZlcy5QcmVzZXRDdXJ2ZSA9IFByZXNldEN1cnZlO1xuXG5mdW5jdGlvbiBkZWZpbmVDdXJ2ZShuYW1lLCBvcHRpb25zKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGN1cnZlID0gbmV3IFByZXNldEN1cnZlKG9wdGlvbnMpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBjdXJ2ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfVxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyNTYnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGInLFxuICBuOiAnZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYnLFxuICAgICc0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ2N1cnZlMjU1MTknLCB7XG4gIHR5cGU6ICdtb250JyxcbiAgcHJpbWU6ICdwMjU1MTknLFxuICBwOiAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcsXG4gIGE6ICc3NmQwNicsXG4gIGI6ICcwJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnOSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4J1xuICBdXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSdcbiAgICB9XG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFQyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFQykpXG4gICAgcmV0dXJuIG5ldyBFQyhvcHRpb25zKTtcblxuICAvLyBTaG9ydGN1dCBgZWxsaXB0aWMuZWMoY3VydmUtbmFtZSlgXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBhc3NlcnQoZWxsaXB0aWMuY3VydmVzLmhhc093blByb3BlcnR5KG9wdGlvbnMpLCAnVW5rbm93biBjdXJ2ZSAnICsgb3B0aW9ucyk7XG5cbiAgICBvcHRpb25zID0gZWxsaXB0aWMuY3VydmVzW29wdGlvbnNdO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZm9yIGBlbGxpcHRpYy5lYyhlbGxpcHRpYy5jdXJ2ZXMuY3VydmVOYW1lKWBcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBlbGxpcHRpYy5jdXJ2ZXMuUHJlc2V0Q3VydmUpXG4gICAgb3B0aW9ucyA9IHsgY3VydmU6IG9wdGlvbnMgfTtcblxuICB0aGlzLmN1cnZlID0gb3B0aW9ucy5jdXJ2ZS5jdXJ2ZTtcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLm5oID0gdGhpcy5uLnVzaHJuKDEpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG5cbiAgLy8gUG9pbnQgb24gY3VydmVcbiAgdGhpcy5nID0gb3B0aW9ucy5jdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShvcHRpb25zLmN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICAvLyBIYXNoIGZvciBmdW5jdGlvbiBmb3IgRFJCR1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2ggfHwgb3B0aW9ucy5jdXJ2ZS5oYXNoO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFQztcblxuRUMucHJvdG90eXBlLmtleVBhaXIgPSBmdW5jdGlvbiBrZXlQYWlyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHRoaXMsIG9wdGlvbnMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlID0gZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUocHJpdiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21Qcml2YXRlKHRoaXMsIHByaXYsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViLCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2VuS2V5UGFpciA9IGZ1bmN0aW9uIGdlbktleVBhaXIob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBlbGxpcHRpYy5obWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBlbnRyb3B5OiBvcHRpb25zLmVudHJvcHkgfHwgZWxsaXB0aWMucmFuZCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxcbiAgICBub25jZTogdGhpcy5uLnRvQXJyYXkoKVxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBkbyB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG59O1xuXG5FQy5wcm90b3R5cGUuX3RydW5jYXRlVG9OID0gZnVuY3Rpb24gdHJ1bmNhdGVUb04obXNnLCB0cnVuY09ubHkpIHtcbiAgdmFyIGRlbHRhID0gbXNnLmJ5dGVMZW5ndGgoKSAqIDggLSB0aGlzLm4uYml0TGVuZ3RoKCk7XG4gIGlmIChkZWx0YSA+IDApXG4gICAgbXNnID0gbXNnLnVzaHJuKGRlbHRhKTtcbiAgaWYgKCF0cnVuY09ubHkgJiYgbXNnLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtcbiAgZWxzZVxuICAgIHJldHVybiBtc2c7XG59O1xuXG5FQy5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBrZXksIGVuYywgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGVuYyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICBrZXkgPSB0aGlzLmtleUZyb21Qcml2YXRlKGtleSwgZW5jKTtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcblxuICAvLyBaZXJvLWV4dGVuZCBrZXkgdG8gcHJvdmlkZSBlbm91Z2ggZW50cm9weVxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgYmtleSA9IGtleS5nZXRQcml2YXRlKCkudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gWmVyby1leHRlbmQgbm9uY2UgdG8gaGF2ZSB0aGUgc2FtZSBieXRlIHNpemUgYXMgTlxuICB2YXIgbm9uY2UgPSBtc2cudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IGVsbGlwdGljLmhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgZW50cm9weTogYmtleSxcbiAgICBub25jZTogbm9uY2UsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuY1xuICB9KTtcblxuICAvLyBOdW1iZXIgb2YgYnl0ZXMgdG8gZ2VuZXJhdGVcbiAgdmFyIG5zMSA9IHRoaXMubi5zdWIobmV3IEJOKDEpKTtcblxuICBmb3IgKHZhciBpdGVyID0gMDsgdHJ1ZTsgaXRlcisrKSB7XG4gICAgdmFyIGsgPSBvcHRpb25zLmsgP1xuICAgICAgICBvcHRpb25zLmsoaXRlcikgOlxuICAgICAgICBuZXcgQk4oZHJiZy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7XG4gICAgayA9IHRoaXMuX3RydW5jYXRlVG9OKGssIHRydWUpO1xuICAgIGlmIChrLmNtcG4oMSkgPD0gMCB8fCBrLmNtcChuczEpID49IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcCA9IHRoaXMuZy5tdWwoayk7XG4gICAgaWYgKGtwLmlzSW5maW5pdHkoKSlcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwWCA9IGtwLmdldFgoKTtcbiAgICB2YXIgciA9IGtwWC51bW9kKHRoaXMubik7XG4gICAgaWYgKHIuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHMgPSBrLmludm0odGhpcy5uKS5tdWwoci5tdWwoa2V5LmdldFByaXZhdGUoKSkuaWFkZChtc2cpKTtcbiAgICBzID0gcy51bW9kKHRoaXMubik7XG4gICAgaWYgKHMuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHJlY292ZXJ5UGFyYW0gPSAoa3AuZ2V0WSgpLmlzT2RkKCkgPyAxIDogMCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgKGtwWC5jbXAocikgIT09IDAgPyAyIDogMCk7XG5cbiAgICAvLyBVc2UgY29tcGxlbWVudCBvZiBgc2AsIGlmIGl0IGlzID4gYG4gLyAyYFxuICAgIGlmIChvcHRpb25zLmNhbm9uaWNhbCAmJiBzLmNtcCh0aGlzLm5oKSA+IDApIHtcbiAgICAgIHMgPSB0aGlzLm4uc3ViKHMpO1xuICAgICAgcmVjb3ZlcnlQYXJhbSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKHsgcjogciwgczogcywgcmVjb3ZlcnlQYXJhbTogcmVjb3ZlcnlQYXJhbSB9KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSwga2V5LCBlbmMpIHtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcbiAga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKGtleSwgZW5jKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsICdoZXgnKTtcblxuICAvLyBQZXJmb3JtIHByaW1pdGl2ZSB2YWx1ZXMgdmFsaWRhdGlvblxuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuICBpZiAoci5jbXBuKDEpIDwgMCB8fCByLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAocy5jbXBuKDEpIDwgMCB8fCBzLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIFZhbGlkYXRlIHNpZ25hdHVyZVxuICB2YXIgc2ludiA9IHMuaW52bSh0aGlzLm4pO1xuICB2YXIgdTEgPSBzaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTtcbiAgdmFyIHUyID0gc2ludi5tdWwocikudW1vZCh0aGlzLm4pO1xuXG4gIGlmICghdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKSB7XG4gICAgdmFyIHAgPSB0aGlzLmcubXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKSA9PT0gMDtcbiAgfVxuXG4gIC8vIE5PVEU6IEdyZWcgTWF4d2VsbCdzIHRyaWNrLCBpbnNwaXJlZCBieTpcbiAgLy8gaHR0cHM6Ly9naXQuaW8vdmFkM0tcblxuICB2YXIgcCA9IHRoaXMuZy5qbXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBDb21wYXJlIGBwLnhgIG9mIEphY29iaWFuIHBvaW50IHdpdGggYHJgLFxuICAvLyB0aGlzIHdpbGwgZG8gYHAueCA9PSByICogcC56XjJgIGluc3RlYWQgb2YgbXVsdGlwbHlpbmcgYHAueGAgYnkgdGhlXG4gIC8vIGludmVyc2Ugb2YgYHAuel4yYFxuICByZXR1cm4gcC5lcVhUb1Aocik7XG59O1xuXG5FQy5wcm90b3R5cGUucmVjb3ZlclB1YktleSA9IGZ1bmN0aW9uKG1zZywgc2lnbmF0dXJlLCBqLCBlbmMpIHtcbiAgYXNzZXJ0KCgzICYgaikgPT09IGosICdUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzJyk7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuXG4gIHZhciBuID0gdGhpcy5uO1xuICB2YXIgZSA9IG5ldyBCTihtc2cpO1xuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuXG4gIC8vIEEgc2V0IExTQiBzaWduaWZpZXMgdGhhdCB0aGUgeS1jb29yZGluYXRlIGlzIG9kZFxuICB2YXIgaXNZT2RkID0gaiAmIDE7XG4gIHZhciBpc1NlY29uZEtleSA9IGogPj4gMTtcbiAgaWYgKHIuY21wKHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpID49IDAgJiYgaXNTZWNvbmRLZXkpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUnKTtcblxuICAvLyAxLjEuIExldCB4ID0gciArIGpuLlxuICBpZiAoaXNTZWNvbmRLZXkpXG4gICAgciA9IHRoaXMuY3VydmUucG9pbnRGcm9tWChyLmFkZCh0aGlzLmN1cnZlLm4pLCBpc1lPZGQpO1xuICBlbHNlXG4gICAgciA9IHRoaXMuY3VydmUucG9pbnRGcm9tWChyLCBpc1lPZGQpO1xuXG4gIHZhciBlTmVnID0gbi5zdWIoZSk7XG5cbiAgLy8gMS42LjEgQ29tcHV0ZSBRID0gcl4tMSAoc1IgLSAgZUcpXG4gIC8vICAgICAgICAgICAgICAgUSA9IHJeLTEgKHNSICsgLWVHKVxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHJldHVybiB0aGlzLmcubXVsQWRkKGVOZWcsIHIsIHMpLm11bChySW52KTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmZ1bmN0aW9uIEtleVBhaXIoZWMsIG9wdGlvbnMpIHtcbiAgdGhpcy5lYyA9IGVjO1xuICB0aGlzLnByaXYgPSBudWxsO1xuICB0aGlzLnB1YiA9IG51bGw7XG5cbiAgLy8gS2V5UGFpcihlYywgeyBwcml2OiAuLi4sIHB1YjogLi4uIH0pXG4gIGlmIChvcHRpb25zLnByaXYpXG4gICAgdGhpcy5faW1wb3J0UHJpdmF0ZShvcHRpb25zLnByaXYsIG9wdGlvbnMucHJpdkVuYyk7XG4gIGlmIChvcHRpb25zLnB1YilcbiAgICB0aGlzLl9pbXBvcnRQdWJsaWMob3B0aW9ucy5wdWIsIG9wdGlvbnMucHViRW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlYywgcHViLCBlbmMpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwdWI6IHB1YixcbiAgICBwdWJFbmM6IGVuY1xuICB9KTtcbn07XG5cbktleVBhaXIuZnJvbVByaXZhdGUgPSBmdW5jdGlvbiBmcm9tUHJpdmF0ZShlYywgcHJpdiwgZW5jKSB7XG4gIGlmIChwcml2IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHJpdjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwcml2OiBwcml2LFxuICAgIHByaXZFbmM6IGVuY1xuICB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHZhciBwdWIgPSB0aGlzLmdldFB1YmxpYygpO1xuXG4gIGlmIChwdWIuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ0ludmFsaWQgcHVibGljIGtleScgfTtcbiAgaWYgKCFwdWIudmFsaWRhdGUoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50JyB9O1xuICBpZiAoIXB1Yi5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSAqIE4gIT0gTycgfTtcblxuICByZXR1cm4geyByZXN1bHQ6IHRydWUsIHJlYXNvbjogbnVsbCB9O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGNvbXBhY3QsIGVuYykge1xuICAvLyBjb21wYWN0IGlzIG9wdGlvbmFsIGFyZ3VtZW50XG4gIGlmICh0eXBlb2YgY29tcGFjdCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmMgPSBjb21wYWN0O1xuICAgIGNvbXBhY3QgPSBudWxsO1xuICB9XG5cbiAgaWYgKCF0aGlzLnB1YilcbiAgICB0aGlzLnB1YiA9IHRoaXMuZWMuZy5tdWwodGhpcy5wcml2KTtcblxuICBpZiAoIWVuYylcbiAgICByZXR1cm4gdGhpcy5wdWI7XG5cbiAgcmV0dXJuIHRoaXMucHViLmVuY29kZShlbmMsIGNvbXBhY3QpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHJpdmF0ZSA9IGZ1bmN0aW9uIGdldFByaXZhdGUoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0aGlzLnByaXYudG9TdHJpbmcoMTYsIDIpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMucHJpdjtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlID0gZnVuY3Rpb24gX2ltcG9ydFByaXZhdGUoa2V5LCBlbmMpIHtcbiAgdGhpcy5wcml2ID0gbmV3IEJOKGtleSwgZW5jIHx8IDE2KTtcblxuICAvLyBFbnN1cmUgdGhhdCB0aGUgcHJpdiB3b24ndCBiZSBiaWdnZXIgdGhhbiBuLCBvdGhlcndpc2Ugd2UgbWF5IGZhaWxcbiAgLy8gaW4gZml4ZWQgbXVsdGlwbGljYXRpb24gbWV0aG9kXG4gIHRoaXMucHJpdiA9IHRoaXMucHJpdi51bW9kKHRoaXMuZWMuY3VydmUubik7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHVibGljID0gZnVuY3Rpb24gX2ltcG9ydFB1YmxpYyhrZXksIGVuYykge1xuICBpZiAoa2V5LnggfHwga2V5LnkpIHtcbiAgICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUucG9pbnQoa2V5LngsIGtleS55KTtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KGtleSwgZW5jKTtcbn07XG5cbi8vIEVDREhcbktleVBhaXIucHJvdG90eXBlLmRlcml2ZSA9IGZ1bmN0aW9uIGRlcml2ZShwdWIpIHtcbiAgcmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCk7XG59O1xuXG4vLyBFQ0RTQVxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuZWMuc2lnbihtc2csIHRoaXMsIGVuYywgb3B0aW9ucyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZywgc2lnbmF0dXJlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICByZXR1cm4gJzxLZXkgcHJpdjogJyArICh0aGlzLnByaXYgJiYgdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKSkgK1xuICAgICAgICAgJyBwdWI6ICcgKyAodGhpcy5wdWIgJiYgdGhpcy5wdWIuaW5zcGVjdCgpKSArICcgPic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaWduYXR1cmUob3B0aW9ucywgZW5jKSB7XG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgU2lnbmF0dXJlKVxuICAgIHJldHVybiBvcHRpb25zO1xuXG4gIGlmICh0aGlzLl9pbXBvcnRERVIob3B0aW9ucywgZW5jKSlcbiAgICByZXR1cm47XG5cbiAgYXNzZXJ0KG9wdGlvbnMuciAmJiBvcHRpb25zLnMsICdTaWduYXR1cmUgd2l0aG91dCByIG9yIHMnKTtcbiAgdGhpcy5yID0gbmV3IEJOKG9wdGlvbnMuciwgMTYpO1xuICB0aGlzLnMgPSBuZXcgQk4ob3B0aW9ucy5zLCAxNik7XG4gIGlmIChvcHRpb25zLnJlY292ZXJ5UGFyYW0gPT09IHVuZGVmaW5lZClcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuICBlbHNlXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gb3B0aW9ucy5yZWNvdmVyeVBhcmFtO1xufVxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG5cbmZ1bmN0aW9uIFBvc2l0aW9uKCkge1xuICB0aGlzLnBsYWNlID0gMDtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoKGJ1ZiwgcCkge1xuICB2YXIgaW5pdGlhbCA9IGJ1ZltwLnBsYWNlKytdO1xuICBpZiAoIShpbml0aWFsICYgMHg4MCkpIHtcbiAgICByZXR1cm4gaW5pdGlhbDtcbiAgfVxuICB2YXIgb2N0ZXRMZW4gPSBpbml0aWFsICYgMHhmO1xuICB2YXIgdmFsID0gMDtcbiAgZm9yICh2YXIgaSA9IDAsIG9mZiA9IHAucGxhY2U7IGkgPCBvY3RldExlbjsgaSsrLCBvZmYrKykge1xuICAgIHZhbCA8PD0gODtcbiAgICB2YWwgfD0gYnVmW29mZl07XG4gIH1cbiAgcC5wbGFjZSA9IG9mZjtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gcm1QYWRkaW5nKGJ1Zikge1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC0gMTtcbiAgd2hpbGUgKCFidWZbaV0gJiYgIShidWZbaSArIDFdICYgMHg4MCkgJiYgaSA8IGxlbikge1xuICAgIGkrKztcbiAgfVxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBidWY7XG4gIH1cbiAgcmV0dXJuIGJ1Zi5zbGljZShpKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS5faW1wb3J0REVSID0gZnVuY3Rpb24gX2ltcG9ydERFUihkYXRhLCBlbmMpIHtcbiAgZGF0YSA9IHV0aWxzLnRvQXJyYXkoZGF0YSwgZW5jKTtcbiAgdmFyIHAgPSBuZXcgUG9zaXRpb24oKTtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgzMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoKGxlbiArIHAucGxhY2UpICE9PSBkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBybGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICB2YXIgciA9IGRhdGEuc2xpY2UocC5wbGFjZSwgcmxlbiArIHAucGxhY2UpO1xuICBwLnBsYWNlICs9IHJsZW47XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc2xlbiArIHAucGxhY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHMgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHNsZW4gKyBwLnBsYWNlKTtcbiAgaWYgKHJbMF0gPT09IDAgJiYgKHJbMV0gJiAweDgwKSkge1xuICAgIHIgPSByLnNsaWNlKDEpO1xuICB9XG4gIGlmIChzWzBdID09PSAwICYmIChzWzFdICYgMHg4MCkpIHtcbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuXG4gIHRoaXMuciA9IG5ldyBCTihyKTtcbiAgdGhpcy5zID0gbmV3IEJOKHMpO1xuICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG9jdGV0cyA9IDEgKyAoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yID4+PiAzKTtcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uIHRvREVSKGVuYykge1xuICB2YXIgciA9IHRoaXMuci50b0FycmF5KCk7XG4gIHZhciBzID0gdGhpcy5zLnRvQXJyYXkoKTtcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MClcbiAgICByID0gWyAwIF0uY29uY2F0KHIpO1xuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MClcbiAgICBzID0gWyAwIF0uY29uY2F0KHMpO1xuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgd2hpbGUgKCFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cbiAgdmFyIGFyciA9IFsgMHgwMiBdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIHZhciBiYWNrSGFsZiA9IGFyci5jb25jYXQocyk7XG4gIHZhciByZXMgPSBbIDB4MzAgXTtcbiAgY29uc3RydWN0TGVuZ3RoKHJlcywgYmFja0hhbGYubGVuZ3RoKTtcbiAgcmVzID0gcmVzLmNvbmNhdChiYWNrSGFsZik7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVERFNBKGN1cnZlKSB7XG4gIGFzc2VydChjdXJ2ZSA9PT0gJ2VkMjU1MTknLCAnb25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhcicpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFRERTQSkpXG4gICAgcmV0dXJuIG5ldyBFRERTQShjdXJ2ZSk7XG5cbiAgdmFyIGN1cnZlID0gZWxsaXB0aWMuY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAubXVsKGtleS5wcml2KCkpO1xuICB2YXIgUyA9IHIuYWRkKHNfKS51bW9kKHRoaXMuY3VydmUubik7XG4gIHJldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoeyBSOiBSLCBTOiBTLCBSZW5jb2RlZDogUmVuY29kZWQgfSk7XG59O1xuXG4vKipcbiogQHBhcmFtIHtBcnJheX0gbWVzc2FnZSAtIG1lc3NhZ2UgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8U2lnbmF0dXJlfSBzaWcgLSBzaWcgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8UG9pbnR8S2V5UGFpcn0gcHViIC0gcHVibGljIGtleVxuKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSB0cnVlIGlmIHB1YmxpYyBrZXkgbWF0Y2hlcyBzaWcgb2YgbWVzc2FnZVxuKi9cbkVERFNBLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnLCBwdWIpIHtcbiAgbWVzc2FnZSA9IHBhcnNlQnl0ZXMobWVzc2FnZSk7XG4gIHNpZyA9IHRoaXMubWFrZVNpZ25hdHVyZShzaWcpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKHB1Yik7XG4gIHZhciBoID0gdGhpcy5oYXNoSW50KHNpZy5SZW5jb2RlZCgpLCBrZXkucHViQnl0ZXMoKSwgbWVzc2FnZSk7XG4gIHZhciBTRyA9IHRoaXMuZy5tdWwoc2lnLlMoKSk7XG4gIHZhciBScGx1c0FoID0gc2lnLlIoKS5hZGQoa2V5LnB1YigpLm11bChoKSk7XG4gIHJldHVybiBScGx1c0FoLmVxKFNHKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5oYXNoSW50ID0gZnVuY3Rpb24gaGFzaEludCgpIHtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgaGFzaC51cGRhdGUoYXJndW1lbnRzW2ldKTtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShoYXNoLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0ID0gZnVuY3Rpb24ga2V5RnJvbVNlY3JldChzZWNyZXQpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVNlY3JldCh0aGlzLCBzZWNyZXQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLm1ha2VTaWduYXR1cmUgPSBmdW5jdGlvbiBtYWtlU2lnbmF0dXJlKHNpZykge1xuICBpZiAoc2lnIGluc3RhbmNlb2YgU2lnbmF0dXJlKVxuICAgIHJldHVybiBzaWc7XG4gIHJldHVybiBuZXcgU2lnbmF0dXJlKHRoaXMsIHNpZyk7XG59O1xuXG4vKipcbiogKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtam9zZWZzc29uLWVkZHNhLWVkMjU1MTktMDMjc2VjdGlvbi01LjJcbipcbiogRUREU0EgZGVmaW5lcyBtZXRob2RzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgcG9pbnRzIGFuZCBpbnRlZ2Vycy4gVGhlc2UgYXJlXG4qIGhlbHBlciBjb252ZW5pZW5jZSBtZXRob2RzLCB0aGF0IHBhc3MgYWxvbmcgdG8gdXRpbGl0eSBmdW5jdGlvbnMgaW1wbGllZFxuKiBwYXJhbWV0ZXJzLlxuKlxuKi9cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVQb2ludCA9IGZ1bmN0aW9uIGVuY29kZVBvaW50KHBvaW50KSB7XG4gIHZhciBlbmMgPSBwb2ludC5nZXRZKCkudG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbiAgZW5jW3RoaXMuZW5jb2RpbmdMZW5ndGggLSAxXSB8PSBwb2ludC5nZXRYKCkuaXNPZGQoKSA/IDB4ODAgOiAwO1xuICByZXR1cm4gZW5jO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMpIHtcbiAgYnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzKGJ5dGVzKTtcblxuICB2YXIgbGFzdEl4ID0gYnl0ZXMubGVuZ3RoIC0gMTtcbiAgdmFyIG5vcm1lZCA9IGJ5dGVzLnNsaWNlKDAsIGxhc3RJeCkuY29uY2F0KGJ5dGVzW2xhc3RJeF0gJiB+MHg4MCk7XG4gIHZhciB4SXNPZGQgPSAoYnl0ZXNbbGFzdEl4XSAmIDB4ODApICE9PSAwO1xuXG4gIHZhciB5ID0gdXRpbHMuaW50RnJvbUxFKG5vcm1lZCk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoeSwgeElzT2RkKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtKSB7XG4gIHJldHVybiBudW0udG9BcnJheSgnbGUnLCB0aGlzLmVuY29kaW5nTGVuZ3RoKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnl0ZXMpIHtcbiAgcmV0dXJuIHV0aWxzLmludEZyb21MRShieXRlcyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaXNQb2ludCA9IGZ1bmN0aW9uIGlzUG9pbnQodmFsKSB7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3M7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGluc3RhbmNlXG4qIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFyYW1ldGVyc1xuKlxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnNlY3JldF0gLSBzZWNyZXQgc2VlZCBieXRlc1xuKiBAcGFyYW0ge1BvaW50fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IChha2EgYEFgIGluIGVkZHNhIHRlcm1zKVxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IGVuY29kZWQgYXMgYnl0ZXNcbipcbiovXG5mdW5jdGlvbiBLZXlQYWlyKGVkZHNhLCBwYXJhbXMpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuICB0aGlzLl9zZWNyZXQgPSBwYXJzZUJ5dGVzKHBhcmFtcy5zZWNyZXQpO1xuICBpZiAoZWRkc2EuaXNQb2ludChwYXJhbXMucHViKSlcbiAgICB0aGlzLl9wdWIgPSBwYXJhbXMucHViO1xuICBlbHNlXG4gICAgdGhpcy5fcHViQnl0ZXMgPSBwYXJzZUJ5dGVzKHBhcmFtcy5wdWIpO1xufVxuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVkZHNhLCBwdWIpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHB1YjogcHViIH0pO1xufTtcblxuS2V5UGFpci5mcm9tU2VjcmV0ID0gZnVuY3Rpb24gZnJvbVNlY3JldChlZGRzYSwgc2VjcmV0KSB7XG4gIGlmIChzZWNyZXQgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBzZWNyZXQ7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBzZWNyZXQ6IHNlY3JldCB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnNlY3JldCA9IGZ1bmN0aW9uIHNlY3JldCgpIHtcbiAgcmV0dXJuIHRoaXMuX3NlY3JldDtcbn07XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWJCeXRlcycsIGZ1bmN0aW9uIHB1YkJ5dGVzKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViJywgZnVuY3Rpb24gcHViKCkge1xuICBpZiAodGhpcy5fcHViQnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXZCeXRlcycsIGZ1bmN0aW9uIHByaXZCeXRlcygpIHtcbiAgdmFyIGVkZHNhID0gdGhpcy5lZGRzYTtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgdmFyIGxhc3RJeCA9IGVkZHNhLmVuY29kaW5nTGVuZ3RoIC0gMTtcblxuICB2YXIgYSA9IGhhc2guc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xuICBhWzBdICY9IDI0ODtcbiAgYVtsYXN0SXhdICY9IDEyNztcbiAgYVtsYXN0SXhdIHw9IDY0O1xuXG4gIHJldHVybiBhO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2JywgZnVuY3Rpb24gcHJpdigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdoYXNoJywgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnbWVzc2FnZVByZWZpeCcsIGZ1bmN0aW9uIG1lc3NhZ2VQcmVmaXgoKSB7XG4gIHJldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbn0pO1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeScpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5zaWduKG1lc3NhZ2UsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZykge1xuICByZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkobWVzc2FnZSwgc2lnLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFNlY3JldCA9IGZ1bmN0aW9uIGdldFNlY3JldChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgaXMgcHVibGljIG9ubHknKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnNlY3JldCgpLCBlbmMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGVuYykge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSwgZW5jKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gZWRkc2EgaW5zdGFuY2VcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58T2JqZWN0fSBzaWcgLVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxQb2ludH0gW3NpZy5SXSAtIFIgcG9pbnQgYXMgUG9pbnQgb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58Ym59IFtzaWcuU10gLSBTIHNjYWxhciBhcyBibiBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5SZW5jb2RlZF0gLSBSIHBvaW50IGVuY29kZWRcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuU2VuY29kZWRdIC0gUyBzY2FsYXIgZW5jb2RlZFxuKi9cbmZ1bmN0aW9uIFNpZ25hdHVyZShlZGRzYSwgc2lnKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcblxuICBpZiAodHlwZW9mIHNpZyAhPT0gJ29iamVjdCcpXG4gICAgc2lnID0gcGFyc2VCeXRlcyhzaWcpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHNpZykpIHtcbiAgICBzaWcgPSB7XG4gICAgICBSOiBzaWcuc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpLFxuICAgICAgUzogc2lnLnNsaWNlKGVkZHNhLmVuY29kaW5nTGVuZ3RoKVxuICAgIH07XG4gIH1cblxuICBhc3NlcnQoc2lnLlIgJiYgc2lnLlMsICdTaWduYXR1cmUgd2l0aG91dCBSIG9yIFMnKTtcblxuICBpZiAoZWRkc2EuaXNQb2ludChzaWcuUikpXG4gICAgdGhpcy5fUiA9IHNpZy5SO1xuICBpZiAoc2lnLlMgaW5zdGFuY2VvZiBCTilcbiAgICB0aGlzLl9TID0gc2lnLlM7XG5cbiAgdGhpcy5fUmVuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5SKSA/IHNpZy5SIDogc2lnLlJlbmNvZGVkO1xuICB0aGlzLl9TZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlMpID8gc2lnLlMgOiBzaWcuU2VuY29kZWQ7XG59XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1MnLCBmdW5jdGlvbiBTKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdSJywgZnVuY3Rpb24gUigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdSZW5jb2RlZCcsIGZ1bmN0aW9uIFJlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnU2VuY29kZWQnLCBmdW5jdGlvbiBTZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlSW50KHRoaXMuUygpKTtcbn0pO1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvQnl0ZXMgPSBmdW5jdGlvbiB0b0J5dGVzKCkge1xuICByZXR1cm4gdGhpcy5SZW5jb2RlZCgpLmNvbmNhdCh0aGlzLlNlbmNvZGVkKCkpO1xufTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0hleCA9IGZ1bmN0aW9uIHRvSGV4KCkge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMudG9CeXRlcygpLCAnaGV4JykudG9VcHBlckNhc2UoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEhtYWNEUkJHKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlcbiAgICByZXR1cm4gbmV3IEhtYWNEUkJHKG9wdGlvbnMpO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG4gIHRoaXMucHJlZFJlc2lzdCA9ICEhb3B0aW9ucy5wcmVkUmVzaXN0O1xuXG4gIHRoaXMub3V0TGVuID0gdGhpcy5oYXNoLm91dFNpemU7XG4gIHRoaXMubWluRW50cm9weSA9IG9wdGlvbnMubWluRW50cm9weSB8fCB0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO1xuXG4gIHRoaXMucmVzZWVkID0gbnVsbDtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IG51bGw7XG4gIHRoaXMuSyA9IG51bGw7XG4gIHRoaXMuViA9IG51bGw7XG5cbiAgdmFyIGVudHJvcHkgPSB1dGlscy50b0FycmF5KG9wdGlvbnMuZW50cm9weSwgb3B0aW9ucy5lbnRyb3B5RW5jKTtcbiAgdmFyIG5vbmNlID0gdXRpbHMudG9BcnJheShvcHRpb25zLm5vbmNlLCBvcHRpb25zLm5vbmNlRW5jKTtcbiAgdmFyIHBlcnMgPSB1dGlscy50b0FycmF5KG9wdGlvbnMucGVycywgb3B0aW9ucy5wZXJzRW5jKTtcbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcbiAgdGhpcy5faW5pdChlbnRyb3B5LCBub25jZSwgcGVycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNEUkJHO1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKSB7XG4gIHZhciBzZWVkID0gZW50cm9weS5jb25jYXQobm9uY2UpLmNvbmNhdChwZXJzKTtcblxuICB0aGlzLksgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgdGhpcy5WID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5WLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5LW2ldID0gMHgwMDtcbiAgICB0aGlzLlZbaV0gPSAweDAxO1xuICB9XG5cbiAgdGhpcy5fdXBkYXRlKHNlZWQpO1xuICB0aGlzLnJlc2VlZCA9IDE7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSAweDEwMDAwMDAwMDAwMDA7ICAvLyAyXjQ4XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2htYWMgPSBmdW5jdGlvbiBobWFjKCkge1xuICByZXR1cm4gbmV3IGhhc2guaG1hYyh0aGlzLmhhc2gsIHRoaXMuSyk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShzZWVkKSB7XG4gIHZhciBrbWFjID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMCBdKTtcbiAgaWYgKHNlZWQpXG4gICAga21hYyA9IGttYWMudXBkYXRlKHNlZWQpO1xuICB0aGlzLksgPSBrbWFjLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gIGlmICghc2VlZClcbiAgICByZXR1cm47XG5cbiAgdGhpcy5LID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAxIF0pXG4gICAgICAgICAgICAgICAudXBkYXRlKHNlZWQpXG4gICAgICAgICAgICAgICAuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQgPSBmdW5jdGlvbiByZXNlZWQoZW50cm9weSwgZW50cm9weUVuYywgYWRkLCBhZGRFbmMpIHtcbiAgLy8gT3B0aW9uYWwgZW50cm9weSBlbmNcbiAgaWYgKHR5cGVvZiBlbnRyb3B5RW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbnRyb3B5RW5jO1xuICAgIGVudHJvcHlFbmMgPSBudWxsO1xuICB9XG5cbiAgZW50cm9weSA9IHV0aWxzLnRvQnVmZmVyKGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0J1ZmZlcihhZGQsIGFkZEVuYyk7XG5cbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcblxuICB0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkIHx8IFtdKSk7XG4gIHRoaXMucmVzZWVkID0gMTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKGxlbiwgZW5jLCBhZGQsIGFkZEVuYykge1xuICBpZiAodGhpcy5yZXNlZWQgPiB0aGlzLnJlc2VlZEludGVydmFsKVxuICAgIHRocm93IG5ldyBFcnJvcignUmVzZWVkIGlzIHJlcXVpcmVkJyk7XG5cbiAgLy8gT3B0aW9uYWwgZW5jb2RpbmdcbiAgaWYgKHR5cGVvZiBlbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG5cbiAgLy8gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gIGlmIChhZGQpIHtcbiAgICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcbiAgICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgfVxuXG4gIHZhciB0ZW1wID0gW107XG4gIHdoaWxlICh0ZW1wLmxlbmd0aCA8IGxlbikge1xuICAgIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgICB0ZW1wID0gdGVtcC5jb25jYXQodGhpcy5WKTtcbiAgfVxuXG4gIHZhciByZXMgPSB0ZW1wLnNsaWNlKDAsIGxlbik7XG4gIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB0aGlzLnJlc2VlZCsrO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzknLFxuICAgICAgICAnZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYScsXG4gICAgICAgICc5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCcsXG4gICAgICAgICc5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCcsXG4gICAgICAgICc1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3JyxcbiAgICAgICAgJzdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEnLFxuICAgICAgICAnNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUnLFxuICAgICAgICAnN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYnLFxuICAgICAgICAnNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGInLFxuICAgICAgICAnZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAnLFxuICAgICAgICAnNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMScsXG4gICAgICAgICcxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZicsXG4gICAgICAgICc2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2JyxcbiAgICAgICAgJzM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NicsXG4gICAgICAgICc0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxJyxcbiAgICAgICAgJzFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzJyxcbiAgICAgICAgJ2JlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlJyxcbiAgICAgICAgJ2IzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzJyxcbiAgICAgICAgJzdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxJyxcbiAgICAgICAgJ2U4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiJyxcbiAgICAgICAgJzY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCcsXG4gICAgICAgICc2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInXG4gICAgICBdXG4gICAgXVxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCcsXG4gICAgICAgICdkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYicsXG4gICAgICAgICdkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0JyxcbiAgICAgICAgJzQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmJyxcbiAgICAgICAgJzJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGInLFxuICAgICAgICAnMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzknLFxuICAgICAgICAnMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYicsXG4gICAgICAgICdkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQnLFxuICAgICAgICAnOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDcnLFxuICAgICAgICAnY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUnLFxuICAgICAgICAnOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViJyxcbiAgICAgICAgJzNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhJyxcbiAgICAgICAgJ2UzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlJyxcbiAgICAgICAgJ2M1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5JyxcbiAgICAgICAgJ2U0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmJyxcbiAgICAgICAgJzhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjJyxcbiAgICAgICAgJ2Q1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMnLFxuICAgICAgICAnNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCcsXG4gICAgICAgICdmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNicsXG4gICAgICAgICc4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxJyxcbiAgICAgICAgJ2YzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3JyxcbiAgICAgICAgJzRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NicsXG4gICAgICAgICdkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0JyxcbiAgICAgICAgJzYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MicsXG4gICAgICAgICdhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0JyxcbiAgICAgICAgJzMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NicsXG4gICAgICAgICdiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCcsXG4gICAgICAgICdiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmJyxcbiAgICAgICAgJzIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEnLFxuICAgICAgICAnNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYnLFxuICAgICAgICAnOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQnLFxuICAgICAgICAnMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYnLFxuICAgICAgICAnZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEnLFxuICAgICAgICAnMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEnLFxuICAgICAgICAnY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MycsXG4gICAgICAgICdjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3JyxcbiAgICAgICAgJ2QzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkJyxcbiAgICAgICAgJ2NkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYnLFxuICAgICAgICAnNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMnLFxuICAgICAgICAnYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUnLFxuICAgICAgICAnYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMnLFxuICAgICAgICAnNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCcsXG4gICAgICAgICc5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknXG4gICAgICBdXG4gICAgXVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudXRpbHMuYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHZhbCwgbXNnKSB7XG4gIGlmICghdmFsKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn07XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoIWVuYykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgdmFyIGhpID0gYyA+PiA4O1xuICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICBpZiAoaGkpXG4gICAgICAgIHJlcy5wdXNoKGhpLCBsbyk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9BcnJheSA9IHRvQXJyYXk7XG5cbmZ1bmN0aW9uIHplcm8yKHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvMiA9IHplcm8yO1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG51dGlscy5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoYXJyLCBlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRvSGV4KGFycik7XG4gIGVsc2VcbiAgICByZXR1cm4gYXJyO1xufTtcblxuLy8gUmVwcmVzZW50IG51bSBpbiBhIHctTkFGIGZvcm1cbmZ1bmN0aW9uIGdldE5BRihudW0sIHcpIHtcbiAgdmFyIG5hZiA9IFtdO1xuICB2YXIgd3MgPSAxIDw8ICh3ICsgMSk7XG4gIHZhciBrID0gbnVtLmNsb25lKCk7XG4gIHdoaWxlIChrLmNtcG4oMSkgPj0gMCkge1xuICAgIHZhciB6O1xuICAgIGlmIChrLmlzT2RkKCkpIHtcbiAgICAgIHZhciBtb2QgPSBrLmFuZGxuKHdzIC0gMSk7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cbiAgICBuYWYucHVzaCh6KTtcblxuICAgIC8vIE9wdGltaXphdGlvbiwgc2hpZnQgYnkgd29yZCBpZiBwb3NzaWJsZVxuICAgIHZhciBzaGlmdCA9IChrLmNtcG4oMCkgIT09IDAgJiYgay5hbmRsbih3cyAtIDEpID09PSAwKSA/ICh3ICsgMSkgOiAxO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2hpZnQ7IGkrKylcbiAgICAgIG5hZi5wdXNoKDApO1xuICAgIGsuaXVzaHJuKHNoaWZ0KTtcbiAgfVxuXG4gIHJldHVybiBuYWY7XG59XG51dGlscy5nZXROQUYgPSBnZXROQUY7XG5cbi8vIFJlcHJlc2VudCBrMSwgazIgaW4gYSBKb2ludCBTcGFyc2UgRm9ybVxuZnVuY3Rpb24gZ2V0SlNGKGsxLCBrMikge1xuICB2YXIganNmID0gW1xuICAgIFtdLFxuICAgIFtdXG4gIF07XG5cbiAgazEgPSBrMS5jbG9uZSgpO1xuICBrMiA9IGsyLmNsb25lKCk7XG4gIHZhciBkMSA9IDA7XG4gIHZhciBkMiA9IDA7XG4gIHdoaWxlIChrMS5jbXBuKC1kMSkgPiAwIHx8IGsyLmNtcG4oLWQyKSA+IDApIHtcblxuICAgIC8vIEZpcnN0IHBoYXNlXG4gICAgdmFyIG0xNCA9IChrMS5hbmRsbigzKSArIGQxKSAmIDM7XG4gICAgdmFyIG0yNCA9IChrMi5hbmRsbigzKSArIGQyKSAmIDM7XG4gICAgaWYgKG0xNCA9PT0gMylcbiAgICAgIG0xNCA9IC0xO1xuICAgIGlmIChtMjQgPT09IDMpXG4gICAgICBtMjQgPSAtMTtcbiAgICB2YXIgdTE7XG4gICAgaWYgKChtMTQgJiAxKSA9PT0gMCkge1xuICAgICAgdTEgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazEuYW5kbG4oNykgKyBkMSkgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTI0ID09PSAyKVxuICAgICAgICB1MSA9IC1tMTQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUxID0gbTE0O1xuICAgIH1cbiAgICBqc2ZbMF0ucHVzaCh1MSk7XG5cbiAgICB2YXIgdTI7XG4gICAgaWYgKChtMjQgJiAxKSA9PT0gMCkge1xuICAgICAgdTIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICAgICAgIHRoaXNba2V5XSA9IGNvbXB1dGVyLmNhbGwodGhpcyk7XG4gIH07XG59XG51dGlscy5jYWNoZWRQcm9wZXJ0eSA9IGNhY2hlZFByb3BlcnR5O1xuXG5mdW5jdGlvbiBwYXJzZUJ5dGVzKGJ5dGVzKSB7XG4gIHJldHVybiB0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnID8gdXRpbHMudG9BcnJheShieXRlcywgJ2hleCcpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcztcbn1cbnV0aWxzLnBhcnNlQnl0ZXMgPSBwYXJzZUJ5dGVzO1xuXG5mdW5jdGlvbiBpbnRGcm9tTEUoYnl0ZXMpIHtcbiAgcmV0dXJuIG5ldyBCTihieXRlcywgJ2hleCcsICdsZScpO1xufVxudXRpbHMuaW50RnJvbUxFID0gaW50RnJvbUxFO1xuXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2FyZ3NcIjogW1xuICAgIFtcbiAgICAgIFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICBcIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiXG4gICAgXVxuICBdLFxuICBcIl9mcm9tXCI6IFwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixcbiAgXCJfaWRcIjogXCJlbGxpcHRpY0A2LjMuMVwiLFxuICBcIl9pbkNhY2hlXCI6IHRydWUsXG4gIFwiX2luc3RhbGxhYmxlXCI6IHRydWUsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL2VsbGlwdGljXCIsXG4gIFwiX25vZGVWZXJzaW9uXCI6IFwiNi4wLjBcIixcbiAgXCJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbFwiOiB7XG4gICAgXCJob3N0XCI6IFwicGFja2FnZXMtMTYtZWFzdC5pbnRlcm5hbC5ucG1qcy5jb21cIixcbiAgICBcInRtcFwiOiBcInRtcC9lbGxpcHRpYy02LjMuMS50Z3pfMTQ2NTkyMTQxMzQwMl8wLjUyMDI5NjczODI1MDE4MTFcIlxuICB9LFxuICBcIl9ucG1Vc2VyXCI6IHtcbiAgICBcImVtYWlsXCI6IFwiZmVkb3JAaW5kdXRueS5jb21cIixcbiAgICBcIm5hbWVcIjogXCJpbmR1dG55XCJcbiAgfSxcbiAgXCJfbnBtVmVyc2lvblwiOiBcIjMuOC42XCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJzY29wZVwiOiBudWxsLFxuICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgXCJ0eXBlXCI6IFwicmFuZ2VcIlxuICB9LFxuICBcIl9yZXF1aXJlZEJ5XCI6IFtcbiAgICBcIi9icm93c2VyaWZ5LXNpZ25cIixcbiAgICBcIi9jcmVhdGUtZWNkaFwiXG4gIF0sXG4gIFwiX3Jlc29sdmVkXCI6IFwiaHR0cDovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiLFxuICBcIl9zaGFzdW1cIjogXCIxNzc4MWYyMTA5YWIwZWM2ODZiMTQ2YmRjZmY1ZDJlOGM2YWVjZWRhXCIsXG4gIFwiX3Nocmlua3dyYXBcIjogbnVsbCxcbiAgXCJfc3BlY1wiOiBcImVsbGlwdGljQF42LjAuMFwiLFxuICBcIl93aGVyZVwiOiBcIi9Vc2Vycy9ldmVicmlnaHQvZGV2ZWxvcG1lbnQvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiLFxuICBcImF1dGhvclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiRmVkb3IgSW5kdXRueVwiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJibi5qc1wiOiBcIl40LjQuMFwiLFxuICAgIFwiYnJvcmFuZFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiaGFzaC5qc1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLWNvbm5lY3RcIjogXCJeMS4wLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29weVwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcImdydW50LW1vY2hhLWlzdGFuYnVsXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJncnVudC1zYXVjZWxhYnNcIjogXCJeOC42LjJcIixcbiAgICBcImlzdGFuYnVsXCI6IFwiXjAuNC4yXCIsXG4gICAgXCJqc2NzXCI6IFwiXjIuOS4wXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi42LjBcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJkaXJlY3Rvcmllc1wiOiB7fSxcbiAgXCJkaXN0XCI6IHtcbiAgICBcInNoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgICBcInRhcmJhbGxcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwibGliXCJcbiAgXSxcbiAgXCJnaXRIZWFkXCI6IFwiYzUzZjVjZjNkODMyYzAwNzNlYjRhNGVkNDIzYTQ2NGNiY2U2OGYzZVwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWNcIixcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJFQ1wiLFxuICAgIFwiRWxsaXB0aWNcIixcbiAgICBcImN1cnZlXCIsXG4gICAgXCJDcnlwdG9ncmFwaHlcIlxuICBdLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJtYWluXCI6IFwibGliL2VsbGlwdGljLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHt9LFxuICBcInJlYWRtZVwiOiBcIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCFcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJqc2NzXCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwianNoaW50XCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwibGludFwiOiBcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXRcIixcbiAgICBcInVuaXRcIjogXCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwidmVyc2lvblwiOiBcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjYuMy4xXCJcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxuRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24obikge1xuICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IFR5cGVFcnJvcignbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgZXIsIGhhbmRsZXIsIGxlbiwgYXJncywgaSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cy5lcnJvciB8fFxuICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHtcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCBcImVycm9yXCIgZXZlbnQuJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNVbmRlZmluZWQoaGFuZGxlcikpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBmYXN0IGNhc2VzXG4gICAgICBjYXNlIDE6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICB2YXIgbTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IDA7XG4gIGVsc2UgaWYgKGlzRnVuY3Rpb24oZW1pdHRlci5fZXZlbnRzW3R5cGVdKSlcbiAgICByZXQgPSAxO1xuICBlbHNlXG4gICAgcmV0ID0gZW1pdHRlci5fZXZlbnRzW3R5cGVdLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlMZW4sIGl2TGVuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZCwgJ2JpbmFyeScpXG4gIH1cbiAgaWYgKHNhbHQgJiYgIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkge1xuICAgIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuICB9XG4gIGtleUxlbiA9IGtleUxlbiAvIDhcbiAgaXZMZW4gPSBpdkxlbiB8fCAwXG4gIHZhciBraSA9IDBcbiAgdmFyIGlpID0gMFxuICB2YXIga2V5ID0gbmV3IEJ1ZmZlcihrZXlMZW4pXG4gIHZhciBpdiA9IG5ldyBCdWZmZXIoaXZMZW4pXG4gIHZhciBhZGRtZCA9IDBcbiAgdmFyIG1kX2J1ZlxuICB2YXIgaVxuICB2YXIgYnVmcyA9IFtdXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGFkZG1kKysgPiAwKSB7XG4gICAgICBidWZzLnB1c2gobWRfYnVmKVxuICAgIH1cbiAgICBidWZzLnB1c2gocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIHtcbiAgICAgIGJ1ZnMucHVzaChzYWx0KVxuICAgIH1cbiAgICBtZF9idWYgPSBtZDUoQnVmZmVyLmNvbmNhdChidWZzKSlcbiAgICBidWZzID0gW11cbiAgICBpID0gMFxuICAgIGlmIChrZXlMZW4gPiAwKSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoa2V5TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAga2V5W2tpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGtleUxlbi0tXG4gICAgICAgIGkrK1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXZMZW4gPiAwICYmIGkgIT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChpdkxlbiA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGl2W2lpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGl2TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlMZW4gPT09IDAgJiYgaXZMZW4gPT09IDApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBtZF9idWYubGVuZ3RoOyBpKyspIHtcbiAgICBtZF9idWZbaV0gPSAwXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXZcbiAgfVxufVxuIiwidmFyIGhhc2ggPSBleHBvcnRzO1xuXG5oYXNoLnV0aWxzID0gcmVxdWlyZSgnLi9oYXNoL3V0aWxzJyk7XG5oYXNoLmNvbW1vbiA9IHJlcXVpcmUoJy4vaGFzaC9jb21tb24nKTtcbmhhc2guc2hhID0gcmVxdWlyZSgnLi9oYXNoL3NoYScpO1xuaGFzaC5yaXBlbWQgPSByZXF1aXJlKCcuL2hhc2gvcmlwZW1kJyk7XG5oYXNoLmhtYWMgPSByZXF1aXJlKCcuL2hhc2gvaG1hYycpO1xuXG4vLyBQcm94eSBoYXNoIGZ1bmN0aW9ucyB0byB0aGUgbWFpbiBvYmplY3Rcbmhhc2guc2hhMSA9IGhhc2guc2hhLnNoYTE7XG5oYXNoLnNoYTI1NiA9IGhhc2guc2hhLnNoYTI1Njtcbmhhc2guc2hhMjI0ID0gaGFzaC5zaGEuc2hhMjI0O1xuaGFzaC5zaGEzODQgPSBoYXNoLnNoYS5zaGEzODQ7XG5oYXNoLnNoYTUxMiA9IGhhc2guc2hhLnNoYTUxMjtcbmhhc2gucmlwZW1kMTYwID0gaGFzaC5yaXBlbWQucmlwZW1kMTYwO1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwidmFyIGhtYWMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfMyA9IHV0aWxzLnN1bTMyXzM7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xudmFyIEJsb2NrSGFzaCA9IGhhc2guY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTI1NigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTI1NikpXG4gICAgcmV0dXJuIG5ldyBTSEEyNTYoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTkgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTI1NiA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjI0LCBTSEEyNTYpO1xuZXhwb3J0cy5zaGEyMjQgPSBTSEEyMjQ7XG5cblNIQTIyNC5ibG9ja1NpemUgPSA1MTI7XG5TSEEyMjQub3V0U2l6ZSA9IDIyNDtcblNIQTIyNC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyMjQucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTIyNC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgLy8gSnVzdCB0cnVuY2F0ZSBvdXRwdXRcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgICAgICAgICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgICAgICAgICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAgICAgICAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgICAgICAgICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAgICAgICAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgICAgICAgICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGE1MTIgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gICAgV1tpICsgMV0gPSBzdW02NF80X2xvKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzRfaGksIGM0X2xvKTtcblxuICAgIHZhciBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIHZhciBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIHZhciBjMV9oaSA9IG1hajY0X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuICAgIHZhciBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4LFxuICAgICAgICAgICAgIDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcsXG4gICAgICAgICAgICAgMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyxcbiAgICAgICAgICAgICAweDE1MmZlY2Q4LCAweGY3MGU1OTM5LFxuICAgICAgICAgICAgIDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEsXG4gICAgICAgICAgICAgMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSxcbiAgICAgICAgICAgICAweGRiMGMyZTBkLCAweDY0Zjk4ZmE3LFxuICAgICAgICAgICAgIDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTM4NCwgU0hBNTEyKTtcbmV4cG9ydHMuc2hhMzg0ID0gU0hBMzg0O1xuXG5TSEEzODQuYmxvY2tTaXplID0gMTAyNDtcblNIQTM4NC5vdXRTaXplID0gMzg0O1xuU0hBMzg0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTM4NC5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTEpKVxuICAgIHJldHVybiBuZXcgU0hBMSgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgICAgICAgICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGExID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzID0gfn4oaSAvIDIwKTtcbiAgICB2YXIgdCA9IHN1bTMyXzUocm90bDMyKGEsIDUpLCBmdF8xKHMsIGIsIGMsIGQpLCBlLCBXW2ldLCBzaGExX0tbc10pO1xuICAgIGUgPSBkO1xuICAgIGQgPSBjO1xuICAgIGMgPSByb3RsMzIoYiwgMzApO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0O1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbn07XG5cblNIQTEucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cblxuZnVuY3Rpb24gY2g2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCJ2YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJykge1xuICAgIGlmICghZW5jKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB2YXIgaGkgPSBjID4+IDg7XG4gICAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgICBpZiAoaGkpXG4gICAgICAgICAgcmVzLnB1c2goaGksIGxvKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG51dGlscy5odG9ubCA9IGh0b25sO1xuXG5mdW5jdGlvbiB0b0hleDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdyA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnbGl0dGxlJylcbiAgICAgIHcgPSBodG9ubCh3KTtcbiAgICByZXMgKz0gemVybzgody50b1N0cmluZygxNikpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvOCA9IHplcm84O1xuXG5mdW5jdGlvbiBqb2luMzIobXNnLCBzdGFydCwgZW5kLCBlbmRpYW4pIHtcbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICBhc3NlcnQobGVuICUgNCA9PT0gMCk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuIC8gNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gc3RhcnQ7IGkgPCByZXMubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKVxuICAgICAgdyA9IChtc2dba10gPDwgMjQpIHwgKG1zZ1trICsgMV0gPDwgMTYpIHwgKG1zZ1trICsgMl0gPDwgOCkgfCBtc2dbayArIDNdO1xuICAgIGVsc2VcbiAgICAgIHcgPSAobXNnW2sgKyAzXSA8PCAyNCkgfCAobXNnW2sgKyAyXSA8PCAxNikgfCAobXNnW2sgKyAxXSA8PCA4KSB8IG1zZ1trXTtcbiAgICByZXNbaV0gPSB3ID4+PiAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdHIzMiA9IHJvdHIzMjtcblxuZnVuY3Rpb24gcm90bDMyKHcsIGIpIHtcbiAgcmV0dXJuICh3IDw8IGIpIHwgKHcgPj4+ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG51dGlscy5zdW0zMl8zID0gc3VtMzJfMztcblxuZnVuY3Rpb24gc3VtMzJfNChhLCBiLCBjLCBkKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCkgPj4+IDA7XG59XG51dGlscy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kLCBtc2cpIHtcbiAgaWYgKCFjb25kKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cbnV0aWxzLmFzc2VydCA9IGFzc2VydDtcblxudXRpbHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2xvID0gc3VtNjRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF81X2hpID0gc3VtNjRfNV9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbCArIGVsO1xuXG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2xvID0gcm90cjY0X2xvO1xuXG5mdW5jdGlvbiBzaHI2NF9oaShhaCwgYWwsIG51bSkge1xuICByZXR1cm4gYWggPj4+IG51bTtcbn07XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIlxudmFyIGluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGluZGV4T2YpIHJldHVybiBhcnIuaW5kZXhPZihvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTsiLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgYnJvcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcblxuZnVuY3Rpb24gTWlsbGVyUmFiaW4ocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kIHx8IG5ldyBicm9yYW5kLlJhbmQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gTWlsbGVyUmFiaW47XG5cbk1pbGxlclJhYmluLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShyYW5kKSB7XG4gIHJldHVybiBuZXcgTWlsbGVyUmFiaW4ocmFuZCk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgYnVmID0gdGhpcy5yYW5kLmdlbmVyYXRlKE1hdGguY2VpbChsZW4gLyA4KSk7XG5cbiAgLy8gU2V0IGxvdyBiaXRzXG4gIGJ1ZlswXSB8PSAzO1xuXG4gIC8vIE1hc2sgaGlnaCBiaXRzXG4gIHZhciBtYXNrID0gbGVuICYgMHg3O1xuICBpZiAobWFzayAhPT0gMClcbiAgICBidWZbYnVmLmxlbmd0aCAtIDFdID4+PSA3IC0gbWFzaztcblxuICByZXR1cm4gbmV3IGJuKGJ1Zik7XG59XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24gdGVzdChuLCBrLCBjYikge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgdmFyIG4yID0gbjEuc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICB2YXIgcHJpbWUgPSB0cnVlO1xuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZChuMik7XG4gICAgaWYgKGNiKVxuICAgICAgY2IoYSk7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcHJpbWU7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuZ2V0RGl2aXNvciA9IGZ1bmN0aW9uIGdldERpdmlzb3Iobiwgaykge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgdmFyIG4yID0gbjEuc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZChuMik7XG5cbiAgICB2YXIgZyA9IG4uZ2NkKGEpO1xuICAgIGlmIChnLmNtcG4oMSkgIT09IDApXG4gICAgICByZXR1cm4gZztcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG4gICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gYXNzZXJ0O1xuXG5mdW5jdGlvbiBhc3NlcnQodmFsLCBtc2cpIHtcbiAgaWYgKCF2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xufVxuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBhc3NlcnRFcXVhbChsLCByLCBtc2cpIHtcbiAgaWYgKGwgIT0gcilcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICgnQXNzZXJ0aW9uIGZhaWxlZDogJyArIGwgKyAnICE9ICcgKyByKSk7XG59O1xuIiwiZXhwb3J0cy5lbmRpYW5uZXNzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0xFJyB9O1xuXG5leHBvcnRzLmhvc3RuYW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5ob3N0bmFtZVxuICAgIH1cbiAgICBlbHNlIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubG9hZGF2ZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdIH07XG5cbmV4cG9ydHMudXB0aW1lID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMCB9O1xuXG5leHBvcnRzLmZyZWVtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLnRvdGFsbWVtID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFO1xufTtcblxuZXhwb3J0cy5jcHVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy50eXBlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0Jyb3dzZXInIH07XG5cbmV4cG9ydHMucmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5hcHBWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnRzLm5ldHdvcmtJbnRlcmZhY2VzXG49IGV4cG9ydHMuZ2V0TmV0d29ya0ludGVyZmFjZXNcbj0gZnVuY3Rpb24gKCkgeyByZXR1cm4ge30gfTtcblxuZXhwb3J0cy5hcmNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ2phdmFzY3JpcHQnIH07XG5cbmV4cG9ydHMucGxhdGZvcm0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnYnJvd3NlcicgfTtcblxuZXhwb3J0cy50bXBkaXIgPSBleHBvcnRzLnRtcERpciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJy90bXAnO1xufTtcblxuZXhwb3J0cy5FT0wgPSAnXFxuJztcbiIsIm1vZHVsZS5leHBvcnRzPXtcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjFcIjogXCJhZXMtMTI4LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yXCI6IFwiYWVzLTEyOC1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuM1wiOiBcImFlcy0xMjgtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjRcIjogXCJhZXMtMTI4LWNmYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMVwiOiBcImFlcy0xOTItZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyXCI6IFwiYWVzLTE5Mi1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjNcIjogXCJhZXMtMTkyLW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNFwiOiBcImFlcy0xOTItY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxXCI6IFwiYWVzLTI1Ni1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDJcIjogXCJhZXMtMjU2LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40M1wiOiBcImFlcy0yNTYtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0XCI6IFwiYWVzLTI1Ni1jZmJcIlxufSIsIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvYXNuMS5qc1xuLy8gRmVkb3IsIHlvdSBhcmUgYW1hemluZy5cblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxudmFyIFJTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnUlNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMicpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2NvZWZmaWNpZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHJpdmF0ZUtleSA9IFJTQVByaXZhdGVLZXlcblxudmFyIFJTQVB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdSU0FQdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHVibGljS2V5ID0gUlNBUHVibGljS2V5XG5cbnZhciBQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5QdWJsaWNLZXkgPSBQdWJsaWNLZXlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24xLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ25vbmUnKS5udWxsXygpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2N1cnZlJykub2JqaWQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdnJykuaW50KClcbiAgICApLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ1ByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHJpdmF0ZUtleSA9IFByaXZhdGVLZXlJbmZvXG52YXIgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgdGhpcy5rZXkoJ2RlY3J5cHQnKS5zZXEoKS5vYmooXG4gICAgICAgIHRoaXMua2V5KCdrZGUnKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgna2RlcGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgICAgICAgdGhpcy5rZXkoJ3NhbHQnKS5vY3RzdHIoKSxcbiAgICAgICAgICAgIHRoaXMua2V5KCdpdGVycycpLmludCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLmtleSgnY2lwaGVyJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdhbGdvJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgnaXYnKS5vY3RzdHIoKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuXG5leHBvcnRzLkVuY3J5cHRlZFByaXZhdGVLZXkgPSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mb1xuXG52YXIgRFNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdEU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJfa2V5JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZfa2V5JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuRFNBUHJpdmF0ZUtleSA9IERTQVByaXZhdGVLZXlcblxuZXhwb3J0cy5EU0FwYXJhbSA9IGFzbjEuZGVmaW5lKCdEU0FwYXJhbScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5pbnQoKVxufSlcbnZhciBFQ1ByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRUNQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlS2V5Jykub2N0c3RyKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShFQ1BhcmFtZXRlcnMpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNLZXknKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLkVDUHJpdmF0ZUtleSA9IEVDUHJpdmF0ZUtleVxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURcXHI/XFxuREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxccj9cXG5cXHI/XFxuKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXHI/XFxuL21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICguKikgS0VZLS0tLS1cXHI/XFxuL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxccj9cXG4tLS0tLUVORCBcXDEgS0VZLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9rZXksIHBhc3N3b3JkKSB7XG4gIHZhciBrZXkgPSBva2V5LnRvU3RyaW5nKClcbiAgdmFyIG1hdGNoID0ga2V5Lm1hdGNoKGZpbmRQcm9jKVxuICB2YXIgZGVjcnlwdGVkXG4gIGlmICghbWF0Y2gpIHtcbiAgICB2YXIgbWF0Y2gyID0ga2V5Lm1hdGNoKGZ1bGxSZWdleClcbiAgICBkZWNyeXB0ZWQgPSBuZXcgQnVmZmVyKG1hdGNoMlsyXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IG5ldyBCdWZmZXIobWF0Y2hbMl0sICdoZXgnKVxuICAgIHZhciBjaXBoZXJUZXh0ID0gbmV3IEJ1ZmZlcihtYXRjaFszXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdICsgJyBLRVknXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnUFVCTElDIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICBuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSA9IG5kYXRhLnN1YmplY3RQdWJsaWNLZXlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2VjJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ0VOQ1JZUFRFRCBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIGRhdGEgPSBkZWNyeXB0KGRhdGEsIHBhc3N3b3JkKVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGNhc2UgJ1BSSVZBVEUgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5Qcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VydmU6IG5kYXRhLmFsZ29yaXRobS5jdXJ2ZSxcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpLnByaXZhdGVLZXlcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIHBhcmFtczogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdSU0EgUFVCTElDIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ1JTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdEU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgIHBhcmFtczogYXNuMS5EU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIH1cbiAgICBjYXNlICdFQyBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VydmU6IGRhdGEucGFyYW1ldGVycy52YWx1ZSxcbiAgICAgICAgcHJpdmF0ZUtleTogZGF0YS5wcml2YXRlS2V5XG4gICAgICB9XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICB9XG59XG5wYXJzZUtleXMuc2lnbmF0dXJlID0gYXNuMS5zaWduYXR1cmVcbmZ1bmN0aW9uIGRlY3J5cHQgKGRhdGEsIHBhc3N3b3JkKSB7XG4gIHZhciBzYWx0ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHRcbiAgdmFyIGl0ZXJzID0gcGFyc2VJbnQoZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksIDEwKVxuICB2YXIgYWxnbyA9IGFlc2lkW2RhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbignLicpXVxuICB2YXIgaXYgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdlxuICB2YXIgY2lwaGVyVGV4dCA9IGRhdGEuc3ViamVjdFByaXZhdGVLZXlcbiAgdmFyIGtleWxlbiA9IHBhcnNlSW50KGFsZ28uc3BsaXQoJy0nKVsxXSwgMTApIC8gOFxuICB2YXIga2V5ID0gY29tcGF0LnBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJzLCBrZXlsZW4pXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufTtcblxuXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsInZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIE1BWF9BTExPQyA9IE1hdGgucG93KDIsIDMwKSAtIDEgLy8gZGVmYXVsdCBpbiBpb2pzXG5cbmV4cG9ydHMucGJrZGYyID0gcGJrZGYyXG5mdW5jdGlvbiBwYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBkaWdlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGRpZ2VzdFxuICAgIGRpZ2VzdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyJylcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBwYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdClcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGJhY2sodW5kZWZpbmVkLCByZXN1bHQpXG4gIH0pXG59XG5cbmV4cG9ydHMucGJrZGYyU3luYyA9IHBia2RmMlN5bmNcbmZ1bmN0aW9uIHBia2RmMlN5bmMgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGtleSBsZW5ndGgnKVxuICB9XG5cbiAgZGlnZXN0ID0gZGlnZXN0IHx8ICdzaGExJ1xuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2FsdCkpIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuXG4gIHZhciBoTGVuXG4gIHZhciBsID0gMVxuICB2YXIgREsgPSBuZXcgQnVmZmVyKGtleWxlbilcbiAgdmFyIGJsb2NrMSA9IG5ldyBCdWZmZXIoc2FsdC5sZW5ndGggKyA0KVxuICBzYWx0LmNvcHkoYmxvY2sxLCAwLCAwLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgclxuICB2YXIgVFxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IGw7IGkrKykge1xuICAgIGJsb2NrMS53cml0ZVVJbnQzMkJFKGksIHNhbHQubGVuZ3RoKVxuICAgIHZhciBVID0gY3JlYXRlSG1hYyhkaWdlc3QsIHBhc3N3b3JkKS51cGRhdGUoYmxvY2sxKS5kaWdlc3QoKVxuXG4gICAgaWYgKCFoTGVuKSB7XG4gICAgICBoTGVuID0gVS5sZW5ndGhcbiAgICAgIFQgPSBuZXcgQnVmZmVyKGhMZW4pXG4gICAgICBsID0gTWF0aC5jZWlsKGtleWxlbiAvIGhMZW4pXG4gICAgICByID0ga2V5bGVuIC0gKGwgLSAxKSAqIGhMZW5cbiAgICB9XG5cbiAgICBVLmNvcHkoVCwgMCwgMCwgaExlbilcblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgaXRlcmF0aW9uczsgaisrKSB7XG4gICAgICBVID0gY3JlYXRlSG1hYyhkaWdlc3QsIHBhc3N3b3JkKS51cGRhdGUoVSkuZGlnZXN0KClcblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBoTGVuOyBrKyspIHtcbiAgICAgICAgVFtrXSBePSBVW2tdXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlc3RQb3MgPSAoaSAtIDEpICogaExlblxuICAgIHZhciBsZW4gPSAoaSA9PT0gbCA/IHIgOiBoTGVuKVxuICAgIFQuY29weShESywgZGVzdFBvcywgMCwgbGVuKVxuICB9XG5cbiAgcmV0dXJuIERLXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmICghcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gbmV4dFRpY2s7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3MubmV4dFRpY2s7XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgnLi9wdWJsaWNFbmNyeXB0Jyk7XG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcmVxdWlyZSgnLi9wcml2YXRlRGVjcnlwdCcpO1xuXG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gZnVuY3Rpb24gcHJpdmF0ZUVuY3J5cHQoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHVibGljRW5jcnlwdChrZXksIGJ1ZiwgdHJ1ZSk7XG59O1xuXG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBmdW5jdGlvbiBwdWJsaWNEZWNyeXB0KGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnByaXZhdGVEZWNyeXB0KGtleSwgYnVmLCB0cnVlKTtcbn07IiwidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2VlZCwgbGVuKSB7XG4gIHZhciB0ID0gbmV3IEJ1ZmZlcignJyk7XG4gIHZhciAgaSA9IDAsIGM7XG4gIHdoaWxlICh0Lmxlbmd0aCA8IGxlbikge1xuICAgIGMgPSBpMm9wcyhpKyspO1xuICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKHNlZWQpLnVwZGF0ZShjKS5kaWdlc3QoKV0pO1xuICB9XG4gIHJldHVybiB0LnNsaWNlKDAsIGxlbik7XG59O1xuXG5mdW5jdGlvbiBpMm9wcyhjKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKDQpO1xuICBvdXQud3JpdGVVSW50MzJCRShjLDApO1xuICByZXR1cm4gb3V0O1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgbWdmID0gcmVxdWlyZSgnLi9tZ2YnKTtcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpO1xudmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQocHJpdmF0ZV9rZXksIGVuYywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZztcbiAgaWYgKHByaXZhdGVfa2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZV9rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZV9rZXkpO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBibihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBtc2c7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgbXNnID0gd2l0aFB1YmxpYyhuZXcgYm4oZW5jKSwga2V5KTtcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpO1xuICB9XG4gIHZhciB6QnVmZmVyID0gbmV3IEJ1ZmZlcihrIC0gbXNnLmxlbmd0aCk7XG4gIHpCdWZmZXIuZmlsbCgwKTtcbiAgbXNnID0gQnVmZmVyLmNvbmNhdChbekJ1ZmZlciwgbXNnXSwgayk7XG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICByZXR1cm4gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICByZXR1cm4gbXNnO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgbiA9IGtleS5tb2R1bHVzO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobXNnWzBdICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpO1xuICB2YXIgbWFza2VkRGIgPSAgbXNnLnNsaWNlKGhMZW4gKyAxKTtcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSk7XG4gIHZhciBkYiA9IHhvcihtYXNrZWREYiwgbWdmKHNlZWQsIGsgLSBoTGVuIC0gMSkpO1xuICBpZiAoY29tcGFyZShpSGFzaCwgZGIuc2xpY2UoMCwgaExlbikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIGkgPSBoTGVuO1xuICB3aGlsZSAoZGJbaV0gPT09IDApIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGRiW2krK10gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSk7XG59XG5cbmZ1bmN0aW9uIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKXtcbiAgdmFyIHAxID0gbXNnLnNsaWNlKDAsIDIpO1xuICB2YXIgaSA9IDI7XG4gIHZhciBzdGF0dXMgPSAwO1xuICB3aGlsZSAobXNnW2krK10gIT09IDApIHtcbiAgICBpZiAoaSA+PSBtc2cubGVuZ3RoKSB7XG4gICAgICBzdGF0dXMrKztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB2YXIgcHMgPSBtc2cuc2xpY2UoMiwgaSAtIDEpO1xuICB2YXIgcDIgPSBtc2cuc2xpY2UoaSAtIDEsIGkpO1xuXG4gIGlmICgocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMicgJiYgIXJldmVyc2UpIHx8IChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAxJyAmJiByZXZlcnNlKSl7XG4gICAgc3RhdHVzKys7XG4gIH1cbiAgaWYgKHBzLmxlbmd0aCA8IDgpIHtcbiAgICBzdGF0dXMrKztcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgcmV0dXJuICBtc2cuc2xpY2UoaSk7XG59XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpe1xuICBhID0gbmV3IEJ1ZmZlcihhKTtcbiAgYiA9IG5ldyBCdWZmZXIoYik7XG4gIHZhciBkaWYgPSAwO1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrKztcbiAgICBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICB9XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKTtcbiAgfVxuICByZXR1cm4gZGlmO1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJyk7XG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKTtcbnZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpO1xudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJyk7XG5cbnZhciBjb25zdGFudHMgPSB7XG4gIFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6IDQsXG4gIFJTQV9QS0NTMV9QQURESU46IDEsXG4gIFJTQV9OT19QQURESU5HOiAzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQocHVibGljX2tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nO1xuICBpZiAocHVibGljX2tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHB1YmxpY19rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNfa2V5KTtcbiAgdmFyIHBhZGRlZE1zZztcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgcGFkZGVkTXNnID0gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICBwYWRkZWRNc2cgPSBuZXcgYm4obXNnKTtcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gY3J0KHBhZGRlZE1zZywga2V5KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobUxlbiA+IGsgLSBoTGVuMiAtIDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKTtcbiAgfVxuICB2YXIgcHMgPSBuZXcgQnVmZmVyKGsgLSBtTGVuIC0gaExlbjIgLSAyKTtcbiAgcHMuZmlsbCgwKTtcbiAgdmFyIGRibGVuID0gayAtIGhMZW4gLSAxO1xuICB2YXIgc2VlZCA9IHJhbmRvbUJ5dGVzKGhMZW4pO1xuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBuZXcgQnVmZmVyKFsxXSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSk7XG4gIHZhciBtYXNrZWRTZWVkID0geG9yKHNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpO1xuICByZXR1cm4gbmV3IGJuKEJ1ZmZlci5jb25jYXQoW25ldyBCdWZmZXIoWzBdKSwgbWFza2VkU2VlZCwgbWFza2VkRGJdLCBrKSk7XG59XG5mdW5jdGlvbiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSl7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJyk7XG4gIH1cbiAgdmFyIHBzO1xuICBpZiAocmV2ZXJzZSkge1xuICAgIHBzID0gbmV3IEJ1ZmZlcihrIC0gbUxlbiAtIDMpO1xuICAgIHBzLmZpbGwoMHhmZik7XG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBibihCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKFswLCByZXZlcnNlPzE6Ml0pLCBwcywgbmV3IEJ1ZmZlcihbMF0pLCBtc2ddLCBrKSk7XG59XG5mdW5jdGlvbiBub25aZXJvKGxlbiwgY3J5cHRvKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKGxlbik7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICB2YXIgY3VyID0gMDtcbiAgdmFyIG51bTtcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoY3VyID09PSBjYWNoZS5sZW5ndGgpIHtcbiAgICAgIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICAgICAgY3VyID0gMDtcbiAgICB9XG4gICAgbnVtID0gY2FjaGVbY3VyKytdO1xuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufSIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5mdW5jdGlvbiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KSB7XG4gIHJldHVybiBuZXcgQnVmZmVyKHBhZGRlZE1zZ1xuICAgIC50b1JlZChibi5tb250KGtleS5tb2R1bHVzKSlcbiAgICAucmVkUG93KG5ldyBibihrZXkucHVibGljRXhwb25lbnQpKVxuICAgIC5mcm9tUmVkKClcbiAgICAudG9BcnJheSgpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoUHVibGljOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geG9yKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgYVtpXSBePSBiW2ldO1xuICB9XG4gIHJldHVybiBhXG59OyIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXFxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG5cbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xuXG5pZiAoY3J5cHRvICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByYW5kb21CeXRlc1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBvbGRCcm93c2VyXG59XG5cbmZ1bmN0aW9uIHJhbmRvbUJ5dGVzIChzaXplLCBjYikge1xuICAvLyBwaGFudG9tanMgbmVlZHMgdG8gdGhyb3dcbiAgaWYgKHNpemUgPiA2NTUzNikgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzJylcbiAgLy8gaW4gY2FzZSBicm93c2VyaWZ5ICBpc24ndCB1c2luZyB0aGUgVWludDhBcnJheSB2ZXJzaW9uXG4gIHZhciByYXdCeXRlcyA9IG5ldyBnbG9iYWwuVWludDhBcnJheShzaXplKVxuXG4gIC8vIFRoaXMgd2lsbCBub3Qgd29yayBpbiBvbGRlciBicm93c2Vycy5cbiAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICBpZiAoc2l6ZSA+IDApIHsgIC8vIGdldFJhbmRvbVZhbHVlcyBmYWlscyBvbiBJRSBpZiBzaXplID09IDBcbiAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhd0J5dGVzKVxuICB9XG4gIC8vIHBoYW50b21qcyBkb2Vzbid0IGxpa2UgYSBidWZmZXIgYmVpbmcgcGFzc2VkIGhlcmVcbiAgdmFyIGJ5dGVzID0gbmV3IEJ1ZmZlcihyYXdCeXRlcy5idWZmZXIpXG5cbiAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKG51bGwsIGJ5dGVzKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cbiIsIi8qXG5DcnlwdG9KUyB2My4xLjJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xuKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvd2lraS9MaWNlbnNlXG4qL1xuLyoqIEBwcmVzZXJ2ZVxuKGMpIDIwMTIgYnkgQ8OpZHJpYyBNZXNuaWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4vLyBjb25zdGFudHMgdGFibGVcbnZhciB6bCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXVxuXG52YXIgenIgPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl1cblxudmFyIHNsID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXVxuXG52YXIgc3IgPSBbXG4gIDgsIDksIDksIDExLCAxMywgMTUsIDE1LCA1LCA3LCA3LCA4LCAxMSwgMTQsIDE0LCAxMiwgNixcbiAgOSwgMTMsIDE1LCA3LCAxMiwgOCwgOSwgMTEsIDcsIDcsIDEyLCA3LCA2LCAxNSwgMTMsIDExLFxuICA5LCA3LCAxNSwgMTEsIDgsIDYsIDYsIDE0LCAxMiwgMTMsIDUsIDE0LCAxMywgMTMsIDcsIDUsXG4gIDE1LCA1LCA4LCAxMSwgMTQsIDE0LCA2LCAxNCwgNiwgOSwgMTIsIDksIDEyLCA1LCAxNSwgOCxcbiAgOCwgNSwgMTIsIDksIDEyLCA1LCAxNCwgNiwgOCwgMTMsIDYsIDUsIDE1LCAxMywgMTEsIDExXG5dXG5cbnZhciBobCA9IFsweDAwMDAwMDAwLCAweDVBODI3OTk5LCAweDZFRDlFQkExLCAweDhGMUJCQ0RDLCAweEE5NTNGRDRFXVxudmFyIGhyID0gWzB4NTBBMjhCRTYsIDB4NUM0REQxMjQsIDB4NkQ3MDNFRjMsIDB4N0E2RDc2RTksIDB4MDAwMDAwMDBdXG5cbmZ1bmN0aW9uIGJ5dGVzVG9Xb3JkcyAoYnl0ZXMpIHtcbiAgdmFyIHdvcmRzID0gW11cbiAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyssIGIgKz0gOCkge1xuICAgIHdvcmRzW2IgPj4+IDVdIHw9IGJ5dGVzW2ldIDw8ICgyNCAtIGIgJSAzMilcbiAgfVxuICByZXR1cm4gd29yZHNcbn1cblxuZnVuY3Rpb24gd29yZHNUb0J5dGVzICh3b3Jkcykge1xuICB2YXIgYnl0ZXMgPSBbXVxuICBmb3IgKHZhciBiID0gMDsgYiA8IHdvcmRzLmxlbmd0aCAqIDMyOyBiICs9IDgpIHtcbiAgICBieXRlcy5wdXNoKCh3b3Jkc1tiID4+PiA1XSA+Pj4gKDI0IC0gYiAlIDMyKSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQmxvY2sgKEgsIE0sIG9mZnNldCkge1xuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2YXIgb2Zmc2V0X2kgPSBvZmZzZXQgKyBpXG4gICAgdmFyIE1fb2Zmc2V0X2kgPSBNW29mZnNldF9pXVxuXG4gICAgLy8gU3dhcFxuICAgIE1bb2Zmc2V0X2ldID0gKFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCA4KSB8IChNX29mZnNldF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICYgMHhmZjAwZmYwMClcbiAgICApXG4gIH1cblxuICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuICB2YXIgYWwsIGJsLCBjbCwgZGwsIGVsXG4gIHZhciBhciwgYnIsIGNyLCBkciwgZXJcblxuICBhciA9IGFsID0gSFswXVxuICBiciA9IGJsID0gSFsxXVxuICBjciA9IGNsID0gSFsyXVxuICBkciA9IGRsID0gSFszXVxuICBlciA9IGVsID0gSFs0XVxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIHZhciB0XG4gIGZvciAoaSA9IDA7IGkgPCA4MDsgaSArPSAxKSB7XG4gICAgdCA9IChhbCArIE1bb2Zmc2V0ICsgemxbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGYxKGJsLCBjbCwgZGwpICsgaGxbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmMihibCwgY2wsIGRsKSArIGhsWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYmwsIGNsLCBkbCkgKyBobFsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGY0KGJsLCBjbCwgZGwpICsgaGxbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGY1KGJsLCBjbCwgZGwpICsgaGxbNF1cbiAgICB9XG4gICAgdCA9IHQgfCAwXG4gICAgdCA9IHJvdGwodCwgc2xbaV0pXG4gICAgdCA9ICh0ICsgZWwpIHwgMFxuICAgIGFsID0gZWxcbiAgICBlbCA9IGRsXG4gICAgZGwgPSByb3RsKGNsLCAxMClcbiAgICBjbCA9IGJsXG4gICAgYmwgPSB0XG5cbiAgICB0ID0gKGFyICsgTVtvZmZzZXQgKyB6cltpXV0pIHwgMFxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHQgKz0gZjUoYnIsIGNyLCBkcikgKyBoclswXVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0ICs9IGY0KGJyLCBjciwgZHIpICsgaHJbMV1cbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdCArPSBmMyhiciwgY3IsIGRyKSArIGhyWzJdXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHQgKz0gZjIoYnIsIGNyLCBkcikgKyBoclszXVxuICAgIH0gZWxzZSB7Ly8gaWYgKGk8ODApIHtcbiAgICAgIHQgKz0gZjEoYnIsIGNyLCBkcikgKyBocls0XVxuICAgIH1cblxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNyW2ldKVxuICAgIHQgPSAodCArIGVyKSB8IDBcbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdFxuICB9XG5cbiAgLy8gaW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcbiAgdCA9IChIWzFdICsgY2wgKyBkcikgfCAwXG4gIEhbMV0gPSAoSFsyXSArIGRsICsgZXIpIHwgMFxuICBIWzJdID0gKEhbM10gKyBlbCArIGFyKSB8IDBcbiAgSFszXSA9IChIWzRdICsgYWwgKyBicikgfCAwXG4gIEhbNF0gPSAoSFswXSArIGJsICsgY3IpIHwgMFxuICBIWzBdID0gdFxufVxuXG5mdW5jdGlvbiBmMSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICh5KSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjIgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHkpKSB8ICgofngpICYgKHopKSlcbn1cblxuZnVuY3Rpb24gZjMgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpIHwgKH4oeSkpKSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjQgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHopKSB8ICgoeSkgJiAofih6KSkpKVxufVxuXG5mdW5jdGlvbiBmNSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICgoeSkgfCAofih6KSkpKVxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gcmlwZW1kMTYwIChtZXNzYWdlKSB7XG4gIHZhciBIID0gWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzYsIDB4QzNEMkUxRjBdXG5cbiAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgIG1lc3NhZ2UgPSBuZXcgQnVmZmVyKG1lc3NhZ2UsICd1dGY4JylcbiAgfVxuXG4gIHZhciBtID0gYnl0ZXNUb1dvcmRzKG1lc3NhZ2UpXG5cbiAgdmFyIG5CaXRzTGVmdCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuICB2YXIgbkJpdHNUb3RhbCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuXG4gIC8vIEFkZCBwYWRkaW5nXG4gIG1bbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKVxuICBtWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG4gICAgKCgobkJpdHNUb3RhbCA8PCA4KSB8IChuQml0c1RvdGFsID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICgoKG5CaXRzVG90YWwgPDwgMjQpIHwgKG5CaXRzVG90YWwgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgcHJvY2Vzc0Jsb2NrKEgsIG0sIGkpXG4gIH1cblxuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgLy8gc2hvcnRjdXRcbiAgICB2YXIgSF9pID0gSFtpXVxuXG4gICAgLy8gU3dhcFxuICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgfCAoSF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoSF9pIDw8IDI0KSB8IChIX2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIH1cblxuICB2YXIgZGlnZXN0Ynl0ZXMgPSB3b3Jkc1RvQnl0ZXMoSClcbiAgcmV0dXJuIG5ldyBCdWZmZXIoZGlnZXN0Ynl0ZXMpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmlwZW1kMTYwXG4iLCIvLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IG5ldyBCdWZmZXIoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbiAgdGhpcy5fcyA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBsID0gdGhpcy5fbGVuICs9IGRhdGEubGVuZ3RoXG4gIHZhciBzID0gdGhpcy5fcyB8fCAwXG4gIHZhciBmID0gMFxuICB2YXIgYnVmZmVyID0gdGhpcy5fYmxvY2tcblxuICB3aGlsZSAocyA8IGwpIHtcbiAgICB2YXIgdCA9IE1hdGgubWluKGRhdGEubGVuZ3RoLCBmICsgdGhpcy5fYmxvY2tTaXplIC0gKHMgJSB0aGlzLl9ibG9ja1NpemUpKVxuICAgIHZhciBjaCA9ICh0IC0gZilcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2g7IGkrKykge1xuICAgICAgYnVmZmVyWyhzICUgdGhpcy5fYmxvY2tTaXplKSArIGldID0gZGF0YVtpICsgZl1cbiAgICB9XG5cbiAgICBzICs9IGNoXG4gICAgZiArPSBjaFxuXG4gICAgaWYgKChzICUgdGhpcy5fYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJ1ZmZlcilcbiAgICB9XG4gIH1cbiAgdGhpcy5fcyA9IHNcblxuICByZXR1cm4gdGhpc1xufVxuXG5IYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIC8vIFN1cHBvc2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBNLCBpbiBiaXRzLCBpcyBsXG4gIHZhciBsID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIEFwcGVuZCB0aGUgYml0IDEgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZVxuICB0aGlzLl9ibG9ja1t0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemVdID0gMHg4MFxuXG4gIC8vIGFuZCB0aGVuIGsgemVybyBiaXRzLCB3aGVyZSBrIGlzIHRoZSBzbWFsbGVzdCBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsICsgMSArIGspID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZSArIDEpXG5cbiAgaWYgKGwgJSAodGhpcy5fYmxvY2tTaXplICogOCkgPj0gdGhpcy5fZmluYWxTaXplICogOCkge1xuICAgIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgICB0aGlzLl9ibG9jay5maWxsKDApXG4gIH1cblxuICAvLyB0byB0aGlzIGFwcGVuZCB0aGUgYmxvY2sgd2hpY2ggaXMgZXF1YWwgdG8gdGhlIG51bWJlciBsIHdyaXR0ZW4gaW4gYmluYXJ5XG4gIC8vIFRPRE86IGhhbmRsZSBjYXNlIHdoZXJlIGwgaXMgPiBNYXRoLnBvdygyLCAyOSlcbiAgdGhpcy5fYmxvY2sud3JpdGVJbnQzMkJFKGwsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgdmFyIGhhc2ggPSB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spIHx8IHRoaXMuX2hhc2goKVxuXG4gIHJldHVybiBlbmMgPyBoYXNoLnRvU3RyaW5nKGVuYykgOiBoYXNoXG59XG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoXG4iLCJ2YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gU0hBIChhbGdvcml0aG0pIHtcbiAgYWxnb3JpdGhtID0gYWxnb3JpdGhtLnRvTG93ZXJDYXNlKClcblxuICB2YXIgQWxnb3JpdGhtID0gZXhwb3J0c1thbGdvcml0aG1dXG4gIGlmICghQWxnb3JpdGhtKSB0aHJvdyBuZXcgRXJyb3IoYWxnb3JpdGhtICsgJyBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyknKVxuXG4gIHJldHVybiBuZXcgQWxnb3JpdGhtKClcbn1cblxuZXhwb3J0cy5zaGEgPSByZXF1aXJlKCcuL3NoYScpXG5leHBvcnRzLnNoYTEgPSByZXF1aXJlKCcuL3NoYTEnKVxuZXhwb3J0cy5zaGEyMjQgPSByZXF1aXJlKCcuL3NoYTIyNCcpXG5leHBvcnRzLnNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbmV4cG9ydHMuc2hhMzg0ID0gcmVxdWlyZSgnLi9zaGEzODQnKVxuZXhwb3J0cy5zaGE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0wLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBkZXJpdmVkIGZyb20gc2hhMS5qcyBvZiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBTSEEtMCBhbmQgU0hBLTEgaXMganVzdCBhIGJpdHdpc2Ugcm90YXRlIGxlZnRcbiAqIG9wZXJhdGlvbiB3YXMgYWRkZWQuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYSwgSGFzaClcblxuU2hhLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhMSAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMSwgSGFzaClcblxuU2hhMS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsMSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDEpIHwgKG51bSA+Pj4gMzEpXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYTEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSByb3RsMShXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdKVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7ICsraikge1xuICAgIHZhciBzID0gfn4oaiAvIDIwKVxuICAgIHZhciB0ID0gKHJvdGw1KGEpICsgZnQocywgYiwgYywgZCkgKyBlICsgV1tqXSArIEtbc10pIHwgMFxuXG4gICAgZSA9IGRcbiAgICBkID0gY1xuICAgIGMgPSByb3RsMzAoYilcbiAgICBiID0gYVxuICAgIGEgPSB0XG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG59XG5cblNoYTEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDI4KVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMjI0XG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhBMkY5OCwgMHg3MTM3NDQ5MSwgMHhCNUMwRkJDRiwgMHhFOUI1REJBNSxcbiAgMHgzOTU2QzI1QiwgMHg1OUYxMTFGMSwgMHg5MjNGODJBNCwgMHhBQjFDNUVENSxcbiAgMHhEODA3QUE5OCwgMHgxMjgzNUIwMSwgMHgyNDMxODVCRSwgMHg1NTBDN0RDMyxcbiAgMHg3MkJFNUQ3NCwgMHg4MERFQjFGRSwgMHg5QkRDMDZBNywgMHhDMTlCRjE3NCxcbiAgMHhFNDlCNjlDMSwgMHhFRkJFNDc4NiwgMHgwRkMxOURDNiwgMHgyNDBDQTFDQyxcbiAgMHgyREU5MkM2RiwgMHg0QTc0ODRBQSwgMHg1Q0IwQTlEQywgMHg3NkY5ODhEQSxcbiAgMHg5ODNFNTE1MiwgMHhBODMxQzY2RCwgMHhCMDAzMjdDOCwgMHhCRjU5N0ZDNyxcbiAgMHhDNkUwMEJGMywgMHhENUE3OTE0NywgMHgwNkNBNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN0I3MEE4NSwgMHgyRTFCMjEzOCwgMHg0RDJDNkRGQywgMHg1MzM4MEQxMyxcbiAgMHg2NTBBNzM1NCwgMHg3NjZBMEFCQiwgMHg4MUMyQzkyRSwgMHg5MjcyMkM4NSxcbiAgMHhBMkJGRThBMSwgMHhBODFBNjY0QiwgMHhDMjRCOEI3MCwgMHhDNzZDNTFBMyxcbiAgMHhEMTkyRTgxOSwgMHhENjk5MDYyNCwgMHhGNDBFMzU4NSwgMHgxMDZBQTA3MCxcbiAgMHgxOUE0QzExNiwgMHgxRTM3NkMwOCwgMHgyNzQ4Nzc0QywgMHgzNEIwQkNCNSxcbiAgMHgzOTFDMENCMywgMHg0RUQ4QUE0QSwgMHg1QjlDQ0E0RiwgMHg2ODJFNkZGMyxcbiAgMHg3NDhGODJFRSwgMHg3OEE1NjM2RiwgMHg4NEM4NzgxNCwgMHg4Q0M3MDIwOCxcbiAgMHg5MEJFRkZGQSwgMHhBNDUwNkNFQiwgMHhCRUY5QTNGNywgMHhDNjcxNzhGMlxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjU2ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjU2LCBIYXNoKVxuXG5TaGEyNTYucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDZhMDllNjY3XG4gIHRoaXMuX2IgPSAweGJiNjdhZTg1XG4gIHRoaXMuX2MgPSAweDNjNmVmMzcyXG4gIHRoaXMuX2QgPSAweGE1NGZmNTNhXG4gIHRoaXMuX2UgPSAweDUxMGU1MjdmXG4gIHRoaXMuX2YgPSAweDliMDU2ODhjXG4gIHRoaXMuX2cgPSAweDFmODNkOWFiXG4gIHRoaXMuX2ggPSAweDViZTBjZDE5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gY2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMiB8IHggPDwgMzApIF4gKHggPj4+IDEzIHwgeCA8PCAxOSkgXiAoeCA+Pj4gMjIgfCB4IDw8IDEwKVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgpIHtcbiAgcmV0dXJuICh4ID4+PiA2IHwgeCA8PCAyNikgXiAoeCA+Pj4gMTEgfCB4IDw8IDIxKSBeICh4ID4+PiAyNSB8IHggPDwgNylcbn1cblxuZnVuY3Rpb24gZ2FtbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNyB8IHggPDwgMjUpIF4gKHggPj4+IDE4IHwgeCA8PCAxNCkgXiAoeCA+Pj4gMylcbn1cblxuZnVuY3Rpb24gZ2FtbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMTcgfCB4IDw8IDE1KSBeICh4ID4+PiAxOSB8IHggPDwgMTMpIF4gKHggPj4+IDEwKVxufVxuXG5TaGEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcbiAgdmFyIGYgPSB0aGlzLl9mIHwgMFxuICB2YXIgZyA9IHRoaXMuX2cgfCAwXG4gIHZhciBoID0gdGhpcy5faCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDY0OyArK2kpIFdbaV0gPSAoZ2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgZ2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl0pIHwgMFxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgNjQ7ICsraikge1xuICAgIHZhciBUMSA9IChoICsgc2lnbWExKGUpICsgY2goZSwgZiwgZykgKyBLW2pdICsgV1tqXSkgfCAwXG4gICAgdmFyIFQyID0gKHNpZ21hMChhKSArIG1haihhLCBiLCBjKSkgfCAwXG5cbiAgICBoID0gZ1xuICAgIGcgPSBmXG4gICAgZiA9IGVcbiAgICBlID0gKGQgKyBUMSkgfCAwXG4gICAgZCA9IGNcbiAgICBjID0gYlxuICAgIGIgPSBhXG4gICAgYSA9IChUMSArIFQyKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbiAgdGhpcy5fZiA9IChmICsgdGhpcy5fZikgfCAwXG4gIHRoaXMuX2cgPSAoZyArIHRoaXMuX2cpIHwgMFxuICB0aGlzLl9oID0gKGggKyB0aGlzLl9oKSB8IDBcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGEzODQgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhMzg0LCBTSEE1MTIpXG5cblNoYTM4NC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweGNiYmI5ZDVkXG4gIHRoaXMuX2JoID0gMHg2MjlhMjkyYVxuICB0aGlzLl9jaCA9IDB4OTE1OTAxNWFcbiAgdGhpcy5fZGggPSAweDE1MmZlY2Q4XG4gIHRoaXMuX2VoID0gMHg2NzMzMjY2N1xuICB0aGlzLl9maCA9IDB4OGViNDRhODdcbiAgdGhpcy5fZ2ggPSAweGRiMGMyZTBkXG4gIHRoaXMuX2hoID0gMHg0N2I1NDgxZFxuXG4gIHRoaXMuX2FsID0gMHhjMTA1OWVkOFxuICB0aGlzLl9ibCA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fY2wgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2RsID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lbCA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZmwgPSAweDY4NTgxNTExXG4gIHRoaXMuX2dsID0gMHg2NGY5OGZhN1xuICB0aGlzLl9obCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEzODQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNjQpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuICB3cml0ZUludDY0QkUodGhpcy5fZ2gsIHRoaXMuX2dsLCA0OClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2hoLCB0aGlzLl9obCwgNTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGE1MTJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuaW5oZXJpdHMoU3RyZWFtLCBFRSk7XG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMnKTtcblN0cmVhbS5Xcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcycpO1xuU3RyZWFtLkR1cGxleCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMnKTtcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzJyk7XG5TdHJlYW0uUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMnKTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9kdXBsZXguanNcIilcbiIsIi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBhbCBpbmhlcml0YW5jZSwgdGhpcyBjbGFzc1xuLy8gcHJvdG90eXBhbGx5IGluaGVyaXRzIGZyb20gUmVhZGFibGUsIGFuZCB0aGVuIHBhcmFzaXRpY2FsbHkgZnJvbVxuLy8gV3JpdGFibGUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3JlYWRhYmxlJyk7XG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxudXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTtcblxudmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5mb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbn1cblxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuXG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuXG4gIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xufVxuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcHJvY2Vzc05leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59IiwiLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5Jyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuUmVhZGFibGUuUmVhZGFibGVTdGF0ZSA9IFJlYWRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgU3RyZWFtID0gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTtcbiAgfSBjYXRjaCAoXykge30gZmluYWxseSB7XG4gICAgaWYgKCFTdHJlYW0pIFN0cmVhbSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiAgfVxufSkoKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIFN0cmluZ0RlY29kZXI7XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gICAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICAgIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xuICB9XG59XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtIHx8IGh3bSA9PT0gMCA/IGh3bSA6IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSB+IH50aGlzLmhpZ2hXYXRlck1hcms7XG5cbiAgLy8gQSBsaW5rZWQgbGlzdCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEgY2h1bmtzIGluc3RlYWQgb2YgYW4gYXJyYXkgYmVjYXVzZSB0aGVcbiAgLy8gbGlua2VkIGxpc3QgY2FuIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgZmFzdGVyIHRoYW5cbiAgLy8gYXJyYXkuc2hpZnQoKVxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5waXBlcyA9IG51bGw7XG4gIHRoaXMucGlwZXNDb3VudCA9IDA7XG4gIHRoaXMuZmxvd2luZyA9IG51bGw7XG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIHdoZW5ldmVyIHdlIHJldHVybiBudWxsLCB0aGVuIHdlIHNldCBhIGZsYWcgdG8gc2F5XG4gIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLlxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gd2hlbiBwaXBpbmcsIHdlIG9ubHkgY2FyZSBhYm91dCAncmVhZGFibGUnIGV2ZW50cyB0aGF0IGhhcHBlblxuICAvLyBhZnRlciByZWFkKClpbmcgYWxsIHRoZSBieXRlcyBhbmQgbm90IGdldHRpbmcgYW55IHB1c2hiYWNrLlxuICB0aGlzLnJhbk91dCA9IGZhbHNlO1xuXG4gIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG4gIHRoaXMuYXdhaXREcmFpbiA9IDA7XG5cbiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuICB0aGlzLnJlYWRpbmdNb3JlID0gZmFsc2U7XG5cbiAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgdGhpcy5lbmNvZGluZyA9IG51bGw7XG4gIGlmIChvcHRpb25zLmVuY29kaW5nKSB7XG4gICAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihvcHRpb25zLmVuY29kaW5nKTtcbiAgICB0aGlzLmVuY29kaW5nID0gb3B0aW9ucy5lbmNvZGluZztcbiAgfVxufVxuXG52YXIgRHVwbGV4O1xuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gICAgICBlbmNvZGluZyA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssICcnLCB0cnVlKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgYWRkVG9Gcm9udCkge1xuICB2YXIgZXIgPSBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKTtcbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0YXRlLmVuZGVkICYmICFhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgZSA9IG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGUpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kRW1pdHRlZCAmJiBhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgX2UgPSBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBfZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBza2lwQWRkO1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWFkZFRvRnJvbnQgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgIHNraXBBZGQgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBjaHVuay5sZW5ndGggPT09IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWRkVG9Gcm9udCkgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAvLyBEb24ndCBhZGQgdG8gdGhlIGJ1ZmZlciBpZiB3ZSd2ZSBkZWNvZGVkIHRvIGFuIGVtcHR5IHN0cmluZyBjaHVuayBhbmRcbiAgICAgIC8vIHdlJ3JlIG5vdCBpbiBvYmplY3QgbW9kZVxuICAgICAgaWYgKCFza2lwQWRkKSB7XG4gICAgICAgIC8vIGlmIHdlIHdhbnQgdGhlIGRhdGEgbm93LCBqdXN0IGVtaXQgaXQuXG4gICAgICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgICAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICAgICAgICAgIHN0cmVhbS5yZWFkKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5SZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDhNQlxudmFyIE1BWF9IV00gPSAweDgwMDAwMDtcbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIG47XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcbiAgaWYgKG4gIT09IG4pIHtcbiAgICAvLyBPbmx5IGZsb3cgb25lIGJ1ZmZlciBhdCBhIHRpbWVcbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgLy8gSWYgd2UncmUgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgaHdtLCB0aGVuIHJhaXNlIHRoZSBod20uXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuO1xuICAvLyBEb24ndCBoYXZlIGVub3VnaFxuICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufVxuXG4vLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuUmVhZGFibGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAobikge1xuICBkZWJ1ZygncmVhZCcsIG4pO1xuICBuID0gcGFyc2VJbnQobiwgMTApO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgbk9yaWcgPSBuO1xuXG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcblxuICAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoc3RhdGUubGVuZ3RoID49IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpO1xuXG4gIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmVcbiAgLy8gKmJlbG93KiB0aGUgY2FsbCB0byBfcmVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCBpbiBjZXJ0YWluXG4gIC8vIHN5bnRoZXRpYyBzdHJlYW0gY2FzZXMsIHN1Y2ggYXMgcGFzc3Rocm91Z2ggc3RyZWFtcywgX3JlYWRcbiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZVxuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgYnVmZmVyLCBwcm92aWRpbmcgZW5vdWdoIGRhdGEgd2hlblxuICAvLyBiZWZvcmUgdGhlcmUgd2FzICpub3QqIGVub3VnaC5cbiAgLy9cbiAgLy8gU28sIHRoZSBzdGVwcyBhcmU6XG4gIC8vIDEuIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc3RhdGUgb2YgdGhpbmdzIHdpbGwgYmUgYWZ0ZXIgd2UgZG9cbiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci5cbiAgLy9cbiAgLy8gMi4gSWYgdGhhdCByZXN1bHRpbmcgc3RhdGUgd2lsbCB0cmlnZ2VyIGEgX3JlYWQsIHRoZW4gY2FsbCBfcmVhZC5cbiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzXG4gIC8vIGRlZXBseSB1Z2x5IHRvIHdyaXRlIEFQSXMgdGhpcyB3YXksIGJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3QgbWVhblxuICAvLyB0aGF0IHRoZSBSZWFkYWJsZSBjbGFzcyBzaG91bGQgYmVoYXZlIGltcHJvcGVybHksIGFzIHN0cmVhbXMgYXJlXG4gIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuXG4gIC8vIFRha2Ugbm90ZSBpZiB0aGUgX3JlYWQgY2FsbCBpcyBzeW5jIG9yIGFzeW5jIChpZSwgaWYgdGhlIHJlYWQgY2FsbFxuICAvLyBoYXMgcmV0dXJuZWQgeWV0KSwgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgb3Igbm90IGl0J3Mgc2FmZSB0byBlbWl0XG4gIC8vICdyZWFkYWJsZScgZXRjLlxuICAvL1xuICAvLyAzLiBBY3R1YWxseSBwdWxsIHRoZSByZXF1ZXN0ZWQgY2h1bmtzIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZXR1cm4uXG5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7XG5cbiAgLy8gaWYgd2UgY3VycmVudGx5IGhhdmUgbGVzcyB0aGFuIHRoZSBoaWdoV2F0ZXJNYXJrLCB0aGVuIGFsc28gcmVhZCBzb21lXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH1cblxuICAvLyBob3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBhbmQgaWYgd2UncmUgYWxyZWFkeVxuICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7XG4gICAgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIHN0YXRlLnN5bmMgPSBmYWxzZTtcbiAgICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cbiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG4gIH1cblxuICB2YXIgcmV0O1xuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKTtlbHNlIHJldCA9IG51bGw7XG5cbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyID0gbnVsbDtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwcm9jZXNzTmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcblxuICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyO1xuXG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiBjbGVhbnVwO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcHJvY2Vzc05leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSkge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuXG4gICAgY2xlYW5lZFVwID0gdHJ1ZTtcblxuICAgIC8vIGlmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXBcbiAgLy8gaW4gb25kYXRhIGFnYWluLiBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gaW5jcmVhc2UgYXdhaXREcmFpbiBvbmNlIGJlY2F1c2VcbiAgLy8gZGVzdCB3aWxsIG9ubHkgZW1pdCBvbmUgJ2RyYWluJyBldmVudCBmb3IgdGhlIG11bHRpcGxlIHdyaXRlcy5cbiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLlxuICB2YXIgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICBzcmMub24oJ2RhdGEnLCBvbmRhdGEpO1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBpZiAoZmFsc2UgPT09IHJldCAmJiAhaW5jcmVhc2VkQXdhaXREcmFpbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pO1xuICAgICAgICBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBkZXN0c1tfaV0uZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgfXJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGkgPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGkgPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaSwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG5cbiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgIC8vIFN0YXJ0IGZsb3dpbmcgb24gbmV4dCB0aWNrIGlmIHN0cmVhbSBpc24ndCBleHBsaWNpdGx5IHBhdXNlZFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7XG4gICAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIGlmICghc3RhdGUucmVhZGluZykge1xuICAgICAgICBwcm9jZXNzTmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBzZWxmLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIHNlbGYucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IHNlbGYucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgdmFyIGV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcbiAgZm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChldikge1xuICAgIHN0cmVhbS5vbihldiwgc2VsZi5lbWl0LmJpbmQoc2VsZiwgZXYpKTtcbiAgfSk7XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgc2VsZi5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGE7ZWxzZSByZXQgPSBzdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7XG4gICAgc3RhdGUuYnVmZmVyLmNsZWFyKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVhZCBwYXJ0IG9mIGxpc3RcbiAgICByZXQgPSBmcm9tTGlzdFBhcnRpYWwobiwgc3RhdGUuYnVmZmVyLCBzdGF0ZS5kZWNvZGVyKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8vIEV4dHJhY3RzIG9ubHkgZW5vdWdoIGJ1ZmZlcmVkIGRhdGEgdG8gc2F0aXNmeSB0aGUgYW1vdW50IHJlcXVlc3RlZC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sIGxpc3QsIGhhc1N0cmluZ3MpIHtcbiAgdmFyIHJldDtcbiAgaWYgKG4gPCBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBzbGljZSBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5nc1xuICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pO1xuICAgIGxpc3QuaGVhZC5kYXRhID0gbGlzdC5oZWFkLmRhdGEuc2xpY2Uobik7XG4gIH0gZWxzZSBpZiAobiA9PT0gbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgcmV0ID0gbGlzdC5zaGlmdCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlclxuICAgIHJldCA9IGhhc1N0cmluZ3MgPyBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSA6IGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGFcbi8vIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkge1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICB2YXIgcmV0ID0gcC5kYXRhO1xuICBuIC09IHJldC5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkge1xuICB2YXIgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuKTtcbiAgdmFyIHAgPSBsaXN0LmhlYWQ7XG4gIHZhciBjID0gMTtcbiAgcC5kYXRhLmNvcHkocmV0KTtcbiAgbiAtPSBwLmRhdGEubGVuZ3RoO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHZhciBidWYgPSBwLmRhdGE7XG4gICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjtcbiAgICBidWYuY29weShyZXQsIHJldC5sZW5ndGggLSBuLCAwLCBuYik7XG4gICAgbiAtPSBuYjtcbiAgICBpZiAobiA9PT0gMCkge1xuICAgICAgaWYgKG5iID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICsrYztcbiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuaGVhZCA9IHA7XG4gICAgICAgIHAuZGF0YSA9IGJ1Zi5zbGljZShuYik7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgKytjO1xuICB9XG4gIGxpc3QubGVuZ3RoIC09IGM7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG5cbiAgLy8gSWYgd2UgZ2V0IGhlcmUgYmVmb3JlIGNvbnN1bWluZyBhbGwgdGhlIGJ5dGVzLCB0aGVuIHRoYXQgaXMgYVxuICAvLyBidWcgaW4gbm9kZS4gIFNob3VsZCBuZXZlciBoYXBwZW4uXG4gIGlmIChzdGF0ZS5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJ1wiZW5kUmVhZGFibGUoKVwiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7XG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKHN0YXRlLCBzdHJlYW0pIHtcbiAgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCIvLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvXG4vLyBzb21ldGhpbmcgd2l0aCB0aGUgZGF0YS4gIFNvbWV0aW1lcyBpdCdzIGNhbGxlZCBhIFwiZmlsdGVyXCIsXG4vLyBidXQgdGhhdCdzIG5vdCBhIGdyZWF0IG5hbWUgZm9yIGl0LCBzaW5jZSB0aGF0IGltcGxpZXMgYSB0aGluZyB3aGVyZVxuLy8gc29tZSBiaXRzIHBhc3MgdGhyb3VnaCwgYW5kIG90aGVycyBhcmUgc2ltcGx5IGlnbm9yZWQuICAoVGhhdCB3b3VsZFxuLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKVxuLy9cbi8vIFdoaWxlIHRoZSBvdXRwdXQgaXMgY2F1c2FsbHkgcmVsYXRlZCB0byB0aGUgaW5wdXQsIGl0J3Mgbm90IGFcbi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLFxuLy8gYSB6bGliIHN0cmVhbSBtaWdodCB0YWtlIG11bHRpcGxlIHBsYWluLXRleHQgd3JpdGVzKCksIGFuZCB0aGVuXG4vLyBlbWl0IGEgc2luZ2xlIGNvbXByZXNzZWQgY2h1bmsgc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuXG4vL1xuLy8gSGVyZSdzIGhvdyB0aGlzIHdvcmtzOlxuLy9cbi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZVxuLy8gc3RyZWFtIGNsYXNzZXMuICBXaGVuIHlvdSB3cml0ZShjaHVuayksIHRoYXQgY2FsbHMgX3dyaXRlKGNodW5rLGNiKVxuLy8gaW50ZXJuYWxseSwgYW5kIHJldHVybnMgZmFsc2UgaWYgdGhlcmUncyBhIGxvdCBvZiBwZW5kaW5nIHdyaXRlc1xuLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbFxuLy8gdGhlcmUncyBlbm91Z2ggcGVuZGluZyByZWFkYWJsZSBkYXRhIGJ1ZmZlcmVkIHVwLlxuLy9cbi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuXG4vLyBfcmVhZChuKSBpcyBjYWxsZWQsIGl0IHRyYW5zZm9ybXMgdGhlIHF1ZXVlZCB1cCBkYXRhLCBjYWxsaW5nIHRoZVxuLy8gYnVmZmVyZWQgX3dyaXRlIGNiJ3MgYXMgaXQgY29uc3VtZXMgY2h1bmtzLiAgSWYgY29uc3VtaW5nIGEgc2luZ2xlXG4vLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdFxuLy8gb3V0cHV0dGVkIGJpdCBjYWxscyB0aGUgcmVhZGNiLCBhbmQgc3Vic2VxdWVudCBjaHVua3MganVzdCBnbyBpbnRvXG4vLyB0aGUgcmVhZCBidWZmZXIsIGFuZCB3aWxsIGNhdXNlIGl0IHRvIGVtaXQgJ3JlYWRhYmxlJyBpZiBuZWNlc3NhcnkuXG4vL1xuLy8gVGhpcyB3YXksIGJhY2stcHJlc3N1cmUgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUgcmVhZGluZyBzaWRlLFxuLy8gc2luY2UgX3JlYWQgaGFzIHRvIGJlIGNhbGxlZCB0byBzdGFydCBwcm9jZXNzaW5nIGEgbmV3IGNodW5rLiAgSG93ZXZlcixcbi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmdcbi8vIGhlcmUuICBGb3IgZXhhbXBsZSwgaW1hZ2luZSBhIHN0cmVhbSB3aGVyZSBldmVyeSBieXRlIG9mIGlucHV0IGlzXG4vLyBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyIGZyb20gMC0yNTUsIGFuZCB0aGVuIHJlc3VsdHMgaW4gdGhhdCBtYW55XG4vLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluXG4vLyAxa2Igb2YgZGF0YSBiZWluZyBvdXRwdXQuICBJbiB0aGlzIGNhc2UsIHlvdSBjb3VsZCB3cml0ZSBhIHZlcnkgc21hbGxcbi8vIGFtb3VudCBvZiBpbnB1dCwgYW5kIGVuZCB1cCB3aXRoIGEgdmVyeSBsYXJnZSBhbW91bnQgb2Ygb3V0cHV0LiAgSW5cbi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbFxuLy8gdGhlIHN5c3RlbSB0byBzdG9wIGRvaW5nIHRoZSB0cmFuc2Zvcm0uICBBIHNpbmdsZSA0TUIgd3JpdGUgY291bGRcbi8vIGNhdXNlIHRoZSBzeXN0ZW0gdG8gcnVuIG91dCBvZiBtZW1vcnkuXG4vL1xuLy8gSG93ZXZlciwgZXZlbiBpbiBzdWNoIGEgcGF0aG9sb2dpY2FsIGNhc2UsIG9ubHkgYSBzaW5nbGUgd3JpdHRlbiBjaHVua1xuLy8gd291bGQgYmUgY29uc3VtZWQsIGFuZCB0aGVuIHRoZSByZXN0IHdvdWxkIHdhaXQgKHVuLXRyYW5zZm9ybWVkKSB1bnRpbFxuLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBEdXBsZXggPSByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybVN0YXRlKHN0cmVhbSkge1xuICB0aGlzLmFmdGVyVHJhbnNmb3JtID0gZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgcmV0dXJuIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpO1xuICB9O1xuXG4gIHRoaXMubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICB0aGlzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuICB0aGlzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0aGlzLndyaXRlZW5jb2RpbmcgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBhZnRlclRyYW5zZm9ybShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignbm8gd3JpdGVjYiBpbiBUcmFuc2Zvcm0gY2xhc3MnKSk7XG5cbiAgdHMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRzLndyaXRlY2IgPSBudWxsO1xuXG4gIGlmIChkYXRhICE9PSBudWxsICYmIGRhdGEgIT09IHVuZGVmaW5lZCkgc3RyZWFtLnB1c2goZGF0YSk7XG5cbiAgY2IoZXIpO1xuXG4gIHZhciBycyA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgcnMucmVhZGluZyA9IGZhbHNlO1xuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICBzdHJlYW0uX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0gbmV3IFRyYW5zZm9ybVN0YXRlKHRoaXMpO1xuXG4gIC8vIHdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdmFyIHN0cmVhbSA9IHRoaXM7XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIHRoaXMub25jZSgncHJlZmluaXNoJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlcikge1xuICAgICAgZG9uZShzdHJlYW0sIGVyKTtcbiAgICB9KTtlbHNlIGRvbmUoc3RyZWFtKTtcbiAgfSk7XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICB2YXIgd3MgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciB0cyA9IHN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHdzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAodHMudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTtcblxuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGFzeW5jV3JpdGUgPSAhcHJvY2Vzcy5icm93c2VyICYmIFsndjAuMTAnLCAndjAuOS4nXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLCA1KSkgPiAtMSA/IHNldEltbWVkaWF0ZSA6IHByb2Nlc3NOZXh0VGljaztcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGludGVybmFsVXRpbCA9IHtcbiAgZGVwcmVjYXRlOiByZXF1aXJlKCd1dGlsLWRlcHJlY2F0ZScpXG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtO1xuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBTdHJlYW0gPSByZXF1aXJlKCdzdCcgKyAncmVhbScpO1xuICB9IGNhdGNoIChfKSB7fSBmaW5hbGx5IHtcbiAgICBpZiAoIVN0cmVhbSkgU3RyZWFtID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuICB9XG59KSgpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH4gfnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gd3JpdGFibGVTdGF0ZUdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG52YXIgRHVwbGV4O1xuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdGhvdWdoIHRoZXkncmUgbm90XG4gIC8vIGluc3RhbmNlb2YgV3JpdGFibGUsIHRoZXkncmUgaW5zdGFuY2VvZiBSZWFkYWJsZS5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFdyaXRhYmxlKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBJZiB3ZSBnZXQgc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgYnVmZmVyLCBzdHJpbmcsIG51bGwsIG9yIHVuZGVmaW5lZCxcbi8vIGFuZCB3ZSdyZSBub3QgaW4gb2JqZWN0TW9kZSwgdGhlbiB0aGF0J3MgYW4gZXJyb3IuXG4vLyBPdGhlcndpc2Ugc3RyZWFtIGNodW5rcyBhcmUgYWxsIGNvbnNpZGVyZWQgdG8gYmUgb2YgbGVuZ3RoPTEsIGFuZCB0aGVcbi8vIHdhdGVybWFya3MgZGV0ZXJtaW5lIGhvdyBtYW55IG9iamVjdHMgdG8ga2VlcCBpbiB0aGUgYnVmZmVyLCByYXRoZXIgdGhhblxuLy8gaG93IG1hbnkgYnl0ZXMgb3IgY2hhcmFjdGVycy5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciB2YWxpZCA9IHRydWU7XG4gIHZhciBlciA9IGZhbHNlO1xuICAvLyBBbHdheXMgdGhyb3cgZXJyb3IgaWYgYSBudWxsIGlzIHdyaXR0ZW5cbiAgLy8gaWYgd2UgYXJlIG5vdCBpbiBvYmplY3QgbW9kZSB0aGVuIHRocm93XG4gIC8vIGlmIGl0IGlzIG5vdCBhIGJ1ZmZlciwgc3RyaW5nLCBvciB1bmRlZmluZWQuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nKTtcbiAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICBpZiAoZXIpIHtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7XG4gICAgdmFsaWQgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztlbHNlIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuXG4gIGlmIChzdGF0ZS5lbmRlZCkgd3JpdGVBZnRlckVuZCh0aGlzLCBjYik7ZWxzZSBpZiAodmFsaWRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGNiKSkge1xuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHJldCA9IHdyaXRlT3JCdWZmZXIodGhpcywgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuXG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBuZXcgV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcbiAgaWYgKHN5bmMpIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO2Vsc2UgY2IoZXIpO1xuXG4gIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cblxuZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHN5bmMgPSBzdGF0ZS5zeW5jO1xuICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiO1xuXG4gIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSk7XG5cbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gICAgaWYgKCFmaW5pc2hlZCAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8qPHJlcGxhY2VtZW50PiovXG4gICAgICBhc3luY1dyaXRlKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki9cbiAgICB9IGVsc2Uge1xuICAgICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpO1xuXG4gICAgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgICBpZiAoaG9sZGVyLm5leHQpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGhvbGRlci5uZXh0O1xuICAgICAgaG9sZGVyLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rO1xuICAgIGNodW5rID0gbnVsbDtcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nICYmICFzdGF0ZS5maW5pc2hlZCkgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbn07XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCkge1xuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuICBpZiAobmVlZCkge1xuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcblxuICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB2YXIgZW50cnkgPSBfdGhpcy5lbnRyeTtcbiAgICBfdGhpcy5lbnRyeSA9IG51bGw7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgICAgY2IoZXJyKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICB9XG4gICAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBfdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gX3RoaXM7XG4gICAgfVxuICB9O1xufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gQnVmZmVyTGlzdDtcblxuZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgdGhpcy5oZWFkID0gbnVsbDtcbiAgdGhpcy50YWlsID0gbnVsbDtcbiAgdGhpcy5sZW5ndGggPSAwO1xufVxuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiBudWxsIH07XG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgdGhpcy50YWlsID0gZW50cnk7XG4gICsrdGhpcy5sZW5ndGg7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKHYpIHtcbiAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgdGhpcy5oZWFkID0gZW50cnk7XG4gICsrdGhpcy5sZW5ndGg7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gIC0tdGhpcy5sZW5ndGg7XG4gIHJldHVybiByZXQ7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgdGhpcy5sZW5ndGggPSAwO1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIChzKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgdmFyIHJldCA9ICcnICsgcC5kYXRhO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHJldCArPSBzICsgcC5kYXRhO1xuICB9cmV0dXJuIHJldDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmNvbmNhdCA9IGZ1bmN0aW9uIChuKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGJ1ZmZlclNoaW0uYWxsb2MoMCk7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRoaXMuaGVhZC5kYXRhO1xuICB2YXIgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gIHZhciBpID0gMDtcbiAgd2hpbGUgKHApIHtcbiAgICBwLmRhdGEuY29weShyZXQsIGkpO1xuICAgIGkgKz0gcC5kYXRhLmxlbmd0aDtcbiAgICBwID0gcC5uZXh0O1xuICB9XG4gIHJldHVybiByZXQ7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanNcIilcbiIsInZhciBTdHJlYW0gPSAoZnVuY3Rpb24gKCl7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHJlcXVpcmUoJ3N0JyArICdyZWFtJyk7IC8vIGhhY2sgdG8gZml4IGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZSB3aGVuIHVzZWQgd2l0aCBicm93c2VyaWZ5XG4gIH0gY2F0Y2goXyl7fVxufSgpKTtcbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcmVhZGFibGUuanMnKTtcbmV4cG9ydHMuU3RyZWFtID0gU3RyZWFtIHx8IGV4cG9ydHM7XG5leHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0cztcbmV4cG9ydHMuV3JpdGFibGUgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5leHBvcnRzLkR1cGxleCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5leHBvcnRzLlRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzJyk7XG5leHBvcnRzLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuXG5pZiAoIXByb2Nlc3MuYnJvd3NlciAmJiBwcm9jZXNzLmVudi5SRUFEQUJMRV9TVFJFQU0gPT09ICdkaXNhYmxlJyAmJiBTdHJlYW0pIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qc1wiKVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qc1wiKVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBpc0J1ZmZlckVuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmdcbiAgfHwgZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgIGNhc2UgJ2hleCc6IGNhc2UgJ3V0ZjgnOiBjYXNlICd1dGYtOCc6IGNhc2UgJ2FzY2lpJzogY2FzZSAnYmluYXJ5JzogY2FzZSAnYmFzZTY0JzogY2FzZSAndWNzMic6IGNhc2UgJ3Vjcy0yJzogY2FzZSAndXRmMTZsZSc6IGNhc2UgJ3V0Zi0xNmxlJzogY2FzZSAncmF3JzogcmV0dXJuIHRydWU7XG4gICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgfVxuICAgICB9XG5cblxuZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgaWYgKGVuY29kaW5nICYmICFpc0J1ZmZlckVuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgfVxufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuIENFU1UtOCBpcyBoYW5kbGVkIGFzIHBhcnQgb2YgdGhlIFVURi04IGVuY29kaW5nLlxuLy9cbi8vIEBUT0RPIEhhbmRsaW5nIGFsbCBlbmNvZGluZ3MgaW5zaWRlIGEgc2luZ2xlIG9iamVjdCBtYWtlcyBpdCB2ZXJ5IGRpZmZpY3VsdFxuLy8gdG8gcmVhc29uIGFib3V0IHRoaXMgY29kZSwgc28gaXQgc2hvdWxkIGJlIHNwbGl0IHVwIGluIHRoZSBmdXR1cmUuXG4vLyBAVE9ETyBUaGVyZSBzaG91bGQgYmUgYSB1dGY4LXN0cmljdCBlbmNvZGluZyB0aGF0IHJlamVjdHMgaW52YWxpZCBVVEYtOCBjb2RlXG4vLyBwb2ludHMgYXMgdXNlZCBieSBDRVNVLTguXG52YXIgU3RyaW5nRGVjb2RlciA9IGV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSAoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCAnJyk7XG4gIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKTtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICAvLyBDRVNVLTggcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDMtYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIC8vIFVURi0xNiByZXByZXNlbnRzIGVhY2ggb2YgU3Vycm9nYXRlIFBhaXIgYnkgMi1ieXRlc1xuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMjtcbiAgICAgIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSB1dGYxNkRldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIC8vIEJhc2UtNjQgc3RvcmVzIDMgYnl0ZXMgaW4gNCBjaGFycywgYW5kIHBhZHMgdGhlIHJlbWFpbmRlci5cbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHBhc3NUaHJvdWdoV3JpdGU7XG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbm91Z2ggc3BhY2UgdG8gc3RvcmUgYWxsIGJ5dGVzIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4gVVRGLTggbmVlZHMgNFxuICAvLyBieXRlcywgYnV0IENFU1UtOCBtYXkgcmVxdWlyZSB1cCB0byA2ICgzIGJ5dGVzIHBlciBzdXJyb2dhdGUpLlxuICB0aGlzLmNoYXJCdWZmZXIgPSBuZXcgQnVmZmVyKDYpO1xuICAvLyBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXJyZW50IGluY29tcGxldGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIuXG4gIHRoaXMuY2hhclJlY2VpdmVkID0gMDtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJMZW5ndGggPSAwO1xufTtcblxuXG4vLyB3cml0ZSBkZWNvZGVzIHRoZSBnaXZlbiBidWZmZXIgYW5kIHJldHVybnMgaXQgYXMgSlMgc3RyaW5nIHRoYXQgaXNcbi8vIGd1YXJhbnRlZWQgdG8gbm90IGNvbnRhaW4gYW55IHBhcnRpYWwgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLiBBbnkgcGFydGlhbFxuLy8gY2hhcmFjdGVyIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBpcyBidWZmZXJlZCB1cCwgYW5kIHdpbGwgYmVcbi8vIHJldHVybmVkIHdoZW4gY2FsbGluZyB3cml0ZSBhZ2FpbiB3aXRoIHRoZSByZW1haW5pbmcgYnl0ZXMuXG4vL1xuLy8gTm90ZTogQ29udmVydGluZyBhIEJ1ZmZlciBjb250YWluaW5nIGFuIG9ycGhhbiBzdXJyb2dhdGUgdG8gYSBTdHJpbmdcbi8vIGN1cnJlbnRseSB3b3JrcywgYnV0IGNvbnZlcnRpbmcgYSBTdHJpbmcgdG8gYSBCdWZmZXIgKHZpYSBgbmV3IEJ1ZmZlcmAsIG9yXG4vLyBCdWZmZXIjd3JpdGUpIHdpbGwgcmVwbGFjZSBpbmNvbXBsZXRlIHN1cnJvZ2F0ZXMgd2l0aCB0aGUgdW5pY29kZVxuLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBTZWUgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjExNzMwMDkvIC5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciBjaGFyU3RyID0gJyc7XG4gIC8vIGlmIG91ciBsYXN0IHdyaXRlIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBtdWx0aWJ5dGUgY2hhcmFjdGVyXG4gIHdoaWxlICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgcmVtYWluaW5nIGJ5dGVzIHRoaXMgYnVmZmVyIGhhcyB0byBvZmZlciBmb3IgdGhpcyBjaGFyXG4gICAgdmFyIGF2YWlsYWJsZSA9IChidWZmZXIubGVuZ3RoID49IHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkKSA/XG4gICAgICAgIHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkIDpcbiAgICAgICAgYnVmZmVyLmxlbmd0aDtcblxuICAgIC8vIGFkZCB0aGUgbmV3IGJ5dGVzIHRvIHRoZSBjaGFyIGJ1ZmZlclxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgdGhpcy5jaGFyUmVjZWl2ZWQsIDAsIGF2YWlsYWJsZSk7XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgKz0gYXZhaWxhYmxlO1xuXG4gICAgaWYgKHRoaXMuY2hhclJlY2VpdmVkIDwgdGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgICAvLyBzdGlsbCBub3QgZW5vdWdoIGNoYXJzIGluIHRoaXMgYnVmZmVyPyB3YWl0IGZvciBtb3JlIC4uLlxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBieXRlcyBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlclxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShhdmFpbGFibGUsIGJ1ZmZlci5sZW5ndGgpO1xuXG4gICAgLy8gZ2V0IHRoZSBjaGFyYWN0ZXIgdGhhdCB3YXMgc3BsaXRcbiAgICBjaGFyU3RyID0gdGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsIHRoaXMuY2hhckxlbmd0aCkudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG5cbiAgICAvLyBDRVNVLTg6IGxlYWQgc3Vycm9nYXRlIChEODAwLURCRkYpIGlzIGFsc28gdGhlIGluY29tcGxldGUgY2hhcmFjdGVyXG4gICAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGNoYXJTdHIubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCArPSB0aGlzLnN1cnJvZ2F0ZVNpemU7XG4gICAgICBjaGFyU3RyID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgPSB0aGlzLmNoYXJMZW5ndGggPSAwO1xuXG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgYnl0ZXMgaW4gdGhpcyBidWZmZXIsIGp1c3QgZW1pdCBvdXIgY2hhclxuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY2hhclN0cjtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgYW5kIHNldCBjaGFyTGVuZ3RoIC8gY2hhclJlY2VpdmVkXG4gIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKTtcblxuICB2YXIgZW5kID0gYnVmZmVyLmxlbmd0aDtcbiAgaWYgKHRoaXMuY2hhckxlbmd0aCkge1xuICAgIC8vIGJ1ZmZlciB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgYnl0ZXMgd2UgZ290XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQsIGVuZCk7XG4gICAgZW5kIC09IHRoaXMuY2hhclJlY2VpdmVkO1xuICB9XG5cbiAgY2hhclN0ciArPSBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgZW5kKTtcblxuICB2YXIgZW5kID0gY2hhclN0ci5sZW5ndGggLSAxO1xuICB2YXIgY2hhckNvZGUgPSBjaGFyU3RyLmNoYXJDb2RlQXQoZW5kKTtcbiAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICBpZiAoY2hhckNvZGUgPj0gMHhEODAwICYmIGNoYXJDb2RlIDw9IDB4REJGRikge1xuICAgIHZhciBzaXplID0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgIHRoaXMuY2hhckxlbmd0aCArPSBzaXplO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IHNpemU7XG4gICAgdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCBzaXplLCAwLCBzaXplKTtcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIDAsIDAsIHNpemUpO1xuICAgIHJldHVybiBjaGFyU3RyLnN1YnN0cmluZygwLCBlbmQpO1xuICB9XG5cbiAgLy8gb3IganVzdCBlbWl0IHRoZSBjaGFyU3RyXG4gIHJldHVybiBjaGFyU3RyO1xufTtcblxuLy8gZGV0ZWN0SW5jb21wbGV0ZUNoYXIgZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIFVURi04IGNoYXJhY3RlciBhdFxuLy8gdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiBJZiBzbywgaXQgc2V0cyB0aGlzLmNoYXJMZW5ndGggdG8gdGhlIGJ5dGVcbi8vIGxlbmd0aCB0aGF0IGNoYXJhY3RlciwgYW5kIHNldHMgdGhpcy5jaGFyUmVjZWl2ZWQgdG8gdGhlIG51bWJlciBvZiBieXRlc1xuLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGlzIGNoYXJhY3Rlci5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmRldGVjdEluY29tcGxldGVDaGFyID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB3ZSBoYXZlIHRvIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhpcyBidWZmZXJcbiAgdmFyIGkgPSAoYnVmZmVyLmxlbmd0aCA+PSAzKSA/IDMgOiBidWZmZXIubGVuZ3RoO1xuXG4gIC8vIEZpZ3VyZSBvdXQgaWYgb25lIG9mIHRoZSBsYXN0IGkgYnl0ZXMgb2Ygb3VyIGJ1ZmZlciBhbm5vdW5jZXMgYW5cbiAgLy8gaW5jb21wbGV0ZSBjaGFyLlxuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSBpXTtcblxuICAgIC8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04I0Rlc2NyaXB0aW9uXG5cbiAgICAvLyAxMTBYWFhYWFxuICAgIGlmIChpID09IDEgJiYgYyA+PiA1ID09IDB4MDYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDI7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTEwWFhYWFxuICAgIGlmIChpIDw9IDIgJiYgYyA+PiA0ID09IDB4MEUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTExMFhYWFxuICAgIGlmIChpIDw9IDMgJiYgYyA+PiAzID09IDB4MUUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBpO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciByZXMgPSAnJztcbiAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoKVxuICAgIHJlcyA9IHRoaXMud3JpdGUoYnVmZmVyKTtcblxuICBpZiAodGhpcy5jaGFyUmVjZWl2ZWQpIHtcbiAgICB2YXIgY3IgPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgICB2YXIgYnVmID0gdGhpcy5jaGFyQnVmZmVyO1xuICAgIHZhciBlbmMgPSB0aGlzLmVuY29kaW5nO1xuICAgIHJlcyArPSBidWYuc2xpY2UoMCwgY3IpLnRvU3RyaW5nKGVuYyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gcGFzc1Rocm91Z2hXcml0ZShidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpIHtcbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBidWZmZXIubGVuZ3RoICUgMjtcbiAgdGhpcy5jaGFyTGVuZ3RoID0gdGhpcy5jaGFyUmVjZWl2ZWQgPyAyIDogMDtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDM7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMyA6IDA7XG59XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJ2YXIgaW5kZXhPZiA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcblxudmFyIE9iamVjdF9rZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cykgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSByZXMucHVzaChrZXkpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufTtcblxudmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgaWYgKHhzLmZvckVhY2gpIHJldHVybiB4cy5mb3JFYWNoKGZuKVxuICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbih4c1tpXSwgaSwgeHMpO1xuICAgIH1cbn07XG5cbnZhciBkZWZpbmVQcm9wID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ18nLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG5cbnZhciBnbG9iYWxzID0gWydBcnJheScsICdCb29sZWFuJywgJ0RhdGUnLCAnRXJyb3InLCAnRXZhbEVycm9yJywgJ0Z1bmN0aW9uJyxcbidJbmZpbml0eScsICdKU09OJywgJ01hdGgnLCAnTmFOJywgJ051bWJlcicsICdPYmplY3QnLCAnUmFuZ2VFcnJvcicsXG4nUmVmZXJlbmNlRXJyb3InLCAnUmVnRXhwJywgJ1N0cmluZycsICdTeW50YXhFcnJvcicsICdUeXBlRXJyb3InLCAnVVJJRXJyb3InLFxuJ2RlY29kZVVSSScsICdkZWNvZGVVUklDb21wb25lbnQnLCAnZW5jb2RlVVJJJywgJ2VuY29kZVVSSUNvbXBvbmVudCcsICdlc2NhcGUnLFxuJ2V2YWwnLCAnaXNGaW5pdGUnLCAnaXNOYU4nLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICd1bmRlZmluZWQnLCAndW5lc2NhcGUnXTtcblxuZnVuY3Rpb24gQ29udGV4dCgpIHt9XG5Db250ZXh0LnByb3RvdHlwZSA9IHt9O1xuXG52YXIgU2NyaXB0ID0gZXhwb3J0cy5TY3JpcHQgPSBmdW5jdGlvbiBOb2RlU2NyaXB0IChjb2RlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpIHJldHVybiBuZXcgU2NyaXB0KGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKCEoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7XG4gICAgfVxuICAgIFxuICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZiAoIWlmcmFtZS5zdHlsZSkgaWZyYW1lLnN0eWxlID0ge307XG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICB2YXIgd0V2YWwgPSB3aW4uZXZhbCwgd0V4ZWNTY3JpcHQgPSB3aW4uZXhlY1NjcmlwdDtcblxuICAgIGlmICghd0V2YWwgJiYgd0V4ZWNTY3JpcHQpIHtcbiAgICAgICAgLy8gd2luLmV2YWwoKSBtYWdpY2FsbHkgYXBwZWFycyB3aGVuIHRoaXMgaXMgY2FsbGVkIGluIElFOlxuICAgICAgICB3RXhlY1NjcmlwdC5jYWxsKHdpbiwgJ251bGwnKTtcbiAgICAgICAgd0V2YWwgPSB3aW4uZXZhbDtcbiAgICB9XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB3aW5ba2V5XSA9IGNvbnRleHRba2V5XTtcbiAgICB9KTtcbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGNvbnRleHRba2V5XSkge1xuICAgICAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB2YXIgd2luS2V5cyA9IE9iamVjdF9rZXlzKHdpbik7XG5cbiAgICB2YXIgcmVzID0gd0V2YWwuY2FsbCh3aW4sIHRoaXMuY29kZSk7XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyh3aW4pLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIC8vIEF2b2lkIGNvcHlpbmcgY2lyY3VsYXIgb2JqZWN0cyBsaWtlIGB0b3BgIGFuZCBgd2luZG93YCBieSBvbmx5XG4gICAgICAgIC8vIHVwZGF0aW5nIGV4aXN0aW5nIGNvbnRleHQgcHJvcGVydGllcyBvciBuZXcgcHJvcGVydGllcyBpbiB0aGUgYHdpbmBcbiAgICAgICAgLy8gdGhhdCB3YXMgb25seSBpbnRyb2R1Y2VkIGFmdGVyIHRoZSBldmFsLlxuICAgICAgICBpZiAoa2V5IGluIGNvbnRleHQgfHwgaW5kZXhPZih3aW5LZXlzLCBrZXkpID09PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gd2luW2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvckVhY2goZ2xvYmFscywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gY29udGV4dCkpIHtcbiAgICAgICAgICAgIGRlZmluZVByb3AoY29udGV4dCwga2V5LCB3aW5ba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgXG4gICAgcmV0dXJuIHJlcztcbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXZhbCh0aGlzLmNvZGUpOyAvLyBtYXliZS4uLlxufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5Jbk5ld0NvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjdHggPSBTY3JpcHQuY3JlYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB2YXIgcmVzID0gdGhpcy5ydW5JbkNvbnRleHQoY3R4KTtcblxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY3R4KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBjb250ZXh0W2tleV0gPSBjdHhba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG59O1xuXG5mb3JFYWNoKE9iamVjdF9rZXlzKFNjcmlwdC5wcm90b3R5cGUpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGV4cG9ydHNbbmFtZV0gPSBTY3JpcHRbbmFtZV0gPSBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgcyA9IFNjcmlwdChjb2RlKTtcbiAgICAgICAgcmV0dXJuIHNbbmFtZV0uYXBwbHkocywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9O1xufSk7XG5cbmV4cG9ydHMuY3JlYXRlU2NyaXB0ID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5TY3JpcHQoY29kZSk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBTY3JpcHQuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQ29udGV4dCgpO1xuICAgIGlmKHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGNvbnRleHQpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jO1xudmFyIENvbWJpbmVkQnVmZmVyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLkNvbWJpbmVkQnVmZmVyO1xudmFyIHV0ZjggPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvdXRmOCcpO1xudmFyIFVucGFja2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzXCIpLlVucGFja2VyO1xuXG5kZXNjcmliZSgnYnVmZmVycycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIGhhdmUgaGVscGZ1bCB0b1N0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcbiAgICBiLndyaXRlSW50OCgxKTtcbiAgICBiLndyaXRlSW50OCg4KTtcbiAgICBiLndyaXRlSW50OCgxNSk7XG4gICAgYi53cml0ZUludDgoMTI3KTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgc3RyID0gYi50b1N0cmluZygpO1xuICAgIHZhciBoZXggPSBiLnRvSGV4KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBzdHIgKS50b0NvbnRhaW4oXCIoIHBvc2l0aW9uPTQgKVxcbiAgMDEgMDggMGYgN2ZcIik7XG4gICAgZXhwZWN0KGhleCkudG9CZShcIjAxIDA4IDBmIDdmIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQ4KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50OCgwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMTYtYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQxNiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0VUludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50MzIoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDgtYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDgoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDgoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0SW50MTYoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQzMigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIGxpc3QgY29ycmVjdGx5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDUpO1xuICAgIGIud3JpdGVVSW50OCgweDkwIHwgMHgyKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2EnKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2InKTtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGhleCA9IGIudG9IZXgoKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGhleCkudG9CZShcIjkyIDgxIDYxIDgxIDYyIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgbGlzdCBjb3JyZWN0bHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4OTIpO1xuICAgIGIud3JpdGVVSW50OCgweDgxKTtcbiAgICBiLndyaXRlVUludDgoMHg2MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4ODEpO1xuICAgIGIud3JpdGVVSW50OCgweDYyKTtcbiAgICBiLnJlc2V0KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRhdGEgPSBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGIgKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGF0YVswXSkudG9CZSgnYScpO1xuICAgIGV4cGVjdChkYXRhWzFdKS50b0JlKCdiJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb21iaW5lZEJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHJlYWQgaW50OCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIxID0gYWxsb2MoMSk7XG4gICAgdmFyIGIyID0gYWxsb2MoMSk7XG4gICAgYjEucHV0SW50OCgwLCAxKTtcbiAgICBiMi5wdXRJbnQ4KDAsIDIpO1xuXG4gICAgdmFyIGIgPSBuZXcgQ29tYmluZWRCdWZmZXIoW2IxLGIyXSk7XG4gICAgXG4gICAgLy8gV2hlblxuICAgIHZhciBmaXJzdCA9IGIucmVhZEludDgoKTtcbiAgICB2YXIgc2Vjb25kID0gYi5yZWFkSW50OCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChmaXJzdCkudG9CZSgxKTtcbiAgICBleHBlY3Qoc2Vjb25kKS50b0JlKDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgZGl2aWRlZCBmbG9hdDY0JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgaW5uZXIgPSBhbGxvYyg4KTtcbiAgICBpbm5lci5wdXRGbG9hdDY0KDAsIDAuMSk7XG5cbiAgICB2YXIgYiA9IG5ldyBDb21iaW5lZEJ1ZmZlcihbaW5uZXIucmVhZFNsaWNlKDQpLGlubmVyLnJlYWRTbGljZSg0KV0pO1xuICAgIFxuICAgIC8vIFdoZW5cbiAgICB2YXIgcmVhZCA9IGIucmVhZEZsb2F0NjQoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVhZCkudG9CZSgwLjEpO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB3cml0ZVN0cmluZyhiLCBzdHIpIHtcbiAgdmFyIGJ5dGVzID0gdXRmOC5lbmNvZGUoc3RyKTtcbiAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gIGIud3JpdGVVSW50OCgweDgwIHwgc2l6ZSk7XG4gIGIud3JpdGVCeXRlcyhieXRlcyk7XG4gIHJldHVybiBiO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBDaHVua2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NodW5raW5nJykuQ2h1bmtlcjtcbnZhciBEZWNodW5rZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2h1bmtpbmcnKS5EZWNodW5rZXI7XG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2M7XG52YXIgQ29tYmluZWRCdWZmZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuQ29tYmluZWRCdWZmZXI7XG52YXIgRHVtbXlDaGFubmVsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLWR1bW15LmpzJykuY2hhbm5lbDtcblxuZGVzY3JpYmUoJ0NodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBjaHVuayBzaW1wbGUgZGF0YScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQzMigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwOCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGNodW5rIGJsb2JzIGxhcmdlciB0aGFuIHRoZSBvdXRwdXQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCwgNCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUJ5dGVzKGJ5dGVzKCAxLDIsMyw0LDUsNiApKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBjaC50b0hleCgpICkudG9CZShcIjAwIDAyIDAxIDAyIDAwIDAyIDAzIDA0IDAwIDAyIDA1IDA2IFwiKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgaW5jbHVkZSBtZXNzYWdlIGJvdW5kYXJpZXMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MzIoMSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwNCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwNCAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEZWNodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCB1bmNodW5rIGEgc2ltcGxlIG1lc3NhZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtZXNzYWdlcyA9IFtdO1xuICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihkZWNodW5rZXIpO1xuICAgIGRlY2h1bmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihidWZmZXIpIHsgbWVzc2FnZXMucHVzaChidWZmZXIpOyB9O1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQxNigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigzKTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIG1lc3NhZ2VzWzBdLnRvSGV4KCkgKS50b0JlKCBcIjAwIDAxIDAwIDAyIDAwIDAzIFwiICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG1lc3NhZ2Ugc3BsaXQgYXQgYW55IHBvaW50JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBBbmQgZ2l2ZW4gdGhlIGZvbGxvd2luZyBtZXNzYWdlXG4gICAgY2h1bmtlci53cml0ZUludDgoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDIpO1xuICAgIGNodW5rZXIud3JpdGVJbnQzMigzKTtcbiAgICBjaHVua2VyLndyaXRlVUludDgoNCk7XG4gICAgY2h1bmtlci53cml0ZVVJbnQzMig1KTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIHZhciBjaHVua2VkID0gY2gudG9CdWZmZXIoKTtcblxuICAgIC8vIFdoZW4gSSB0cnkgc3BsaXR0aW5nIHRoaXMgY2h1bmtlZCBkYXRhIGF0IGV2ZXJ5IHBvc3NpYmxlIHBvc2l0aW9uXG4gICAgLy8gaW50byB0d28gc2VwYXJhdGUgYnVmZmVycywgYW5kIHNlbmQgdGhvc2UgdG8gdGhlIGRlY2h1bmtlclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2h1bmtlZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNsaWNlMSA9IGNodW5rZWQuZ2V0U2xpY2UoIDAsIGkgKTtcbiAgICAgIHZhciBzbGljZTIgPSBjaHVua2VkLmdldFNsaWNlKCBpLCBjaHVua2VkLmxlbmd0aCAtIGkgKTtcblxuICAgICAgLy8gRGVjaHVuayB0aGUgc2xpY2VzXG4gICAgICB2YXIgbWVzc2FnZXMgPSBbXTtcbiAgICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgICBkZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYnVmZmVyKSB7IG1lc3NhZ2VzLnB1c2goYnVmZmVyKTsgfTtcbiAgICAgIGRlY2h1bmtlci53cml0ZSggc2xpY2UxICk7XG4gICAgICBkZWNodW5rZXIud3JpdGUoIHNsaWNlMiApO1xuXG4gICAgICAvLyBUaGVuLCB0aGUgb3V0cHV0IHNob3VsZCBiZSBjb3JyZWN0XG4gICAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICAgIGV4cGVjdCggbWVzc2FnZXNbMF0udG9IZXgoKSApLnRvQmUoIFwiMDEgMDAgMDIgMDAgMDAgMDAgMDMgMDQgMDAgMDAgMDAgMDUgXCIgKTtcbiAgICB9O1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBieXRlcygpIHtcbiAgdmFyIGIgPSBhbGxvYyggYXJndW1lbnRzLmxlbmd0aCApO1xuICBmb3IoIHZhciBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuICAgIGIud3JpdGVVSW50OCggYXJndW1lbnRzW2ldICk7XG4gIH1cbiAgYi5wb3NpdGlvbiA9IDA7XG4gIHJldHVybiBiO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIER1bW15Q2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcycpO1xudmFyIGNvbm5lY3QgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL2Nvbm5lY3Rvci5qc1wiKS5jb25uZWN0O1xuXG5kZXNjcmliZSgnY29ubmVjdG9yJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIGJhc2ljIG1lc3NhZ2VzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiKVxuXG4gICAgLy8gV2hlblxuICAgIGNvbm4uaW5pdGlhbGl6ZSggXCJteWRyaXZlci8wLjAuMFwiLCB7c2NoZW1lOiBcImJhc2ljXCIsIHByaW5jaXBhbDogXCJuZW80alwiLCBjcmVkZW50aWFsczogXCJuZW80alwifSwgIHtcbiAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiggbXNnICkge1xuICAgICAgICBleHBlY3QoIG1zZyApLm5vdC50b0JlTnVsbCgpO1xuICAgICAgICBjb25uLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcbiAgaXQoJ3Nob3VsZCByZXRyaWV2ZSBzdHJlYW0nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIpXG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0gKTtcbiAgICBjb25uLnJ1biggXCJSRVRVUk4gMS4wXCIsIHt9ICk7XG4gICAgY29ubi5wdWxsQWxsKCB7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uKCByZWNvcmQgKSB7XG4gICAgICAgIHJlY29yZHMucHVzaCggcmVjb3JkICk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uKCB0YWlsICkge1xuICAgICAgICBleHBlY3QoIHJlY29yZHNbMF1bMF0gKS50b0JlKCAxICk7XG4gICAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbm4uc3luYygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHVzZSBEdW1teUNoYW5uZWwgdG8gcmVhZCB3aGF0IGdldHMgd3JpdHRlbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBvYnNlcnZlciA9IER1bW15Q2hhbm5lbC5vYnNlcnZlcjtcbiAgICB2YXIgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIsIHtjaGFubmVsOkR1bW15Q2hhbm5lbC5jaGFubmVsfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0gKTtcbiAgICBjb25uLnJ1biggXCJSRVRVUk4gMVwiLCB7fSApO1xuICAgIGNvbm4uc3luYygpO1xuICAgIGV4cGVjdCggb2JzZXJ2ZXIuaW5zdGFuY2UudG9IZXgoKSApLnRvQmUoICc2MCA2MCBiMCAxNyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA0MSBiMiAwMSA4ZSA2ZCA3OSA2NCA3MiA2OSA3NiA2NSA3MiAyZiAzMCAyZSAzMCAyZSAzMCBhMyA4NiA3MyA2MyA2OCA2NSA2ZCA2NSA4NSA2MiA2MSA3MyA2OSA2MyA4OSA3MCA3MiA2OSA2ZSA2MyA2OSA3MCA2MSA2YyA4NSA2ZSA2NSA2ZiAzNCA2YSA4YiA2MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyA3MyA4NSA2ZSA2NSA2ZiAzNCA2YSAwMCAwMCAwMCAwYyBiMiAxMCA4OCA1MiA0NSA1NCA1NSA1MiA0ZSAyMCAzMSBhMCAwMCAwMCAnICk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3ZpZGUgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbm5lY3RpbmcgdG8gaHR0cC1wb3J0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdDo3NDc0XCIsIHtlbmNyeXB0ZWQ6ZmFsc2V9KTtcblxuICAgIC8vIFdoZW5cbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sICB7XG4gICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24oIG1zZyApIHtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgLy9vbmx5IG5vZGUgZ2V0cyB0aGUgcHJldHR5IGVycm9yIG1lc3NhZ2VcbiAgICAgICAgaWYoIHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJykuYXZhaWxhYmxlICkge1xuICAgICAgICAgIGV4cGVjdChlcnIubWVzc2FnZSkudG9CZShcIlNlcnZlciByZXNwb25kZWQgSFRUUC4gTWFrZSBzdXJlIHlvdSBhcmUgbm90IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBodHRwIGVuZHBvaW50IFwiICtcbiAgICAgICAgICAgIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbiBcbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYyxcbiAgICBwYWNrc3RyZWFtID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzXCIpLFxuICAgIGludGVnZXIgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVnZXIuanNcIiksXG4gICAgUGFja2VyID0gcGFja3N0cmVhbS5QYWNrZXIsXG4gICAgVW5wYWNrZXIgPSBwYWNrc3RyZWFtLlVucGFja2VyLFxuICAgIFN0cnVjdHVyZSA9IHBhY2tzdHJlYW0uU3RydWN0dXJlLFxuICAgIEludGVnZXIgPSBpbnRlZ2VyLkludGVnZXI7XG5cbmRlc2NyaWJlKCdwYWNrc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cblxuICBpdCgnc2hvdWxkIHBhY2sgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiwgaTtcbiAgICAvLyB0ZXN0IHNtYWxsIG51bWJlcnNcbiAgICBmb3IobiA9IC05OTk7IG4gPD0gOTk5OyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIobik7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICAgIC8vIHBvc2l0aXZlIG51bWJlcnNcbiAgICBmb3IobiA9IDE2OyBuIDw9IDE2IDsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KDIsIG4pKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgLy8gbmVnYXRpdmUgbnVtYmVyc1xuICAgIGZvcihuID0gMDsgbiA8PSA2MyA7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcigtTWF0aC5wb3coMiwgbikpO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJpbmdzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIlwiICkgKS50b0JlKCBcIlwiICk7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcImFiY2RlZmcxMjM1NjdcIiApICkudG9CZSggXCJhYmNkZWZnMTIzNTY3XCIgKTtcbiAgICB2YXIgc3RyID0gQXJyYXkoNjU1MzYgKyAxKS5qb2luKCdhJyk7IC8vIDIgXiAxNiArIDFcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soc3RyLCBzdHIubGVuZ3RoICsgOCkpLnRvQmUoc3RyKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJ1Y3R1cmVzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBuZXcgU3RydWN0dXJlKDEsIFtcIkhlbGxvLCB3b3JsZCEhIVwiXSApICkuZmllbGRzWzBdICkgIFxuICAgICAudG9CZSggXCJIZWxsbywgd29ybGQhISFcIiApO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIGxpc3RzJywgZnVuY3Rpb24oKSB7XG4gICB2YXIgbGlzdCA9IFsnYScsICdiJ107XG4gICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCApO1xuICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMF0gKS50b0JlKCBsaXN0WzBdICk7XG4gICBleHBlY3QoIHJvdW5kdHJpcHBlZFsxXSApLnRvQmUoIGxpc3RbMV0gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYWNrIGxvbmcgbGlzdHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGlzdExlbmd0aCA9IDI1NjtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpc3QucHVzaChudWxsKVxuICAgIH1cbiAgICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCwgMTQwMCApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzBdICkudG9CZSggbGlzdFswXSApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzFdICkudG9CZSggbGlzdFsxXSApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBwYWNrQW5kVW5wYWNrKCB2YWwsIGJ1ZmZlclNpemUgKSB7XG4gIGJ1ZmZlclNpemUgPSBidWZmZXJTaXplIHx8IDEyODtcbiAgdmFyIGJ1ZmZlciA9IGFsbG9jKGJ1ZmZlclNpemUpO1xuICBuZXcgUGFja2VyKCBidWZmZXIgKS5wYWNrYWJsZSggdmFsICkoKTtcbiAgYnVmZmVyLnJlc2V0KCk7XG4gIHJldHVybiBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGJ1ZmZlciApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBQb29sID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3Bvb2wnKS5Qb29sO1xuXG5kZXNjcmliZSgnUG9vbCcsIGZ1bmN0aW9uKCkge1xuICBpdCgnYWxsb2NhdGVzIGlmIHBvb2wgaXMgZW1wdHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG5cbiAgaXQoJ3Bvb2xzIGlmIHJlc291cmNlcyBhcmUgcmV0dXJuZWQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ2ZyZWVzIGlmIHBvb2wgcmVhY2hlcyBtYXggc2l6ZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IHRyYWNrcyBkZXN0cm95ZWQgcmVzb3VyY2VzXG4gICAgdmFyIGNvdW50ZXIgPSAwLFxuICAgICAgICBkZXN0cm95ZWQgPSBbXTtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKFxuICAgICAgZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiB0cnVlOyB9LFxuICAgICAgMiAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG4gICAgcjIuY2xvc2UoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlc3Ryb3llZC5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMF0uaWQgKS50b0JlKCByMi5pZCApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgdmFsaWRhdGUgcmV0dXJucyBmYWxzZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgMTAwMCAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZXN0cm95ZWQubGVuZ3RoICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggZGVzdHJveWVkWzBdLmlkICkudG9CZSggcjAuaWQgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFsxXS5pZCApLnRvQmUoIHIxLmlkICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIFJlc291cmNlKCBpZCwgcmVsZWFzZSApIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLmlkID0gaWQ7XG4gIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsgcmVsZWFzZShzZWxmKTsgfTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJyk7XG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgaGFzRmVhdHVyZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXNcIik7XG5cbmRlc2NyaWJlKCd0cnVzdC1zaWduZWQtY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlcjtcblxuICBpdCgnc2hvdWxkIHJlamVjdCB1bmtub3duIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTXG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb20uY2VydGlmaWNhdGVcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGV4cGVjdCggZXJyLm1lc3NhZ2UgKS50b0NvbnRhaW4oIFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkXCIgKTtcbiAgICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBrbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1wiYnVpbGQvbmVvNGovY2VydGlmaWNhdGVzL25lbzRqLmNlcnRcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBkb25lICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIGlmKCBkcml2ZXIgKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cblxuZGVzY3JpYmUoJ3RydXN0LW9uLWZpcnN0LXVzZScsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG5cbiAgaXQoXCJzaG91bGQgY3JlYXRlIGtub3duX2hvc3RzIGZpbGUgaW5jbHVkaW5nIGZ1bGwgcGF0aCBpZiBpdCBkb2Vzbid0IGV4aXN0XCIsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgLy8gTm9uIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgIHZhciBrbm93bkhvc3RzRGlyID0gcGF0aC5qb2luKFwiYnVpbGRcIiwgXCJob3N0c1wiKTtcbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBwYXRoLmpvaW4oa25vd25Ib3N0c0RpciwgXCJrbm93bl9ob3N0c1wiKTtcbiAgICB0cnkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfSBjYXRjaCAoXykgeyB9XG4gICAgdHJ5IHtcbiAgICAgIGZzLnJtZGlyU3luYyhrbm93bkhvc3RzRGlyKTtcbiAgICB9IGNhdGNoIChfKSB7IH1cblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAvLyBUaGVuIHdlIGdldCB0byBoZXJlLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlIGtub3duX2hvc3RzIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkXG4gICAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyBmcy5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKSB9KS5ub3QudG9UaHJvdygpXG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goIGZ1bmN0aW9uKCl7XG4gICAgICAvLyBKdXN0IGhlcmUgdG8gZ3JhY2VmdWxseSBleGl0IHRlc3Qgb24gZmFpbHVyZSBzbyB3ZSBkb24ndCBnZXQgdGltZW91dHNcbiAgICAgIC8vIHdoZW4gZG9uZSgpIGlzbid0IGNhbGxlZC5cbiAgICAgIGV4cGVjdCggJ3RoaXMnICkudG9CZSggJ3RvIG5ldmVyIGhhcHBlbicgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGhvc3QgZmlsZSBjb250YWlucyB0d28gaG9zdCBkdXBsaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIGRyaXZlci5zZXNzaW9uKCk7IC8vIHdyaXRlIGludG8gdGhlIGtub3duSG9zdCBmaWxlXG5cbiAgICAvLyBkdXBsaWNhdGUgdGhlIHNhbWUgc2VydmVySWQgdHdpY2VcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHRleHQgPSBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4Jyk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCB0ZXh0ICsgdGV4dCk7XG4gICAgfSwgMTAwMCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKFwiUkVUVVJOIHRydWUgQVMgYVwiKS50aGVuKCBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIC8vIFRoZW4gd2UgZ2V0IHRvIGhlcmUuXG4gICAgICAgIGV4cGVjdCggZGF0YS5yZWNvcmRzWzBdLmdldCgnYScpICkudG9CZSggdHJ1ZSApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9LCAyMDAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgcHJldmlvdXNseSB1bi1zZWVuIGhvc3RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIWhhc0ZlYXR1cmUoXCJ0cnVzdF9vbl9maXJzdF91c2VcIikgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBcImJ1aWxkL2tub3duX2hvc3RzXCI7XG4gICAgaWYoIGZzLmV4aXN0c1N5bmMoa25vd25Ib3N0c1BhdGgpICkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfVxuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgLy8gVGhlbiB3ZSBnZXQgdG8gaGVyZS5cbiAgICAgIC8vIEFuZCB0aGVuIHRoZSBrbm93bl9ob3N0cyBmaWxlIHNob3VsZCBoYXZlIGNvcnJlY3QgY29udGVudHNcbiAgICAgIGV4cGVjdCggZnMucmVhZEZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCAndXRmOCcpICkudG9Db250YWluKCBcImxvY2FsaG9zdDo3Njg3XCIgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZHVwbGljYXRlIGZpbmdlcnByaW50IGVudHJpZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IFwiYnVpbGQva25vd25faG9zdHNcIjtcbiAgICBpZiggZnMuZXhpc3RzU3luYyhrbm93bkhvc3RzUGF0aCkgKSB7XG4gICAgICBmcy51bmxpbmtTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJycpO1xuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gICAgZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVzID0ge307XG4gICAgICBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4JylcbiAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gISEgKGxpbmUudHJpbSgpKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIGlmICghbGluZXNbbGluZV0pIHtcbiAgICAgICAgICAgICAgbGluZXNbbGluZV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNbbGluZV0rKztcbiAgICAgICAgICB9KTtcblxuICAgICAgdmFyIGR1cGxpY2F0ZWRMaW5lcyA9IE9iamVjdFxuICAgICAgICAgIC5rZXlzKGxpbmVzKVxuICAgICAgICAgIC5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmVzW2xpbmVdO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihjb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50ID4gMTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5sZW5ndGg7XG5cbiAgICAgIGV4cGVjdCggZHVwbGljYXRlZExpbmVzICkudG9CZSggMCApO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDEwMDApO1xuICB9KTtcbiAgXG4gIGl0KCdzaG91bGQgc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBpZiBkYXRhYmFzZSBjZXJ0IGRvZXMgbm90IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb21fa25vd25faG9zdHNcIjtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0NvbnRhaW4oXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBcIiArXG4gICAgICAgIFwiYW5kIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIGxvY2FsaG9zdDo3Njg3XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgdXRmOCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC91dGY4Jyk7XG52YXIgYnVmZmVycyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKTtcblxuZGVzY3JpYmUoJ3V0ZjgnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGEgbmljZSBjbGVhbiBidWZmZXIgcG9zaXRpb24gYWZ0ZXIgc2VyaWFsaXppbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGJ1ZmZlci5wb3NpdGlvbiApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHBvc2l0aW9uIG9mIHNpbmdsZSBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCAtIDEpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlY29kZWQgKS50b0JlKCBcImVsbG8sIHdvcmxkIVwiICk7XG4gICAgZXhwZWN0KGJ1ZmZlci5wb3NpdGlvbikudG9FcXVhbCgxMylcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIHN1YnN0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoXCJoZWxsbywgd29ybGQhXCIpO1xuICAgIGJ1ZmZlci5yZWFkSW50OCgpO1xuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoYnVmZmVyLCAzKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoNClcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIHV0ZjgnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiw6XDpMO2MTIzXCIgKSApLnRvQmUoIFwiw6XDpMO2MTIzXCIgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBhIGNvbXBsZXRlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYXPDpWZxd2VyXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUobXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgdXRmOCBmcm9tIHBhcnQgb2YgYSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcVwiO1xuICAgIHZhciBleHBlY3RNc2cgPSBtc2cuc3Vic3RyaW5nKDAsIG1zZy5sZW5ndGgtMSk7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgdW5yZWxhdGVkRGF0YSA9IGJ1ZmZlcnMuYWxsb2MoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCB1bnJlbGF0ZWREYXRhXSApO1xuXG4gICAgLy8gV2hlbiBcbiAgICAvLyBXZSByZWFkIGFsbCBidXQgdGhlIHVucmVsYXRlZERhdGEgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBidWZiXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgY29tYmluZWQubGVuZ3RoIC0gMSAtIHVucmVsYXRlZERhdGEubGVuZ3RoICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoZXhwZWN0TXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBwb3NpdGlvbiBpbiB0aGUgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDIpO1xuXG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoXCJjZGVmZ2hcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDgpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCBidWZmZXIgYWNyb3NzIGJ1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFiY2RlZmdoaWprbFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCA0KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGVjb2RlZCkudG9CZShcImZnaGlcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDkpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCB3aXRoaW4gYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgMik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ1wiKTtcbiAgICBleHBlY3QoY29tYmluZWQucG9zaXRpb24pLnRvQmUoNylcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggc3RyICkge1xuICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoIHN0ciApO1xuICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdkcml2ZXInLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXNzaW9ucycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHNlc3Npb24gKS5ub3QudG9CZU51bGwoKTtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgY29ubmVjdGlvbiBlcnJvcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdGVcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAvL3RoZSBlcnJvciBtZXNzYWdlIGlzIGRpZmZlcmVudCB3aGV0aGVyIGluIGJyb3dzZXIgb3Igbm9kZVxuICAgICAgZXhwZWN0KGVyci5tZXNzYWdlKS5ub3QudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBlYXJseSBvbiB3cm9uZyBjcmVkZW50aWFscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIndobyB3b3VsZCB1c2Ugc3VjaCBhIHBhc3N3b3JkXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgLy90aGUgZXJyb3IgbWVzc2FnZSBpcyBkaWZmZXJlbnQgd2hldGhlciBpbiBicm93c2VyIG9yIG5vZGVcbiAgICAgIGV4cGVjdChlcnIuZmllbGRzWzBdLmNvZGUpLnRvRXF1YWwoJ05lby5DbGllbnRFcnJvci5TZWN1cml0eS5VbmF1dGhvcml6ZWQnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5kaWNhdGUgc3VjY2VzcyBlYXJseSBvbiBjb3JyZWN0IGNyZWRlbnRpYWxzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKG1ldGEpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlY29yZCA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVjb3JkXCIpLlJlY29yZDtcbnZhciBOZW80akVycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9lcnJvclwiKS5OZW80akVycm9yO1xuXG5cbmRlc2NyaWJlKCdSZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KFwibmFtZVwiKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBrZXknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBmdW5jdGlvbigpIHsgcmVjb3JkLmdldChcImFnZVwiKSB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKFxuICAgICAgXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ2FnZScsIGF2YWlsYWJsZSBrZXkgYXJlOiBbbmFtZV0uXCIpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QocmVjb3JkLmdldCgwKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyByZWNvcmQuZ2V0KDEpIH0pLnRvVGhyb3cobmV3IE5lbzRqRXJyb3IoXG4gICAgICBcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICcxJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgK1xuICAgICAgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBsZW5ndGgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW10sIFtdKS5sZW5ndGggKS50b0JlKDApO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdKS5sZW5ndGggKS50b0JlKDEpO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiXSwgW1wiQm9iXCIsIDQ1XSkubGVuZ3RoICkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBmb3JFYWNoIHRocm91Z2ggdGhlIHJlY29yZCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIl0sIFtcIkJvYlwiLCA0NV0gKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAvLyBXaGVuXG4gICAgcmVjb3JkLmZvckVhY2goIGZ1bmN0aW9uKCB2YWx1ZSwga2V5LCByZWNvcmQgKSB7XG4gICAgICByZXN1bHQucHVzaCggW3ZhbHVlLCBrZXksIHJlY29yZF0gKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtbXCJCb2JcIiwgXCJuYW1lXCIsIHJlY29yZF0sIFs0NSwgXCJhZ2VcIiwgcmVjb3JkXV0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdyZXN1bHQgc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlciwgc2Vzc2lvbjtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2hhaW5pbmcgYHRoZW5gLCByZXR1cm5pbmcgYSBuZXcgdGhpbmcgaW4gZWFjaCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCBcIlJFVFVSTiAxXCIpXG4gICAgICAudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBcImZpcnN0XCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcImZpcnN0XCIgKTtcbiAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcInNlY29uZFwiICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2F0Y2hpbmcgZXhjZXB0aW9uIHRocm93biBpbiBgdGhlbmAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1biggXCJSRVRVUk4gMVwiKVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBd2F5IHdpdGggeW91IVwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoIFwiQXdheSB3aXRoIHlvdSFcIiApO1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG52YXIgU3RhdGVtZW50VHlwZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVzdWx0LXN1bW1hcnlcIikuc3RhdGVtZW50VHlwZTtcbnZhciBTZXNzaW9uID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9zZXNzaW9uXCIpO1xuXG5kZXNjcmliZSgnc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGJlIGlkZW1wb3RlbnQgJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKG51bGwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIrKztcbiAgICB9KTtcbiAgICBfc2Vzc2lvbi5jbG9zZSgpO1xuICAgIGV4cGVjdChjb3VudGVyKS50b0JlKDEpO1xuICAgIF9zZXNzaW9uLmNsb3NlKCk7XG4gICAgZXhwZWN0KGNvdW50ZXIpLnRvQmUoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGJhc2ljIHJ1bi9zdWJzY3JpYmUgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICB2YXIgcmVjb3JkcyA9IFtdO1xuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGtlZXAgY29udGV4dCBpbiBzdWJzY3JpYmUgbWV0aG9kcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZnVuY3Rpb24gbXlPYnNlcnZlcigpIHtcbiAgICAgIHRoaXMubG9jYWwgPSAnaGVsbG8nO1xuICAgICAgdmFyIHByaXZhdGVMb2NhbCA9ICdoZWxsbyc7XG4gICAgICB0aGlzLm9uTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZShuZXcgbXlPYnNlcnZlcigpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjYWxsIG9ic2VydmVycyBvbkVycm9yIG9uIGVycm9yICcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuc3Vic2NyaWJlKHtcbiAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSB7dGV4dDogXCJSRVRVUk4gMSA9IHtwYXJhbX0gQVMgYVwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBydW4vdGhlbi90aGVuL3RoZW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpXG4gICAgICAudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgKS50aGVuKFxuICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUoMSk7XG4gICAgICB9XG4gICAgKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBiYXNpYyBydW4vY2F0Y2ggJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuY2F0Y2goXG4gICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICApXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHN1bW1hcml6ZSBtZXRob2QgZm9yIGJhc2ljIG1ldGFkYXRhICcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgc3RhdGVtZW50ID0gXCJDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG5cIjtcbiAgICB2YXIgcGFyYW1zID0ge3Byb3A6IFwic3RyaW5nXCJ9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnQudGV4dCkudG9CZShzdGF0ZW1lbnQpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0JlKHBhcmFtcyk7XG4gICAgICAgIGV4cGVjdChzdW0udXBkYXRlU3RhdGlzdGljcy5jb250YWluc1VwZGF0ZXMoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS51cGRhdGVTdGF0aXN0aWNzLm5vZGVzQ3JlYXRlZCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudFR5cGUpLnRvQmUoU3RhdGVtZW50VHlwZS5SRUFEX1dSSVRFKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGVtcHR5IHBhcmFtZXRlciBtYXAgb24gY2FsbCB3aXRoIG5vIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiQ1JFQVRFIChuOkxhYmVsIHtwcm9wOidzdHJpbmcnfSkgUkVUVVJOIG5cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudClcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0VxdWFsKHt9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHBsYW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gQ1JFQVRFIChuOkxhYmVsIHtwcm9wOntwcm9wfX0pIFJFVFVSTiBuXCI7XG4gICAgdmFyIHBhcmFtcyA9IHtwcm9wOiBcInN0cmluZ1wifTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnBsYW4uaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnQ3JlYXRlTm9kZScpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcHJvZmlsZSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUFJPRklMRSBNQVRDSCAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gblwiO1xuICAgIHZhciBwYXJhbXMgPSB7cHJvcDogXCJzdHJpbmdcIn07XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uXG4gICAgICAucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUGxhbigpKS50b0JlKHRydWUpOyAvL1doZW4gdGhlcmUncyBhIHByb2ZpbGUsIHRoZXJlJ3MgYSBwbGFuXG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUub3BlcmF0b3JUeXBlKS50b0JlKCdQcm9kdWNlUmVzdWx0cycpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuYXJndW1lbnRzLnJ1bnRpbWUpLnRvQmUoJ0lOVEVSUFJFVEVEJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5pZGVudGlmaWVyc1swXSkudG9CZSgnbicpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuY2hpbGRyZW5bMF0ub3BlcmF0b3JUeXBlKS50b0JlKCdGaWx0ZXInKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLnJvd3MpLnRvQmUoMCk7XG4gICAgICAgIC8vZXhwZWN0KHN1bS5wcm9maWxlLmRiSGl0cykudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgY3lwaGVyIG5vdGlmaWNhdGlvbnMgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gTUFUQ0ggKG4pLCAobSkgUkVUVVJOIG4sIG1cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLmNvZGUpLnRvQmUoXCJOZW8uQ2xpZW50Tm90aWZpY2F0aW9uLlN0YXRlbWVudC5DYXJ0ZXNpYW5Qcm9kdWN0V2FybmluZ1wiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnRpdGxlKS50b0JlKFwiVGhpcyBxdWVyeSBidWlsZHMgYSBjYXJ0ZXNpYW4gcHJvZHVjdCBiZXR3ZWVuIGRpc2Nvbm5lY3RlZCBwYXR0ZXJucy5cIik7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9uc1swXS5wb3NpdGlvbi5jb2x1bW4pLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHVzaW5nIHRoZSBzZXNzaW9uIHdoZW4gaGF2aW5nIGFuIG9wZW4gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy9UaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoXCJTdGF0ZW1lbnRzIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgb24gYSBcIlxuICAgICAgICAgICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCJcbiAgICAgICAgICArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBvcGVuaW5nIG11bHRpcGxlIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3Qoc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGxvdHMgb2YgZGF0YScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgc2Vzc2lvbi5ydW4oXCJVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgeCBDUkVBVEUgKDpBVFRSQUNUSU9OIHtwcm9wOiAncHJvcCd9KVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBSRVRVUk4gblwiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlID0gcmVjb3JkLmdldCgnbicpO1xuICAgICAgICAgICAgICAgIGV4cGVjdChub2RlLmxhYmVsc1swXSkudG9FcXVhbChcIkFUVFJBQ1RJT05cIik7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUucHJvcGVydGllcy5wcm9wKS50b0VxdWFsKFwicHJvcFwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcblxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIGxvbmcgcnVubmluZyBxdWVyeSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vZ2l2ZW4gYSBsb25nIHJ1bm5pbmcgcXVlcnlcbiAgICBzZXNzaW9uLnJ1bihcInVud2luZCByYW5nZSgxLDEwMDAwMDApIGFzIHggY3JlYXRlIChuIHtwcm9wOnh9KSBkZWxldGUgblwiKTtcblxuICAgIC8vd2FpdCBzb21lIHRpbWUgdGhhbiBjbG9zZSB0aGUgc2Vzc2lvbiBhbmQgcnVuXG4gICAgLy9hIG5ldyBxdWVyeVxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgdmFyIGFub3RoZXJTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBhbm90aGVyU2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIGFzIGFcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaWdub3JlKSB7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9LCAxNTAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG5pY2VseSBvbiB1bnBhY2thYmxlIHZhbHVlcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHVucGFja2FibGUgPSBmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9O1xuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUkVUVVJOIHtwYXJhbX1cIjtcbiAgICB2YXIgcGFyYW1zID0ge3BhcmFtOiB1bnBhY2thYmxlfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGlnbm9yZSkge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxufSk7XG5cblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCd0cmFuc2FjdGlvbicsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXIsIHNlc3Npb247XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBERVRBQ0ggREVMRVRFIG5cIikudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbW1pdCBzaW1wbGUgY2FzZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMilcIik7XG4gICAgdHguY29tbWl0KClcbiAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDEpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKVxuICAgICAgICAgICAgICAudG9CZSgxKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBpbnRlcmFjdGl2ZSBzZXNzaW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiUkVUVVJOICdmb28nIEFTIHJlc1wiKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIHR4LnJ1bihcIkNSRUFURSAoe25hbWU6IHtwYXJhbX19KVwiLCB7cGFyYW06IHJlc3VsdC5yZWNvcmRzWzBdLmdldCgncmVzJyl9KTtcbiAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChhIHtuYW1lOidmb28nfSkgUkVUVVJOIGNvdW50KGEpXCIpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KGEpJykudG9JbnQoKSkudG9CZSgxKTtcbiAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlcyB3aXRoIHN1YnNjcmliZScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlcyB3aXRoIGNhdGNoJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgb24gY29tbWl0JywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuXG4gICAgdHguY29tbWl0KClcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gY29tbWl0dGluZyBvbiBhIGZhaWxlZCBxdWVyeScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHguY29tbWl0KClcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSB3aGVuIGNvbW1pdHRpbmcgd2hlbiBhbm90aGVyIHN0YXRlbWVudCBmYWlscycsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIHJvbGxiYWNrcycsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuICAgIHR4LnJvbGxiYWNrKClcbiAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDEpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMCk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKVxuICAgICAgICAgICAgICAudG9CZSgwKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gY29tbWl0dGluZyBvbiBhIHJvbGxlZCBiYWNrIHF1ZXJ5JywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKVxuXG4gICAgdHguY29tbWl0KClcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcnVubmluZyBvbiBhIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKTtcblxuICAgIHR4LnJ1bihcIlJFVFVSTiA0MlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcnVubmluZyB3aGVuIGEgcHJldmlvdXMgc3RhdGVtZW50IGZhaWxlZCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHgucnVuKFwiUkVUVVJOIDQyXCIpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0eC5yb2xsYmFjaygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiB0cnlpbmcgdG8gcm9sbCBiYWNrIGEgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5yb2xsYmFjaygpO1xuXG4gICAgdHgucm9sbGJhY2soKVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgnZmxvYXRpbmcgcG9pbnQgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAxLjAgJywgdGVzdFZhbCggMSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAwLjAgJywgdGVzdFZhbCggMC4wICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHByZXR0eSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMy40MDI4MjM1ZSszOCApICk7IC8vIE1heCAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggKSApOyAvLyBNYXggNjQtYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggMS40ZS00NSApICk7IC8vIE1pbiAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBzbWFsbCBmbG9hdCAnLCB0ZXN0VmFsKCA0LjllLTMyNCApICk7IC8vIE1pbiA2NC1iaXRcbn0pO1xuXG5kZXNjcmliZSgnaW50ZWdlciB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAwICcsIHRlc3RWYWwoIG5lbzRqLmludCgwKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIC0xICcsIHRlc3RWYWwoIG5lbzRqLmludCgtMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBsYXJnZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4ODAwMDAwMDAwMDAwMDAwMFwiKSApICk7XG59KTtcblxuZGVzY3JpYmUoJ2Jvb2xlYW4gdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCB0cnVlICcsICB0ZXN0VmFsKCB0cnVlICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZhbHNlICcsIHRlc3RWYWwoIGZhbHNlICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnc3RyaW5nIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgc3RyaW5nICcsICAgdGVzdFZhbCggXCJcIiApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzaW1wbGUgc3RyaW5nICcsICB0ZXN0VmFsKCBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYXdlc29tZSBzdHJpbmcgJywgdGVzdFZhbCggXCJBbGwgbWFrdCDDpXQgVGVuZ2lsLCB2w6VyIGJlZnJpYXJlLlwiICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IGxpc3RzICcsICAgdGVzdFZhbCggW10gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGxpc3RzICcsICAgdGVzdFZhbCggWyB1bmRlZmluZWQsIDQgXSwgWyBudWxsLCA0IF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgbGlzdHMgJywgICB0ZXN0VmFsKCBbIDEsMiwzIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYm9vbGVhbiBsaXN0cyAnLCB0ZXN0VmFsKCBbIHRydWUsIGZhbHNlIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3RyaW5nIGxpc3RzICcsICB0ZXN0VmFsKCBbIFwiXCIsIFwiaGVsbG8hXCIgXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBsaXN0IGxpc3RzICcsICAgIHRlc3RWYWwoIFsgW10sIFsxLDIsM10gXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBtYXAgbGlzdHMgJywgICAgIHRlc3RWYWwoIFsge30sIHthOjEyfSBdICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbWFwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgbWFwcyAnLCB0ZXN0VmFsKCB7fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBiYXNpYyBtYXBzICcsIHRlc3RWYWwoIHthOjEsIGI6e30sIGM6W10sIGQ6e2U6MX19ICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBtYXBzICcsIHRlc3RWYWwoIHtmb286IHVuZGVmaW5lZCwgYmFyOiBudWxsfSwge2JhcjogbnVsbH0gKSApO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIG5vZGVzICcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKG46VXNlciB7bmFtZTonTGlzYSd9KSBSRVRVUk4gbiwgaWQobilcIikudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgdmFyIG5vZGUgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ24nKTtcblxuICAgICAgICBleHBlY3QoIG5vZGUucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggbm9kZS5sYWJlbHMgKS50b0VxdWFsKCBbXCJVc2VyXCJdICk7XG4gICAgICAgIC8vIGV4cGVjdCggbm9kZS5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChuKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdyZWxhdGlvbnNoaXAgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcmVsYXRpb25zaGlwcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKCktW3I6VXNlciB7bmFtZTonTGlzYSd9XS0+KCkgUkVUVVJOIHIsIGlkKHIpXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciByZWwgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3InKTtcblxuICAgICAgICBleHBlY3QoIHJlbC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCByZWwudHlwZSApLnRvRXF1YWwoIFwiVXNlclwiICk7XG4gICAgICAgIC8vIGV4cGVjdCggcmVsLmlkZW50aXR5ICkudG9FcXVhbCggcnNbMF1bJ2lkKHIpJ10gKTsgLy8gVE9ET1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BhdGggdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcGF0aHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIHA9KDpVc2VyIHsgbmFtZTonTGlzYScgfSk8LVtyOktOT1dTIHtzaW5jZToxMjM0LjB9XS0oKSBSRVRVUk4gcFwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBwYXRoID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdwJyk7XG5cbiAgICAgICAgZXhwZWN0KCBwYXRoLnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIHBhdGguZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcblxuICAgICAgICAvLyBBY2Nlc3NpbmcgcGF0aCBzZWdtZW50c1xuICAgICAgICBleHBlY3QoIHBhdGgubGVuZ3RoICkudG9FcXVhbCggMSApO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgc2VnbWVudCA9IHBhdGguc2VnbWVudHNbaV07XG4gICAgICAgICAgLy8gVGhlIGRpcmVjdGlvbiBvZiB0aGUgcGF0aCBzZWdtZW50IGdvZXMgZnJvbSBsaXNhIHRvIHRoZSBibGFuayBub2RlXG4gICAgICAgICAgZXhwZWN0KCBzZWdtZW50LnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5lbmQucHJvcGVydGllcyApLnRvRXF1YWwoIHsgfSApO1xuICAgICAgICAgIC8vIFdoaWNoIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSByZWxhdGlvbnNoaXAgaXRzZWxmIVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5yZWxhdGlvbnNoaXAucHJvcGVydGllcyApLnRvRXF1YWwoIHsgc2luY2U6IDEyMzQgfSApO1xuICAgICAgICB9XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHRlc3RWYWwoIHZhbCwgZXhwZWN0ZWQgKSB7XG4gIHJldHVybiBmdW5jdGlvbiggZG9uZSApIHtcbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4ge3ZhbH0gYXMgdlwiLCB7dmFsOiB2YWx9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG4gICAgICAgIGV4cGVjdCggcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCd2JykgKS50b0VxdWFsKCBleHBlY3RlZCB8fCB2YWwgKTtcbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmxvZyhlcnIpOyB9KTtcbiAgfVxufVxuIl19 +},{"../../lib/v1":8}]},{},[163,164,165,166,167,168,169,170,171,172,173,174,175]) +//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvZXM2LXByb21pc2UuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2RyaXZlci5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9lcnJvci5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9ncmFwaC10eXBlcy5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbmRleC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlZ2VyLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2J1Zi5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jaHVua2luZy5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvbG9nLmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL2ludGVybmFsL3BhY2tzdHJlYW0uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvcG9vbC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXIuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvaW50ZXJuYWwvdXRmOC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL2xpYi92MS9yZWNvcmQuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvcmVzdWx0LXN1bW1hcnkuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvcmVzdWx0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbGliL3YxL3Nlc3Npb24uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdjEvdHJhbnNhY3Rpb24uanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci9saWIvdmVyc2lvbi5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwibm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9saWIvYjY0LmpzIiwibm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIm5vZGVfbW9kdWxlcy9icm9yYW5kL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYXV0aENpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9lbmNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZ2hhc2guanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIxLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY3RyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2VjYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9vZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvc3RyZWFtQ2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktY2lwaGVyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1yc2EvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2FsZ29zLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9jdXJ2ZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3NpZ24uanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3ZlcmlmeS5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXItc2hpbXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9oZWxwZXJzLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyeXB0by1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NiYy5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jaXBoZXIuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZGVzLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2VkZS5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9kaC5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZ2VuZXJhdGVQcmltZS5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvcHJpbWVzLmpzb24iLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9lZHdhcmRzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvbW9udC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvc2hvcnQuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlcy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL2tleS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMvc2lnbmF0dXJlLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2Eva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2htYWMtZHJiZy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9ldnBfYnl0ZXN0b2tleS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbGxlci1yYWJpbi9saWIvbXIuanMiLCJub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWFzc2VydC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9vcy1icm93c2VyaWZ5L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hZXNpZC5qc29uIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2ZpeFByb2MuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JpcGVtZDE2MC9saWIvcmlwZW1kMTYwLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy92bS1icm93c2VyaWZ5L2luZGV4LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC9idWYudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY2h1bmtpbmcudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvY29ubmVjdG9yLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L2ludGVybmFsL3BhY2tzdHJlYW0udGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvcG9vbC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC9pbnRlcm5hbC90bHMudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvaW50ZXJuYWwvdXRmOC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9kcml2ZXIudGVzdC5qcyIsIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL3Rlc3QvdjEvcmVjb3JkLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3Jlc3VsdC50ZXN0LmpzIiwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvdGVzdC92MS9zZXNzaW9uLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3RyYW5zYWN0aW9uLnRlc3QuanMiLCIvVXNlcnMvcG9udHVzbWVsa2Uvc291cmNlcy9uZW80ai1qYXZhc2NyaXB0LWRyaXZlci90ZXN0L3YxL3R5cGVzLnRlc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM1NUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwZ0dBLFlBQVksQ0FBQzs7QUFFYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDM0MsT0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7O0FBRUgsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRSxNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxTQUFTLEVBQUUsT0FBTyxNQUFNLEVBQUU7QUFBRSxRQUFJLE1BQU0sR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUc7UUFBRSxRQUFRLEdBQUcsR0FBRyxDQUFDLEFBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxBQUFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQUFBQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxVQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxNQUFNO0FBQUUsV0FBRyxHQUFHLE1BQU0sQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEFBQUMsU0FBUyxTQUFTLENBQUM7T0FBRTtLQUFFLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQUUsTUFBTTtBQUFFLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FBQztPQUFFLEFBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQUU7R0FBRTtDQUFFLENBQUM7O0FBRXJwQixJQUFJLFlBQVksR0FBRyxDQUFDLFlBQVk7QUFBRSxXQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFBRSxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUFFLFVBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxBQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQUFBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxBQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FBRTtHQUFFLEFBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO0FBQUUsUUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxBQUFDLElBQUksV0FBVyxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxBQUFD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QyxFQUFFLE9BQU8sVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUNqRyxVQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzs7QUFFakcsVUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7QUFDckIsWUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO09BQ3pJLE1BQU0sSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDOzs7QUFHdkYsVUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzs7Ozs7QUFLckksVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7QUFDM0IsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7QUFDN0IsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDMUIsVUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENB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QUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVscEIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxZQUFZO0FBQUUsV0FBUyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQUUsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFBRSxVQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQUFBQyxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLEFBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLE9BQU8sSUFBSSxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQUFBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQUU7R0FBRSxBQUFDLE9BQU8sVUFBVSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRTtBQUFFLFFBQUksVUFBVSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUs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QUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzlHOzs7OztHQUtGLEVBQUU7QUFDRCxPQUFHLEVBQUUsV0FBVztBQUNoQixTQUFLLEVBQUUsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFO0FBQzNCLGFBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUMvRzs7Ozs7R0FLRixFQUFFO0FBQ0QsT0FBRyxFQUFFLFVBQVU7QUFDZixTQUFLLEVBQUUsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQzFCLGFBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFD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SSxDQUFDLEFBQUMsU0FBUyxFQUFFLE9BQU8sTUFBTSxFQUFFO0FBQUUsUUFBSSxNQUFNLEdBQUcsRUFBRTtRQUFFLFFBQVEsR0FBRyxHQUFHO1FBQUUsUUFBUSxHQUFHLEdBQUcsQ0FBQyxBQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQUFBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEFBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUFFLGVBQU8sU0FBUyxDQUFDO09BQUUsTUFBTTtBQUFFLFVBQUUsR0FBRyxNQUFNLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxBQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxBQUFDLFNBQVMsU0FBUyxDQUFDO09BQUU7S0FBRSxNQUFNLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUFFLGFBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztLQUFFLE1BQU07QUFBRSxVQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxBQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUFFO0dBQUU7Q0FBRSxDQUFDOztBQUVscEIsU0FBUyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUU7QUFBRSxTQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxFQUFFLFNBQVMsRUFBRSxH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QyxDQUFDO09BQzdELE1BQU0sSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQzlCLGVBQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7T0FDOUQsTUFBTSxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDOUIsZUFBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztPQUM5RCxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtBQUMzQixlQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ3BELE1BQU0sSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO0FBQzVCLGVBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDckQsTUFBTSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7QUFDNUIsZUFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNyRCxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtBQUMxQixlQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO09BQ25ELE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO0FBQzNCLGVBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7T0FDcEQsTUFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7QUFDM0IsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUNwRCxN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Qzs7QUFFYixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDM0MsT0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDLENBQUM7O0FBRUgsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFBRSxNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQUFBQyxTQUFTLEVBQUUsT0FBTyxNQUFNLEVBQUU7QUFBRSxRQUFJLE1BQU0sR0FBRyxFQUFFO1FBQUUsUUFBUSxHQUFHLEdBQUc7UUFBRSxRQUFRLEdBQUcsR0FBRyxDQUFDLEFBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxBQUFDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxBQUFDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQUFBQyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxVQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEFBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUUsZUFBTyxTQUFTLENBQUM7T0FBRSxNQUFNO0FBQUUsVUFBRSxHQUFHLE1BQU0sQ0FBQyxBQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsQUFBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEFBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxBQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLEFBQUMsU0FBUyxTQUFTLENBQUM7T0FBRTtLQUFFLE1BQU0sSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQUUsTUFBTTtBQUFFLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7QUFBRSxlQUFPLFNBQVMsQ0FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDclNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pEQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1Z0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzFGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2hRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2piQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxNkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN01BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNySEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDN1NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3JHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwQ0E7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNTNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ25MQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzdnQkE7QUFDQTs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hCQTtBQUNBOztBQ0RBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNuUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM3TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2SEEsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3ZELElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUN6RSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUNqRCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQyxRQUFRLENBQUM7O0FBRXZFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBVztBQUM3QixJQUFFLENBQUMsOEJBQThCLEVBQUUsWUFBVzs7QUFFNUMsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEtBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixLQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2YsS0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQixLQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7QUFHakIsUUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3ZCLFFBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7O0FBR3BCLFVBQU0sQ0FBRSxHQUFHLENBQUUsQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUN6RCxVQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0dBQ2xDLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsK0NBQStDLEVBQUUsWUFBVzs7QUFFN0QsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFFBQVEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUduQixZQUFNLENBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNuQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsZ0RBQWdELEVBQUUsWUFBVzs7QUFFOUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdwQixZQUFNLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNwQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsZ0RBQWdELEVBQUUsWUFBVzs7QUFFOUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFNBQVMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdwQixZQUFNLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNwQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsNkNBQTZDLEVBQUUsWUFBVzs7QUFFM0QsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLE9BQU8sQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUdsQixZQUFNLENBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBRSxDQUFDLENBQUUsQ0FBQztLQUNsQztHQUNGLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsOENBQThDLEVBQUUsWUFBVzs7QUFFNUQsUUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzNCLFVBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzs7QUFHdkIsT0FBQyxDQUFDLFFBQVEsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFFLENBQUM7OztBQUduQixZQUFNLENBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLElB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RztBQUNoQyxTQUFPLFVBQVUsSUFBSSxFQUFHO0FBQ3RCLFFBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEYsUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDOztBQUUvQixXQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQ3pDLElBQUksQ0FBRSxVQUFVLE1BQU0sRUFBRztBQUN4QixZQUFNLENBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBRSxDQUFDO0FBQ2hFLFlBQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLFVBQUksRUFBRSxDQUFDO0tBQ1IsQ0FBQyxTQUFNLENBQUMsVUFBUyxHQUFHLEVBQUU7QUFBRSxhQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQUUsQ0FBQyxDQUFDO0dBQ2pELENBQUE7Q0FDRiIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKiFcbiAqIEBvdmVydmlldyBlczYtcHJvbWlzZSAtIGEgdGlueSBpbXBsZW1lbnRhdGlvbiBvZiBQcm9taXNlcy9BKy5cbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE0IFllaHVkYSBLYXR6LCBUb20gRGFsZSwgU3RlZmFuIFBlbm5lciBhbmQgY29udHJpYnV0b3JzIChDb252ZXJzaW9uIHRvIEVTNiBBUEkgYnkgSmFrZSBBcmNoaWJhbGQpXG4gKiBAbGljZW5zZSAgIExpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlXG4gKiAgICAgICAgICAgIFNlZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vamFrZWFyY2hpYmFsZC9lczYtcHJvbWlzZS9tYXN0ZXIvTElDRU5TRVxuICogQHZlcnNpb24gICAzLjAuMlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuKGZ1bmN0aW9uICgpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkb2JqZWN0T3JGdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0Z1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzTWF5YmVUaGVuYWJsZSh4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsO1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXk7XG4gIGlmICghQXJyYXkuaXNBcnJheSkge1xuICAgIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXkgPSBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheSA9IGxpYiRlczYkcHJvbWlzZSR1dGlscyQkX2lzQXJyYXk7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID0gMDtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR0b1N0cmluZyA9ICh7fSkudG9TdHJpbmc7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkdmVydHhOZXh0O1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGN1c3RvbVNjaGVkdWxlckZuO1xuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcCA9IGZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGFyZykge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuXSA9IGNhbGxiYWNrO1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZVtsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuICsgMV0gPSBhcmc7XG4gICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGxlbiArPSAyO1xuICAgIGlmIChsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID09PSAyKSB7XG4gICAgICAvLyBJZiBsZW4gaXMgMiwgdGhhdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gc2NoZWR1bGUgYW4gYXN5bmMgZmx1c2guXG4gICAgICAvLyBJZiBhZGRpdGlvbmFsIGNhbGxiYWNrcyBhcmUgcXVldWVkIGJlZm9yZSB0aGUgcXVldWUgaXMgZmx1c2hlZCwgdGhleVxuICAgICAgLy8gd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhpcyBmbHVzaCB0aGF0IHdlIGFyZSBzY2hlZHVsaW5nLlxuICAgICAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbikge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkY3VzdG9tU2NoZWR1bGVyRm4obGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRTY2hlZHVsZXIoc2NoZWR1bGVGbikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRjdXN0b21TY2hlZHVsZXJGbiA9IHNjaGVkdWxlRm47XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2V0QXNhcChhc2FwRm4pIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcCA9IGFzYXBGbjtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3NlcldpbmRvdyA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdW5kZWZpbmVkO1xuICB2YXIgbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkYnJvd3NlcldpbmRvdyB8fCB7fTtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyR2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgbGliJGVzNiRwcm9taXNlJGFzYXAkJGJyb3dzZXJHbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc05vZGUgPSB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHt9KS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXSc7XG5cbiAgLy8gdGVzdCBmb3Igd2ViIHdvcmtlciBidXQgbm90IGluIElFMTBcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc1dvcmtlciA9IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCAhPT0gJ3VuZGVmaW5lZCc7XG5cbiAgLy8gbm9kZVxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTmV4dFRpY2soKSB7XG4gICAgLy8gbm9kZSB2ZXJzaW9uIDAuMTAueCBkaXNwbGF5cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2hlbiBuZXh0VGljayBpcyB1c2VkIHJlY3Vyc2l2ZWx5XG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jdWpvanMvd2hlbi9pc3N1ZXMvNDEwIGZvciBkZXRhaWxzXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2sobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gdmVydHhcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVZlcnR4VGltZXIoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCR2ZXJ0eE5leHQobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU11dGF0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBsaWIkZXM2JHByb21pc2UkYXNhcCQkQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSBpdGVyYXRpb25zID0gKytpdGVyYXRpb25zICUgMjtcbiAgICB9O1xuICB9XG5cbiAgLy8gd2ViIHdvcmtlclxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlTWVzc2FnZUNoYW5uZWwoKSB7XG4gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRmbHVzaDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgwKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZVNldFRpbWVvdXQoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNldFRpbWVvdXQobGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoLCAxKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRxdWV1ZSA9IG5ldyBBcnJheSgxMDAwKTtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJGFzYXAkJGZsdXNoKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGliJGVzNiRwcm9taXNlJGFzYXAkJGxlbjsgaSArPSAyKSB7XG4gICAgICB2YXIgY2FsbGJhY2sgPSBsaWIkZXM2JHByb21pc2UkYXNhcCQkcXVldWVbaV07XG4gICAgICB2YXIgYXJnID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2kgKyAxXTtcblxuICAgICAgY2FsbGJhY2soYXJnKTtcblxuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2ldID0gdW5kZWZpbmVkO1xuICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJHF1ZXVlW2kgKyAxXSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkbGVuID0gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhdHRlbXB0VmVydHgoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciByID0gcmVxdWlyZTtcbiAgICAgIHZhciB2ZXJ0eCA9IHIoJ3ZlcnR4Jyk7XG4gICAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkdmVydHhOZXh0ID0gdmVydHgucnVuT25Mb29wIHx8IHZlcnR4LnJ1bk9uQ29udGV4dDtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlVmVydHhUaW1lcigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkYXNhcCQkdXNlU2V0VGltZW91dCgpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaDtcbiAgLy8gRGVjaWRlIHdoYXQgYXN5bmMgbWV0aG9kIHRvIHVzZSB0byB0cmlnZ2VyaW5nIHByb2Nlc3Npbmcgb2YgcXVldWVkIGNhbGxiYWNrczpcbiAgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRpc05vZGUpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VOZXh0VGljaygpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRCcm93c2VyTXV0YXRpb25PYnNlcnZlcikge1xuICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzY2hlZHVsZUZsdXNoID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHVzZU11dGF0aW9uT2JzZXJ2ZXIoKTtcbiAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkYXNhcCQkaXNXb3JrZXIpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VNZXNzYWdlQ2hhbm5lbCgpO1xuICB9IGVsc2UgaWYgKGxpYiRlczYkcHJvbWlzZSRhc2FwJCRicm93c2VyV2luZG93ID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHJlcXVpcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhdHRlbXB0VmVydHgoKTtcbiAgfSBlbHNlIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkc2NoZWR1bGVGbHVzaCA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCR1c2VTZXRUaW1lb3V0KCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKCkge31cblxuICB2YXIgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyA9IHZvaWQgMDtcbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCA9IDE7XG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCA9IDI7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SID0gbmV3IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEVycm9yT2JqZWN0KCk7XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc2VsZkZ1bGZpbGxtZW50KCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IGNhbm5vdCByZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZlwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGNhbm5vdFJldHVybk93bigpIHtcbiAgICByZXR1cm4gbmV3IFR5cGVFcnJvcignQSBwcm9taXNlcyBjYWxsYmFjayBjYW5ub3QgcmV0dXJuIHRoYXQgc2FtZSBwcm9taXNlLicpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZ2V0VGhlbihwcm9taXNlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBwcm9taXNlLnRoZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SLmVycm9yID0gZXJyb3I7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkR0VUX1RIRU5fRVJST1I7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5VGhlbih0aGVuLCB2YWx1ZSwgZnVsZmlsbG1lbnRIYW5kbGVyLCByZWplY3Rpb25IYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgZnVsZmlsbG1lbnRIYW5kbGVyLCByZWplY3Rpb25IYW5kbGVyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVGb3JlaWduVGhlbmFibGUocHJvbWlzZSwgdGhlbmFibGUsIHRoZW4pIHtcbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgdmFyIHNlYWxlZCA9IGZhbHNlO1xuICAgICAgdmFyIGVycm9yID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkdHJ5VGhlbih0aGVuLCB0aGVuYWJsZSwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmIChzZWFsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoZW5hYmxlICE9PSB2YWx1ZSkge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIGlmIChzZWFsZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VhbGVkID0gdHJ1ZTtcblxuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICAgIH0sICdTZXR0bGU6ICcgKyAocHJvbWlzZS5fbGFiZWwgfHwgJyB1bmtub3duIHByb21pc2UnKSk7XG5cbiAgICAgIGlmICghc2VhbGVkICYmIGVycm9yKSB7XG4gICAgICAgIHNlYWxlZCA9IHRydWU7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgcHJvbWlzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVPd25UaGVuYWJsZShwcm9taXNlLCB0aGVuYWJsZSkge1xuICAgIGlmICh0aGVuYWJsZS5fc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB0aGVuYWJsZS5fcmVzdWx0KTtcbiAgICB9IGVsc2UgaWYgKHRoZW5hYmxlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURUQpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB0aGVuYWJsZS5fcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHRoZW5hYmxlLCB1bmRlZmluZWQsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRoYW5kbGVNYXliZVRoZW5hYmxlKHByb21pc2UsIG1heWJlVGhlbmFibGUpIHtcbiAgICBpZiAobWF5YmVUaGVuYWJsZS5jb25zdHJ1Y3RvciA9PT0gcHJvbWlzZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlT3duVGhlbmFibGUocHJvbWlzZSwgbWF5YmVUaGVuYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB0aGVuID0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZ2V0VGhlbihtYXliZVRoZW5hYmxlKTtcblxuICAgICAgaWYgKHRoZW4gPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEdFVF9USEVOX0VSUk9SKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRHRVRfVEhFTl9FUlJPUi5lcnJvcik7XG4gICAgICB9IGVsc2UgaWYgKHRoZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRmdWxmaWxsKHByb21pc2UsIG1heWJlVGhlbmFibGUpO1xuICAgICAgfSBlbHNlIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24odGhlbikpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlRm9yZWlnblRoZW5hYmxlKHByb21pc2UsIG1heWJlVGhlbmFibGUsIHRoZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCBtYXliZVRoZW5hYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc2VsZkZ1bGZpbGxtZW50KCkpO1xuICAgIH0gZWxzZSBpZiAobGliJGVzNiRwcm9taXNlJHV0aWxzJCRvYmplY3RPckZ1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkaGFuZGxlTWF5YmVUaGVuYWJsZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2hSZWplY3Rpb24ocHJvbWlzZSkge1xuICAgIGlmIChwcm9taXNlLl9vbmVycm9yKSB7XG4gICAgICBwcm9taXNlLl9vbmVycm9yKHByb21pc2UuX3Jlc3VsdCk7XG4gICAgfVxuXG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaChwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGZ1bGZpbGwocHJvbWlzZSwgdmFsdWUpIHtcbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9taXNlLl9yZXN1bHQgPSB2YWx1ZTtcbiAgICBwcm9taXNlLl9zdGF0ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJEZVTEZJTExFRDtcblxuICAgIGlmIChwcm9taXNlLl9zdWJzY3JpYmVycy5sZW5ndGggIT09IDApIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2gsIHByb21pc2UpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pIHtcbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJvbWlzZS5fc3RhdGUgPSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRDtcbiAgICBwcm9taXNlLl9yZXN1bHQgPSByZWFzb247XG5cbiAgICBsaWIkZXM2JHByb21pc2UkYXNhcCQkYXNhcChsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRwdWJsaXNoUmVqZWN0aW9uLCBwcm9taXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHN1YnNjcmliZShwYXJlbnQsIGNoaWxkLCBvbkZ1bGZpbGxtZW50LCBvblJlamVjdGlvbikge1xuICAgIHZhciBzdWJzY3JpYmVycyA9IHBhcmVudC5fc3Vic2NyaWJlcnM7XG4gICAgdmFyIGxlbmd0aCA9IHN1YnNjcmliZXJzLmxlbmd0aDtcblxuICAgIHBhcmVudC5fb25lcnJvciA9IG51bGw7XG5cbiAgICBzdWJzY3JpYmVyc1tsZW5ndGhdID0gY2hpbGQ7XG4gICAgc3Vic2NyaWJlcnNbbGVuZ3RoICsgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVEXSA9IG9uRnVsZmlsbG1lbnQ7XG4gICAgc3Vic2NyaWJlcnNbbGVuZ3RoICsgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUkVKRUNURURdID0gb25SZWplY3Rpb247XG5cbiAgICBpZiAobGVuZ3RoID09PSAwICYmIHBhcmVudC5fc3RhdGUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSRhc2FwJCRhc2FwKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHB1Ymxpc2gsIHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcHVibGlzaChwcm9taXNlKSB7XG4gICAgdmFyIHN1YnNjcmliZXJzID0gcHJvbWlzZS5fc3Vic2NyaWJlcnM7XG4gICAgdmFyIHNldHRsZWQgPSBwcm9taXNlLl9zdGF0ZTtcblxuICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGQsXG4gICAgICAgIGNhbGxiYWNrLFxuICAgICAgICBkZXRhaWwgPSBwcm9taXNlLl9yZXN1bHQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnNjcmliZXJzLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICBjaGlsZCA9IHN1YnNjcmliZXJzW2ldO1xuICAgICAgY2FsbGJhY2sgPSBzdWJzY3JpYmVyc1tpICsgc2V0dGxlZF07XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbnZva2VDYWxsYmFjayhzZXR0bGVkLCBjaGlsZCwgY2FsbGJhY2ssIGRldGFpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhkZXRhaWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByb21pc2UuX3N1YnNjcmliZXJzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRFcnJvck9iamVjdCgpIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRUUllfQ0FUQ0hfRVJST1IgPSBuZXcgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRXJyb3JPYmplY3QoKTtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCR0cnlDYXRjaChjYWxsYmFjaywgZGV0YWlsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhkZXRhaWwpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUi5lcnJvciA9IGU7XG4gICAgICByZXR1cm4gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkVFJZX0NBVENIX0VSUk9SO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHNldHRsZWQsIHByb21pc2UsIGNhbGxiYWNrLCBkZXRhaWwpIHtcbiAgICB2YXIgaGFzQ2FsbGJhY2sgPSBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzRnVuY3Rpb24oY2FsbGJhY2spLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHN1Y2NlZWRlZCxcbiAgICAgICAgZmFpbGVkO1xuXG4gICAgaWYgKGhhc0NhbGxiYWNrKSB7XG4gICAgICB2YWx1ZSA9IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHRyeUNhdGNoKGNhbGxiYWNrLCBkZXRhaWwpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFRSWV9DQVRDSF9FUlJPUikge1xuICAgICAgICBmYWlsZWQgPSB0cnVlO1xuICAgICAgICBlcnJvciA9IHZhbHVlLmVycm9yO1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWNjZWVkZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGNhbm5vdFJldHVybk93bigpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGRldGFpbDtcbiAgICAgIHN1Y2NlZWRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlICE9PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HKSB7XG4gICAgICAvLyBub29wXG4gICAgfSBlbHNlIGlmIChoYXNDYWxsYmFjayAmJiBzdWNjZWVkZWQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVzb2x2ZShwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGZhaWxlZCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmIChzZXR0bGVkID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQpIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNldHRsZWQgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbml0aWFsaXplUHJvbWlzZShwcm9taXNlLCByZXNvbHZlcikge1xuICAgIHRyeSB7XG4gICAgICByZXNvbHZlcihmdW5jdGlvbiByZXNvbHZlUHJvbWlzZSh2YWx1ZSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0sIGZ1bmN0aW9uIHJlamVjdFByb21pc2UocmVhc29uKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yKENvbnN0cnVjdG9yLCBpbnB1dCkge1xuICAgIHZhciBlbnVtZXJhdG9yID0gdGhpcztcblxuICAgIGVudW1lcmF0b3IuX2luc3RhbmNlQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjtcbiAgICBlbnVtZXJhdG9yLnByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG5cbiAgICBpZiAoZW51bWVyYXRvci5fdmFsaWRhdGVJbnB1dChpbnB1dCkpIHtcbiAgICAgIGVudW1lcmF0b3IuX2lucHV0ID0gaW5wdXQ7XG4gICAgICBlbnVtZXJhdG9yLmxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgICAgIGVudW1lcmF0b3IuX3JlbWFpbmluZyA9IGlucHV0Lmxlbmd0aDtcblxuICAgICAgZW51bWVyYXRvci5faW5pdCgpO1xuXG4gICAgICBpZiAoZW51bWVyYXRvci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChlbnVtZXJhdG9yLnByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnVtZXJhdG9yLmxlbmd0aCA9IGVudW1lcmF0b3IubGVuZ3RoIHx8IDA7XG4gICAgICAgIGVudW1lcmF0b3IuX2VudW1lcmF0ZSgpO1xuICAgICAgICBpZiAoZW51bWVyYXRvci5fcmVtYWluaW5nID09PSAwKSB7XG4gICAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChlbnVtZXJhdG9yLnByb21pc2UsIGVudW1lcmF0b3IuX3Jlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KGVudW1lcmF0b3IucHJvbWlzZSwgZW51bWVyYXRvci5fdmFsaWRhdGlvbkVycm9yKCkpO1xuICAgIH1cbiAgfVxuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVJbnB1dCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIHJldHVybiBsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzQXJyYXkoaW5wdXQpO1xuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGlvbkVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ0FycmF5IE1ldGhvZHMgbXVzdCBiZSBwcm92aWRlZCBhbiBBcnJheScpO1xuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9yZXN1bHQgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICB9O1xuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yO1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fZW51bWVyYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnVtZXJhdG9yID0gdGhpcztcblxuICAgIHZhciBsZW5ndGggPSBlbnVtZXJhdG9yLmxlbmd0aDtcbiAgICB2YXIgcHJvbWlzZSA9IGVudW1lcmF0b3IucHJvbWlzZTtcbiAgICB2YXIgaW5wdXQgPSBlbnVtZXJhdG9yLl9pbnB1dDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBwcm9taXNlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyAmJiBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGVudW1lcmF0b3IuX2VhY2hFbnRyeShpbnB1dFtpXSwgaSk7XG4gICAgfVxuICB9O1xuXG4gIGxpYiRlczYkcHJvbWlzZSRlbnVtZXJhdG9yJCRFbnVtZXJhdG9yLnByb3RvdHlwZS5fZWFjaEVudHJ5ID0gZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuICAgIHZhciBjID0gZW51bWVyYXRvci5faW5zdGFuY2VDb25zdHJ1Y3RvcjtcblxuICAgIGlmIChsaWIkZXM2JHByb21pc2UkdXRpbHMkJGlzTWF5YmVUaGVuYWJsZShlbnRyeSkpIHtcbiAgICAgIGlmIChlbnRyeS5jb25zdHJ1Y3RvciA9PT0gYyAmJiBlbnRyeS5fc3RhdGUgIT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFBFTkRJTkcpIHtcbiAgICAgICAgZW50cnkuX29uZXJyb3IgPSBudWxsO1xuICAgICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQoZW50cnkuX3N0YXRlLCBpLCBlbnRyeS5fcmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudW1lcmF0b3IuX3dpbGxTZXR0bGVBdChjLnJlc29sdmUoZW50cnkpLCBpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZW51bWVyYXRvci5fcmVtYWluaW5nLS07XG4gICAgICBlbnVtZXJhdG9yLl9yZXN1bHRbaV0gPSBlbnRyeTtcbiAgICB9XG4gIH07XG5cbiAgbGliJGVzNiRwcm9taXNlJGVudW1lcmF0b3IkJEVudW1lcmF0b3IucHJvdG90eXBlLl9zZXR0bGVkQXQgPSBmdW5jdGlvbiAoc3RhdGUsIGksIHZhbHVlKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gZW51bWVyYXRvci5wcm9taXNlO1xuXG4gICAgaWYgKHByb21pc2UuX3N0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRQRU5ESU5HKSB7XG4gICAgICBlbnVtZXJhdG9yLl9yZW1haW5pbmctLTtcblxuICAgICAgaWYgKHN0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRSRUpFQ1RFRCkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW51bWVyYXRvci5fcmVzdWx0W2ldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudW1lcmF0b3IuX3JlbWFpbmluZyA9PT0gMCkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkZnVsZmlsbChwcm9taXNlLCBlbnVtZXJhdG9yLl9yZXN1bHQpO1xuICAgIH1cbiAgfTtcblxuICBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkRW51bWVyYXRvci5wcm90b3R5cGUuX3dpbGxTZXR0bGVBdCA9IGZ1bmN0aW9uIChwcm9taXNlLCBpKSB7XG4gICAgdmFyIGVudW1lcmF0b3IgPSB0aGlzO1xuXG4gICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHByb21pc2UsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBlbnVtZXJhdG9yLl9zZXR0bGVkQXQobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkRlVMRklMTEVELCBpLCB2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgZW51bWVyYXRvci5fc2V0dGxlZEF0KGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVELCBpLCByZWFzb24pO1xuICAgIH0pO1xuICB9O1xuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGFsbChlbnRyaWVzKSB7XG4gICAgcmV0dXJuIG5ldyBsaWIkZXM2JHByb21pc2UkZW51bWVyYXRvciQkZGVmYXVsdCh0aGlzLCBlbnRyaWVzKS5wcm9taXNlO1xuICB9XG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGRlZmF1bHQgPSBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSRhbGwkJGFsbDtcbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkcmFjZShlbnRyaWVzKSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgQ29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG5cbiAgICBpZiAoIWxpYiRlczYkcHJvbWlzZSR1dGlscyQkaXNBcnJheShlbnRyaWVzKSkge1xuICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkcmVqZWN0KHByb21pc2UsIG5ldyBUeXBlRXJyb3IoJ1lvdSBtdXN0IHBhc3MgYW4gYXJyYXkgdG8gcmFjZS4nKSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG5cbiAgICBmdW5jdGlvbiBvbkZ1bGZpbGxtZW50KHZhbHVlKSB7XG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZXNvbHZlKHByb21pc2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblJlamVjdGlvbihyZWFzb24pIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBwcm9taXNlLl9zdGF0ZSA9PT0gbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkUEVORElORyAmJiBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHN1YnNjcmliZShDb25zdHJ1Y3Rvci5yZXNvbHZlKGVudHJpZXNbaV0pLCB1bmRlZmluZWQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJhY2UkJHJhY2U7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJHJlc29sdmUob2JqZWN0KSB7XG4gICAgLypqc2hpbnQgdmFsaWR0aGlzOnRydWUgKi9cbiAgICB2YXIgQ29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QuY29uc3RydWN0b3IgPT09IENvbnN0cnVjdG9yKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBwcm9taXNlID0gbmV3IENvbnN0cnVjdG9yKGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJG5vb3ApO1xuICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJHJlc29sdmUocHJvbWlzZSwgb2JqZWN0KTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVzb2x2ZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJHJlc29sdmU7XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlamVjdCQkcmVqZWN0KHJlYXNvbikge1xuICAgIC8qanNoaW50IHZhbGlkdGhpczp0cnVlICovXG4gICAgdmFyIENvbnN0cnVjdG9yID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBDb25zdHJ1Y3RvcihsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRub29wKTtcbiAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRyZWplY3QocHJvbWlzZSwgcmVhc29uKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuICB2YXIgbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRkZWZhdWx0ID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmVqZWN0JCRyZWplY3Q7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRjb3VudGVyID0gMDtcblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNSZXNvbHZlcigpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdZb3UgbXVzdCBwYXNzIGEgcmVzb2x2ZXIgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBwcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gIH1cblxuICBmdW5jdGlvbiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNOZXcoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Byb21pc2UnOiBQbGVhc2UgdXNlIHRoZSAnbmV3JyBvcGVyYXRvciwgdGhpcyBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLlwiKTtcbiAgfVxuXG4gIHZhciBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlO1xuICAvKipcbiAgICBQcm9taXNlIG9iamVjdHMgcmVwcmVzZW50IHRoZSBldmVudHVhbCByZXN1bHQgb2YgYW4gYXN5bmNocm9ub3VzIG9wZXJhdGlvbi4gVGhlXG4gICAgcHJpbWFyeSB3YXkgb2YgaW50ZXJhY3Rpbmcgd2l0aCBhIHByb21pc2UgaXMgdGhyb3VnaCBpdHMgYHRoZW5gIG1ldGhvZCwgd2hpY2hcbiAgICByZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZSByZWFzb25cbiAgICB3aHkgdGhlIHByb21pc2UgY2Fubm90IGJlIGZ1bGZpbGxlZC5cbiAgICAgVGVybWlub2xvZ3lcbiAgICAtLS0tLS0tLS0tLVxuICAgICAtIGBwcm9taXNlYCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gd2l0aCBhIGB0aGVuYCBtZXRob2Qgd2hvc2UgYmVoYXZpb3IgY29uZm9ybXMgdG8gdGhpcyBzcGVjaWZpY2F0aW9uLlxuICAgIC0gYHRoZW5hYmxlYCBpcyBhbiBvYmplY3Qgb3IgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGEgYHRoZW5gIG1ldGhvZC5cbiAgICAtIGB2YWx1ZWAgaXMgYW55IGxlZ2FsIEphdmFTY3JpcHQgdmFsdWUgKGluY2x1ZGluZyB1bmRlZmluZWQsIGEgdGhlbmFibGUsIG9yIGEgcHJvbWlzZSkuXG4gICAgLSBgZXhjZXB0aW9uYCBpcyBhIHZhbHVlIHRoYXQgaXMgdGhyb3duIHVzaW5nIHRoZSB0aHJvdyBzdGF0ZW1lbnQuXG4gICAgLSBgcmVhc29uYCBpcyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoeSBhIHByb21pc2Ugd2FzIHJlamVjdGVkLlxuICAgIC0gYHNldHRsZWRgIHRoZSBmaW5hbCByZXN0aW5nIHN0YXRlIG9mIGEgcHJvbWlzZSwgZnVsZmlsbGVkIG9yIHJlamVjdGVkLlxuICAgICBBIHByb21pc2UgY2FuIGJlIGluIG9uZSBvZiB0aHJlZSBzdGF0ZXM6IHBlbmRpbmcsIGZ1bGZpbGxlZCwgb3IgcmVqZWN0ZWQuXG4gICAgIFByb21pc2VzIHRoYXQgYXJlIGZ1bGZpbGxlZCBoYXZlIGEgZnVsZmlsbG1lbnQgdmFsdWUgYW5kIGFyZSBpbiB0aGUgZnVsZmlsbGVkXG4gICAgc3RhdGUuICBQcm9taXNlcyB0aGF0IGFyZSByZWplY3RlZCBoYXZlIGEgcmVqZWN0aW9uIHJlYXNvbiBhbmQgYXJlIGluIHRoZVxuICAgIHJlamVjdGVkIHN0YXRlLiAgQSBmdWxmaWxsbWVudCB2YWx1ZSBpcyBuZXZlciBhIHRoZW5hYmxlLlxuICAgICBQcm9taXNlcyBjYW4gYWxzbyBiZSBzYWlkIHRvICpyZXNvbHZlKiBhIHZhbHVlLiAgSWYgdGhpcyB2YWx1ZSBpcyBhbHNvIGFcbiAgICBwcm9taXNlLCB0aGVuIHRoZSBvcmlnaW5hbCBwcm9taXNlJ3Mgc2V0dGxlZCBzdGF0ZSB3aWxsIG1hdGNoIHRoZSB2YWx1ZSdzXG4gICAgc2V0dGxlZCBzdGF0ZS4gIFNvIGEgcHJvbWlzZSB0aGF0ICpyZXNvbHZlcyogYSBwcm9taXNlIHRoYXQgcmVqZWN0cyB3aWxsXG4gICAgaXRzZWxmIHJlamVjdCwgYW5kIGEgcHJvbWlzZSB0aGF0ICpyZXNvbHZlcyogYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2lsbFxuICAgIGl0c2VsZiBmdWxmaWxsLlxuICAgICAgQmFzaWMgVXNhZ2U6XG4gICAgLS0tLS0tLS0tLS0tXG4gICAgIGBgYGpzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIC8vIG9uIHN1Y2Nlc3NcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgIC8vIG9uIGZhaWx1cmVcbiAgICAgIHJlamVjdChyZWFzb24pO1xuICAgIH0pO1xuICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIC8vIG9uIGZ1bGZpbGxtZW50XG4gICAgfSwgZnVuY3Rpb24ocmVhc29uKSB7XG4gICAgICAvLyBvbiByZWplY3Rpb25cbiAgICB9KTtcbiAgICBgYGBcbiAgICAgQWR2YW5jZWQgVXNhZ2U6XG4gICAgLS0tLS0tLS0tLS0tLS0tXG4gICAgIFByb21pc2VzIHNoaW5lIHdoZW4gYWJzdHJhY3RpbmcgYXdheSBhc3luY2hyb25vdXMgaW50ZXJhY3Rpb25zIHN1Y2ggYXNcbiAgICBgWE1MSHR0cFJlcXVlc3Rgcy5cbiAgICAgYGBganNcbiAgICBmdW5jdGlvbiBnZXRKU09OKHVybCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCl7XG4gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpO1xuICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdqc29uJztcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT09IHRoaXMuRE9ORSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ2dldEpTT046IGAnICsgdXJsICsgJ2AgZmFpbGVkIHdpdGggc3RhdHVzOiBbJyArIHRoaXMuc3RhdHVzICsgJ10nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgICBnZXRKU09OKCcvcG9zdHMuanNvbicpLnRoZW4oZnVuY3Rpb24oanNvbikge1xuICAgICAgLy8gb24gZnVsZmlsbG1lbnRcbiAgICB9LCBmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgIC8vIG9uIHJlamVjdGlvblxuICAgIH0pO1xuICAgIGBgYFxuICAgICBVbmxpa2UgY2FsbGJhY2tzLCBwcm9taXNlcyBhcmUgZ3JlYXQgY29tcG9zYWJsZSBwcmltaXRpdmVzLlxuICAgICBgYGBqc1xuICAgIFByb21pc2UuYWxsKFtcbiAgICAgIGdldEpTT04oJy9wb3N0cycpLFxuICAgICAgZ2V0SlNPTignL2NvbW1lbnRzJylcbiAgICBdKS50aGVuKGZ1bmN0aW9uKHZhbHVlcyl7XG4gICAgICB2YWx1ZXNbMF0gLy8gPT4gcG9zdHNKU09OXG4gICAgICB2YWx1ZXNbMV0gLy8gPT4gY29tbWVudHNKU09OXG4gICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9KTtcbiAgICBgYGBcbiAgICAgQGNsYXNzIFByb21pc2VcbiAgICBAcGFyYW0ge2Z1bmN0aW9ufSByZXNvbHZlclxuICAgIFVzZWZ1bCBmb3IgdG9vbGluZy5cbiAgICBAY29uc3RydWN0b3JcbiAgKi9cbiAgZnVuY3Rpb24gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UocmVzb2x2ZXIpIHtcbiAgICB0aGlzLl9pZCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRjb3VudGVyKys7XG4gICAgdGhpcy5fc3RhdGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fcmVzdWx0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N1YnNjcmliZXJzID0gW107XG5cbiAgICBpZiAobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCAhPT0gcmVzb2x2ZXIpIHtcbiAgICAgIGlmICghbGliJGVzNiRwcm9taXNlJHV0aWxzJCRpc0Z1bmN0aW9uKHJlc29sdmVyKSkge1xuICAgICAgICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkbmVlZHNSZXNvbHZlcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UpKSB7XG4gICAgICAgIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRuZWVkc05ldygpO1xuICAgICAgfVxuXG4gICAgICBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRpbml0aWFsaXplUHJvbWlzZSh0aGlzLCByZXNvbHZlcik7XG4gICAgfVxuICB9XG5cbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuYWxsID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkYWxsJCRkZWZhdWx0O1xuICBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZS5yYWNlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkcmFjZSQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucmVzb2x2ZSA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlc29sdmUkJGRlZmF1bHQ7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLnJlamVjdCA9IGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJHJlamVjdCQkZGVmYXVsdDtcbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UuX3NldFNjaGVkdWxlciA9IGxpYiRlczYkcHJvbWlzZSRhc2FwJCRzZXRTY2hlZHVsZXI7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLl9zZXRBc2FwID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJHNldEFzYXA7XG4gIGxpYiRlczYkcHJvbWlzZSRwcm9taXNlJCRQcm9taXNlLl9hc2FwID0gbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXA7XG5cbiAgbGliJGVzNiRwcm9taXNlJHByb21pc2UkJFByb21pc2UucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkUHJvbWlzZSxcblxuICAgIC8qKlxuICAgICAgVGhlIHByaW1hcnkgd2F5IG9mIGludGVyYWN0aW5nIHdpdGggYSBwcm9taXNlIGlzIHRocm91Z2ggaXRzIGB0aGVuYCBtZXRob2QsXG4gICAgICB3aGljaCByZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZVxuICAgICAgcmVhc29uIHdoeSB0aGUgcHJvbWlzZSBjYW5ub3QgYmUgZnVsZmlsbGVkLlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24odXNlcil7XG4gICAgICAgIC8vIHVzZXIgaXMgYXZhaWxhYmxlXG4gICAgICB9LCBmdW5jdGlvbihyZWFzb24pe1xuICAgICAgICAvLyB1c2VyIGlzIHVuYXZhaWxhYmxlLCBhbmQgeW91IGFyZSBnaXZlbiB0aGUgcmVhc29uIHdoeVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBDaGFpbmluZ1xuICAgICAgLS0tLS0tLS1cbiAgICAgICBUaGUgcmV0dXJuIHZhbHVlIG9mIGB0aGVuYCBpcyBpdHNlbGYgYSBwcm9taXNlLiAgVGhpcyBzZWNvbmQsICdkb3duc3RyZWFtJ1xuICAgICAgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZpcnN0IHByb21pc2UncyBmdWxmaWxsbWVudFxuICAgICAgb3IgcmVqZWN0aW9uIGhhbmRsZXIsIG9yIHJlamVjdGVkIGlmIHRoZSBoYW5kbGVyIHRocm93cyBhbiBleGNlcHRpb24uXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gdXNlci5uYW1lO1xuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICByZXR1cm4gJ2RlZmF1bHQgbmFtZSc7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh1c2VyTmFtZSkge1xuICAgICAgICAvLyBJZiBgZmluZFVzZXJgIGZ1bGZpbGxlZCwgYHVzZXJOYW1lYCB3aWxsIGJlIHRoZSB1c2VyJ3MgbmFtZSwgb3RoZXJ3aXNlIGl0XG4gICAgICAgIC8vIHdpbGwgYmUgYCdkZWZhdWx0IG5hbWUnYFxuICAgICAgfSk7XG4gICAgICAgZmluZFVzZXIoKS50aGVuKGZ1bmN0aW9uICh1c2VyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgdXNlciwgYnV0IHN0aWxsIHVuaGFwcHknKTtcbiAgICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZmluZFVzZXJgIHJlamVjdGVkIGFuZCB3ZSdyZSB1bmhhcHB5Jyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBuZXZlciByZWFjaGVkXG4gICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIGlmIGBmaW5kVXNlcmAgZnVsZmlsbGVkLCBgcmVhc29uYCB3aWxsIGJlICdGb3VuZCB1c2VyLCBidXQgc3RpbGwgdW5oYXBweScuXG4gICAgICAgIC8vIElmIGBmaW5kVXNlcmAgcmVqZWN0ZWQsIGByZWFzb25gIHdpbGwgYmUgJ2BmaW5kVXNlcmAgcmVqZWN0ZWQgYW5kIHdlJ3JlIHVuaGFwcHknLlxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgIElmIHRoZSBkb3duc3RyZWFtIHByb21pc2UgZG9lcyBub3Qgc3BlY2lmeSBhIHJlamVjdGlvbiBoYW5kbGVyLCByZWplY3Rpb24gcmVhc29ucyB3aWxsIGJlIHByb3BhZ2F0ZWQgZnVydGhlciBkb3duc3RyZWFtLlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBlZGFnb2dpY2FsRXhjZXB0aW9uKCdVcHN0cmVhbSBlcnJvcicpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZFxuICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8gbmV2ZXIgcmVhY2hlZFxuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAvLyBUaGUgYFBlZGdhZ29jaWFsRXhjZXB0aW9uYCBpcyBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IGRvd24gdG8gaGVyZVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBBc3NpbWlsYXRpb25cbiAgICAgIC0tLS0tLS0tLS0tLVxuICAgICAgIFNvbWV0aW1lcyB0aGUgdmFsdWUgeW91IHdhbnQgdG8gcHJvcGFnYXRlIHRvIGEgZG93bnN0cmVhbSBwcm9taXNlIGNhbiBvbmx5IGJlXG4gICAgICByZXRyaWV2ZWQgYXN5bmNocm9ub3VzbHkuIFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHJldHVybmluZyBhIHByb21pc2UgaW4gdGhlXG4gICAgICBmdWxmaWxsbWVudCBvciByZWplY3Rpb24gaGFuZGxlci4gVGhlIGRvd25zdHJlYW0gcHJvbWlzZSB3aWxsIHRoZW4gYmUgcGVuZGluZ1xuICAgICAgdW50aWwgdGhlIHJldHVybmVkIHByb21pc2UgaXMgc2V0dGxlZC4gVGhpcyBpcyBjYWxsZWQgKmFzc2ltaWxhdGlvbiouXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRVc2VyKCkudGhlbihmdW5jdGlvbiAodXNlcikge1xuICAgICAgICByZXR1cm4gZmluZENvbW1lbnRzQnlBdXRob3IodXNlcik7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb21tZW50cykge1xuICAgICAgICAvLyBUaGUgdXNlcidzIGNvbW1lbnRzIGFyZSBub3cgYXZhaWxhYmxlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIElmIHRoZSBhc3NpbWxpYXRlZCBwcm9taXNlIHJlamVjdHMsIHRoZW4gdGhlIGRvd25zdHJlYW0gcHJvbWlzZSB3aWxsIGFsc28gcmVqZWN0LlxuICAgICAgIGBgYGpzXG4gICAgICBmaW5kVXNlcigpLnRoZW4oZnVuY3Rpb24gKHVzZXIpIHtcbiAgICAgICAgcmV0dXJuIGZpbmRDb21tZW50c0J5QXV0aG9yKHVzZXIpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAoY29tbWVudHMpIHtcbiAgICAgICAgLy8gSWYgYGZpbmRDb21tZW50c0J5QXV0aG9yYCBmdWxmaWxscywgd2UnbGwgaGF2ZSB0aGUgdmFsdWUgaGVyZVxuICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAvLyBJZiBgZmluZENvbW1lbnRzQnlBdXRob3JgIHJlamVjdHMsIHdlJ2xsIGhhdmUgdGhlIHJlYXNvbiBoZXJlXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFNpbXBsZSBFeGFtcGxlXG4gICAgICAtLS0tLS0tLS0tLS0tLVxuICAgICAgIFN5bmNocm9ub3VzIEV4YW1wbGVcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGZpbmRSZXN1bHQoKTtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfVxuICAgICAgYGBgXG4gICAgICAgRXJyYmFjayBFeGFtcGxlXG4gICAgICAgYGBganNcbiAgICAgIGZpbmRSZXN1bHQoZnVuY3Rpb24ocmVzdWx0LCBlcnIpe1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBQcm9taXNlIEV4YW1wbGU7XG4gICAgICAgYGBgamF2YXNjcmlwdFxuICAgICAgZmluZFJlc3VsdCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtcbiAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgfSwgZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gZmFpbHVyZVxuICAgICAgfSk7XG4gICAgICBgYGBcbiAgICAgICBBZHZhbmNlZCBFeGFtcGxlXG4gICAgICAtLS0tLS0tLS0tLS0tLVxuICAgICAgIFN5bmNocm9ub3VzIEV4YW1wbGVcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICB2YXIgYXV0aG9yLCBib29rcztcbiAgICAgICB0cnkge1xuICAgICAgICBhdXRob3IgPSBmaW5kQXV0aG9yKCk7XG4gICAgICAgIGJvb2tzICA9IGZpbmRCb29rc0J5QXV0aG9yKGF1dGhvcik7XG4gICAgICAgIC8vIHN1Y2Nlc3NcbiAgICAgIH0gY2F0Y2gocmVhc29uKSB7XG4gICAgICAgIC8vIGZhaWx1cmVcbiAgICAgIH1cbiAgICAgIGBgYFxuICAgICAgIEVycmJhY2sgRXhhbXBsZVxuICAgICAgIGBgYGpzXG4gICAgICAgZnVuY3Rpb24gZm91bmRCb29rcyhib29rcykge1xuICAgICAgIH1cbiAgICAgICBmdW5jdGlvbiBmYWlsdXJlKHJlYXNvbikge1xuICAgICAgIH1cbiAgICAgICBmaW5kQXV0aG9yKGZ1bmN0aW9uKGF1dGhvciwgZXJyKXtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAvLyBmYWlsdXJlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpbmRCb29va3NCeUF1dGhvcihhdXRob3IsIGZ1bmN0aW9uKGJvb2tzLCBlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm91bmRCb29rcyhib29rcyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaChyZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgIGZhaWx1cmUocmVhc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICAgIGZhaWx1cmUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3VjY2Vzc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIFByb21pc2UgRXhhbXBsZTtcbiAgICAgICBgYGBqYXZhc2NyaXB0XG4gICAgICBmaW5kQXV0aG9yKCkuXG4gICAgICAgIHRoZW4oZmluZEJvb2tzQnlBdXRob3IpLlxuICAgICAgICB0aGVuKGZ1bmN0aW9uKGJvb2tzKXtcbiAgICAgICAgICAvLyBmb3VuZCBib29rc1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24ocmVhc29uKXtcbiAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICAgIH0pO1xuICAgICAgYGBgXG4gICAgICAgQG1ldGhvZCB0aGVuXG4gICAgICBAcGFyYW0ge0Z1bmN0aW9ufSBvbkZ1bGZpbGxlZFxuICAgICAgQHBhcmFtIHtGdW5jdGlvbn0gb25SZWplY3RlZFxuICAgICAgVXNlZnVsIGZvciB0b29saW5nLlxuICAgICAgQHJldHVybiB7UHJvbWlzZX1cbiAgICAqL1xuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsbWVudCwgb25SZWplY3Rpb24pIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzO1xuICAgICAgdmFyIHN0YXRlID0gcGFyZW50Ll9zdGF0ZTtcblxuICAgICAgaWYgKHN0YXRlID09PSBsaWIkZXM2JHByb21pc2UkJGludGVybmFsJCRGVUxGSUxMRUQgJiYgIW9uRnVsZmlsbG1lbnQgfHwgc3RhdGUgPT09IGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJFJFSkVDVEVEICYmICFvblJlamVjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIGNoaWxkID0gbmV3IHRoaXMuY29uc3RydWN0b3IobGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkbm9vcCk7XG4gICAgICB2YXIgcmVzdWx0ID0gcGFyZW50Ll9yZXN1bHQ7XG5cbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbc3RhdGUgLSAxXTtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJGFzYXAkJGFzYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxpYiRlczYkcHJvbWlzZSQkaW50ZXJuYWwkJGludm9rZUNhbGxiYWNrKHN0YXRlLCBjaGlsZCwgY2FsbGJhY2ssIHJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGliJGVzNiRwcm9taXNlJCRpbnRlcm5hbCQkc3Vic2NyaWJlKHBhcmVudCwgY2hpbGQsIG9uRnVsZmlsbG1lbnQsIG9uUmVqZWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgIGBjYXRjaGAgaXMgc2ltcGx5IHN1Z2FyIGZvciBgdGhlbih1bmRlZmluZWQsIG9uUmVqZWN0aW9uKWAgd2hpY2ggbWFrZXMgaXQgdGhlIHNhbWVcbiAgICAgIGFzIHRoZSBjYXRjaCBibG9jayBvZiBhIHRyeS9jYXRjaCBzdGF0ZW1lbnQuXG4gICAgICAgYGBganNcbiAgICAgIGZ1bmN0aW9uIGZpbmRBdXRob3IoKXtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZG4ndCBmaW5kIHRoYXQgYXV0aG9yJyk7XG4gICAgICB9XG4gICAgICAgLy8gc3luY2hyb25vdXNcbiAgICAgIHRyeSB7XG4gICAgICAgIGZpbmRBdXRob3IoKTtcbiAgICAgIH0gY2F0Y2gocmVhc29uKSB7XG4gICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICB9XG4gICAgICAgLy8gYXN5bmMgd2l0aCBwcm9taXNlc1xuICAgICAgZmluZEF1dGhvcigpLmNhdGNoKGZ1bmN0aW9uKHJlYXNvbil7XG4gICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgICB9KTtcbiAgICAgIGBgYFxuICAgICAgIEBtZXRob2QgY2F0Y2hcbiAgICAgIEBwYXJhbSB7RnVuY3Rpb259IG9uUmVqZWN0aW9uXG4gICAgICBVc2VmdWwgZm9yIHRvb2xpbmcuXG4gICAgICBAcmV0dXJuIHtQcm9taXNlfVxuICAgICovXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gX2NhdGNoKG9uUmVqZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0aW9uKTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkcG9seWZpbGwoKSB7XG4gICAgdmFyIGxvY2FsO1xuXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsb2NhbCA9IGdsb2JhbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbG9jYWwgPSBzZWxmO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2NhbCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncG9seWZpbGwgZmFpbGVkIGJlY2F1c2UgZ2xvYmFsIG9iamVjdCBpcyB1bmF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFAgPSBsb2NhbC5Qcm9taXNlO1xuXG4gICAgaWYgKFAgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFAucmVzb2x2ZSgpKSA9PT0gJ1tvYmplY3QgUHJvbWlzZV0nICYmICFQLmNhc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2NhbC5Qcm9taXNlID0gbGliJGVzNiRwcm9taXNlJHByb21pc2UkJGRlZmF1bHQ7XG4gIH1cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdCA9IGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkcG9seWZpbGw7XG5cbiAgdmFyIGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2UgPSB7XG4gICAgJ1Byb21pc2UnOiBsaWIkZXM2JHByb21pc2UkcHJvbWlzZSQkZGVmYXVsdCxcbiAgICAncG9seWZpbGwnOiBsaWIkZXM2JHByb21pc2UkcG9seWZpbGwkJGRlZmF1bHRcbiAgfTtcblxuICAvKiBnbG9iYWwgZGVmaW5lOnRydWUgbW9kdWxlOnRydWUgd2luZG93OiB0cnVlICovXG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZVsnYW1kJ10pIHtcbiAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2U7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlWydleHBvcnRzJ10pIHtcbiAgICBtb2R1bGVbJ2V4cG9ydHMnXSA9IGxpYiRlczYkcHJvbWlzZSR1bWQkJEVTNlByb21pc2U7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhpc1snRVM2UHJvbWlzZSddID0gbGliJGVzNiRwcm9taXNlJHVtZCQkRVM2UHJvbWlzZTtcbiAgfVxuXG4gIGxpYiRlczYkcHJvbWlzZSRwb2x5ZmlsbCQkZGVmYXVsdCgpO1xufSkuY2FsbCh1bmRlZmluZWQpOyIsIi8vIFRoaXMgaXMgZnJlZSBhbmQgdW5lbmN1bWJlcmVkIHNvZnR3YXJlIHJlbGVhc2VkIGludG8gdGhlIHB1YmxpYyBkb21haW4uXG4vLyBTZWUgTElDRU5TRS5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxudmFyIGVuY29kaW5nID0gcmVxdWlyZShcIi4vbGliL2VuY29kaW5nLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVGV4dEVuY29kZXI6IGVuY29kaW5nLlRleHRFbmNvZGVyLFxuICBUZXh0RGVjb2RlcjogZW5jb2RpbmcuVGV4dERlY29kZXIsXG59O1xuIiwiKGZ1bmN0aW9uKGdsb2JhbCkge1xuICAndXNlIHN0cmljdCc7XG4gIGdsb2JhbFtcImVuY29kaW5nLWluZGV4ZXNcIl0gPSB7XG4gIFwiYmlnNVwiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUwNiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQzLDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwzODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcsMTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgwOTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMzLDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEyNzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEsMTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEsNDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcsMjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwyMDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIwODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYwLDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGwsMzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUxMCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUzMiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2NjcsMjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQsMjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTksMjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAsMTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3MywxNjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYwMiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQsMTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwxOTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIxNzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDksMTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYxMTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEzNDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwxNDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMxLDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMzLDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEzNTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQyOCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkxOSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEzODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwzMTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUsMzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3MDAwMCw0MDA2MCw0MDQ3OSw0MDY0NCwyNzUwMyw2Mzc1MSwyMDAyMywxMzEyMDcsMzg0MjksMjUxNDMsMzgwNTAsbnVsbCwyMDUzOSwyODE1OCwxNzExMjMsNDA4NzAsMTU4MTcsMzQ5NTksMTQ3NzkwLDI4NzkxLDIzNzk3LDE5MjMyLDE1MjAxMywxMzY1NywxNTQ5MjgsMjQ4NjYsMTY2NDUwLDM2Nzc1LDM3MzY2LDI5MDczLDI2MzkzLDI5NjI2LDE0NDAwMSwxNzIyOTUsMTU0OTksMTM3NjAwLDE5MjE2LDMwOTQ4LDI5Njk4LDIwOTEwLDE2NTY0NywxNjM5MywyNzIzNSwxNzI3MzAsMTY5MzEsMzQzMTksMTMzNzQzLDMxMjc0LDE3MDMxMSwxNjY2MzQsMzg3NDEsMjg3NDksMjEyODQsMTM5MzkwLDM3ODc2LDMwNDI1LDE2NjM3MSw0MDg3MSwzMDY4NSwyMDEzMSwyMDQ2NCwyMDY2OCwyMDAxNSwyMDI0Nyw0MDg3MiwyMTU1NiwzMjEzOSwyMjY3NCwyMjczNiwxMzg2NzgsMjQyMTAsMjQyMTcsMjQ1MTQsMTQxMDc0LDI1OTk1LDE0NDM3NywyNjkwNSwyNzIwMywxNDY1MzEsMjc5MDMsbnVsbCwyOTE4NCwxNDg3NDEsMjk1ODAsMTYwOTEsMTUwMDM1LDIzMzE3LDI5ODgxLDM1NzE1LDE1NDc4OCwxNTMyMzcsMzEzNzksMzE3MjQsMzE5MzksMzIzNjQsMzM1MjgsMzQxOTksNDA4NzMsMzQ5NjAsNDA4NzQsMzY1MzcsNDA4NzUsMzY4MTUsMzQxNDMsMzkzOTIsMzc0MDksNDA4NzYsMTY3MzUzLDEzNjI1NSwxNjQ5NywxNzA1OCwyMzA2NixudWxsLG51bGwsbnVsbCwzOTAxNiwyNjQ3NSwxNzAxNCwyMjMzMyxudWxsLDM0MjYyLDE0OTg4MywzMzQ3MSwxNjAwMTMsMTk1ODUsMTU5MDkyLDIzOTMxLDE1ODQ4NSwxNTk2NzgsNDA4NzcsNDA4NzgsMjM0NDYsNDA4NzksMjYzNDMsMzIzNDcsMjgyNDcsMzExNzgsMTU3NTIsMTc2MDMsMTQzOTU4LDE0MTIwNiwxNzMwNiwxNzcxOCxudWxsLDIzNzY1LDE0NjIwMiwzNTU3NywyMzY3MiwxNTYzNCwxNDQ3MjEsMjM5MjgsNDA4ODIsMjkwMTUsMTc3NTIsMTQ3NjkyLDEzODc4NywxOTU3NSwxNDcxMiwxMzM4NiwxMzE0OTIsMTU4Nzg1LDM1NTMyLDIwNDA0LDEzMTY0MSwyMjk3NSwzMzEzMiwzODk5OCwxNzAyMzQsMjQzNzksMTM0MDQ3LG51bGwsMTM5NzEzLDE2NjI1MywxNjY0MiwxODEwNywxNjgwNTcsMTYxMzUsNDA4ODMsMTcyNDY5LDE2NjMyLDE0Mjk0LDE4MTY3LDE1ODc5MCwxNjc2NCwxNjU1NTQsMTYwNzY3LDE3NzczLDE0NTQ4LDE1MjczMCwxNzc2MSwxNzY5MSwxOTg0OSwxOTU3OSwxOTgzMCwxNzg5OCwxNjMyOCwxNTAyODcsMTM5MjEsMTc2MzAsMTc1OTcsMTY4NzcsMjM4NzAsMjM4ODAsMjM4OTQsMTU4NjgsMTQzNTEsMjM5NzIsMjM5OTMsMTQzNjgsMTQzOTIsMjQxMzAsMjQyNTMsMjQzNTcsMjQ0NTEsMTQ2MDAsMTQ2MTIsMTQ2NTUsMTQ2NjksMjQ3OTEsMjQ4OTMsMjM3ODEsMTQ3MjksMjUwMTUsMjUwMTcsMjUwMzksMTQ3NzYsMjUxMzIsMjUyMzIsMjUzMTcsMjUzNjgsMTQ4NDAsMjIxOTMsMTQ4NTEsMjU1NzAsMjU1OTUsMjU2MDcsMjU2OTAsMTQ5MjMsMjU3OTIsMjM4MjksMjIwNDksNDA4NjMsMTQ5OTksMjU5OTAsMTUwMzcsMjYxMTEsMjYxOTUsMTUwOTAsMjYyNTgsMTUxMzgsMjYzOTAsMTUxNzAsMjY1MzIsMjY2MjQsMTUxOTIsMjY2OTgsMjY3NTYsMTUyMTgsMTUyMTcsMTUyMjcsMjY4ODksMjY5NDcsMjkyNzYsMjY5ODAsMjcwMzksMjcwMTMsMTUyOTIsMjcwOTQsMTUzMjUsMjcyMzcsMjcyNTIsMjcyNDksMjcyNjYsMTUzNDAsMjcyODksMTUzNDYsMjczMDcsMjczMTcsMjczNDgsMjczODIsMjc1MjEsMjc1ODUsMjc2MjYsMjc3NjUsMjc4MTgsMTU1NjMsMjc5MDYsMjc5MTAsMjc5NDIsMjgwMzMsMTU1OTksMjgwNjgsMjgwODEsMjgxODEsMjgxODQsMjgyMDEsMjgyOTQsMTY2MzM2LDI4MzQ3LDI4Mzg2LDI4Mzc4LDQwODMxLDI4MzkyLDI4MzkzLDI4NDUyLDI4NDY4LDE1Njg2LDE0NzI2NSwyODU0NSwyODYwNiwxNTcyMiwxNTczMywyOTExMSwyMzcwNSwxNTc1NCwyODcxNiwxNTc2MSwyODc1MiwyODc1NiwyODc4MywyODc5OSwyODgwOSwxMzE4NzcsMTczNDUsMTM4MDksMTM0ODcyLDE0NzE1OSwyMjQ2MiwxNTk0NDMsMjg5OTAsMTUzNTY4LDEzOTAyLDI3MDQyLDE2Njg4OSwyMzQxMiwzMTMwNSwxNTM4MjUsMTY5MTc3LDMxMzMzLDMxMzU3LDE1NDAyOCwzMTQxOSwzMTQwOCwzMTQyNiwzMTQyNywyOTEzNywxNTY4MTMsMTY4NDIsMzE0NTAsMzE0NTMsMzE0NjYsMTY4NzksMjE2ODIsMTU0NjI1LDMxNDk5LDMxNTczLDMxNTI5LDE1MjMzNCwxNTQ4NzgsMzE2NTAsMzE1OTksMzM2OTIsMTU0NTQ4LDE1ODg0NywzMTY5NiwzMzgyNSwzMTYzNCwzMTY3MiwxNTQ5MTIsMTU3ODksMTU0NzI1LDMzOTM4LDMxNzM4LDMxNzUwLDMxNzk3LDE1NDgxNywzMTgxMiwzMTg3NSwxNDk2MzQsMzE5MTAsMjYyMzcsMTQ4ODU2LDMxOTQ1LDMxOTQzLDMxOTc0LDMxODYwLDMxOTg3LDMxOTg5LDMxOTUwLDMyMzU5LDE3NjkzLDE1OTMwMCwzMjA5MywxNTk0NDYsMjk4MzcsMzIxMzcsMzIxNzEsMjg5ODEsMzIxNzksMzIyMTAsMTQ3NTQzLDE1NTY4OSwzMjIyOCwxNTYzNSwzMjI0NSwxMzcyMDksMzIyMjksMTY0NzE3LDMyMjg1LDE1NTkzNywxNTU5OTQsMzIzNjYsMzI0MDIsMTcxOTUsMzc5OTYsMzIyOTUsMzI1NzYsMzI1NzcsMzI1ODMsMzEwMzAsMTU2MzY4LDM5MzkzLDMyNjYzLDE1NjQ5NywzMjY3NSwxMzY4MDEsMTMxMTc2LDE3NzU2LDE0NTI1NCwxNzY2NywxNjQ2NjYsMzI3NjIsMTU2ODA5LDMyNzczLDMyNzc2LDMyNzk3LDMyODA4LDMyODE1LDE3MjE2NywxNTg5MTUsMzI4MjcsMzI4MjgsMzI4NjUsMTQxMDc2LDE4ODI1LDE1NzIyMiwxNDY5MTUsMTU3NDE2LDI2NDA1LDMyOTM1LDE2NjQ3MiwzMzAzMSwzMzA1MCwyMjcwNCwxNDEwNDYsMjc3NzUsMTU2ODI0LDE1MTQ4MCwyNTgzMSwxMzYzMzAsMzMzMDQsMTM3MzEwLDI3MjE5LDE1MDExNywxNTAxNjUsMTc1MzAsMzMzMjEsMTMzOTAxLDE1ODI5MCwxNDY4MTQsMjA0NzMsMTM2NDQ1LDM0MDE4LDMzNjM0LDE1ODQ3NCwxNDk5MjcsMTQ0Njg4LDEzNzA3NSwxNDY5MzYsMzM0NTAsMjY5MDcsMTk0OTY0LDE2ODU5LDM0MTIzLDMzNDg4LDMzNTYyLDEzNDY3OCwxMzcxNDAsMTQwMTcsMTQzNzQxLDE0NDczMCwzMzQwMywzMzUwNiwzMzU2MCwxNDcwODMsMTU5MTM5LDE1ODQ2OSwxNTg2MTUsMTQ0ODQ2LDE1ODA3LDMzNTY1LDIxOTk2LDMzNjY5LDE3Njc1LDE1OTE0MSwzMzcwOCwzMzcyOSwzMzc0NywxMzQzOCwxNTk0NDQsMjcyMjMsMzQxMzgsMTM0NjIsMTU5Mjk4LDE0MzA4NywzMzg4MCwxNTQ1OTYsMzM5MDUsMTU4MjcsMTc2MzYsMjczMDMsMzM4NjYsMTQ2NjEzLDMxMDY0LDMzOTYwLDE1ODYxNCwxNTkzNTEsMTU5Mjk5LDM0MDE0LDMzODA3LDMzNjgxLDE3NTY4LDMzOTM5LDM0MDIwLDE1NDc2OSwxNjk2MCwxNTQ4MTYsMTc3MzEsMzQxMDAsMjMyODIsMTU5Mzg1LDE3NzAzLDM0MTYzLDE3Njg2LDI2NTU5LDM0MzI2LDE2NTQxMywxNjU0MzUsMzQyNDEsMTU5ODgwLDM0MzA2LDEzNjU3OCwxNTk5NDksMTk0OTk0LDE3NzcwLDM0MzQ0LDEzODk2LDEzNzM3OCwyMTQ5NSwxNjA2NjYsMzQ0MzAsMzQ2NzMsMTcyMjgwLDM0Nzk4LDE0MjM3NSwzNDczNywzNDc3OCwzNDgzMSwyMjExMywzNDQxMiwyNjcxMCwxNzkzNSwzNDg4NSwzNDg4NiwxNjEyNDgsMTQ2ODczLDE2MTI1MiwzNDkxMCwzNDk3MiwxODAxMSwzNDk5NiwzNDk5NywyNTUzNywzNTAxMywzMDU4MywxNjE1NTEsMzUyMDcsMzUyMTAsMzUyMzgsMzUyNDEsMzUyMzksMzUyNjAsMTY2NDM3LDM1MzAzLDE2MjA4NCwxNjI0OTMsMzU0ODQsMzA2MTEsMzczNzQsMzU0NzIsMTYyMzkzLDMxNDY1LDE2MjYxOCwxNDczNDMsMTgxOTUsMTYyNjE2LDI5MDUyLDM1NTk2LDM1NjE1LDE1MjYyNCwxNTI5MzMsMzU2NDcsMzU2NjAsMzU2NjEsMzU0OTcsMTUwMTM4LDM1NzI4LDM1NzM5LDM1NTAzLDEzNjkyNywxNzk0MSwzNDg5NSwzNTk5NSwxNjMxNTYsMTYzMjE1LDE5NTAyOCwxNDExNywxNjMxNTUsMzYwNTQsMTYzMjI0LDE2MzI2MSwzNjExNCwzNjA5OSwxMzc0ODgsMzYwNTksMjg3NjQsMzYxMTMsMTUwNzI5LDE2MDgwLDM2MjE1LDM2MjY1LDE2Mzg0MiwxMzUxODgsMTQ5ODk4LDE1MjI4LDE2NDI4NCwxNjAwMTIsMzE0NjMsMzY1MjUsMzY1MzQsMzY1NDcsMzc1ODgsMzY2MzMsMzY2NTMsMTY0NzA5LDE2NDg4MiwzNjc3MywzNzYzNSwxNzI3MDMsMTMzNzEyLDM2Nzg3LDE4NzMwLDE2NjM2NiwxNjUxODEsMTQ2ODc1LDI0MzEyLDE0Mzk3MCwzNjg1NywxNzIwNTIsMTY1NTY0LDE2NTEyMSwxNDAwNjksMTQ3MjAsMTU5NDQ3LDM2OTE5LDE2NTE4MCwxNjI0OTQsMzY5NjEsMTY1MjI4LDE2NTM4NywzNzAzMiwxNjU2NTEsMzcwNjAsMTY1NjA2LDM3MDM4LDM3MTE3LDM3MjIzLDE1MDg4LDM3Mjg5LDM3MzE2LDMxOTE2LDE2NjE5NSwxMzg4ODksMzczOTAsMjc4MDcsMzc0NDEsMzc0NzQsMTUzMDE3LDM3NTYxLDE2NjU5OCwxNDY1ODcsMTY2NjY4LDE1MzA1MSwxMzQ0NDksMzc2NzYsMzc3MzksMTY2NjI1LDE2Njg5MSwyODgxNSwyMzIzNSwxNjY2MjYsMTY2NjI5LDE4Nzg5LDM3NDQ0LDE2Njg5MiwxNjY5NjksMTY2OTExLDM3NzQ3LDM3OTc5LDM2NTQwLDM4Mjc3LDM4MzEwLDM3OTI2LDM4MzA0LDI4NjYyLDE3MDgxLDE0MDkyMiwxNjU1OTIsMTM1ODA0LDE0Njk5MCwxODkxMSwyNzY3NiwzODUyMywzODU1MCwxNjc0OCwzODU2MywxNTk0NDUsMjUwNTAsMzg1ODIsMzA5NjUsMTY2NjI0LDM4NTg5LDIxNDUyLDE4ODQ5LDE1ODkwNCwxMzE3MDAsMTU2Njg4LDE2ODExMSwxNjgxNjUsMTUwMjI1LDEzNzQ5MywxNDQxMzgsMzg3MDUsMzQzNzAsMzg3MTAsMTg5NTksMTc3MjUsMTc3OTcsMTUwMjQ5LDI4Nzg5LDIzMzYxLDM4NjgzLDM4NzQ4LDE2ODQwNSwzODc0MywyMzM3MCwxNjg0MjcsMzg3NTEsMzc5MjUsMjA2ODgsMTQzNTQzLDE0MzU0OCwzODc5MywzODgxNSwzODgzMywzODg0NiwzODg0OCwzODg2NiwzODg4MCwxNTI2ODQsMzg4OTQsMjk3MjQsMTY5MDExLDM4OTExLDM4OTAxLDE2ODk4OSwxNjIxNzAsMTkxNTMsMzg5NjQsMzg5NjMsMzg5ODcsMzkwMTQsMTUxMTgsMTYwMTE3LDE1Njk3LDEzMjY1NiwxNDc4MDQsMTUzMzUwLDM5MTE0LDM5MDk1LDM5MTEyLDM5MTExLDE5MTk5LDE1OTAxNSwxMzY5MTUsMjE5MzYsMzkxMzcsMzkxNDIsMzkxNDgsMzc3NTIsMzkyMjUsMTUwMDU3LDE5MzE0LDE3MDA3MSwxNzAyNDUsMzk0MTMsMzk0MzYsMzk0ODMsMzk0NDAsMzk1MTIsMTUzMzgxLDE0MDIwLDE2ODExMywxNzA5NjUsMzk2NDgsMzk2NTAsMTcwNzU3LDM5NjY4LDE5NDcwLDM5NzAwLDM5NzI1LDE2NTM3NiwyMDUzMiwzOTczMiwxNTgxMjAsMTQ1MzEsMTQzNDg1LDM5NzYwLDM5NzQ0LDE3MTMyNiwyMzEwOSwxMzczMTUsMzk4MjIsMTQ4MDQzLDM5OTM4LDM5OTM1LDM5OTQ4LDE3MTYyNCw0MDQwNCwxNzE5NTksMTcyNDM0LDE3MjQ1OSwxNzIyNTcsMTcyMzIzLDE3MjUxMSw0MDMxOCw0MDMyMywxNzIzNDAsNDA0NjIsMjY3NjAsNDAzODgsMTM5NjExLDE3MjQzNSwxNzI1NzYsMTM3NTMxLDE3MjU5NSw0MDI0OSwxNzIyMTcsMTcyNzI0LDQwNTkyLDQwNTk3LDQwNjA2LDQwNjEwLDE5NzY0LDQwNjE4LDQwNjIzLDE0ODMyNCw0MDY0MSwxNTIwMCwxNDgyMSwxNTY0NSwyMDI3NCwxNDI3MCwxNjY5NTUsNDA3MDYsNDA3MTIsMTkzNTAsMzc5MjQsMTU5MTM4LDQwNzI3LDQwNzI2LDQwNzYxLDIyMTc1LDIyMTU0LDQwNzczLDM5MzUyLDE2ODA3NSwzODg5OCwzMzkxOSw0MDgwMiw0MDgwOSwzMTQ1Miw0MDg0NiwyOTIwNiwxOTM5MCwxNDk4NzcsMTQ5OTQ3LDI5MDQ3LDE1MDAwOCwxNDgyOTYsMTUwMDk3LDI5NTk4LDE2Njg3NCwxMzc0NjYsMzExMzUsMTY2MjcwLDE2NzQ3OCwzNzczNywzNzg3NSwxNjY0NjgsMzc2MTIsMzc3NjEsMzc4MzUsMTY2MjUyLDE0ODY2NSwyOTIwNywxNjEwNywzMDU3OCwzMTI5OSwyODg4MCwxNDg1OTUsMTQ4NDcyLDI5MDU0LDEzNzE5OSwyODgzNSwxMzc0MDYsMTQ0NzkzLDE2MDcxLDEzNzM0OSwxNTI2MjMsMTM3MjA4LDE0MTE0LDEzNjk1NSwxMzcyNzMsMTQwNDksMTM3MDc2LDEzNzQyNSwxNTU0NjcsMTQxMTUsMTM2ODk2LDIyMzYzLDE1MDA1MywxMzYxOTAsMTM1ODQ4LDEzNjEzNCwxMzYzNzQsMzQwNTEsMTQ1MDYyLDM0MDUxLDMzODc3LDE0OTkwOCwxNjAxMDEsMTQ2OTkzLDE1MjkyNCwxNDcxOTUsMTU5ODI2LDE3NjUyLDE0NTEzNCwxNzAzOTcsMTU5NTI2LDI2NjE3LDE0MTMxLDE1MzgxLDE1ODQ3LDIyNjM2LDEzNzUwNiwyNjY0MCwxNjQ3MSwxNDUyMTUsMTQ3NjgxLDE0NzU5NSwxNDc3MjcsMTU4NzUzLDIxNzA3LDIyMTc0LDE1NzM2MSwyMjE2MiwxMzUxMzUsMTM0MDU2LDEzNDY2OSwzNzgzMCwxNjY2NzUsMzc3ODgsMjAyMTYsMjA3NzksMTQzNjEsMTQ4NTM0LDIwMTU2LDEzMjE5NywxMzE5NjcsMjAyOTksMjAzNjIsMTUzMTY5LDIzMTQ0LDEzMTQ5OSwxMzIwNDMsMTQ3NDUsMTMxODUwLDEzMjExNiwxMzM2NSwyMDI2NSwxMzE3NzYsMTY3NjAzLDEzMTcwMSwzNTU0NiwxMzE1OTYsMjAxMjAsMjA2ODUsMjA3NDksMjAzODYsMjAyMjcsMTUwMDMwLDE0NzA4MiwyMDI5MCwyMDUyNiwyMDU4OCwyMDYwOSwyMDQyOCwyMDQ1MywyMDU2OCwyMDczMiwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyODI3OCwxNDQ3ODksMTQ3MDAxLDE0NzEzNSwyODAxOCwxMzczNDgsMTQ3MDgxLDIwOTA0LDIwOTMxLDEzMjU3NiwxNzYyOSwxMzIyNTksMTMyMjQyLDEzMjI0MSwzNjIxOCwxNjY1NTYsMTMyODc4LDIxMDgxLDIxMTU2LDEzMzIzNSwyMTIxNywzNzc0MiwxODA0MiwyOTA2OCwxNDgzNjQsMTM0MTc2LDE0OTkzMiwxMzUzOTYsMjcwODksMTM0Njg1LDI5ODE3LDE2MDk0LDI5ODQ5LDI5NzE2LDI5NzgyLDI5NTkyLDE5MzQyLDE1MDIwNCwxNDc1OTcsMjE0NTYsMTM3MDAsMjkxOTksMTQ3NjU3LDIxOTQwLDEzMTkwOSwyMTcwOSwxMzQwODYsMjIzMDEsMzc0NjksMzg2NDQsMzc3MzQsMjI0OTMsMjI0MTMsMjIzOTksMTM4ODYsMjI3MzEsMjMxOTMsMTY2NDcwLDEzNjk1NCwxMzcwNzEsMTM2OTc2LDIzMDg0LDIyOTY4LDM3NTE5LDIzMTY2LDIzMjQ3LDIzMDU4LDE1MzkyNiwxMzc3MTUsMTM3MzEzLDE0ODExNywxNDA2OSwyNzkwOSwyOTc2MywyMzA3MywxNTUyNjcsMjMxNjksMTY2ODcxLDEzMjExNSwzNzg1NiwyOTgzNiwxMzU5MzksMjg5MzMsMTg4MDIsMzc4OTYsMTY2Mzk1LDM3ODIxLDE0MjQwLDIzNTgyLDIzNzEwLDI0MTU4LDI0MTM2LDEzNzYyMiwxMzc1OTYsMTQ2MTU4LDI0MjY5LDIzMzc1LDEzNzQ3NSwxMzc0NzYsMTQwODEsMTM3Mzc2LDE0MDQ1LDEzNjk1OCwxNDAzNSwzMzA2NiwxNjY0NzEsMTM4NjgyLDE0NDQ5OCwxNjYzMTIsMjQzMzIsMjQzMzQsMTM3NTExLDEzNzEzMSwyMzE0NywxMzcwMTksMjMzNjQsMzQzMjQsMTYxMjc3LDM0OTEyLDI0NzAyLDE0MTQwOCwxNDA4NDMsMjQ1MzksMTYwNTYsMTQwNzE5LDE0MDczNCwxNjgwNzIsMTU5NjAzLDI1MDI0LDEzMTEzNCwxMzExNDIsMTQwODI3LDI0OTg1LDI0OTg0LDI0NjkzLDE0MjQ5MSwxNDI1OTksMTQ5MjA0LDE2ODI2OSwyNTcxMywxNDkwOTMsMTQyMTg2LDE0ODg5LDE0MjExNCwxNDQ0NjQsMTcwMjE4LDE0Mjk2OCwyNTM5OSwxNzMxNDcsMjU3ODIsMjUzOTMsMjU1NTMsMTQ5OTg3LDE0MjY5NSwyNTI1MiwxNDI0OTcsMjU2NTksMjU5NjMsMjY5OTQsMTUzNDgsMTQzNTAyLDE0NDA0NSwxNDk4OTcsMTQ0MDQzLDIxNzczLDE0NDA5NiwxMzc0MzMsMTY5MDIzLDI2MzE4LDE0NDAwOSwxNDM3OTUsMTUwNzIsMTY3ODQsMTUyOTY0LDE2NjY5MCwxNTI5NzUsMTM2OTU2LDE1MjkyMywxNTI2MTMsMzA5NTgsMTQzNjE5LDEzNzI1OCwxNDM5MjQsMTM0MTIsMTQzODg3LDE0Mzc0NiwxNDgxNjksMjYyNTQsMTU5MDEyLDI2MjE5LDE5MzQ3LDI2MTYwLDE2MTkwNCwxMzg3MzEsMjYyMTEsMTQ0MDgyLDE0NDA5NywyNjE0MiwxNTM3MTQsMTQ1NDUsMTQ1NDY2LDE0NTM0MCwxNTI1NywxNDUzMTQsMTQ0MzgyLDI5OTA0LDE1MjU0LDI2NTExLDE0OTAzNCwyNjgwNiwyNjY1NCwxNTMwMCwyNzMyNiwxNDQzNSwxNDUzNjUsMTQ4NjE1LDI3MTg3LDI3MjE4LDI3MzM3LDI3Mzk3LDEzNzQ5MCwyNTg3MywyNjc3NiwyNzIxMiwxNTMxOSwyNzI1OCwyNzQ3OSwxNDczOTIsMTQ2NTg2LDM3NzkyLDM3NjE4LDE2Njg5MCwxNjY2MDMsMzc1MTMsMTYzODcwLDE2NjM2NCwzNzk5MSwyODA2OSwyODQyNywxNDk5OTYsMjgwMDcsMTQ3MzI3LDE1NzU5LDI4MTY0LDE0NzUxNiwyMzEwMSwyODE3MCwyMjU5OSwyNzk0MCwzMDc4NiwyODk4NywxNDgyNTAsMTQ4MDg2LDI4OTEzLDI5MjY0LDI5MzE5LDI5MzMyLDE0OTM5MSwxNDkyODUsMjA4NTcsMTUwMTgwLDEzMjU4NywyOTgxOCwxNDcxOTIsMTQ0OTkxLDE1MDA5MCwxNDk3ODMsMTU1NjE3LDE2MTM0LDE2MDQ5LDE1MDIzOSwxNjY5NDcsMTQ3MjUzLDI0NzQzLDE2MTE1LDI5OTAwLDI5NzU2LDM3NzY3LDI5NzUxLDE3NTY3LDE1OTIxMCwxNzc0NSwzMDA4MywxNjIyNywxNTA3NDUsMTUwNzkwLDE2MjE2LDMwMDM3LDMwMzIzLDE3MzUxMCwxNTEyOSwyOTgwMCwxNjY2MDQsMTQ5OTMxLDE0OTkwMiwxNTA5OSwxNTgyMSwxNTAwOTQsMTYxMjcsMTQ5OTU3LDE0OTc0NywzNzM3MCwyMjMyMiwzNzY5OCwxNjY2MjcsMTM3MzE2LDIwNzAzLDE1MjA5NywxNTIwMzksMzA1ODQsMTQzOTIyLDMwNDc4LDMwNDc5LDMwNTg3LDE0OTE0MywxNDUyODEsMTQ5NDIsMTQ5NzQ0LDI5NzUyLDI5ODUxLDE2MDYzLDE1MDIwMiwxNTAyMTUsMTY1ODQsMTUwMTY2LDE1NjA3OCwzNzYzOSwxNTI5NjEsMzA3NTAsMzA4NjEsMzA4NTYsMzA5MzAsMjk2NDgsMzEwNjUsMTYxNjAxLDE1MzMxNSwxNjY1NCwzMTEzMSwzMzk0MiwzMTE0MSwyNzE4MSwxNDcxOTQsMzEyOTAsMzEyMjAsMTY3NTAsMTM2OTM0LDE2NjkwLDM3NDI5LDMxMjE3LDEzNDQ3NiwxNDk5MDAsMTMxNzM3LDE0Njg3NCwxMzcwNzAsMTM3MTksMjE4NjcsMTM2ODAsMTM5OTQsMTMxNTQwLDEzNDE1NywzMTQ1OCwyMzEyOSwxNDEwNDUsMTU0Mjg3LDE1NDI2OCwyMzA1MywxMzE2NzUsMzA5NjAsMjMwODIsMTU0NTY2LDMxNDg2LDE2ODg5LDMxODM3LDMxODUzLDE2OTEzLDE1NDU0NywxNTUzMjQsMTU1MzAyLDMxOTQ5LDE1MDAwOSwxMzcxMzYsMzE4ODYsMzE4NjgsMzE5MTgsMjczMTQsMzIyMjAsMzIyNjMsMzIyMTEsMzI1OTAsMTU2MjU3LDE1NTk5NiwxNjI2MzIsMzIxNTEsMTU1MjY2LDE3MDAyLDE1ODU4MSwxMzMzOTgsMjY1ODIsMTMxMTUwLDE0NDg0NywyMjQ2OCwxNTY2OTAsMTU2NjY0LDE0OTg1OCwzMjczMywzMTUyNywxMzMxNjQsMTU0MzQ1LDE1NDk0NywzMTUwMCwxNTUxNTAsMzkzOTgsMzQzNzMsMzk1MjMsMjcxNjQsMTQ0NDQ3LDE0ODE4LDE1MDAwNywxNTcxMDEsMzk0NTUsMTU3MDg4LDMzOTIwLDE2MDAzOSwxNTg5MjksMTc2NDIsMzMwNzksMTc0MTAsMzI5NjYsMzMwMzMsMzMwOTAsMTU3NjIwLDM5MTA3LDE1ODI3NCwzMzM3OCwzMzM4MSwxNTgyODksMzM4NzUsMTU5MTQzLDM0MzIwLDE2MDI4MywyMzE3NCwxNjc2NywxMzcyODAsMjMzMzksMTM3Mzc3LDIzMjY4LDEzNzQzMiwzNDQ2NCwxOTUwMDQsMTQ2ODMxLDM0ODYxLDE2MDgwMiwyMzA0MiwzNDkyNiwyMDI5MywzNDk1MSwzNTAwNywzNTA0NiwzNTE3MywzNTE0OSwxNTMyMTksMzUxNTYsMTYxNjY5LDE2MTY2OCwxNjY5MDEsMTY2ODczLDE2NjgxMiwxNjYzOTMsMTYwNDUsMzM5NTUsMTgxNjUsMTgxMjcsMTQzMjIsMzUzODksMzUzNTYsMTY5MDMyLDI0Mzk3LDM3NDE5LDE0ODEwMCwyNjA2OCwyODk2OSwyODg2OCwxMzcyODUsNDAzMDEsMzU5OTksMzYwNzMsMTYzMjkyLDIyOTM4LDMwNjU5LDIzMDI0LDE3MjYyLDE0MDM2LDM2Mzk0LDM2NTE5LDE1MDUzNywzNjY1NiwzNjY4MiwxNzE0MCwyNzczNiwyODYwMywxNDAwNjUsMTg1ODcsMjg1MzcsMjgyOTksMTM3MTc4LDM5OTEzLDE0MDA1LDE0OTgwNywzNzA1MSwzNzAxNSwyMTg3MywxODY5NCwzNzMwNywzNzg5MiwxNjY0NzUsMTY0ODIsMTY2NjUyLDM3OTI3LDE2Njk0MSwxNjY5NzEsMzQwMjEsMzUzNzEsMzgyOTcsMzgzMTEsMzgyOTUsMzgyOTQsMTY3MjIwLDI5NzY1LDE2MDY2LDE0OTc1OSwxNTAwODIsMTQ4NDU4LDE2MTAzLDE0MzkwOSwzODU0MywxNjc2NTUsMTY3NTI2LDE2NzUyNSwxNjA3NiwxNDk5OTcsMTUwMTM2LDE0NzQzOCwyOTcxNCwyOTgwMywxNjEyNCwzODcyMSwxNjgxMTIsMjY2OTUsMTg5NzMsMTY4MDgzLDE1MzU2NywzODc0OSwzNzczNiwxNjYyODEsMTY2OTUwLDE2NjcwMywxNTY2MDYsMzc1NjIsMjMzMTMsMzU2ODksMTg3NDgsMjk2ODksMTQ3OTk1LDM4ODExLDM4NzY5LDM5MjI0LDEzNDk1MCwyNDAwMSwxNjY4NTMsMTUwMTk0LDM4OTQzLDE2OTE3OCwzNzYyMiwxNjk0MzEsMzczNDksMTc2MDAsMTY2NzM2LDE1MDExOSwxNjY3NTYsMzkxMzIsMTY2NDY5LDE2MTI4LDM3NDE4LDE4NzI1LDMzODEyLDM5MjI3LDM5MjQ1LDE2MjU2NiwxNTg2OSwzOTMyMywxOTMxMSwzOTMzOCwzOTUxNiwxNjY3NTcsMTUzODAwLDI3Mjc5LDM5NDU3LDIzMjk0LDM5NDcxLDE3MDIyNSwxOTM0NCwxNzAzMTIsMzkzNTYsMTkzODksMTkzNTEsMzc3NTcsMjI2NDIsMTM1OTM4LDIyNTYyLDE0OTk0NCwxMzY0MjQsMzA3ODgsMTQxMDg3LDE0Njg3MiwyNjgyMSwxNTc0MSwzNzk3NiwxNDYzMSwyNDkxMiwxNDExODUsMTQxNjc1LDI0ODM5LDQwMDE1LDQwMDE5LDQwMDU5LDM5OTg5LDM5OTUyLDM5ODA3LDM5ODg3LDE3MTU2NSwzOTgzOSwxNzI1MzMsMTcyMjg2LDQwMjI1LDE5NjMwLDE0NzcxNiw0MDQ3MiwxOTYzMiw0MDIwNCwxNzI0NjgsMTcyMjY5LDE3MjI3NSwxNzAyODcsNDAzNTcsMzM5ODEsMTU5MjUwLDE1OTcxMSwxNTg1OTQsMzQzMDAsMTc3MTUsMTU5MTQwLDE1OTM2NCwxNTkyMTYsMzM4MjQsMzQyODYsMTU5MjMyLDE0NTM2NywxNTU3NDgsMzEyMDIsMTQ0Nzk2LDE0NDk2MCwxODczMywxNDk5ODIsMTU3MTQsMzc4NTEsMzc1NjYsMzc3MDQsMTMxNzc1LDMwOTA1LDM3NDk1LDM3OTY1LDIwNDUyLDEzMzc2LDM2OTY0LDE1MjkyNSwzMDc4MSwzMDgwNCwzMDkwMiwzMDc5NSwxMzcwNDcsMTQzODE3LDE0OTgyNSwxMzk3OCwyMDMzOCwyODYzNCwyODYzMywyODcwMiwyODcwMiwyMTUyNCwxNDc4OTMsMjI0NTksMjI3NzEsMjI0MTAsNDAyMTQsMjI0ODcsMjg5ODAsMTM0ODcsMTQ3ODg0LDI5MTYzLDE1ODc4NCwxNTE0NDcsMjMzMzYsMTM3MTQxLDE2NjQ3MywyNDg0NCwyMzI0NiwyMzA1MSwxNzA4NCwxNDg2MTYsMTQxMjQsMTkzMjMsMTY2Mzk2LDM3ODE5LDM3ODE2LDEzNzQzMCwxMzQ5NDEsMzM5MDYsMTU4OTEyLDEzNjIxMSwxNDgyMTgsMTQyMzc0LDE0ODQxNywyMjkzMiwxNDY4NzEsMTU3NTA1LDMyMTY4LDE1NTk5NSwxNTU4MTIsMTQ5OTQ1LDE0OTg5OSwxNjYzOTQsMzc2MDUsMjk2NjYsMTYxMDUsMjk4NzYsMTY2NzU1LDEzNzM3NSwxNjA5NywxNTAxOTUsMjczNTIsMjk2ODMsMjk2OTEsMTYwODYsMTUwMDc4LDE1MDE2NCwxMzcxNzcsMTUwMTE4LDEzMjAwNywxMzYyMjgsMTQ5OTg5LDI5NzY4LDE0OTc4MiwyODgzNywxNDk4NzgsMzc1MDgsMjk2NzAsMzc3MjcsMTMyMzUwLDM3NjgxLDE2NjYwNiwxNjY0MjIsMzc3NjYsMTY2ODg3LDE1MzA0NSwxODc0MSwxNjY1MzAsMjkwMzUsMTQ5ODI3LDEzNDM5OSwyMjE4MCwxMzI2MzQsMTM0MTIzLDEzNDMyOCwyMTc2MiwzMTE3MiwxMzcyMTAsMzIyNTQsMTM2ODk4LDE1MDA5NiwxMzcyOTgsMTc3MTAsMzc4ODksMTQwOTAsMTY2NTkyLDE0OTkzMywyMjk2MCwxMzc0MDcsMTM3MzQ3LDE2MDkwMCwyMzIwMSwxNDA1MCwxNDY3NzksMTQwMDAsMzc0NzEsMjMxNjEsMTY2NTI5LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkwOTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3MjcsMTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2NjczLDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwxNDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywyMzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAyMCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcsMTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQwLDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQsMjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcyNzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQsMjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcyLDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2NiwzMDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwzMDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgsMjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMxMDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywzMjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywzMjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwxNzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIxNywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwzNDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwzNDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0MywzODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYwODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIwMDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUsMTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMsMzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAsMzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgzMDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIxMDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUsMTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUsMzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5NjgsMTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQwNjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMxNDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyMDAwLDI2OTA2LDM4MDgzLDIyOTU2LDEzMjMxMSwyMjU5MiwzODA4MSwxNDI2NSwxMzI1NjUsMTMyNjI5LDEzMjcyNiwxMzY4OTAsMjIzNTksMjkwNDMsMTMzODI2LDEzMzgzNywxMzQwNzksMjE2MTAsMTk0NjE5LDEzNDA5MSwyMTY2MiwxMzQxMzksMTM0MjAzLDEzNDIyNywxMzQyNDUsMTM0MjY4LDI0ODA3LDEzNDI4NSwyMjEzOCwxMzQzMjUsMTM0MzY1LDEzNDM4MSwxMzQ1MTEsMTM0NTc4LDEzNDYwMCwyNjk2NSwzOTk4MywzNDcyNSwxMzQ2NjAsMTM0NjcwLDEzNDg3MSwxMzUwNTYsMTM0OTU3LDEzNDc3MSwyMzU4NCwxMzUxMDAsMjQwNzUsMTM1MjYwLDEzNTI0NywxMzUyODYsMjYzOTgsMTM1MjkxLDEzNTMwNCwxMzUzMTgsMTM4OTUsMTM1MzU5LDEzNTM3OSwxMzU0NzEsMTM1NDgzLDIxMzQ4LDMzOTY1LDEzNTkwNywxMzYwNTMsMTM1OTkwLDM1NzEzLDEzNjU2NywxMzY3MjksMTM3MTU1LDEzNzE1OSwyMDA4OCwyODg1OSwxMzcyNjEsMTM3NTc4LDEzNzc3MywxMzc3OTcsMTM4MjgyLDEzODM1MiwxMzg0MTIsMTM4OTUyLDI1MjgzLDEzODk2NSwxMzkwMjksMjkwODAsMjY3MDksMTM5MzMzLDI3MTEzLDE0MDI0LDEzOTkwMCwxNDAyNDcsMTQwMjgyLDE0MTA5OCwxNDE0MjUsMTQxNjQ3LDMzNTMzLDE0MTY3MSwxNDE3MTUsMTQyMDM3LDM1MjM3LDE0MjA1NiwzNjc2OCwxNDIwOTQsMzg4NDAsMTQyMTQzLDM4OTgzLDM5NjEzLDE0MjQxMixudWxsLDE0MjQ3MiwxNDI1MTksMTU0NjAwLDE0MjYwMCwxNDI2MTAsMTQyNzc1LDE0Mjc0MSwxNDI5MTQsMTQzMjIwLDE0MzMwOCwxNDM0MTEsMTQzNDYyLDE0NDE1OSwxNDQzNTAsMjQ0OTcsMjYxODQsMjYzMDMsMTYyNDI1LDE0NDc0MywxNDQ4ODMsMjkxODUsMTQ5OTQ2LDMwNjc5LDE0NDkyMiwxNDUxNzQsMzIzOTEsMTMxOTEwLDIyNzA5LDI2MzgyLDI2OTA0LDE0NjA4NywxNjEzNjcsMTU1NjE4LDE0Njk2MSwxNDcxMjksMTYxMjc4LDEzOTQxOCwxODY0MCwxOTEyOCwxNDc3MzcsMTY2NTU0LDE0ODIwNiwxNDgyMzcsMTQ3NTE1LDE0ODI3NiwxNDgzNzQsMTUwMDg1LDEzMjU1NCwyMDk0NiwxMzI2MjUsMjI5NDMsMTM4OTIwLDE1Mjk0LDE0NjY4NywxNDg0ODQsMTQ4Njk0LDIyNDA4LDE0OTEwOCwxNDc0NywxNDkyOTUsMTY1MzUyLDE3MDQ0MSwxNDE3OCwxMzk3MTUsMzU2NzgsMTY2NzM0LDM5MzgyLDE0OTUyMiwxNDk3NTUsMTUwMDM3LDI5MTkzLDE1MDIwOCwxMzQyNjQsMjI4ODUsMTUxMjA1LDE1MTQzMCwxMzI5ODUsMzY1NzAsMTUxNTk2LDIxMTM1LDIyMzM1LDI5MDQxLDE1MjIxNywxNTI2MDEsMTQ3Mjc0LDE1MDE4MywyMTk0OCwxNTI2NDYsMTUyNjg2LDE1ODU0NiwzNzMzMiwxMzQyNywxNTI4OTUsMTYxMzMwLDE1MjkyNiwxODIwMCwxNTI5MzAsMTUyOTM0LDE1MzU0MywxNDk4MjMsMTUzNjkzLDIwNTgyLDEzNTYzLDE0NDMzMiwyNDc5OCwxNTM4NTksMTgzMDAsMTY2MjE2LDE1NDI4NiwxNTQ1MDUsMTU0NjMwLDEzODY0MCwyMjQzMywyOTAwOSwyODU5OCwxNTU5MDYsMTYyODM0LDM2OTUwLDE1NjA4MiwxNTE0NTAsMzU2ODIsMTU2Njc0LDE1Njc0NiwyMzg5OSwxNTg3MTEsMzY2NjIsMTU2ODA0LDEzNzUwMCwzNTU2MiwxNTAwMDYsMTU2ODA4LDE0NzQzOSwxNTY5NDYsMTkzOTIsMTU3MTE5LDE1NzM2NSwxNDEwODMsMzc5ODksMTUzNTY5LDI0OTgxLDIzMDc5LDE5NDc2NSwyMDQxMSwyMjIwMSwxNDg3NjksMTU3NDM2LDIwMDc0LDE0OTgxMiwzODQ4NiwyODA0NywxNTg5MDksMTM4NDgsMzUxOTEsMTU3NTkzLDE1NzgwNiwxNTY2ODksMTU3NzkwLDI5MTUxLDE1Nzg5NSwzMTU1NCwxNjgxMjgsMTMzNjQ5LDE1Nzk5MCwzNzEyNCwxNTgwMDksMzEzMDEsNDA0MzIsMTU4MjAyLDM5NDYyLDE1ODI1MywxMzkxOSwxNTY3NzcsMTMxMTA1LDMxMTA3LDE1ODI2MCwxNTg1NTUsMjM4NTIsMTQ0NjY1LDMzNzQzLDE1ODYyMSwxODEyOCwxNTg4ODQsMzAwMTEsMzQ5MTcsMTU5MTUwLDIyNzEwLDE0MTA4LDE0MDY4NSwxNTk4MTksMTYwMjA1LDE1NDQ0LDE2MDM4NCwxNjAzODksMzc1MDUsMTM5NjQyLDE2MDM5NSwzNzY4MCwxNjA0ODYsMTQ5OTY4LDI3NzA1LDM4MDQ3LDE2MDg0OCwxMzQ5MDQsMzQ4NTUsMzUwNjEsMTQxNjA2LDE2NDk3OSwxMzcxMzcsMjgzNDQsMTUwMDU4LDEzNzI0OCwxNDc1NiwxNDAwOSwyMzU2OCwzMTIwMywxNzcyNywyNjI5NCwxNzExODEsMTcwMTQ4LDM1MTM5LDE2MTc0MCwxNjE4ODAsMjIyMzAsMTY2MDcsMTM2NzE0LDE0NzUzLDE0NTE5OSwxNjQwNzIsMTM2MTMzLDI5MTAxLDMzNjM4LDE2MjI2OSwxNjgzNjAsMjMxNDMsMTk2MzksMTU5OTE5LDE2NjMxNSwxNjIzMDEsMTYyMzE0LDE2MjU3MSwxNjMxNzQsMTQ3ODM0LDMxNTU1LDMxMTAyLDE2Mzg0OSwyODU5NywxNzI3NjcsMjcxMzksMTY0NjMyLDIxNDEwLDE1OTIzOSwzNzgyMywyNjY3OCwzODc0OSwxNjQyMDcsMTYzODc1LDE1ODEzMywxMzYxNzMsMTQzOTE5LDE2MzkxMiwyMzk0MSwxNjY5NjAsMTYzOTcxLDIyMjkzLDM4OTQ3LDE2NjIxNywyMzk3OSwxNDk4OTYsMjYwNDYsMjcwOTMsMjE0NTgsMTUwMTgxLDE0NzMyOSwxNTM3NywyNjQyMiwxNjM5ODQsMTY0MDg0LDE2NDE0MiwxMzkxNjksMTY0MTc1LDE2NDIzMywxNjQyNzEsMTY0Mzc4LDE2NDYxNCwxNjQ2NTUsMTY0NzQ2LDEzNzcwLDE2NDk2OCwxNjU1NDYsMTg2ODIsMjU1NzQsMTY2MjMwLDMwNzI4LDM3NDYxLDE2NjMyOCwxNzM5NCwxNjYzNzUsMTczNzUsMTY2Mzc2LDE2NjcyNiwxNjY4NjgsMjMwMzIsMTY2OTIxLDM2NjE5LDE2Nzg3NywxNjgxNzIsMzE1NjksMTY4MjA4LDE2ODI1MiwxNTg2MywxNjgyODYsMTUwMjE4LDM2ODE2LDI5MzI3LDIyMTU1LDE2OTE5MSwxNjk0NDksMTY5MzkyLDE2OTQwMCwxNjk3NzgsMTcwMTkzLDE3MDMxMywxNzAzNDYsMTcwNDM1LDE3MDUzNiwxNzA3NjYsMTcxMzU0LDE3MTQxOSwzMjQxNSwxNzE3NjgsMTcxODExLDE5NjIwLDM4MjE1LDE3MjY5MSwyOTA5MCwxNzI3OTksMTk4NTcsMzY4ODIsMTczNTE1LDE5ODY4LDEzNDMwMCwzNjc5OCwyMTk1MywzNjc5NCwxNDA0NjQsMzY3OTMsMTUwMTYzLDE3NjczLDMyMzgzLDI4NTAyLDI3MzEzLDIwMjAyLDEzNTQwLDE2NjcwMCwxNjE5NDksMTQxMzgsMzY0ODAsMTM3MjA1LDE2Mzg3NiwxNjY3NjQsMTY2ODA5LDE2MjM2NiwxNTczNTksMTU4NTEsMTYxMzY1LDE0NjYxNSwxNTMxNDEsMTUzOTQyLDIwMTIyLDE1NTI2NSwxNTYyNDgsMjIyMDcsMTM0NzY1LDM2MzY2LDIzNDA1LDE0NzA4MCwxNTA2ODYsMjU1NjYsMjUyOTYsMTM3MjA2LDEzNzMzOSwyNTkwNCwyMjA2MSwxNTQ2OTgsMjE1MzAsMTUyMzM3LDE1ODE0LDE3MTQxNiwxOTU4MSwyMjA1MCwyMjA0NiwzMjU4NSwxNTUzNTIsMjI5MDEsMTQ2NzUyLDM0NjcyLDE5OTk2LDEzNTE0NiwxMzQ0NzMsMTQ1MDgyLDMzMDQ3LDQwMjg2LDM2MTIwLDMwMjY3LDQwMDA1LDMwMjg2LDMwNjQ5LDM3NzAxLDIxNTU0LDMzMDk2LDMzNTI3LDIyMDUzLDMzMDc0LDMzODE2LDMyOTU3LDIxOTk0LDMxMDc0LDIyMDgzLDIxNTI2LDEzNDgxMywxMzc3NCwyMjAyMSwyMjAwMSwyNjM1MywxNjQ1NzgsMTM4NjksMzAwMDQsMjIwMDAsMjE5NDYsMjE2NTUsMjE4NzQsMTM0MjA5LDEzNDI5NCwyNDI3MiwxNTE4ODAsMTM0Nzc0LDE0MjQzNCwxMzQ4MTgsNDA2MTksMzIwOTAsMjE5ODIsMTM1Mjg1LDI1MjQ1LDM4NzY1LDIxNjUyLDM2MDQ1LDI5MTc0LDM3MjM4LDI1NTk2LDI1NTI5LDI1NTk4LDIxODY1LDE0MjE0Nyw0MDA1MCwxNDMwMjcsMjA4OTAsMTM1MzUsMTM0NTY3LDIwOTAzLDIxNTgxLDIxNzkwLDIxNzc5LDMwMzEwLDM2Mzk3LDE1NzgzNCwzMDEyOSwzMjk1MCwzNDgyMCwzNDY5NCwzNTAxNSwzMzIwNiwzMzgyMCwxMzUzNjEsMTc2NDQsMjk0NDQsMTQ5MjU0LDIzNDQwLDMzNTQ3LDE1Nzg0MywyMjEzOSwxNDEwNDQsMTYzMTE5LDE0Nzg3NSwxNjMxODcsMTU5NDQwLDE2MDQzOCwzNzIzMiwxMzU2NDEsMzczODQsMTQ2Njg0LDE3MzczNywxMzQ4MjgsMTM0OTA1LDI5Mjg2LDEzODQwMiwxODI1NCwxNTE0OTAsMTYzODMzLDEzNTE0NywxNjYzNCw0MDAyOSwyNTg4NywxNDI3NTIsMTg2NzUsMTQ5NDcyLDE3MTM4OCwxMzUxNDgsMTM0NjY2LDI0Njc0LDE2MTE4NywxMzUxNDksbnVsbCwxNTU3MjAsMTM1NTU5LDI5MDkxLDMyMzk4LDQwMjcyLDE5OTk0LDE5OTcyLDEzNjg3LDIzMzA5LDI3ODI2LDIxMzUxLDEzOTk2LDE0ODEyLDIxMzczLDEzOTg5LDE0OTAxNiwyMjY4MiwxNTAzODIsMzMzMjUsMjE1NzksMjI0NDIsMTU0MjYxLDEzMzQ5NyxudWxsLDE0OTMwLDE0MDM4OSwyOTU1NiwxNzE2OTIsMTk3MjEsMzk5MTcsMTQ2Njg2LDE3MTgyNCwxOTU0NywxNTE0NjUsMTY5Mzc0LDE3MTk5OCwzMzg4NCwxNDY4NzAsMTYwNDM0LDE1NzYxOSwxNDUxODQsMjUzOTAsMzIwMzcsMTQ3MTkxLDE0Njk4OCwxNDg5MCwzNjg3MiwyMTE5NiwxNTk4OCwxMzk0NiwxNzg5NywxMzIyMzgsMzAyNzIsMjMyODAsMTM0ODM4LDMwODQyLDE2MzYzMCwyMjY5NSwxNjU3NSwyMjE0MCwzOTgxOSwyMzkyNCwzMDI5MiwxNzMxMDgsNDA1ODEsMTk2ODEsMzAyMDEsMTQzMzEsMjQ4NTcsMTQzNTc4LDE0ODQ2NixudWxsLDIyMTA5LDEzNTg0OSwyMjQzOSwxNDk4NTksMTcxNTI2LDIxMDQ0LDE1OTkxOCwxMzc0MSwyNzcyMiw0MDMxNiwzMTgzMCwzOTczNywyMjQ5NCwxMzcwNjgsMjM2MzUsMjU4MTEsMTY5MTY4LDE1NjQ2OSwxNjAxMDAsMzQ0NzcsMTM0NDQwLDE1OTAxMCwxNTAyNDIsMTM0NTEzLG51bGwsMjA5OTAsMTM5MDIzLDIzOTUwLDM4NjU5LDEzODcwNSw0MDU3NywzNjk0MCwzMTUxOSwzOTY4MiwyMzc2MSwzMTY1MSwyNTE5MiwyNTM5NywzOTY3OSwzMTY5NSwzOTcyMiwzMTg3MCwzOTcyNiwzMTgxMCwzMTg3OCwzOTk1NywzMTc0MCwzOTY4OSw0MDcyNywzOTk2MywxNDk4MjIsNDA3OTQsMjE4NzUsMjM0OTEsMjA0NzcsNDA2MDAsMjA0NjYsMjEwODgsMTU4NzgsMjEyMDEsMjIzNzUsMjA1NjYsMjI5NjcsMjQwODIsMzg4NTYsNDAzNjMsMzY3MDAsMjE2MDksMzg4MzYsMzkyMzIsMzg4NDIsMjEyOTIsMjQ4ODAsMjY5MjQsMjE0NjYsMzk5NDYsNDAxOTQsMTk1MTUsMzg0NjUsMjcwMDgsMjA2NDYsMzAwMjIsMTM3MDY5LDM5Mzg2LDIxMTA3LG51bGwsMzcyMDksMzg1MjksMzcyMTIsbnVsbCwzNzIwMSwxNjc1NzUsMjU0NzEsMTU5MDExLDI3MzM4LDIyMDMzLDM3MjYyLDMwMDc0LDI1MjIxLDEzMjA5MiwyOTUxOSwzMTg1NiwxNTQ2NTcsMTQ2Njg1LG51bGwsMTQ5Nzg1LDMwNDIyLDM5ODM3LDIwMDEwLDEzNDM1NiwzMzcyNiwzNDg4MixudWxsLDIzNjI2LDI3MDcyLDIwNzE3LDIyMzk0LDIxMDIzLDI0MDUzLDIwMTc0LDI3Njk3LDEzMTU3MCwyMDI4MSwyMTY2MCwyMTcyMiwyMTE0NiwzNjIyNiwxMzgyMiwyNDMzMiwxMzgxMSxudWxsLDI3NDc0LDM3MjQ0LDQwODY5LDM5ODMxLDM4OTU4LDM5MDkyLDM5NjEwLDQwNjE2LDQwNTgwLDI5MDUwLDMxNTA4LG51bGwsMjc2NDIsMzQ4NDAsMzI2MzIsbnVsbCwyMjA0OCwxNzM2NDIsMzY0NzEsNDA3ODcsbnVsbCwzNjMwOCwzNjQzMSw0MDQ3NiwzNjM1MywyNTIxOCwxNjQ3MzMsMzYzOTIsMzY0NjksMzE0NDMsMTUwMTM1LDMxMjk0LDMwOTM2LDI3ODgyLDM1NDMxLDMwMjE1LDE2NjQ5MCw0MDc0MiwyNzg1NCwzNDc3NCwzMDE0NywxNzI3MjIsMzA4MDMsMTk0NjI0LDM2MTA4LDI5NDEwLDI5NTUzLDM1NjI5LDI5NDQyLDI5OTM3LDM2MDc1LDE1MDIwMywzNDM1MSwyNDUwNiwzNDk3NiwxNzU5MSxudWxsLDEzNzI3NSwxNTkyMzcsbnVsbCwzNTQ1NCwxNDA1NzEsbnVsbCwyNDgyOSwzMDMxMSwzOTYzOSw0MDI2MCwzNzc0MiwzOTgyMywzNDgwNSxudWxsLDM0ODMxLDM2MDg3LDI5NDg0LDM4Njg5LDM5ODU2LDEzNzgyLDI5MzYyLDE5NDYzLDMxODI1LDM5MjQyLDE1NTk5MywyNDkyMSwxOTQ2MCw0MDU5OCwyNDk1NyxudWxsLDIyMzY3LDI0OTQzLDI1MjU0LDI1MTQ1LDI1Mjk0LDE0OTQwLDI1MDU4LDIxNDE4LDE0NDM3MywyNTQ0NCwyNjYyNiwxMzc3OCwyMzg5NSwxNjY4NTAsMzY4MjYsMTY3NDgxLG51bGwsMjA2OTcsMTM4NTY2LDMwOTgyLDIxMjk4LDM4NDU2LDEzNDk3MSwxNjQ4NSxudWxsLDMwNzE4LG51bGwsMzE5MzgsMTU1NDE4LDMxOTYyLDMxMjc3LDMyODcwLDMyODY3LDMyMDc3LDI5OTU3LDI5OTM4LDM1MjIwLDMzMzA2LDI2MzgwLDMyODY2LDE2MDkwMiwzMjg1OSwyOTkzNiwzMzAyNywzMDUwMCwzNTIwOSwxNTc2NDQsMzAwMzUsMTU5NDQxLDM0NzI5LDM0NzY2LDMzMjI0LDM0NzAwLDM1NDAxLDM2MDEzLDM1NjUxLDMwNTA3LDI5OTQ0LDM0MDEwLDEzODc3LDI3MDU4LDM2MjYyLG51bGwsMzUyNDEsMjk4MDAsMjgwODksMzQ3NTMsMTQ3NDczLDI5OTI3LDE1ODM1LDI5MDQ2LDI0NzQwLDI0OTg4LDE1NTY5LDI5MDI2LDI0Njk1LG51bGwsMzI2MjUsMTY2NzAxLDI5MjY0LDI0ODA5LDE5MzI2LDIxMDI0LDE1Mzg0LDE0NjYzMSwxNTUzNTEsMTYxMzY2LDE1Mjg4MSwxMzc1NDAsMTM1OTM0LDE3MDI0MywxNTkxOTYsMTU5OTE3LDIzNzQ1LDE1NjA3NywxNjY0MTUsMTQ1MDE1LDEzMTMxMCwxNTc3NjYsMTUxMzEwLDE3NzYyLDIzMzI3LDE1NjQ5Miw0MDc4NCw0MDYxNCwxNTYyNjcsMTIyODgsNjUyOTIsMTIyODksMTIyOTAsNjUyOTQsODIzMSw2NTMwNyw2NTMwNiw2NTMxMSw2NTI4MSw2NTA3Miw4MjMwLDgyMjksNjUxMDQsNjUxMDUsNjUxMDYsMTgzLDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MzcyLDgyMTEsNjUwNzMsODIxMiw2NTA3NSw5NTg4LDY1MDc2LDY1MTAzLDY1Mjg4LDY1Mjg5LDY1MDc3LDY1MDc4LDY1MzcxLDY1MzczLDY1MDc5LDY1MDgwLDEyMzA4LDEyMzA5LDY1MDgxLDY1MDgyLDEyMzA0LDEyMzA1LDY1MDgzLDY1MDg0LDEyMjk4LDEyMjk5LDY1MDg1LDY1MDg2LDEyMjk2LDEyMjk3LDY1MDg3LDY1MDg4LDEyMzAwLDEyMzAxLDY1MDg5LDY1MDkwLDEyMzAyLDEyMzAzLDY1MDkxLDY1MDkyLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMTcsMTIzMTgsODI0NSw4MjQyLDY1MjgzLDY1Mjg2LDY1MjkwLDgyNTEsMTY3LDEyMjkxLDk2NzUsOTY3OSw5NjUxLDk2NTAsOTY3OCw5NzM0LDk3MzMsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjYxLDk2NjAsMTI5NjMsODQ1MywxNzUsNjU1MDcsNjUzNDMsNzE3LDY1MDk3LDY1MDk4LDY1MTAxLDY1MTAyLDY1MDk5LDY1MTAwLDY1MTE5LDY1MTIwLDY1MTIxLDY1MjkxLDY1MjkzLDIxNSwyNDcsMTc3LDg3MzAsNjUzMDgsNjUzMTAsNjUzMDksODgwNiw4ODA3LDg4MDAsODczNCw4Nzg2LDg4MDEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUzNzQsODc0NSw4NzQ2LDg4NjksODczNiw4NzM1LDg4OTUsMTMyNjYsMTMyNjUsODc0Nyw4NzUwLDg3NTcsODc1Niw5NzkyLDk3OTQsODg1Myw4ODU3LDg1OTMsODU5NSw4NTkyLDg1OTQsODU5OCw4NTk5LDg2MDEsODYwMCw4NzQxLDg3MzksNjUyOTUsNjUzNDAsODcyNSw2NTEyOCw2NTI4NCw2NTUwOSwxMjMwNiw2NTUwNCw2NTUwNSw2NTI4NSw2NTMxMiw4NDUxLDg0NTcsNjUxMjksNjUxMzAsNjUxMzEsMTMyNjksMTMyMTIsMTMyMTMsMTMyMTQsMTMyNjIsMTMyMTcsMTMxOTgsMTMxOTksMTMyNTIsMTc2LDIwODI1LDIwODI3LDIwODMwLDIwODI5LDIwODMzLDIwODM1LDIxOTkxLDI5OTI5LDMxOTUwLDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjE1LDk2MTQsOTYxMyw5NjEyLDk2MTEsOTYxMCw5NjA5LDk1MzIsOTUyNCw5NTE2LDk1MDgsOTUwMCw5NjIwLDk0NzIsOTQ3NCw5NjIxLDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTU4MSw5NTgyLDk1ODQsOTU4Myw5NTUyLDk1NjYsOTU3OCw5NTY5LDk2OTgsOTY5OSw5NzAxLDk3MDAsOTU4NSw5NTg2LDk1ODcsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MywxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwyMTMxMywyMTMxNiwyMTMxNyw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw3MjksNzEzLDcxNCw3MTEsNzE1LDkyMTYsOTIxNyw5MjE4LDkyMTksOTIyMCw5MjIxLDkyMjIsOTIyMyw5MjI0LDkyMjUsOTIyNiw5MjI3LDkyMjgsOTIyOSw5MjMwLDkyMzEsOTIzMiw5MjMzLDkyMzQsOTIzNSw5MjM2LDkyMzcsOTIzOCw5MjM5LDkyNDAsOTI0MSw5MjQyLDkyNDMsOTI0NCw5MjQ1LDkyNDYsOTI0Nyw5MjQ5LDgzNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTY4LDIwMDU3LDE5OTY5LDE5OTcxLDIwMDM1LDIwMDYxLDIwMTAyLDIwMTA4LDIwMTU0LDIwNzk5LDIwODM3LDIwODQzLDIwOTYwLDIwOTkyLDIwOTkzLDIxMTQ3LDIxMjY5LDIxMzEzLDIxMzQwLDIxNDQ4LDE5OTc3LDE5OTc5LDE5OTc2LDE5OTc4LDIwMDExLDIwMDI0LDIwOTYxLDIwMDM3LDIwMDQwLDIwMDYzLDIwMDYyLDIwMTEwLDIwMTI5LDIwODAwLDIwOTk1LDIxMjQyLDIxMzE1LDIxNDQ5LDIxNDc1LDIyMzAzLDIyNzYzLDIyODA1LDIyODIzLDIyODk5LDIzMzc2LDIzMzc3LDIzMzc5LDIzNTQ0LDIzNTY3LDIzNTg2LDIzNjA4LDIzNjY1LDI0MDI5LDI0MDM3LDI0MDQ5LDI0MDUwLDI0MDUxLDI0MDYyLDI0MTc4LDI0MzE4LDI0MzMxLDI0MzM5LDI1MTY1LDE5OTg1LDE5OTg0LDE5OTgxLDIwMDEzLDIwMDE2LDIwMDI1LDIwMDQzLDIzNjA5LDIwMTA0LDIwMTEzLDIwMTE3LDIwMTE0LDIwMTE2LDIwMTMwLDIwMTYxLDIwMTYwLDIwMTYzLDIwMTY2LDIwMTY3LDIwMTczLDIwMTcwLDIwMTcxLDIwMTY0LDIwODAzLDIwODAxLDIwODM5LDIwODQ1LDIwODQ2LDIwODQ0LDIwODg3LDIwOTgyLDIwOTk4LDIwOTk5LDIxMDAwLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIxNDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIyODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIzNjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkwLDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAwLDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIwMDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIwMTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIwMTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkxLDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIyMjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIyOTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkxLDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEyLDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDMwMDAwLDMwMDAxLDMwMDAyLDMwMDAzLDMwMDkxLDMwMzMzLDMwMzgyLDMwMzk5LDMwNDQ2LDMwNjgzLDMwNjkwLDMwNzA3LDMxMDM0LDMxMTY2LDMxMzQ4LDMxNDM1LDE5OTk4LDE5OTk5LDIwMDUwLDIwMDUxLDIwMDczLDIwMTIxLDIwMTMyLDIwMTM0LDIwMTMzLDIwMjIzLDIwMjMzLDIwMjQ5LDIwMjM0LDIwMjQ1LDIwMjM3LDIwMjQwLDIwMjQxLDIwMjM5LDIwMjEwLDIwMjE0LDIwMjE5LDIwMjA4LDIwMjExLDIwMjIxLDIwMjI1LDIwMjM1LDIwODA5LDIwODA3LDIwODA2LDIwODA4LDIwODQwLDIwODQ5LDIwODc3LDIwOTEyLDIxMDE1LDIxMDA5LDIxMDEwLDIxMDA2LDIxMDE0LDIxMTU1LDIxMjU2LDIxMjgxLDIxMjgwLDIxMzYwLDIxMzYxLDIxNTEzLDIxNTE5LDIxNTE2LDIxNTE0LDIxNTIwLDIxNTA1LDIxNTE1LDIxNTA4LDIxNTIxLDIxNTE3LDIxNTEyLDIxNTA3LDIxNTE4LDIxNTEwLDIxNTIyLDIyMjQwLDIyMjM4LDIyMjM3LDIyMzIzLDIyMzIwLDIyMzEyLDIyMzE3LDIyMzE2LDIyMzE5LDIyMzEzLDIyODA5LDIyODEwLDIyODM5LDIyODQwLDIyOTE2LDIyOTA0LDIyOTE1LDIyOTA5LDIyOTA1LDIyOTE0LDIyOTEzLDIzMzgzLDIzMzg0LDIzNDMxLDIzNDMyLDIzNDI5LDIzNDMzLDIzNTQ2LDIzNTc0LDIzNjczLDI0MDMwLDI0MDcwLDI0MTgyLDI0MTgwLDI0MzM1LDI0MzQ3LDI0NTM3LDI0NTM0LDI1MTAyLDI1MTAwLDI1MTAxLDI1MTA0LDI1MTg3LDI1MTc5LDI1MTc2LDI1OTEwLDI2MDg5LDI2MDg4LDI2MDkyLDI2MDkzLDI2MzU0LDI2MzU1LDI2Mzc3LDI2NDI5LDI2NDIwLDI2NDE3LDI2NDIxLDI3NDI1LDI3NDkyLDI3NTE1LDI3NjcwLDI3NzQxLDI3NzM1LDI3NzM3LDI3NzQzLDI3NzQ0LDI3NzI4LDI3NzMzLDI3NzQ1LDI3NzM5LDI3NzI1LDI3NzI2LDI4Nzg0LDI5Mjc5LDI5Mjc3LDMwMzM0LDMxNDgxLDMxODU5LDMxOTkyLDMyNTY2LDMyNjUwLDMyNzAxLDMyNzY5LDMyNzcxLDMyNzgwLDMyNzg2LDMyODE5LDMyODk1LDMyOTA1LDMyOTA3LDMyOTA4LDMzMjUxLDMzMjU4LDMzMjY3LDMzMjc2LDMzMjkyLDMzMzA3LDMzMzExLDMzMzkwLDMzMzk0LDMzNDA2LDM0NDExLDM0ODgwLDM0ODkyLDM0OTE1LDM1MTk5LDM4NDMzLDIwMDE4LDIwMTM2LDIwMzAxLDIwMzAzLDIwMjk1LDIwMzExLDIwMzE4LDIwMjc2LDIwMzE1LDIwMzA5LDIwMjcyLDIwMzA0LDIwMzA1LDIwMjg1LDIwMjgyLDIwMjgwLDIwMjkxLDIwMzA4LDIwMjg0LDIwMjk0LDIwMzIzLDIwMzE2LDIwMzIwLDIwMjcxLDIwMzAyLDIwMjc4LDIwMzEzLDIwMzE3LDIwMjk2LDIwMzE0LDIwODEyLDIwODExLDIwODEzLDIwODUzLDIwOTE4LDIwOTE5LDIxMDI5LDIxMDI4LDIxMDMzLDIxMDM0LDIxMDMyLDIxMTYzLDIxMTYxLDIxMTYyLDIxMTY0LDIxMjgzLDIxMzYzLDIxMzY1LDIxNTMzLDIxNTQ5LDIxNTM0LDIxNTY2LDIxNTQyLDIxNTgyLDIxNTQzLDIxNTc0LDIxNTcxLDIxNTU1LDIxNTc2LDIxNTcwLDIxNTMxLDIxNTQ1LDIxNTc4LDIxNTYxLDIxNTYzLDIxNTYwLDIxNTUwLDIxNTU3LDIxNTU4LDIxNTM2LDIxNTY0LDIxNTY4LDIxNTUzLDIxNTQ3LDIxNTM1LDIxNTQ4LDIyMjUwLDIyMjU2LDIyMjQ0LDIyMjUxLDIyMzQ2LDIyMzUzLDIyMzM2LDIyMzQ5LDIyMzQzLDIyMzUwLDIyMzM0LDIyMzUyLDIyMzUxLDIyMzMxLDIyNzY3LDIyODQ2LDIyOTQxLDIyOTMwLDIyOTUyLDIyOTQyLDIyOTQ3LDIyOTM3LDIyOTM0LDIyOTI1LDIyOTQ4LDIyOTMxLDIyOTIyLDIyOTQ5LDIzMzg5LDIzMzg4LDIzMzg2LDIzMzg3LDIzNDM2LDIzNDM1LDIzNDM5LDIzNTk2LDIzNjE2LDIzNjE3LDIzNjE1LDIzNjE0LDIzNjk2LDIzNjk3LDIzNzAwLDIzNjkyLDI0MDQzLDI0MDc2LDI0MjA3LDI0MTk5LDI0MjAyLDI0MzExLDI0MzI0LDI0MzUxLDI0NDIwLDI0NDE4LDI0NDM5LDI0NDQxLDI0NTM2LDI0NTI0LDI0NTM1LDI0NTI1LDI0NTYxLDI0NTU1LDI0NTY4LDI0NTU0LDI1MTA2LDI1MTA1LDI1MjIwLDI1MjM5LDI1MjM4LDI1MjE2LDI1MjA2LDI1MjI1LDI1MTk3LDI1MjI2LDI1MjEyLDI1MjE0LDI1MjA5LDI1MjAzLDI1MjM0LDI1MTk5LDI1MjQwLDI1MTk4LDI1MjM3LDI1MjM1LDI1MjMzLDI1MjIyLDI1OTEzLDI1OTE1LDI1OTEyLDI2MDk3LDI2MzU2LDI2NDYzLDI2NDQ2LDI2NDQ3LDI2NDQ4LDI2NDQ5LDI2NDYwLDI2NDU0LDI2NDYyLDI2NDQxLDI2NDM4LDI2NDY0LDI2NDUxLDI2NDU1LDI3NDkzLDI3NTk5LDI3NzE0LDI3NzQyLDI3ODAxLDI3Nzc3LDI3Nzg0LDI3Nzg1LDI3NzgxLDI3ODAzLDI3NzU0LDI3NzcwLDI3NzkyLDI3NzYwLDI3Nzg4LDI3NzUyLDI3Nzk4LDI3Nzk0LDI3NzczLDI3Nzc5LDI3NzYyLDI3Nzc0LDI3NzY0LDI3NzgyLDI3NzY2LDI3Nzg5LDI3Nzk2LDI3ODAwLDI3Nzc4LDI4NzkwLDI4Nzk2LDI4Nzk3LDI4NzkyLDI5MjgyLDI5MjgxLDI5MjgwLDI5MzgwLDI5Mzc4LDI5NTkwLDI5OTk2LDI5OTk1LDMwMDA3LDMwMDA4LDMwMzM4LDMwNDQ3LDMwNjkxLDMxMTY5LDMxMTY4LDMxMTY3LDMxMzUwLDMxOTk1LDMyNTk3LDMyOTE4LDMyOTE1LDMyOTI1LDMyOTIwLDMyOTIzLDMyOTIyLDMyOTQ2LDMzMzkxLDMzNDI2LDMzNDE5LDMzNDIxLDM1MjExLDM1MjgyLDM1MzI4LDM1ODk1LDM1OTEwLDM1OTI1LDM1OTk3LDM2MTk2LDM2MjA4LDM2Mjc1LDM2NTIzLDM2NTU0LDM2NzYzLDM2Nzg0LDM2ODAyLDM2ODA2LDM2ODA1LDM2ODA0LDI0MDMzLDM3MDA5LDM3MDI2LDM3MDM0LDM3MDMwLDM3MDI3LDM3MTkzLDM3MzE4LDM3MzI0LDM4NDUwLDM4NDQ2LDM4NDQ5LDM4NDQyLDM4NDQ0LDIwMDA2LDIwMDU0LDIwMDgzLDIwMTA3LDIwMTIzLDIwMTI2LDIwMTM5LDIwMTQwLDIwMzM1LDIwMzgxLDIwMzY1LDIwMzM5LDIwMzUxLDIwMzMyLDIwMzc5LDIwMzYzLDIwMzU4LDIwMzU1LDIwMzM2LDIwMzQxLDIwMzYwLDIwMzI5LDIwMzQ3LDIwMzc0LDIwMzUwLDIwMzY3LDIwMzY5LDIwMzQ2LDIwODIwLDIwODE4LDIwODIxLDIwODQxLDIwODU1LDIwODU0LDIwODU2LDIwOTI1LDIwOTg5LDIxMDUxLDIxMDQ4LDIxMDQ3LDIxMDUwLDIxMDQwLDIxMDM4LDIxMDQ2LDIxMDU3LDIxMTgyLDIxMTc5LDIxMzMwLDIxMzMyLDIxMzMxLDIxMzI5LDIxMzUwLDIxMzY3LDIxMzY4LDIxMzY5LDIxNDYyLDIxNDYwLDIxNDYzLDIxNjE5LDIxNjIxLDIxNjU0LDIxNjI0LDIxNjUzLDIxNjMyLDIxNjI3LDIxNjIzLDIxNjM2LDIxNjUwLDIxNjM4LDIxNjI4LDIxNjQ4LDIxNjE3LDIxNjIyLDIxNjQ0LDIxNjU4LDIxNjAyLDIxNjA4LDIxNjQzLDIxNjI5LDIxNjQ2LDIyMjY2LDIyNDAzLDIyMzkxLDIyMzc4LDIyMzc3LDIyMzY5LDIyMzc0LDIyMzcyLDIyMzk2LDIyODEyLDIyODU3LDIyODU1LDIyODU2LDIyODUyLDIyODY4LDIyOTc0LDIyOTcxLDIyOTk2LDIyOTY5LDIyOTU4LDIyOTkzLDIyOTgyLDIyOTkyLDIyOTg5LDIyOTg3LDIyOTk1LDIyOTg2LDIyOTU5LDIyOTYzLDIyOTk0LDIyOTgxLDIzMzkxLDIzMzk2LDIzMzk1LDIzNDQ3LDIzNDUwLDIzNDQ4LDIzNDUyLDIzNDQ5LDIzNDUxLDIzNTc4LDIzNjI0LDIzNjIxLDIzNjIyLDIzNzM1LDIzNzEzLDIzNzM2LDIzNzIxLDIzNzIzLDIzNzI5LDIzNzMxLDI0MDg4LDI0MDkwLDI0MDg2LDI0MDg1LDI0MDkxLDI0MDgxLDI0MTg0LDI0MjE4LDI0MjE1LDI0MjIwLDI0MjEzLDI0MjE0LDI0MzEwLDI0MzU4LDI0MzU5LDI0MzYxLDI0NDQ4LDI0NDQ5LDI0NDQ3LDI0NDQ0LDI0NTQxLDI0NTQ0LDI0NTczLDI0NTY1LDI0NTc1LDI0NTkxLDI0NTk2LDI0NjIzLDI0NjI5LDI0NTk4LDI0NjE4LDI0NTk3LDI0NjA5LDI0NjE1LDI0NjE3LDI0NjE5LDI0NjAzLDI1MTEwLDI1MTA5LDI1MTUxLDI1MTUwLDI1MTUyLDI1MjE1LDI1Mjg5LDI1MjkyLDI1Mjg0LDI1Mjc5LDI1MjgyLDI1MjczLDI1Mjk4LDI1MzA3LDI1MjU5LDI1Mjk5LDI1MzAwLDI1MjkxLDI1Mjg4LDI1MjU2LDI1Mjc3LDI1Mjc2LDI1Mjk2LDI1MzA1LDI1Mjg3LDI1MjkzLDI1MjY5LDI1MzA2LDI1MjY1LDI1MzA0LDI1MzAyLDI1MzAzLDI1Mjg2LDI1MjYwLDI1Mjk0LDI1OTE4LDI2MDIzLDI2MDQ0LDI2MTA2LDI2MTMyLDI2MTMxLDI2MTI0LDI2MTE4LDI2MTE0LDI2MTI2LDI2MTEyLDI2MTI3LDI2MTMzLDI2MTIyLDI2MTE5LDI2MzgxLDI2Mzc5LDI2NDc3LDI2NTA3LDI2NTE3LDI2NDgxLDI2NTI0LDI2NDgzLDI2NDg3LDI2NTAzLDI2NTI1LDI2NTE5LDI2NDc5LDI2NDgwLDI2NDk1LDI2NTA1LDI2NDk0LDI2NTEyLDI2NDg1LDI2NTIyLDI2NTE1LDI2NDkyLDI2NDc0LDI2NDgyLDI3NDI3LDI3NDk0LDI3NDk1LDI3NTE5LDI3NjY3LDI3Njc1LDI3ODc1LDI3ODgwLDI3ODkxLDI3ODI1LDI3ODUyLDI3ODc3LDI3ODI3LDI3ODM3LDI3ODM4LDI3ODM2LDI3ODc0LDI3ODE5LDI3ODYxLDI3ODU5LDI3ODMyLDI3ODQ0LDI3ODMzLDI3ODQxLDI3ODIyLDI3ODYzLDI3ODQ1LDI3ODg5LDI3ODM5LDI3ODM1LDI3ODczLDI3ODY3LDI3ODUwLDI3ODIwLDI3ODg3LDI3ODY4LDI3ODYyLDI3ODcyLDI4ODIxLDI4ODE0LDI4ODE4LDI4ODEwLDI4ODI1LDI5MjI4LDI5MjI5LDI5MjQwLDI5MjU2LDI5Mjg3LDI5Mjg5LDI5Mzc2LDI5MzkwLDI5NDAxLDI5Mzk5LDI5MzkyLDI5NjA5LDI5NjA4LDI5NTk5LDI5NjExLDI5NjA1LDMwMDEzLDMwMTA5LDMwMTA1LDMwMTA2LDMwMzQwLDMwNDAyLDMwNDUwLDMwNDUyLDMwNjkzLDMwNzE3LDMxMDM4LDMxMDQwLDMxMDQxLDMxMTc3LDMxMTc2LDMxMzU0LDMxMzUzLDMxNDgyLDMxOTk4LDMyNTk2LDMyNjUyLDMyNjUxLDMyNzczLDMyOTU0LDMyOTMzLDMyOTMwLDMyOTQ1LDMyOTI5LDMyOTM5LDMyOTM3LDMyOTQ4LDMyOTM4LDMyOTQzLDMzMjUzLDMzMjc4LDMzMjkzLDMzNDU5LDMzNDM3LDMzNDMzLDMzNDUzLDMzNDY5LDMzNDM5LDMzNDY1LDMzNDU3LDMzNDUyLDMzNDQ1LDMzNDU1LDMzNDY0LDMzNDQzLDMzNDU2LDMzNDcwLDMzNDYzLDM0MzgyLDM0NDE3LDIxMDIxLDM0OTIwLDM2NTU1LDM2ODE0LDM2ODIwLDM2ODE3LDM3MDQ1LDM3MDQ4LDM3MDQxLDM3MDQ2LDM3MzE5LDM3MzI5LDM4MjYzLDM4MjcyLDM4NDI4LDM4NDY0LDM4NDYzLDM4NDU5LDM4NDY4LDM4NDY2LDM4NTg1LDM4NjMyLDM4NzM4LDM4NzUwLDIwMTI3LDIwMTQxLDIwMTQyLDIwNDQ5LDIwNDA1LDIwMzk5LDIwNDE1LDIwNDQ4LDIwNDMzLDIwNDMxLDIwNDQ1LDIwNDE5LDIwNDA2LDIwNDQwLDIwNDQ3LDIwNDI2LDIwNDM5LDIwMzk4LDIwNDMyLDIwNDIwLDIwNDE4LDIwNDQyLDIwNDMwLDIwNDQ2LDIwNDA3LDIwODIzLDIwODgyLDIwODgxLDIwODk2LDIxMDcwLDIxMDU5LDIxMDY2LDIxMDY5LDIxMDY4LDIxMDY3LDIxMDYzLDIxMTkxLDIxMTkzLDIxMTg3LDIxMTg1LDIxMjYxLDIxMzM1LDIxMzcxLDIxNDAyLDIxNDY3LDIxNjc2LDIxNjk2LDIxNjcyLDIxNzEwLDIxNzA1LDIxNjg4LDIxNjcwLDIxNjgzLDIxNzAzLDIxNjk4LDIxNjkzLDIxNjc0LDIxNjk3LDIxNzAwLDIxNzA0LDIxNjc5LDIxNjc1LDIxNjgxLDIxNjkxLDIxNjczLDIxNjcxLDIxNjk1LDIyMjcxLDIyNDAyLDIyNDExLDIyNDMyLDIyNDM1LDIyNDM0LDIyNDc4LDIyNDQ2LDIyNDE5LDIyODY5LDIyODY1LDIyODYzLDIyODYyLDIyODY0LDIzMDA0LDIzMDAwLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIzMDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYxLDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMxLDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUwLDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAzLDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDczLDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIyLDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMxODY5LDMyMDAyLDMyMDA1LDMyMDAwLDMyMDA5LDMyMDA3LDMyMDA0LDMyMDA2LDMyNTY4LDMyNjU0LDMyNzAzLDMyNzcyLDMyNzg0LDMyNzgxLDMyNzg1LDMyODIyLDMyOTgyLDMyOTk3LDMyOTg2LDMyOTYzLDMyOTY0LDMyOTcyLDMyOTkzLDMyOTg3LDMyOTc0LDMyOTkwLDMyOTk2LDMyOTg5LDMzMjY4LDMzMzE0LDMzNTExLDMzNTM5LDMzNTQxLDMzNTA3LDMzNDk5LDMzNTEwLDMzNTQwLDMzNTA5LDMzNTM4LDMzNTQ1LDMzNDkwLDMzNDk1LDMzNTIxLDMzNTM3LDMzNTAwLDMzNDkyLDMzNDg5LDMzNTAyLDMzNDkxLDMzNTAzLDMzNTE5LDMzNTQyLDM0Mzg0LDM0NDI1LDM0NDI3LDM0NDI2LDM0ODkzLDM0OTIzLDM1MjAxLDM1Mjg0LDM1MzM2LDM1MzMwLDM1MzMxLDM1OTk4LDM2MDAwLDM2MjEyLDM2MjExLDM2Mjc2LDM2NTU3LDM2NTU2LDM2ODQ4LDM2ODM4LDM2ODM0LDM2ODQyLDM2ODM3LDM2ODQ1LDM2ODQzLDM2ODM2LDM2ODQwLDM3MDY2LDM3MDcwLDM3MDU3LDM3MDU5LDM3MTk1LDM3MTk0LDM3MzI1LDM4Mjc0LDM4NDgwLDM4NDc1LDM4NDc2LDM4NDc3LDM4NzU0LDM4NzYxLDM4ODU5LDM4ODkzLDM4ODk5LDM4OTEzLDM5MDgwLDM5MTMxLDM5MTM1LDM5MzE4LDM5MzIxLDIwMDU2LDIwMTQ3LDIwNDkyLDIwNDkzLDIwNTE1LDIwNDYzLDIwNTE4LDIwNTE3LDIwNDcyLDIwNTIxLDIwNTAyLDIwNDg2LDIwNTQwLDIwNTExLDIwNTA2LDIwNDk4LDIwNDk3LDIwNDc0LDIwNDgwLDIwNTAwLDIwNTIwLDIwNDY1LDIwNTEzLDIwNDkxLDIwNTA1LDIwNTA0LDIwNDY3LDIwNDYyLDIwNTI1LDIwNTIyLDIwNDc4LDIwNTIzLDIwNDg5LDIwODYwLDIwOTAwLDIwOTAxLDIwODk4LDIwOTQxLDIwOTQwLDIwOTM0LDIwOTM5LDIxMDc4LDIxMDg0LDIxMDc2LDIxMDgzLDIxMDg1LDIxMjkwLDIxMzc1LDIxNDA3LDIxNDA1LDIxNDcxLDIxNzM2LDIxNzc2LDIxNzYxLDIxODE1LDIxNzU2LDIxNzMzLDIxNzQ2LDIxNzY2LDIxNzU0LDIxNzgwLDIxNzM3LDIxNzQxLDIxNzI5LDIxNzY5LDIxNzQyLDIxNzM4LDIxNzM0LDIxNzk5LDIxNzY3LDIxNzU3LDIxNzc1LDIyMjc1LDIyMjc2LDIyNDY2LDIyNDg0LDIyNDc1LDIyNDY3LDIyNTM3LDIyNzk5LDIyODcxLDIyODcyLDIyODc0LDIzMDU3LDIzMDY0LDIzMDY4LDIzMDcxLDIzMDY3LDIzMDU5LDIzMDIwLDIzMDcyLDIzMDc1LDIzMDgxLDIzMDc3LDIzMDUyLDIzMDQ5LDIzNDAzLDIzNjQwLDIzNDcyLDIzNDc1LDIzNDc4LDIzNDc2LDIzNDcwLDIzNDc3LDIzNDgxLDIzNDgwLDIzNTU2LDIzNjMzLDIzNjM3LDIzNjMyLDIzNzg5LDIzODA1LDIzODAzLDIzNzg2LDIzNzg0LDIzNzkyLDIzNzk4LDIzODA5LDIzNzk2LDI0MDQ2LDI0MTA5LDI0MTA3LDI0MjM1LDI0MjM3LDI0MjMxLDI0MzY5LDI0NDY2LDI0NDY1LDI0NDY0LDI0NjY1LDI0Njc1LDI0Njc3LDI0NjU2LDI0NjYxLDI0Njg1LDI0NjgxLDI0Njg3LDI0NzA4LDI0NzM1LDI0NzMwLDI0NzE3LDI0NzI0LDI0NzE2LDI0NzA5LDI0NzI2LDI1MTU5LDI1MzMxLDI1MzUyLDI1MzQzLDI1NDIyLDI1NDA2LDI1MzkxLDI1NDI5LDI1NDEwLDI1NDE0LDI1NDIzLDI1NDE3LDI1NDAyLDI1NDI0LDI1NDA1LDI1Mzg2LDI1Mzg3LDI1Mzg0LDI1NDIxLDI1NDIwLDI1OTI4LDI1OTI5LDI2MDA5LDI2MDQ5LDI2MDUzLDI2MTc4LDI2MTg1LDI2MTkxLDI2MTc5LDI2MTk0LDI2MTg4LDI2MTgxLDI2MTc3LDI2MzYwLDI2Mzg4LDI2Mzg5LDI2MzkxLDI2NjU3LDI2NjgwLDI2Njk2LDI2Njk0LDI2NzA3LDI2NjgxLDI2NjkwLDI2NzA4LDI2NjY1LDI2ODAzLDI2NjQ3LDI2NzAwLDI2NzA1LDI2Njg1LDI2NjEyLDI2NzA0LDI2Njg4LDI2Njg0LDI2NjkxLDI2NjY2LDI2NjkzLDI2NjQzLDI2NjQ4LDI2Njg5LDI3NTMwLDI3NTI5LDI3NTc1LDI3NjgzLDI3Njg3LDI3Njg4LDI3Njg2LDI3Njg0LDI3ODg4LDI4MDEwLDI4MDUzLDI4MDQwLDI4MDM5LDI4MDA2LDI4MDI0LDI4MDIzLDI3OTkzLDI4MDUxLDI4MDEyLDI4MDQxLDI4MDE0LDI3OTk0LDI4MDIwLDI4MDA5LDI4MDQ0LDI4MDQyLDI4MDI1LDI4MDM3LDI4MDA1LDI4MDUyLDI4ODc0LDI4ODg4LDI4OTAwLDI4ODg5LDI4ODcyLDI4ODc5LDI5MjQxLDI5MzA1LDI5NDM2LDI5NDMzLDI5NDM3LDI5NDMyLDI5NDMxLDI5NTc0LDI5Njc3LDI5NzA1LDI5Njc4LDI5NjY0LDI5Njc0LDI5NjYyLDMwMDM2LDMwMDQ1LDMwMDQ0LDMwMDQyLDMwMDQxLDMwMTQyLDMwMTQ5LDMwMTUxLDMwMTMwLDMwMTMxLDMwMTQxLDMwMTQwLDMwMTM3LDMwMTQ2LDMwMTM2LDMwMzQ3LDMwMzg0LDMwNDEwLDMwNDEzLDMwNDE0LDMwNTA1LDMwNDk1LDMwNDk2LDMwNTA0LDMwNjk3LDMwNzY4LDMwNzU5LDMwNzc2LDMwNzQ5LDMwNzcyLDMwNzc1LDMwNzU3LDMwNzY1LDMwNzUyLDMwNzUxLDMwNzcwLDMxMDYxLDMxMDU2LDMxMDcyLDMxMDcxLDMxMDYyLDMxMDcwLDMxMDY5LDMxMDYzLDMxMDY2LDMxMjA0LDMxMjAzLDMxMjA3LDMxMTk5LDMxMjA2LDMxMjA5LDMxMTkyLDMxMzY0LDMxMzY4LDMxNDQ5LDMxNDk0LDMxNTA1LDMxODgxLDMyMDMzLDMyMDIzLDMyMDExLDMyMDEwLDMyMDMyLDMyMDM0LDMyMDIwLDMyMDE2LDMyMDIxLDMyMDI2LDMyMDI4LDMyMDEzLDMyMDI1LDMyMDI3LDMyNTcwLDMyNjA3LDMyNjYwLDMyNzA5LDMyNzA1LDMyNzc0LDMyNzkyLDMyNzg5LDMyNzkzLDMyNzkxLDMyODI5LDMyODMxLDMzMDA5LDMzMDI2LDMzMDA4LDMzMDI5LDMzMDA1LDMzMDEyLDMzMDMwLDMzMDE2LDMzMDExLDMzMDMyLDMzMDIxLDMzMDM0LDMzMDIwLDMzMDA3LDMzMjYxLDMzMjYwLDMzMjgwLDMzMjk2LDMzMzIyLDMzMzIzLDMzMzIwLDMzMzI0LDMzNDY3LDMzNTc5LDMzNjE4LDMzNjIwLDMzNjEwLDMzNTkyLDMzNjE2LDMzNjA5LDMzNTg5LDMzNTg4LDMzNjE1LDMzNTg2LDMzNTkzLDMzNTkwLDMzNTU5LDMzNjAwLDMzNTg1LDMzNTc2LDMzNjAzLDM0Mzg4LDM0NDQyLDM0NDc0LDM0NDUxLDM0NDY4LDM0NDczLDM0NDQ0LDM0NDY3LDM0NDYwLDM0OTI4LDM0OTM1LDM0OTQ1LDM0OTQ2LDM0OTQxLDM0OTM3LDM1MzUyLDM1MzQ0LDM1MzQyLDM1MzQwLDM1MzQ5LDM1MzM4LDM1MzUxLDM1MzQ3LDM1MzUwLDM1MzQzLDM1MzQ1LDM1OTEyLDM1OTYyLDM1OTYxLDM2MDAxLDM2MDAyLDM2MjE1LDM2NTI0LDM2NTYyLDM2NTY0LDM2NTU5LDM2Nzg1LDM2ODY1LDM2ODcwLDM2ODU1LDM2ODY0LDM2ODU4LDM2ODUyLDM2ODY3LDM2ODYxLDM2ODY5LDM2ODU2LDM3MDEzLDM3MDg5LDM3MDg1LDM3MDkwLDM3MjAyLDM3MTk3LDM3MTk2LDM3MzM2LDM3MzQxLDM3MzM1LDM3MzQwLDM3MzM3LDM4Mjc1LDM4NDk4LDM4NDk5LDM4NDk3LDM4NDkxLDM4NDkzLDM4NTAwLDM4NDg4LDM4NDk0LDM4NTg3LDM5MTM4LDM5MzQwLDM5NTkyLDM5NjQwLDM5NzE3LDM5NzMwLDM5NzQwLDIwMDk0LDIwNjAyLDIwNjA1LDIwNTcyLDIwNTUxLDIwNTQ3LDIwNTU2LDIwNTcwLDIwNTUzLDIwNTgxLDIwNTk4LDIwNTU4LDIwNTY1LDIwNTk3LDIwNTk2LDIwNTk5LDIwNTU5LDIwNDk1LDIwNTkxLDIwNTg5LDIwODI4LDIwODg1LDIwOTc2LDIxMDk4LDIxMTAzLDIxMjAyLDIxMjA5LDIxMjA4LDIxMjA1LDIxMjY0LDIxMjYzLDIxMjczLDIxMzExLDIxMzEyLDIxMzEwLDIxNDQzLDI2MzY0LDIxODMwLDIxODY2LDIxODYyLDIxODI4LDIxODU0LDIxODU3LDIxODI3LDIxODM0LDIxODA5LDIxODQ2LDIxODM5LDIxODQ1LDIxODA3LDIxODYwLDIxODE2LDIxODA2LDIxODUyLDIxODA0LDIxODU5LDIxODExLDIxODI1LDIxODQ3LDIyMjgwLDIyMjgzLDIyMjgxLDIyNDk1LDIyNTMzLDIyNTM4LDIyNTM0LDIyNDk2LDIyNTAwLDIyNTIyLDIyNTMwLDIyNTgxLDIyNTE5LDIyNTIxLDIyODE2LDIyODgyLDIzMDk0LDIzMTA1LDIzMTEzLDIzMTQyLDIzMTQ2LDIzMTA0LDIzMTAwLDIzMTM4LDIzMTMwLDIzMTEwLDIzMTE0LDIzNDA4LDIzNDk1LDIzNDkzLDIzNDkyLDIzNDkwLDIzNDg3LDIzNDk0LDIzNTYxLDIzNTYwLDIzNTU5LDIzNjQ4LDIzNjQ0LDIzNjQ1LDIzODE1LDIzODE0LDIzODIyLDIzODM1LDIzODMwLDIzODQyLDIzODI1LDIzODQ5LDIzODI4LDIzODMzLDIzODQ0LDIzODQ3LDIzODMxLDI0MDM0LDI0MTIwLDI0MTE4LDI0MTE1LDI0MTE5LDI0MjQ3LDI0MjQ4LDI0MjQ2LDI0MjQ1LDI0MjU0LDI0MzczLDI0Mzc1LDI0NDA3LDI0NDI4LDI0NDI1LDI0NDI3LDI0NDcxLDI0NDczLDI0NDc4LDI0NDcyLDI0NDgxLDI0NDgwLDI0NDc2LDI0NzAzLDI0NzM5LDI0NzEzLDI0NzM2LDI0NzQ0LDI0Nzc5LDI0NzU2LDI0ODA2LDI0NzY1LDI0NzczLDI0NzYzLDI0NzU3LDI0Nzk2LDI0NzY0LDI0NzkyLDI0Nzg5LDI0Nzc0LDI0Nzk5LDI0NzYwLDI0Nzk0LDI0Nzc1LDI1MTE0LDI1MTE1LDI1MTYwLDI1NTA0LDI1NTExLDI1NDU4LDI1NDk0LDI1NTA2LDI1NTA5LDI1NDYzLDI1NDQ3LDI1NDk2LDI1NTE0LDI1NDU3LDI1NTEzLDI1NDgxLDI1NDc1LDI1NDk5LDI1NDUxLDI1NTEyLDI1NDc2LDI1NDgwLDI1NDk3LDI1NTA1LDI1NTE2LDI1NDkwLDI1NDg3LDI1NDcyLDI1NDY3LDI1NDQ5LDI1NDQ4LDI1NDY2LDI1OTQ5LDI1OTQyLDI1OTM3LDI1OTQ1LDI1OTQzLDIxODU1LDI1OTM1LDI1OTQ0LDI1OTQxLDI1OTQwLDI2MDEyLDI2MDExLDI2MDI4LDI2MDYzLDI2MDU5LDI2MDYwLDI2MDYyLDI2MjA1LDI2MjAyLDI2MjEyLDI2MjE2LDI2MjE0LDI2MjA2LDI2MzYxLDIxMjA3LDI2Mzk1LDI2NzUzLDI2Nzk5LDI2Nzg2LDI2NzcxLDI2ODA1LDI2NzUxLDI2NzQyLDI2ODAxLDI2NzkxLDI2Nzc1LDI2ODAwLDI2NzU1LDI2ODIwLDI2Nzk3LDI2NzU4LDI2NzU3LDI2NzcyLDI2NzgxLDI2NzkyLDI2NzgzLDI2Nzg1LDI2NzU0LDI3NDQyLDI3NTc4LDI3NjI3LDI3NjI4LDI3NjkxLDI4MDQ2LDI4MDkyLDI4MTQ3LDI4MTIxLDI4MDgyLDI4MTI5LDI4MTA4LDI4MTMyLDI4MTU1LDI4MTU0LDI4MTY1LDI4MTAzLDI4MTA3LDI4MDc5LDI4MTEzLDI4MDc4LDI4MTI2LDI4MTUzLDI4MDg4LDI4MTUxLDI4MTQ5LDI4MTAxLDI4MTE0LDI4MTg2LDI4MDg1LDI4MTIyLDI4MTM5LDI4MTIwLDI4MTM4LDI4MTQ1LDI4MTQyLDI4MTM2LDI4MTAyLDI4MTAwLDI4MDc0LDI4MTQwLDI4MDk1LDI4MTM0LDI4OTIxLDI4OTM3LDI4OTM4LDI4OTI1LDI4OTExLDI5MjQ1LDI5MzA5LDI5MzEzLDI5NDY4LDI5NDY3LDI5NDYyLDI5NDU5LDI5NDY1LDI5NTc1LDI5NzAxLDI5NzA2LDI5Njk5LDI5NzAyLDI5Njk0LDI5NzA5LDI5OTIwLDI5OTQyLDI5OTQzLDI5OTgwLDI5OTg2LDMwMDUzLDMwMDU0LDMwMDUwLDMwMDY0LDMwMDk1LDMwMTY0LDMwMTY1LDMwMTMzLDMwMTU0LDMwMTU3LDMwMzUwLDMwNDIwLDMwNDE4LDMwNDI3LDMwNTE5LDMwNTI2LDMwNTI0LDMwNTE4LDMwNTIwLDMwNTIyLDMwODI3LDMwNzg3LDMwNzk4LDMxMDc3LDMxMDgwLDMxMDg1LDMxMjI3LDMxMzc4LDMxMzgxLDMxNTIwLDMxNTI4LDMxNTE1LDMxNTMyLDMxNTI2LDMxNTEzLDMxNTE4LDMxNTM0LDMxODkwLDMxODk1LDMxODkzLDMyMDcwLDMyMDY3LDMyMTEzLDMyMDQ2LDMyMDU3LDMyMDYwLDMyMDY0LDMyMDQ4LDMyMDUxLDMyMDY4LDMyMDQ3LDMyMDY2LDMyMDUwLDMyMDQ5LDMyNTczLDMyNjcwLDMyNjY2LDMyNzE2LDMyNzE4LDMyNzIyLDMyNzk2LDMyODQyLDMyODM4LDMzMDcxLDMzMDQ2LDMzMDU5LDMzMDY3LDMzMDY1LDMzMDcyLDMzMDYwLDMzMjgyLDMzMzMzLDMzMzM1LDMzMzM0LDMzMzM3LDMzNjc4LDMzNjk0LDMzNjg4LDMzNjU2LDMzNjk4LDMzNjg2LDMzNzI1LDMzNzA3LDMzNjgyLDMzNjc0LDMzNjgzLDMzNjczLDMzNjk2LDMzNjU1LDMzNjU5LDMzNjYwLDMzNjcwLDMzNzAzLDM0Mzg5LDI0NDI2LDM0NTAzLDM0NDk2LDM0NDg2LDM0NTAwLDM0NDg1LDM0NTAyLDM0NTA3LDM0NDgxLDM0NDc5LDM0NTA1LDM0ODk5LDM0OTc0LDM0OTUyLDM0OTg3LDM0OTYyLDM0OTY2LDM0OTU3LDM0OTU1LDM1MjE5LDM1MjE1LDM1MzcwLDM1MzU3LDM1MzYzLDM1MzY1LDM1Mzc3LDM1MzczLDM1MzU5LDM1MzU1LDM1MzYyLDM1OTEzLDM1OTMwLDM2MDA5LDM2MDEyLDM2MDExLDM2MDA4LDM2MDEwLDM2MDA3LDM2MTk5LDM2MTk4LDM2Mjg2LDM2MjgyLDM2NTcxLDM2NTc1LDM2ODg5LDM2ODc3LDM2ODkwLDM2ODg3LDM2ODk5LDM2ODk1LDM2ODkzLDM2ODgwLDM2ODg1LDM2ODk0LDM2ODk2LDM2ODc5LDM2ODk4LDM2ODg2LDM2ODkxLDM2ODg0LDM3MDk2LDM3MTAxLDM3MTE3LDM3MjA3LDM3MzI2LDM3MzY1LDM3MzUwLDM3MzQ3LDM3MzUxLDM3MzU3LDM3MzUzLDM4MjgxLDM4NTA2LDM4NTE3LDM4NTE1LDM4NTIwLDM4NTEyLDM4NTE2LDM4NTE4LDM4NTE5LDM4NTA4LDM4NTkyLDM4NjM0LDM4NjMzLDMxNDU2LDMxNDU1LDM4OTE0LDM4OTE1LDM5NzcwLDQwMTY1LDQwNTY1LDQwNTc1LDQwNjEzLDQwNjM1LDIwNjQyLDIwNjIxLDIwNjEzLDIwNjMzLDIwNjI1LDIwNjA4LDIwNjMwLDIwNjMyLDIwNjM0LDI2MzY4LDIwOTc3LDIxMTA2LDIxMTA4LDIxMTA5LDIxMDk3LDIxMjE0LDIxMjEzLDIxMjExLDIxMzM4LDIxNDEzLDIxODgzLDIxODg4LDIxOTI3LDIxODg0LDIxODk4LDIxOTE3LDIxOTEyLDIxODkwLDIxOTE2LDIxOTMwLDIxOTA4LDIxODk1LDIxODk5LDIxODkxLDIxOTM5LDIxOTM0LDIxOTE5LDIxODIyLDIxOTM4LDIxOTE0LDIxOTQ3LDIxOTMyLDIxOTM3LDIxODg2LDIxODk3LDIxOTMxLDIxOTEzLDIyMjg1LDIyNTc1LDIyNTcwLDIyNTgwLDIyNTY0LDIyNTc2LDIyNTc3LDIyNTYxLDIyNTU3LDIyNTYwLDIyNzc3LDIyNzc4LDIyODgwLDIzMTU5LDIzMTk0LDIzMTY3LDIzMTg2LDIzMTk1LDIzMjA3LDIzNDExLDIzNDA5LDIzNTA2LDIzNTAwLDIzNTA3LDIzNTA0LDIzNTYyLDIzNTYzLDIzNjAxLDIzODg0LDIzODg4LDIzODYwLDIzODc5LDI0MDYxLDI0MTMzLDI0MTI1LDI0MTI4LDI0MTMxLDI0MTkwLDI0MjY2LDI0MjU3LDI0MjU4LDI0MjYwLDI0MzgwLDI0NDI5LDI0NDg5LDI0NDkwLDI0NDg4LDI0Nzg1LDI0ODAxLDI0NzU0LDI0NzU4LDI0ODAwLDI0ODYwLDI0ODY3LDI0ODI2LDI0ODUzLDI0ODE2LDI0ODI3LDI0ODIwLDI0OTM2LDI0ODE3LDI0ODQ2LDI0ODIyLDI0ODQxLDI0ODMyLDI0ODUwLDI1MTE5LDI1MTYxLDI1NTA3LDI1NDg0LDI1NTUxLDI1NTM2LDI1NTc3LDI1NTQ1LDI1NTQyLDI1NTQ5LDI1NTU0LDI1NTcxLDI1NTUyLDI1NTY5LDI1NTU4LDI1NTgxLDI1NTgyLDI1NDYyLDI1NTg4LDI1NTc4LDI1NTYzLDI1NjgyLDI1NTYyLDI1NTkzLDI1OTUwLDI1OTU4LDI1OTU0LDI1OTU1LDI2MDAxLDI2MDAwLDI2MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUxLDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUzLDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQzLDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgzLDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMyMDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMyMTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIxODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMzNzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMyLDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIwNjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcxLDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIyNjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIyNjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIzMjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAwLDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcxLDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQyLDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAyLDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYxLDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMwNDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMwNTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMwNTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUyLDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgwLDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMyNjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMyOTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMzMTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAwLDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkxLDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMyLDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIyLDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIyNjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIyNjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIyODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQzLDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYzLDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMzLDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMxNDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMxNjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMxNjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMzMzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMzOTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMzOTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAxLDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIxLDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQxLDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMzLDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDczLDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIyNzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIzMjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIzNTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0MzkyLDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUzLDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAzLDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMxNjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMxNjg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMyMjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMxLDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgwLDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcwLDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTczLDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIyNzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIzNTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcyLDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMxMzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMxNzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMxOTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAzLDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUzLDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIwLDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIyMTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIyMTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIzMzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUyLDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMxNDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMxNzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMxOTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgzLDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjExLDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAwLDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDkyLDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgyLDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUxLDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIyNzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4NjgzLDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMxNDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMxNzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMyMzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2OTk1LDM3MDAwLDM3MjkxLDM3MjkyLDM3MzI4LDM3NzgwLDM3NzcwLDM3NzgyLDM3Nzk0LDM3ODExLDM3ODA2LDM3ODA0LDM3ODA4LDM3Nzg0LDM3Nzg2LDM3NzgzLDM4MzU2LDM4MzU4LDM4MzUyLDM4MzU3LDM4NjI2LDM4NjIwLDM4NjE3LDM4NjE5LDM4NjIyLDM4NjkyLDM4ODE5LDM4ODIyLDM4ODI5LDM4OTA1LDM4OTg5LDM4OTkxLDM4OTg4LDM4OTkwLDM4OTk1LDM5MDk4LDM5MjMwLDM5MjMxLDM5MjI5LDM5MjE0LDM5MzMzLDM5NDM4LDM5NjE3LDM5NjgzLDM5Njg2LDM5NzU5LDM5NzU4LDM5NzU3LDM5ODgyLDM5ODgxLDM5OTMzLDM5ODgwLDM5ODcyLDQwMjczLDQwMjg1LDQwMjg4LDQwNjcyLDQwNzI1LDQwNzQ4LDIwNzg3LDIyMTgxLDIyNzUwLDIyNzUxLDIyNzU0LDIzNTQxLDQwODQ4LDI0MzAwLDI1MDc0LDI1MDc5LDI1MDc4LDI1MDc3LDI1ODU2LDI1ODcxLDI2MzM2LDI2MzMzLDI3MzY1LDI3MzU3LDI3MzU0LDI3MzQ3LDI4Njk5LDI4NzAzLDI4NzEyLDI4Njk4LDI4NzAxLDI4NjkzLDI4Njk2LDI5MTkwLDI5MTk3LDI5MjcyLDI5MzQ2LDI5NTYwLDI5NTYyLDI5ODg1LDI5ODk4LDI5OTIzLDMwMDg3LDMwMDg2LDMwMzAzLDMwMzA1LDMwNjYzLDMxMDAxLDMxMTUzLDMxMzM5LDMxMzM3LDMxODA2LDMxODA3LDMxODAwLDMxODA1LDMxNzk5LDMxODA4LDMyMzYzLDMyMzY1LDMyMzc3LDMyMzYxLDMyMzYyLDMyNjQ1LDMyMzcxLDMyNjk0LDMyNjk3LDMyNjk2LDMzMjQwLDM0MjgxLDM0MjY5LDM0MjgyLDM0MjYxLDM0Mjc2LDM0Mjc3LDM0Mjk1LDM0ODExLDM0ODIxLDM0ODI5LDM0ODA5LDM0ODE0LDM1MTY4LDM1MTY3LDM1MTU4LDM1MTY2LDM1NjQ5LDM1Njc2LDM1NjcyLDM1NjU3LDM1Njc0LDM1NjYyLDM1NjYzLDM1NjU0LDM1NjczLDM2MTA0LDM2MTA2LDM2NDc2LDM2NDY2LDM2NDg3LDM2NDcwLDM2NDYwLDM2NDc0LDM2NDY4LDM2NjkyLDM2Njg2LDM2NzgxLDM3MDAyLDM3MDAzLDM3Mjk3LDM3Mjk0LDM3ODU3LDM3ODQxLDM3ODU1LDM3ODI3LDM3ODMyLDM3ODUyLDM3ODUzLDM3ODQ2LDM3ODU4LDM3ODM3LDM3ODQ4LDM3ODYwLDM3ODQ3LDM3ODY0LDM4MzY0LDM4NTgwLDM4NjI3LDM4Njk4LDM4Njk1LDM4NzUzLDM4ODc2LDM4OTA3LDM5MDA2LDM5MDAwLDM5MDAzLDM5MTAwLDM5MjM3LDM5MjQxLDM5NDQ2LDM5NDQ5LDM5NjkzLDM5OTEyLDM5OTExLDM5ODk0LDM5ODk5LDQwMzI5LDQwMjg5LDQwMzA2LDQwMjk4LDQwMzAwLDQwNTk0LDQwNTk5LDQwNTk1LDQwNjI4LDIxMjQwLDIyMTg0LDIyMTk5LDIyMTk4LDIyMTk2LDIyMjA0LDIyNzU2LDIzMzYwLDIzMzYzLDIzNDIxLDIzNTQyLDI0MDA5LDI1MDgwLDI1MDgyLDI1ODgwLDI1ODc2LDI1ODgxLDI2MzQyLDI2NDA3LDI3MzcyLDI4NzM0LDI4NzIwLDI4NzIyLDI5MjAwLDI5NTYzLDI5OTAzLDMwMzA2LDMwMzA5LDMxMDE0LDMxMDE4LDMxMDIwLDMxMDE5LDMxNDMxLDMxNDc4LDMxODIwLDMxODExLDMxODIxLDMxOTgzLDMxOTg0LDM2NzgyLDMyMzgxLDMyMzgwLDMyMzg2LDMyNTg4LDMyNzY4LDMzMjQyLDMzMzgyLDM0Mjk5LDM0Mjk3LDM0MzIxLDM0Mjk4LDM0MzEwLDM0MzE1LDM0MzExLDM0MzE0LDM0ODM2LDM0ODM3LDM1MTcyLDM1MjU4LDM1MzIwLDM1Njk2LDM1NjkyLDM1Njg2LDM1Njk1LDM1Njc5LDM1NjkxLDM2MTExLDM2MTA5LDM2NDg5LDM2NDgxLDM2NDg1LDM2NDgyLDM3MzAwLDM3MzIzLDM3OTEyLDM3ODkxLDM3ODg1LDM4MzY5LDM4NzA0LDM5MTA4LDM5MjUwLDM5MjQ5LDM5MzM2LDM5NDY3LDM5NDcyLDM5NDc5LDM5NDc3LDM5OTU1LDM5OTQ5LDQwNTY5LDQwNjI5LDQwNjgwLDQwNzUxLDQwNzk5LDQwODAzLDQwODAxLDIwNzkxLDIwNzkyLDIyMjA5LDIyMjA4LDIyMjEwLDIyODA0LDIzNjYwLDI0MDEzLDI1MDg0LDI1MDg2LDI1ODg1LDI1ODg0LDI2MDA1LDI2MzQ1LDI3Mzg3LDI3Mzk2LDI3Mzg2LDI3NTcwLDI4NzQ4LDI5MjExLDI5MzUxLDI5OTEwLDI5OTA4LDMwMzEzLDMwNjc1LDMxODI0LDMyMzk5LDMyMzk2LDMyNzAwLDM0MzI3LDM0MzQ5LDM0MzMwLDM0ODUxLDM0ODUwLDM0ODQ5LDM0ODQ3LDM1MTc4LDM1MTgwLDM1MjYxLDM1NzAwLDM1NzAzLDM1NzA5LDM2MTE1LDM2NDkwLDM2NDkzLDM2NDkxLDM2NzAzLDM2NzgzLDM3MzA2LDM3OTM0LDM3OTM5LDM3OTQxLDM3OTQ2LDM3OTQ0LDM3OTM4LDM3OTMxLDM4MzcwLDM4NzEyLDM4NzEzLDM4NzA2LDM4OTExLDM5MDE1LDM5MDEzLDM5MjU1LDM5NDkzLDM5NDkxLDM5NDg4LDM5NDg2LDM5NjMxLDM5NzY0LDM5NzYxLDM5OTgxLDM5OTczLDQwMzY3LDQwMzcyLDQwMzg2LDQwMzc2LDQwNjA1LDQwNjg3LDQwNzI5LDQwNzk2LDQwODA2LDQwODA3LDIwNzk2LDIwNzk1LDIyMjE2LDIyMjE4LDIyMjE3LDIzNDIzLDI0MDIwLDI0MDE4LDI0Mzk4LDI1MDg3LDI1ODkyLDI3NDAyLDI3NDg5LDI4NzUzLDI4NzYwLDI5NTY4LDI5OTI0LDMwMDkwLDMwMzE4LDMwMzE2LDMxMTU1LDMxODQwLDMxODM5LDMyODk0LDMyODkzLDMzMjQ3LDM1MTg2LDM1MTgzLDM1MzI0LDM1NzEyLDM2MTE4LDM2MTE5LDM2NDk3LDM2NDk5LDM2NzA1LDM3MTkyLDM3OTU2LDM3OTY5LDM3OTcwLDM4NzE3LDM4NzE4LDM4ODUxLDM4ODQ5LDM5MDE5LDM5MjUzLDM5NTA5LDM5NTAxLDM5NjM0LDM5NzA2LDQwMDA5LDM5OTg1LDM5OTk4LDM5OTk1LDQwNDAzLDQwNDA3LDQwNzU2LDQwODEyLDQwODEwLDQwODUyLDIyMjIwLDI0MDIyLDI1MDg4LDI1ODkxLDI1ODk5LDI1ODk4LDI2MzQ4LDI3NDA4LDI5OTE0LDMxNDM0LDMxODQ0LDMxODQzLDMxODQ1LDMyNDAzLDMyNDA2LDMyNDA0LDMzMjUwLDM0MzYwLDM0MzY3LDM0ODY1LDM1NzIyLDM3MDA4LDM3MDA3LDM3OTg3LDM3OTg0LDM3OTg4LDM4NzYwLDM5MDIzLDM5MjYwLDM5NTE0LDM5NTE1LDM5NTExLDM5NjM1LDM5NjM2LDM5NjMzLDQwMDIwLDQwMDIzLDQwMDIyLDQwNDIxLDQwNjA3LDQwNjkyLDIyMjI1LDIyNzYxLDI1OTAwLDI4NzY2LDMwMzIxLDMwMzIyLDMwNjc5LDMyNTkyLDMyNjQ4LDM0ODcwLDM0ODczLDM0OTE0LDM1NzMxLDM1NzMwLDM1NzM0LDMzMzk5LDM2MTIzLDM3MzEyLDM3OTk0LDM4NzIyLDM4NzI4LDM4NzI0LDM4ODU0LDM5MDI0LDM5NTE5LDM5NzE0LDM5NzY4LDQwMDMxLDQwNDQxLDQwNDQyLDQwNTcyLDQwNTczLDQwNzExLDQwODIzLDQwODE4LDI0MzA3LDI3NDE0LDI4NzcxLDMxODUyLDMxODU0LDM0ODc1LDM1MjY0LDM2NTEzLDM3MzEzLDM4MDAyLDM4MDAwLDM5MDI1LDM5MjYyLDM5NjM4LDM5NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIwMTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwxNzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAsMTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcsMTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYsMTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGwsNjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMzMSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIxMzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcxLDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIyODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIzNjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQzLDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIyMzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIyOTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIzNTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgyLDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMwLDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMzNDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIyLDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIxNTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIxNTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIxNTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUxLDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkzLDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIzLDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTExLDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5MzgyLDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkxLDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAwLDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMzNDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAwLDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUzLDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcwLDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIxMzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIxNjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIxNjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgxLDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAwLDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIyOTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIzMzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIzNzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUyLDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUzLDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzExLDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMzNDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMzNDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMzNDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODExLDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIzLDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIwNDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIwNDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIxMzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjkyLDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUzLDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIyODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIzMDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIzMDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUzLDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIzLDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUzLDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIyLDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMxMTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMxMzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMxODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIzLDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMzNDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMzNTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMzNTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIxLDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIwNDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIwNDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIwNDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQyLDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIxNzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIxNzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIyNDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUwLDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEzLDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMyLDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2NjgyLDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQxLDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3OTk4LDI4MDA3LDI4MDAwLDI4MDU1LDI4MDE2LDI4MDI4LDI3OTk5LDI4MDM0LDI4MDU2LDI3OTUxLDI4MDA4LDI4MDQzLDI4MDMwLDI4MDMyLDI4MDM2LDI3OTI2LDI4MDM1LDI4MDI3LDI4MDI5LDI4MDIxLDI4MDQ4LDI4ODkyLDI4ODgzLDI4ODgxLDI4ODkzLDI4ODc1LDMyNTY5LDI4ODk4LDI4ODg3LDI4ODgyLDI4ODk0LDI4ODk2LDI4ODg0LDI4ODc3LDI4ODY5LDI4ODcwLDI4ODcxLDI4ODkwLDI4ODc4LDI4ODk3LDI5MjUwLDI5MzA0LDI5MzAzLDI5MzAyLDI5NDQwLDI5NDM0LDI5NDI4LDI5NDM4LDI5NDMwLDI5NDI3LDI5NDM1LDI5NDQxLDI5NjUxLDI5NjU3LDI5NjY5LDI5NjU0LDI5NjI4LDI5NjcxLDI5NjY3LDI5NjczLDI5NjYwLDI5NjUwLDI5NjU5LDI5NjUyLDI5NjYxLDI5NjU4LDI5NjU1LDI5NjU2LDI5NjcyLDI5OTE4LDI5OTE5LDI5OTQwLDI5OTQxLDI5OTg1LDMwMDQzLDMwMDQ3LDMwMTI4LDMwMTQ1LDMwMTM5LDMwMTQ4LDMwMTQ0LDMwMTQzLDMwMTM0LDMwMTM4LDMwMzQ2LDMwNDA5LDMwNDkzLDMwNDkxLDMwNDgwLDMwNDgzLDMwNDgyLDMwNDk5LDMwNDgxLDMwNDg1LDMwNDg5LDMwNDkwLDMwNDk4LDMwNTAzLDMwNzU1LDMwNzY0LDMwNzU0LDMwNzczLDMwNzY3LDMwNzYwLDMwNzY2LDMwNzYzLDMwNzUzLDMwNzYxLDMwNzcxLDMwNzYyLDMwNzY5LDMxMDYwLDMxMDY3LDMxMDU1LDMxMDY4LDMxMDU5LDMxMDU4LDMxMDU3LDMxMjExLDMxMjEyLDMxMjAwLDMxMjE0LDMxMjEzLDMxMjEwLDMxMTk2LDMxMTk4LDMxMTk3LDMxMzY2LDMxMzY5LDMxMzY1LDMxMzcxLDMxMzcyLDMxMzcwLDMxMzY3LDMxNDQ4LDMxNTA0LDMxNDkyLDMxNTA3LDMxNDkzLDMxNTAzLDMxNDk2LDMxNDk4LDMxNTAyLDMxNDk3LDMxNTA2LDMxODc2LDMxODg5LDMxODgyLDMxODg0LDMxODgwLDMxODg1LDMxODc3LDMyMDMwLDMyMDI5LDMyMDE3LDMyMDE0LDMyMDI0LDMyMDIyLDMyMDE5LDMyMDMxLDMyMDE4LDMyMDE1LDMyMDEyLDMyNjA0LDMyNjA5LDMyNjA2LDMyNjA4LDMyNjA1LDMyNjAzLDMyNjYyLDMyNjU4LDMyNzA3LDMyNzA2LDMyNzA0LDMyNzkwLDMyODMwLDMyODI1LDMzMDE4LDMzMDEwLDMzMDE3LDMzMDEzLDMzMDI1LDMzMDE5LDMzMDI0LDMzMjgxLDMzMzI3LDMzMzE3LDMzNTg3LDMzNTgxLDMzNjA0LDMzNTYxLDMzNjE3LDMzNTczLDMzNjIyLDMzNTk5LDMzNjAxLDMzNTc0LDMzNTY0LDMzNTcwLDMzNjAyLDMzNjE0LDMzNTYzLDMzNTc4LDMzNTQ0LDMzNTk2LDMzNjEzLDMzNTU4LDMzNTcyLDMzNTY4LDMzNTkxLDMzNTgzLDMzNTc3LDMzNjA3LDMzNjA1LDMzNjEyLDMzNjE5LDMzNTY2LDMzNTgwLDMzNjExLDMzNTc1LDMzNjA4LDM0Mzg3LDM0Mzg2LDM0NDY2LDM0NDcyLDM0NDU0LDM0NDQ1LDM0NDQ5LDM0NDYyLDM0NDM5LDM0NDU1LDM0NDM4LDM0NDQzLDM0NDU4LDM0NDM3LDM0NDY5LDM0NDU3LDM0NDY1LDM0NDcxLDM0NDUzLDM0NDU2LDM0NDQ2LDM0NDYxLDM0NDQ4LDM0NDUyLDM0ODgzLDM0ODg0LDM0OTI1LDM0OTMzLDM0OTM0LDM0OTMwLDM0OTQ0LDM0OTI5LDM0OTQzLDM0OTI3LDM0OTQ3LDM0OTQyLDM0OTMyLDM0OTQwLDM1MzQ2LDM1OTExLDM1OTI3LDM1OTYzLDM2MDA0LDM2MDAzLDM2MjE0LDM2MjE2LDM2Mjc3LDM2Mjc5LDM2Mjc4LDM2NTYxLDM2NTYzLDM2ODYyLDM2ODUzLDM2ODY2LDM2ODYzLDM2ODU5LDM2ODY4LDM2ODYwLDM2ODU0LDM3MDc4LDM3MDg4LDM3MDgxLDM3MDgyLDM3MDkxLDM3MDg3LDM3MDkzLDM3MDgwLDM3MDgzLDM3MDc5LDM3MDg0LDM3MDkyLDM3MjAwLDM3MTk4LDM3MTk5LDM3MzMzLDM3MzQ2LDM3MzM4LDM4NDkyLDM4NDk1LDM4NTg4LDM5MTM5LDM5NjQ3LDM5NzI3LDIwMDk1LDIwNTkyLDIwNTg2LDIwNTc3LDIwNTc0LDIwNTc2LDIwNTYzLDIwNTU1LDIwNTczLDIwNTk0LDIwNTUyLDIwNTU3LDIwNTQ1LDIwNTcxLDIwNTU0LDIwNTc4LDIwNTAxLDIwNTQ5LDIwNTc1LDIwNTg1LDIwNTg3LDIwNTc5LDIwNTgwLDIwNTUwLDIwNTQ0LDIwNTkwLDIwNTk1LDIwNTY3LDIwNTYxLDIwOTQ0LDIxMDk5LDIxMTAxLDIxMTAwLDIxMTAyLDIxMjA2LDIxMjAzLDIxMjkzLDIxNDA0LDIxODc3LDIxODc4LDIxODIwLDIxODM3LDIxODQwLDIxODEyLDIxODAyLDIxODQxLDIxODU4LDIxODE0LDIxODEzLDIxODA4LDIxODQyLDIxODI5LDIxNzcyLDIxODEwLDIxODYxLDIxODM4LDIxODE3LDIxODMyLDIxODA1LDIxODE5LDIxODI0LDIxODM1LDIyMjgyLDIyMjc5LDIyNTIzLDIyNTQ4LDIyNDk4LDIyNTE4LDIyNDkyLDIyNTE2LDIyNTI4LDIyNTA5LDIyNTI1LDIyNTM2LDIyNTIwLDIyNTM5LDIyNTE1LDIyNDc5LDIyNTM1LDIyNTEwLDIyNDk5LDIyNTE0LDIyNTAxLDIyNTA4LDIyNDk3LDIyNTQyLDIyNTI0LDIyNTQ0LDIyNTAzLDIyNTI5LDIyNTQwLDIyNTEzLDIyNTA1LDIyNTEyLDIyNTQxLDIyNTMyLDIyODc2LDIzMTM2LDIzMTI4LDIzMTI1LDIzMTQzLDIzMTM0LDIzMDk2LDIzMDkzLDIzMTQ5LDIzMTIwLDIzMTM1LDIzMTQxLDIzMTQ4LDIzMTIzLDIzMTQwLDIzMTI3LDIzMTA3LDIzMTMzLDIzMTIyLDIzMTA4LDIzMTMxLDIzMTEyLDIzMTgyLDIzMTAyLDIzMTE3LDIzMDk3LDIzMTE2LDIzMTUyLDIzMTQ1LDIzMTExLDIzMTIxLDIzMTI2LDIzMTA2LDIzMTMyLDIzNDEwLDIzNDA2LDIzNDg5LDIzNDg4LDIzNjQxLDIzODM4LDIzODE5LDIzODM3LDIzODM0LDIzODQwLDIzODIwLDIzODQ4LDIzODIxLDIzODQ2LDIzODQ1LDIzODIzLDIzODU2LDIzODI2LDIzODQzLDIzODM5LDIzODU0LDI0MTI2LDI0MTE2LDI0MjQxLDI0MjQ0LDI0MjQ5LDI0MjQyLDI0MjQzLDI0Mzc0LDI0Mzc2LDI0NDc1LDI0NDcwLDI0NDc5LDI0NzE0LDI0NzIwLDI0NzEwLDI0NzY2LDI0NzUyLDI0NzYyLDI0Nzg3LDI0Nzg4LDI0NzgzLDI0ODA0LDI0NzkzLDI0Nzk3LDI0Nzc2LDI0NzUzLDI0Nzk1LDI0NzU5LDI0Nzc4LDI0NzY3LDI0NzcxLDI0NzgxLDI0NzY4LDI1Mzk0LDI1NDQ1LDI1NDgyLDI1NDc0LDI1NDY5LDI1NTMzLDI1NTAyLDI1NTE3LDI1NTAxLDI1NDk1LDI1NTE1LDI1NDg2LDI1NDU1LDI1NDc5LDI1NDg4LDI1NDU0LDI1NTE5LDI1NDYxLDI1NTAwLDI1NDUzLDI1NTE4LDI1NDY4LDI1NTA4LDI1NDAzLDI1NTAzLDI1NDY0LDI1NDc3LDI1NDczLDI1NDg5LDI1NDg1LDI1NDU2LDI1OTM5LDI2MDYxLDI2MjEzLDI2MjA5LDI2MjAzLDI2MjAxLDI2MjA0LDI2MjEwLDI2MzkyLDI2NzQ1LDI2NzU5LDI2NzY4LDI2NzgwLDI2NzMzLDI2NzM0LDI2Nzk4LDI2Nzk1LDI2OTY2LDI2NzM1LDI2Nzg3LDI2Nzk2LDI2NzkzLDI2NzQxLDI2NzQwLDI2ODAyLDI2NzY3LDI2NzQzLDI2NzcwLDI2NzQ4LDI2NzMxLDI2NzM4LDI2Nzk0LDI2NzUyLDI2NzM3LDI2NzUwLDI2Nzc5LDI2Nzc0LDI2NzYzLDI2Nzg0LDI2NzYxLDI2Nzg4LDI2NzQ0LDI2NzQ3LDI2NzY5LDI2NzY0LDI2NzYyLDI2NzQ5LDI3NDQ2LDI3NDQzLDI3NDQ3LDI3NDQ4LDI3NTM3LDI3NTM1LDI3NTMzLDI3NTM0LDI3NTMyLDI3NjkwLDI4MDk2LDI4MDc1LDI4MDg0LDI4MDgzLDI4Mjc2LDI4MDc2LDI4MTM3LDI4MTMwLDI4MDg3LDI4MTUwLDI4MTE2LDI4MTYwLDI4MTA0LDI4MTI4LDI4MTI3LDI4MTE4LDI4MDk0LDI4MTMzLDI4MTI0LDI4MTI1LDI4MTIzLDI4MTQ4LDI4MTA2LDI4MDkzLDI4MTQxLDI4MTQ0LDI4MDkwLDI4MTE3LDI4MDk4LDI4MTExLDI4MTA1LDI4MTEyLDI4MTQ2LDI4MTE1LDI4MTU3LDI4MTE5LDI4MTA5LDI4MTMxLDI4MDkxLDI4OTIyLDI4OTQxLDI4OTE5LDI4OTUxLDI4OTE2LDI4OTQwLDI4OTEyLDI4OTMyLDI4OTE1LDI4OTQ0LDI4OTI0LDI4OTI3LDI4OTM0LDI4OTQ3LDI4OTI4LDI4OTIwLDI4OTE4LDI4OTM5LDI4OTMwLDI4OTQyLDI5MzEwLDI5MzA3LDI5MzA4LDI5MzExLDI5NDY5LDI5NDYzLDI5NDQ3LDI5NDU3LDI5NDY0LDI5NDUwLDI5NDQ4LDI5NDM5LDI5NDU1LDI5NDcwLDI5NTc2LDI5Njg2LDI5Njg4LDI5Njg1LDI5NzAwLDI5Njk3LDI5NjkzLDI5NzAzLDI5Njk2LDI5NjkwLDI5NjkyLDI5Njk1LDI5NzA4LDI5NzA3LDI5Njg0LDI5NzA0LDMwMDUyLDMwMDUxLDMwMTU4LDMwMTYyLDMwMTU5LDMwMTU1LDMwMTU2LDMwMTYxLDMwMTYwLDMwMzUxLDMwMzQ1LDMwNDE5LDMwNTIxLDMwNTExLDMwNTA5LDMwNTEzLDMwNTE0LDMwNTE2LDMwNTE1LDMwNTI1LDMwNTAxLDMwNTIzLDMwNTE3LDMwNzkyLDMwODAyLDMwNzkzLDMwNzk3LDMwNzk0LDMwNzk2LDMwNzU4LDMwNzg5LDMwODAwLDMxMDc2LDMxMDc5LDMxMDgxLDMxMDgyLDMxMDc1LDMxMDgzLDMxMDczLDMxMTYzLDMxMjI2LDMxMjI0LDMxMjIyLDMxMjIzLDMxMzc1LDMxMzgwLDMxMzc2LDMxNTQxLDMxNTU5LDMxNTQwLDMxNTI1LDMxNTM2LDMxNTIyLDMxNTI0LDMxNTM5LDMxNTEyLDMxNTMwLDMxNTE3LDMxNTM3LDMxNTMxLDMxNTMzLDMxNTM1LDMxNTM4LDMxNTQ0LDMxNTE0LDMxNTIzLDMxODkyLDMxODk2LDMxODk0LDMxOTA3LDMyMDUzLDMyMDYxLDMyMDU2LDMyMDU0LDMyMDU4LDMyMDY5LDMyMDQ0LDMyMDQxLDMyMDY1LDMyMDcxLDMyMDYyLDMyMDYzLDMyMDc0LDMyMDU5LDMyMDQwLDMyNjExLDMyNjYxLDMyNjY4LDMyNjY5LDMyNjY3LDMyNzE0LDMyNzE1LDMyNzE3LDMyNzIwLDMyNzIxLDMyNzExLDMyNzE5LDMyNzEzLDMyNzk5LDMyNzk4LDMyNzk1LDMyODM5LDMyODM1LDMyODQwLDMzMDQ4LDMzMDYxLDMzMDQ5LDMzMDUxLDMzMDY5LDMzMDU1LDMzMDY4LDMzMDU0LDMzMDU3LDMzMDQ1LDMzMDYzLDMzMDUzLDMzMDU4LDMzMjk3LDMzMzM2LDMzMzMxLDMzMzM4LDMzMzMyLDMzMzMwLDMzMzk2LDMzNjgwLDMzNjk5LDMzNzA0LDMzNjc3LDMzNjU4LDMzNjUxLDMzNzAwLDMzNjUyLDMzNjc5LDMzNjY1LDMzNjg1LDMzNjg5LDMzNjUzLDMzNjg0LDMzNzA1LDMzNjYxLDMzNjY3LDMzNjc2LDMzNjkzLDMzNjkxLDMzNzA2LDMzNjc1LDMzNjYyLDMzNzAxLDMzNzExLDMzNjcyLDMzNjg3LDMzNzEyLDMzNjYzLDMzNzAyLDMzNjcxLDMzNzEwLDMzNjU0LDMzNjkwLDM0MzkzLDM0MzkwLDM0NDk1LDM0NDg3LDM0NDk4LDM0NDk3LDM0NTAxLDM0NDkwLDM0NDgwLDM0NTA0LDM0NDg5LDM0NDgzLDM0NDg4LDM0NTA4LDM0NDg0LDM0NDkxLDM0NDkyLDM0NDk5LDM0NDkzLDM0NDk0LDM0ODk4LDM0OTUzLDM0OTY1LDM0OTg0LDM0OTc4LDM0OTg2LDM0OTcwLDM0OTYxLDM0OTc3LDM0OTc1LDM0OTY4LDM0OTgzLDM0OTY5LDM0OTcxLDM0OTY3LDM0OTgwLDM0OTg4LDM0OTU2LDM0OTYzLDM0OTU4LDM1MjAyLDM1Mjg2LDM1Mjg5LDM1Mjg1LDM1Mzc2LDM1MzY3LDM1MzcyLDM1MzU4LDM1ODk3LDM1ODk5LDM1OTMyLDM1OTMzLDM1OTY1LDM2MDA1LDM2MjIxLDM2MjE5LDM2MjE3LDM2Mjg0LDM2MjkwLDM2MjgxLDM2Mjg3LDM2Mjg5LDM2NTY4LDM2NTc0LDM2NTczLDM2NTcyLDM2NTY3LDM2NTc2LDM2NTc3LDM2OTAwLDM2ODc1LDM2ODgxLDM2ODkyLDM2ODc2LDM2ODk3LDM3MTAzLDM3MDk4LDM3MTA0LDM3MTA4LDM3MTA2LDM3MTA3LDM3MDc2LDM3MDk5LDM3MTAwLDM3MDk3LDM3MjA2LDM3MjA4LDM3MjEwLDM3MjAzLDM3MjA1LDM3MzU2LDM3MzY0LDM3MzYxLDM3MzYzLDM3MzY4LDM3MzQ4LDM3MzY5LDM3MzU0LDM3MzU1LDM3MzY3LDM3MzUyLDM3MzU4LDM4MjY2LDM4Mjc4LDM4MjgwLDM4NTI0LDM4NTA5LDM4NTA3LDM4NTEzLDM4NTExLDM4NTkxLDM4NzYyLDM4OTE2LDM5MTQxLDM5MzE5LDIwNjM1LDIwNjI5LDIwNjI4LDIwNjM4LDIwNjE5LDIwNjQzLDIwNjExLDIwNjIwLDIwNjIyLDIwNjM3LDIwNTg0LDIwNjM2LDIwNjI2LDIwNjEwLDIwNjE1LDIwODMxLDIwOTQ4LDIxMjY2LDIxMjY1LDIxNDEyLDIxNDE1LDIxOTA1LDIxOTI4LDIxOTI1LDIxOTMzLDIxODc5LDIyMDg1LDIxOTIyLDIxOTA3LDIxODk2LDIxOTAzLDIxOTQxLDIxODg5LDIxOTIzLDIxOTA2LDIxOTI0LDIxODg1LDIxOTAwLDIxOTI2LDIxODg3LDIxOTA5LDIxOTIxLDIxOTAyLDIyMjg0LDIyNTY5LDIyNTgzLDIyNTUzLDIyNTU4LDIyNTY3LDIyNTYzLDIyNTY4LDIyNTE3LDIyNjAwLDIyNTY1LDIyNTU2LDIyNTU1LDIyNTc5LDIyNTkxLDIyNTgyLDIyNTc0LDIyNTg1LDIyNTg0LDIyNTczLDIyNTcyLDIyNTg3LDIyODgxLDIzMjE1LDIzMTg4LDIzMTk5LDIzMTYyLDIzMjAyLDIzMTk4LDIzMTYwLDIzMjA2LDIzMTY0LDIzMjA1LDIzMjEyLDIzMTg5LDIzMjE0LDIzMDk1LDIzMTcyLDIzMTc4LDIzMTkxLDIzMTcxLDIzMTc5LDIzMjA5LDIzMTYzLDIzMTY1LDIzMTgwLDIzMTk2LDIzMTgzLDIzMTg3LDIzMTk3LDIzNTMwLDIzNTAxLDIzNDk5LDIzNTA4LDIzNTA1LDIzNDk4LDIzNTAyLDIzNTY0LDIzNjAwLDIzODYzLDIzODc1LDIzOTE1LDIzODczLDIzODgzLDIzODcxLDIzODYxLDIzODg5LDIzODg2LDIzODkzLDIzODU5LDIzODY2LDIzODkwLDIzODY5LDIzODU3LDIzODk3LDIzODc0LDIzODY1LDIzODgxLDIzODY0LDIzODY4LDIzODU4LDIzODYyLDIzODcyLDIzODc3LDI0MTMyLDI0MTI5LDI0NDA4LDI0NDg2LDI0NDg1LDI0NDkxLDI0Nzc3LDI0NzYxLDI0NzgwLDI0ODAyLDI0NzgyLDI0NzcyLDI0ODUyLDI0ODE4LDI0ODQyLDI0ODU0LDI0ODM3LDI0ODIxLDI0ODUxLDI0ODI0LDI0ODI4LDI0ODMwLDI0NzY5LDI0ODM1LDI0ODU2LDI0ODYxLDI0ODQ4LDI0ODMxLDI0ODM2LDI0ODQzLDI1MTYyLDI1NDkyLDI1NTIxLDI1NTIwLDI1NTUwLDI1NTczLDI1NTc2LDI1NTgzLDI1NTM5LDI1NzU3LDI1NTg3LDI1NTQ2LDI1NTY4LDI1NTkwLDI1NTU3LDI1NTg2LDI1NTg5LDI1Njk3LDI1NTY3LDI1NTM0LDI1NTY1LDI1NTY0LDI1NTQwLDI1NTYwLDI1NTU1LDI1NTM4LDI1NTQzLDI1NTQ4LDI1NTQ3LDI1NTQ0LDI1NTg0LDI1NTU5LDI1NTYxLDI1OTA2LDI1OTU5LDI1OTYyLDI1OTU2LDI1OTQ4LDI1OTYwLDI1OTU3LDI1OTk2LDI2MDEzLDI2MDE0LDI2MDMwLDI2MDY0LDI2MDY2LDI2MjM2LDI2MjIwLDI2MjM1LDI2MjQwLDI2MjI1LDI2MjMzLDI2MjE4LDI2MjI2LDI2MzY5LDI2ODkyLDI2ODM1LDI2ODg0LDI2ODQ0LDI2OTIyLDI2ODYwLDI2ODU4LDI2ODY1LDI2ODk1LDI2ODM4LDI2ODcxLDI2ODU5LDI2ODUyLDI2ODcwLDI2ODk5LDI2ODk2LDI2ODY3LDI2ODQ5LDI2ODg3LDI2ODI4LDI2ODg4LDI2OTkyLDI2ODA0LDI2ODk3LDI2ODYzLDI2ODIyLDI2OTAwLDI2ODcyLDI2ODMyLDI2ODc3LDI2ODc2LDI2ODU2LDI2ODkxLDI2ODkwLDI2OTAzLDI2ODMwLDI2ODI0LDI2ODQ1LDI2ODQ2LDI2ODU0LDI2ODY4LDI2ODMzLDI2ODg2LDI2ODM2LDI2ODU3LDI2OTAxLDI2OTE3LDI2ODIzLDI3NDQ5LDI3NDUxLDI3NDU1LDI3NDUyLDI3NTQwLDI3NTQzLDI3NTQ1LDI3NTQxLDI3NTgxLDI3NjMyLDI3NjM0LDI3NjM1LDI3Njk2LDI4MTU2LDI4MjMwLDI4MjMxLDI4MTkxLDI4MjMzLDI4Mjk2LDI4MjIwLDI4MjIxLDI4MjI5LDI4MjU4LDI4MjAzLDI4MjIzLDI4MjI1LDI4MjUzLDI4Mjc1LDI4MTg4LDI4MjExLDI4MjM1LDI4MjI0LDI4MjQxLDI4MjE5LDI4MTYzLDI4MjA2LDI4MjU0LDI4MjY0LDI4MjUyLDI4MjU3LDI4MjA5LDI4MjAwLDI4MjU2LDI4MjczLDI4MjY3LDI4MjE3LDI4MTk0LDI4MjA4LDI4MjQzLDI4MjYxLDI4MTk5LDI4MjgwLDI4MjYwLDI4Mjc5LDI4MjQ1LDI4MjgxLDI4MjQyLDI4MjYyLDI4MjEzLDI4MjE0LDI4MjUwLDI4OTYwLDI4OTU4LDI4OTc1LDI4OTIzLDI4OTc0LDI4OTc3LDI4OTYzLDI4OTY1LDI4OTYyLDI4OTc4LDI4OTU5LDI4OTY4LDI4OTg2LDI4OTU1LDI5MjU5LDI5Mjc0LDI5MzIwLDI5MzIxLDI5MzE4LDI5MzE3LDI5MzIzLDI5NDU4LDI5NDUxLDI5NDg4LDI5NDc0LDI5NDg5LDI5NDkxLDI5NDc5LDI5NDkwLDI5NDg1LDI5NDc4LDI5NDc1LDI5NDkzLDI5NDUyLDI5NzQyLDI5NzQwLDI5NzQ0LDI5NzM5LDI5NzE4LDI5NzIyLDI5NzI5LDI5NzQxLDI5NzQ1LDI5NzMyLDI5NzMxLDI5NzI1LDI5NzM3LDI5NzI4LDI5NzQ2LDI5OTQ3LDI5OTk5LDMwMDYzLDMwMDYwLDMwMTgzLDMwMTcwLDMwMTc3LDMwMTgyLDMwMTczLDMwMTc1LDMwMTgwLDMwMTY3LDMwMzU3LDMwMzU0LDMwNDI2LDMwNTM0LDMwNTM1LDMwNTMyLDMwNTQxLDMwNTMzLDMwNTM4LDMwNTQyLDMwNTM5LDMwNTQwLDMwNjg2LDMwNzAwLDMwODE2LDMwODIwLDMwODIxLDMwODEyLDMwODI5LDMwODMzLDMwODI2LDMwODMwLDMwODMyLDMwODI1LDMwODI0LDMwODE0LDMwODE4LDMxMDkyLDMxMDkxLDMxMDkwLDMxMDg4LDMxMjM0LDMxMjQyLDMxMjM1LDMxMjQ0LDMxMjM2LDMxMzg1LDMxNDYyLDMxNDYwLDMxNTYyLDMxNTQ3LDMxNTU2LDMxNTYwLDMxNTY0LDMxNTY2LDMxNTUyLDMxNTc2LDMxNTU3LDMxOTA2LDMxOTAyLDMxOTEyLDMxOTA1LDMyMDg4LDMyMTExLDMyMDk5LDMyMDgzLDMyMDg2LDMyMTAzLDMyMTA2LDMyMDc5LDMyMTA5LDMyMDkyLDMyMTA3LDMyMDgyLDMyMDg0LDMyMTA1LDMyMDgxLDMyMDk1LDMyMDc4LDMyNTc0LDMyNTc1LDMyNjEzLDMyNjE0LDMyNjc0LDMyNjcyLDMyNjczLDMyNzI3LDMyODQ5LDMyODQ3LDMyODQ4LDMzMDIyLDMyOTgwLDMzMDkxLDMzMDk4LDMzMTA2LDMzMTAzLDMzMDk1LDMzMDg1LDMzMTAxLDMzMDgyLDMzMjU0LDMzMjYyLDMzMjcxLDMzMjcyLDMzMjczLDMzMjg0LDMzMzQwLDMzMzQxLDMzMzQzLDMzMzk3LDMzNTk1LDMzNzQzLDMzNzg1LDMzODI3LDMzNzI4LDMzNzY4LDMzODEwLDMzNzY3LDMzNzY0LDMzNzg4LDMzNzgyLDMzODA4LDMzNzM0LDMzNzM2LDMzNzcxLDMzNzYzLDMzNzI3LDMzNzkzLDMzNzU3LDMzNzY1LDMzNzUyLDMzNzkxLDMzNzYxLDMzNzM5LDMzNzQyLDMzNzUwLDMzNzgxLDMzNzM3LDMzODAxLDMzODA3LDMzNzU4LDMzODA5LDMzNzk4LDMzNzMwLDMzNzc5LDMzNzQ5LDMzNzg2LDMzNzM1LDMzNzQ1LDMzNzcwLDMzODExLDMzNzMxLDMzNzcyLDMzNzc0LDMzNzMyLDMzNzg3LDMzNzUxLDMzNzYyLDMzODE5LDMzNzU1LDMzNzkwLDM0NTIwLDM0NTMwLDM0NTM0LDM0NTE1LDM0NTMxLDM0NTIyLDM0NTM4LDM0NTI1LDM0NTM5LDM0NTI0LDM0NTQwLDM0NTM3LDM0NTE5LDM0NTM2LDM0NTEzLDM0ODg4LDM0OTAyLDM0OTAxLDM1MDAyLDM1MDMxLDM1MDAxLDM1MDAwLDM1MDA4LDM1MDA2LDM0OTk4LDM1MDA0LDM0OTk5LDM1MDA1LDM0OTk0LDM1MDczLDM1MDE3LDM1MjIxLDM1MjI0LDM1MjIzLDM1MjkzLDM1MjkwLDM1MjkxLDM1NDA2LDM1NDA1LDM1Mzg1LDM1NDE3LDM1MzkyLDM1NDE1LDM1NDE2LDM1Mzk2LDM1Mzk3LDM1NDEwLDM1NDAwLDM1NDA5LDM1NDAyLDM1NDA0LDM1NDA3LDM1OTM1LDM1OTY5LDM1OTY4LDM2MDI2LDM2MDMwLDM2MDE2LDM2MDI1LDM2MDIxLDM2MjI4LDM2MjI0LDM2MjMzLDM2MzEyLDM2MzA3LDM2MzAxLDM2Mjk1LDM2MzEwLDM2MzE2LDM2MzAzLDM2MzA5LDM2MzEzLDM2Mjk2LDM2MzExLDM2MjkzLDM2NTkxLDM2NTk5LDM2NjAyLDM2NjAxLDM2NTgyLDM2NTkwLDM2NTgxLDM2NTk3LDM2NTgzLDM2NTg0LDM2NTk4LDM2NTg3LDM2NTkzLDM2NTg4LDM2NTk2LDM2NTg1LDM2OTA5LDM2OTE2LDM2OTExLDM3MTI2LDM3MTY0LDM3MTI0LDM3MTE5LDM3MTE2LDM3MTI4LDM3MTEzLDM3MTE1LDM3MTIxLDM3MTIwLDM3MTI3LDM3MTI1LDM3MTIzLDM3MjE3LDM3MjIwLDM3MjE1LDM3MjE4LDM3MjE2LDM3Mzc3LDM3Mzg2LDM3NDEzLDM3Mzc5LDM3NDAyLDM3NDE0LDM3MzkxLDM3Mzg4LDM3Mzc2LDM3Mzk0LDM3Mzc1LDM3MzczLDM3MzgyLDM3MzgwLDM3NDE1LDM3Mzc4LDM3NDA0LDM3NDEyLDM3NDAxLDM3Mzk5LDM3MzgxLDM3Mzk4LDM4MjY3LDM4Mjg1LDM4Mjg0LDM4Mjg4LDM4NTM1LDM4NTI2LDM4NTM2LDM4NTM3LDM4NTMxLDM4NTI4LDM4NTk0LDM4NjAwLDM4NTk1LDM4NjQxLDM4NjQwLDM4NzY0LDM4NzY4LDM4NzY2LDM4OTE5LDM5MDgxLDM5MTQ3LDQwMTY2LDQwNjk3LDIwMDk5LDIwMTAwLDIwMTUwLDIwNjY5LDIwNjcxLDIwNjc4LDIwNjU0LDIwNjc2LDIwNjgyLDIwNjYwLDIwNjgwLDIwNjc0LDIwNjU2LDIwNjczLDIwNjY2LDIwNjU3LDIwNjgzLDIwNjgxLDIwNjYyLDIwNjY0LDIwOTUxLDIxMTE0LDIxMTEyLDIxMTE1LDIxMTE2LDIxOTU1LDIxOTc5LDIxOTY0LDIxOTY4LDIxOTYzLDIxOTYyLDIxOTgxLDIxOTUyLDIxOTcyLDIxOTU2LDIxOTkzLDIxOTUxLDIxOTcwLDIxOTAxLDIxOTY3LDIxOTczLDIxOTg2LDIxOTc0LDIxOTYwLDIyMDAyLDIxOTY1LDIxOTc3LDIxOTU0LDIyMjkyLDIyNjExLDIyNjMyLDIyNjI4LDIyNjA3LDIyNjA1LDIyNjAxLDIyNjM5LDIyNjEzLDIyNjA2LDIyNjIxLDIyNjE3LDIyNjI5LDIyNjE5LDIyNTg5LDIyNjI3LDIyNjQxLDIyNzgwLDIzMjM5LDIzMjM2LDIzMjQzLDIzMjI2LDIzMjI0LDIzMjE3LDIzMjIxLDIzMjE2LDIzMjMxLDIzMjQwLDIzMjI3LDIzMjM4LDIzMjIzLDIzMjMyLDIzMjQyLDIzMjIwLDIzMjIyLDIzMjQ1LDIzMjI1LDIzMTg0LDIzNTEwLDIzNTEyLDIzNTEzLDIzNTgzLDIzNjAzLDIzOTIxLDIzOTA3LDIzODgyLDIzOTA5LDIzOTIyLDIzOTE2LDIzOTAyLDIzOTEyLDIzOTExLDIzOTA2LDI0MDQ4LDI0MTQzLDI0MTQyLDI0MTM4LDI0MTQxLDI0MTM5LDI0MjYxLDI0MjY4LDI0MjYyLDI0MjY3LDI0MjYzLDI0Mzg0LDI0NDk1LDI0NDkzLDI0ODIzLDI0OTA1LDI0OTA2LDI0ODc1LDI0OTAxLDI0ODg2LDI0ODgyLDI0ODc4LDI0OTAyLDI0ODc5LDI0OTExLDI0ODczLDI0ODk2LDI1MTIwLDM3MjI0LDI1MTIzLDI1MTI1LDI1MTI0LDI1NTQxLDI1NTg1LDI1NTc5LDI1NjE2LDI1NjE4LDI1NjA5LDI1NjMyLDI1NjM2LDI1NjUxLDI1NjY3LDI1NjMxLDI1NjIxLDI1NjI0LDI1NjU3LDI1NjU1LDI1NjM0LDI1NjM1LDI1NjEyLDI1NjM4LDI1NjQ4LDI1NjQwLDI1NjY1LDI1NjUzLDI1NjQ3LDI1NjEwLDI1NjI2LDI1NjY0LDI1NjM3LDI1NjM5LDI1NjExLDI1NTc1LDI1NjI3LDI1NjQ2LDI1NjMzLDI1NjE0LDI1OTY3LDI2MDAyLDI2MDY3LDI2MjQ2LDI2MjUyLDI2MjYxLDI2MjU2LDI2MjUxLDI2MjUwLDI2MjY1LDI2MjYwLDI2MjMyLDI2NDAwLDI2OTgyLDI2OTc1LDI2OTM2LDI2OTU4LDI2OTc4LDI2OTkzLDI2OTQzLDI2OTQ5LDI2OTg2LDI2OTM3LDI2OTQ2LDI2OTY3LDI2OTY5LDI3MDAyLDI2OTUyLDI2OTUzLDI2OTMzLDI2OTg4LDI2OTMxLDI2OTQxLDI2OTgxLDI2ODY0LDI3MDAwLDI2OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUyLDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQyLDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDExLDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMwODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMwODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMxMTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkwLDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAwLDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMyMTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMyMTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMyNjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIxLDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMzODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMzODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMzOTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQzLDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYwLDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUwLDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQyLDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMzLDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMxLDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIwNzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIwNzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIxMjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgwLDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUwLDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIzMjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIzMjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIzMjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUyLDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0MjcwLDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYzLDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcxLDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMwMjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkwLDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkxLDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMxMjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMxNjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMxNjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMyODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMzMTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMzOTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0MDAwLDMzOTQ5LDMzOTU5LDMzOTc5LDMzOTU0LDMzOTQwLDMzOTkxLDMzOTk2LDMzOTQ3LDMzOTYxLDMzOTY3LDMzOTYwLDM0MDA2LDMzOTQ0LDMzOTc0LDMzOTk5LDMzOTUyLDM0MDA3LDM0MDA0LDM0MDAyLDM0MDExLDMzOTY4LDMzOTM3LDM0NDAxLDM0NjExLDM0NTk1LDM0NjAwLDM0NjY3LDM0NjI0LDM0NjA2LDM0NTkwLDM0NTkzLDM0NTg1LDM0NTg3LDM0NjI3LDM0NjA0LDM0NjI1LDM0NjIyLDM0NjMwLDM0NTkyLDM0NjEwLDM0NjAyLDM0NjA1LDM0NjIwLDM0NTc4LDM0NjE4LDM0NjA5LDM0NjEzLDM0NjI2LDM0NTk4LDM0NTk5LDM0NjE2LDM0NTk2LDM0NTg2LDM0NjA4LDM0NTc3LDM1MDYzLDM1MDQ3LDM1MDU3LDM1MDU4LDM1MDY2LDM1MDcwLDM1MDU0LDM1MDY4LDM1MDYyLDM1MDY3LDM1MDU2LDM1MDUyLDM1MDUxLDM1MjI5LDM1MjMzLDM1MjMxLDM1MjMwLDM1MzA1LDM1MzA3LDM1MzA0LDM1NDk5LDM1NDgxLDM1NDY3LDM1NDc0LDM1NDcxLDM1NDc4LDM1OTAxLDM1OTQ0LDM1OTQ1LDM2MDUzLDM2MDQ3LDM2MDU1LDM2MjQ2LDM2MzYxLDM2MzU0LDM2MzUxLDM2MzY1LDM2MzQ5LDM2MzYyLDM2MzU1LDM2MzU5LDM2MzU4LDM2MzU3LDM2MzUwLDM2MzUyLDM2MzU2LDM2NjI0LDM2NjI1LDM2NjIyLDM2NjIxLDM3MTU1LDM3MTQ4LDM3MTUyLDM3MTU0LDM3MTUxLDM3MTQ5LDM3MTQ2LDM3MTU2LDM3MTUzLDM3MTQ3LDM3MjQyLDM3MjM0LDM3MjQxLDM3MjM1LDM3NTQxLDM3NTQwLDM3NDk0LDM3NTMxLDM3NDk4LDM3NTM2LDM3NTI0LDM3NTQ2LDM3NTE3LDM3NTQyLDM3NTMwLDM3NTQ3LDM3NDk3LDM3NTI3LDM3NTAzLDM3NTM5LDM3NjE0LDM3NTE4LDM3NTA2LDM3NTI1LDM3NTM4LDM3NTAxLDM3NTEyLDM3NTM3LDM3NTE0LDM3NTEwLDM3NTE2LDM3NTI5LDM3NTQzLDM3NTAyLDM3NTExLDM3NTQ1LDM3NTMzLDM3NTE1LDM3NDIxLDM4NTU4LDM4NTYxLDM4NjU1LDM4NzQ0LDM4NzgxLDM4Nzc4LDM4NzgyLDM4Nzg3LDM4Nzg0LDM4Nzg2LDM4Nzc5LDM4Nzg4LDM4Nzg1LDM4NzgzLDM4ODYyLDM4ODYxLDM4OTM0LDM5MDg1LDM5MDg2LDM5MTcwLDM5MTY4LDM5MTc1LDM5MzI1LDM5MzI0LDM5MzYzLDM5MzUzLDM5MzU1LDM5MzU0LDM5MzYyLDM5MzU3LDM5MzY3LDM5NjAxLDM5NjUxLDM5NjU1LDM5NzQyLDM5NzQzLDM5Nzc2LDM5Nzc3LDM5Nzc1LDQwMTc3LDQwMTc4LDQwMTgxLDQwNjE1LDIwNzM1LDIwNzM5LDIwNzg0LDIwNzI4LDIwNzQyLDIwNzQzLDIwNzI2LDIwNzM0LDIwNzQ3LDIwNzQ4LDIwNzMzLDIwNzQ2LDIxMTMxLDIxMTMyLDIxMjMzLDIxMjMxLDIyMDg4LDIyMDgyLDIyMDkyLDIyMDY5LDIyMDgxLDIyMDkwLDIyMDg5LDIyMDg2LDIyMTA0LDIyMTA2LDIyMDgwLDIyMDY3LDIyMDc3LDIyMDYwLDIyMDc4LDIyMDcyLDIyMDU4LDIyMDc0LDIyMjk4LDIyNjk5LDIyNjg1LDIyNzA1LDIyNjg4LDIyNjkxLDIyNzAzLDIyNzAwLDIyNjkzLDIyNjg5LDIyNzgzLDIzMjk1LDIzMjg0LDIzMjkzLDIzMjg3LDIzMjg2LDIzMjk5LDIzMjg4LDIzMjk4LDIzMjg5LDIzMjk3LDIzMzAzLDIzMzAxLDIzMzExLDIzNjU1LDIzOTYxLDIzOTU5LDIzOTY3LDIzOTU0LDIzOTcwLDIzOTU1LDIzOTU3LDIzOTY4LDIzOTY0LDIzOTY5LDIzOTYyLDIzOTY2LDI0MTY5LDI0MTU3LDI0MTYwLDI0MTU2LDMyMjQzLDI0MjgzLDI0Mjg2LDI0Mjg5LDI0MzkzLDI0NDk4LDI0OTcxLDI0OTYzLDI0OTUzLDI1MDA5LDI1MDA4LDI0OTk0LDI0OTY5LDI0OTg3LDI0OTc5LDI1MDA3LDI1MDA1LDI0OTkxLDI0OTc4LDI1MDAyLDI0OTkzLDI0OTczLDI0OTM0LDI1MDExLDI1MTMzLDI1NzEwLDI1NzEyLDI1NzUwLDI1NzYwLDI1NzMzLDI1NzUxLDI1NzU2LDI1NzQzLDI1NzM5LDI1NzM4LDI1NzQwLDI1NzYzLDI1NzU5LDI1NzA0LDI1Nzc3LDI1NzUyLDI1OTc0LDI1OTc4LDI1OTc3LDI1OTc5LDI2MDM0LDI2MDM1LDI2MjkzLDI2Mjg4LDI2MjgxLDI2MjkwLDI2Mjk1LDI2MjgyLDI2Mjg3LDI3MTM2LDI3MTQyLDI3MTU5LDI3MTA5LDI3MTI4LDI3MTU3LDI3MTIxLDI3MTA4LDI3MTY4LDI3MTM1LDI3MTE2LDI3MTA2LDI3MTYzLDI3MTY1LDI3MTM0LDI3MTc1LDI3MTIyLDI3MTE4LDI3MTU2LDI3MTI3LDI3MTExLDI3MjAwLDI3MTQ0LDI3MTEwLDI3MTMxLDI3MTQ5LDI3MTMyLDI3MTE1LDI3MTQ1LDI3MTQwLDI3MTYwLDI3MTczLDI3MTUxLDI3MTI2LDI3MTc0LDI3MTQzLDI3MTI0LDI3MTU4LDI3NDczLDI3NTU3LDI3NTU1LDI3NTU0LDI3NTU4LDI3NjQ5LDI3NjQ4LDI3NjQ3LDI3NjUwLDI4NDgxLDI4NDU0LDI4NTQyLDI4NTUxLDI4NjE0LDI4NTYyLDI4NTU3LDI4NTUzLDI4NTU2LDI4NTE0LDI4NDk1LDI4NTQ5LDI4NTA2LDI4NTY2LDI4NTM0LDI4NTI0LDI4NTQ2LDI4NTAxLDI4NTMwLDI4NDk4LDI4NDk2LDI4NTAzLDI4NTY0LDI4NTYzLDI4NTA5LDI4NDE2LDI4NTEzLDI4NTIzLDI4NTQxLDI4NTE5LDI4NTYwLDI4NDk5LDI4NTU1LDI4NTIxLDI4NTQzLDI4NTY1LDI4NTE1LDI4NTM1LDI4NTIyLDI4NTM5LDI5MTA2LDI5MTAzLDI5MDgzLDI5MTA0LDI5MDg4LDI5MDgyLDI5MDk3LDI5MTA5LDI5MDg1LDI5MDkzLDI5MDg2LDI5MDkyLDI5MDg5LDI5MDk4LDI5MDg0LDI5MDk1LDI5MTA3LDI5MzM2LDI5MzM4LDI5NTI4LDI5NTIyLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTMzLDI5NTMxLDI5NTM3LDI5NTMwLDI5NTI5LDI5NTM4LDI5ODMxLDI5ODMzLDI5ODM0LDI5ODMwLDI5ODI1LDI5ODIxLDI5ODI5LDI5ODMyLDI5ODIwLDI5ODE3LDI5OTYwLDI5OTU5LDMwMDc4LDMwMjQ1LDMwMjM4LDMwMjMzLDMwMjM3LDMwMjM2LDMwMjQzLDMwMjM0LDMwMjQ4LDMwMjM1LDMwMzY0LDMwMzY1LDMwMzY2LDMwMzYzLDMwNjA1LDMwNjA3LDMwNjAxLDMwNjAwLDMwOTI1LDMwOTA3LDMwOTI3LDMwOTI0LDMwOTI5LDMwOTI2LDMwOTMyLDMwOTIwLDMwOTE1LDMwOTE2LDMwOTIxLDMxMTMwLDMxMTM3LDMxMTM2LDMxMTMyLDMxMTM4LDMxMTMxLDI3NTEwLDMxMjg5LDMxNDEwLDMxNDEyLDMxNDExLDMxNjcxLDMxNjkxLDMxNjc4LDMxNjYwLDMxNjk0LDMxNjYzLDMxNjczLDMxNjkwLDMxNjY5LDMxOTQxLDMxOTQ0LDMxOTQ4LDMxOTQ3LDMyMjQ3LDMyMjE5LDMyMjM0LDMyMjMxLDMyMjE1LDMyMjI1LDMyMjU5LDMyMjUwLDMyMjMwLDMyMjQ2LDMyMjQxLDMyMjQwLDMyMjM4LDMyMjIzLDMyNjMwLDMyNjg0LDMyNjg4LDMyNjg1LDMyNzQ5LDMyNzQ3LDMyNzQ2LDMyNzQ4LDMyNzQyLDMyNzQ0LDMyODY4LDMyODcxLDMzMTg3LDMzMTgzLDMzMTgyLDMzMTczLDMzMTg2LDMzMTc3LDMzMTc1LDMzMzAyLDMzMzU5LDMzMzYzLDMzMzYyLDMzMzYwLDMzMzU4LDMzMzYxLDM0MDg0LDM0MTA3LDM0MDYzLDM0MDQ4LDM0MDg5LDM0MDYyLDM0MDU3LDM0MDYxLDM0MDc5LDM0MDU4LDM0MDg3LDM0MDc2LDM0MDQzLDM0MDkxLDM0MDQyLDM0MDU2LDM0MDYwLDM0MDM2LDM0MDkwLDM0MDM0LDM0MDY5LDM0MDM5LDM0MDI3LDM0MDM1LDM0MDQ0LDM0MDY2LDM0MDI2LDM0MDI1LDM0MDcwLDM0MDQ2LDM0MDg4LDM0MDc3LDM0MDk0LDM0MDUwLDM0MDQ1LDM0MDc4LDM0MDM4LDM0MDk3LDM0MDg2LDM0MDIzLDM0MDI0LDM0MDMyLDM0MDMxLDM0MDQxLDM0MDcyLDM0MDgwLDM0MDk2LDM0MDU5LDM0MDczLDM0MDk1LDM0NDAyLDM0NjQ2LDM0NjU5LDM0NjYwLDM0Njc5LDM0Nzg1LDM0Njc1LDM0NjQ4LDM0NjQ0LDM0NjUxLDM0NjQyLDM0NjU3LDM0NjUwLDM0NjQxLDM0NjU0LDM0NjY5LDM0NjY2LDM0NjQwLDM0NjM4LDM0NjU1LDM0NjUzLDM0NjcxLDM0NjY4LDM0NjgyLDM0NjcwLDM0NjUyLDM0NjYxLDM0NjM5LDM0NjgzLDM0Njc3LDM0NjU4LDM0NjYzLDM0NjY1LDM0OTA2LDM1MDc3LDM1MDg0LDM1MDkyLDM1MDgzLDM1MDk1LDM1MDk2LDM1MDk3LDM1MDc4LDM1MDk0LDM1MDg5LDM1MDg2LDM1MDgxLDM1MjM0LDM1MjM2LDM1MjM1LDM1MzA5LDM1MzEyLDM1MzA4LDM1NTM1LDM1NTI2LDM1NTEyLDM1NTM5LDM1NTM3LDM1NTQwLDM1NTQxLDM1NTE1LDM1NTQzLDM1NTE4LDM1NTIwLDM1NTI1LDM1NTQ0LDM1NTIzLDM1NTE0LDM1NTE3LDM1NTQ1LDM1OTAyLDM1OTE3LDM1OTgzLDM2MDY5LDM2MDYzLDM2MDU3LDM2MDcyLDM2MDU4LDM2MDYxLDM2MDcxLDM2MjU2LDM2MjUyLDM2MjU3LDM2MjUxLDM2Mzg0LDM2Mzg3LDM2Mzg5LDM2Mzg4LDM2Mzk4LDM2MzczLDM2Mzc5LDM2Mzc0LDM2MzY5LDM2Mzc3LDM2MzkwLDM2MzkxLDM2MzcyLDM2MzcwLDM2Mzc2LDM2MzcxLDM2MzgwLDM2Mzc1LDM2Mzc4LDM2NjUyLDM2NjQ0LDM2NjMyLDM2NjM0LDM2NjQwLDM2NjQzLDM2NjMwLDM2NjMxLDM2OTc5LDM2OTc2LDM2OTc1LDM2OTY3LDM2OTcxLDM3MTY3LDM3MTYzLDM3MTYxLDM3MTYyLDM3MTcwLDM3MTU4LDM3MTY2LDM3MjUzLDM3MjU0LDM3MjU4LDM3MjQ5LDM3MjUwLDM3MjUyLDM3MjQ4LDM3NTg0LDM3NTcxLDM3NTcyLDM3NTY4LDM3NTkzLDM3NTU4LDM3NTgzLDM3NjE3LDM3NTk5LDM3NTkyLDM3NjA5LDM3NTkxLDM3NTk3LDM3NTgwLDM3NjE1LDM3NTcwLDM3NjA4LDM3NTc4LDM3NTc2LDM3NTgyLDM3NjA2LDM3NTgxLDM3NTg5LDM3NTc3LDM3NjAwLDM3NTk4LDM3NjA3LDM3NTg1LDM3NTg3LDM3NTU3LDM3NjAxLDM3NTc0LDM3NTU2LDM4MjY4LDM4MzE2LDM4MzE1LDM4MzE4LDM4MzIwLDM4NTY0LDM4NTYyLDM4NjExLDM4NjYxLDM4NjY0LDM4NjU4LDM4NzQ2LDM4Nzk0LDM4Nzk4LDM4NzkyLDM4ODY0LDM4ODYzLDM4OTQyLDM4OTQxLDM4OTUwLDM4OTUzLDM4OTUyLDM4OTQ0LDM4OTM5LDM4OTUxLDM5MDkwLDM5MTc2LDM5MTYyLDM5MTg1LDM5MTg4LDM5MTkwLDM5MTkxLDM5MTg5LDM5Mzg4LDM5MzczLDM5Mzc1LDM5Mzc5LDM5MzgwLDM5Mzc0LDM5MzY5LDM5MzgyLDM5Mzg0LDM5MzcxLDM5MzgzLDM5MzcyLDM5NjAzLDM5NjYwLDM5NjU5LDM5NjY3LDM5NjY2LDM5NjY1LDM5NzUwLDM5NzQ3LDM5NzgzLDM5Nzk2LDM5NzkzLDM5NzgyLDM5Nzk4LDM5Nzk3LDM5NzkyLDM5Nzg0LDM5NzgwLDM5Nzg4LDQwMTg4LDQwMTg2LDQwMTg5LDQwMTkxLDQwMTgzLDQwMTk5LDQwMTkyLDQwMTg1LDQwMTg3LDQwMjAwLDQwMTk3LDQwMTk2LDQwNTc5LDQwNjU5LDQwNzE5LDQwNzIwLDIwNzY0LDIwNzU1LDIwNzU5LDIwNzYyLDIwNzUzLDIwOTU4LDIxMzAwLDIxNDczLDIyMTI4LDIyMTEyLDIyMTI2LDIyMTMxLDIyMTE4LDIyMTE1LDIyMTI1LDIyMTMwLDIyMTEwLDIyMTM1LDIyMzAwLDIyMjk5LDIyNzI4LDIyNzE3LDIyNzI5LDIyNzE5LDIyNzE0LDIyNzIyLDIyNzE2LDIyNzI2LDIzMzE5LDIzMzIxLDIzMzIzLDIzMzI5LDIzMzE2LDIzMzE1LDIzMzEyLDIzMzE4LDIzMzM2LDIzMzIyLDIzMzI4LDIzMzI2LDIzNTM1LDIzOTgwLDIzOTg1LDIzOTc3LDIzOTc1LDIzOTg5LDIzOTg0LDIzOTgyLDIzOTc4LDIzOTc2LDIzOTg2LDIzOTgxLDIzOTgzLDIzOTg4LDI0MTY3LDI0MTY4LDI0MTY2LDI0MTc1LDI0Mjk3LDI0Mjk1LDI0Mjk0LDI0Mjk2LDI0MjkzLDI0Mzk1LDI0NTA4LDI0OTg5LDI1MDAwLDI0OTgyLDI1MDI5LDI1MDEyLDI1MDMwLDI1MDI1LDI1MDM2LDI1MDE4LDI1MDIzLDI1MDE2LDI0OTcyLDI1ODE1LDI1ODE0LDI1ODA4LDI1ODA3LDI1ODAxLDI1Nzg5LDI1NzM3LDI1Nzk1LDI1ODE5LDI1ODQzLDI1ODE3LDI1OTA3LDI1OTgzLDI1OTgwLDI2MDE4LDI2MzEyLDI2MzAyLDI2MzA0LDI2MzE0LDI2MzE1LDI2MzE5LDI2MzAxLDI2Mjk5LDI2Mjk4LDI2MzE2LDI2NDAzLDI3MTg4LDI3MjM4LDI3MjA5LDI3MjM5LDI3MTg2LDI3MjQwLDI3MTk4LDI3MjI5LDI3MjQ1LDI3MjU0LDI3MjI3LDI3MjE3LDI3MTc2LDI3MjI2LDI3MTk1LDI3MTk5LDI3MjAxLDI3MjQyLDI3MjM2LDI3MjE2LDI3MjE1LDI3MjIwLDI3MjQ3LDI3MjQxLDI3MjMyLDI3MTk2LDI3MjMwLDI3MjIyLDI3MjIxLDI3MjEzLDI3MjE0LDI3MjA2LDI3NDc3LDI3NDc2LDI3NDc4LDI3NTU5LDI3NTYyLDI3NTYzLDI3NTkyLDI3NTkxLDI3NjUyLDI3NjUxLDI3NjU0LDI4NTg5LDI4NjE5LDI4NTc5LDI4NjE1LDI4NjA0LDI4NjIyLDI4NjE2LDI4NTEwLDI4NjEyLDI4NjA1LDI4NTc0LDI4NjE4LDI4NTg0LDI4Njc2LDI4NTgxLDI4NTkwLDI4NjAyLDI4NTg4LDI4NTg2LDI4NjIzLDI4NjA3LDI4NjAwLDI4NTc4LDI4NjE3LDI4NTg3LDI4NjIxLDI4NTkxLDI4NTk0LDI4NTkyLDI5MTI1LDI5MTIyLDI5MTE5LDI5MTEyLDI5MTQyLDI5MTIwLDI5MTIxLDI5MTMxLDI5MTQwLDI5MTMwLDI5MTI3LDI5MTM1LDI5MTE3LDI5MTQ0LDI5MTE2LDI5MTI2LDI5MTQ2LDI5MTQ3LDI5MzQxLDI5MzQyLDI5NTQ1LDI5NTQyLDI5NTQzLDI5NTQ4LDI5NTQxLDI5NTQ3LDI5NTQ2LDI5ODIzLDI5ODUwLDI5ODU2LDI5ODQ0LDI5ODQyLDI5ODQ1LDI5ODU3LDI5OTYzLDMwMDgwLDMwMjU1LDMwMjUzLDMwMjU3LDMwMjY5LDMwMjU5LDMwMjY4LDMwMjYxLDMwMjU4LDMwMjU2LDMwMzk1LDMwNDM4LDMwNjE4LDMwNjIxLDMwNjI1LDMwNjIwLDMwNjE5LDMwNjI2LDMwNjI3LDMwNjEzLDMwNjE3LDMwNjE1LDMwOTQxLDMwOTUzLDMwOTQ5LDMwOTU0LDMwOTQyLDMwOTQ3LDMwOTM5LDMwOTQ1LDMwOTQ2LDMwOTU3LDMwOTQzLDMwOTQ0LDMxMTQwLDMxMzAwLDMxMzA0LDMxMzAzLDMxNDE0LDMxNDE2LDMxNDEzLDMxNDA5LDMxNDE1LDMxNzEwLDMxNzE1LDMxNzE5LDMxNzA5LDMxNzAxLDMxNzE3LDMxNzA2LDMxNzIwLDMxNzM3LDMxNzAwLDMxNzIyLDMxNzE0LDMxNzA4LDMxNzIzLDMxNzA0LDMxNzExLDMxOTU0LDMxOTU2LDMxOTU5LDMxOTUyLDMxOTUzLDMyMjc0LDMyMjg5LDMyMjc5LDMyMjY4LDMyMjg3LDMyMjg4LDMyMjc1LDMyMjcwLDMyMjg0LDMyMjc3LDMyMjgyLDMyMjkwLDMyMjY3LDMyMjcxLDMyMjc4LDMyMjY5LDMyMjc2LDMyMjkzLDMyMjkyLDMyNTc5LDMyNjM1LDMyNjM2LDMyNjM0LDMyNjg5LDMyNzUxLDMyODEwLDMyODA5LDMyODc2LDMzMjAxLDMzMTkwLDMzMTk4LDMzMjA5LDMzMjA1LDMzMTk1LDMzMjAwLDMzMTk2LDMzMjA0LDMzMjAyLDMzMjA3LDMzMTkxLDMzMjY2LDMzMzY1LDMzMzY2LDMzMzY3LDM0MTM0LDM0MTE3LDM0MTU1LDM0MTI1LDM0MTMxLDM0MTQ1LDM0MTM2LDM0MTEyLDM0MTE4LDM0MTQ4LDM0MTEzLDM0MTQ2LDM0MTE2LDM0MTI5LDM0MTE5LDM0MTQ3LDM0MTEwLDM0MTM5LDM0MTYxLDM0MTI2LDM0MTU4LDM0MTY1LDM0MTMzLDM0MTUxLDM0MTQ0LDM0MTg4LDM0MTUwLDM0MTQxLDM0MTMyLDM0MTQ5LDM0MTU2LDM0NDAzLDM0NDA1LDM0NDA0LDM0NzE1LDM0NzAzLDM0NzExLDM0NzA3LDM0NzA2LDM0Njk2LDM0Njg5LDM0NzEwLDM0NzEyLDM0NjgxLDM0Njk1LDM0NzIzLDM0NjkzLDM0NzA0LDM0NzA1LDM0NzE3LDM0NjkyLDM0NzA4LDM0NzE2LDM0NzE0LDM0Njk3LDM1MTAyLDM1MTEwLDM1MTIwLDM1MTE3LDM1MTE4LDM1MTExLDM1MTIxLDM1MTA2LDM1MTEzLDM1MTA3LDM1MTE5LDM1MTE2LDM1MTAzLDM1MzEzLDM1NTUyLDM1NTU0LDM1NTcwLDM1NTcyLDM1NTczLDM1NTQ5LDM1NjA0LDM1NTU2LDM1NTUxLDM1NTY4LDM1NTI4LDM1NTUwLDM1NTUzLDM1NTYwLDM1NTgzLDM1NTY3LDM1NTc5LDM1OTg1LDM1OTg2LDM1OTg0LDM2MDg1LDM2MDc4LDM2MDgxLDM2MDgwLDM2MDgzLDM2MjA0LDM2MjA2LDM2MjYxLDM2MjYzLDM2NDAzLDM2NDE0LDM2NDA4LDM2NDE2LDM2NDIxLDM2NDA2LDM2NDEyLDM2NDEzLDM2NDE3LDM2NDAwLDM2NDE1LDM2NTQxLDM2NjYyLDM2NjU0LDM2NjYxLDM2NjU4LDM2NjY1LDM2NjYzLDM2NjYwLDM2OTgyLDM2OTg1LDM2OTg3LDM2OTk4LDM3MTE0LDM3MTcxLDM3MTczLDM3MTc0LDM3MjY3LDM3MjY0LDM3MjY1LDM3MjYxLDM3MjYzLDM3NjcxLDM3NjYyLDM3NjQwLDM3NjYzLDM3NjM4LDM3NjQ3LDM3NzU0LDM3Njg4LDM3NjkyLDM3NjU5LDM3NjY3LDM3NjUwLDM3NjMzLDM3NzAyLDM3Njc3LDM3NjQ2LDM3NjQ1LDM3NTc5LDM3NjYxLDM3NjI2LDM3NjY5LDM3NjUxLDM3NjI1LDM3NjIzLDM3Njg0LDM3NjM0LDM3NjY4LDM3NjMxLDM3NjczLDM3Njg5LDM3Njg1LDM3Njc0LDM3NjUyLDM3NjQ0LDM3NjQzLDM3NjMwLDM3NjQxLDM3NjMyLDM3NjI3LDM3NjU0LDM4MzMyLDM4MzQ5LDM4MzM0LDM4MzI5LDM4MzMwLDM4MzI2LDM4MzM1LDM4MzI1LDM4MzMzLDM4NTY5LDM4NjEyLDM4NjY3LDM4Njc0LDM4NjcyLDM4ODA5LDM4ODA3LDM4ODA0LDM4ODk2LDM4OTA0LDM4OTY1LDM4OTU5LDM4OTYyLDM5MjA0LDM5MTk5LDM5MjA3LDM5MjA5LDM5MzI2LDM5NDA2LDM5NDA0LDM5Mzk3LDM5Mzk2LDM5NDA4LDM5Mzk1LDM5NDAyLDM5NDAxLDM5Mzk5LDM5NjA5LDM5NjE1LDM5NjA0LDM5NjExLDM5NjcwLDM5Njc0LDM5NjczLDM5NjcxLDM5NzMxLDM5ODA4LDM5ODEzLDM5ODE1LDM5ODA0LDM5ODA2LDM5ODAzLDM5ODEwLDM5ODI3LDM5ODI2LDM5ODI0LDM5ODAyLDM5ODI5LDM5ODA1LDM5ODE2LDQwMjI5LDQwMjE1LDQwMjI0LDQwMjIyLDQwMjEyLDQwMjMzLDQwMjIxLDQwMjE2LDQwMjI2LDQwMjA4LDQwMjE3LDQwMjIzLDQwNTg0LDQwNTgyLDQwNTgzLDQwNjIyLDQwNjIxLDQwNjYxLDQwNjYyLDQwNjk4LDQwNzIyLDQwNzY1LDIwNzc0LDIwNzczLDIwNzcwLDIwNzcyLDIwNzY4LDIwNzc3LDIxMjM2LDIyMTYzLDIyMTU2LDIyMTU3LDIyMTUwLDIyMTQ4LDIyMTQ3LDIyMTQyLDIyMTQ2LDIyMTQzLDIyMTQ1LDIyNzQyLDIyNzQwLDIyNzM1LDIyNzM4LDIzMzQxLDIzMzMzLDIzMzQ2LDIzMzMxLDIzMzQwLDIzMzM1LDIzMzM0LDIzMzQzLDIzMzQyLDIzNDE5LDIzNTM3LDIzNTM4LDIzOTkxLDI0MTcyLDI0MTcwLDI0NTEwLDI0NTA3LDI1MDI3LDI1MDEzLDI1MDIwLDI1MDYzLDI1MDU2LDI1MDYxLDI1MDYwLDI1MDY0LDI1MDU0LDI1ODM5LDI1ODMzLDI1ODI3LDI1ODM1LDI1ODI4LDI1ODMyLDI1OTg1LDI1OTg0LDI2MDM4LDI2MDc0LDI2MzIyLDI3Mjc3LDI3Mjg2LDI3MjY1LDI3MzAxLDI3MjczLDI3Mjk1LDI3MjkxLDI3Mjk3LDI3Mjk0LDI3MjcxLDI3MjgzLDI3Mjc4LDI3Mjg1LDI3MjY3LDI3MzA0LDI3MzAwLDI3MjgxLDI3MjYzLDI3MzAyLDI3MjkwLDI3MjY5LDI3Mjc2LDI3MjgyLDI3NDgzLDI3NTY1LDI3NjU3LDI4NjIwLDI4NTg1LDI4NjYwLDI4NjI4LDI4NjQzLDI4NjM2LDI4NjUzLDI4NjQ3LDI4NjQ2LDI4NjM4LDI4NjU4LDI4NjM3LDI4NjQyLDI4NjQ4LDI5MTUzLDI5MTY5LDI5MTYwLDI5MTcwLDI5MTU2LDI5MTY4LDI5MTU0LDI5NTU1LDI5NTUwLDI5NTUxLDI5ODQ3LDI5ODc0LDI5ODY3LDI5ODQwLDI5ODY2LDI5ODY5LDI5ODczLDI5ODYxLDI5ODcxLDI5OTY4LDI5OTY5LDI5OTcwLDI5OTY3LDMwMDg0LDMwMjc1LDMwMjgwLDMwMjgxLDMwMjc5LDMwMzcyLDMwNDQxLDMwNjQ1LDMwNjM1LDMwNjQyLDMwNjQ3LDMwNjQ2LDMwNjQ0LDMwNjQxLDMwNjMyLDMwNzA0LDMwOTYzLDMwOTczLDMwOTc4LDMwOTcxLDMwOTcyLDMwOTYyLDMwOTgxLDMwOTY5LDMwOTc0LDMwOTgwLDMxMTQ3LDMxMTQ0LDMxMzI0LDMxMzIzLDMxMzE4LDMxMzIwLDMxMzE2LDMxMzIyLDMxNDIyLDMxNDI0LDMxNDI1LDMxNzQ5LDMxNzU5LDMxNzMwLDMxNzQ0LDMxNzQzLDMxNzM5LDMxNzU4LDMxNzMyLDMxNzU1LDMxNzMxLDMxNzQ2LDMxNzUzLDMxNzQ3LDMxNzQ1LDMxNzM2LDMxNzQxLDMxNzUwLDMxNzI4LDMxNzI5LDMxNzYwLDMxNzU0LDMxOTc2LDMyMzAxLDMyMzE2LDMyMzIyLDMyMzA3LDM4OTg0LDMyMzEyLDMyMjk4LDMyMzI5LDMyMzIwLDMyMzI3LDMyMjk3LDMyMzMyLDMyMzA0LDMyMzE1LDMyMzEwLDMyMzI0LDMyMzE0LDMyNTgxLDMyNjM5LDMyNjM4LDMyNjM3LDMyNzU2LDMyNzU0LDMyODEyLDMzMjExLDMzMjIwLDMzMjI4LDMzMjI2LDMzMjIxLDMzMjIzLDMzMjEyLDMzMjU3LDMzMzcxLDMzMzcwLDMzMzcyLDM0MTc5LDM0MTc2LDM0MTkxLDM0MjE1LDM0MTk3LDM0MjA4LDM0MTg3LDM0MjExLDM0MTcxLDM0MjEyLDM0MjAyLDM0MjA2LDM0MTY3LDM0MTcyLDM0MTg1LDM0MjA5LDM0MTcwLDM0MTY4LDM0MTM1LDM0MTkwLDM0MTk4LDM0MTgyLDM0MTg5LDM0MjAxLDM0MjA1LDM0MTc3LDM0MjEwLDM0MTc4LDM0MTg0LDM0MTgxLDM0MTY5LDM0MTY2LDM0MjAwLDM0MTkyLDM0MjA3LDM0NDA4LDM0NzUwLDM0NzMwLDM0NzMzLDM0NzU3LDM0NzM2LDM0NzMyLDM0NzQ1LDM0NzQxLDM0NzQ4LDM0NzM0LDM0NzYxLDM0NzU1LDM0NzU0LDM0NzY0LDM0NzQzLDM0NzM1LDM0NzU2LDM0NzYyLDM0NzQwLDM0NzQyLDM0NzUxLDM0NzQ0LDM0NzQ5LDM0NzgyLDM0NzM4LDM1MTI1LDM1MTIzLDM1MTMyLDM1MTM0LDM1MTM3LDM1MTU0LDM1MTI3LDM1MTM4LDM1MjQ1LDM1MjQ3LDM1MjQ2LDM1MzE0LDM1MzE1LDM1NjE0LDM1NjA4LDM1NjA2LDM1NjAxLDM1NTg5LDM1NTk1LDM1NjE4LDM1NTk5LDM1NjAyLDM1NjA1LDM1NTkxLDM1NTk3LDM1NTkyLDM1NTkwLDM1NjEyLDM1NjAzLDM1NjEwLDM1OTE5LDM1OTUyLDM1OTU0LDM1OTUzLDM1OTUxLDM1OTg5LDM1OTg4LDM2MDg5LDM2MjA3LDM2NDMwLDM2NDI5LDM2NDM1LDM2NDMyLDM2NDI4LDM2NDIzLDM2Njc1LDM2NjcyLDM2OTk3LDM2OTkwLDM3MTc2LDM3Mjc0LDM3MjgyLDM3Mjc1LDM3MjczLDM3Mjc5LDM3MjgxLDM3Mjc3LDM3MjgwLDM3NzkzLDM3NzYzLDM3ODA3LDM3NzMyLDM3NzE4LDM3NzAzLDM3NzU2LDM3NzIwLDM3NzI0LDM3NzUwLDM3NzA1LDM3NzEyLDM3NzEzLDM3NzI4LDM3NzQxLDM3Nzc1LDM3NzA4LDM3NzM4LDM3NzUzLDM3NzE5LDM3NzE3LDM3NzE0LDM3NzExLDM3NzQ1LDM3NzUxLDM3NzU1LDM3NzI5LDM3NzI2LDM3NzMxLDM3NzM1LDM3NzYwLDM3NzEwLDM3NzIxLDM4MzQzLDM4MzM2LDM4MzQ1LDM4MzM5LDM4MzQxLDM4MzI3LDM4NTc0LDM4NTc2LDM4NTcyLDM4Njg4LDM4Njg3LDM4NjgwLDM4Njg1LDM4NjgxLDM4ODEwLDM4ODE3LDM4ODEyLDM4ODE0LDM4ODEzLDM4ODY5LDM4ODY4LDM4ODk3LDM4OTc3LDM4OTgwLDM4OTg2LDM4OTg1LDM4OTgxLDM4OTc5LDM5MjA1LDM5MjExLDM5MjEyLDM5MjEwLDM5MjE5LDM5MjE4LDM5MjE1LDM5MjEzLDM5MjE3LDM5MjE2LDM5MzIwLDM5MzMxLDM5MzI5LDM5NDI2LDM5NDE4LDM5NDEyLDM5NDE1LDM5NDE3LDM5NDE2LDM5NDE0LDM5NDE5LDM5NDIxLDM5NDIyLDM5NDIwLDM5NDI3LDM5NjE0LDM5Njc4LDM5Njc3LDM5NjgxLDM5Njc2LDM5NzUyLDM5ODM0LDM5ODQ4LDM5ODM4LDM5ODM1LDM5ODQ2LDM5ODQxLDM5ODQ1LDM5ODQ0LDM5ODE0LDM5ODQyLDM5ODQwLDM5ODU1LDQwMjQzLDQwMjU3LDQwMjk1LDQwMjQ2LDQwMjM4LDQwMjM5LDQwMjQxLDQwMjQ4LDQwMjQwLDQwMjYxLDQwMjU4LDQwMjU5LDQwMjU0LDQwMjQ3LDQwMjU2LDQwMjUzLDMyNzU3LDQwMjM3LDQwNTg2LDQwNTg1LDQwNTg5LDQwNjI0LDQwNjQ4LDQwNjY2LDQwNjk5LDQwNzAzLDQwNzQwLDQwNzM5LDQwNzM4LDQwNzg4LDQwODY0LDIwNzg1LDIwNzgxLDIwNzgyLDIyMTY4LDIyMTcyLDIyMTY3LDIyMTcwLDIyMTczLDIyMTY5LDIyODk2LDIzMzU2LDIzNjU3LDIzNjU4LDI0MDAwLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDczLDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcyLDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkxLDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMxMTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMxNzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMxNzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMyLDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQzLDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUzLDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMyLDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODczLDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkzLDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcxLDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIyNzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIzMzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMwNjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAzLDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcyLDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIyLDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgxLDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUwLDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUxLDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUyLDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQwMzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIzLDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMxMTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMxODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMyMzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMxLDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEwLDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDQwMDAwLDM5OTQzLDM5OTUwLDM5OTQyLDM5OTU5LDM5OTU2LDM5OTQ1LDQwMzUxLDQwMzQ1LDQwMzU2LDQwMzQ5LDQwMzM4LDQwMzQ0LDQwMzM2LDQwMzQ3LDQwMzUyLDQwMzQwLDQwMzQ4LDQwMzYyLDQwMzQzLDQwMzUzLDQwMzQ2LDQwMzU0LDQwMzYwLDQwMzUwLDQwMzU1LDQwMzgzLDQwMzYxLDQwMzQyLDQwMzU4LDQwMzU5LDQwNjAxLDQwNjAzLDQwNjAyLDQwNjc3LDQwNjc2LDQwNjc5LDQwNjc4LDQwNzUyLDQwNzUwLDQwNzk1LDQwODAwLDQwNzk4LDQwNzk3LDQwNzkzLDQwODQ5LDIwNzk0LDIwNzkzLDIxMTQ0LDIxMTQzLDIyMjExLDIyMjA1LDIyMjA2LDIzMzY4LDIzMzY3LDI0MDExLDI0MDE1LDI0MzA1LDI1MDg1LDI1ODgzLDI3Mzk0LDI3Mzg4LDI3Mzk1LDI3Mzg0LDI3MzkyLDI4NzM5LDI4NzQwLDI4NzQ2LDI4NzQ0LDI4NzQ1LDI4NzQxLDI4NzQyLDI5MjEzLDI5MjEwLDI5MjA5LDI5NTY2LDI5OTc1LDMwMzE0LDMwNjcyLDMxMDIxLDMxMDI1LDMxMDIzLDMxODI4LDMxODI3LDMxOTg2LDMyMzk0LDMyMzkxLDMyMzkyLDMyMzk1LDMyMzkwLDMyMzk3LDMyNTg5LDMyNjk5LDMyODE2LDMzMjQ1LDM0MzI4LDM0MzQ2LDM0MzQyLDM0MzM1LDM0MzM5LDM0MzMyLDM0MzI5LDM0MzQzLDM0MzUwLDM0MzM3LDM0MzM2LDM0MzQ1LDM0MzM0LDM0MzQxLDM0ODU3LDM0ODQ1LDM0ODQzLDM0ODQ4LDM0ODUyLDM0ODQ0LDM0ODU5LDM0ODkwLDM1MTgxLDM1MTc3LDM1MTgyLDM1MTc5LDM1MzIyLDM1NzA1LDM1NzA0LDM1NjUzLDM1NzA2LDM1NzA3LDM2MTEyLDM2MTE2LDM2MjcxLDM2NDk0LDM2NDkyLDM2NzAyLDM2Njk5LDM2NzAxLDM3MTkwLDM3MTg4LDM3MTg5LDM3MzA1LDM3OTUxLDM3OTQ3LDM3OTQyLDM3OTI5LDM3OTQ5LDM3OTQ4LDM3OTM2LDM3OTQ1LDM3OTMwLDM3OTQzLDM3OTMyLDM3OTUyLDM3OTM3LDM4MzczLDM4MzcyLDM4MzcxLDM4NzA5LDM4NzE0LDM4ODQ3LDM4ODgxLDM5MDEyLDM5MTEzLDM5MTEwLDM5MTA0LDM5MjU2LDM5MjU0LDM5NDgxLDM5NDg1LDM5NDk0LDM5NDkyLDM5NDkwLDM5NDg5LDM5NDgyLDM5NDg3LDM5NjI5LDM5NzAxLDM5NzAzLDM5NzA0LDM5NzAyLDM5NzM4LDM5NzYyLDM5OTc5LDM5OTY1LDM5OTY0LDM5OTgwLDM5OTcxLDM5OTc2LDM5OTc3LDM5OTcyLDM5OTY5LDQwMzc1LDQwMzc0LDQwMzgwLDQwMzg1LDQwMzkxLDQwMzk0LDQwMzk5LDQwMzgyLDQwMzg5LDQwMzg3LDQwMzc5LDQwMzczLDQwMzk4LDQwMzc3LDQwMzc4LDQwMzY0LDQwMzkyLDQwMzY5LDQwMzY1LDQwMzk2LDQwMzcxLDQwMzk3LDQwMzcwLDQwNTcwLDQwNjA0LDQwNjgzLDQwNjg2LDQwNjg1LDQwNzMxLDQwNzI4LDQwNzMwLDQwNzUzLDQwNzgyLDQwODA1LDQwODA0LDQwODUwLDIwMTUzLDIyMjE0LDIyMjEzLDIyMjE5LDIyODk3LDIzMzcxLDIzMzcyLDI0MDIxLDI0MDE3LDI0MzA2LDI1ODg5LDI1ODg4LDI1ODk0LDI1ODkwLDI3NDAzLDI3NDAwLDI3NDAxLDI3NjYxLDI4NzU3LDI4NzU4LDI4NzU5LDI4NzU0LDI5MjE0LDI5MjE1LDI5MzUzLDI5NTY3LDI5OTEyLDI5OTA5LDI5OTEzLDI5OTExLDMwMzE3LDMwMzgxLDMxMDI5LDMxMTU2LDMxMzQ0LDMxMzQ1LDMxODMxLDMxODM2LDMxODMzLDMxODM1LDMxODM0LDMxOTg4LDMxOTg1LDMyNDAxLDMyNTkxLDMyNjQ3LDMzMjQ2LDMzMzg3LDM0MzU2LDM0MzU3LDM0MzU1LDM0MzQ4LDM0MzU0LDM0MzU4LDM0ODYwLDM0ODU2LDM0ODU0LDM0ODU4LDM0ODUzLDM1MTg1LDM1MjYzLDM1MjYyLDM1MzIzLDM1NzEwLDM1NzE2LDM1NzE0LDM1NzE4LDM1NzE3LDM1NzExLDM2MTE3LDM2NTAxLDM2NTAwLDM2NTA2LDM2NDk4LDM2NDk2LDM2NTAyLDM2NTAzLDM2NzA0LDM2NzA2LDM3MTkxLDM3OTY0LDM3OTY4LDM3OTYyLDM3OTYzLDM3OTY3LDM3OTU5LDM3OTU3LDM3OTYwLDM3OTYxLDM3OTU4LDM4NzE5LDM4ODgzLDM5MDE4LDM5MDE3LDM5MTE1LDM5MjUyLDM5MjU5LDM5NTAyLDM5NTA3LDM5NTA4LDM5NTAwLDM5NTAzLDM5NDk2LDM5NDk4LDM5NDk3LDM5NTA2LDM5NTA0LDM5NjMyLDM5NzA1LDM5NzIzLDM5NzM5LDM5NzY2LDM5NzY1LDQwMDA2LDQwMDA4LDM5OTk5LDQwMDA0LDM5OTkzLDM5OTg3LDQwMDAxLDM5OTk2LDM5OTkxLDM5OTg4LDM5OTg2LDM5OTk3LDM5OTkwLDQwNDExLDQwNDAyLDQwNDE0LDQwNDEwLDQwMzk1LDQwNDAwLDQwNDEyLDQwNDAxLDQwNDE1LDQwNDI1LDQwNDA5LDQwNDA4LDQwNDA2LDQwNDM3LDQwNDA1LDQwNDEzLDQwNjMwLDQwNjg4LDQwNzU3LDQwNzU1LDQwNzU0LDQwNzcwLDQwODExLDQwODUzLDQwODY2LDIwNzk3LDIxMTQ1LDIyNzYwLDIyNzU5LDIyODk4LDIzMzczLDI0MDI0LDM0ODYzLDI0Mzk5LDI1MDg5LDI1MDkxLDI1MDkyLDI1ODk3LDI1ODkzLDI2MDA2LDI2MzQ3LDI3NDA5LDI3NDEwLDI3NDA3LDI3NTk0LDI4NzYzLDI4NzYyLDI5MjE4LDI5NTcwLDI5NTY5LDI5NTcxLDMwMzIwLDMwNjc2LDMxODQ3LDMxODQ2LDMyNDA1LDMzMzg4LDM0MzYyLDM0MzY4LDM0MzYxLDM0MzY0LDM0MzUzLDM0MzYzLDM0MzY2LDM0ODY0LDM0ODY2LDM0ODYyLDM0ODY3LDM1MTkwLDM1MTg4LDM1MTg3LDM1MzI2LDM1NzI0LDM1NzI2LDM1NzIzLDM1NzIwLDM1OTA5LDM2MTIxLDM2NTA0LDM2NzA4LDM2NzA3LDM3MzA4LDM3OTg2LDM3OTczLDM3OTgxLDM3OTc1LDM3OTgyLDM4ODUyLDM4ODUzLDM4OTEyLDM5NTEwLDM5NTEzLDM5NzEwLDM5NzExLDM5NzEyLDQwMDE4LDQwMDI0LDQwMDE2LDQwMDEwLDQwMDEzLDQwMDExLDQwMDIxLDQwMDI1LDQwMDEyLDQwMDE0LDQwNDQzLDQwNDM5LDQwNDMxLDQwNDE5LDQwNDI3LDQwNDQwLDQwNDIwLDQwNDM4LDQwNDE3LDQwNDMwLDQwNDIyLDQwNDM0LDQwNDMyLDQwNDE4LDQwNDI4LDQwNDM2LDQwNDM1LDQwNDI0LDQwNDI5LDQwNjQyLDQwNjU2LDQwNjkwLDQwNjkxLDQwNzEwLDQwNzMyLDQwNzYwLDQwNzU5LDQwNzU4LDQwNzcxLDQwNzgzLDQwODE3LDQwODE2LDQwODE0LDQwODE1LDIyMjI3LDIyMjIxLDIzMzc0LDIzNjYxLDI1OTAxLDI2MzQ5LDI2MzUwLDI3NDExLDI4NzY3LDI4NzY5LDI4NzY1LDI4NzY4LDI5MjE5LDI5OTE1LDI5OTI1LDMwNjc3LDMxMDMyLDMxMTU5LDMxMTU4LDMxODUwLDMyNDA3LDMyNjQ5LDMzMzg5LDM0MzcxLDM0ODcyLDM0ODcxLDM0ODY5LDM0ODkxLDM1NzMyLDM1NzMzLDM2NTEwLDM2NTExLDM2NTEyLDM2NTA5LDM3MzEwLDM3MzA5LDM3MzE0LDM3OTk1LDM3OTkyLDM3OTkzLDM4NjI5LDM4NzI2LDM4NzIzLDM4NzI3LDM4ODU1LDM4ODg1LDM5NTE4LDM5NjM3LDM5NzY5LDQwMDM1LDQwMDM5LDQwMDM4LDQwMDM0LDQwMDMwLDQwMDMyLDQwNDUwLDQwNDQ2LDQwNDU1LDQwNDUxLDQwNDU0LDQwNDUzLDQwNDQ4LDQwNDQ5LDQwNDU3LDQwNDQ3LDQwNDQ1LDQwNDUyLDQwNjA4LDQwNzM0LDQwNzc0LDQwODIwLDQwODIxLDQwODIyLDIyMjI4LDI1OTAyLDI2MDQwLDI3NDE2LDI3NDE3LDI3NDE1LDI3NDE4LDI4NzcwLDI5MjIyLDI5MzU0LDMwNjgwLDMwNjgxLDMxMDMzLDMxODQ5LDMxODUxLDMxOTkwLDMyNDEwLDMyNDA4LDMyNDExLDMyNDA5LDMzMjQ4LDMzMjQ5LDM0Mzc0LDM0Mzc1LDM0Mzc2LDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk1LDM1MzI3LDM1NzM2LDM1NzM3LDM2NTE3LDM2NTE2LDM2NTE1LDM3OTk4LDM3OTk3LDM3OTk5LDM4MDAxLDM4MDAzLDM4NzI5LDM5MDI2LDM5MjYzLDQwMDQwLDQwMDQ2LDQwMDQ1LDQwNDU5LDQwNDYxLDQwNDY0LDQwNDYzLDQwNDY2LDQwNDY1LDQwNjA5LDQwNjkzLDQwNzEzLDQwNzc1LDQwODI0LDQwODI3LDQwODI2LDQwODI1LDIyMzAyLDI4Nzc0LDMxODU1LDM0ODc2LDM2Mjc0LDM2NTE4LDM3MzE1LDM4MDA0LDM4MDA4LDM4MDA2LDM4MDA1LDM5NTIwLDQwMDUyLDQwMDUxLDQwMDQ5LDQwMDUzLDQwNDY4LDQwNDY3LDQwNjk0LDQwNzE0LDQwODY4LDI4Nzc2LDI4NzczLDMxOTkxLDM0NDEwLDM0ODc4LDM0ODc3LDM0ODc5LDM1NzQyLDM1OTk2LDM2NTIxLDM2NTUzLDM4NzMxLDM5MDI3LDM5MDI4LDM5MTE2LDM5MjY1LDM5MzM5LDM5NTI0LDM5NTI2LDM5NTI3LDM5NzE2LDQwNDY5LDQwNDcxLDQwNzc2LDI1MDk1LDI3NDIyLDI5MjIzLDM0MzgwLDM2NTIwLDM4MDE4LDM4MDE2LDM4MDE3LDM5NTI5LDM5NTI4LDM5NzI2LDQwNDczLDI5MjI1LDM0Mzc5LDM1NzQzLDM4MDE5LDQwMDU3LDQwNjMxLDMwMzI1LDM5NTMxLDQwMDU4LDQwNDc3LDI4Nzc3LDI4Nzc4LDQwNjEyLDQwODMwLDQwNzc3LDQwODU2LDMwODQ5LDM3NTYxLDM1MDIzLDIyNzE1LDI0NjU4LDMxOTExLDIzMjkwLDk1NTYsOTU3NCw5NTU5LDk1NjgsOTU4MCw5NTcxLDk1NjIsOTU3Nyw5NTY1LDk1NTQsOTU3Miw5NTU3LDk1NjYsOTU3OCw5NTY5LDk1NjAsOTU3NSw5NTYzLDk1NTUsOTU3Myw5NTU4LDk1NjcsOTU3OSw5NTcwLDk1NjEsOTU3Niw5NTY0LDk1NTMsOTU1Miw5NTgxLDk1ODIsOTU4NCw5NTgzLDY1NTE3LDEzMjQyMywzNzU5NSwxMzI1NzUsMTQ3Mzk3LDM0MTI0LDE3MDc3LDI5Njc5LDIwOTE3LDEzODk3LDE0OTgyNiwxNjYzNzIsMzc3MDAsMTM3NjkxLDMzNTE4LDE0NjYzMiwzMDc4MCwyNjQzNiwyNTMxMSwxNDk4MTEsMTY2MzE0LDEzMTc0NCwxNTg2NDMsMTM1OTQxLDIwMzk1LDE0MDUyNSwyMDQ4OCwxNTkwMTcsMTYyNDM2LDE0NDg5NiwxNTAxOTMsMTQwNTYzLDIwNTIxLDEzMTk2NiwyNDQ4NCwxMzE5NjgsMTMxOTExLDI4Mzc5LDEzMjEyNywyMDYwNSwyMDczNywxMzQzNCwyMDc1MCwzOTAyMCwxNDE0NywzMzgxNCwxNDk5MjQsMTMyMjMxLDIwODMyLDE0NDMwOCwyMDg0MiwxMzQxNDMsMTM5NTE2LDEzMTgxMywxNDA1OTIsMTMyNDk0LDE0MzkyMywxMzc2MDMsMjM0MjYsMzQ2ODUsMTMyNTMxLDE0NjU4NSwyMDkxNCwyMDkyMCw0MDI0NCwyMDkzNywyMDk0MywyMDk0NSwxNTU4MCwyMDk0NywxNTAxODIsMjA5MTUsMjA5NjIsMjEzMTQsMjA5NzMsMzM3NDEsMjY5NDIsMTQ1MTk3LDI0NDQzLDIxMDAzLDIxMDMwLDIxMDUyLDIxMTczLDIxMDc5LDIxMTQwLDIxMTc3LDIxMTg5LDMxNzY1LDM0MTE0LDIxMjE2LDM0MzE3LDE1ODQ4MywyMTI1MywxNjY2MjIsMjE4MzMsMjgzNzcsMTQ3MzI4LDEzMzQ2MCwxNDc0MzYsMjEyOTksMjEzMTYsMTM0MTE0LDI3ODUxLDEzNjk5OCwyNjY1MSwyOTY1MywyNDY1MCwxNjA0MiwxNDU0MCwxMzY5MzYsMjkxNDksMTc1NzAsMjEzNTcsMjEzNjQsMTY1NTQ3LDIxMzc0LDIxMzc1LDEzNjU5OCwxMzY3MjMsMzA2OTQsMjEzOTUsMTY2NTU1LDIxNDA4LDIxNDE5LDIxNDIyLDI5NjA3LDE1MzQ1OCwxNjIxNywyOTU5NiwyMTQ0MSwyMTQ0NSwyNzcyMSwyMDA0MSwyMjUyNiwyMTQ2NSwxNTAxOSwxMzQwMzEsMjE0NzIsMTQ3NDM1LDE0Mjc1NSwyMTQ5NCwxMzQyNjMsMjE1MjMsMjg3OTMsMjE4MDMsMjYxOTksMjc5OTUsMjE2MTMsMTU4NTQ3LDEzNDUxNiwyMTg1MywyMTY0NywyMTY2OCwxODM0MiwxMzY5NzMsMTM0ODc3LDE1Nzk2LDEzNDQ3NywxNjYzMzIsMTQwOTUyLDIxODMxLDE5NjkzLDIxNTUxLDI5NzE5LDIxODk0LDIxOTI5LDIyMDIxLDEzNzQzMSwxNDc1MTQsMTc3NDYsMTQ4NTMzLDI2MjkxLDEzNTM0OCwyMjA3MSwyNjMxNywxNDQwMTAsMjYyNzYsMjYyODUsMjIwOTMsMjIwOTUsMzA5NjEsMjIyNTcsMzg3OTEsMjE1MDIsMjIyNzIsMjIyNTUsMjIyNTMsMTY2NzU4LDEzODU5LDEzNTc1OSwyMjM0MiwxNDc4NzcsMjc3NTgsMjg4MTEsMjIzMzgsMTQwMDEsMTU4ODQ2LDIyNTAyLDEzNjIxNCwyMjUzMSwxMzYyNzYsMTQ4MzIzLDIyNTY2LDE1MDUxNywyMjYyMCwyMjY5OCwxMzY2NSwyMjc1MiwyMjc0OCwxMzU3NDAsMjI3NzksMjM1NTEsMjIzMzksMTcyMzY4LDE0ODA4OCwzNzg0MywxMzcyOSwyMjgxNSwyNjc5MCwxNDAxOSwyODI0OSwxMzY3NjYsMjMwNzYsMjE4NDMsMTM2ODUwLDM0MDUzLDIyOTg1LDEzNDQ3OCwxNTg4NDksMTU5MDE4LDEzNzE4MCwyMzAwMSwxMzcyMTEsMTM3MTM4LDE1OTE0MiwyODAxNywxMzcyNTYsMTM2OTE3LDIzMDMzLDE1OTMwMSwyMzIxMSwyMzEzOSwxNDA1NCwxNDk5MjksMjMxNTksMTQwODgsMjMxOTAsMjk3OTcsMjMyNTEsMTU5NjQ5LDE0MDYyOCwxNTc0OSwxMzc0ODksMTQxMzAsMTM2ODg4LDI0MTk1LDIxMjAwLDIzNDE0LDI1OTkyLDIzNDIwLDE2MjMxOCwxNjM4OCwxODUyNSwxMzE1ODgsMjM1MDksMjQ5MjgsMTM3NzgwLDE1NDA2MCwxMzI1MTcsMjM1MzksMjM0NTMsMTk3MjgsMjM1NTcsMTM4MDUyLDIzNTcxLDI5NjQ2LDIzNTcyLDEzODQwNSwxNTg1MDQsMjM2MjUsMTg2NTMsMjM2ODUsMjM3ODUsMjM3OTEsMjM5NDcsMTM4NzQ1LDEzODgwNywyMzgyNCwyMzgzMiwyMzg3OCwxMzg5MTYsMjM3MzgsMjQwMjMsMzM1MzIsMTQzODEsMTQ5NzYxLDEzOTMzNywxMzk2MzUsMzM0MTUsMTQzOTAsMTUyOTgsMjQxMTAsMjcyNzQsMjQxODEsMjQxODYsMTQ4NjY4LDEzNDM1NSwyMTQxNCwyMDE1MSwyNDI3MiwyMTQxNiwxMzcwNzMsMjQwNzMsMjQzMDgsMTY0OTk0LDI0MzEzLDI0MzE1LDE0NDk2LDI0MzE2LDI2Njg2LDM3OTE1LDI0MzMzLDEzMTUyMSwxOTQ3MDgsMTUwNzAsMTg2MDYsMTM1OTk0LDI0Mzc4LDE1NzgzMiwxNDAyNDAsMjQ0MDgsMTQwNDAxLDI0NDE5LDM4ODQ1LDE1OTM0MiwyNDQzNCwzNzY5NiwxNjY0NTQsMjQ0ODcsMjM5OTAsMTU3MTEsMTUyMTQ0LDEzOTExNCwxNTk5OTIsMTQwOTA0LDM3MzM0LDEzMTc0MiwxNjY0NDEsMjQ2MjUsMjYyNDUsMTM3MzM1LDE0NjkxLDE1ODE1LDEzODgxLDIyNDE2LDE0MTIzNiwzMTA4OSwxNTkzNiwyNDczNCwyNDc0MCwyNDc1NSwxNDk4OTAsMTQ5OTAzLDE2MjM4NywyOTg2MCwyMDcwNSwyMzIwMCwyNDkzMiwzMzgyOCwyNDg5OCwxOTQ3MjYsMTU5NDQyLDI0OTYxLDIwOTgwLDEzMjY5NCwyNDk2NywyMzQ2NiwxNDczODMsMTQxNDA3LDI1MDQzLDE2NjgxMywxNzAzMzMsMjUwNDAsMTQ2NDIsMTQxNjk2LDE0MTUwNSwyNDYxMSwyNDkyNCwyNTg4NiwyNTQ4MywxMzEzNTIsMjUyODUsMTM3MDcyLDI1MzAxLDE0Mjg2MSwyNTQ1MiwxNDk5ODMsMTQ4NzEsMjU2NTYsMjU1OTIsMTM2MDc4LDEzNzIxMiwyNTc0NCwyODU1NCwxNDI5MDIsMzg5MzIsMTQ3NTk2LDE1MzM3MywyNTgyNSwyNTgyOSwzODAxMSwxNDk1MCwyNTY1OCwxNDkzNSwyNTkzMywyODQzOCwxNTAwNTYsMTUwMDUxLDI1OTg5LDI1OTY1LDI1OTUxLDE0MzQ4NiwyNjAzNywxNDk4MjQsMTkyNTUsMjYwNjUsMTY2MDAsMTM3MjU3LDI2MDgwLDI2MDgzLDI0NTQzLDE0NDM4NCwyNjEzNiwxNDM4NjMsMTQzODY0LDI2MTgwLDE0Mzc4MCwxNDM3ODEsMjYxODcsMTM0NzczLDI2MjE1LDE1MjAzOCwyNjIyNywyNjIyOCwxMzg4MTMsMTQzOTIxLDE2NTM2NCwxNDM4MTYsMTUyMzM5LDMwNjYxLDE0MTU1OSwzOTMzMiwyNjM3MCwxNDgzODAsMTUwMDQ5LDE1MTQ3LDI3MTMwLDE0NTM0NiwyNjQ2MiwyNjQ3MSwyNjQ2NiwxNDc5MTcsMTY4MTczLDI2NTgzLDE3NjQxLDI2NjU4LDI4MjQwLDM3NDM2LDI2NjI1LDE0NDM1OCwxNTkxMzYsMjY3MTcsMTQ0NDk1LDI3MTA1LDI3MTQ3LDE2NjYyMywyNjk5NSwyNjgxOSwxNDQ4NDUsMjY4ODEsMjY4ODAsMTU2NjYsMTQ4NDksMTQ0OTU2LDE1MjMyLDI2NTQwLDI2OTc3LDE2NjQ3NCwxNzE0OCwyNjkzNCwyNzAzMiwxNTI2NSwxMzIwNDEsMzM2MzUsMjA2MjQsMjcxMjksMTQ0OTg1LDEzOTU2MiwyNzIwNSwxNDUxNTUsMjcyOTMsMTUzNDcsMjY1NDUsMjczMzYsMTY4MzQ4LDE1MzczLDI3NDIxLDEzMzQxMSwyNDc5OCwyNzQ0NSwyNzUwOCwxNDEyNjEsMjgzNDEsMTQ2MTM5LDEzMjAyMSwxMzc1NjAsMTQxNDQsMjE1MzcsMTQ2MjY2LDI3NjE3LDE0NzE5NiwyNzYxMiwyNzcwMywxNDA0MjcsMTQ5NzQ1LDE1ODU0NSwyNzczOCwzMzMxOCwyNzc2OSwxNDY4NzYsMTc2MDUsMTQ2ODc3LDE0Nzg3NiwxNDk3NzIsMTQ5NzYwLDE0NjYzMywxNDA1MywxNTU5NSwxMzQ0NTAsMzk4MTEsMTQzODY1LDE0MDQzMywzMjY1NSwyNjY3OSwxNTkwMTMsMTU5MTM3LDE1OTIxMSwyODA1NCwyNzk5NiwyODI4NCwyODQyMCwxNDk4ODcsMTQ3NTg5LDE1OTM0NiwzNDA5OSwxNTk2MDQsMjA5MzUsMjc4MDQsMjgxODksMzM4MzgsMTY2Njg5LDI4MjA3LDE0Njk5MSwyOTc3OSwxNDczMzAsMzExODAsMjgyMzksMjMxODUsMTQzNDM1LDI4NjY0LDE0MDkzLDI4NTczLDE0Njk5MiwyODQxMCwxMzYzNDMsMTQ3NTE3LDE3NzQ5LDM3ODcyLDI4NDg0LDI4NTA4LDE1Njk0LDI4NTMyLDE2ODMwNCwxNTY3NSwyODU3NSwxNDc3ODAsMjg2MjcsMTQ3NjAxLDE0Nzc5NywxNDc1MTMsMTQ3NDQwLDE0NzM4MCwxNDc3NzUsMjA5NTksMTQ3Nzk4LDE0Nzc5OSwxNDc3NzYsMTU2MTI1LDI4NzQ3LDI4Nzk4LDI4ODM5LDI4ODAxLDI4ODc2LDI4ODg1LDI4ODg2LDI4ODk1LDE2NjQ0LDE1ODQ4LDI5MTA4LDI5MDc4LDE0ODA4NywyODk3MSwyODk5NywyMzE3NiwyOTAwMiwyOTAzOCwyMzcwOCwxNDgzMjUsMjkwMDcsMzc3MzAsMTQ4MTYxLDI4OTcyLDE0ODU3MCwxNTAwNTUsMTUwMDUwLDI5MTE0LDE2Njg4OCwyODg2MSwyOTE5OCwzNzk1NCwyOTIwNSwyMjgwMSwzNzk1NSwyOTIyMCwzNzY5NywxNTMwOTMsMjkyMzAsMjkyNDgsMTQ5ODc2LDI2ODEzLDI5MjY5LDI5MjcxLDE1OTU3LDE0MzQyOCwyNjYzNywyODQ3NywyOTMxNCwyOTQ4MiwyOTQ4MywxNDk1MzksMTY1OTMxLDE4NjY5LDE2NTg5MiwyOTQ4MCwyOTQ4NiwyOTY0NywyOTYxMCwxMzQyMDIsMTU4MjU0LDI5NjQxLDI5NzY5LDE0NzkzOCwxMzY5MzUsMTUwMDUyLDI2MTQ3LDE0MDIxLDE0OTk0MywxNDk5MDEsMTUwMDExLDI5Njg3LDI5NzE3LDI2ODgzLDE1MDA1NCwyOTc1MywxMzI1NDcsMTYwODcsMjk3ODgsMTQxNDg1LDI5NzkyLDE2NzYwMiwyOTc2NywyOTY2OCwyOTgxNCwzMzcyMSwyOTgwNCwxNDEyOCwyOTgxMiwzNzg3MywyNzE4MCwyOTgyNiwxODc3MSwxNTAxNTYsMTQ3ODA3LDE1MDEzNywxNjY3OTksMjMzNjYsMTY2OTE1LDEzNzM3NCwyOTg5NiwxMzc2MDgsMjk5NjYsMjk5MjksMjk5ODIsMTY3NjQxLDEzNzgwMywyMzUxMSwxNjc1OTYsMzc3NjUsMzAwMjksMzAwMjYsMzAwNTUsMzAwNjIsMTUxNDI2LDE2MTMyLDE1MDgwMywzMDA5NCwyOTc4OSwzMDExMCwzMDEzMiwzMDIxMCwzMDI1MiwzMDI4OSwzMDI4NywzMDMxOSwzMDMyNiwxNTY2NjEsMzAzNTIsMzMyNjMsMTQzMjgsMTU3OTY5LDE1Nzk2NiwzMDM2OSwzMDM3MywzMDM5MSwzMDQxMiwxNTk2NDcsMzM4OTAsMTUxNzA5LDE1MTkzMywxMzg3ODAsMzA0OTQsMzA1MDIsMzA1MjgsMjU3NzUsMTUyMDk2LDMwNTUyLDE0NDA0NCwzMDYzOSwxNjYyNDQsMTY2MjQ4LDEzNjg5NywzMDcwOCwzMDcyOSwxMzYwNTQsMTUwMDM0LDI2ODI2LDMwODk1LDMwOTE5LDMwOTMxLDM4NTY1LDMxMDIyLDE1MzA1NiwzMDkzNSwzMTAyOCwzMDg5NywxNjEyOTIsMzY3OTIsMzQ5NDgsMTY2Njk5LDE1NTc3OSwxNDA4MjgsMzExMTAsMzUwNzIsMjY4ODIsMzExMDQsMTUzNjg3LDMxMTMzLDE2MjYxNywzMTAzNiwzMTE0NSwyODIwMiwxNjAwMzgsMTYwNDAsMzExNzQsMTY4MjA1LDMxMTg4XSxcbiAgXCJldWMta3JcIjpbNDQwMzQsNDQwMzUsNDQwMzcsNDQwMzgsNDQwNDMsNDQwNDQsNDQwNDUsNDQwNDYsNDQwNDcsNDQwNTYsNDQwNjIsNDQwNjMsNDQwNjUsNDQwNjYsNDQwNjcsNDQwNjksNDQwNzAsNDQwNzEsNDQwNzIsNDQwNzMsNDQwNzQsNDQwNzUsNDQwNzgsNDQwODIsNDQwODMsNDQwODQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQwODUsNDQwODYsNDQwODcsNDQwOTAsNDQwOTEsNDQwOTMsNDQwOTQsNDQwOTUsNDQwOTcsNDQwOTgsNDQwOTksNDQxMDAsNDQxMDEsNDQxMDIsNDQxMDMsNDQxMDQsNDQxMDUsNDQxMDYsNDQxMDgsNDQxMTAsNDQxMTEsNDQxMTIsNDQxMTMsNDQxMTQsNDQxMTUsNDQxMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQxMTgsNDQxMTksNDQxMjEsNDQxMjIsNDQxMjMsNDQxMjUsNDQxMjYsNDQxMjcsNDQxMjgsNDQxMjksNDQxMzAsNDQxMzEsNDQxMzIsNDQxMzMsNDQxMzQsNDQxMzUsNDQxMzYsNDQxMzcsNDQxMzgsNDQxMzksNDQxNDAsNDQxNDEsNDQxNDIsNDQxNDMsNDQxNDYsNDQxNDcsNDQxNDksNDQxNTAsNDQxNTMsNDQxNTUsNDQxNTYsNDQxNTcsNDQxNTgsNDQxNTksNDQxNjIsNDQxNjcsNDQxNjgsNDQxNzMsNDQxNzQsNDQxNzUsNDQxNzcsNDQxNzgsNDQxNzksNDQxODEsNDQxODIsNDQxODMsNDQxODQsNDQxODUsNDQxODYsNDQxODcsNDQxOTAsNDQxOTQsNDQxOTUsNDQxOTYsNDQxOTcsNDQxOTgsNDQxOTksNDQyMDMsNDQyMDUsNDQyMDYsNDQyMDksNDQyMTAsNDQyMTEsNDQyMTIsNDQyMTMsNDQyMTQsNDQyMTUsNDQyMTgsNDQyMjIsNDQyMjMsNDQyMjQsNDQyMjYsNDQyMjcsNDQyMjksNDQyMzAsNDQyMzEsNDQyMzMsNDQyMzQsNDQyMzUsNDQyMzcsNDQyMzgsNDQyMzksNDQyNDAsNDQyNDEsNDQyNDIsNDQyNDMsNDQyNDQsNDQyNDYsNDQyNDgsNDQyNDksNDQyNTAsNDQyNTEsNDQyNTIsNDQyNTMsNDQyNTQsNDQyNTUsNDQyNTgsNDQyNTksNDQyNjEsNDQyNjIsNDQyNjUsNDQyNjcsNDQyNjksNDQyNzAsNDQyNzQsNDQyNzYsNDQyNzksNDQyODAsNDQyODEsNDQyODIsNDQyODMsNDQyODYsNDQyODcsNDQyODksNDQyOTAsNDQyOTEsNDQyOTMsNDQyOTUsNDQyOTYsNDQyOTcsNDQyOTgsNDQyOTksNDQzMDIsNDQzMDQsNDQzMDYsNDQzMDcsNDQzMDgsNDQzMDksNDQzMTAsNDQzMTEsNDQzMTMsNDQzMTQsNDQzMTUsNDQzMTcsNDQzMTgsNDQzMTksNDQzMjEsNDQzMjIsNDQzMjMsNDQzMjQsNDQzMjUsNDQzMjYsNDQzMjcsNDQzMjgsNDQzMzAsNDQzMzEsNDQzMzQsNDQzMzUsNDQzMzYsNDQzMzcsNDQzMzgsNDQzMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNDIsNDQzNDMsNDQzNDUsNDQzNDYsNDQzNDcsNDQzNDksNDQzNTAsNDQzNTEsNDQzNTIsNDQzNTMsNDQzNTQsNDQzNTUsNDQzNTgsNDQzNjAsNDQzNjIsNDQzNjMsNDQzNjQsNDQzNjUsNDQzNjYsNDQzNjcsNDQzNjksNDQzNzAsNDQzNzEsNDQzNzMsNDQzNzQsNDQzNzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNzcsNDQzNzgsNDQzNzksNDQzODAsNDQzODEsNDQzODIsNDQzODMsNDQzODQsNDQzODYsNDQzODgsNDQzODksNDQzOTAsNDQzOTEsNDQzOTIsNDQzOTMsNDQzOTQsNDQzOTUsNDQzOTgsNDQzOTksNDQ0MDEsNDQ0MDIsNDQ0MDcsNDQ0MDgsNDQ0MDksNDQ0MTAsNDQ0MTQsNDQ0MTYsNDQ0MTksNDQ0MjAsNDQ0MjEsNDQ0MjIsNDQ0MjMsNDQ0MjYsNDQ0MjcsNDQ0MjksNDQ0MzAsNDQ0MzEsNDQ0MzMsNDQ0MzQsNDQ0MzUsNDQ0MzYsNDQ0MzcsNDQ0MzgsNDQ0MzksNDQ0NDAsNDQ0NDEsNDQ0NDIsNDQ0NDMsNDQ0NDYsNDQ0NDcsNDQ0NDgsNDQ0NDksNDQ0NTAsNDQ0NTEsNDQ0NTMsNDQ0NTQsNDQ0NTUsNDQ0NTYsNDQ0NTcsNDQ0NTgsNDQ0NTksNDQ0NjAsNDQ0NjEsNDQ0NjIsNDQ0NjMsNDQ0NjQsNDQ0NjUsNDQ0NjYsNDQ0NjcsNDQ0NjgsNDQ0NjksNDQ0NzAsNDQ0NzIsNDQ0NzMsNDQ0NzQsNDQ0NzUsNDQ0NzYsNDQ0NzcsNDQ0NzgsNDQ0NzksNDQ0ODIsNDQ0ODMsNDQ0ODUsNDQ0ODYsNDQ0ODcsNDQ0ODksNDQ0OTAsNDQ0OTEsNDQ0OTIsNDQ0OTMsNDQ0OTQsNDQ0OTUsNDQ0OTgsNDQ1MDAsNDQ1MDEsNDQ1MDIsNDQ1MDMsNDQ1MDQsNDQ1MDUsNDQ1MDYsNDQ1MDcsNDQ1MDksNDQ1MTAsNDQ1MTEsNDQ1MTMsNDQ1MTQsNDQ1MTUsNDQ1MTcsNDQ1MTgsNDQ1MTksNDQ1MjAsNDQ1MjEsNDQ1MjIsNDQ1MjMsNDQ1MjQsNDQ1MjUsNDQ1MjYsNDQ1MjcsNDQ1MjgsNDQ1MjksNDQ1MzAsNDQ1MzEsNDQ1MzIsNDQ1MzMsNDQ1MzQsNDQ1MzUsNDQ1MzgsNDQ1MzksNDQ1NDEsNDQ1NDIsNDQ1NDYsNDQ1NDcsNDQ1NDgsNDQ1NDksNDQ1NTAsNDQ1NTEsNDQ1NTQsNDQ1NTYsNDQ1NTgsNDQ1NTksNDQ1NjAsNDQ1NjEsNDQ1NjIsNDQ1NjMsNDQ1NjUsNDQ1NjYsNDQ1NjcsNDQ1NjgsNDQ1NjksNDQ1NzAsNDQ1NzEsNDQ1NzIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ1NzMsNDQ1NzQsNDQ1NzUsNDQ1NzYsNDQ1NzcsNDQ1NzgsNDQ1NzksNDQ1ODAsNDQ1ODEsNDQ1ODIsNDQ1ODMsNDQ1ODQsNDQ1ODUsNDQ1ODYsNDQ1ODcsNDQ1ODgsNDQ1ODksNDQ1OTAsNDQ1OTEsNDQ1OTQsNDQ1OTUsNDQ1OTcsNDQ1OTgsNDQ2MDEsNDQ2MDMsNDQ2MDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ2MDUsNDQ2MDYsNDQ2MDcsNDQ2MTAsNDQ2MTIsNDQ2MTUsNDQ2MTYsNDQ2MTcsNDQ2MTksNDQ2MjMsNDQ2MjUsNDQ2MjYsNDQ2MjcsNDQ2MjksNDQ2MzEsNDQ2MzIsNDQ2MzMsNDQ2MzQsNDQ2MzUsNDQ2MzgsNDQ2NDIsNDQ2NDMsNDQ2NDQsNDQ2NDYsNDQ2NDcsNDQ2NTAsNDQ2NTEsNDQ2NTMsNDQ2NTQsNDQ2NTUsNDQ2NTcsNDQ2NTgsNDQ2NTksNDQ2NjAsNDQ2NjEsNDQ2NjIsNDQ2NjMsNDQ2NjYsNDQ2NzAsNDQ2NzEsNDQ2NzIsNDQ2NzMsNDQ2NzQsNDQ2NzUsNDQ2NzgsNDQ2NzksNDQ2ODAsNDQ2ODEsNDQ2ODIsNDQ2ODMsNDQ2ODUsNDQ2ODYsNDQ2ODcsNDQ2ODgsNDQ2ODksNDQ2OTAsNDQ2OTEsNDQ2OTIsNDQ2OTMsNDQ2OTQsNDQ2OTUsNDQ2OTYsNDQ2OTcsNDQ2OTgsNDQ2OTksNDQ3MDAsNDQ3MDEsNDQ3MDIsNDQ3MDMsNDQ3MDQsNDQ3MDUsNDQ3MDYsNDQ3MDcsNDQ3MDgsNDQ3MDksNDQ3MTAsNDQ3MTEsNDQ3MTIsNDQ3MTMsNDQ3MTQsNDQ3MTUsNDQ3MTYsNDQ3MTcsNDQ3MTgsNDQ3MTksNDQ3MjAsNDQ3MjEsNDQ3MjIsNDQ3MjMsNDQ3MjQsNDQ3MjUsNDQ3MjYsNDQ3MjcsNDQ3MjgsNDQ3MjksNDQ3MzAsNDQ3MzEsNDQ3MzUsNDQ3MzcsNDQ3MzgsNDQ3MzksNDQ3NDEsNDQ3NDIsNDQ3NDMsNDQ3NDQsNDQ3NDUsNDQ3NDYsNDQ3NDcsNDQ3NTAsNDQ3NTQsNDQ3NTUsNDQ3NTYsNDQ3NTcsNDQ3NTgsNDQ3NTksNDQ3NjIsNDQ3NjMsNDQ3NjUsNDQ3NjYsNDQ3NjcsNDQ3NjgsNDQ3NjksNDQ3NzAsNDQ3NzEsNDQ3NzIsNDQ3NzMsNDQ3NzQsNDQ3NzUsNDQ3NzcsNDQ3NzgsNDQ3ODAsNDQ3ODIsNDQ3ODMsNDQ3ODQsNDQ3ODUsNDQ3ODYsNDQ3ODcsNDQ3ODksNDQ3OTAsNDQ3OTEsNDQ3OTMsNDQ3OTQsNDQ3OTUsNDQ3OTcsNDQ3OTgsNDQ3OTksNDQ4MDAsNDQ4MDEsNDQ4MDIsNDQ4MDMsNDQ4MDQsNDQ4MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MDYsNDQ4MDksNDQ4MTAsNDQ4MTEsNDQ4MTIsNDQ4MTQsNDQ4MTUsNDQ4MTcsNDQ4MTgsNDQ4MTksNDQ4MjAsNDQ4MjEsNDQ4MjIsNDQ4MjMsNDQ4MjQsNDQ4MjUsNDQ4MjYsNDQ4MjcsNDQ4MjgsNDQ4MjksNDQ4MzAsNDQ4MzEsNDQ4MzIsNDQ4MzMsNDQ4MzQsNDQ4MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MzYsNDQ4MzcsNDQ4MzgsNDQ4MzksNDQ4NDAsNDQ4NDEsNDQ4NDIsNDQ4NDMsNDQ4NDYsNDQ4NDcsNDQ4NDksNDQ4NTEsNDQ4NTMsNDQ4NTQsNDQ4NTUsNDQ4NTYsNDQ4NTcsNDQ4NTgsNDQ4NTksNDQ4NjIsNDQ4NjQsNDQ4NjgsNDQ4NjksNDQ4NzAsNDQ4NzEsNDQ4NzQsNDQ4NzUsNDQ4NzYsNDQ4NzcsNDQ4NzgsNDQ4NzksNDQ4ODEsNDQ4ODIsNDQ4ODMsNDQ4ODQsNDQ4ODUsNDQ4ODYsNDQ4ODcsNDQ4ODgsNDQ4ODksNDQ4OTAsNDQ4OTEsNDQ4OTQsNDQ4OTUsNDQ4OTYsNDQ4OTcsNDQ4OTgsNDQ4OTksNDQ5MDIsNDQ5MDMsNDQ5MDQsNDQ5MDUsNDQ5MDYsNDQ5MDcsNDQ5MDgsNDQ5MDksNDQ5MTAsNDQ5MTEsNDQ5MTIsNDQ5MTMsNDQ5MTQsNDQ5MTUsNDQ5MTYsNDQ5MTcsNDQ5MTgsNDQ5MTksNDQ5MjAsNDQ5MjIsNDQ5MjMsNDQ5MjQsNDQ5MjUsNDQ5MjYsNDQ5MjcsNDQ5MjksNDQ5MzAsNDQ5MzEsNDQ5MzMsNDQ5MzQsNDQ5MzUsNDQ5MzcsNDQ5MzgsNDQ5MzksNDQ5NDAsNDQ5NDEsNDQ5NDIsNDQ5NDMsNDQ5NDYsNDQ5NDcsNDQ5NDgsNDQ5NTAsNDQ5NTEsNDQ5NTIsNDQ5NTMsNDQ5NTQsNDQ5NTUsNDQ5NTcsNDQ5NTgsNDQ5NTksNDQ5NjAsNDQ5NjEsNDQ5NjIsNDQ5NjMsNDQ5NjQsNDQ5NjUsNDQ5NjYsNDQ5NjcsNDQ5NjgsNDQ5NjksNDQ5NzAsNDQ5NzEsNDQ5NzIsNDQ5NzMsNDQ5NzQsNDQ5NzUsNDQ5NzYsNDQ5NzcsNDQ5NzgsNDQ5NzksNDQ5ODAsNDQ5ODEsNDQ5ODIsNDQ5ODMsNDQ5ODYsNDQ5ODcsNDQ5ODksNDQ5OTAsNDQ5OTEsNDQ5OTMsNDQ5OTQsNDQ5OTUsNDQ5OTYsNDQ5OTcsNDQ5OTgsNDUwMDIsNDUwMDQsNDUwMDcsNDUwMDgsNDUwMDksNDUwMTAsNDUwMTEsNDUwMTMsNDUwMTQsNDUwMTUsNDUwMTYsNDUwMTcsNDUwMTgsNDUwMTksNDUwMjEsNDUwMjIsNDUwMjMsNDUwMjQsNDUwMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwMjYsNDUwMjcsNDUwMjgsNDUwMjksNDUwMzAsNDUwMzEsNDUwMzQsNDUwMzUsNDUwMzYsNDUwMzcsNDUwMzgsNDUwMzksNDUwNDIsNDUwNDMsNDUwNDUsNDUwNDYsNDUwNDcsNDUwNDksNDUwNTAsNDUwNTEsNDUwNTIsNDUwNTMsNDUwNTQsNDUwNTUsNDUwNTgsNDUwNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwNjEsNDUwNjIsNDUwNjMsNDUwNjQsNDUwNjUsNDUwNjYsNDUwNjcsNDUwNjksNDUwNzAsNDUwNzEsNDUwNzMsNDUwNzQsNDUwNzUsNDUwNzcsNDUwNzgsNDUwNzksNDUwODAsNDUwODEsNDUwODIsNDUwODMsNDUwODYsNDUwODcsNDUwODgsNDUwODksNDUwOTAsNDUwOTEsNDUwOTIsNDUwOTMsNDUwOTQsNDUwOTUsNDUwOTcsNDUwOTgsNDUwOTksNDUxMDAsNDUxMDEsNDUxMDIsNDUxMDMsNDUxMDQsNDUxMDUsNDUxMDYsNDUxMDcsNDUxMDgsNDUxMDksNDUxMTAsNDUxMTEsNDUxMTIsNDUxMTMsNDUxMTQsNDUxMTUsNDUxMTYsNDUxMTcsNDUxMTgsNDUxMTksNDUxMjAsNDUxMjEsNDUxMjIsNDUxMjMsNDUxMjYsNDUxMjcsNDUxMjksNDUxMzEsNDUxMzMsNDUxMzUsNDUxMzYsNDUxMzcsNDUxMzgsNDUxNDIsNDUxNDQsNDUxNDYsNDUxNDcsNDUxNDgsNDUxNTAsNDUxNTEsNDUxNTIsNDUxNTMsNDUxNTQsNDUxNTUsNDUxNTYsNDUxNTcsNDUxNTgsNDUxNTksNDUxNjAsNDUxNjEsNDUxNjIsNDUxNjMsNDUxNjQsNDUxNjUsNDUxNjYsNDUxNjcsNDUxNjgsNDUxNjksNDUxNzAsNDUxNzEsNDUxNzIsNDUxNzMsNDUxNzQsNDUxNzUsNDUxNzYsNDUxNzcsNDUxNzgsNDUxNzksNDUxODIsNDUxODMsNDUxODUsNDUxODYsNDUxODcsNDUxODksNDUxOTAsNDUxOTEsNDUxOTIsNDUxOTMsNDUxOTQsNDUxOTUsNDUxOTgsNDUyMDAsNDUyMDIsNDUyMDMsNDUyMDQsNDUyMDUsNDUyMDYsNDUyMDcsNDUyMTEsNDUyMTMsNDUyMTQsNDUyMTksNDUyMjAsNDUyMjEsNDUyMjIsNDUyMjMsNDUyMjYsNDUyMzIsNDUyMzQsNDUyMzgsNDUyMzksNDUyNDEsNDUyNDIsNDUyNDMsNDUyNDUsNDUyNDYsNDUyNDcsNDUyNDgsNDUyNDksNDUyNTAsNDUyNTEsNDUyNTQsNDUyNTgsNDUyNTksNDUyNjAsNDUyNjEsNDUyNjIsNDUyNjMsNDUyNjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyNjcsNDUyNjksNDUyNzAsNDUyNzEsNDUyNzMsNDUyNzQsNDUyNzUsNDUyNzYsNDUyNzcsNDUyNzgsNDUyNzksNDUyODEsNDUyODIsNDUyODMsNDUyODQsNDUyODYsNDUyODcsNDUyODgsNDUyODksNDUyOTAsNDUyOTEsNDUyOTIsNDUyOTMsNDUyOTQsNDUyOTUsNDUyOTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyOTcsNDUyOTgsNDUyOTksNDUzMDAsNDUzMDEsNDUzMDIsNDUzMDMsNDUzMDQsNDUzMDUsNDUzMDYsNDUzMDcsNDUzMDgsNDUzMDksNDUzMTAsNDUzMTEsNDUzMTIsNDUzMTMsNDUzMTQsNDUzMTUsNDUzMTYsNDUzMTcsNDUzMTgsNDUzMTksNDUzMjIsNDUzMjUsNDUzMjYsNDUzMjcsNDUzMjksNDUzMzIsNDUzMzMsNDUzMzQsNDUzMzUsNDUzMzgsNDUzNDIsNDUzNDMsNDUzNDQsNDUzNDUsNDUzNDYsNDUzNTAsNDUzNTEsNDUzNTMsNDUzNTQsNDUzNTUsNDUzNTcsNDUzNTgsNDUzNTksNDUzNjAsNDUzNjEsNDUzNjIsNDUzNjMsNDUzNjYsNDUzNzAsNDUzNzEsNDUzNzIsNDUzNzMsNDUzNzQsNDUzNzUsNDUzNzgsNDUzNzksNDUzODEsNDUzODIsNDUzODMsNDUzODUsNDUzODYsNDUzODcsNDUzODgsNDUzODksNDUzOTAsNDUzOTEsNDUzOTQsNDUzOTUsNDUzOTgsNDUzOTksNDU0MDEsNDU0MDIsNDU0MDMsNDU0MDUsNDU0MDYsNDU0MDcsNDU0MDksNDU0MTAsNDU0MTEsNDU0MTIsNDU0MTMsNDU0MTQsNDU0MTUsNDU0MTYsNDU0MTcsNDU0MTgsNDU0MTksNDU0MjAsNDU0MjEsNDU0MjIsNDU0MjMsNDU0MjQsNDU0MjUsNDU0MjYsNDU0MjcsNDU0MjgsNDU0MjksNDU0MzAsNDU0MzEsNDU0MzQsNDU0MzUsNDU0MzcsNDU0MzgsNDU0MzksNDU0NDEsNDU0NDMsNDU0NDQsNDU0NDUsNDU0NDYsNDU0NDcsNDU0NTAsNDU0NTIsNDU0NTQsNDU0NTUsNDU0NTYsNDU0NTcsNDU0NjEsNDU0NjIsNDU0NjMsNDU0NjUsNDU0NjYsNDU0NjcsNDU0NjksNDU0NzAsNDU0NzEsNDU0NzIsNDU0NzMsNDU0NzQsNDU0NzUsNDU0NzYsNDU0NzcsNDU0NzgsNDU0NzksNDU0ODEsNDU0ODIsNDU0ODMsNDU0ODQsNDU0ODUsNDU0ODYsNDU0ODcsNDU0ODgsNDU0ODksNDU0OTAsNDU0OTEsNDU0OTIsNDU0OTMsNDU0OTQsNDU0OTUsNDU0OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU0OTcsNDU0OTgsNDU0OTksNDU1MDAsNDU1MDEsNDU1MDIsNDU1MDMsNDU1MDQsNDU1MDUsNDU1MDYsNDU1MDcsNDU1MDgsNDU1MDksNDU1MTAsNDU1MTEsNDU1MTIsNDU1MTMsNDU1MTQsNDU1MTUsNDU1MTcsNDU1MTgsNDU1MTksNDU1MjEsNDU1MjIsNDU1MjMsNDU1MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU1MjYsNDU1MjcsNDU1MjgsNDU1MjksNDU1MzAsNDU1MzEsNDU1MzQsNDU1MzYsNDU1MzcsNDU1MzgsNDU1MzksNDU1NDAsNDU1NDEsNDU1NDIsNDU1NDMsNDU1NDYsNDU1NDcsNDU1NDksNDU1NTAsNDU1NTEsNDU1NTMsNDU1NTQsNDU1NTUsNDU1NTYsNDU1NTcsNDU1NTgsNDU1NTksNDU1NjAsNDU1NjIsNDU1NjQsNDU1NjYsNDU1NjcsNDU1NjgsNDU1NjksNDU1NzAsNDU1NzEsNDU1NzQsNDU1NzUsNDU1NzcsNDU1NzgsNDU1ODEsNDU1ODIsNDU1ODMsNDU1ODQsNDU1ODUsNDU1ODYsNDU1ODcsNDU1OTAsNDU1OTIsNDU1OTQsNDU1OTUsNDU1OTYsNDU1OTcsNDU1OTgsNDU1OTksNDU2MDEsNDU2MDIsNDU2MDMsNDU2MDQsNDU2MDUsNDU2MDYsNDU2MDcsNDU2MDgsNDU2MDksNDU2MTAsNDU2MTEsNDU2MTIsNDU2MTMsNDU2MTQsNDU2MTUsNDU2MTYsNDU2MTcsNDU2MTgsNDU2MTksNDU2MjEsNDU2MjIsNDU2MjMsNDU2MjQsNDU2MjUsNDU2MjYsNDU2MjcsNDU2MjksNDU2MzAsNDU2MzEsNDU2MzIsNDU2MzMsNDU2MzQsNDU2MzUsNDU2MzYsNDU2MzcsNDU2MzgsNDU2MzksNDU2NDAsNDU2NDEsNDU2NDIsNDU2NDMsNDU2NDQsNDU2NDUsNDU2NDYsNDU2NDcsNDU2NDgsNDU2NDksNDU2NTAsNDU2NTEsNDU2NTIsNDU2NTMsNDU2NTQsNDU2NTUsNDU2NTcsNDU2NTgsNDU2NTksNDU2NjEsNDU2NjIsNDU2NjMsNDU2NjUsNDU2NjYsNDU2NjcsNDU2NjgsNDU2NjksNDU2NzAsNDU2NzEsNDU2NzQsNDU2NzUsNDU2NzYsNDU2NzcsNDU2NzgsNDU2NzksNDU2ODAsNDU2ODEsNDU2ODIsNDU2ODMsNDU2ODYsNDU2ODcsNDU2ODgsNDU2ODksNDU2OTAsNDU2OTEsNDU2OTMsNDU2OTQsNDU2OTUsNDU2OTYsNDU2OTcsNDU2OTgsNDU2OTksNDU3MDIsNDU3MDMsNDU3MDQsNDU3MDYsNDU3MDcsNDU3MDgsNDU3MDksNDU3MTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3MTEsNDU3MTQsNDU3MTUsNDU3MTcsNDU3MTgsNDU3MTksNDU3MjMsNDU3MjQsNDU3MjUsNDU3MjYsNDU3MjcsNDU3MzAsNDU3MzIsNDU3MzUsNDU3MzYsNDU3MzcsNDU3MzksNDU3NDEsNDU3NDIsNDU3NDMsNDU3NDUsNDU3NDYsNDU3NDcsNDU3NDksNDU3NTAsNDU3NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3NTIsNDU3NTMsNDU3NTQsNDU3NTUsNDU3NTYsNDU3NTcsNDU3NTgsNDU3NTksNDU3NjAsNDU3NjEsNDU3NjIsNDU3NjMsNDU3NjQsNDU3NjUsNDU3NjYsNDU3NjcsNDU3NzAsNDU3NzEsNDU3NzMsNDU3NzQsNDU3NzUsNDU3NzcsNDU3NzksNDU3ODAsNDU3ODEsNDU3ODIsNDU3ODMsNDU3ODYsNDU3ODgsNDU3OTAsNDU3OTEsNDU3OTIsNDU3OTMsNDU3OTUsNDU3OTksNDU4MDEsNDU4MDIsNDU4MDgsNDU4MDksNDU4MTAsNDU4MTQsNDU4MjAsNDU4MjEsNDU4MjIsNDU4MjYsNDU4MjcsNDU4MjksNDU4MzAsNDU4MzEsNDU4MzMsNDU4MzQsNDU4MzUsNDU4MzYsNDU4MzcsNDU4MzgsNDU4MzksNDU4NDIsNDU4NDYsNDU4NDcsNDU4NDgsNDU4NDksNDU4NTAsNDU4NTEsNDU4NTMsNDU4NTQsNDU4NTUsNDU4NTYsNDU4NTcsNDU4NTgsNDU4NTksNDU4NjAsNDU4NjEsNDU4NjIsNDU4NjMsNDU4NjQsNDU4NjUsNDU4NjYsNDU4NjcsNDU4NjgsNDU4NjksNDU4NzAsNDU4NzEsNDU4NzIsNDU4NzMsNDU4NzQsNDU4NzUsNDU4NzYsNDU4NzcsNDU4NzgsNDU4NzksNDU4ODAsNDU4ODEsNDU4ODIsNDU4ODMsNDU4ODQsNDU4ODUsNDU4ODYsNDU4ODcsNDU4ODgsNDU4ODksNDU4OTAsNDU4OTEsNDU4OTIsNDU4OTMsNDU4OTQsNDU4OTUsNDU4OTYsNDU4OTcsNDU4OTgsNDU4OTksNDU5MDAsNDU5MDEsNDU5MDIsNDU5MDMsNDU5MDQsNDU5MDUsNDU5MDYsNDU5MDcsNDU5MTEsNDU5MTMsNDU5MTQsNDU5MTcsNDU5MjAsNDU5MjEsNDU5MjIsNDU5MjMsNDU5MjYsNDU5MjgsNDU5MzAsNDU5MzIsNDU5MzMsNDU5MzUsNDU5MzgsNDU5MzksNDU5NDEsNDU5NDIsNDU5NDMsNDU5NDUsNDU5NDYsNDU5NDcsNDU5NDgsNDU5NDksNDU5NTAsNDU5NTEsNDU5NTQsNDU5NTgsNDU5NTksNDU5NjAsNDU5NjEsNDU5NjIsNDU5NjMsNDU5NjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5NjYsNDU5NjcsNDU5NjksNDU5NzAsNDU5NzEsNDU5NzMsNDU5NzQsNDU5NzUsNDU5NzYsNDU5NzcsNDU5NzgsNDU5NzksNDU5ODAsNDU5ODEsNDU5ODIsNDU5ODMsNDU5ODYsNDU5ODcsNDU5ODgsNDU5ODksNDU5OTAsNDU5OTEsNDU5OTMsNDU5OTQsNDU5OTUsNDU5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5OTgsNDU5OTksNDYwMDAsNDYwMDEsNDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcsNDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYwMjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYwMzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYwNDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcsNDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIsNDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzksNDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYwOTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYxMDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYxMTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAsNDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYsNDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIsNDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYxNTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYxNjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYxNzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAsNDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUsNDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEsNDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYyMTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYyMjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYyMjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMsNDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAsNDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcsNDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYyNzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYyODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYyOTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUsNDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQsNDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEsNDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYzNDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYzNTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYzNjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODksNDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUsNDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAsNDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUsNDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEsNDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEsNDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEsNDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEsNDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMsNDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgsNDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQsNDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2MzksNDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUsNDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEsNDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgsNDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQsNDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAsNDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcsNDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUsNDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEsNDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcsNDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIsNDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4NjcsNDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMsNDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5MjgsNDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUsNDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEsNDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcsNDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMsNDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQsNDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcwNDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcwNTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgsNDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQsNDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcwOTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcxMDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcxMTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYsNDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMsNDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEsNDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcxNzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcxODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcxODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgsNDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYsNDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMsNDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcyNDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcyNDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcyNTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUsNDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAsNDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcsNDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDczMDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDczMDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgsNDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQsNDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMsNDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDczNjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDczNzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDczNzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUsNDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAsNDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYsNDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEsNDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAsNDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0NzgsNDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEsNDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYsNDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQsNDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMsNDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQsNDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIsNDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2NjgsNDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUsNDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQsNDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIsNDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAsNDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgsNDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcsNDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMsNDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAsNDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYsNDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMsNDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAsNDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIsNDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAsNDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcsNDc5OTgsNDc5OTksNDgwMDAsNDgwMDEsNDgwMDIsNDgwMDMsNDgwMDQsNDgwMDUsNDgwMDYsNDgwMDcsNDgwMDksNDgwMTAsNDgwMTEsNDgwMTMsNDgwMTQsNDgwMTUsNDgwMTcsNDgwMTgsNDgwMTksNDgwMjAsNDgwMjEsNDgwMjIsNDgwMjMsNDgwMjQsNDgwMjUsNDgwMjYsNDgwMjcsNDgwMjgsNDgwMjksNDgwMzAsNDgwMzEsNDgwMzIsNDgwMzMsNDgwMzQsNDgwMzUsNDgwMzcsNDgwMzgsNDgwMzksNDgwNDEsNDgwNDIsNDgwNDMsNDgwNDUsNDgwNDYsNDgwNDcsNDgwNDgsNDgwNDksNDgwNTAsNDgwNTEsNDgwNTMsNDgwNTQsNDgwNTYsNDgwNTcsNDgwNTgsNDgwNTksNDgwNjAsNDgwNjEsNDgwNjIsNDgwNjMsNDgwNjUsNDgwNjYsNDgwNjcsNDgwNjksNDgwNzAsNDgwNzEsNDgwNzMsNDgwNzQsNDgwNzUsNDgwNzYsNDgwNzcsNDgwNzgsNDgwNzksNDgwODEsNDgwODIsNDgwODQsNDgwODUsNDgwODYsNDgwODcsNDgwODgsNDgwODksNDgwOTAsNDgwOTEsNDgwOTIsNDgwOTMsNDgwOTQsNDgwOTUsNDgwOTYsNDgwOTcsNDgwOTgsNDgwOTksNDgxMDAsNDgxMDEsNDgxMDIsNDgxMDMsNDgxMDQsNDgxMDUsNDgxMDYsNDgxMDcsNDgxMDgsNDgxMDksNDgxMTAsNDgxMTEsNDgxMTIsNDgxMTMsNDgxMTQsNDgxMTUsNDgxMTYsNDgxMTcsNDgxMTgsNDgxMTksNDgxMjIsNDgxMjMsNDgxMjUsNDgxMjYsNDgxMjksNDgxMzEsNDgxMzIsNDgxMzMsNDgxMzQsNDgxMzUsNDgxMzgsNDgxNDIsNDgxNDQsNDgxNDYsNDgxNDcsNDgxNTMsNDgxNTQsNDgxNjAsNDgxNjEsNDgxNjIsNDgxNjMsNDgxNjYsNDgxNjgsNDgxNzAsNDgxNzEsNDgxNzIsNDgxNzQsNDgxNzUsNDgxNzgsNDgxNzksNDgxODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgxODIsNDgxODMsNDgxODUsNDgxODYsNDgxODcsNDgxODgsNDgxODksNDgxOTAsNDgxOTEsNDgxOTQsNDgxOTgsNDgxOTksNDgyMDAsNDgyMDIsNDgyMDMsNDgyMDYsNDgyMDcsNDgyMDksNDgyMTAsNDgyMTEsNDgyMTIsNDgyMTMsNDgyMTQsNDgyMTUsNDgyMTYsNDgyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgyMTgsNDgyMTksNDgyMjAsNDgyMjIsNDgyMjMsNDgyMjQsNDgyMjUsNDgyMjYsNDgyMjcsNDgyMjgsNDgyMjksNDgyMzAsNDgyMzEsNDgyMzIsNDgyMzMsNDgyMzQsNDgyMzUsNDgyMzYsNDgyMzcsNDgyMzgsNDgyMzksNDgyNDAsNDgyNDEsNDgyNDIsNDgyNDMsNDgyNDQsNDgyNDUsNDgyNDYsNDgyNDcsNDgyNDgsNDgyNDksNDgyNTAsNDgyNTEsNDgyNTIsNDgyNTMsNDgyNTQsNDgyNTUsNDgyNTYsNDgyNTcsNDgyNTgsNDgyNTksNDgyNjIsNDgyNjMsNDgyNjUsNDgyNjYsNDgyNjksNDgyNzEsNDgyNzIsNDgyNzMsNDgyNzQsNDgyNzUsNDgyNzgsNDgyODAsNDgyODMsNDgyODQsNDgyODUsNDgyODYsNDgyODcsNDgyOTAsNDgyOTEsNDgyOTMsNDgyOTQsNDgyOTcsNDgyOTgsNDgyOTksNDgzMDAsNDgzMDEsNDgzMDIsNDgzMDMsNDgzMDYsNDgzMTAsNDgzMTEsNDgzMTIsNDgzMTMsNDgzMTQsNDgzMTUsNDgzMTgsNDgzMTksNDgzMjEsNDgzMjIsNDgzMjMsNDgzMjUsNDgzMjYsNDgzMjcsNDgzMjgsNDgzMjksNDgzMzAsNDgzMzEsNDgzMzIsNDgzMzQsNDgzMzgsNDgzMzksNDgzNDAsNDgzNDIsNDgzNDMsNDgzNDUsNDgzNDYsNDgzNDcsNDgzNDksNDgzNTAsNDgzNTEsNDgzNTIsNDgzNTMsNDgzNTQsNDgzNTUsNDgzNTYsNDgzNTcsNDgzNTgsNDgzNTksNDgzNjAsNDgzNjEsNDgzNjIsNDgzNjMsNDgzNjQsNDgzNjUsNDgzNjYsNDgzNjcsNDgzNjgsNDgzNjksNDgzNzAsNDgzNzEsNDgzNzUsNDgzNzcsNDgzNzgsNDgzNzksNDgzODEsNDgzODIsNDgzODMsNDgzODQsNDgzODUsNDgzODYsNDgzODcsNDgzOTAsNDgzOTIsNDgzOTQsNDgzOTUsNDgzOTYsNDgzOTcsNDgzOTgsNDgzOTksNDg0MDEsNDg0MDIsNDg0MDMsNDg0MDUsNDg0MDYsNDg0MDcsNDg0MDgsNDg0MDksNDg0MTAsNDg0MTEsNDg0MTIsNDg0MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0MTQsNDg0MTUsNDg0MTYsNDg0MTcsNDg0MTgsNDg0MTksNDg0MjEsNDg0MjIsNDg0MjMsNDg0MjQsNDg0MjUsNDg0MjYsNDg0MjcsNDg0MjksNDg0MzAsNDg0MzEsNDg0MzIsNDg0MzMsNDg0MzQsNDg0MzUsNDg0MzYsNDg0MzcsNDg0MzgsNDg0MzksNDg0NDAsNDg0NDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0NDIsNDg0NDMsNDg0NDQsNDg0NDUsNDg0NDYsNDg0NDcsNDg0NDksNDg0NTAsNDg0NTEsNDg0NTIsNDg0NTMsNDg0NTQsNDg0NTUsNDg0NTgsNDg0NTksNDg0NjEsNDg0NjIsNDg0NjMsNDg0NjUsNDg0NjYsNDg0NjcsNDg0NjgsNDg0NjksNDg0NzAsNDg0NzEsNDg0NzQsNDg0NzUsNDg0NzYsNDg0NzcsNDg0NzgsNDg0NzksNDg0ODAsNDg0ODEsNDg0ODIsNDg0ODMsNDg0ODUsNDg0ODYsNDg0ODcsNDg0ODksNDg0OTAsNDg0OTEsNDg0OTIsNDg0OTMsNDg0OTQsNDg0OTUsNDg0OTYsNDg0OTcsNDg0OTgsNDg0OTksNDg1MDAsNDg1MDEsNDg1MDIsNDg1MDMsNDg1MDQsNDg1MDUsNDg1MDYsNDg1MDcsNDg1MDgsNDg1MDksNDg1MTAsNDg1MTEsNDg1MTQsNDg1MTUsNDg1MTcsNDg1MTgsNDg1MjMsNDg1MjQsNDg1MjUsNDg1MjYsNDg1MjcsNDg1MzAsNDg1MzIsNDg1MzQsNDg1MzUsNDg1MzYsNDg1MzksNDg1NDEsNDg1NDIsNDg1NDMsNDg1NDQsNDg1NDUsNDg1NDYsNDg1NDcsNDg1NDksNDg1NTAsNDg1NTEsNDg1NTIsNDg1NTMsNDg1NTQsNDg1NTUsNDg1NTYsNDg1NTcsNDg1NTgsNDg1NTksNDg1NjEsNDg1NjIsNDg1NjMsNDg1NjQsNDg1NjUsNDg1NjYsNDg1NjcsNDg1NjksNDg1NzAsNDg1NzEsNDg1NzIsNDg1NzMsNDg1NzQsNDg1NzUsNDg1NzYsNDg1NzcsNDg1NzgsNDg1NzksNDg1ODAsNDg1ODEsNDg1ODIsNDg1ODMsNDg1ODQsNDg1ODUsNDg1ODYsNDg1ODcsNDg1ODgsNDg1ODksNDg1OTAsNDg1OTEsNDg1OTIsNDg1OTMsNDg1OTQsNDg1OTUsNDg1OTgsNDg1OTksNDg2MDEsNDg2MDIsNDg2MDMsNDg2MDUsNDg2MDYsNDg2MDcsNDg2MDgsNDg2MDksNDg2MTAsNDg2MTEsNDg2MTIsNDg2MTMsNDg2MTQsNDg2MTUsNDg2MTYsNDg2MTgsNDg2MTksNDg2MjAsNDg2MjEsNDg2MjIsNDg2MjMsNDg2MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2MjYsNDg2MjcsNDg2MjksNDg2MzAsNDg2MzEsNDg2MzMsNDg2MzQsNDg2MzUsNDg2MzYsNDg2MzcsNDg2MzgsNDg2MzksNDg2NDEsNDg2NDIsNDg2NDQsNDg2NDYsNDg2NDcsNDg2NDgsNDg2NDksNDg2NTAsNDg2NTEsNDg2NTQsNDg2NTUsNDg2NTcsNDg2NTgsNDg2NTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2NjEsNDg2NjIsNDg2NjMsNDg2NjQsNDg2NjUsNDg2NjYsNDg2NjcsNDg2NzAsNDg2NzIsNDg2NzMsNDg2NzQsNDg2NzUsNDg2NzYsNDg2NzcsNDg2NzgsNDg2NzksNDg2ODAsNDg2ODEsNDg2ODIsNDg2ODMsNDg2ODQsNDg2ODUsNDg2ODYsNDg2ODcsNDg2ODgsNDg2ODksNDg2OTAsNDg2OTEsNDg2OTIsNDg2OTMsNDg2OTQsNDg2OTUsNDg2OTYsNDg2OTcsNDg2OTgsNDg2OTksNDg3MDAsNDg3MDEsNDg3MDIsNDg3MDMsNDg3MDQsNDg3MDUsNDg3MDYsNDg3MDcsNDg3MTAsNDg3MTEsNDg3MTMsNDg3MTQsNDg3MTUsNDg3MTcsNDg3MTksNDg3MjAsNDg3MjEsNDg3MjIsNDg3MjMsNDg3MjYsNDg3MjgsNDg3MzIsNDg3MzMsNDg3MzQsNDg3MzUsNDg3MzgsNDg3MzksNDg3NDEsNDg3NDIsNDg3NDMsNDg3NDUsNDg3NDcsNDg3NDgsNDg3NDksNDg3NTAsNDg3NTEsNDg3NTQsNDg3NTgsNDg3NTksNDg3NjAsNDg3NjEsNDg3NjIsNDg3NjYsNDg3NjcsNDg3NjksNDg3NzAsNDg3NzEsNDg3NzMsNDg3NzQsNDg3NzUsNDg3NzYsNDg3NzcsNDg3NzgsNDg3NzksNDg3ODIsNDg3ODYsNDg3ODcsNDg3ODgsNDg3ODksNDg3OTAsNDg3OTEsNDg3OTQsNDg3OTUsNDg3OTYsNDg3OTcsNDg3OTgsNDg3OTksNDg4MDAsNDg4MDEsNDg4MDIsNDg4MDMsNDg4MDQsNDg4MDUsNDg4MDYsNDg4MDcsNDg4MDksNDg4MTAsNDg4MTEsNDg4MTIsNDg4MTMsNDg4MTQsNDg4MTUsNDg4MTYsNDg4MTcsNDg4MTgsNDg4MTksNDg4MjAsNDg4MjEsNDg4MjIsNDg4MjMsNDg4MjQsNDg4MjUsNDg4MjYsNDg4MjcsNDg4MjgsNDg4MjksNDg4MzAsNDg4MzEsNDg4MzIsNDg4MzMsNDg4MzQsNDg4MzUsNDg4MzYsNDg4MzcsNDg4MzgsNDg4MzksNDg4NDAsNDg4NDEsNDg4NDIsNDg4NDMsNDg4NDQsNDg4NDUsNDg4NDYsNDg4NDcsNDg4NTAsNDg4NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4NTMsNDg4NTQsNDg4NTcsNDg4NTgsNDg4NTksNDg4NjAsNDg4NjEsNDg4NjIsNDg4NjMsNDg4NjUsNDg4NjYsNDg4NzAsNDg4NzEsNDg4NzIsNDg4NzMsNDg4NzQsNDg4NzUsNDg4NzcsNDg4NzgsNDg4NzksNDg4ODAsNDg4ODEsNDg4ODIsNDg4ODMsNDg4ODQsNDg4ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4ODYsNDg4ODcsNDg4ODgsNDg4ODksNDg4OTAsNDg4OTEsNDg4OTIsNDg4OTMsNDg4OTQsNDg4OTUsNDg4OTYsNDg4OTgsNDg4OTksNDg5MDAsNDg5MDEsNDg5MDIsNDg5MDMsNDg5MDYsNDg5MDcsNDg5MDgsNDg5MDksNDg5MTAsNDg5MTEsNDg5MTIsNDg5MTMsNDg5MTQsNDg5MTUsNDg5MTYsNDg5MTcsNDg5MTgsNDg5MTksNDg5MjIsNDg5MjYsNDg5MjcsNDg5MjgsNDg5MjksNDg5MzAsNDg5MzEsNDg5MzIsNDg5MzMsNDg5MzQsNDg5MzUsNDg5MzYsNDg5MzcsNDg5MzgsNDg5MzksNDg5NDAsNDg5NDEsNDg5NDIsNDg5NDMsNDg5NDQsNDg5NDUsNDg5NDYsNDg5NDcsNDg5NDgsNDg5NDksNDg5NTAsNDg5NTEsNDg5NTIsNDg5NTMsNDg5NTQsNDg5NTUsNDg5NTYsNDg5NTcsNDg5NTgsNDg5NTksNDg5NjIsNDg5NjMsNDg5NjUsNDg5NjYsNDg5NjcsNDg5NjksNDg5NzAsNDg5NzEsNDg5NzIsNDg5NzMsNDg5NzQsNDg5NzUsNDg5NzgsNDg5NzksNDg5ODAsNDg5ODIsNDg5ODMsNDg5ODQsNDg5ODUsNDg5ODYsNDg5ODcsNDg5ODgsNDg5ODksNDg5OTAsNDg5OTEsNDg5OTIsNDg5OTMsNDg5OTQsNDg5OTUsNDg5OTYsNDg5OTcsNDg5OTgsNDg5OTksNDkwMDAsNDkwMDEsNDkwMDIsNDkwMDMsNDkwMDQsNDkwMDUsNDkwMDYsNDkwMDcsNDkwMDgsNDkwMDksNDkwMTAsNDkwMTEsNDkwMTIsNDkwMTMsNDkwMTQsNDkwMTUsNDkwMTYsNDkwMTcsNDkwMTgsNDkwMTksNDkwMjAsNDkwMjEsNDkwMjIsNDkwMjMsNDkwMjQsNDkwMjUsNDkwMjYsNDkwMjcsNDkwMjgsNDkwMjksNDkwMzAsNDkwMzEsNDkwMzIsNDkwMzMsNDkwMzQsNDkwMzUsNDkwMzYsNDkwMzcsNDkwMzgsNDkwMzksNDkwNDAsNDkwNDEsNDkwNDIsNDkwNDMsNDkwNDUsNDkwNDYsNDkwNDcsNDkwNDgsNDkwNDksNDkwNTAsNDkwNTEsNDkwNTIsNDkwNTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwNTQsNDkwNTUsNDkwNTYsNDkwNTcsNDkwNTgsNDkwNTksNDkwNjAsNDkwNjEsNDkwNjIsNDkwNjMsNDkwNjQsNDkwNjUsNDkwNjYsNDkwNjcsNDkwNjgsNDkwNjksNDkwNzAsNDkwNzEsNDkwNzMsNDkwNzQsNDkwNzUsNDkwNzYsNDkwNzcsNDkwNzgsNDkwNzksNDkwODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwODEsNDkwODIsNDkwODMsNDkwODQsNDkwODUsNDkwODYsNDkwODcsNDkwODgsNDkwODksNDkwOTAsNDkwOTEsNDkwOTIsNDkwOTQsNDkwOTUsNDkwOTYsNDkwOTcsNDkwOTgsNDkwOTksNDkxMDIsNDkxMDMsNDkxMDUsNDkxMDYsNDkxMDcsNDkxMDksNDkxMTAsNDkxMTEsNDkxMTIsNDkxMTMsNDkxMTQsNDkxMTUsNDkxMTcsNDkxMTgsNDkxMjAsNDkxMjIsNDkxMjMsNDkxMjQsNDkxMjUsNDkxMjYsNDkxMjcsNDkxMjgsNDkxMjksNDkxMzAsNDkxMzEsNDkxMzIsNDkxMzMsNDkxMzQsNDkxMzUsNDkxMzYsNDkxMzcsNDkxMzgsNDkxMzksNDkxNDAsNDkxNDEsNDkxNDIsNDkxNDMsNDkxNDQsNDkxNDUsNDkxNDYsNDkxNDcsNDkxNDgsNDkxNDksNDkxNTAsNDkxNTEsNDkxNTIsNDkxNTMsNDkxNTQsNDkxNTUsNDkxNTYsNDkxNTcsNDkxNTgsNDkxNTksNDkxNjAsNDkxNjEsNDkxNjIsNDkxNjMsNDkxNjQsNDkxNjUsNDkxNjYsNDkxNjcsNDkxNjgsNDkxNjksNDkxNzAsNDkxNzEsNDkxNzIsNDkxNzMsNDkxNzQsNDkxNzUsNDkxNzYsNDkxNzcsNDkxNzgsNDkxNzksNDkxODAsNDkxODEsNDkxODIsNDkxODMsNDkxODQsNDkxODUsNDkxODYsNDkxODcsNDkxODgsNDkxODksNDkxOTAsNDkxOTEsNDkxOTIsNDkxOTMsNDkxOTQsNDkxOTUsNDkxOTYsNDkxOTcsNDkxOTgsNDkxOTksNDkyMDAsNDkyMDEsNDkyMDIsNDkyMDMsNDkyMDQsNDkyMDUsNDkyMDYsNDkyMDcsNDkyMDgsNDkyMDksNDkyMTAsNDkyMTEsNDkyMTMsNDkyMTQsNDkyMTUsNDkyMTYsNDkyMTcsNDkyMTgsNDkyMTksNDkyMjAsNDkyMjEsNDkyMjIsNDkyMjMsNDkyMjQsNDkyMjUsNDkyMjYsNDkyMjcsNDkyMjgsNDkyMjksNDkyMzAsNDkyMzEsNDkyMzIsNDkyMzQsNDkyMzUsNDkyMzYsNDkyMzcsNDkyMzgsNDkyMzksNDkyNDEsNDkyNDIsNDkyNDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNDUsNDkyNDYsNDkyNDcsNDkyNDksNDkyNTAsNDkyNTEsNDkyNTIsNDkyNTMsNDkyNTQsNDkyNTUsNDkyNTgsNDkyNTksNDkyNjAsNDkyNjEsNDkyNjIsNDkyNjMsNDkyNjQsNDkyNjUsNDkyNjYsNDkyNjcsNDkyNjgsNDkyNjksNDkyNzAsNDkyNzEsNDkyNzIsNDkyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNzQsNDkyNzUsNDkyNzYsNDkyNzcsNDkyNzgsNDkyNzksNDkyODAsNDkyODEsNDkyODIsNDkyODMsNDkyODQsNDkyODUsNDkyODYsNDkyODcsNDkyODgsNDkyODksNDkyOTAsNDkyOTEsNDkyOTIsNDkyOTMsNDkyOTQsNDkyOTUsNDkyOTgsNDkyOTksNDkzMDEsNDkzMDIsNDkzMDMsNDkzMDUsNDkzMDYsNDkzMDcsNDkzMDgsNDkzMDksNDkzMTAsNDkzMTEsNDkzMTQsNDkzMTYsNDkzMTgsNDkzMTksNDkzMjAsNDkzMjEsNDkzMjIsNDkzMjMsNDkzMjYsNDkzMjksNDkzMzAsNDkzMzUsNDkzMzYsNDkzMzcsNDkzMzgsNDkzMzksNDkzNDIsNDkzNDYsNDkzNDcsNDkzNDgsNDkzNTAsNDkzNTEsNDkzNTQsNDkzNTUsNDkzNTcsNDkzNTgsNDkzNTksNDkzNjEsNDkzNjIsNDkzNjMsNDkzNjQsNDkzNjUsNDkzNjYsNDkzNjcsNDkzNzAsNDkzNzQsNDkzNzUsNDkzNzYsNDkzNzcsNDkzNzgsNDkzNzksNDkzODIsNDkzODMsNDkzODUsNDkzODYsNDkzODcsNDkzODksNDkzOTAsNDkzOTEsNDkzOTIsNDkzOTMsNDkzOTQsNDkzOTUsNDkzOTgsNDk0MDAsNDk0MDIsNDk0MDMsNDk0MDQsNDk0MDUsNDk0MDYsNDk0MDcsNDk0MDksNDk0MTAsNDk0MTEsNDk0MTMsNDk0MTQsNDk0MTUsNDk0MTcsNDk0MTgsNDk0MTksNDk0MjAsNDk0MjEsNDk0MjIsNDk0MjMsNDk0MjUsNDk0MjYsNDk0MjcsNDk0MjgsNDk0MzAsNDk0MzEsNDk0MzIsNDk0MzMsNDk0MzQsNDk0MzUsNDk0NDEsNDk0NDIsNDk0NDUsNDk0NDgsNDk0NDksNDk0NTAsNDk0NTEsNDk0NTQsNDk0NTgsNDk0NTksNDk0NjAsNDk0NjEsNDk0NjMsNDk0NjYsNDk0NjcsNDk0NjksNDk0NzAsNDk0NzEsNDk0NzMsNDk0NzQsNDk0NzUsNDk0NzYsNDk0NzcsNDk0NzgsNDk0NzksNDk0ODIsNDk0ODYsNDk0ODcsNDk0ODgsNDk0ODksNDk0OTAsNDk0OTEsNDk0OTQsNDk0OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk0OTcsNDk0OTgsNDk0OTksNDk1MDEsNDk1MDIsNDk1MDMsNDk1MDQsNDk1MDUsNDk1MDYsNDk1MDcsNDk1MTAsNDk1MTQsNDk1MTUsNDk1MTYsNDk1MTcsNDk1MTgsNDk1MTksNDk1MjEsNDk1MjIsNDk1MjMsNDk1MjUsNDk1MjYsNDk1MjcsNDk1MjksNDk1MzAsNDk1MzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk1MzIsNDk1MzMsNDk1MzQsNDk1MzUsNDk1MzYsNDk1MzcsNDk1MzgsNDk1MzksNDk1NDAsNDk1NDIsNDk1NDMsNDk1NDQsNDk1NDUsNDk1NDYsNDk1NDcsNDk1NTEsNDk1NTMsNDk1NTQsNDk1NTUsNDk1NTcsNDk1NTksNDk1NjAsNDk1NjEsNDk1NjIsNDk1NjMsNDk1NjYsNDk1NjgsNDk1NzAsNDk1NzEsNDk1NzIsNDk1NzQsNDk1NzUsNDk1NzgsNDk1NzksNDk1ODEsNDk1ODIsNDk1ODMsNDk1ODUsNDk1ODYsNDk1ODcsNDk1ODgsNDk1ODksNDk1OTAsNDk1OTEsNDk1OTIsNDk1OTMsNDk1OTQsNDk1OTUsNDk1OTYsNDk1OTgsNDk1OTksNDk2MDAsNDk2MDEsNDk2MDIsNDk2MDMsNDk2MDUsNDk2MDYsNDk2MDcsNDk2MDksNDk2MTAsNDk2MTEsNDk2MTMsNDk2MTQsNDk2MTUsNDk2MTYsNDk2MTcsNDk2MTgsNDk2MTksNDk2MjEsNDk2MjIsNDk2MjUsNDk2MjYsNDk2MjcsNDk2MjgsNDk2MjksNDk2MzAsNDk2MzEsNDk2MzMsNDk2MzQsNDk2MzUsNDk2MzcsNDk2MzgsNDk2MzksNDk2NDEsNDk2NDIsNDk2NDMsNDk2NDQsNDk2NDUsNDk2NDYsNDk2NDcsNDk2NTAsNDk2NTIsNDk2NTMsNDk2NTQsNDk2NTUsNDk2NTYsNDk2NTcsNDk2NTgsNDk2NTksNDk2NjIsNDk2NjMsNDk2NjUsNDk2NjYsNDk2NjcsNDk2NjksNDk2NzAsNDk2NzEsNDk2NzIsNDk2NzMsNDk2NzQsNDk2NzUsNDk2NzgsNDk2ODAsNDk2ODIsNDk2ODMsNDk2ODQsNDk2ODUsNDk2ODYsNDk2ODcsNDk2OTAsNDk2OTEsNDk2OTMsNDk2OTQsNDk2OTcsNDk2OTgsNDk2OTksNDk3MDAsNDk3MDEsNDk3MDIsNDk3MDMsNDk3MDYsNDk3MDgsNDk3MTAsNDk3MTIsNDk3MTUsNDk3MTcsNDk3MTgsNDk3MTksNDk3MjAsNDk3MjEsNDk3MjIsNDk3MjMsNDk3MjQsNDk3MjUsNDk3MjYsNDk3MjcsNDk3MjgsNDk3MjksNDk3MzAsNDk3MzEsNDk3MzIsNDk3MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3MzQsNDk3MzUsNDk3MzcsNDk3MzgsNDk3MzksNDk3NDAsNDk3NDEsNDk3NDIsNDk3NDMsNDk3NDYsNDk3NDcsNDk3NDksNDk3NTAsNDk3NTEsNDk3NTMsNDk3NTQsNDk3NTUsNDk3NTYsNDk3NTcsNDk3NTgsNDk3NTksNDk3NjEsNDk3NjIsNDk3NjMsNDk3NjQsNDk3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3NjcsNDk3NjgsNDk3NjksNDk3NzAsNDk3NzEsNDk3NzQsNDk3NzUsNDk3NzcsNDk3NzgsNDk3NzksNDk3ODEsNDk3ODIsNDk3ODMsNDk3ODQsNDk3ODUsNDk3ODYsNDk3ODcsNDk3OTAsNDk3OTIsNDk3OTQsNDk3OTUsNDk3OTYsNDk3OTcsNDk3OTgsNDk3OTksNDk4MDIsNDk4MDMsNDk4MDQsNDk4MDUsNDk4MDYsNDk4MDcsNDk4MDksNDk4MTAsNDk4MTEsNDk4MTIsNDk4MTMsNDk4MTQsNDk4MTUsNDk4MTcsNDk4MTgsNDk4MjAsNDk4MjIsNDk4MjMsNDk4MjQsNDk4MjUsNDk4MjYsNDk4MjcsNDk4MzAsNDk4MzEsNDk4MzMsNDk4MzQsNDk4MzUsNDk4MzgsNDk4MzksNDk4NDAsNDk4NDEsNDk4NDIsNDk4NDMsNDk4NDYsNDk4NDgsNDk4NTAsNDk4NTEsNDk4NTIsNDk4NTMsNDk4NTQsNDk4NTUsNDk4NTYsNDk4NTcsNDk4NTgsNDk4NTksNDk4NjAsNDk4NjEsNDk4NjIsNDk4NjMsNDk4NjQsNDk4NjUsNDk4NjYsNDk4NjcsNDk4NjgsNDk4NjksNDk4NzAsNDk4NzEsNDk4NzIsNDk4NzMsNDk4NzQsNDk4NzUsNDk4NzYsNDk4NzcsNDk4NzgsNDk4NzksNDk4ODAsNDk4ODEsNDk4ODIsNDk4ODMsNDk4ODYsNDk4ODcsNDk4ODksNDk4OTAsNDk4OTMsNDk4OTQsNDk4OTUsNDk4OTYsNDk4OTcsNDk4OTgsNDk5MDIsNDk5MDQsNDk5MDYsNDk5MDcsNDk5MDgsNDk5MDksNDk5MTEsNDk5MTQsNDk5MTcsNDk5MTgsNDk5MTksNDk5MjEsNDk5MjIsNDk5MjMsNDk5MjQsNDk5MjUsNDk5MjYsNDk5MjcsNDk5MzAsNDk5MzEsNDk5MzQsNDk5MzUsNDk5MzYsNDk5MzcsNDk5MzgsNDk5NDIsNDk5NDMsNDk5NDUsNDk5NDYsNDk5NDcsNDk5NDksNDk5NTAsNDk5NTEsNDk5NTIsNDk5NTMsNDk5NTQsNDk5NTUsNDk5NTgsNDk5NTksNDk5NjIsNDk5NjMsNDk5NjQsNDk5NjUsNDk5NjYsNDk5NjcsNDk5NjgsNDk5NjksNDk5NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5NzEsNDk5NzIsNDk5NzMsNDk5NzQsNDk5NzUsNDk5NzYsNDk5NzcsNDk5NzgsNDk5NzksNDk5ODAsNDk5ODEsNDk5ODIsNDk5ODMsNDk5ODQsNDk5ODUsNDk5ODYsNDk5ODcsNDk5ODgsNDk5OTAsNDk5OTEsNDk5OTIsNDk5OTMsNDk5OTQsNDk5OTUsNDk5OTYsNDk5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5OTgsNDk5OTksNTAwMDAsNTAwMDEsNTAwMDIsNTAwMDMsNTAwMDQsNTAwMDUsNTAwMDYsNTAwMDcsNTAwMDgsNTAwMDksNTAwMTAsNTAwMTEsNTAwMTIsNTAwMTMsNTAwMTQsNTAwMTUsNTAwMTYsNTAwMTcsNTAwMTgsNTAwMTksNTAwMjAsNTAwMjEsNTAwMjIsNTAwMjMsNTAwMjYsNTAwMjcsNTAwMjksNTAwMzAsNTAwMzEsNTAwMzMsNTAwMzUsNTAwMzYsNTAwMzcsNTAwMzgsNTAwMzksNTAwNDIsNTAwNDMsNTAwNDYsNTAwNDcsNTAwNDgsNTAwNDksNTAwNTAsNTAwNTEsNTAwNTMsNTAwNTQsNTAwNTUsNTAwNTcsNTAwNTgsNTAwNTksNTAwNjEsNTAwNjIsNTAwNjMsNTAwNjQsNTAwNjUsNTAwNjYsNTAwNjcsNTAwNjgsNTAwNjksNTAwNzAsNTAwNzEsNTAwNzIsNTAwNzMsNTAwNzQsNTAwNzUsNTAwNzYsNTAwNzcsNTAwNzgsNTAwNzksNTAwODAsNTAwODEsNTAwODIsNTAwODMsNTAwODQsNTAwODUsNTAwODYsNTAwODcsNTAwODgsNTAwODksNTAwOTAsNTAwOTEsNTAwOTIsNTAwOTMsNTAwOTQsNTAwOTUsNTAwOTYsNTAwOTcsNTAwOTgsNTAwOTksNTAxMDAsNTAxMDEsNTAxMDIsNTAxMDMsNTAxMDQsNTAxMDUsNTAxMDYsNTAxMDcsNTAxMDgsNTAxMDksNTAxMTAsNTAxMTEsNTAxMTMsNTAxMTQsNTAxMTUsNTAxMTYsNTAxMTcsNTAxMTgsNTAxMTksNTAxMjAsNTAxMjEsNTAxMjIsNTAxMjMsNTAxMjQsNTAxMjUsNTAxMjYsNTAxMjcsNTAxMjgsNTAxMjksNTAxMzAsNTAxMzEsNTAxMzIsNTAxMzMsNTAxMzQsNTAxMzUsNTAxMzgsNTAxMzksNTAxNDEsNTAxNDIsNTAxNDUsNTAxNDcsNTAxNDgsNTAxNDksNTAxNTAsNTAxNTEsNTAxNTQsNTAxNTUsNTAxNTYsNTAxNTgsNTAxNTksNTAxNjAsNTAxNjEsNTAxNjIsNTAxNjMsNTAxNjYsNTAxNjcsNTAxNjksNTAxNzAsNTAxNzEsNTAxNzIsNTAxNzMsNTAxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAxNzUsNTAxNzYsNTAxNzcsNTAxNzgsNTAxNzksNTAxODAsNTAxODEsNTAxODIsNTAxODMsNTAxODUsNTAxODYsNTAxODcsNTAxODgsNTAxODksNTAxOTAsNTAxOTEsNTAxOTMsNTAxOTQsNTAxOTUsNTAxOTYsNTAxOTcsNTAxOTgsNTAxOTksNTAyMDAsNTAyMDEsNTAyMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAyMDMsNTAyMDQsNTAyMDUsNTAyMDYsNTAyMDcsNTAyMDgsNTAyMDksNTAyMTAsNTAyMTEsNTAyMTMsNTAyMTQsNTAyMTUsNTAyMTYsNTAyMTcsNTAyMTgsNTAyMTksNTAyMjEsNTAyMjIsNTAyMjMsNTAyMjUsNTAyMjYsNTAyMjcsNTAyMjksNTAyMzAsNTAyMzEsNTAyMzIsNTAyMzMsNTAyMzQsNTAyMzUsNTAyMzgsNTAyMzksNTAyNDAsNTAyNDEsNTAyNDIsNTAyNDMsNTAyNDQsNTAyNDUsNTAyNDYsNTAyNDcsNTAyNDksNTAyNTAsNTAyNTEsNTAyNTIsNTAyNTMsNTAyNTQsNTAyNTUsNTAyNTYsNTAyNTcsNTAyNTgsNTAyNTksNTAyNjAsNTAyNjEsNTAyNjIsNTAyNjMsNTAyNjQsNTAyNjUsNTAyNjYsNTAyNjcsNTAyNjgsNTAyNjksNTAyNzAsNTAyNzEsNTAyNzIsNTAyNzMsNTAyNzQsNTAyNzUsNTAyNzgsNTAyNzksNTAyODEsNTAyODIsNTAyODMsNTAyODUsNTAyODYsNTAyODcsNTAyODgsNTAyODksNTAyOTAsNTAyOTEsNTAyOTQsNTAyOTUsNTAyOTYsNTAyOTgsNTAyOTksNTAzMDAsNTAzMDEsNTAzMDIsNTAzMDMsNTAzMDUsNTAzMDYsNTAzMDcsNTAzMDgsNTAzMDksNTAzMTAsNTAzMTEsNTAzMTIsNTAzMTMsNTAzMTQsNTAzMTUsNTAzMTYsNTAzMTcsNTAzMTgsNTAzMTksNTAzMjAsNTAzMjEsNTAzMjIsNTAzMjMsNTAzMjUsNTAzMjYsNTAzMjcsNTAzMjgsNTAzMjksNTAzMzAsNTAzMzEsNTAzMzMsNTAzMzQsNTAzMzUsNTAzMzYsNTAzMzcsNTAzMzgsNTAzMzksNTAzNDAsNTAzNDEsNTAzNDIsNTAzNDMsNTAzNDQsNTAzNDUsNTAzNDYsNTAzNDcsNTAzNDgsNTAzNDksNTAzNTAsNTAzNTEsNTAzNTIsNTAzNTMsNTAzNTQsNTAzNTUsNTAzNTYsNTAzNTcsNTAzNTgsNTAzNTksNTAzNjEsNTAzNjIsNTAzNjMsNTAzNjUsNTAzNjYsNTAzNjcsNTAzNjgsNTAzNjksNTAzNzAsNTAzNzEsNTAzNzIsNTAzNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAzNzQsNTAzNzUsNTAzNzYsNTAzNzcsNTAzNzgsNTAzNzksNTAzODAsNTAzODEsNTAzODIsNTAzODMsNTAzODQsNTAzODUsNTAzODYsNTAzODcsNTAzODgsNTAzODksNTAzOTAsNTAzOTEsNTAzOTIsNTAzOTMsNTAzOTQsNTAzOTUsNTAzOTYsNTAzOTcsNTAzOTgsNTAzOTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA0MDAsNTA0MDEsNTA0MDIsNTA0MDMsNTA0MDQsNTA0MDUsNTA0MDYsNTA0MDcsNTA0MDgsNTA0MTAsNTA0MTEsNTA0MTIsNTA0MTMsNTA0MTQsNTA0MTUsNTA0MTgsNTA0MTksNTA0MjEsNTA0MjIsNTA0MjMsNTA0MjUsNTA0MjcsNTA0MjgsNTA0MjksNTA0MzAsNTA0MzQsNTA0MzUsNTA0MzYsNTA0MzcsNTA0MzgsNTA0MzksNTA0NDAsNTA0NDEsNTA0NDIsNTA0NDMsNTA0NDUsNTA0NDYsNTA0NDcsNTA0NDksNTA0NTAsNTA0NTEsNTA0NTMsNTA0NTQsNTA0NTUsNTA0NTYsNTA0NTcsNTA0NTgsNTA0NTksNTA0NjEsNTA0NjIsNTA0NjMsNTA0NjQsNTA0NjUsNTA0NjYsNTA0NjcsNTA0NjgsNTA0NjksNTA0NzAsNTA0NzEsNTA0NzQsNTA0NzUsNTA0NzcsNTA0NzgsNTA0NzksNTA0ODEsNTA0ODIsNTA0ODMsNTA0ODQsNTA0ODUsNTA0ODYsNTA0ODcsNTA0OTAsNTA0OTIsNTA0OTQsNTA0OTUsNTA0OTYsNTA0OTcsNTA0OTgsNTA0OTksNTA1MDIsNTA1MDMsNTA1MDcsNTA1MTEsNTA1MTIsNTA1MTMsNTA1MTQsNTA1MTgsNTA1MjIsNTA1MjMsNTA1MjQsNTA1MjcsNTA1MzAsNTA1MzEsNTA1MzMsNTA1MzQsNTA1MzUsNTA1MzcsNTA1MzgsNTA1MzksNTA1NDAsNTA1NDEsNTA1NDIsNTA1NDMsNTA1NDYsNTA1NTAsNTA1NTEsNTA1NTIsNTA1NTMsNTA1NTQsNTA1NTUsNTA1NTgsNTA1NTksNTA1NjEsNTA1NjIsNTA1NjMsNTA1NjUsNTA1NjYsNTA1NjgsNTA1NjksNTA1NzAsNTA1NzEsNTA1NzQsNTA1NzYsNTA1NzgsNTA1NzksNTA1ODAsNTA1ODIsNTA1ODUsNTA1ODYsNTA1ODcsNTA1ODksNTA1OTAsNTA1OTEsNTA1OTMsNTA1OTQsNTA1OTUsNTA1OTYsNTA1OTcsNTA1OTgsNTA1OTksNTA2MDAsNTA2MDIsNTA2MDMsNTA2MDQsNTA2MDUsNTA2MDYsNTA2MDcsNTA2MDgsNTA2MDksNTA2MTAsNTA2MTEsNTA2MTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2MTUsNTA2MTgsNTA2MjMsNTA2MjQsNTA2MjUsNTA2MjYsNTA2MjcsNTA2MzUsNTA2MzcsNTA2MzksNTA2NDIsNTA2NDMsNTA2NDUsNTA2NDYsNTA2NDcsNTA2NDksNTA2NTAsNTA2NTEsNTA2NTIsNTA2NTMsNTA2NTQsNTA2NTUsNTA2NTgsNTA2NjAsNTA2NjIsNTA2NjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2NjQsNTA2NjUsNTA2NjYsNTA2NjcsNTA2NzEsNTA2NzMsNTA2NzQsNTA2NzUsNTA2NzcsNTA2ODAsNTA2ODEsNTA2ODIsNTA2ODMsNTA2OTAsNTA2OTEsNTA2OTIsNTA2OTcsNTA2OTgsNTA2OTksNTA3MDEsNTA3MDIsNTA3MDMsNTA3MDUsNTA3MDYsNTA3MDcsNTA3MDgsNTA3MDksNTA3MTAsNTA3MTEsNTA3MTQsNTA3MTcsNTA3MTgsNTA3MTksNTA3MjAsNTA3MjEsNTA3MjIsNTA3MjMsNTA3MjYsNTA3MjcsNTA3MjksNTA3MzAsNTA3MzEsNTA3MzUsNTA3MzcsNTA3MzgsNTA3NDIsNTA3NDQsNTA3NDYsNTA3NDgsNTA3NDksNTA3NTAsNTA3NTEsNTA3NTQsNTA3NTUsNTA3NTcsNTA3NTgsNTA3NTksNTA3NjEsNTA3NjIsNTA3NjMsNTA3NjQsNTA3NjUsNTA3NjYsNTA3NjcsNTA3NzAsNTA3NzQsNTA3NzUsNTA3NzYsNTA3NzcsNTA3NzgsNTA3NzksNTA3ODIsNTA3ODMsNTA3ODUsNTA3ODYsNTA3ODcsNTA3ODgsNTA3ODksNTA3OTAsNTA3OTEsNTA3OTIsNTA3OTMsNTA3OTQsNTA3OTUsNTA3OTcsNTA3OTgsNTA4MDAsNTA4MDIsNTA4MDMsNTA4MDQsNTA4MDUsNTA4MDYsNTA4MDcsNTA4MTAsNTA4MTEsNTA4MTMsNTA4MTQsNTA4MTUsNTA4MTcsNTA4MTgsNTA4MTksNTA4MjAsNTA4MjEsNTA4MjIsNTA4MjMsNTA4MjYsNTA4MjgsNTA4MzAsNTA4MzEsNTA4MzIsNTA4MzMsNTA4MzQsNTA4MzUsNTA4MzgsNTA4MzksNTA4NDEsNTA4NDIsNTA4NDMsNTA4NDUsNTA4NDYsNTA4NDcsNTA4NDgsNTA4NDksNTA4NTAsNTA4NTEsNTA4NTQsNTA4NTYsNTA4NTgsNTA4NTksNTA4NjAsNTA4NjEsNTA4NjIsNTA4NjMsNTA4NjYsNTA4NjcsNTA4NjksNTA4NzAsNTA4NzEsNTA4NzUsNTA4NzYsNTA4NzcsNTA4NzgsNTA4NzksNTA4ODIsNTA4ODQsNTA4ODYsNTA4ODcsNTA4ODgsNTA4ODksNTA4OTAsNTA4OTEsNTA4OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA4OTUsNTA4OTcsNTA4OTgsNTA4OTksNTA5MDEsNTA5MDIsNTA5MDMsNTA5MDQsNTA5MDUsNTA5MDYsNTA5MDcsNTA5MTAsNTA5MTEsNTA5MTQsNTA5MTUsNTA5MTYsNTA5MTcsNTA5MTgsNTA5MTksNTA5MjIsNTA5MjMsNTA5MjUsNTA5MjYsNTA5MjcsNTA5MjksNTA5MzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA5MzEsNTA5MzIsNTA5MzMsNTA5MzQsNTA5MzUsNTA5MzgsNTA5MzksNTA5NDAsNTA5NDIsNTA5NDMsNTA5NDQsNTA5NDUsNTA5NDYsNTA5NDcsNTA5NTAsNTA5NTEsNTA5NTMsNTA5NTQsNTA5NTUsNTA5NTcsNTA5NTgsNTA5NTksNTA5NjAsNTA5NjEsNTA5NjIsNTA5NjMsNTA5NjYsNTA5NjgsNTA5NzAsNTA5NzEsNTA5NzIsNTA5NzMsNTA5NzQsNTA5NzUsNTA5NzgsNTA5NzksNTA5ODEsNTA5ODIsNTA5ODMsNTA5ODUsNTA5ODYsNTA5ODcsNTA5ODgsNTA5ODksNTA5OTAsNTA5OTEsNTA5OTQsNTA5OTYsNTA5OTgsNTEwMDAsNTEwMDEsNTEwMDIsNTEwMDMsNTEwMDYsNTEwMDcsNTEwMDksNTEwMTAsNTEwMTEsNTEwMTMsNTEwMTQsNTEwMTUsNTEwMTYsNTEwMTcsNTEwMTksNTEwMjIsNTEwMjQsNTEwMzMsNTEwMzQsNTEwMzUsNTEwMzcsNTEwMzgsNTEwMzksNTEwNDEsNTEwNDIsNTEwNDMsNTEwNDQsNTEwNDUsNTEwNDYsNTEwNDcsNTEwNDksNTEwNTAsNTEwNTIsNTEwNTMsNTEwNTQsNTEwNTUsNTEwNTYsNTEwNTcsNTEwNTgsNTEwNTksNTEwNjIsNTEwNjMsNTEwNjUsNTEwNjYsNTEwNjcsNTEwNzEsNTEwNzIsNTEwNzMsNTEwNzQsNTEwNzgsNTEwODMsNTEwODQsNTEwODUsNTEwODcsNTEwOTAsNTEwOTEsNTEwOTMsNTEwOTcsNTEwOTksNTExMDAsNTExMDEsNTExMDIsNTExMDMsNTExMDYsNTExMTEsNTExMTIsNTExMTMsNTExMTQsNTExMTUsNTExMTgsNTExMTksNTExMjEsNTExMjIsNTExMjMsNTExMjUsNTExMjYsNTExMjcsNTExMjgsNTExMjksNTExMzAsNTExMzEsNTExMzQsNTExMzgsNTExMzksNTExNDAsNTExNDEsNTExNDIsNTExNDMsNTExNDYsNTExNDcsNTExNDksNTExNTEsNTExNTMsNTExNTQsNTExNTUsNTExNTYsNTExNTcsNTExNTgsNTExNTksNTExNjEsNTExNjIsNTExNjMsNTExNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExNjYsNTExNjcsNTExNjgsNTExNjksNTExNzAsNTExNzEsNTExNzMsNTExNzQsNTExNzUsNTExNzcsNTExNzgsNTExNzksNTExODEsNTExODIsNTExODMsNTExODQsNTExODUsNTExODYsNTExODcsNTExODgsNTExODksNTExOTAsNTExOTEsNTExOTIsNTExOTMsNTExOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExOTUsNTExOTYsNTExOTcsNTExOTgsNTExOTksNTEyMDIsNTEyMDMsNTEyMDUsNTEyMDYsNTEyMDcsNTEyMDksNTEyMTEsNTEyMTIsNTEyMTMsNTEyMTQsNTEyMTUsNTEyMTgsNTEyMjAsNTEyMjMsNTEyMjQsNTEyMjUsNTEyMjYsNTEyMjcsNTEyMzAsNTEyMzEsNTEyMzMsNTEyMzQsNTEyMzUsNTEyMzcsNTEyMzgsNTEyMzksNTEyNDAsNTEyNDEsNTEyNDIsNTEyNDMsNTEyNDYsNTEyNDgsNTEyNTAsNTEyNTEsNTEyNTIsNTEyNTMsNTEyNTQsNTEyNTUsNTEyNTcsNTEyNTgsNTEyNTksNTEyNjEsNTEyNjIsNTEyNjMsNTEyNjUsNTEyNjYsNTEyNjcsNTEyNjgsNTEyNjksNTEyNzAsNTEyNzEsNTEyNzQsNTEyNzUsNTEyNzgsNTEyNzksNTEyODAsNTEyODEsNTEyODIsNTEyODMsNTEyODUsNTEyODYsNTEyODcsNTEyODgsNTEyODksNTEyOTAsNTEyOTEsNTEyOTIsNTEyOTMsNTEyOTQsNTEyOTUsNTEyOTYsNTEyOTcsNTEyOTgsNTEyOTksNTEzMDAsNTEzMDEsNTEzMDIsNTEzMDMsNTEzMDQsNTEzMDUsNTEzMDYsNTEzMDcsNTEzMDgsNTEzMDksNTEzMTAsNTEzMTEsNTEzMTQsNTEzMTUsNTEzMTcsNTEzMTgsNTEzMTksNTEzMjEsNTEzMjMsNTEzMjQsNTEzMjUsNTEzMjYsNTEzMjcsNTEzMzAsNTEzMzIsNTEzMzYsNTEzMzcsNTEzMzgsNTEzNDIsNTEzNDMsNTEzNDQsNTEzNDUsNTEzNDYsNTEzNDcsNTEzNDksNTEzNTAsNTEzNTEsNTEzNTIsNTEzNTMsNTEzNTQsNTEzNTUsNTEzNTYsNTEzNTgsNTEzNjAsNTEzNjIsNTEzNjMsNTEzNjQsNTEzNjUsNTEzNjYsNTEzNjcsNTEzNjksNTEzNzAsNTEzNzEsNTEzNzIsNTEzNzMsNTEzNzQsNTEzNzUsNTEzNzYsNTEzNzcsNTEzNzgsNTEzNzksNTEzODAsNTEzODEsNTEzODIsNTEzODMsNTEzODQsNTEzODUsNTEzODYsNTEzODcsNTEzOTAsNTEzOTEsNTEzOTIsNTEzOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEzOTQsNTEzOTUsNTEzOTcsNTEzOTgsNTEzOTksNTE0MDEsNTE0MDIsNTE0MDMsNTE0MDUsNTE0MDYsNTE0MDcsNTE0MDgsNTE0MDksNTE0MTAsNTE0MTEsNTE0MTQsNTE0MTYsNTE0MTgsNTE0MTksNTE0MjAsNTE0MjEsNTE0MjIsNTE0MjMsNTE0MjYsNTE0MjcsNTE0MjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE0MzAsNTE0MzEsNTE0MzIsNTE0MzMsNTE0MzQsNTE0MzUsNTE0MzYsNTE0MzcsNTE0MzgsNTE0MzksNTE0NDAsNTE0NDEsNTE0NDIsNTE0NDMsNTE0NDQsNTE0NDYsNTE0NDcsNTE0NDgsNTE0NDksNTE0NTAsNTE0NTEsNTE0NTQsNTE0NTUsNTE0NTcsNTE0NTgsNTE0NTksNTE0NjMsNTE0NjQsNTE0NjUsNTE0NjYsNTE0NjcsNTE0NzAsMTIyODgsMTIyODksMTIyOTAsMTgzLDgyMjksODIzMCwxNjgsMTIyOTEsMTczLDgyMTMsODc0MSw2NTM0MCw4NzY0LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODgwMCw4ODA0LDg4MDUsODczNCw4NzU2LDE3Niw4MjQyLDgyNDMsODQ1MSw4NDkxLDY1NTA0LDY1NTA1LDY1NTA5LDk3OTQsOTc5Miw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDE2Nyw4MjUxLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODU5NCw4NTkyLDg1OTMsODU5NSw4NTk2LDEyMzA3LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsODc0Myw4NzQ0LDY1NTA2LDUxNDcyLDUxNDc0LDUxNDc1LDUxNDc2LDUxNDc3LDUxNDc4LDUxNDc5LDUxNDgxLDUxNDgyLDUxNDgzLDUxNDg0LDUxNDg1LDUxNDg2LDUxNDg3LDUxNDg4LDUxNDg5LDUxNDkwLDUxNDkxLDUxNDkyLDUxNDkzLDUxNDk0LDUxNDk1LDUxNDk2LDUxNDk3LDUxNDk4LDUxNDk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTAxLDUxNTAyLDUxNTAzLDUxNTA0LDUxNTA1LDUxNTA2LDUxNTA3LDUxNTA5LDUxNTEwLDUxNTExLDUxNTEyLDUxNTEzLDUxNTE0LDUxNTE1LDUxNTE2LDUxNTE3LDUxNTE4LDUxNTE5LDUxNTIwLDUxNTIxLDUxNTIyLDUxNTIzLDUxNTI0LDUxNTI1LDUxNTI2LDUxNTI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTI4LDUxNTI5LDUxNTMwLDUxNTMxLDUxNTMyLDUxNTMzLDUxNTM0LDUxNTM1LDUxNTM4LDUxNTM5LDUxNTQxLDUxNTQyLDUxNTQzLDUxNTQ1LDUxNTQ2LDUxNTQ3LDUxNTQ4LDUxNTQ5LDUxNTUwLDUxNTUxLDUxNTU0LDUxNTU2LDUxNTU3LDUxNTU4LDUxNTU5LDUxNTYwLDUxNTYxLDUxNTYyLDUxNTYzLDUxNTY1LDUxNTY2LDUxNTY3LDg2NTgsODY2MCw4NzA0LDg3MDcsMTgwLDY1Mzc0LDcxMSw3MjgsNzMzLDczMCw3MjksMTg0LDczMSwxNjEsMTkxLDcyMCw4NzUwLDg3MjEsODcxOSwxNjQsODQ1Nyw4MjQwLDk2NjUsOTY2NCw5NjU1LDk2NTQsOTgyOCw5ODI0LDk4MjUsOTgyOSw5ODMxLDk4MjcsODg1Nyw5NjcyLDk2MzUsOTY4MCw5NjgxLDk2MTgsOTYzNiw5NjM3LDk2NDAsOTYzOSw5NjM4LDk2NDEsOTgzMiw5NzQzLDk3NDIsOTc1Niw5NzU4LDE4Miw4MjI0LDgyMjUsODU5Nyw4NTk5LDg2MDEsODU5OCw4NjAwLDk4MzcsOTgzMyw5ODM0LDk4MzYsMTI5MjcsMTI4MjgsODQ3MCwxMzI1NSw4NDgyLDEzMjUwLDEzMjcyLDg0ODEsODM2NCwxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTY5LDUxNTcwLDUxNTcxLDUxNTczLDUxNTc0LDUxNTc1LDUxNTc2LDUxNTc3LDUxNTc4LDUxNTc5LDUxNTgxLDUxNTgyLDUxNTgzLDUxNTg0LDUxNTg1LDUxNTg2LDUxNTg3LDUxNTg4LDUxNTg5LDUxNTkwLDUxNTkxLDUxNTk0LDUxNTk1LDUxNTk3LDUxNTk4LDUxNTk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjAxLDUxNjAyLDUxNjAzLDUxNjA0LDUxNjA1LDUxNjA2LDUxNjA3LDUxNjEwLDUxNjEyLDUxNjE0LDUxNjE1LDUxNjE2LDUxNjE3LDUxNjE4LDUxNjE5LDUxNjIwLDUxNjIxLDUxNjIyLDUxNjIzLDUxNjI0LDUxNjI1LDUxNjI2LDUxNjI3LDUxNjI4LDUxNjI5LDUxNjMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjMxLDUxNjMyLDUxNjMzLDUxNjM0LDUxNjM1LDUxNjM2LDUxNjM3LDUxNjM4LDUxNjM5LDUxNjQwLDUxNjQxLDUxNjQyLDUxNjQzLDUxNjQ0LDUxNjQ1LDUxNjQ2LDUxNjQ3LDUxNjUwLDUxNjUxLDUxNjUzLDUxNjU0LDUxNjU3LDUxNjU5LDUxNjYwLDUxNjYxLDUxNjYyLDUxNjYzLDUxNjY2LDUxNjY4LDUxNjcxLDUxNjcyLDUxNjc1LDY1MjgxLDY1MjgyLDY1MjgzLDY1Mjg0LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1NTEwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDUxNjc4LDUxNjc5LDUxNjgxLDUxNjgzLDUxNjg1LDUxNjg2LDUxNjg4LDUxNjg5LDUxNjkwLDUxNjkxLDUxNjk0LDUxNjk4LDUxNjk5LDUxNzAwLDUxNzAxLDUxNzAyLDUxNzAzLDUxNzA2LDUxNzA3LDUxNzA5LDUxNzEwLDUxNzExLDUxNzEzLDUxNzE0LDUxNzE1LDUxNzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzE3LDUxNzE4LDUxNzE5LDUxNzIyLDUxNzI2LDUxNzI3LDUxNzI4LDUxNzI5LDUxNzMwLDUxNzMxLDUxNzMzLDUxNzM0LDUxNzM1LDUxNzM3LDUxNzM4LDUxNzM5LDUxNzQwLDUxNzQxLDUxNzQyLDUxNzQzLDUxNzQ0LDUxNzQ1LDUxNzQ2LDUxNzQ3LDUxNzQ4LDUxNzQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzUwLDUxNzUxLDUxNzUyLDUxNzU0LDUxNzU1LDUxNzU2LDUxNzU3LDUxNzU4LDUxNzU5LDUxNzYwLDUxNzYxLDUxNzYyLDUxNzYzLDUxNzY0LDUxNzY1LDUxNzY2LDUxNzY3LDUxNzY4LDUxNzY5LDUxNzcwLDUxNzcxLDUxNzcyLDUxNzczLDUxNzc0LDUxNzc1LDUxNzc2LDUxNzc3LDUxNzc4LDUxNzc5LDUxNzgwLDUxNzgxLDUxNzgyLDEyNTkzLDEyNTk0LDEyNTk1LDEyNTk2LDEyNTk3LDEyNTk4LDEyNTk5LDEyNjAwLDEyNjAxLDEyNjAyLDEyNjAzLDEyNjA0LDEyNjA1LDEyNjA2LDEyNjA3LDEyNjA4LDEyNjA5LDEyNjEwLDEyNjExLDEyNjEyLDEyNjEzLDEyNjE0LDEyNjE1LDEyNjE2LDEyNjE3LDEyNjE4LDEyNjE5LDEyNjIwLDEyNjIxLDEyNjIyLDEyNjIzLDEyNjI0LDEyNjI1LDEyNjI2LDEyNjI3LDEyNjI4LDEyNjI5LDEyNjMwLDEyNjMxLDEyNjMyLDEyNjMzLDEyNjM0LDEyNjM1LDEyNjM2LDEyNjM3LDEyNjM4LDEyNjM5LDEyNjQwLDEyNjQxLDEyNjQyLDEyNjQzLDEyNjQ0LDEyNjQ1LDEyNjQ2LDEyNjQ3LDEyNjQ4LDEyNjQ5LDEyNjUwLDEyNjUxLDEyNjUyLDEyNjUzLDEyNjU0LDEyNjU1LDEyNjU2LDEyNjU3LDEyNjU4LDEyNjU5LDEyNjYwLDEyNjYxLDEyNjYyLDEyNjYzLDEyNjY0LDEyNjY1LDEyNjY2LDEyNjY3LDEyNjY4LDEyNjY5LDEyNjcwLDEyNjcxLDEyNjcyLDEyNjczLDEyNjc0LDEyNjc1LDEyNjc2LDEyNjc3LDEyNjc4LDEyNjc5LDEyNjgwLDEyNjgxLDEyNjgyLDEyNjgzLDEyNjg0LDEyNjg1LDEyNjg2LDUxNzgzLDUxNzg0LDUxNzg1LDUxNzg2LDUxNzg3LDUxNzkwLDUxNzkxLDUxNzkzLDUxNzk0LDUxNzk1LDUxNzk3LDUxNzk4LDUxNzk5LDUxODAwLDUxODAxLDUxODAyLDUxODAzLDUxODA2LDUxODEwLDUxODExLDUxODEyLDUxODEzLDUxODE0LDUxODE1LDUxODE3LDUxODE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODE5LDUxODIwLDUxODIxLDUxODIyLDUxODIzLDUxODI0LDUxODI1LDUxODI2LDUxODI3LDUxODI4LDUxODI5LDUxODMwLDUxODMxLDUxODMyLDUxODMzLDUxODM0LDUxODM1LDUxODM2LDUxODM4LDUxODM5LDUxODQwLDUxODQxLDUxODQyLDUxODQzLDUxODQ1LDUxODQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODQ3LDUxODQ4LDUxODQ5LDUxODUwLDUxODUxLDUxODUyLDUxODUzLDUxODU0LDUxODU1LDUxODU2LDUxODU3LDUxODU4LDUxODU5LDUxODYwLDUxODYxLDUxODYyLDUxODYzLDUxODY1LDUxODY2LDUxODY3LDUxODY4LDUxODY5LDUxODcwLDUxODcxLDUxODcyLDUxODczLDUxODc0LDUxODc1LDUxODc2LDUxODc3LDUxODc4LDUxODc5LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4ODAsNTE4ODEsNTE4ODIsNTE4ODMsNTE4ODQsNTE4ODUsNTE4ODYsNTE4ODcsNTE4ODgsNTE4ODksNTE4OTAsNTE4OTEsNTE4OTIsNTE4OTMsNTE4OTQsNTE4OTUsNTE4OTYsNTE4OTcsNTE4OTgsNTE4OTksNTE5MDIsNTE5MDMsNTE5MDUsNTE5MDYsNTE5MDcsNTE5MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5MTAsNTE5MTEsNTE5MTIsNTE5MTMsNTE5MTQsNTE5MTUsNTE5MTgsNTE5MjAsNTE5MjIsNTE5MjQsNTE5MjUsNTE5MjYsNTE5MjcsNTE5MzAsNTE5MzEsNTE5MzIsNTE5MzMsNTE5MzQsNTE5MzUsNTE5MzcsNTE5MzgsNTE5MzksNTE5NDAsNTE5NDEsNTE5NDIsNTE5NDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NDQsNTE5NDUsNTE5NDYsNTE5NDcsNTE5NDksNTE5NTAsNTE5NTEsNTE5NTIsNTE5NTMsNTE5NTQsNTE5NTUsNTE5NTcsNTE5NTgsNTE5NTksNTE5NjAsNTE5NjEsNTE5NjIsNTE5NjMsNTE5NjQsNTE5NjUsNTE5NjYsNTE5NjcsNTE5NjgsNTE5NjksNTE5NzAsNTE5NzEsNTE5NzIsNTE5NzMsNTE5NzQsNTE5NzUsNTE5NzcsNTE5NzgsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LDk0OTAsOTQ4OSw5NDk4LDk0OTcsOTQ5NCw5NDkzLDk0ODYsOTQ4NSw5NTAyLDk1MDMsOTUwNSw5NTA2LDk1MTAsOTUxMSw5NTEzLDk1MTQsOTUxNyw5NTE4LDk1MjEsOTUyMiw5NTI1LDk1MjYsOTUyOSw5NTMwLDk1MzMsOTUzNCw5NTM2LDk1MzcsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk3OSw1MTk4MCw1MTk4MSw1MTk4Miw1MTk4Myw1MTk4NSw1MTk4Niw1MTk4Nyw1MTk4OSw1MTk5MCw1MTk5MSw1MTk5Myw1MTk5NCw1MTk5NSw1MTk5Niw1MTk5Nyw1MTk5OCw1MTk5OSw1MjAwMiw1MjAwMyw1MjAwNCw1MjAwNSw1MjAwNiw1MjAwNyw1MjAwOCw1MjAwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAxMCw1MjAxMSw1MjAxMiw1MjAxMyw1MjAxNCw1MjAxNSw1MjAxNiw1MjAxNyw1MjAxOCw1MjAxOSw1MjAyMCw1MjAyMSw1MjAyMiw1MjAyMyw1MjAyNCw1MjAyNSw1MjAyNiw1MjAyNyw1MjAyOCw1MjAyOSw1MjAzMCw1MjAzMSw1MjAzMiw1MjAzNCw1MjAzNSw1MjAzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAzNyw1MjAzOCw1MjAzOSw1MjA0Miw1MjA0Myw1MjA0NSw1MjA0Niw1MjA0Nyw1MjA0OSw1MjA1MCw1MjA1MSw1MjA1Miw1MjA1Myw1MjA1NCw1MjA1NSw1MjA1OCw1MjA1OSw1MjA2MCw1MjA2Miw1MjA2Myw1MjA2NCw1MjA2NSw1MjA2Niw1MjA2Nyw1MjA2OSw1MjA3MCw1MjA3MSw1MjA3Miw1MjA3Myw1MjA3NCw1MjA3NSw1MjA3NiwxMzIwNSwxMzIwNiwxMzIwNyw4NDY3LDEzMjA4LDEzMjUyLDEzMjE5LDEzMjIwLDEzMjIxLDEzMjIyLDEzMjA5LDEzMjEwLDEzMjExLDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE1LDEzMjE2LDEzMjE3LDEzMjE4LDEzMjU4LDEzMTk3LDEzMTk4LDEzMTk5LDEzMjYzLDEzMTkyLDEzMTkzLDEzMjU2LDEzMjIzLDEzMjI0LDEzMjMyLDEzMjMzLDEzMjM0LDEzMjM1LDEzMjM2LDEzMjM3LDEzMjM4LDEzMjM5LDEzMjQwLDEzMjQxLDEzMTg0LDEzMTg1LDEzMTg2LDEzMTg3LDEzMTg4LDEzMjQyLDEzMjQzLDEzMjQ0LDEzMjQ1LDEzMjQ2LDEzMjQ3LDEzMjAwLDEzMjAxLDEzMjAyLDEzMjAzLDEzMjA0LDg0ODYsMTMyNDgsMTMyNDksMTMxOTQsMTMxOTUsMTMxOTYsMTMyNzAsMTMyNTMsMTMyMjksMTMyMzAsMTMyMzEsMTMyNzUsMTMyMjUsMTMyMjYsMTMyMjcsMTMyMjgsMTMyNzcsMTMyNjQsMTMyNjcsMTMyNTEsMTMyNTcsMTMyNzYsMTMyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwNzcsNTIwNzgsNTIwNzksNTIwODAsNTIwODEsNTIwODIsNTIwODMsNTIwODQsNTIwODUsNTIwODYsNTIwODcsNTIwOTAsNTIwOTEsNTIwOTIsNTIwOTMsNTIwOTQsNTIwOTUsNTIwOTYsNTIwOTcsNTIwOTgsNTIwOTksNTIxMDAsNTIxMDEsNTIxMDIsNTIxMDMsNTIxMDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMDUsNTIxMDYsNTIxMDcsNTIxMDgsNTIxMDksNTIxMTAsNTIxMTEsNTIxMTIsNTIxMTMsNTIxMTQsNTIxMTUsNTIxMTYsNTIxMTcsNTIxMTgsNTIxMTksNTIxMjAsNTIxMjEsNTIxMjIsNTIxMjMsNTIxMjUsNTIxMjYsNTIxMjcsNTIxMjgsNTIxMjksNTIxMzAsNTIxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMzIsNTIxMzMsNTIxMzQsNTIxMzUsNTIxMzYsNTIxMzcsNTIxMzgsNTIxMzksNTIxNDAsNTIxNDEsNTIxNDIsNTIxNDMsNTIxNDQsNTIxNDUsNTIxNDYsNTIxNDcsNTIxNDgsNTIxNDksNTIxNTAsNTIxNTEsNTIxNTMsNTIxNTQsNTIxNTUsNTIxNTYsNTIxNTcsNTIxNTgsNTIxNTksNTIxNjAsNTIxNjEsNTIxNjIsNTIxNjMsNTIxNjQsMTk4LDIwOCwxNzAsMjk0LG51bGwsMzA2LG51bGwsMzE5LDMyMSwyMTYsMzM4LDE4NiwyMjIsMzU4LDMzMCxudWxsLDEyODk2LDEyODk3LDEyODk4LDEyODk5LDEyOTAwLDEyOTAxLDEyOTAyLDEyOTAzLDEyOTA0LDEyOTA1LDEyOTA2LDEyOTA3LDEyOTA4LDEyOTA5LDEyOTEwLDEyOTExLDEyOTEyLDEyOTEzLDEyOTE0LDEyOTE1LDEyOTE2LDEyOTE3LDEyOTE4LDEyOTE5LDEyOTIwLDEyOTIxLDEyOTIyLDEyOTIzLDk0MjQsOTQyNSw5NDI2LDk0MjcsOTQyOCw5NDI5LDk0MzAsOTQzMSw5NDMyLDk0MzMsOTQzNCw5NDM1LDk0MzYsOTQzNyw5NDM4LDk0MzksOTQ0MCw5NDQxLDk0NDIsOTQ0Myw5NDQ0LDk0NDUsOTQ0Niw5NDQ3LDk0NDgsOTQ0OSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiwxODksODUzMSw4NTMyLDE4OCwxOTAsODUzOSw4NTQwLDg1NDEsODU0Miw1MjE2NSw1MjE2Niw1MjE2Nyw1MjE2OCw1MjE2OSw1MjE3MCw1MjE3MSw1MjE3Miw1MjE3Myw1MjE3NCw1MjE3NSw1MjE3Niw1MjE3Nyw1MjE3OCw1MjE3OSw1MjE4MSw1MjE4Miw1MjE4Myw1MjE4NCw1MjE4NSw1MjE4Niw1MjE4Nyw1MjE4OCw1MjE4OSw1MjE5MCw1MjE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjE5Miw1MjE5Myw1MjE5NCw1MjE5NSw1MjE5Nyw1MjE5OCw1MjIwMCw1MjIwMiw1MjIwMyw1MjIwNCw1MjIwNSw1MjIwNiw1MjIwNyw1MjIwOCw1MjIwOSw1MjIxMCw1MjIxMSw1MjIxMiw1MjIxMyw1MjIxNCw1MjIxNSw1MjIxNiw1MjIxNyw1MjIxOCw1MjIxOSw1MjIyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjIyMSw1MjIyMiw1MjIyMyw1MjIyNCw1MjIyNSw1MjIyNiw1MjIyNyw1MjIyOCw1MjIyOSw1MjIzMCw1MjIzMSw1MjIzMiw1MjIzMyw1MjIzNCw1MjIzNSw1MjIzOCw1MjIzOSw1MjI0MSw1MjI0Miw1MjI0Myw1MjI0NSw1MjI0Niw1MjI0Nyw1MjI0OCw1MjI0OSw1MjI1MCw1MjI1MSw1MjI1NCw1MjI1NSw1MjI1Niw1MjI1OSw1MjI2MCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIwLDMyMiwyNDgsMzM5LDIyMywyNTQsMzU5LDMzMSwzMjksMTI4MDAsMTI4MDEsMTI4MDIsMTI4MDMsMTI4MDQsMTI4MDUsMTI4MDYsMTI4MDcsMTI4MDgsMTI4MDksMTI4MTAsMTI4MTEsMTI4MTIsMTI4MTMsMTI4MTQsMTI4MTUsMTI4MTYsMTI4MTcsMTI4MTgsMTI4MTksMTI4MjAsMTI4MjEsMTI4MjIsMTI4MjMsMTI4MjQsMTI4MjUsMTI4MjYsMTI4MjcsOTM3Miw5MzczLDkzNzQsOTM3NSw5Mzc2LDkzNzcsOTM3OCw5Mzc5LDkzODAsOTM4MSw5MzgyLDkzODMsOTM4NCw5Mzg1LDkzODYsOTM4Nyw5Mzg4LDkzODksOTM5MCw5MzkxLDkzOTIsOTM5Myw5Mzk0LDkzOTUsOTM5Niw5Mzk3LDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDE4NSwxNzgsMTc5LDgzMDgsODMxOSw4MzIxLDgzMjIsODMyMyw4MzI0LDUyMjYxLDUyMjYyLDUyMjY2LDUyMjY3LDUyMjY5LDUyMjcxLDUyMjczLDUyMjc0LDUyMjc1LDUyMjc2LDUyMjc3LDUyMjc4LDUyMjc5LDUyMjgyLDUyMjg3LDUyMjg4LDUyMjg5LDUyMjkwLDUyMjkxLDUyMjk0LDUyMjk1LDUyMjk3LDUyMjk4LDUyMjk5LDUyMzAxLDUyMzAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzAzLDUyMzA0LDUyMzA1LDUyMzA2LDUyMzA3LDUyMzEwLDUyMzE0LDUyMzE1LDUyMzE2LDUyMzE3LDUyMzE4LDUyMzE5LDUyMzIxLDUyMzIyLDUyMzIzLDUyMzI1LDUyMzI3LDUyMzI5LDUyMzMwLDUyMzMxLDUyMzMyLDUyMzMzLDUyMzM0LDUyMzM1LDUyMzM3LDUyMzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzM5LDUyMzQwLDUyMzQyLDUyMzQzLDUyMzQ0LDUyMzQ1LDUyMzQ2LDUyMzQ3LDUyMzQ4LDUyMzQ5LDUyMzUwLDUyMzUxLDUyMzUyLDUyMzUzLDUyMzU0LDUyMzU1LDUyMzU2LDUyMzU3LDUyMzU4LDUyMzU5LDUyMzYwLDUyMzYxLDUyMzYyLDUyMzYzLDUyMzY0LDUyMzY1LDUyMzY2LDUyMzY3LDUyMzY4LDUyMzY5LDUyMzcwLDUyMzcxLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjM3Miw1MjM3Myw1MjM3NCw1MjM3NSw1MjM3OCw1MjM3OSw1MjM4MSw1MjM4Miw1MjM4Myw1MjM4NSw1MjM4Niw1MjM4Nyw1MjM4OCw1MjM4OSw1MjM5MCw1MjM5MSw1MjM5NCw1MjM5OCw1MjM5OSw1MjQwMCw1MjQwMSw1MjQwMiw1MjQwMyw1MjQwNiw1MjQwNyw1MjQwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQxMCw1MjQxMSw1MjQxMyw1MjQxNCw1MjQxNSw1MjQxNiw1MjQxNyw1MjQxOCw1MjQxOSw1MjQyMiw1MjQyNCw1MjQyNiw1MjQyNyw1MjQyOCw1MjQyOSw1MjQzMCw1MjQzMSw1MjQzMyw1MjQzNCw1MjQzNSw1MjQzNyw1MjQzOCw1MjQzOSw1MjQ0MCw1MjQ0MSw1MjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ0Myw1MjQ0NCw1MjQ0NSw1MjQ0Niw1MjQ0Nyw1MjQ0OCw1MjQ0OSw1MjQ1MCw1MjQ1MSw1MjQ1Myw1MjQ1NCw1MjQ1NSw1MjQ1Niw1MjQ1Nyw1MjQ1OCw1MjQ1OSw1MjQ2MSw1MjQ2Miw1MjQ2Myw1MjQ2NSw1MjQ2Niw1MjQ2Nyw1MjQ2OCw1MjQ2OSw1MjQ3MCw1MjQ3MSw1MjQ3Miw1MjQ3Myw1MjQ3NCw1MjQ3NSw1MjQ3Niw1MjQ3NywxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NzgsNTI0NzksNTI0ODAsNTI0ODIsNTI0ODMsNTI0ODQsNTI0ODUsNTI0ODYsNTI0ODcsNTI0OTAsNTI0OTEsNTI0OTMsNTI0OTQsNTI0OTUsNTI0OTcsNTI0OTgsNTI0OTksNTI1MDAsNTI1MDEsNTI1MDIsNTI1MDMsNTI1MDYsNTI1MDgsNTI1MTAsNTI1MTEsNTI1MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1MTMsNTI1MTQsNTI1MTUsNTI1MTcsNTI1MTgsNTI1MTksNTI1MjEsNTI1MjIsNTI1MjMsNTI1MjUsNTI1MjYsNTI1MjcsNTI1MjgsNTI1MjksNTI1MzAsNTI1MzEsNTI1MzIsNTI1MzMsNTI1MzQsNTI1MzUsNTI1MzYsNTI1MzgsNTI1MzksNTI1NDAsNTI1NDEsNTI1NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NDMsNTI1NDQsNTI1NDUsNTI1NDYsNTI1NDcsNTI1NDgsNTI1NDksNTI1NTAsNTI1NTEsNTI1NTIsNTI1NTMsNTI1NTQsNTI1NTUsNTI1NTYsNTI1NTcsNTI1NTgsNTI1NTksNTI1NjAsNTI1NjEsNTI1NjIsNTI1NjMsNTI1NjQsNTI1NjUsNTI1NjYsNTI1NjcsNTI1NjgsNTI1NjksNTI1NzAsNTI1NzEsNTI1NzMsNTI1NzQsNTI1NzUsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU3Nyw1MjU3OCw1MjU3OSw1MjU4MSw1MjU4Miw1MjU4Myw1MjU4NCw1MjU4NSw1MjU4Niw1MjU4Nyw1MjU5MCw1MjU5Miw1MjU5NCw1MjU5NSw1MjU5Niw1MjU5Nyw1MjU5OCw1MjU5OSw1MjYwMSw1MjYwMiw1MjYwMyw1MjYwNCw1MjYwNSw1MjYwNiw1MjYwNyw1MjYwOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjYwOSw1MjYxMCw1MjYxMSw1MjYxMiw1MjYxMyw1MjYxNCw1MjYxNSw1MjYxNyw1MjYxOCw1MjYxOSw1MjYyMCw1MjYyMSw1MjYyMiw1MjYyMyw1MjYyNCw1MjYyNSw1MjYyNiw1MjYyNyw1MjYzMCw1MjYzMSw1MjYzMyw1MjYzNCw1MjYzNSw1MjYzNyw1MjYzOCw1MjYzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY0MCw1MjY0MSw1MjY0Miw1MjY0Myw1MjY0Niw1MjY0OCw1MjY1MCw1MjY1MSw1MjY1Miw1MjY1Myw1MjY1NCw1MjY1NSw1MjY1Nyw1MjY1OCw1MjY1OSw1MjY2MCw1MjY2MSw1MjY2Miw1MjY2Myw1MjY2NCw1MjY2NSw1MjY2Niw1MjY2Nyw1MjY2OCw1MjY2OSw1MjY3MCw1MjY3MSw1MjY3Miw1MjY3Myw1MjY3NCw1MjY3NSw1MjY3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjc4LDUyNjc5LDUyNjgwLDUyNjgxLDUyNjgyLDUyNjgzLDUyNjg1LDUyNjg2LDUyNjg3LDUyNjg5LDUyNjkwLDUyNjkxLDUyNjkyLDUyNjkzLDUyNjk0LDUyNjk1LDUyNjk2LDUyNjk3LDUyNjk4LDUyNjk5LDUyNzAwLDUyNzAxLDUyNzAyLDUyNzAzLDUyNzA0LDUyNzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzA2LDUyNzA3LDUyNzA4LDUyNzA5LDUyNzEwLDUyNzExLDUyNzEzLDUyNzE0LDUyNzE1LDUyNzE3LDUyNzE4LDUyNzE5LDUyNzIxLDUyNzIyLDUyNzIzLDUyNzI0LDUyNzI1LDUyNzI2LDUyNzI3LDUyNzMwLDUyNzMyLDUyNzM0LDUyNzM1LDUyNzM2LDUyNzM3LDUyNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzM5LDUyNzQxLDUyNzQyLDUyNzQzLDUyNzQ1LDUyNzQ2LDUyNzQ3LDUyNzQ5LDUyNzUwLDUyNzUxLDUyNzUyLDUyNzUzLDUyNzU0LDUyNzU1LDUyNzU3LDUyNzU4LDUyNzU5LDUyNzYwLDUyNzYyLDUyNzYzLDUyNzY0LDUyNzY1LDUyNzY2LDUyNzY3LDUyNzcwLDUyNzcxLDUyNzczLDUyNzc0LDUyNzc1LDUyNzc3LDUyNzc4LDUyNzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3ODAsNTI3ODEsNTI3ODIsNTI3ODMsNTI3ODYsNTI3ODgsNTI3OTAsNTI3OTEsNTI3OTIsNTI3OTMsNTI3OTQsNTI3OTUsNTI3OTYsNTI3OTcsNTI3OTgsNTI3OTksNTI4MDAsNTI4MDEsNTI4MDIsNTI4MDMsNTI4MDQsNTI4MDUsNTI4MDYsNTI4MDcsNTI4MDgsNTI4MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4MTAsNTI4MTEsNTI4MTIsNTI4MTMsNTI4MTQsNTI4MTUsNTI4MTYsNTI4MTcsNTI4MTgsNTI4MTksNTI4MjAsNTI4MjEsNTI4MjIsNTI4MjMsNTI4MjYsNTI4MjcsNTI4MjksNTI4MzAsNTI4MzQsNTI4MzUsNTI4MzYsNTI4MzcsNTI4MzgsNTI4MzksNTI4NDIsNTI4NDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4NDYsNTI4NDcsNTI4NDgsNTI4NDksNTI4NTAsNTI4NTEsNTI4NTQsNTI4NTUsNTI4NTcsNTI4NTgsNTI4NTksNTI4NjEsNTI4NjIsNTI4NjMsNTI4NjQsNTI4NjUsNTI4NjYsNTI4NjcsNTI4NzAsNTI4NzIsNTI4NzQsNTI4NzUsNTI4NzYsNTI4NzcsNTI4NzgsNTI4NzksNTI4ODIsNTI4ODMsNTI4ODUsNTI4ODYsNTI4ODcsNTI4ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg5MCw1Mjg5MSw1Mjg5Miw1Mjg5Myw1Mjg5NCw1Mjg5NSw1Mjg5OCw1MjkwMiw1MjkwMyw1MjkwNCw1MjkwNSw1MjkwNiw1MjkwNyw1MjkxMCw1MjkxMSw1MjkxMiw1MjkxMyw1MjkxNCw1MjkxNSw1MjkxNiw1MjkxNyw1MjkxOCw1MjkxOSw1MjkyMCw1MjkyMSw1MjkyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjkyMyw1MjkyNCw1MjkyNSw1MjkyNiw1MjkyNyw1MjkyOCw1MjkzMCw1MjkzMSw1MjkzMiw1MjkzMyw1MjkzNCw1MjkzNSw1MjkzNiw1MjkzNyw1MjkzOCw1MjkzOSw1Mjk0MCw1Mjk0MSw1Mjk0Miw1Mjk0Myw1Mjk0NCw1Mjk0NSw1Mjk0Niw1Mjk0Nyw1Mjk0OCw1Mjk0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjk1MCw1Mjk1MSw1Mjk1Miw1Mjk1Myw1Mjk1NCw1Mjk1NSw1Mjk1Niw1Mjk1Nyw1Mjk1OCw1Mjk1OSw1Mjk2MCw1Mjk2MSw1Mjk2Miw1Mjk2Myw1Mjk2Niw1Mjk2Nyw1Mjk2OSw1Mjk3MCw1Mjk3Myw1Mjk3NCw1Mjk3NSw1Mjk3Niw1Mjk3Nyw1Mjk3OCw1Mjk3OSw1Mjk4Miw1Mjk4Niw1Mjk4Nyw1Mjk4OCw1Mjk4OSw1Mjk5MCw1Mjk5MSw0NDAzMiw0NDAzMyw0NDAzNiw0NDAzOSw0NDA0MCw0NDA0MSw0NDA0Miw0NDA0OCw0NDA0OSw0NDA1MCw0NDA1MSw0NDA1Miw0NDA1Myw0NDA1NCw0NDA1NSw0NDA1Nyw0NDA1OCw0NDA1OSw0NDA2MCw0NDA2MSw0NDA2NCw0NDA2OCw0NDA3Niw0NDA3Nyw0NDA3OSw0NDA4MCw0NDA4MSw0NDA4OCw0NDA4OSw0NDA5Miw0NDA5Niw0NDEwNyw0NDEwOSw0NDExNiw0NDEyMCw0NDEyNCw0NDE0NCw0NDE0NSw0NDE0OCw0NDE1MSw0NDE1Miw0NDE1NCw0NDE2MCw0NDE2MSw0NDE2Myw0NDE2NCw0NDE2NSw0NDE2Niw0NDE2OSw0NDE3MCw0NDE3MSw0NDE3Miw0NDE3Niw0NDE4MCw0NDE4OCw0NDE4OSw0NDE5MSw0NDE5Miw0NDE5Myw0NDIwMCw0NDIwMSw0NDIwMiw0NDIwNCw0NDIwNyw0NDIwOCw0NDIxNiw0NDIxNyw0NDIxOSw0NDIyMCw0NDIyMSw0NDIyNSw0NDIyOCw0NDIzMiw0NDIzNiw0NDI0NSw0NDI0Nyw0NDI1Niw0NDI1Nyw0NDI2MCw0NDI2Myw0NDI2NCw0NDI2Niw0NDI2OCw0NDI3MSw0NDI3Miw0NDI3Myw0NDI3NSw0NDI3Nyw0NDI3OCw0NDI4NCw0NDI4NSw0NDI4OCw0NDI5Miw0NDI5NCw1Mjk5NCw1Mjk5NSw1Mjk5Nyw1Mjk5OCw1Mjk5OSw1MzAwMSw1MzAwMiw1MzAwMyw1MzAwNCw1MzAwNSw1MzAwNiw1MzAwNyw1MzAxMCw1MzAxMiw1MzAxNCw1MzAxNSw1MzAxNiw1MzAxNyw1MzAxOCw1MzAxOSw1MzAyMSw1MzAyMiw1MzAyMyw1MzAyNSw1MzAyNiw1MzAyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzAyOSw1MzAzMCw1MzAzMSw1MzAzMiw1MzAzMyw1MzAzNCw1MzAzNSw1MzAzOCw1MzA0Miw1MzA0Myw1MzA0NCw1MzA0NSw1MzA0Niw1MzA0Nyw1MzA0OSw1MzA1MCw1MzA1MSw1MzA1Miw1MzA1Myw1MzA1NCw1MzA1NSw1MzA1Niw1MzA1Nyw1MzA1OCw1MzA1OSw1MzA2MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzA2MSw1MzA2Miw1MzA2Myw1MzA2NCw1MzA2NSw1MzA2Niw1MzA2Nyw1MzA2OCw1MzA2OSw1MzA3MCw1MzA3MSw1MzA3Miw1MzA3Myw1MzA3NCw1MzA3NSw1MzA3OCw1MzA3OSw1MzA4MSw1MzA4Miw1MzA4Myw1MzA4NSw1MzA4Niw1MzA4Nyw1MzA4OCw1MzA4OSw1MzA5MCw1MzA5MSw1MzA5NCw1MzA5Niw1MzA5OCw1MzA5OSw1MzEwMCw0NDMwMCw0NDMwMSw0NDMwMyw0NDMwNSw0NDMxMiw0NDMxNiw0NDMyMCw0NDMyOSw0NDMzMiw0NDMzMyw0NDM0MCw0NDM0MSw0NDM0NCw0NDM0OCw0NDM1Niw0NDM1Nyw0NDM1OSw0NDM2MSw0NDM2OCw0NDM3Miw0NDM3Niw0NDM4NSw0NDM4Nyw0NDM5Niw0NDM5Nyw0NDQwMCw0NDQwMyw0NDQwNCw0NDQwNSw0NDQwNiw0NDQxMSw0NDQxMiw0NDQxMyw0NDQxNSw0NDQxNyw0NDQxOCw0NDQyNCw0NDQyNSw0NDQyOCw0NDQzMiw0NDQ0NCw0NDQ0NSw0NDQ1Miw0NDQ3MSw0NDQ4MCw0NDQ4MSw0NDQ4NCw0NDQ4OCw0NDQ5Niw0NDQ5Nyw0NDQ5OSw0NDUwOCw0NDUxMiw0NDUxNiw0NDUzNiw0NDUzNyw0NDU0MCw0NDU0Myw0NDU0NCw0NDU0NSw0NDU1Miw0NDU1Myw0NDU1NSw0NDU1Nyw0NDU2NCw0NDU5Miw0NDU5Myw0NDU5Niw0NDU5OSw0NDYwMCw0NDYwMiw0NDYwOCw0NDYwOSw0NDYxMSw0NDYxMyw0NDYxNCw0NDYxOCw0NDYyMCw0NDYyMSw0NDYyMiw0NDYyNCw0NDYyOCw0NDYzMCw0NDYzNiw0NDYzNyw0NDYzOSw0NDY0MCw0NDY0MSw0NDY0NSw0NDY0OCw0NDY0OSw0NDY1Miw0NDY1Niw0NDY2NCw1MzEwMSw1MzEwMiw1MzEwMyw1MzEwNiw1MzEwNyw1MzEwOSw1MzExMCw1MzExMSw1MzExMyw1MzExNCw1MzExNSw1MzExNiw1MzExNyw1MzExOCw1MzExOSw1MzEyMSw1MzEyMiw1MzEyMyw1MzEyNCw1MzEyNiw1MzEyNyw1MzEyOCw1MzEyOSw1MzEzMCw1MzEzMSw1MzEzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzEzNCw1MzEzNSw1MzEzNiw1MzEzNyw1MzEzOCw1MzEzOSw1MzE0MCw1MzE0MSw1MzE0Miw1MzE0Myw1MzE0NCw1MzE0NSw1MzE0Niw1MzE0Nyw1MzE0OCw1MzE0OSw1MzE1MCw1MzE1MSw1MzE1Miw1MzE1NCw1MzE1NSw1MzE1Niw1MzE1Nyw1MzE1OCw1MzE1OSw1MzE2MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzE2Miw1MzE2Myw1MzE2NCw1MzE2NSw1MzE2Niw1MzE2Nyw1MzE2OSw1MzE3MCw1MzE3MSw1MzE3Miw1MzE3Myw1MzE3NCw1MzE3NSw1MzE3Niw1MzE3Nyw1MzE3OCw1MzE3OSw1MzE4MCw1MzE4MSw1MzE4Miw1MzE4Myw1MzE4NCw1MzE4NSw1MzE4Niw1MzE4Nyw1MzE4OSw1MzE5MCw1MzE5MSw1MzE5Miw1MzE5Myw1MzE5NCw1MzE5NSw0NDY2NSw0NDY2Nyw0NDY2OCw0NDY2OSw0NDY3Niw0NDY3Nyw0NDY4NCw0NDczMiw0NDczMyw0NDczNCw0NDczNiw0NDc0MCw0NDc0OCw0NDc0OSw0NDc1MSw0NDc1Miw0NDc1Myw0NDc2MCw0NDc2MSw0NDc2NCw0NDc3Niw0NDc3OSw0NDc4MSw0NDc4OCw0NDc5Miw0NDc5Niw0NDgwNyw0NDgwOCw0NDgxMyw0NDgxNiw0NDg0NCw0NDg0NSw0NDg0OCw0NDg1MCw0NDg1Miw0NDg2MCw0NDg2MSw0NDg2Myw0NDg2NSw0NDg2Niw0NDg2Nyw0NDg3Miw0NDg3Myw0NDg4MCw0NDg5Miw0NDg5Myw0NDkwMCw0NDkwMSw0NDkyMSw0NDkyOCw0NDkzMiw0NDkzNiw0NDk0NCw0NDk0NSw0NDk0OSw0NDk1Niw0NDk4NCw0NDk4NSw0NDk4OCw0NDk5Miw0NDk5OSw0NTAwMCw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIwMCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIwNSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIxMSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIyOCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIzNSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQzMyw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMzNSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgwNiw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQxMCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQxOCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQyNSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAzOSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjExMiw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUxMCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQxMiw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQyOSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUwMCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0NjkyNCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYzOCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1MzcwMCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1MzcwNiw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0NzAwMCw0NzAwMSw0NzAwNCw0NzAwOCw0NzAxNiw0NzAxNyw0NzAxOSw0NzAyMCw0NzAyMSw0NzAyOCw0NzAyOSw0NzAzMiw0NzA0Nyw0NzA0OSw0NzA4NCw0NzA4NSw0NzA4OCw0NzA5Miw0NzEwMCw0NzEwMSw0NzEwMyw0NzEwNCw0NzEwNSw0NzExMSw0NzExMiw0NzExMyw0NzExNiw0NzEyMCw0NzEyOCw0NzEyOSw0NzEzMSw0NzEzMyw0NzE0MCw0NzE0MSw0NzE0NCw0NzE0OCw0NzE1Niw0NzE1Nyw0NzE1OSw0NzE2MCw0NzE2MSw0NzE2OCw0NzE3Miw0NzE4NSw0NzE4Nyw0NzE5Niw0NzE5Nyw0NzIwMCw0NzIwNCw0NzIxMiw0NzIxMyw0NzIxNSw0NzIxNyw0NzIyNCw0NzIyOCw0NzI0NSw0NzI3Miw0NzI4MCw0NzI4NCw0NzI4OCw0NzI5Niw0NzI5Nyw0NzI5OSw0NzMwMSw0NzMwOCw0NzMxMiw0NzMxNiw0NzMyNSw0NzMyNyw0NzMyOSw0NzMzNiw0NzMzNyw0NzM0MCw0NzM0NCw0NzM1Miw0NzM1Myw0NzM1NSw0NzM1Nyw0NzM2NCw0NzM4NCw0NzM5Miw0NzQyMCw0NzQyMSw0NzQyNCw0NzQyOCw0NzQzNiw0NzQzOSw0NzQ0MSw0NzQ0OCw0NzQ0OSw0NzQ1Miw0NzQ1Niw0NzQ2NCw0NzQ2NSw1MzcxMiw1MzcxMyw1MzcxNCw1MzcxNSw1MzcxNiw1MzcxNyw1MzcxOCw1MzcxOSw1MzcyMSw1MzcyMiw1MzcyMyw1MzcyNCw1MzcyNSw1MzcyNiw1MzcyNyw1MzcyOCw1MzcyOSw1MzczMCw1MzczMSw1MzczMiw1MzczMyw1MzczNCw1MzczNSw1MzczNiw1MzczNyw1MzczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzczOSw1Mzc0MCw1Mzc0MSw1Mzc0Miw1Mzc0Myw1Mzc0NCw1Mzc0NSw1Mzc0Niw1Mzc0Nyw1Mzc0OSw1Mzc1MCw1Mzc1MSw1Mzc1Myw1Mzc1NCw1Mzc1NSw1Mzc1Niw1Mzc1Nyw1Mzc1OCw1Mzc1OSw1Mzc2MCw1Mzc2MSw1Mzc2Miw1Mzc2Myw1Mzc2NCw1Mzc2NSw1Mzc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzc2OCw1Mzc3MCw1Mzc3MSw1Mzc3Miw1Mzc3Myw1Mzc3NCw1Mzc3NSw1Mzc3Nyw1Mzc3OCw1Mzc3OSw1Mzc4MCw1Mzc4MSw1Mzc4Miw1Mzc4Myw1Mzc4NCw1Mzc4NSw1Mzc4Niw1Mzc4Nyw1Mzc4OCw1Mzc4OSw1Mzc5MCw1Mzc5MSw1Mzc5Miw1Mzc5Myw1Mzc5NCw1Mzc5NSw1Mzc5Niw1Mzc5Nyw1Mzc5OCw1Mzc5OSw1MzgwMCw1MzgwMSw0NzQ2Nyw0NzQ2OSw0NzQ3Niw0NzQ3Nyw0NzQ4MCw0NzQ4NCw0NzQ5Miw0NzQ5Myw0NzQ5NSw0NzQ5Nyw0NzQ5OCw0NzUwMSw0NzUwMiw0NzUzMiw0NzUzMyw0NzUzNiw0NzU0MCw0NzU0OCw0NzU0OSw0NzU1MSw0NzU1Myw0NzU2MCw0NzU2MSw0NzU2NCw0NzU2Niw0NzU2Nyw0NzU2OCw0NzU2OSw0NzU3MCw0NzU3Niw0NzU3Nyw0NzU3OSw0NzU4MSw0NzU4Miw0NzU4NSw0NzU4Nyw0NzU4OCw0NzU4OSw0NzU5Miw0NzU5Niw0NzYwNCw0NzYwNSw0NzYwNyw0NzYwOCw0NzYwOSw0NzYxMCw0NzYxNiw0NzYxNyw0NzYyNCw0NzYzNyw0NzY3Miw0NzY3Myw0NzY3Niw0NzY4MCw0NzY4Miw0NzY4OCw0NzY4OSw0NzY5MSw0NzY5Myw0NzY5NCw0NzY5OSw0NzcwMCw0NzcwMSw0NzcwNCw0NzcwOCw0NzcxNiw0NzcxNyw0NzcxOSw0NzcyMCw0NzcyMSw0NzcyOCw0NzcyOSw0NzczMiw0NzczNiw0Nzc0Nyw0Nzc0OCw0Nzc0OSw0Nzc1MSw0Nzc1Niw0Nzc4NCw0Nzc4NSw0Nzc4Nyw0Nzc4OCw0Nzc5Miw0Nzc5NCw0NzgwMCw0NzgwMSw0NzgwMyw0NzgwNSw0NzgxMiw0NzgxNiw0NzgzMiw0NzgzMyw0Nzg2OCw1MzgwMiw1MzgwMyw1MzgwNiw1MzgwNyw1MzgwOSw1MzgxMCw1MzgxMSw1MzgxMyw1MzgxNCw1MzgxNSw1MzgxNiw1MzgxNyw1MzgxOCw1MzgxOSw1MzgyMiw1MzgyNCw1MzgyNiw1MzgyNyw1MzgyOCw1MzgyOSw1MzgzMCw1MzgzMSw1MzgzMyw1MzgzNCw1MzgzNSw1MzgzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzgzNyw1MzgzOCw1MzgzOSw1Mzg0MCw1Mzg0MSw1Mzg0Miw1Mzg0Myw1Mzg0NCw1Mzg0NSw1Mzg0Niw1Mzg0Nyw1Mzg0OCw1Mzg0OSw1Mzg1MCw1Mzg1MSw1Mzg1Myw1Mzg1NCw1Mzg1NSw1Mzg1Niw1Mzg1Nyw1Mzg1OCw1Mzg1OSw1Mzg2MSw1Mzg2Miw1Mzg2Myw1Mzg2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2NSw1Mzg2Niw1Mzg2Nyw1Mzg2OCw1Mzg2OSw1Mzg3MCw1Mzg3MSw1Mzg3Miw1Mzg3Myw1Mzg3NCw1Mzg3NSw1Mzg3Niw1Mzg3Nyw1Mzg3OCw1Mzg3OSw1Mzg4MCw1Mzg4MSw1Mzg4Miw1Mzg4Myw1Mzg4NCw1Mzg4NSw1Mzg4Niw1Mzg4Nyw1Mzg5MCw1Mzg5MSw1Mzg5Myw1Mzg5NCw1Mzg5NSw1Mzg5Nyw1Mzg5OCw1Mzg5OSw1MzkwMCw0Nzg3Miw0Nzg3Niw0Nzg4NSw0Nzg4Nyw0Nzg4OSw0Nzg5Niw0NzkwMCw0NzkwNCw0NzkxMyw0NzkxNSw0NzkyNCw0NzkyNSw0NzkyNiw0NzkyOCw0NzkzMSw0NzkzMiw0NzkzMyw0NzkzNCw0Nzk0MCw0Nzk0MSw0Nzk0Myw0Nzk0NSw0Nzk0OSw0Nzk1MSw0Nzk1Miw0Nzk1Niw0Nzk2MCw0Nzk2OSw0Nzk3MSw0Nzk4MCw0ODAwOCw0ODAxMiw0ODAxNiw0ODAzNiw0ODA0MCw0ODA0NCw0ODA1Miw0ODA1NSw0ODA2NCw0ODA2OCw0ODA3Miw0ODA4MCw0ODA4Myw0ODEyMCw0ODEyMSw0ODEyNCw0ODEyNyw0ODEyOCw0ODEzMCw0ODEzNiw0ODEzNyw0ODEzOSw0ODE0MCw0ODE0MSw0ODE0Myw0ODE0NSw0ODE0OCw0ODE0OSw0ODE1MCw0ODE1MSw0ODE1Miw0ODE1NSw0ODE1Niw0ODE1Nyw0ODE1OCw0ODE1OSw0ODE2NCw0ODE2NSw0ODE2Nyw0ODE2OSw0ODE3Myw0ODE3Niw0ODE3Nyw0ODE4MCw0ODE4NCw0ODE5Miw0ODE5Myw0ODE5NSw0ODE5Niw0ODE5Nyw0ODIwMSw0ODIwNCw0ODIwNSw0ODIwOCw0ODIyMSw0ODI2MCw0ODI2MSw0ODI2NCw0ODI2Nyw0ODI2OCw0ODI3MCw0ODI3Niw0ODI3Nyw0ODI3OSw1MzkwMSw1MzkwMiw1MzkwMyw1MzkwNiw1MzkwNyw1MzkwOCw1MzkxMCw1MzkxMSw1MzkxMiw1MzkxMyw1MzkxNCw1MzkxNSw1MzkxNyw1MzkxOCw1MzkxOSw1MzkyMSw1MzkyMiw1MzkyMyw1MzkyNSw1MzkyNiw1MzkyNyw1MzkyOCw1MzkyOSw1MzkzMCw1MzkzMSw1MzkzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzkzNCw1MzkzNSw1MzkzNiw1MzkzOCw1MzkzOSw1Mzk0MCw1Mzk0MSw1Mzk0Miw1Mzk0Myw1Mzk0Niw1Mzk0Nyw1Mzk0OSw1Mzk1MCw1Mzk1Myw1Mzk1NSw1Mzk1Niw1Mzk1Nyw1Mzk1OCw1Mzk1OSw1Mzk2Miw1Mzk2NCw1Mzk2NSw1Mzk2Niw1Mzk2Nyw1Mzk2OCw1Mzk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzk3MCw1Mzk3MSw1Mzk3Myw1Mzk3NCw1Mzk3NSw1Mzk3Nyw1Mzk3OCw1Mzk3OSw1Mzk4MSw1Mzk4Miw1Mzk4Myw1Mzk4NCw1Mzk4NSw1Mzk4Niw1Mzk4Nyw1Mzk5MCw1Mzk5MSw1Mzk5Miw1Mzk5Myw1Mzk5NCw1Mzk5NSw1Mzk5Niw1Mzk5Nyw1Mzk5OCw1Mzk5OSw1NDAwMiw1NDAwMyw1NDAwNSw1NDAwNiw1NDAwNyw1NDAwOSw1NDAxMCw0ODI4MSw0ODI4Miw0ODI4OCw0ODI4OSw0ODI5Miw0ODI5NSw0ODI5Niw0ODMwNCw0ODMwNSw0ODMwNyw0ODMwOCw0ODMwOSw0ODMxNiw0ODMxNyw0ODMyMCw0ODMyNCw0ODMzMyw0ODMzNSw0ODMzNiw0ODMzNyw0ODM0MSw0ODM0NCw0ODM0OCw0ODM3Miw0ODM3Myw0ODM3NCw0ODM3Niw0ODM4MCw0ODM4OCw0ODM4OSw0ODM5MSw0ODM5Myw0ODQwMCw0ODQwNCw0ODQyMCw0ODQyOCw0ODQ0OCw0ODQ1Niw0ODQ1Nyw0ODQ2MCw0ODQ2NCw0ODQ3Miw0ODQ3Myw0ODQ4NCw0ODQ4OCw0ODUxMiw0ODUxMyw0ODUxNiw0ODUxOSw0ODUyMCw0ODUyMSw0ODUyMiw0ODUyOCw0ODUyOSw0ODUzMSw0ODUzMyw0ODUzNyw0ODUzOCw0ODU0MCw0ODU0OCw0ODU2MCw0ODU2OCw0ODU5Niw0ODU5Nyw0ODYwMCw0ODYwNCw0ODYxNyw0ODYyNCw0ODYyOCw0ODYzMiw0ODY0MCw0ODY0Myw0ODY0NSw0ODY1Miw0ODY1Myw0ODY1Niw0ODY2MCw0ODY2OCw0ODY2OSw0ODY3MSw0ODcwOCw0ODcwOSw0ODcxMiw0ODcxNiw0ODcxOCw0ODcyNCw0ODcyNSw0ODcyNyw0ODcyOSw0ODczMCw0ODczMSw0ODczNiw0ODczNyw0ODc0MCw1NDAxMSw1NDAxMiw1NDAxMyw1NDAxNCw1NDAxNSw1NDAxOCw1NDAyMCw1NDAyMiw1NDAyMyw1NDAyNCw1NDAyNSw1NDAyNiw1NDAyNyw1NDAzMSw1NDAzMyw1NDAzNCw1NDAzNSw1NDAzNyw1NDAzOSw1NDA0MCw1NDA0MSw1NDA0Miw1NDA0Myw1NDA0Niw1NDA1MCw1NDA1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA1Miw1NDA1NCw1NDA1NSw1NDA1OCw1NDA1OSw1NDA2MSw1NDA2Miw1NDA2Myw1NDA2NSw1NDA2Niw1NDA2Nyw1NDA2OCw1NDA2OSw1NDA3MCw1NDA3MSw1NDA3NCw1NDA3OCw1NDA3OSw1NDA4MCw1NDA4MSw1NDA4Miw1NDA4Myw1NDA4Niw1NDA4Nyw1NDA4OCw1NDA4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA5MCw1NDA5MSw1NDA5Miw1NDA5Myw1NDA5NCw1NDA5NSw1NDA5Niw1NDA5Nyw1NDA5OCw1NDA5OSw1NDEwMCw1NDEwMSw1NDEwMiw1NDEwMyw1NDEwNCw1NDEwNSw1NDEwNiw1NDEwNyw1NDEwOCw1NDEwOSw1NDExMCw1NDExMSw1NDExMiw1NDExMyw1NDExNCw1NDExNSw1NDExNiw1NDExNyw1NDExOCw1NDExOSw1NDEyMCw1NDEyMSw0ODc0NCw0ODc0Niw0ODc1Miw0ODc1Myw0ODc1NSw0ODc1Niw0ODc1Nyw0ODc2Myw0ODc2NCw0ODc2NSw0ODc2OCw0ODc3Miw0ODc4MCw0ODc4MSw0ODc4Myw0ODc4NCw0ODc4NSw0ODc5Miw0ODc5Myw0ODgwOCw0ODg0OCw0ODg0OSw0ODg1Miw0ODg1NSw0ODg1Niw0ODg2NCw0ODg2Nyw0ODg2OCw0ODg2OSw0ODg3Niw0ODg5Nyw0ODkwNCw0ODkwNSw0ODkyMCw0ODkyMSw0ODkyMyw0ODkyNCw0ODkyNSw0ODk2MCw0ODk2MSw0ODk2NCw0ODk2OCw0ODk3Niw0ODk3Nyw0ODk4MSw0OTA0NCw0OTA3Miw0OTA5Myw0OTEwMCw0OTEwMSw0OTEwNCw0OTEwOCw0OTExNiw0OTExOSw0OTEyMSw0OTIxMiw0OTIzMyw0OTI0MCw0OTI0NCw0OTI0OCw0OTI1Niw0OTI1Nyw0OTI5Niw0OTI5Nyw0OTMwMCw0OTMwNCw0OTMxMiw0OTMxMyw0OTMxNSw0OTMxNyw0OTMyNCw0OTMyNSw0OTMyNyw0OTMyOCw0OTMzMSw0OTMzMiw0OTMzMyw0OTMzNCw0OTM0MCw0OTM0MSw0OTM0Myw0OTM0NCw0OTM0NSw0OTM0OSw0OTM1Miw0OTM1Myw0OTM1Niw0OTM2MCw0OTM2OCw0OTM2OSw0OTM3MSw0OTM3Miw0OTM3Myw0OTM4MCw1NDEyMiw1NDEyMyw1NDEyNCw1NDEyNSw1NDEyNiw1NDEyNyw1NDEyOCw1NDEyOSw1NDEzMCw1NDEzMSw1NDEzMiw1NDEzMyw1NDEzNCw1NDEzNSw1NDEzNiw1NDEzNyw1NDEzOCw1NDEzOSw1NDE0Miw1NDE0Myw1NDE0NSw1NDE0Niw1NDE0Nyw1NDE0OSw1NDE1MCw1NDE1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE1Miw1NDE1Myw1NDE1NCw1NDE1NSw1NDE1OCw1NDE2Miw1NDE2Myw1NDE2NCw1NDE2NSw1NDE2Niw1NDE2Nyw1NDE3MCw1NDE3MSw1NDE3Myw1NDE3NCw1NDE3NSw1NDE3Nyw1NDE3OCw1NDE3OSw1NDE4MCw1NDE4MSw1NDE4Miw1NDE4Myw1NDE4Niw1NDE4OCw1NDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE5MSw1NDE5Miw1NDE5Myw1NDE5NCw1NDE5NSw1NDE5Nyw1NDE5OCw1NDE5OSw1NDIwMSw1NDIwMiw1NDIwMyw1NDIwNSw1NDIwNiw1NDIwNyw1NDIwOCw1NDIwOSw1NDIxMCw1NDIxMSw1NDIxNCw1NDIxNSw1NDIxOCw1NDIxOSw1NDIyMCw1NDIyMSw1NDIyMiw1NDIyMyw1NDIyNSw1NDIyNiw1NDIyNyw1NDIyOCw1NDIyOSw1NDIzMCw0OTM4MSw0OTM4NCw0OTM4OCw0OTM5Niw0OTM5Nyw0OTM5OSw0OTQwMSw0OTQwOCw0OTQxMiw0OTQxNiw0OTQyNCw0OTQyOSw0OTQzNiw0OTQzNyw0OTQzOCw0OTQzOSw0OTQ0MCw0OTQ0Myw0OTQ0NCw0OTQ0Niw0OTQ0Nyw0OTQ1Miw0OTQ1Myw0OTQ1NSw0OTQ1Niw0OTQ1Nyw0OTQ2Miw0OTQ2NCw0OTQ2NSw0OTQ2OCw0OTQ3Miw0OTQ4MCw0OTQ4MSw0OTQ4Myw0OTQ4NCw0OTQ4NSw0OTQ5Miw0OTQ5Myw0OTQ5Niw0OTUwMCw0OTUwOCw0OTUwOSw0OTUxMSw0OTUxMiw0OTUxMyw0OTUyMCw0OTUyNCw0OTUyOCw0OTU0MSw0OTU0OCw0OTU0OSw0OTU1MCw0OTU1Miw0OTU1Niw0OTU1OCw0OTU2NCw0OTU2NSw0OTU2Nyw0OTU2OSw0OTU3Myw0OTU3Niw0OTU3Nyw0OTU4MCw0OTU4NCw0OTU5Nyw0OTYwNCw0OTYwOCw0OTYxMiw0OTYyMCw0OTYyMyw0OTYyNCw0OTYzMiw0OTYzNiw0OTY0MCw0OTY0OCw0OTY0OSw0OTY1MSw0OTY2MCw0OTY2MSw0OTY2NCw0OTY2OCw0OTY3Niw0OTY3Nyw0OTY3OSw0OTY4MSw0OTY4OCw0OTY4OSw0OTY5Miw0OTY5NSw0OTY5Niw0OTcwNCw0OTcwNSw0OTcwNyw0OTcwOSw1NDIzMSw1NDIzMyw1NDIzNCw1NDIzNSw1NDIzNiw1NDIzNyw1NDIzOCw1NDIzOSw1NDI0MCw1NDI0Miw1NDI0NCw1NDI0NSw1NDI0Niw1NDI0Nyw1NDI0OCw1NDI0OSw1NDI1MCw1NDI1MSw1NDI1NCw1NDI1NSw1NDI1Nyw1NDI1OCw1NDI1OSw1NDI2MSw1NDI2Miw1NDI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI2NCw1NDI2NSw1NDI2Niw1NDI2Nyw1NDI3MCw1NDI3Miw1NDI3NCw1NDI3NSw1NDI3Niw1NDI3Nyw1NDI3OCw1NDI3OSw1NDI4MSw1NDI4Miw1NDI4Myw1NDI4NCw1NDI4NSw1NDI4Niw1NDI4Nyw1NDI4OCw1NDI4OSw1NDI5MCw1NDI5MSw1NDI5Miw1NDI5Myw1NDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI5NSw1NDI5Niw1NDI5Nyw1NDI5OCw1NDI5OSw1NDMwMCw1NDMwMiw1NDMwMyw1NDMwNCw1NDMwNSw1NDMwNiw1NDMwNyw1NDMwOCw1NDMwOSw1NDMxMCw1NDMxMSw1NDMxMiw1NDMxMyw1NDMxNCw1NDMxNSw1NDMxNiw1NDMxNyw1NDMxOCw1NDMxOSw1NDMyMCw1NDMyMSw1NDMyMiw1NDMyMyw1NDMyNCw1NDMyNSw1NDMyNiw1NDMyNyw0OTcxMSw0OTcxMyw0OTcxNCw0OTcxNiw0OTczNiw0OTc0NCw0OTc0NSw0OTc0OCw0OTc1Miw0OTc2MCw0OTc2NSw0OTc3Miw0OTc3Myw0OTc3Niw0OTc4MCw0OTc4OCw0OTc4OSw0OTc5MSw0OTc5Myw0OTgwMCw0OTgwMSw0OTgwOCw0OTgxNiw0OTgxOSw0OTgyMSw0OTgyOCw0OTgyOSw0OTgzMiw0OTgzNiw0OTgzNyw0OTg0NCw0OTg0NSw0OTg0Nyw0OTg0OSw0OTg4NCw0OTg4NSw0OTg4OCw0OTg5MSw0OTg5Miw0OTg5OSw0OTkwMCw0OTkwMSw0OTkwMyw0OTkwNSw0OTkxMCw0OTkxMiw0OTkxMyw0OTkxNSw0OTkxNiw0OTkyMCw0OTkyOCw0OTkyOSw0OTkzMiw0OTkzMyw0OTkzOSw0OTk0MCw0OTk0MSw0OTk0NCw0OTk0OCw0OTk1Niw0OTk1Nyw0OTk2MCw0OTk2MSw0OTk4OSw1MDAyNCw1MDAyNSw1MDAyOCw1MDAzMiw1MDAzNCw1MDA0MCw1MDA0MSw1MDA0NCw1MDA0NSw1MDA1Miw1MDA1Niw1MDA2MCw1MDExMiw1MDEzNiw1MDEzNyw1MDE0MCw1MDE0Myw1MDE0NCw1MDE0Niw1MDE1Miw1MDE1Myw1MDE1Nyw1MDE2NCw1MDE2NSw1MDE2OCw1MDE4NCw1MDE5Miw1MDIxMiw1MDIyMCw1MDIyNCw1NDMyOCw1NDMyOSw1NDMzMCw1NDMzMSw1NDMzMiw1NDMzMyw1NDMzNCw1NDMzNSw1NDMzNyw1NDMzOCw1NDMzOSw1NDM0MSw1NDM0Miw1NDM0Myw1NDM0NCw1NDM0NSw1NDM0Niw1NDM0Nyw1NDM0OCw1NDM0OSw1NDM1MCw1NDM1MSw1NDM1Miw1NDM1Myw1NDM1NCw1NDM1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM1Niw1NDM1Nyw1NDM1OCw1NDM1OSw1NDM2MCw1NDM2MSw1NDM2Miw1NDM2Myw1NDM2NSw1NDM2Niw1NDM2Nyw1NDM2OSw1NDM3MCw1NDM3MSw1NDM3Myw1NDM3NCw1NDM3NSw1NDM3Niw1NDM3Nyw1NDM3OCw1NDM3OSw1NDM4MCw1NDM4Miw1NDM4NCw1NDM4NSw1NDM4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM4Nyw1NDM4OCw1NDM4OSw1NDM5MCw1NDM5MSw1NDM5NCw1NDM5NSw1NDM5Nyw1NDM5OCw1NDQwMSw1NDQwMyw1NDQwNCw1NDQwNSw1NDQwNiw1NDQwNyw1NDQxMCw1NDQxMiw1NDQxNCw1NDQxNSw1NDQxNiw1NDQxNyw1NDQxOCw1NDQxOSw1NDQyMSw1NDQyMiw1NDQyMyw1NDQyNCw1NDQyNSw1NDQyNiw1NDQyNyw1NDQyOCw1NDQyOSw1MDIyOCw1MDIzNiw1MDIzNyw1MDI0OCw1MDI3Niw1MDI3Nyw1MDI4MCw1MDI4NCw1MDI5Miw1MDI5Myw1MDI5Nyw1MDMwNCw1MDMyNCw1MDMzMiw1MDM2MCw1MDM2NCw1MDQwOSw1MDQxNiw1MDQxNyw1MDQyMCw1MDQyNCw1MDQyNiw1MDQzMSw1MDQzMiw1MDQzMyw1MDQ0NCw1MDQ0OCw1MDQ1Miw1MDQ2MCw1MDQ3Miw1MDQ3Myw1MDQ3Niw1MDQ4MCw1MDQ4OCw1MDQ4OSw1MDQ5MSw1MDQ5Myw1MDUwMCw1MDUwMSw1MDUwNCw1MDUwNSw1MDUwNiw1MDUwOCw1MDUwOSw1MDUxMCw1MDUxNSw1MDUxNiw1MDUxNyw1MDUxOSw1MDUyMCw1MDUyMSw1MDUyNSw1MDUyNiw1MDUyOCw1MDUyOSw1MDUzMiw1MDUzNiw1MDU0NCw1MDU0NSw1MDU0Nyw1MDU0OCw1MDU0OSw1MDU1Niw1MDU1Nyw1MDU2MCw1MDU2NCw1MDU2Nyw1MDU3Miw1MDU3Myw1MDU3NSw1MDU3Nyw1MDU4MSw1MDU4Myw1MDU4NCw1MDU4OCw1MDU5Miw1MDYwMSw1MDYxMiw1MDYxMyw1MDYxNiw1MDYxNyw1MDYxOSw1MDYyMCw1MDYyMSw1MDYyMiw1MDYyOCw1MDYyOSw1MDYzMCw1MDYzMSw1MDYzMiw1MDYzMyw1MDYzNCw1MDYzNiw1MDYzOCw1NDQzMCw1NDQzMSw1NDQzMiw1NDQzMyw1NDQzNCw1NDQzNSw1NDQzNiw1NDQzNyw1NDQzOCw1NDQzOSw1NDQ0MCw1NDQ0Miw1NDQ0Myw1NDQ0NCw1NDQ0NSw1NDQ0Niw1NDQ0Nyw1NDQ0OCw1NDQ0OSw1NDQ1MCw1NDQ1MSw1NDQ1Miw1NDQ1Myw1NDQ1NCw1NDQ1NSw1NDQ1NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ1Nyw1NDQ1OCw1NDQ1OSw1NDQ2MCw1NDQ2MSw1NDQ2Miw1NDQ2Myw1NDQ2NCw1NDQ2NSw1NDQ2Niw1NDQ2Nyw1NDQ2OCw1NDQ2OSw1NDQ3MCw1NDQ3MSw1NDQ3Miw1NDQ3Myw1NDQ3NCw1NDQ3NSw1NDQ3Nyw1NDQ3OCw1NDQ3OSw1NDQ4MSw1NDQ4Miw1NDQ4Myw1NDQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ4Niw1NDQ4Nyw1NDQ4OCw1NDQ4OSw1NDQ5MCw1NDQ5MSw1NDQ5Myw1NDQ5NCw1NDQ5Niw1NDQ5Nyw1NDQ5OCw1NDQ5OSw1NDUwMCw1NDUwMSw1NDUwMiw1NDUwMyw1NDUwNSw1NDUwNiw1NDUwNyw1NDUwOSw1NDUxMCw1NDUxMSw1NDUxMyw1NDUxNCw1NDUxNSw1NDUxNiw1NDUxNyw1NDUxOCw1NDUxOSw1NDUyMSw1NDUyMiw1NDUyNCw1MDY0MCw1MDY0MSw1MDY0NCw1MDY0OCw1MDY1Niw1MDY1Nyw1MDY1OSw1MDY2MSw1MDY2OCw1MDY2OSw1MDY3MCw1MDY3Miw1MDY3Niw1MDY3OCw1MDY3OSw1MDY4NCw1MDY4NSw1MDY4Niw1MDY4Nyw1MDY4OCw1MDY4OSw1MDY5Myw1MDY5NCw1MDY5NSw1MDY5Niw1MDcwMCw1MDcwNCw1MDcxMiw1MDcxMyw1MDcxNSw1MDcxNiw1MDcyNCw1MDcyNSw1MDcyOCw1MDczMiw1MDczMyw1MDczNCw1MDczNiw1MDczOSw1MDc0MCw1MDc0MSw1MDc0Myw1MDc0NSw1MDc0Nyw1MDc1Miw1MDc1Myw1MDc1Niw1MDc2MCw1MDc2OCw1MDc2OSw1MDc3MSw1MDc3Miw1MDc3Myw1MDc4MCw1MDc4MSw1MDc4NCw1MDc5Niw1MDc5OSw1MDgwMSw1MDgwOCw1MDgwOSw1MDgxMiw1MDgxNiw1MDgyNCw1MDgyNSw1MDgyNyw1MDgyOSw1MDgzNiw1MDgzNyw1MDg0MCw1MDg0NCw1MDg1Miw1MDg1Myw1MDg1NSw1MDg1Nyw1MDg2NCw1MDg2NSw1MDg2OCw1MDg3Miw1MDg3Myw1MDg3NCw1MDg4MCw1MDg4MSw1MDg4Myw1MDg4NSw1MDg5Miw1MDg5Myw1MDg5Niw1MDkwMCw1MDkwOCw1MDkwOSw1MDkxMiw1MDkxMyw1MDkyMCw1NDUyNiw1NDUyNyw1NDUyOCw1NDUyOSw1NDUzMCw1NDUzMSw1NDUzMyw1NDUzNCw1NDUzNSw1NDUzNyw1NDUzOCw1NDUzOSw1NDU0MSw1NDU0Miw1NDU0Myw1NDU0NCw1NDU0NSw1NDU0Niw1NDU0Nyw1NDU1MCw1NDU1Miw1NDU1Myw1NDU1NCw1NDU1NSw1NDU1Niw1NDU1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU1OCw1NDU1OSw1NDU2MCw1NDU2MSw1NDU2Miw1NDU2Myw1NDU2NCw1NDU2NSw1NDU2Niw1NDU2Nyw1NDU2OCw1NDU2OSw1NDU3MCw1NDU3MSw1NDU3Miw1NDU3Myw1NDU3NCw1NDU3NSw1NDU3Niw1NDU3Nyw1NDU3OCw1NDU3OSw1NDU4MCw1NDU4MSw1NDU4Miw1NDU4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU4NCw1NDU4NSw1NDU4Niw1NDU4Nyw1NDU5MCw1NDU5MSw1NDU5Myw1NDU5NCw1NDU5NSw1NDU5Nyw1NDU5OCw1NDU5OSw1NDYwMCw1NDYwMSw1NDYwMiw1NDYwMyw1NDYwNiw1NDYwOCw1NDYxMCw1NDYxMSw1NDYxMiw1NDYxMyw1NDYxNCw1NDYxNSw1NDYxOCw1NDYxOSw1NDYyMSw1NDYyMiw1NDYyMyw1NDYyNSw1NDYyNiw1NDYyNyw1MDkyMSw1MDkyNCw1MDkyOCw1MDkzNiw1MDkzNyw1MDk0MSw1MDk0OCw1MDk0OSw1MDk1Miw1MDk1Niw1MDk2NCw1MDk2NSw1MDk2Nyw1MDk2OSw1MDk3Niw1MDk3Nyw1MDk4MCw1MDk4NCw1MDk5Miw1MDk5Myw1MDk5NSw1MDk5Nyw1MDk5OSw1MTAwNCw1MTAwNSw1MTAwOCw1MTAxMiw1MTAxOCw1MTAyMCw1MTAyMSw1MTAyMyw1MTAyNSw1MTAyNiw1MTAyNyw1MTAyOCw1MTAyOSw1MTAzMCw1MTAzMSw1MTAzMiw1MTAzNiw1MTA0MCw1MTA0OCw1MTA1MSw1MTA2MCw1MTA2MSw1MTA2NCw1MTA2OCw1MTA2OSw1MTA3MCw1MTA3NSw1MTA3Niw1MTA3Nyw1MTA3OSw1MTA4MCw1MTA4MSw1MTA4Miw1MTA4Niw1MTA4OCw1MTA4OSw1MTA5Miw1MTA5NCw1MTA5NSw1MTA5Niw1MTA5OCw1MTEwNCw1MTEwNSw1MTEwNyw1MTEwOCw1MTEwOSw1MTExMCw1MTExNiw1MTExNyw1MTEyMCw1MTEyNCw1MTEzMiw1MTEzMyw1MTEzNSw1MTEzNiw1MTEzNyw1MTE0NCw1MTE0NSw1MTE0OCw1MTE1MCw1MTE1Miw1MTE2MCw1MTE2NSw1MTE3Miw1MTE3Niw1MTE4MCw1MTIwMCw1MTIwMSw1MTIwNCw1MTIwOCw1MTIxMCw1NDYyOCw1NDYzMCw1NDYzMSw1NDYzNCw1NDYzNiw1NDYzOCw1NDYzOSw1NDY0MCw1NDY0MSw1NDY0Miw1NDY0Myw1NDY0Niw1NDY0Nyw1NDY0OSw1NDY1MCw1NDY1MSw1NDY1Myw1NDY1NCw1NDY1NSw1NDY1Niw1NDY1Nyw1NDY1OCw1NDY1OSw1NDY2Miw1NDY2Niw1NDY2NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY2OCw1NDY2OSw1NDY3MCw1NDY3MSw1NDY3Myw1NDY3NCw1NDY3NSw1NDY3Niw1NDY3Nyw1NDY3OCw1NDY3OSw1NDY4MCw1NDY4MSw1NDY4Miw1NDY4Myw1NDY4NCw1NDY4NSw1NDY4Niw1NDY4Nyw1NDY4OCw1NDY4OSw1NDY5MCw1NDY5MSw1NDY5Miw1NDY5NCw1NDY5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY5Niw1NDY5Nyw1NDY5OCw1NDY5OSw1NDcwMCw1NDcwMSw1NDcwMiw1NDcwMyw1NDcwNCw1NDcwNSw1NDcwNiw1NDcwNyw1NDcwOCw1NDcwOSw1NDcxMCw1NDcxMSw1NDcxMiw1NDcxMyw1NDcxNCw1NDcxNSw1NDcxNiw1NDcxNyw1NDcxOCw1NDcxOSw1NDcyMCw1NDcyMSw1NDcyMiw1NDcyMyw1NDcyNCw1NDcyNSw1NDcyNiw1NDcyNyw1MTIxNiw1MTIxNyw1MTIxOSw1MTIyMSw1MTIyMiw1MTIyOCw1MTIyOSw1MTIzMiw1MTIzNiw1MTI0NCw1MTI0NSw1MTI0Nyw1MTI0OSw1MTI1Niw1MTI2MCw1MTI2NCw1MTI3Miw1MTI3Myw1MTI3Niw1MTI3Nyw1MTI4NCw1MTMxMiw1MTMxMyw1MTMxNiw1MTMyMCw1MTMyMiw1MTMyOCw1MTMyOSw1MTMzMSw1MTMzMyw1MTMzNCw1MTMzNSw1MTMzOSw1MTM0MCw1MTM0MSw1MTM0OCw1MTM1Nyw1MTM1OSw1MTM2MSw1MTM2OCw1MTM4OCw1MTM4OSw1MTM5Niw1MTQwMCw1MTQwNCw1MTQxMiw1MTQxMyw1MTQxNSw1MTQxNyw1MTQyNCw1MTQyNSw1MTQyOCw1MTQ0NSw1MTQ1Miw1MTQ1Myw1MTQ1Niw1MTQ2MCw1MTQ2MSw1MTQ2Miw1MTQ2OCw1MTQ2OSw1MTQ3MSw1MTQ3Myw1MTQ4MCw1MTUwMCw1MTUwOCw1MTUzNiw1MTUzNyw1MTU0MCw1MTU0NCw1MTU1Miw1MTU1Myw1MTU1NSw1MTU2NCw1MTU2OCw1MTU3Miw1MTU4MCw1MTU5Miw1MTU5Myw1MTU5Niw1MTYwMCw1MTYwOCw1MTYwOSw1MTYxMSw1MTYxMyw1MTY0OCw1MTY0OSw1MTY1Miw1MTY1NSw1MTY1Niw1MTY1OCw1MTY2NCw1MTY2NSw1MTY2Nyw1NDczMCw1NDczMSw1NDczMyw1NDczNCw1NDczNSw1NDczNyw1NDczOSw1NDc0MCw1NDc0MSw1NDc0Miw1NDc0Myw1NDc0Niw1NDc0OCw1NDc1MCw1NDc1MSw1NDc1Miw1NDc1Myw1NDc1NCw1NDc1NSw1NDc1OCw1NDc1OSw1NDc2MSw1NDc2Miw1NDc2Myw1NDc2NSw1NDc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDc2Nyw1NDc2OCw1NDc2OSw1NDc3MCw1NDc3MSw1NDc3NCw1NDc3Niw1NDc3OCw1NDc3OSw1NDc4MCw1NDc4MSw1NDc4Miw1NDc4Myw1NDc4Niw1NDc4Nyw1NDc4OSw1NDc5MCw1NDc5MSw1NDc5Myw1NDc5NCw1NDc5NSw1NDc5Niw1NDc5Nyw1NDc5OCw1NDc5OSw1NDgwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgwNiw1NDgwNyw1NDgwOCw1NDgwOSw1NDgxMCw1NDgxMSw1NDgxMyw1NDgxNCw1NDgxNSw1NDgxNyw1NDgxOCw1NDgxOSw1NDgyMSw1NDgyMiw1NDgyMyw1NDgyNCw1NDgyNSw1NDgyNiw1NDgyNyw1NDgyOCw1NDgzMCw1NDgzMSw1NDgzMiw1NDgzMyw1NDgzNCw1NDgzNSw1NDgzNiw1NDgzNyw1NDgzOCw1NDgzOSw1NDg0Miw1NDg0Myw1MTY2OSw1MTY3MCw1MTY3Myw1MTY3NCw1MTY3Niw1MTY3Nyw1MTY4MCw1MTY4Miw1MTY4NCw1MTY4Nyw1MTY5Miw1MTY5Myw1MTY5NSw1MTY5Niw1MTY5Nyw1MTcwNCw1MTcwNSw1MTcwOCw1MTcxMiw1MTcyMCw1MTcyMSw1MTcyMyw1MTcyNCw1MTcyNSw1MTczMiw1MTczNiw1MTc1Myw1MTc4OCw1MTc4OSw1MTc5Miw1MTc5Niw1MTgwNCw1MTgwNSw1MTgwNyw1MTgwOCw1MTgwOSw1MTgxNiw1MTgzNyw1MTg0NCw1MTg2NCw1MTkwMCw1MTkwMSw1MTkwNCw1MTkwOCw1MTkxNiw1MTkxNyw1MTkxOSw1MTkyMSw1MTkyMyw1MTkyOCw1MTkyOSw1MTkzNiw1MTk0OCw1MTk1Niw1MTk3Niw1MTk4NCw1MTk4OCw1MTk5Miw1MjAwMCw1MjAwMSw1MjAzMyw1MjA0MCw1MjA0MSw1MjA0NCw1MjA0OCw1MjA1Niw1MjA1Nyw1MjA2MSw1MjA2OCw1MjA4OCw1MjA4OSw1MjEyNCw1MjE1Miw1MjE4MCw1MjE5Niw1MjE5OSw1MjIwMSw1MjIzNiw1MjIzNyw1MjI0MCw1MjI0NCw1MjI1Miw1MjI1Myw1MjI1Nyw1MjI1OCw1MjI2Myw1MjI2NCw1MjI2NSw1MjI2OCw1MjI3MCw1MjI3Miw1MjI4MCw1MjI4MSw1MjI4Myw1NDg0NSw1NDg0Niw1NDg0Nyw1NDg0OSw1NDg1MCw1NDg1MSw1NDg1Miw1NDg1NCw1NDg1NSw1NDg1OCw1NDg2MCw1NDg2Miw1NDg2Myw1NDg2NCw1NDg2Niw1NDg2Nyw1NDg3MCw1NDg3MSw1NDg3Myw1NDg3NCw1NDg3NSw1NDg3Nyw1NDg3OCw1NDg3OSw1NDg4MCw1NDg4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDg4Miw1NDg4Myw1NDg4NCw1NDg4NSw1NDg4Niw1NDg4OCw1NDg5MCw1NDg5MSw1NDg5Miw1NDg5Myw1NDg5NCw1NDg5NSw1NDg5OCw1NDg5OSw1NDkwMSw1NDkwMiw1NDkwMyw1NDkwNCw1NDkwNSw1NDkwNiw1NDkwNyw1NDkwOCw1NDkwOSw1NDkxMCw1NDkxMSw1NDkxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDkxMyw1NDkxNCw1NDkxNiw1NDkxOCw1NDkxOSw1NDkyMCw1NDkyMSw1NDkyMiw1NDkyMyw1NDkyNiw1NDkyNyw1NDkyOSw1NDkzMCw1NDkzMSw1NDkzMyw1NDkzNCw1NDkzNSw1NDkzNiw1NDkzNyw1NDkzOCw1NDkzOSw1NDk0MCw1NDk0Miw1NDk0NCw1NDk0Niw1NDk0Nyw1NDk0OCw1NDk0OSw1NDk1MCw1NDk1MSw1NDk1Myw1NDk1NCw1MjI4NCw1MjI4NSw1MjI4Niw1MjI5Miw1MjI5Myw1MjI5Niw1MjMwMCw1MjMwOCw1MjMwOSw1MjMxMSw1MjMxMiw1MjMxMyw1MjMyMCw1MjMyNCw1MjMyNiw1MjMyOCw1MjMzNiw1MjM0MSw1MjM3Niw1MjM3Nyw1MjM4MCw1MjM4NCw1MjM5Miw1MjM5Myw1MjM5NSw1MjM5Niw1MjM5Nyw1MjQwNCw1MjQwNSw1MjQwOCw1MjQxMiw1MjQyMCw1MjQyMSw1MjQyMyw1MjQyNSw1MjQzMiw1MjQzNiw1MjQ1Miw1MjQ2MCw1MjQ2NCw1MjQ4MSw1MjQ4OCw1MjQ4OSw1MjQ5Miw1MjQ5Niw1MjUwNCw1MjUwNSw1MjUwNyw1MjUwOSw1MjUxNiw1MjUyMCw1MjUyNCw1MjUzNyw1MjU3Miw1MjU3Niw1MjU4MCw1MjU4OCw1MjU4OSw1MjU5MSw1MjU5Myw1MjYwMCw1MjYxNiw1MjYyOCw1MjYyOSw1MjYzMiw1MjYzNiw1MjY0NCw1MjY0NSw1MjY0Nyw1MjY0OSw1MjY1Niw1MjY3Niw1MjY4NCw1MjY4OCw1MjcxMiw1MjcxNiw1MjcyMCw1MjcyOCw1MjcyOSw1MjczMSw1MjczMyw1Mjc0MCw1Mjc0NCw1Mjc0OCw1Mjc1Niw1Mjc2MSw1Mjc2OCw1Mjc2OSw1Mjc3Miw1Mjc3Niw1Mjc4NCw1Mjc4NSw1Mjc4Nyw1Mjc4OSw1NDk1NSw1NDk1Nyw1NDk1OCw1NDk1OSw1NDk2MSw1NDk2Miw1NDk2Myw1NDk2NCw1NDk2NSw1NDk2Niw1NDk2Nyw1NDk2OCw1NDk3MCw1NDk3Miw1NDk3Myw1NDk3NCw1NDk3NSw1NDk3Niw1NDk3Nyw1NDk3OCw1NDk3OSw1NDk4Miw1NDk4Myw1NDk4NSw1NDk4Niw1NDk4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDk4OSw1NDk5MCw1NDk5MSw1NDk5Miw1NDk5NCw1NDk5NSw1NDk5Nyw1NDk5OCw1NTAwMCw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5Niw1MzAwMCw1MzAwOCw1MzAwOSw1MzAxMSw1MzAxMyw1MzAyMCw1MzAyNCw1MzAyOCw1MzAzNiw1MzAzNyw1MzAzOSw1MzA0MCw1MzA0MSw1MzA0OCw1MzA3Niw1MzA3Nyw1MzA4MCw1MzA4NCw1MzA5Miw1MzA5Myw1MzA5NSw1MzA5Nyw1MzEwNCw1MzEwNSw1MzEwOCw1MzExMiw1MzEyMCw1MzEyNSw1MzEzMiw1MzE1Myw1MzE2MCw1MzE2OCw1MzE4OCw1MzIxNiw1MzIxNyw1MzIyMCw1MzIyNCw1MzIzMiw1MzIzMyw1MzIzNSw1MzIzNyw1MzI0NCw1MzI0OCw1MzI1Miw1MzI2NSw1MzI3Miw1MzI5Myw1MzMwMCw1MzMwMSw1MzMwNCw1MzMwOCw1NTA2MSw1NTA2Miw1NTA2Myw1NTA2Niw1NTA2Nyw1NTA2OSw1NTA3MCw1NTA3MSw1NTA3Myw1NTA3NCw1NTA3NSw1NTA3Niw1NTA3Nyw1NTA3OCw1NTA3OSw1NTA4Miw1NTA4NCw1NTA4Niw1NTA4Nyw1NTA4OCw1NTA4OSw1NTA5MCw1NTA5MSw1NTA5NCw1NTA5NSw1NTA5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTA5OCw1NTA5OSw1NTEwMSw1NTEwMiw1NTEwMyw1NTEwNCw1NTEwNSw1NTEwNiw1NTEwNyw1NTEwOSw1NTExMCw1NTExMiw1NTExNCw1NTExNSw1NTExNiw1NTExNyw1NTExOCw1NTExOSw1NTEyMiw1NTEyMyw1NTEyNSw1NTEzMCw1NTEzMSw1NTEzMiw1NTEzMyw1NTEzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTEzNSw1NTEzOCw1NTE0MCw1NTE0Miw1NTE0Myw1NTE0NCw1NTE0Niw1NTE0Nyw1NTE0OSw1NTE1MCw1NTE1MSw1NTE1Myw1NTE1NCw1NTE1NSw1NTE1Nyw1NTE1OCw1NTE1OSw1NTE2MCw1NTE2MSw1NTE2Miw1NTE2Myw1NTE2Niw1NTE2Nyw1NTE2OCw1NTE3MCw1NTE3MSw1NTE3Miw1NTE3Myw1NTE3NCw1NTE3NSw1NTE3OCw1NTE3OSw1MzMxNiw1MzMxNyw1MzMxOSw1MzMyMSw1MzMyOCw1MzMzMiw1MzMzNiw1MzM0NCw1MzM1Niw1MzM1Nyw1MzM2MCw1MzM2NCw1MzM3Miw1MzM3Myw1MzM3Nyw1MzQxMiw1MzQxMyw1MzQxNiw1MzQyMCw1MzQyOCw1MzQyOSw1MzQzMSw1MzQzMyw1MzQ0MCw1MzQ0MSw1MzQ0NCw1MzQ0OCw1MzQ0OSw1MzQ1Niw1MzQ1Nyw1MzQ1OSw1MzQ2MCw1MzQ2MSw1MzQ2OCw1MzQ2OSw1MzQ3Miw1MzQ3Niw1MzQ4NCw1MzQ4NSw1MzQ4Nyw1MzQ4OCw1MzQ4OSw1MzQ5Niw1MzUxNyw1MzU1Miw1MzU1Myw1MzU1Niw1MzU2MCw1MzU2Miw1MzU2OCw1MzU2OSw1MzU3MSw1MzU3Miw1MzU3Myw1MzU4MCw1MzU4MSw1MzU4NCw1MzU4OCw1MzU5Niw1MzU5Nyw1MzU5OSw1MzYwMSw1MzYwOCw1MzYxMiw1MzYyOCw1MzYzNiw1MzY0MCw1MzY2NCw1MzY2NSw1MzY2OCw1MzY3Miw1MzY4MCw1MzY4MSw1MzY4Myw1MzY4NSw1MzY5MCw1MzY5Miw1MzY5Niw1MzcyMCw1Mzc0OCw1Mzc1Miw1Mzc2Nyw1Mzc2OSw1Mzc3Niw1MzgwNCw1MzgwNSw1MzgwOCw1MzgxMiw1MzgyMCw1MzgyMSw1MzgyMyw1MzgyNSw1MzgzMiw1Mzg1Miw1NTE4MSw1NTE4Miw1NTE4Myw1NTE4NSw1NTE4Niw1NTE4Nyw1NTE4OCw1NTE4OSw1NTE5MCw1NTE5MSw1NTE5NCw1NTE5Niw1NTE5OCw1NTE5OSw1NTIwMCw1NTIwMSw1NTIwMiw1NTIwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2MCw1Mzg4OCw1Mzg4OSw1Mzg5Miw1Mzg5Niw1MzkwNCw1MzkwNSw1MzkwOSw1MzkxNiw1MzkyMCw1MzkyNCw1MzkzMiw1MzkzNyw1Mzk0NCw1Mzk0NSw1Mzk0OCw1Mzk1MSw1Mzk1Miw1Mzk1NCw1Mzk2MCw1Mzk2MSw1Mzk2Myw1Mzk3Miw1Mzk3Niw1Mzk4MCw1Mzk4OCw1Mzk4OSw1NDAwMCw1NDAwMSw1NDAwNCw1NDAwOCw1NDAxNiw1NDAxNyw1NDAxOSw1NDAyMSw1NDAyOCw1NDAyOSw1NDAzMCw1NDAzMiw1NDAzNiw1NDAzOCw1NDA0NCw1NDA0NSw1NDA0Nyw1NDA0OCw1NDA0OSw1NDA1Myw1NDA1Niw1NDA1Nyw1NDA2MCw1NDA2NCw1NDA3Miw1NDA3Myw1NDA3NSw1NDA3Niw1NDA3Nyw1NDA4NCw1NDA4NSw1NDE0MCw1NDE0MSw1NDE0NCw1NDE0OCw1NDE1Niw1NDE1Nyw1NDE1OSw1NDE2MCw1NDE2MSw1NDE2OCw1NDE2OSw1NDE3Miw1NDE3Niw1NDE4NCw1NDE4NSw1NDE4Nyw1NDE4OSw1NDE5Niw1NDIwMCw1NDIwNCw1NDIxMiw1NDIxMyw1NDIxNiw1NDIxNyw1NDIyNCw1NDIzMiw1NDI0MSw1NDI0Myw1NDI1Miw1NDI1Myw1NDI1Niw1NDI2MCw1NDI2OCw1NDI2OSw1NDI3MSw1NDI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI4MCw1NDMwMSw1NDMzNiw1NDM0MCw1NDM2NCw1NDM2OCw1NDM3Miw1NDM4MSw1NDM4Myw1NDM5Miw1NDM5Myw1NDM5Niw1NDM5OSw1NDQwMCw1NDQwMiw1NDQwOCw1NDQwOSw1NDQxMSw1NDQxMyw1NDQyMCw1NDQ0MSw1NDQ3Niw1NDQ4MCw1NDQ4NCw1NDQ5Miw1NDQ5NSw1NDUwNCw1NDUwOCw1NDUxMiw1NDUyMCw1NDUyMyw1NDUyNSw1NDUzMiw1NDUzNiw1NDU0MCw1NDU0OCw1NDU0OSw1NDU1MSw1NDU4OCw1NDU4OSw1NDU5Miw1NDU5Niw1NDYwNCw1NDYwNSw1NDYwNyw1NDYwOSw1NDYxNiw1NDYxNyw1NDYyMCw1NDYyNCw1NDYyOSw1NDYzMiw1NDYzMyw1NDYzNSw1NDYzNyw1NDY0NCw1NDY0NSw1NDY0OCw1NDY1Miw1NDY2MCw1NDY2MSw1NDY2Myw1NDY2NCw1NDY2NSw1NDY3Miw1NDY5Myw1NDcyOCw1NDcyOSw1NDczMiw1NDczNiw1NDczOCw1NDc0NCw1NDc0NSw1NDc0Nyw1NDc0OSw1NDc1Niw1NDc1Nyw1NDc2MCw1NDc2NCw1NDc3Miw1NDc3Myw1NDc3NSw1NDc3Nyw1NDc4NCw1NDc4NSw1NDc4OCw1NDc5Miw1NDgwMCw1NDgwMSw1NDgwMyw1NDgwNCw1NDgwNSw1NDgxMiw1NDgxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgyMCw1NDgyOSw1NDg0MCw1NDg0MSw1NDg0NCw1NDg0OCw1NDg1Myw1NDg1Niw1NDg1Nyw1NDg1OSw1NDg2MSw1NDg2NSw1NDg2OCw1NDg2OSw1NDg3Miw1NDg3Niw1NDg4Nyw1NDg4OSw1NDg5Niw1NDg5Nyw1NDkwMCw1NDkxNSw1NDkxNyw1NDkyNCw1NDkyNSw1NDkyOCw1NDkzMiw1NDk0MSw1NDk0Myw1NDk0NSw1NDk1Miw1NDk1Niw1NDk2MCw1NDk2OSw1NDk3MSw1NDk4MCw1NDk4MSw1NDk4NCw1NDk4OCw1NDk5Myw1NDk5Niw1NDk5OSw1NTAwMSw1NTAwOCw1NTAxMiw1NTAxNiw1NTAyNCw1NTAyOSw1NTAzNiw1NTAzNyw1NTA0MCw1NTA0NCw1NTA1Nyw1NTA2NCw1NTA2NSw1NTA2OCw1NTA3Miw1NTA4MCw1NTA4MSw1NTA4Myw1NTA4NSw1NTA5Miw1NTA5Myw1NTA5Niw1NTEwMCw1NTEwOCw1NTExMSw1NTExMyw1NTEyMCw1NTEyMSw1NTEyNCw1NTEyNiw1NTEyNyw1NTEyOCw1NTEyOSw1NTEzNiw1NTEzNyw1NTEzOSw1NTE0MSw1NTE0NSw1NTE0OCw1NTE1Miw1NTE1Niw1NTE2NCw1NTE2NSw1NTE2OSw1NTE3Niw1NTE3Nyw1NTE4MCw1NTE4NCw1NTE5Miw1NTE5Myw1NTE5NSw1NTE5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMjg1LDIwMzM5LDIwNTUxLDIwNzI5LDIxMTUyLDIxNDg3LDIxNjIxLDIxNzMzLDIyMDI1LDIzMjMzLDIzNDc4LDI2MjQ3LDI2NTUwLDI2NTUxLDI2NjA3LDI3NDY4LDI5NjM0LDMwMTQ2LDMxMjkyLDMzNDk5LDMzNTQwLDM0OTAzLDM0OTUyLDM1MzgyLDM2MDQwLDM2MzAzLDM2NjAzLDM2ODM4LDM5MzgxLDIxMDUxLDIxMzY0LDIxNTA4LDI0NjgyLDI0OTMyLDI3NTgwLDI5NjQ3LDMzMDUwLDM1MjU4LDM1MjgyLDM4MzA3LDIwMzU1LDIxMDAyLDIyNzE4LDIyOTA0LDIzMDE0LDI0MTc4LDI0MTg1LDI1MDMxLDI1NTM2LDI2NDM4LDI2NjA0LDI2NzUxLDI4NTY3LDMwMjg2LDMwNDc1LDMwOTY1LDMxMjQwLDMxNDg3LDMxNzc3LDMyOTI1LDMzMzkwLDMzMzkzLDM1NTYzLDM4MjkxLDIwMDc1LDIxOTE3LDI2MzU5LDI4MjEyLDMwODgzLDMxNDY5LDMzODgzLDM1MDg4LDM0NjM4LDM4ODI0LDIxMjA4LDIyMzUwLDIyNTcwLDIzODg0LDI0ODYzLDI1MDIyLDI1MTIxLDI1OTU0LDI2NTc3LDI3MjA0LDI4MTg3LDI5OTc2LDMwMTMxLDMwNDM1LDMwNjQwLDMyMDU4LDM3MDM5LDM3OTY5LDM3OTcwLDQwODUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMjgzLDIzNzI0LDMwMDAyLDMyOTg3LDM3NDQwLDM4Mjk2LDIxMDgzLDIyNTM2LDIzMDA0LDIzNzEzLDIzODMxLDI0MjQ3LDI0Mzc4LDI0Mzk0LDI0OTUxLDI3NzQzLDMwMDc0LDMwMDg2LDMxOTY4LDMyMTE1LDMyMTc3LDMyNjUyLDMzMTA4LDMzMzEzLDM0MTkzLDM1MTM3LDM1NjExLDM3NjI4LDM4NDc3LDQwMDA3LDIwMTcxLDIwMjE1LDIwNDkxLDIwOTc3LDIyNjA3LDI0ODg3LDI0ODk0LDI0OTM2LDI1OTEzLDI3MTE0LDI4NDMzLDMwMTE3LDMwMzQyLDMwNDIyLDMxNjIzLDMzNDQ1LDMzOTk1LDYzNzQ0LDM3Nzk5LDM4MjgzLDIxODg4LDIzNDU4LDIyMzUzLDYzNzQ1LDMxOTIzLDMyNjk3LDM3MzAxLDIwNTIwLDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1NDU0LDI1ODE4LDI1ODMxLDI4MTkyLDI4ODQ0LDMxMDY3LDM2MzE3LDM2MzgyLDYzNzQ2LDM2OTg5LDM3NDQ1LDM3NjI0LDIwMDk0LDIwMjE0LDIwNTgxLDI0MDYyLDI0MzE0LDI0ODM4LDI2OTY3LDMzMTM3LDM0Mzg4LDM2NDIzLDM3NzQ5LDM5NDY3LDIwMDYyLDIwNjI1LDI2NDgwLDI2Njg4LDIwNzQ1LDIxMTMzLDIxMTM4LDI3Mjk4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwNjUyLDM3MzkyLDQwNjYwLDIxMTYzLDI0NjIzLDM2ODUwLDIwNTUyLDI1MDAxLDI1NTgxLDI1ODAyLDI2Njg0LDI3MjY4LDI4NjA4LDMzMTYwLDM1MjMzLDM4NTQ4LDIyNTMzLDI5MzA5LDI5MzU2LDI5OTU2LDMyMTIxLDMyMzY1LDMyOTM3LDM1MjExLDM1NzAwLDM2OTYzLDQwMjczLDI1MjI1LDI3NzcwLDI4NTAwLDMyMDgwLDMyNTcwLDM1MzYzLDIwODYwLDI0OTA2LDMxNjQ1LDM1NjA5LDM3NDYzLDM3NzcyLDIwMTQwLDIwNDM1LDIwNTEwLDIwNjcwLDIwNzQyLDIxMTg1LDIxMTk3LDIxMzc1LDIyMzg0LDIyNjU5LDI0MjE4LDI0NDY1LDI0OTUwLDI1MDA0LDI1ODA2LDI1OTY0LDI2MjIzLDI2Mjk5LDI2MzU2LDI2Nzc1LDI4MDM5LDI4ODA1LDI4OTEzLDI5ODU1LDI5ODYxLDI5ODk4LDMwMTY5LDMwODI4LDMwOTU2LDMxNDU1LDMxNDc4LDMyMDY5LDMyMTQ3LDMyNzg5LDMyODMxLDMzMDUxLDMzNjg2LDM1Njg2LDM2NjI5LDM2ODg1LDM3ODU3LDM4OTE1LDM4OTY4LDM5NTE0LDM5OTEyLDIwNDE4LDIxODQzLDIyNTg2LDIyODY1LDIzMzk1LDIzNjIyLDI0NzYwLDI1MTA2LDI2NjkwLDI2ODAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODU2LDI4MzMwLDMwMDI4LDMwMzI4LDMwOTI2LDMxMjkzLDMxOTk1LDMyMzYzLDMyMzgwLDM1MzM2LDM1NDg5LDM1OTAzLDM4NTQyLDQwMzg4LDIxNDc2LDIxNDgxLDIxNTc4LDIxNjE3LDIyMjY2LDIyOTkzLDIzMzk2LDIzNjExLDI0MjM1LDI1MzM1LDI1OTExLDI1OTI1LDI1OTcwLDI2MjcyLDI2NTQzLDI3MDczLDI3ODM3LDMwMjA0LDMwMzUyLDMwNTkwLDMxMjk1LDMyNjYwLDMyNzcxLDMyOTI5LDMzMTY3LDMzNTEwLDMzNTMzLDMzNzc2LDM0MjQxLDM0ODY1LDM0OTk2LDM1NDkzLDYzNzQ3LDM2NzY0LDM3Njc4LDM4NTk5LDM5MDE1LDM5NjQwLDQwNzIzLDIxNzQxLDI2MDExLDI2MzU0LDI2NzY3LDMxMjk2LDM1ODk1LDQwMjg4LDIyMjU2LDIyMzcyLDIzODI1LDI2MTE4LDI2ODAxLDI2ODI5LDI4NDE0LDI5NzM2LDM0OTc0LDM5OTA4LDI3NzUyLDYzNzQ4LDM5NTkyLDIwMzc5LDIwODQ0LDIwODQ5LDIxMTUxLDIzMzgwLDI0MDM3LDI0NjU2LDI0Njg1LDI1MzI5LDI1NTExLDI1OTE1LDI5NjU3LDMxMzU0LDM0NDY3LDM2MDAyLDM4Nzk5LDIwMDE4LDIzNTIxLDI1MDk2LDI2NTI0LDI5OTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTg1LDMzNzQ3LDM1NDYzLDM1NTA2LDM2MzI4LDM2OTQyLDM3NzA3LDM4OTgyLDI0Mjc1LDI3MTEyLDM0MzAzLDM3MTAxLDYzNzQ5LDIwODk2LDIzNDQ4LDIzNTMyLDI0OTMxLDI2ODc0LDI3NDU0LDI4NzQ4LDI5NzQzLDI5OTEyLDMxNjQ5LDMyNTkyLDMzNzMzLDM1MjY0LDM2MDExLDM4MzY0LDM5MjA4LDIxMDM4LDI0NjY5LDI1MzI0LDM2ODY2LDIwMzYyLDIwODA5LDIxMjgxLDIyNzQ1LDI0MjkxLDI2MzM2LDI3OTYwLDI4ODI2LDI5Mzc4LDI5NjU0LDMxNTY4LDMzMDA5LDM3OTc5LDIxMzUwLDI1NDk5LDMyNjE5LDIwMDU0LDIwNjA4LDIyNjAyLDIyNzUwLDI0NjE4LDI0ODcxLDI1Mjk2LDI3MDg4LDM5NzQ1LDIzNDM5LDMyMDI0LDMyOTQ1LDM2NzAzLDIwMTMyLDIwNjg5LDIxNjc2LDIxOTMyLDIzMzA4LDIzOTY4LDI0MDM5LDI1ODk4LDI1OTM0LDI2NjU3LDI3MjExLDI5NDA5LDMwMzUwLDMwNzAzLDMyMDk0LDMyNzYxLDMzMTg0LDM0MTI2LDM0NTI3LDM2NjExLDM2Njg2LDM3MDY2LDM5MTcxLDM5NTA5LDM5ODUxLDE5OTkyLDIwMDM3LDIwMDYxLDIwMTY3LDIwNDY1LDIwODU1LDIxMjQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMzEyLDIxNDc1LDIxNDc3LDIxNjQ2LDIyMDM2LDIyMzg5LDIyNDM0LDIzNDk1LDIzOTQzLDI0MjcyLDI1MDg0LDI1MzA0LDI1OTM3LDI2NTUyLDI2NjAxLDI3MDgzLDI3NDcyLDI3NTkwLDI3NjI4LDI3NzE0LDI4MzE3LDI4NzkyLDI5Mzk5LDI5NTkwLDI5Njk5LDMwNjU1LDMwNjk3LDMxMzUwLDMyMTI3LDMyNzc3LDMzMjc2LDMzMjg1LDMzMjkwLDMzNTAzLDM0OTE0LDM1NjM1LDM2MDkyLDM2NTQ0LDM2ODgxLDM3MDQxLDM3NDc2LDM3NTU4LDM5Mzc4LDM5NDkzLDQwMTY5LDQwNDA3LDQwODYwLDIyMjgzLDIzNjE2LDMzNzM4LDM4ODE2LDM4ODI3LDQwNjI4LDIxNTMxLDMxMzg0LDMyNjc2LDM1MDMzLDM2NTU3LDM3MDg5LDIyNTI4LDIzNjI0LDI1NDk2LDMxMzkxLDIzNDcwLDI0MzM5LDMxMzUzLDMxNDA2LDMzNDIyLDM2NTI0LDIwNTE4LDIxMDQ4LDIxMjQwLDIxMzY3LDIyMjgwLDI1MzMxLDI1NDU4LDI3NDAyLDI4MDk5LDMwNTE5LDIxNDEzLDI5NTI3LDM0MTUyLDM2NDcwLDM4MzU3LDI2NDI2LDI3MzMxLDI4NTI4LDM1NDM3LDM2NTU2LDM5MjQzLDYzNzUwLDI2MjMxLDI3NTEyLDM2MDIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM5NzQwLDYzNzUxLDIxNDgzLDIyMzE3LDIyODYyLDI1NTQyLDI3MTMxLDI5Njc0LDMwNzg5LDMxNDE4LDMxNDI5LDMxOTk4LDMzOTA5LDM1MjE1LDM2MjExLDM2OTE3LDM4MzEyLDIxMjQzLDIyMzQzLDMwMDIzLDMxNTg0LDMzNzQwLDM3NDA2LDYzNzUyLDI3MjI0LDIwODExLDIxMDY3LDIxMTI3LDI1MTE5LDI2ODQwLDI2OTk3LDM4NTUzLDIwNjc3LDIxMTU2LDIxMjIwLDI1MDI3LDI2MDIwLDI2NjgxLDI3MTM1LDI5ODIyLDMxNTYzLDMzNDY1LDMzNzcxLDM1MjUwLDM1NjQxLDM2ODE3LDM5MjQxLDYzNzUzLDIwMTcwLDIyOTM1LDI1ODEwLDI2MTI5LDI3Mjc4LDI5NzQ4LDMxMTA1LDMxMTY1LDMzNDQ5LDM0OTQyLDM0OTQzLDM1MTY3LDYzNzU0LDM3NjcwLDIwMjM1LDIxNDUwLDI0NjEzLDI1MjAxLDI3NzYyLDMyMDI2LDMyMTAyLDIwMTIwLDIwODM0LDMwNjg0LDMyOTQzLDIwMjI1LDIwMjM4LDIwODU0LDIwODY0LDIxOTgwLDIyMTIwLDIyMzMxLDIyNTIyLDIyNTI0LDIyODA0LDIyODU1LDIyOTMxLDIzNDkyLDIzNjk2LDIzODIyLDI0MDQ5LDI0MTkwLDI0NTI0LDI1MjE2LDI2MDcxLDI2MDgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2Mzk4LDI2Mzk5LDI2NDYyLDI2ODI3LDI2ODIwLDI3MjMxLDI3NDUwLDI3NjgzLDI3NzczLDI3Nzc4LDI4MTAzLDI5NTkyLDI5NzM0LDI5NzM4LDI5ODI2LDI5ODU5LDMwMDcyLDMwMDc5LDMwODQ5LDMwOTU5LDMxMDQxLDMxMDQ3LDMxMDQ4LDMxMDk4LDMxNjM3LDMyMDAwLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEzLDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYzNzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYzNzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYzNzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYzNzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAwLDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYzODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMzMjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYzODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIxLDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMxNTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIyNjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMxOTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQxLDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIwOTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMxLDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYzLDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUzLDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQwNTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAxLDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIyMjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMxNTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQwLDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMzLDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAwLDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMwMTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQwNjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3MDAwLDE5OTc1LDIxMzI1LDIzMDgxLDI0MDE4LDI0Mzk4LDI0OTMwLDI1NDA1LDI2MjE3LDI2MzY0LDI4NDE1LDI4NDU5LDI4NzcxLDMwNjIyLDMzODM2LDM0MDY3LDM0ODc1LDM2NjI3LDM5MjM3LDM5OTk1LDIxNzg4LDI1MjczLDI2NDExLDI3ODE5LDMzNTQ1LDM1MTc4LDM4Nzc4LDIwMTI5LDIyOTE2LDI0NTM2LDI0NTM3LDI2Mzk1LDMyMTc4LDMyNTk2LDMzNDI2LDMzNTc5LDMzNzI1LDM2NjM4LDM3MDE3LDIyNDc1LDIyOTY5LDIzMTg2LDIzNTA0LDI2MTUxLDI2NTIyLDI2NzU3LDI3NTk5LDI5MDI4LDMyNjI5LDM2MDIzLDM2MDY3LDM2OTkzLDM5NzQ5LDMzMDMyLDM1OTc4LDM4NDc2LDM5NDg4LDQwNjEzLDIzMzkxLDI3NjY3LDI5NDY3LDMwNDUwLDMwNDMxLDMzODA0LDIwOTA2LDM1MjE5LDIwODEzLDIwODg1LDIxMTkzLDI2ODI1LDI3Nzk2LDMwNDY4LDMwNDk2LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjI5LDI4MzU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MDY1LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDI2MjY5LDI2OTE5LDI4MzE5LDMwMzk5LDMwNjA5LDMzNTU5LDMzOTg2LDM0NzE5LDM3MjI1LDM3NTI4LDQwMTgwLDM0OTQ2LDIwMzk4LDIwODgyLDIxMjE1LDIyOTgyLDI0MTI1LDI0OTE3LDI1NzIwLDI1NzIxLDI2Mjg2LDI2NTc2LDI3MTY5LDI3NTk3LDI3NjExLDI5Mjc5LDI5MjgxLDI5NzYxLDMwNTIwLDMwNjgzLDMyNzkxLDMzNDY4LDMzNTQxLDM1NTg0LDM1NjI0LDM1OTgwLDI2NDA4LDI3NzkyLDI5Mjg3LDMwNDQ2LDMwNTY2LDMxMzAyLDQwMzYxLDI3NTE5LDI3Nzk0LDIyODE4LDI2NDA2LDMzOTQ1LDIxMzU5LDIyNjc1LDIyOTM3LDI0Mjg3LDI1NTUxLDI2MTY0LDI2NDgzLDI4MjE4LDI5NDgzLDMxNDQ3LDMzNDk1LDM3NjcyLDIxMjA5LDI0MDQzLDI1MDA2LDI1MDM1LDI1MDk4LDI1Mjg3LDI1NzcxLDI2MDgwLDI2OTY5LDI3NDk0LDI3NTk1LDI4OTYxLDI5Njg3LDMwMDQ1LDMyMzI2LDMzMzEwLDMzNTM4LDM0MTU0LDM1NDkxLDM2MDMxLDM4Njk1LDQwMjg5LDIyNjk2LDQwNjY0LDIwNDk3LDIxMDA2LDIxNTYzLDIxODM5LDI1OTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3NzY2LDMyMDEwLDMyMDExLDMyODYyLDM0NDQyLDM4MjcyLDM4NjM5LDIxMjQ3LDI3Nzk3LDI5Mjg5LDIxNjE5LDIzMTk0LDIzNjE0LDIzODgzLDI0Mzk2LDI0NDk0LDI2NDEwLDI2ODA2LDI2OTc5LDI4MjIwLDI4MjI4LDMwNDczLDMxODU5LDMyNjU0LDM0MTgzLDM1NTk4LDM2ODU1LDM4NzUzLDQwNjkyLDIzNzM1LDI0NzU4LDI0ODQ1LDI1MDAzLDI1OTM1LDI2MTA3LDI2MTA4LDI3NjY1LDI3ODg3LDI5NTk5LDI5NjQxLDMyMjI1LDM4MjkyLDIzNDk0LDM0NTg4LDM1NjAwLDIxMDg1LDIxMzM4LDI1MjkzLDI1NjE1LDI1Nzc4LDI2NDIwLDI3MTkyLDI3ODUwLDI5NjMyLDI5ODU0LDMxNjM2LDMxODkzLDMyMjgzLDMzMTYyLDMzMzM0LDM0MTgwLDM2ODQzLDM4NjQ5LDM5MzYxLDIwMjc2LDIxMzIyLDIxNDUzLDIxNDY3LDI1MjkyLDI1NjQ0LDI1ODU2LDI2MDAxLDI3MDc1LDI3ODg2LDI4NTA0LDI5Njc3LDMwMDM2LDMwMjQyLDMwNDM2LDMwNDYwLDMwOTI4LDMwOTcxLDMxMDIwLDMyMDcwLDMzMzI0LDM0Nzg0LDM2ODIwLDM4OTMwLDM5MTUxLDIxMTg3LDI1MzAwLDI1NzY1LDI4MTk2LDI4NDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwMzMyLDM2Mjk5LDM3Mjk3LDM3NDc0LDM5NjYyLDM5NzQ3LDIwNTE1LDIwNjIxLDIyMzQ2LDIyOTUyLDIzNTkyLDI0MTM1LDI0NDM5LDI1MTUxLDI1OTE4LDI2MDQxLDI2MDQ5LDI2MTIxLDI2NTA3LDI3MDM2LDI4MzU0LDMwOTE3LDMyMDMzLDMyOTM4LDMzMTUyLDMzMzIzLDMzNDU5LDMzOTUzLDM0NDQ0LDM1MzcwLDM1NjA3LDM3MDMwLDM4NDUwLDQwODQ4LDIwNDkzLDIwNDY3LDYzODQzLDIyNTIxLDI0NDcyLDI1MzA4LDI1NDkwLDI2NDc5LDI4MjI3LDI4OTUzLDMwNDAzLDMyOTcyLDMyOTg2LDM1MDYwLDM1MDYxLDM1MDk3LDM2MDY0LDM2NjQ5LDM3MTk3LDM4NTA2LDIwMjcxLDIwMzM2LDI0MDkxLDI2NTc1LDI2NjU4LDMwMzMzLDMwMzM0LDM5NzQ4LDI0MTYxLDI3MTQ2LDI5MDMzLDI5MTQwLDMwMDU4LDYzODQ0LDMyMzIxLDM0MTE1LDM0MjgxLDM5MTMyLDIwMjQwLDMxNTY3LDMyNjI0LDM4MzA5LDIwOTYxLDI0MDcwLDI2ODA1LDI3NzEwLDI3NzI2LDI3ODY3LDI5MzU5LDMxNjg0LDMzNTM5LDI3ODYxLDI5NzU0LDIwNzMxLDIxMTI4LDIyNzIxLDI1ODE2LDI3Mjg3LDI5ODYzLDMwMjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwODg3LDM0MzI3LDM4MzcwLDM4NzEzLDYzODQ1LDIxMzQyLDI0MzIxLDM1NzIyLDM2Nzc2LDM2NzgzLDM3MDAyLDIxMDI5LDMwNjI5LDQwMDA5LDQwNzEyLDE5OTkzLDIwNDgyLDIwODUzLDIzNjQzLDI0MTgzLDI2MTQyLDI2MTcwLDI2NTY0LDI2ODIxLDI4ODUxLDI5OTUzLDMwMTQ5LDMxMTc3LDMxNDUzLDM2NjQ3LDM5MjAwLDM5NDMyLDIwNDQ1LDIyNTYxLDIyNTc3LDIzNTQyLDI2MjIyLDI3NDkzLDI3OTIxLDI4MjgyLDI4NTQxLDI5NjY4LDI5OTk1LDMzNzY5LDM1MDM2LDM1MDkxLDM1Njc2LDM2NjI4LDIwMjM5LDIwNjkzLDIxMjY0LDIxMzQwLDIzNDQzLDI0NDg5LDI2MzgxLDMxMTE5LDMzMTQ1LDMzNTgzLDM0MDY4LDM1MDc5LDM1MjA2LDM2NjY1LDM2NjY3LDM5MzMzLDM5OTU0LDI2NDEyLDIwMDg2LDIwNDcyLDIyODU3LDIzNTUzLDIzNzkxLDIzNzkyLDI1NDQ3LDI2ODM0LDI4OTI1LDI5MDkwLDI5NzM5LDMyMjk5LDM0MDI4LDM0NTYyLDM2ODk4LDM3NTg2LDQwMTc5LDE5OTgxLDIwMTg0LDIwNDYzLDIwNjEzLDIxMDc4LDIxMTAzLDIxNTQyLDIxNjQ4LDIyNDk2LDIyODI3LDIzMTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMzg2LDIzNDEzLDIzNTAwLDI0MjIwLDYzODQ2LDI1MjA2LDI1OTc1LDI2MDIzLDI4MDE0LDI4MzI1LDI5MjM4LDMxNTI2LDMxODA3LDMyNTY2LDMzMTA0LDMzMTA1LDMzMTc4LDMzMzQ0LDMzNDMzLDMzNzA1LDM1MzMxLDM2MDAwLDM2MDcwLDM2MDkxLDM2MjEyLDM2MjgyLDM3MDk2LDM3MzQwLDM4NDI4LDM4NDY4LDM5Mzg1LDQwMTY3LDIxMjcxLDIwOTk4LDIxNTQ1LDIyMTMyLDIyNzA3LDIyODY4LDIyODk0LDI0NTc1LDI0OTk2LDI1MTk4LDI2MTI4LDI3Nzc0LDI4OTU0LDMwNDA2LDMxODgxLDMxOTY2LDMyMDI3LDMzNDUyLDM2MDMzLDM4NjQwLDYzODQ3LDIwMzE1LDI0MzQzLDI0NDQ3LDI1MjgyLDIzODQ5LDI2Mzc5LDI2ODQyLDMwODQ0LDMyMzIzLDQwMzAwLDE5OTg5LDIwNjMzLDIxMjY5LDIxMjkwLDIxMzI5LDIyOTE1LDIzMTM4LDI0MTk5LDI0NzU0LDI0OTcwLDI1MTYxLDI1MjA5LDI2MDAwLDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMyNzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEzLDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYzLDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMyODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIwMTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIxNDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEyLDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIyLDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIwNjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIyNzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIyODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMzOTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMxLDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQxLDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMyODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIxMjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYzODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMyLDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMyMzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIzNDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYzLDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUzLDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0MjgyLDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIzNDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAwLDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYyLDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcwLDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMyNzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUxLDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYwLDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIwLDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIyNTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMyLDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYzLDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5MzkwLDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMzNDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMzOTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIwMzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIyMTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIwODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYzODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYzODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3NzgzLDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkwLDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYzODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMzODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIzOTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUyLDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxMDAwLDIxNDczLDI2MzU1LDI3NzU3LDI4NjE4LDI5NDUwLDMwNTkxLDMxMzMwLDMzNDU0LDM0MjY5LDM0MzA2LDYzOTI2LDM1MDI4LDM1NDI3LDM1NzA5LDM1OTQ3LDYzOTI3LDM3NTU1LDYzOTI4LDM4Njc1LDM4OTI4LDIwMTE2LDIwMjM3LDIwNDI1LDIwNjU4LDIxMzIwLDIxNTY2LDIxNTU1LDIxOTc4LDIyNjI2LDIyNzE0LDIyODg3LDIzMDY3LDIzNTI0LDI0NzM1LDYzOTI5LDI1MDM0LDI1OTQyLDI2MTExLDI2MjEyLDI2NzkxLDI3NzM4LDI4NTk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4ODc5LDI5MTAwLDI5NTIyLDMxNjEzLDM0NTY4LDM1NDkyLDM5OTg2LDQwNzExLDIzNjI3LDI3Nzc5LDI5NTA4LDI5NTc3LDM3NDM0LDI4MzMxLDI5Nzk3LDMwMjM5LDMxMzM3LDMyMjc3LDM0MzE0LDIwODAwLDIyNzI1LDI1NzkzLDI5OTM0LDI5OTczLDMwMzIwLDMyNzA1LDM3MDEzLDM4NjA1LDM5MjUyLDI4MTk4LDI5OTI2LDMxNDAxLDMxNDAyLDMzMjUzLDM0NTIxLDM0NjgwLDM1MzU1LDIzMTEzLDIzNDM2LDIzNDUxLDI2Nzg1LDI2ODgwLDI4MDAzLDI5NjA5LDI5NzE1LDI5NzQwLDMwODcxLDMyMjMzLDMyNzQ3LDMzMDQ4LDMzMTA5LDMzNjk0LDM1OTE2LDM4NDQ2LDM4OTI5LDI2MzUyLDI0NDQ4LDI2MTA2LDI2NTA1LDI3NzU0LDI5NTc5LDIwNTI1LDIzMDQzLDI3NDk4LDMwNzAyLDIyODA2LDIzOTE2LDI0MDEzLDI5NDc3LDMwMDMxLDYzOTMwLDYzOTMxLDIwNzA5LDIwOTg1LDIyNTc1LDIyODI5LDIyOTM0LDIzMDAyLDIzNTI1LDYzOTMyLDYzOTMzLDIzOTcwLDI1MzAzLDI1NjIyLDI1NzQ3LDI1ODU0LDYzOTM0LDI2MzMyLDYzOTM1LDI3MjA4LDYzOTM2LDI5MTgzLDI5Nzk2LDYzOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMzY4LDMxNDA3LDMyMzI3LDMyMzUwLDMyNzY4LDMzMTM2LDYzOTM4LDM0Nzk5LDM1MjAxLDM1NjE2LDM2OTUzLDYzOTM5LDM2OTkyLDM5MjUwLDI0OTU4LDI3NDQyLDI4MDIwLDMyMjg3LDM1MTA5LDM2Nzg1LDIwNDMzLDIwNjUzLDIwODg3LDIxMTkxLDIyNDcxLDIyNjY1LDIzNDgxLDI0MjQ4LDI0ODk4LDI3MDI5LDI4MDQ0LDI4MjYzLDI4MzQyLDI5MDc2LDI5Nzk0LDI5OTkyLDI5OTk2LDMyODgzLDMzNTkyLDMzOTkzLDM2MzYyLDM3NzgwLDM3ODU0LDYzOTQwLDIwMTEwLDIwMzA1LDIwNTk4LDIwNzc4LDIxNDQ4LDIxNDUxLDIxNDkxLDIzNDMxLDIzNTA3LDIzNTg4LDI0ODU4LDI0OTYyLDI2MTAwLDI5Mjc1LDI5NTkxLDI5NzYwLDMwNDAyLDMxMDU2LDMxMTIxLDMxMTYxLDMyMDA2LDMyNzAxLDMzNDE5LDM0MjYxLDM0Mzk4LDM2ODAyLDM2OTM1LDM3MTA5LDM3MzU0LDM4NTMzLDM4NjMyLDM4NjMzLDIxMjA2LDI0NDIzLDI2MDkzLDI2MTYxLDI2NjcxLDI5MDIwLDMxMjg2LDM3MDU3LDM4OTIyLDIwMTEzLDYzOTQxLDI3MjE4LDI3NTUwLDI4NTYwLDI5MDY1LDMyNzkyLDMzNDY0LDM0MTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTM5LDM4NTQ5LDM4NjQyLDM4OTA3LDM0MDc0LDM5NzI5LDIwMTEyLDI5MDY2LDM4NTk2LDIwODAzLDIxNDA3LDIxNzI5LDIyMjkxLDIyMjkwLDIyNDM1LDIzMTk1LDIzMjM2LDIzNDkxLDI0NjE2LDI0ODk1LDI1NTg4LDI3NzgxLDI3OTYxLDI4Mjc0LDI4MzA0LDI5MjMyLDI5NTAzLDI5NzgzLDMzNDg5LDM0OTQ1LDM2Njc3LDM2OTYwLDYzOTQyLDM4NDk4LDM5MDAwLDQwMjE5LDI2Mzc2LDM2MjM0LDM3NDcwLDIwMzAxLDIwNTUzLDIwNzAyLDIxMzYxLDIyMjg1LDIyOTk2LDIzMDQxLDIzNTYxLDI0OTQ0LDI2MjU2LDI4MjA1LDI5MjM0LDI5NzcxLDMyMjM5LDMyOTYzLDMzODA2LDMzODk0LDM0MTExLDM0NjU1LDM0OTA3LDM1MDk2LDM1NTg2LDM2OTQ5LDM4ODU5LDM5NzU5LDIwMDgzLDIwMzY5LDIwNzU0LDIwODQyLDYzOTQzLDIxODA3LDIxOTI5LDIzNDE4LDIzNDYxLDI0MTg4LDI0MTg5LDI0MjU0LDI0NzM2LDI0Nzk5LDI0ODQwLDI0ODQxLDI1NTQwLDI1OTEyLDI2Mzc3LDYzOTQ0LDI2NTgwLDI2NTg2LDYzOTQ1LDI2OTc3LDI2OTc4LDI3ODMzLDI3OTQzLDYzOTQ2LDI4MjE2LDYzOTQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4NjQxLDI5NDk0LDI5NDk1LDYzOTQ4LDI5Nzg4LDMwMDAxLDYzOTQ5LDMwMjkwLDYzOTUwLDYzOTUxLDMyMTczLDMzMjc4LDMzODQ4LDM1MDI5LDM1NDgwLDM1NTQ3LDM1NTY1LDM2NDAwLDM2NDE4LDM2OTM4LDM2OTI2LDM2OTg2LDM3MTkzLDM3MzIxLDM3NzQyLDYzOTUyLDYzOTUzLDIyNTM3LDYzOTU0LDI3NjAzLDMyOTA1LDMyOTQ2LDYzOTU1LDYzOTU2LDIwODAxLDIyODkxLDIzNjA5LDYzOTU3LDYzOTU4LDI4NTE2LDI5NjA3LDMyOTk2LDM2MTAzLDYzOTU5LDM3Mzk5LDM4Mjg3LDYzOTYwLDYzOTYxLDYzOTYyLDYzOTYzLDMyODk1LDI1MTAyLDI4NzAwLDMyMTA0LDM0NzAxLDYzOTY0LDIyNDMyLDI0NjgxLDI0OTAzLDI3NTc1LDM1NTE4LDM3NTA0LDM4NTc3LDIwMDU3LDIxNTM1LDI4MTM5LDM0MDkzLDM4NTEyLDM4ODk5LDM5MTUwLDI1NTU4LDI3ODc1LDM3MDA5LDIwOTU3LDI1MDMzLDMzMjEwLDQwNDQxLDIwMzgxLDIwNTA2LDIwNzM2LDIzNDUyLDI0ODQ3LDI1MDg3LDI1ODM2LDI2ODg1LDI3NTg5LDMwMDk3LDMwNjkxLDMyNjgxLDMzMzgwLDM0MTkxLDM0ODExLDM0OTE1LDM1NTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM1Njk2LDM3MjkxLDIwMTA4LDIwMTk3LDIwMjM0LDYzOTY1LDYzOTY2LDIyODM5LDIzMDE2LDYzOTY3LDI0MDUwLDI0MzQ3LDI0NDExLDI0NjA5LDYzOTY4LDYzOTY5LDYzOTcwLDYzOTcxLDI5MjQ2LDI5NjY5LDYzOTcyLDMwMDY0LDMwMTU3LDYzOTczLDMxMjI3LDYzOTc0LDMyNzgwLDMyODE5LDMyOTAwLDMzNTA1LDMzNjE3LDYzOTc1LDYzOTc2LDM2MDI5LDM2MDE5LDM2OTk5LDYzOTc3LDYzOTc4LDM5MTU2LDM5MTgwLDYzOTc5LDYzOTgwLDI4NzI3LDMwNDEwLDMyNzE0LDMyNzE2LDMyNzY0LDM1NjEwLDIwMTU0LDIwMTYxLDIwOTk1LDIxMzYwLDYzOTgxLDIxNjkzLDIyMjQwLDIzMDM1LDIzNDkzLDI0MzQxLDI0NTI1LDI4MjcwLDYzOTgyLDYzOTgzLDMyMTA2LDMzNTg5LDYzOTg0LDM0NDUxLDM1NDY5LDYzOTg1LDM4NzY1LDM4Nzc1LDYzOTg2LDYzOTg3LDE5OTY4LDIwMzE0LDIwMzUwLDIyNzc3LDI2MDg1LDI4MzIyLDM2OTIwLDM3ODA4LDM5MzUzLDIwMjE5LDIyNzY0LDIyOTIyLDIzMDAxLDI0NjQxLDYzOTg4LDYzOTg5LDMxMjUyLDYzOTkwLDMzNjE1LDM2MDM1LDIwODM3LDIxMzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTkxLDYzOTkyLDYzOTkzLDIwMTczLDIxMDk3LDIzMzgxLDMzNDcxLDIwMTgwLDIxMDUwLDIxNjcyLDIyOTg1LDIzMDM5LDIzMzc2LDIzMzgzLDIzMzg4LDI0Njc1LDI0OTA0LDI4MzYzLDI4ODI1LDI5MDM4LDI5NTc0LDI5OTQzLDMwMTMzLDMwOTEzLDMyMDQzLDMyNzczLDMzMjU4LDMzNTc2LDM0MDcxLDM0MjQ5LDM1NTY2LDM2MDM5LDM4NjA0LDIwMzE2LDIxMjQyLDIyMjA0LDI2MDI3LDI2MTUyLDI4Nzk2LDI4ODU2LDI5MjM3LDMyMTg5LDMzNDIxLDM3MTk2LDM4NTkyLDQwMzA2LDIzNDA5LDI2ODU1LDI3NTQ0LDI4NTM4LDMwNDMwLDIzNjk3LDI2MjgzLDI4NTA3LDMxNjY4LDMxNzg2LDM0ODcwLDM4NjIwLDE5OTc2LDIwMTgzLDIxMjgwLDIyNTgwLDIyNzE1LDIyNzY3LDIyODkyLDIzNTU5LDI0MTE1LDI0MTk2LDI0MzczLDI1NDg0LDI2MjkwLDI2NDU0LDI3MTY3LDI3Mjk5LDI3NDA0LDI4NDc5LDI5MjU0LDYzOTk0LDI5NTIwLDI5ODM1LDMxNDU2LDMxOTExLDMzMTQ0LDMzMjQ3LDMzMjU1LDMzNjc0LDMzOTAwLDM0MDgzLDM0MTk2LDM0MjU1LDM1MDM3LDM2MTE1LDM3MjkyLDM4MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NTU2LDIwODc3LDIxNzA1LDIyMzEyLDIzNDcyLDI1MTY1LDI2NDQ4LDI2Njg1LDI2NzcxLDI4MjIxLDI4MzcxLDI4Nzk3LDMyMjg5LDM1MDA5LDM2MDAxLDM2NjE3LDQwNzc5LDQwNzgyLDI5MjI5LDMxNjMxLDM1NTMzLDM3NjU4LDIwMjk1LDIwMzAyLDIwNzg2LDIxNjMyLDIyOTkyLDI0MjEzLDI1MjY5LDI2NDg1LDI2OTkwLDI3MTU5LDI3ODIyLDI4MTg2LDI5NDAxLDI5NDgyLDMwMTQxLDMxNjcyLDMyMDUzLDMzNTExLDMzNzg1LDMzODc5LDM0Mjk1LDM1NDE5LDM2MDE1LDM2NDg3LDM2ODg5LDM3MDQ4LDM4NjA2LDQwNzk5LDIxMjE5LDIxNTE0LDIzMjY1LDIzNDkwLDI1Njg4LDI1OTczLDI4NDA0LDI5MzgwLDYzOTk1LDMwMzQwLDMxMzA5LDMxNTE1LDMxODIxLDMyMzE4LDMyNzM1LDMzNjU5LDM1NjI3LDM2MDQyLDM2MTk2LDM2MzIxLDM2NDQ3LDM2ODQyLDM2ODU3LDM2OTY5LDM3ODQxLDIwMjkxLDIwMzQ2LDIwNjU5LDIwODQwLDIwODU2LDIxMDY5LDIxMDk4LDIyNjI1LDIyNjUyLDIyODgwLDIzNTYwLDIzNjM3LDI0MjgzLDI0NzMxLDI1MTM2LDI2NjQzLDI3NTgzLDI3NjU2LDI4NTkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDA2LDI5NzI4LDMwMDAwLDMwMDA4LDMwMDMzLDMwMzIyLDMxNTY0LDMxNjI3LDMxNjYxLDMxNjg2LDMyMzk5LDM1NDM4LDM2NjcwLDM2NjgxLDM3NDM5LDM3NTIzLDM3NjY2LDM3OTMxLDM4NjUxLDM5MDAyLDM5MDE5LDM5MTk4LDIwOTk5LDI1MTMwLDI1MjQwLDI3OTkzLDMwMzA4LDMxNDM0LDMxNjgwLDMyMTE4LDIxMzQ0LDIzNzQyLDI0MjE1LDI4NDcyLDI4ODU3LDMxODk2LDM4NjczLDM5ODIyLDQwNjcwLDI1NTA5LDI1NzIyLDM0Njc4LDE5OTY5LDIwMTE3LDIwMTQxLDIwNTcyLDIwNTk3LDIxNTc2LDIyOTc5LDIzNDUwLDI0MTI4LDI0MjM3LDI0MzExLDI0NDQ5LDI0NzczLDI1NDAyLDI1OTE5LDI1OTcyLDI2MDYwLDI2MjMwLDI2MjMyLDI2NjIyLDI2OTg0LDI3MjczLDI3NDkxLDI3NzEyLDI4MDk2LDI4MTM2LDI4MTkxLDI4MjU0LDI4NzAyLDI4ODMzLDI5NTgyLDI5NjkzLDMwMDEwLDMwNTU1LDMwODU1LDMxMTE4LDMxMjQzLDMxMzU3LDMxOTM0LDMyMTQyLDMzMzUxLDM1MzMwLDM1NTYyLDM1OTk4LDM3MTY1LDM3MTk0LDM3MzM2LDM3NDc4LDM3NTgwLDM3NjY0LDM4NjYyLDM4NzQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NzQ4LDM4OTE0LDQwNzE4LDIxMDQ2LDIxMTM3LDIxODg0LDIyNTY0LDI0MDkzLDI0MzUxLDI0NzE2LDI1NTUyLDI2Nzk5LDI4NjM5LDMxMDg1LDMxNTMyLDMzMjI5LDM0MjM0LDM1MDY5LDM1NTc2LDM2NDIwLDM3MjYxLDM4NTAwLDM4NTU1LDM4NzE3LDM4OTg4LDQwNzc4LDIwNDMwLDIwODA2LDIwOTM5LDIxMTYxLDIyMDY2LDI0MzQwLDI0NDI3LDI1NTE0LDI1ODA1LDI2MDg5LDI2MTc3LDI2MzYyLDI2MzYxLDI2Mzk3LDI2NzgxLDI2ODM5LDI3MTMzLDI4NDM3LDI4NTI2LDI5MDMxLDI5MTU3LDI5MjI2LDI5ODY2LDMwNTIyLDMxMDYyLDMxMDY2LDMxMTk5LDMxMjY0LDMxMzgxLDMxODk1LDMxOTY3LDMyMDY4LDMyMzY4LDMyOTAzLDM0Mjk5LDM0NDY4LDM1NDEyLDM1NTE5LDM2MjQ5LDM2NDgxLDM2ODk2LDM2OTczLDM3MzQ3LDM4NDU5LDM4NjEzLDQwMTY1LDI2MDYzLDMxNzUxLDM2Mjc1LDM3ODI3LDIzMzg0LDIzNTYyLDIxMzMwLDI1MzA1LDI5NDY5LDIwNTE5LDIzNDQ3LDI0NDc4LDI0NzUyLDI0OTM5LDI2ODM3LDI4MTIxLDI5NzQyLDMxMjc4LDMyMDY2LDMyMTU2LDMyMzA1LDMzMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2Mzk0LDM2NDA1LDM3NzU4LDM3OTEyLDIwMzA0LDIyMzUyLDI0MDM4LDI0MjMxLDI1Mzg3LDMyNjE4LDIwMDI3LDIwMzAzLDIwMzY3LDIwNTcwLDIzMDA1LDMyOTY0LDIxNjEwLDIxNjA4LDIyMDE0LDIyODYzLDIzNDQ5LDI0MDMwLDI0MjgyLDI2MjA1LDI2NDE3LDI2NjA5LDI2NjY2LDI3ODgwLDI3OTU0LDI4MjM0LDI4NTU3LDI4ODU1LDI5NjY0LDMwMDg3LDMxODIwLDMyMDAyLDMyMDQ0LDMyMTYyLDMzMzExLDM0NTIzLDM1Mzg3LDM1NDYxLDM2MjA4LDM2NDkwLDM2NjU5LDM2OTEzLDM3MTk4LDM3MjAyLDM3OTU2LDM5Mzc2LDMxNDgxLDMxOTA5LDIwNDI2LDIwNzM3LDIwOTM0LDIyNDcyLDIzNTM1LDIzODAzLDI2MjAxLDI3MTk3LDI3OTk0LDI4MzEwLDI4NjUyLDI4OTQwLDMwMDYzLDMxNDU5LDM0ODUwLDM2ODk3LDM2OTgxLDM4NjAzLDM5NDIzLDMzNTM3LDIwMDEzLDIwMjEwLDM0ODg2LDM3MzI1LDIxMzczLDI3MzU1LDI2OTg3LDI3NzEzLDMzOTE0LDIyNjg2LDI0OTc0LDI2MzY2LDI1MzI3LDI4ODkzLDI5OTY5LDMwMTUxLDMyMzM4LDMzOTc2LDM1NjU3LDM2MTA0LDIwMDQzLDIxNDgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjc1LDIyMzIwLDIyMzM2LDI0NTM1LDI1MzQ1LDI1MzUxLDI1NzExLDI1OTAzLDI2MDg4LDI2MjM0LDI2NTI1LDI2NTQ3LDI3NDkwLDI3NzQ0LDI3ODAyLDI4NDYwLDMwNjkzLDMwNzU3LDMxMDQ5LDMxMDYzLDMyMDI1LDMyOTMwLDMzMDI2LDMzMjY3LDMzNDM3LDMzNDYzLDM0NTg0LDM1NDY4LDYzOTk2LDM2MTAwLDM2Mjg2LDM2OTc4LDMwNDUyLDMxMjU3LDMxMjg3LDMyMzQwLDMyODg3LDIxNzY3LDIxOTcyLDIyNjQ1LDI1MzkxLDI1NjM0LDI2MTg1LDI2MTg3LDI2NzMzLDI3MDM1LDI3NTI0LDI3OTQxLDI4MzM3LDI5NjQ1LDI5ODAwLDI5ODU3LDMwMDQzLDMwMTM3LDMwNDMzLDMwNDk0LDMwNjAzLDMxMjA2LDMyMjY1LDMyMjg1LDMzMjc1LDM0MDk1LDM0OTY3LDM1Mzg2LDM2MDQ5LDM2NTg3LDM2Nzg0LDM2OTE0LDM3ODA1LDM4NDk5LDM4NTE1LDM4NjYzLDIwMzU2LDIxNDg5LDIzMDE4LDIzMjQxLDI0MDg5LDI2NzAyLDI5ODk0LDMwMTQyLDMxMjA5LDMxMzc4LDMzMTg3LDM0NTQxLDM2MDc0LDM2MzAwLDM2ODQ1LDI2MDE1LDI2Mzg5LDYzOTk3LDIyNTE5LDI4NTAzLDMyMjIxLDM2NjU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3ODc4LDM4NTk4LDI0NTAxLDI1MDc0LDI4NTQ4LDE5OTg4LDIwMzc2LDIwNTExLDIxNDQ5LDIxOTgzLDIzOTE5LDI0MDQ2LDI3NDI1LDI3NDkyLDMwOTIzLDMxNjQyLDYzOTk4LDM2NDI1LDM2NTU0LDM2OTc0LDI1NDE3LDI1NjYyLDMwNTI4LDMxMzY0LDM3Njc5LDM4MDE1LDQwODEwLDI1Nzc2LDI4NTkxLDI5MTU4LDI5ODY0LDI5OTE0LDMxNDI4LDMxNzYyLDMyMzg2LDMxOTIyLDMyNDA4LDM1NzM4LDM2MTA2LDM4MDEzLDM5MTg0LDM5MjQ0LDIxMDQ5LDIzNTE5LDI1ODMwLDI2NDEzLDMyMDQ2LDIwNzE3LDIxNDQzLDIyNjQ5LDI0OTIwLDI0OTIxLDI1MDgyLDI2MDI4LDMxNDQ5LDM1NzMwLDM1NzM0LDIwNDg5LDIwNTEzLDIxMTA5LDIxODA5LDIzMTAwLDI0Mjg4LDI0NDMyLDI0ODg0LDI1OTUwLDI2MTI0LDI2MTY2LDI2Mjc0LDI3MDg1LDI4MzU2LDI4NDY2LDI5NDYyLDMwMjQxLDMxMzc5LDMzMDgxLDMzMzY5LDMzNzUwLDMzOTgwLDIwNjYxLDIyNTEyLDIzNDg4LDIzNTI4LDI0NDI1LDI1NTA1LDMwNzU4LDMyMTgxLDMzNzU2LDM0MDgxLDM3MzE5LDM3MzY1LDIwODc0LDI2NjEzLDMxNTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MDEyLDIwOTMyLDIyOTcxLDI0NzY1LDM0Mzg5LDIwNTA4LDYzOTk5LDIxMDc2LDIzNjEwLDI0OTU3LDI1MTE0LDI1Mjk5LDI1ODQyLDI2MDIxLDI4MzY0LDMwMjQwLDMzMDM0LDM2NDQ4LDM4NDk1LDM4NTg3LDIwMTkxLDIxMzE1LDIxOTEyLDIyODI1LDI0MDI5LDI1Nzk3LDI3ODQ5LDI4MTU0LDI5NTg4LDMxMzU5LDMzMzA3LDM0MjE0LDM2MDY4LDM2MzY4LDM2OTgzLDM3MzUxLDM4MzY5LDM4NDMzLDM4ODU0LDIwOTg0LDIxNzQ2LDIxODk0LDI0NTA1LDI1NzY0LDI4NTUyLDMyMTgwLDM2NjM5LDM2Njg1LDM3OTQxLDIwNjgxLDIzNTc0LDI3ODM4LDI4MTU1LDI5OTc5LDMwNjUxLDMxODA1LDMxODQ0LDM1NDQ5LDM1NTIyLDIyNTU4LDIyOTc0LDI0MDg2LDI1NDYzLDI5MjY2LDMwMDkwLDMwNTcxLDM1NTQ4LDM2MDI4LDM2NjI2LDI0MzA3LDI2MjI4LDI4MTUyLDMyODkzLDMzNzI5LDM1NTMxLDM4NzM3LDM5ODk0LDY0MDAwLDIxMDU5LDI2MzY3LDI4MDUzLDI4Mzk5LDMyMjI0LDM1NTU4LDM2OTEwLDM2OTU4LDM5NjM2LDIxMDIxLDIxMTE5LDIxNzM2LDI0OTgwLDI1MjIwLDI1MzA3LDI2Nzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODk4LDI2OTcwLDI3MTg5LDI4ODE4LDI4OTY2LDMwODEzLDMwOTc3LDMwOTkwLDMxMTg2LDMxMjQ1LDMyOTE4LDMzNDAwLDMzNDkzLDMzNjA5LDM0MTIxLDM1OTcwLDM2MjI5LDM3MjE4LDM3MjU5LDM3Mjk0LDIwNDE5LDIyMjI1LDI5MTY1LDMwNjc5LDM0NTYwLDM1MzIwLDIzNTQ0LDI0NTM0LDI2NDQ5LDM3MDMyLDIxNDc0LDIyNjE4LDIzNTQxLDI0NzQwLDI0OTYxLDI1Njk2LDMyMzE3LDMyODgwLDM0MDg1LDM3NTA3LDI1Nzc0LDIwNjUyLDIzODI4LDI2MzY4LDIyNjg0LDI1Mjc3LDI1NTEyLDI2ODk0LDI3MDAwLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMzNDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQzLDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAxLDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYxLDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMwMzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMyNjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQwNzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgyLDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcxLDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYwLDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMzNDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcxLDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcxLDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIwNDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMyNzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUzLDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIxMTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5NzgxLDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcyLDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIwOTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQwNTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIzNDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIxLDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIwNDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMwNTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMyLDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMzLDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2MjkxLDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMyOTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTczLDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYyLDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgyLDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMzLDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMxMjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImdiMTgwMzBcIjpbMTk5NzAsMTk5NzIsMTk5NzMsMTk5NzQsMTk5ODMsMTk5ODYsMTk5OTEsMTk5OTksMjAwMDAsMjAwMDEsMjAwMDMsMjAwMDYsMjAwMDksMjAwMTQsMjAwMTUsMjAwMTcsMjAwMTksMjAwMjEsMjAwMjMsMjAwMjgsMjAwMzIsMjAwMzMsMjAwMzQsMjAwMzYsMjAwMzgsMjAwNDIsMjAwNDksMjAwNTMsMjAwNTUsMjAwNTgsMjAwNTksMjAwNjYsMjAwNjcsMjAwNjgsMjAwNjksMjAwNzEsMjAwNzIsMjAwNzQsMjAwNzUsMjAwNzYsMjAwNzcsMjAwNzgsMjAwNzksMjAwODIsMjAwODQsMjAwODUsMjAwODYsMjAwODcsMjAwODgsMjAwODksMjAwOTAsMjAwOTEsMjAwOTIsMjAwOTMsMjAwOTUsMjAwOTYsMjAwOTcsMjAwOTgsMjAwOTksMjAxMDAsMjAxMDEsMjAxMDMsMjAxMDYsMjAxMTIsMjAxMTgsMjAxMTksMjAxMjEsMjAxMjQsMjAxMjUsMjAxMjYsMjAxMzEsMjAxMzgsMjAxNDMsMjAxNDQsMjAxNDUsMjAxNDgsMjAxNTAsMjAxNTEsMjAxNTIsMjAxNTMsMjAxNTYsMjAxNTcsMjAxNTgsMjAxNjgsMjAxNzIsMjAxNzUsMjAxNzYsMjAxNzgsMjAxODYsMjAxODcsMjAxODgsMjAxOTIsMjAxOTQsMjAxOTgsMjAxOTksMjAyMDEsMjAyMDUsMjAyMDYsMjAyMDcsMjAyMDksMjAyMTIsMjAyMTYsMjAyMTcsMjAyMTgsMjAyMjAsMjAyMjIsMjAyMjQsMjAyMjYsMjAyMjcsMjAyMjgsMjAyMjksMjAyMzAsMjAyMzEsMjAyMzIsMjAyMzUsMjAyMzYsMjAyNDIsMjAyNDMsMjAyNDQsMjAyNDUsMjAyNDYsMjAyNTIsMjAyNTMsMjAyNTcsMjAyNTksMjAyNjQsMjAyNjUsMjAyNjgsMjAyNjksMjAyNzAsMjAyNzMsMjAyNzUsMjAyNzcsMjAyNzksMjAyODEsMjAyODMsMjAyODYsMjAyODcsMjAyODgsMjAyODksMjAyOTAsMjAyOTIsMjAyOTMsMjAyOTUsMjAyOTYsMjAyOTcsMjAyOTgsMjAyOTksMjAzMDAsMjAzMDYsMjAzMDgsMjAzMTAsMjAzMjEsMjAzMjIsMjAzMjYsMjAzMjgsMjAzMzAsMjAzMzEsMjAzMzMsMjAzMzQsMjAzMzcsMjAzMzgsMjAzNDEsMjAzNDMsMjAzNDQsMjAzNDUsMjAzNDYsMjAzNDksMjAzNTIsMjAzNTMsMjAzNTQsMjAzNTcsMjAzNTgsMjAzNTksMjAzNjIsMjAzNjQsMjAzNjYsMjAzNjgsMjAzNzAsMjAzNzEsMjAzNzMsMjAzNzQsMjAzNzYsMjAzNzcsMjAzNzgsMjAzODAsMjAzODIsMjAzODMsMjAzODUsMjAzODYsMjAzODgsMjAzOTUsMjAzOTcsMjA0MDAsMjA0MDEsMjA0MDIsMjA0MDMsMjA0MDQsMjA0MDYsMjA0MDcsMjA0MDgsMjA0MDksMjA0MTAsMjA0MTEsMjA0MTIsMjA0MTMsMjA0MTQsMjA0MTYsMjA0MTcsMjA0MTgsMjA0MjIsMjA0MjMsMjA0MjQsMjA0MjUsMjA0MjcsMjA0MjgsMjA0MjksMjA0MzQsMjA0MzUsMjA0MzYsMjA0MzcsMjA0MzgsMjA0NDEsMjA0NDMsMjA0NDgsMjA0NTAsMjA0NTIsMjA0NTMsMjA0NTUsMjA0NTksMjA0NjAsMjA0NjQsMjA0NjYsMjA0NjgsMjA0NjksMjA0NzAsMjA0NzEsMjA0NzMsMjA0NzUsMjA0NzYsMjA0NzcsMjA0NzksMjA0ODAsMjA0ODEsMjA0ODIsMjA0ODMsMjA0ODQsMjA0ODUsMjA0ODYsMjA0ODcsMjA0ODgsMjA0ODksMjA0OTAsMjA0OTEsMjA0OTQsMjA0OTYsMjA0OTcsMjA0OTksMjA1MDEsMjA1MDIsMjA1MDMsMjA1MDcsMjA1MDksMjA1MTAsMjA1MTIsMjA1MTQsMjA1MTUsMjA1MTYsMjA1MTksMjA1MjMsMjA1MjcsMjA1MjgsMjA1MjksMjA1MzAsMjA1MzEsMjA1MzIsMjA1MzMsMjA1MzQsMjA1MzUsMjA1MzYsMjA1MzcsMjA1MzksMjA1NDEsMjA1NDMsMjA1NDQsMjA1NDUsMjA1NDYsMjA1NDgsMjA1NDksMjA1NTAsMjA1NTMsMjA1NTQsMjA1NTUsMjA1NTcsMjA1NjAsMjA1NjEsMjA1NjIsMjA1NjMsMjA1NjQsMjA1NjYsMjA1NjcsMjA1NjgsMjA1NjksMjA1NzEsMjA1NzMsMjA1NzQsMjA1NzUsMjA1NzYsMjA1NzcsMjA1NzgsMjA1NzksMjA1ODAsMjA1ODIsMjA1ODMsMjA1ODQsMjA1ODUsMjA1ODYsMjA1ODcsMjA1ODksMjA1OTAsMjA1OTEsMjA1OTIsMjA1OTMsMjA1OTQsMjA1OTUsMjA1OTYsMjA1OTcsMjA2MDAsMjA2MDEsMjA2MDIsMjA2MDQsMjA2MDUsMjA2MDksMjA2MTAsMjA2MTEsMjA2MTIsMjA2MTQsMjA2MTUsMjA2MTcsMjA2MTgsMjA2MTksMjA2MjAsMjA2MjIsMjA2MjMsMjA2MjQsMjA2MjUsMjA2MjYsMjA2MjcsMjA2MjgsMjA2MjksMjA2MzAsMjA2MzEsMjA2MzIsMjA2MzMsMjA2MzQsMjA2MzUsMjA2MzYsMjA2MzcsMjA2MzgsMjA2MzksMjA2NDAsMjA2NDEsMjA2NDIsMjA2NDQsMjA2NDYsMjA2NTAsMjA2NTEsMjA2NTMsMjA2NTQsMjA2NTUsMjA2NTYsMjA2NTcsMjA2NTksMjA2NjAsMjA2NjEsMjA2NjIsMjA2NjMsMjA2NjQsMjA2NjUsMjA2NjgsMjA2NjksMjA2NzAsMjA2NzEsMjA2NzIsMjA2NzMsMjA2NzQsMjA2NzUsMjA2NzYsMjA2NzcsMjA2NzgsMjA2NzksMjA2ODAsMjA2ODEsMjA2ODIsMjA2ODMsMjA2ODQsMjA2ODUsMjA2ODYsMjA2ODgsMjA2ODksMjA2OTAsMjA2OTEsMjA2OTIsMjA2OTMsMjA2OTUsMjA2OTYsMjA2OTcsMjA2OTksMjA3MDAsMjA3MDEsMjA3MDIsMjA3MDMsMjA3MDQsMjA3MDUsMjA3MDYsMjA3MDcsMjA3MDgsMjA3MDksMjA3MTIsMjA3MTMsMjA3MTQsMjA3MTUsMjA3MTksMjA3MjAsMjA3MjEsMjA3MjIsMjA3MjQsMjA3MjYsMjA3MjcsMjA3MjgsMjA3MjksMjA3MzAsMjA3MzIsMjA3MzMsMjA3MzQsMjA3MzUsMjA3MzYsMjA3MzcsMjA3MzgsMjA3MzksMjA3NDAsMjA3NDEsMjA3NDQsMjA3NDUsMjA3NDYsMjA3NDgsMjA3NDksMjA3NTAsMjA3NTEsMjA3NTIsMjA3NTMsMjA3NTUsMjA3NTYsMjA3NTcsMjA3NTgsMjA3NTksMjA3NjAsMjA3NjEsMjA3NjIsMjA3NjMsMjA3NjQsMjA3NjUsMjA3NjYsMjA3NjcsMjA3NjgsMjA3NzAsMjA3NzEsMjA3NzIsMjA3NzMsMjA3NzQsMjA3NzUsMjA3NzYsMjA3NzcsMjA3NzgsMjA3NzksMjA3ODAsMjA3ODEsMjA3ODIsMjA3ODMsMjA3ODQsMjA3ODUsMjA3ODYsMjA3ODcsMjA3ODgsMjA3ODksMjA3OTAsMjA3OTEsMjA3OTIsMjA3OTMsMjA3OTQsMjA3OTUsMjA3OTYsMjA3OTcsMjA3OTgsMjA4MDIsMjA4MDcsMjA4MTAsMjA4MTIsMjA4MTQsMjA4MTUsMjA4MTYsMjA4MTgsMjA4MTksMjA4MjMsMjA4MjQsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjA4MzEsMjA4MzIsMjA4MzMsMjA4MzUsMjA4MzYsMjA4MzgsMjA4MzksMjA4NDEsMjA4NDIsMjA4NDcsMjA4NTAsMjA4NTgsMjA4NjIsMjA4NjMsMjA4NjcsMjA4NjgsMjA4NzAsMjA4NzEsMjA4NzQsMjA4NzUsMjA4NzgsMjA4NzksMjA4ODAsMjA4ODEsMjA4ODMsMjA4ODQsMjA4ODgsMjA4OTAsMjA4OTMsMjA4OTQsMjA4OTUsMjA4OTcsMjA4OTksMjA5MDIsMjA5MDMsMjA5MDQsMjA5MDUsMjA5MDYsMjA5MDksMjA5MTAsMjA5MTYsMjA5MjAsMjA5MjEsMjA5MjIsMjA5MjYsMjA5MjcsMjA5MjksMjA5MzAsMjA5MzEsMjA5MzMsMjA5MzYsMjA5MzgsMjA5NDEsMjA5NDIsMjA5NDQsMjA5NDYsMjA5NDcsMjA5NDgsMjA5NDksMjA5NTAsMjA5NTEsMjA5NTIsMjA5NTMsMjA5NTQsMjA5NTYsMjA5NTgsMjA5NTksMjA5NjIsMjA5NjMsMjA5NjUsMjA5NjYsMjA5NjcsMjA5NjgsMjA5NjksMjA5NzAsMjA5NzIsMjA5NzQsMjA5NzcsMjA5NzgsMjA5ODAsMjA5ODMsMjA5OTAsMjA5OTYsMjA5OTcsMjEwMDEsMjEwMDMsMjEwMDQsMjEwMDcsMjEwMDgsMjEwMTEsMjEwMTIsMjEwMTMsMjEwMjAsMjEwMjIsMjEwMjMsMjEwMjUsMjEwMjYsMjEwMjcsMjEwMjksMjEwMzAsMjEwMzEsMjEwMzQsMjEwMzYsMjEwMzksMjEwNDEsMjEwNDIsMjEwNDQsMjEwNDUsMjEwNTIsMjEwNTQsMjEwNjAsMjEwNjEsMjEwNjIsMjEwNjMsMjEwNjQsMjEwNjUsMjEwNjcsMjEwNzAsMjEwNzEsMjEwNzQsMjEwNzUsMjEwNzcsMjEwNzksMjEwODAsMjEwODEsMjEwODIsMjEwODMsMjEwODUsMjEwODcsMjEwODgsMjEwOTAsMjEwOTEsMjEwOTIsMjEwOTQsMjEwOTYsMjEwOTksMjExMDAsMjExMDEsMjExMDIsMjExMDQsMjExMDUsMjExMDcsMjExMDgsMjExMDksMjExMTAsMjExMTEsMjExMTIsMjExMTMsMjExMTQsMjExMTUsMjExMTYsMjExMTgsMjExMjAsMjExMjMsMjExMjQsMjExMjUsMjExMjYsMjExMjcsMjExMjksMjExMzAsMjExMzEsMjExMzIsMjExMzMsMjExMzQsMjExMzUsMjExMzcsMjExMzgsMjExNDAsMjExNDEsMjExNDIsMjExNDMsMjExNDQsMjExNDUsMjExNDYsMjExNDgsMjExNTYsMjExNTcsMjExNTgsMjExNTksMjExNjYsMjExNjcsMjExNjgsMjExNzIsMjExNzMsMjExNzQsMjExNzUsMjExNzYsMjExNzcsMjExNzgsMjExNzksMjExODAsMjExODEsMjExODQsMjExODUsMjExODYsMjExODgsMjExODksMjExOTAsMjExOTIsMjExOTQsMjExOTYsMjExOTcsMjExOTgsMjExOTksMjEyMDEsMjEyMDMsMjEyMDQsMjEyMDUsMjEyMDcsMjEyMDksMjEyMTAsMjEyMTEsMjEyMTIsMjEyMTMsMjEyMTQsMjEyMTYsMjEyMTcsMjEyMTgsMjEyMTksMjEyMjEsMjEyMjIsMjEyMjMsMjEyMjQsMjEyMjUsMjEyMjYsMjEyMjcsMjEyMjgsMjEyMjksMjEyMzAsMjEyMzEsMjEyMzMsMjEyMzQsMjEyMzUsMjEyMzYsMjEyMzcsMjEyMzgsMjEyMzksMjEyNDAsMjEyNDMsMjEyNDQsMjEyNDUsMjEyNDksMjEyNTAsMjEyNTEsMjEyNTIsMjEyNTUsMjEyNTcsMjEyNTgsMjEyNTksMjEyNjAsMjEyNjIsMjEyNjUsMjEyNjYsMjEyNjcsMjEyNjgsMjEyNzIsMjEyNzUsMjEyNzYsMjEyNzgsMjEyNzksMjEyODIsMjEyODQsMjEyODUsMjEyODcsMjEyODgsMjEyODksMjEyOTEsMjEyOTIsMjEyOTMsMjEyOTUsMjEyOTYsMjEyOTcsMjEyOTgsMjEyOTksMjEzMDAsMjEzMDEsMjEzMDIsMjEzMDMsMjEzMDQsMjEzMDgsMjEzMDksMjEzMTIsMjEzMTQsMjEzMTYsMjEzMTgsMjEzMjMsMjEzMjQsMjEzMjUsMjEzMjgsMjEzMzIsMjEzMzYsMjEzMzcsMjEzMzksMjEzNDEsMjEzNDksMjEzNTIsMjEzNTQsMjEzNTYsMjEzNTcsMjEzNjIsMjEzNjYsMjEzNjksMjEzNzEsMjEzNzIsMjEzNzMsMjEzNzQsMjEzNzYsMjEzNzcsMjEzNzksMjEzODMsMjEzODQsMjEzODYsMjEzOTAsMjEzOTEsMjEzOTIsMjEzOTMsMjEzOTQsMjEzOTUsMjEzOTYsMjEzOTgsMjEzOTksMjE0MDEsMjE0MDMsMjE0MDQsMjE0MDYsMjE0MDgsMjE0MDksMjE0MTIsMjE0MTUsMjE0MTgsMjE0MTksMjE0MjAsMjE0MjEsMjE0MjMsMjE0MjQsMjE0MjUsMjE0MjYsMjE0MjcsMjE0MjgsMjE0MjksMjE0MzEsMjE0MzIsMjE0MzMsMjE0MzQsMjE0MzYsMjE0MzcsMjE0MzgsMjE0NDAsMjE0NDMsMjE0NDQsMjE0NDUsMjE0NDYsMjE0NDcsMjE0NTQsMjE0NTUsMjE0NTYsMjE0NTgsMjE0NTksMjE0NjEsMjE0NjYsMjE0NjgsMjE0NjksMjE0NzAsMjE0NzMsMjE0NzQsMjE0NzksMjE0OTIsMjE0OTgsMjE1MDIsMjE1MDMsMjE1MDQsMjE1MDYsMjE1MDksMjE1MTEsMjE1MTUsMjE1MjQsMjE1MjgsMjE1MjksMjE1MzAsMjE1MzIsMjE1MzgsMjE1NDAsMjE1NDEsMjE1NDYsMjE1NTIsMjE1NTUsMjE1NTgsMjE1NTksMjE1NjIsMjE1NjUsMjE1NjcsMjE1NjksMjE1NzAsMjE1NzIsMjE1NzMsMjE1NzUsMjE1NzcsMjE1ODAsMjE1ODEsMjE1ODIsMjE1ODMsMjE1ODUsMjE1OTQsMjE1OTcsMjE1OTgsMjE1OTksMjE2MDAsMjE2MDEsMjE2MDMsMjE2MDUsMjE2MDcsMjE2MDksMjE2MTAsMjE2MTEsMjE2MTIsMjE2MTMsMjE2MTQsMjE2MTUsMjE2MTYsMjE2MjAsMjE2MjUsMjE2MjYsMjE2MzAsMjE2MzEsMjE2MzMsMjE2MzUsMjE2MzcsMjE2MzksMjE2NDAsMjE2NDEsMjE2NDIsMjE2NDUsMjE2NDksMjE2NTEsMjE2NTUsMjE2NTYsMjE2NjAsMjE2NjIsMjE2NjMsMjE2NjQsMjE2NjUsMjE2NjYsMjE2NjksMjE2NzgsMjE2ODAsMjE2ODIsMjE2ODUsMjE2ODYsMjE2ODcsMjE2ODksMjE2OTAsMjE2OTIsMjE2OTQsMjE2OTksMjE3MDEsMjE3MDYsMjE3MDcsMjE3MTgsMjE3MjAsMjE3MjMsMjE3MjgsMjE3MjksMjE3MzAsMjE3MzEsMjE3MzIsMjE3MzksMjE3NDAsMjE3NDMsMjE3NDQsMjE3NDUsMjE3NDgsMjE3NDksMjE3NTAsMjE3NTEsMjE3NTIsMjE3NTMsMjE3NTUsMjE3NTgsMjE3NjAsMjE3NjIsMjE3NjMsMjE3NjQsMjE3NjUsMjE3NjgsMjE3NzAsMjE3NzEsMjE3NzIsMjE3NzMsMjE3NzQsMjE3NzgsMjE3NzksMjE3ODEsMjE3ODIsMjE3ODMsMjE3ODQsMjE3ODUsMjE3ODYsMjE3ODgsMjE3ODksMjE3OTAsMjE3OTEsMjE3OTMsMjE3OTcsMjE3OTgsMjE4MDAsMjE4MDEsMjE4MDMsMjE4MDUsMjE4MTAsMjE4MTIsMjE4MTMsMjE4MTQsMjE4MTYsMjE4MTcsMjE4MTgsMjE4MTksMjE4MjEsMjE4MjQsMjE4MjYsMjE4MjksMjE4MzEsMjE4MzIsMjE4MzUsMjE4MzYsMjE4MzcsMjE4MzgsMjE4MzksMjE4NDEsMjE4NDIsMjE4NDMsMjE4NDQsMjE4NDcsMjE4NDgsMjE4NDksMjE4NTAsMjE4NTEsMjE4NTMsMjE4NTQsMjE4NTUsMjE4NTYsMjE4NTgsMjE4NTksMjE4NjQsMjE4NjUsMjE4NjcsMjE4NzEsMjE4NzIsMjE4NzMsMjE4NzQsMjE4NzUsMjE4NzYsMjE4ODEsMjE4ODIsMjE4ODUsMjE4ODcsMjE4OTMsMjE4OTQsMjE5MDAsMjE5MDEsMjE5MDIsMjE5MDQsMjE5MDYsMjE5MDcsMjE5MDksMjE5MTAsMjE5MTEsMjE5MTQsMjE5MTUsMjE5MTgsMjE5MjAsMjE5MjEsMjE5MjIsMjE5MjMsMjE5MjQsMjE5MjUsMjE5MjYsMjE5MjgsMjE5MjksMjE5MzAsMjE5MzEsMjE5MzIsMjE5MzMsMjE5MzQsMjE5MzUsMjE5MzYsMjE5MzgsMjE5NDAsMjE5NDIsMjE5NDQsMjE5NDYsMjE5NDgsMjE5NTEsMjE5NTIsMjE5NTMsMjE5NTQsMjE5NTUsMjE5NTgsMjE5NTksMjE5NjAsMjE5NjIsMjE5NjMsMjE5NjYsMjE5NjcsMjE5NjgsMjE5NzMsMjE5NzUsMjE5NzYsMjE5NzcsMjE5NzgsMjE5NzksMjE5ODIsMjE5ODQsMjE5ODYsMjE5OTEsMjE5OTMsMjE5OTcsMjE5OTgsMjIwMDAsMjIwMDEsMjIwMDQsMjIwMDYsMjIwMDgsMjIwMDksMjIwMTAsMjIwMTEsMjIwMTIsMjIwMTUsMjIwMTgsMjIwMTksMjIwMjAsMjIwMjEsMjIwMjIsMjIwMjMsMjIwMjYsMjIwMjcsMjIwMjksMjIwMzIsMjIwMzMsMjIwMzQsMjIwMzUsMjIwMzYsMjIwMzcsMjIwMzgsMjIwMzksMjIwNDEsMjIwNDIsMjIwNDQsMjIwNDUsMjIwNDgsMjIwNDksMjIwNTAsMjIwNTMsMjIwNTQsMjIwNTYsMjIwNTcsMjIwNTgsMjIwNTksMjIwNjIsMjIwNjMsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzIsMjIwNzQsMjIwNzYsMjIwNzcsMjIwNzgsMjIwODAsMjIwODEsMjIwODIsMjIwODMsMjIwODQsMjIwODUsMjIwODYsMjIwODcsMjIwODgsMjIwODksMjIwOTAsMjIwOTEsMjIwOTUsMjIwOTYsMjIwOTcsMjIwOTgsMjIwOTksMjIxMDEsMjIxMDIsMjIxMDYsMjIxMDcsMjIxMDksMjIxMTAsMjIxMTEsMjIxMTIsMjIxMTMsMjIxMTUsMjIxMTcsMjIxMTgsMjIxMTksMjIxMjUsMjIxMjYsMjIxMjcsMjIxMjgsMjIxMzAsMjIxMzEsMjIxMzIsMjIxMzMsMjIxMzUsMjIxMzYsMjIxMzcsMjIxMzgsMjIxNDEsMjIxNDIsMjIxNDMsMjIxNDQsMjIxNDUsMjIxNDYsMjIxNDcsMjIxNDgsMjIxNTEsMjIxNTIsMjIxNTMsMjIxNTQsMjIxNTUsMjIxNTYsMjIxNTcsMjIxNjAsMjIxNjEsMjIxNjIsMjIxNjQsMjIxNjUsMjIxNjYsMjIxNjcsMjIxNjgsMjIxNjksMjIxNzAsMjIxNzEsMjIxNzIsMjIxNzMsMjIxNzQsMjIxNzUsMjIxNzYsMjIxNzcsMjIxNzgsMjIxODAsMjIxODEsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODYsMjIxODcsMjIxODgsMjIxODksMjIxOTAsMjIxOTIsMjIxOTMsMjIxOTQsMjIxOTUsMjIxOTYsMjIxOTcsMjIxOTgsMjIyMDAsMjIyMDEsMjIyMDIsMjIyMDMsMjIyMDUsMjIyMDYsMjIyMDcsMjIyMDgsMjIyMDksMjIyMTAsMjIyMTEsMjIyMTIsMjIyMTMsMjIyMTQsMjIyMTUsMjIyMTYsMjIyMTcsMjIyMTksMjIyMjAsMjIyMjEsMjIyMjIsMjIyMjMsMjIyMjQsMjIyMjUsMjIyMjYsMjIyMjcsMjIyMjksMjIyMzAsMjIyMzIsMjIyMzMsMjIyMzYsMjIyNDMsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNDksMjIyNTAsMjIyNTIsMjIyNTQsMjIyNTUsMjIyNTgsMjIyNTksMjIyNjIsMjIyNjMsMjIyNjQsMjIyNjcsMjIyNjgsMjIyNzIsMjIyNzMsMjIyNzQsMjIyNzcsMjIyNzksMjIyODMsMjIyODQsMjIyODUsMjIyODYsMjIyODcsMjIyODgsMjIyODksMjIyOTAsMjIyOTEsMjIyOTIsMjIyOTMsMjIyOTQsMjIyOTUsMjIyOTYsMjIyOTcsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDIsMjIzMDQsMjIzMDUsMjIzMDYsMjIzMDgsMjIzMDksMjIzMTAsMjIzMTEsMjIzMTUsMjIzMjEsMjIzMjIsMjIzMjQsMjIzMjUsMjIzMjYsMjIzMjcsMjIzMjgsMjIzMzIsMjIzMzMsMjIzMzUsMjIzMzcsMjIzMzksMjIzNDAsMjIzNDEsMjIzNDIsMjIzNDQsMjIzNDUsMjIzNDcsMjIzNTQsMjIzNTUsMjIzNTYsMjIzNTcsMjIzNTgsMjIzNjAsMjIzNjEsMjIzNzAsMjIzNzEsMjIzNzMsMjIzNzUsMjIzODAsMjIzODIsMjIzODQsMjIzODUsMjIzODYsMjIzODgsMjIzODksMjIzOTIsMjIzOTMsMjIzOTQsMjIzOTcsMjIzOTgsMjIzOTksMjI0MDAsMjI0MDEsMjI0MDcsMjI0MDgsMjI0MDksMjI0MTAsMjI0MTMsMjI0MTQsMjI0MTUsMjI0MTYsMjI0MTcsMjI0MjAsMjI0MjEsMjI0MjIsMjI0MjMsMjI0MjQsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzcsMjI0NDAsMjI0NDIsMjI0NDQsMjI0NDcsMjI0NDgsMjI0NDksMjI0NTEsMjI0NTMsMjI0NTQsMjI0NTUsMjI0NTcsMjI0NTgsMjI0NTksMjI0NjAsMjI0NjEsMjI0NjIsMjI0NjMsMjI0NjQsMjI0NjUsMjI0NjgsMjI0NjksMjI0NzAsMjI0NzEsMjI0NzIsMjI0NzMsMjI0NzQsMjI0NzYsMjI0NzcsMjI0ODAsMjI0ODEsMjI0ODMsMjI0ODYsMjI0ODcsMjI0OTEsMjI0OTIsMjI0OTQsMjI0OTcsMjI0OTgsMjI0OTksMjI1MDEsMjI1MDIsMjI1MDMsMjI1MDQsMjI1MDUsMjI1MDYsMjI1MDcsMjI1MDgsMjI1MTAsMjI1MTIsMjI1MTMsMjI1MTQsMjI1MTUsMjI1MTcsMjI1MTgsMjI1MTksMjI1MjMsMjI1MjQsMjI1MjYsMjI1MjcsMjI1MjksMjI1MzEsMjI1MzIsMjI1MzMsMjI1MzYsMjI1MzcsMjI1MzgsMjI1NDAsMjI1NDIsMjI1NDMsMjI1NDQsMjI1NDYsMjI1NDcsMjI1NDgsMjI1NTAsMjI1NTEsMjI1NTIsMjI1NTQsMjI1NTUsMjI1NTYsMjI1NTcsMjI1NTksMjI1NjIsMjI1NjMsMjI1NjUsMjI1NjYsMjI1NjcsMjI1NjgsMjI1NjksMjI1NzEsMjI1NzIsMjI1NzMsMjI1NzQsMjI1NzUsMjI1NzcsMjI1NzgsMjI1NzksMjI1ODAsMjI1ODIsMjI1ODMsMjI1ODQsMjI1ODUsMjI1ODYsMjI1ODcsMjI1ODgsMjI1ODksMjI1OTAsMjI1OTEsMjI1OTIsMjI1OTMsMjI1OTQsMjI1OTUsMjI1OTcsMjI1OTgsMjI1OTksMjI2MDAsMjI2MDEsMjI2MDIsMjI2MDMsMjI2MDYsMjI2MDcsMjI2MDgsMjI2MTAsMjI2MTEsMjI2MTMsMjI2MTQsMjI2MTUsMjI2MTcsMjI2MTgsMjI2MTksMjI2MjAsMjI2MjEsMjI2MjMsMjI2MjQsMjI2MjUsMjI2MjYsMjI2MjcsMjI2MjgsMjI2MzAsMjI2MzEsMjI2MzIsMjI2MzMsMjI2MzQsMjI2MzcsMjI2MzgsMjI2MzksMjI2NDAsMjI2NDEsMjI2NDIsMjI2NDMsMjI2NDQsMjI2NDUsMjI2NDYsMjI2NDcsMjI2NDgsMjI2NDksMjI2NTAsMjI2NTEsMjI2NTIsMjI2NTMsMjI2NTUsMjI2NTgsMjI2NjAsMjI2NjIsMjI2NjMsMjI2NjQsMjI2NjYsMjI2NjcsMjI2NjgsMjI2NjksMjI2NzAsMjI2NzEsMjI2NzIsMjI2NzMsMjI2NzYsMjI2NzcsMjI2NzgsMjI2NzksMjI2ODAsMjI2ODMsMjI2ODQsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTEsMjI2OTIsMjI2OTMsMjI2OTQsMjI2OTUsMjI2OTgsMjI2OTksMjI3MDAsMjI3MDEsMjI3MDIsMjI3MDMsMjI3MDQsMjI3MDUsMjI3MDYsMjI3MDcsMjI3MDgsMjI3MDksMjI3MTAsMjI3MTEsMjI3MTIsMjI3MTMsMjI3MTQsMjI3MTUsMjI3MTcsMjI3MTgsMjI3MTksMjI3MjAsMjI3MjIsMjI3MjMsMjI3MjQsMjI3MjYsMjI3MjcsMjI3MjgsMjI3MjksMjI3MzAsMjI3MzEsMjI3MzIsMjI3MzMsMjI3MzQsMjI3MzUsMjI3MzYsMjI3MzgsMjI3MzksMjI3NDAsMjI3NDIsMjI3NDMsMjI3NDQsMjI3NDUsMjI3NDYsMjI3NDcsMjI3NDgsMjI3NDksMjI3NTAsMjI3NTEsMjI3NTIsMjI3NTMsMjI3NTQsMjI3NTUsMjI3NTcsMjI3NTgsMjI3NTksMjI3NjAsMjI3NjEsMjI3NjIsMjI3NjUsMjI3NjcsMjI3NjksMjI3NzAsMjI3NzIsMjI3NzMsMjI3NzUsMjI3NzYsMjI3NzgsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODIsMjI3ODMsMjI3ODQsMjI3ODUsMjI3ODcsMjI3ODksMjI3OTAsMjI3OTIsMjI3OTMsMjI3OTQsMjI3OTUsMjI3OTYsMjI3OTgsMjI4MDAsMjI4MDEsMjI4MDIsMjI4MDMsMjI4MDcsMjI4MDgsMjI4MTEsMjI4MTMsMjI4MTQsMjI4MTYsMjI4MTcsMjI4MTgsMjI4MTksMjI4MjIsMjI4MjQsMjI4MjgsMjI4MzIsMjI4MzQsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDMsMjI4NDUsMjI4NDYsMjI4NDcsMjI4NDgsMjI4NTEsMjI4NTMsMjI4NTQsMjI4NTgsMjI4NjAsMjI4NjEsMjI4NjQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzYsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4ODQsMjI4ODYsMjI4ODcsMjI4ODgsMjI4ODksMjI4OTAsMjI4OTEsMjI4OTIsMjI4OTMsMjI4OTQsMjI4OTUsMjI4OTYsMjI4OTcsMjI4OTgsMjI5MDEsMjI5MDMsMjI5MDYsMjI5MDcsMjI5MDgsMjI5MTAsMjI5MTEsMjI5MTIsMjI5MTcsMjI5MjEsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MjcsMjI5MjgsMjI5MjksMjI5MzIsMjI5MzMsMjI5MzYsMjI5MzgsMjI5MzksMjI5NDAsMjI5NDEsMjI5NDMsMjI5NDQsMjI5NDUsMjI5NDYsMjI5NTAsMjI5NTEsMjI5NTYsMjI5NTcsMjI5NjAsMjI5NjEsMjI5NjMsMjI5NjQsMjI5NjUsMjI5NjYsMjI5NjcsMjI5NjgsMjI5NzAsMjI5NzIsMjI5NzMsMjI5NzUsMjI5NzYsMjI5NzcsMjI5NzgsMjI5NzksMjI5ODAsMjI5ODEsMjI5ODMsMjI5ODQsMjI5ODUsMjI5ODgsMjI5ODksMjI5OTAsMjI5OTEsMjI5OTcsMjI5OTgsMjMwMDEsMjMwMDMsMjMwMDYsMjMwMDcsMjMwMDgsMjMwMDksMjMwMTAsMjMwMTIsMjMwMTQsMjMwMTUsMjMwMTcsMjMwMTgsMjMwMTksMjMwMjEsMjMwMjIsMjMwMjMsMjMwMjQsMjMwMjUsMjMwMjYsMjMwMjcsMjMwMjgsMjMwMjksMjMwMzAsMjMwMzEsMjMwMzIsMjMwMzQsMjMwMzYsMjMwMzcsMjMwMzgsMjMwNDAsMjMwNDIsMjMwNTAsMjMwNTEsMjMwNTMsMjMwNTQsMjMwNTUsMjMwNTYsMjMwNTgsMjMwNjAsMjMwNjEsMjMwNjIsMjMwNjMsMjMwNjUsMjMwNjYsMjMwNjcsMjMwNjksMjMwNzAsMjMwNzMsMjMwNzQsMjMwNzYsMjMwNzgsMjMwNzksMjMwODAsMjMwODIsMjMwODMsMjMwODQsMjMwODUsMjMwODYsMjMwODcsMjMwODgsMjMwOTEsMjMwOTMsMjMwOTUsMjMwOTYsMjMwOTcsMjMwOTgsMjMwOTksMjMxMDEsMjMxMDIsMjMxMDMsMjMxMDUsMjMxMDYsMjMxMDcsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTUsMjMxMTYsMjMxMTcsMjMxMTgsMjMxMTksMjMxMjAsMjMxMjEsMjMxMjIsMjMxMjMsMjMxMjQsMjMxMjYsMjMxMjcsMjMxMjgsMjMxMjksMjMxMzEsMjMxMzIsMjMxMzMsMjMxMzQsMjMxMzUsMjMxMzYsMjMxMzcsMjMxMzksMjMxNDAsMjMxNDEsMjMxNDIsMjMxNDQsMjMxNDUsMjMxNDcsMjMxNDgsMjMxNDksMjMxNTAsMjMxNTEsMjMxNTIsMjMxNTMsMjMxNTQsMjMxNTUsMjMxNjAsMjMxNjEsMjMxNjMsMjMxNjQsMjMxNjUsMjMxNjYsMjMxNjgsMjMxNjksMjMxNzAsMjMxNzEsMjMxNzIsMjMxNzMsMjMxNzQsMjMxNzUsMjMxNzYsMjMxNzcsMjMxNzgsMjMxNzksMjMxODAsMjMxODEsMjMxODIsMjMxODMsMjMxODQsMjMxODUsMjMxODcsMjMxODgsMjMxODksMjMxOTAsMjMxOTEsMjMxOTIsMjMxOTMsMjMxOTYsMjMxOTcsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDEsMjMyMDIsMjMyMDMsMjMyMDQsMjMyMDUsMjMyMDYsMjMyMDcsMjMyMDgsMjMyMDksMjMyMTEsMjMyMTIsMjMyMTMsMjMyMTQsMjMyMTUsMjMyMTYsMjMyMTcsMjMyMjAsMjMyMjIsMjMyMjMsMjMyMjUsMjMyMjYsMjMyMjcsMjMyMjgsMjMyMjksMjMyMzEsMjMyMzIsMjMyMzUsMjMyMzYsMjMyMzcsMjMyMzgsMjMyMzksMjMyNDAsMjMyNDIsMjMyNDMsMjMyNDUsMjMyNDYsMjMyNDcsMjMyNDgsMjMyNDksMjMyNTEsMjMyNTMsMjMyNTUsMjMyNTcsMjMyNTgsMjMyNTksMjMyNjEsMjMyNjIsMjMyNjMsMjMyNjYsMjMyNjgsMjMyNjksMjMyNzEsMjMyNzIsMjMyNzQsMjMyNzYsMjMyNzcsMjMyNzgsMjMyNzksMjMyODAsMjMyODIsMjMyODMsMjMyODQsMjMyODUsMjMyODYsMjMyODcsMjMyODgsMjMyODksMjMyOTAsMjMyOTEsMjMyOTIsMjMyOTMsMjMyOTQsMjMyOTUsMjMyOTYsMjMyOTcsMjMyOTgsMjMyOTksMjMzMDAsMjMzMDEsMjMzMDIsMjMzMDMsMjMzMDQsMjMzMDYsMjMzMDcsMjMzMDgsMjMzMDksMjMzMTAsMjMzMTEsMjMzMTIsMjMzMTMsMjMzMTQsMjMzMTUsMjMzMTYsMjMzMTcsMjMzMjAsMjMzMjEsMjMzMjIsMjMzMjMsMjMzMjQsMjMzMjUsMjMzMjYsMjMzMjcsMjMzMjgsMjMzMjksMjMzMzAsMjMzMzEsMjMzMzIsMjMzMzMsMjMzMzQsMjMzMzUsMjMzMzYsMjMzMzcsMjMzMzgsMjMzMzksMjMzNDAsMjMzNDEsMjMzNDIsMjMzNDMsMjMzNDQsMjMzNDUsMjMzNDcsMjMzNDksMjMzNTAsMjMzNTIsMjMzNTMsMjMzNTQsMjMzNTUsMjMzNTYsMjMzNTcsMjMzNTgsMjMzNTksMjMzNjEsMjMzNjIsMjMzNjMsMjMzNjQsMjMzNjUsMjMzNjYsMjMzNjcsMjMzNjgsMjMzNjksMjMzNzAsMjMzNzEsMjMzNzIsMjMzNzMsMjMzNzQsMjMzNzUsMjMzNzgsMjMzODIsMjMzOTAsMjMzOTIsMjMzOTMsMjMzOTksMjM0MDAsMjM0MDMsMjM0MDUsMjM0MDYsMjM0MDcsMjM0MTAsMjM0MTIsMjM0MTQsMjM0MTUsMjM0MTYsMjM0MTcsMjM0MTksMjM0MjAsMjM0MjIsMjM0MjMsMjM0MjYsMjM0MzAsMjM0MzQsMjM0MzcsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDIsMjM0NDQsMjM0NDYsMjM0NTUsMjM0NjMsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzAsMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODMsMjM0ODQsMjM0ODgsMjM0ODksMjM0OTEsMjM0OTYsMjM0OTcsMjM0OTgsMjM0OTksMjM1MDEsMjM1MDIsMjM1MDMsMjM1MDUsMjM1MDgsMjM1MDksMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MTUsMjM1MTYsMjM1MjAsMjM1MjIsMjM1MjMsMjM1MjYsMjM1MjcsMjM1MjksMjM1MzAsMjM1MzEsMjM1MzIsMjM1MzMsMjM1MzUsMjM1MzcsMjM1MzgsMjM1MzksMjM1NDAsMjM1NDEsMjM1NDIsMjM1NDMsMjM1NDksMjM1NTAsMjM1NTIsMjM1NTQsMjM1NTUsMjM1NTcsMjM1NTksMjM1NjAsMjM1NjMsMjM1NjQsMjM1NjUsMjM1NjYsMjM1NjgsMjM1NzAsMjM1NzEsMjM1NzUsMjM1NzcsMjM1NzksMjM1ODIsMjM1ODMsMjM1ODQsMjM1ODUsMjM1ODcsMjM1OTAsMjM1OTIsMjM1OTMsMjM1OTQsMjM1OTUsMjM1OTcsMjM1OTgsMjM1OTksMjM2MDAsMjM2MDIsMjM2MDMsMjM2MDUsMjM2MDYsMjM2MDcsMjM2MTksMjM2MjAsMjM2MjIsMjM2MjMsMjM2MjgsMjM2MjksMjM2MzQsMjM2MzUsMjM2MzYsMjM2MzgsMjM2MzksMjM2NDAsMjM2NDIsMjM2NDMsMjM2NDQsMjM2NDUsMjM2NDcsMjM2NTAsMjM2NTIsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NTgsMjM2NTksMjM2NjAsMjM2NjEsMjM2NjQsMjM2NjYsMjM2NjcsMjM2NjgsMjM2NjksMjM2NzAsMjM2NzEsMjM2NzIsMjM2NzUsMjM2NzYsMjM2NzcsMjM2NzgsMjM2ODAsMjM2ODMsMjM2ODQsMjM2ODUsMjM2ODYsMjM2ODcsMjM2ODksMjM2OTAsMjM2OTEsMjM2OTQsMjM2OTUsMjM2OTgsMjM2OTksMjM3MDEsMjM3MDksMjM3MTAsMjM3MTEsMjM3MTIsMjM3MTMsMjM3MTYsMjM3MTcsMjM3MTgsMjM3MTksMjM3MjAsMjM3MjIsMjM3MjYsMjM3MjcsMjM3MjgsMjM3MzAsMjM3MzIsMjM3MzQsMjM3MzcsMjM3MzgsMjM3MzksMjM3NDAsMjM3NDIsMjM3NDQsMjM3NDYsMjM3NDcsMjM3NDksMjM3NTAsMjM3NTEsMjM3NTIsMjM3NTMsMjM3NTQsMjM3NTYsMjM3NTcsMjM3NTgsMjM3NTksMjM3NjAsMjM3NjEsMjM3NjMsMjM3NjQsMjM3NjUsMjM3NjYsMjM3NjcsMjM3NjgsMjM3NzAsMjM3NzEsMjM3NzIsMjM3NzMsMjM3NzQsMjM3NzUsMjM3NzYsMjM3NzgsMjM3NzksMjM3ODMsMjM3ODUsMjM3ODcsMjM3ODgsMjM3OTAsMjM3OTEsMjM3OTMsMjM3OTQsMjM3OTUsMjM3OTYsMjM3OTcsMjM3OTgsMjM3OTksMjM4MDAsMjM4MDEsMjM4MDIsMjM4MDQsMjM4MDUsMjM4MDYsMjM4MDcsMjM4MDgsMjM4MDksMjM4MTIsMjM4MTMsMjM4MTYsMjM4MTcsMjM4MTgsMjM4MTksMjM4MjAsMjM4MjEsMjM4MjMsMjM4MjQsMjM4MjUsMjM4MjYsMjM4MjcsMjM4MjksMjM4MzEsMjM4MzIsMjM4MzMsMjM4MzQsMjM4MzYsMjM4MzcsMjM4MzksMjM4NDAsMjM4NDEsMjM4NDIsMjM4NDMsMjM4NDUsMjM4NDgsMjM4NTAsMjM4NTEsMjM4NTIsMjM4NTUsMjM4NTYsMjM4NTcsMjM4NTgsMjM4NTksMjM4NjEsMjM4NjIsMjM4NjMsMjM4NjQsMjM4NjUsMjM4NjYsMjM4NjcsMjM4NjgsMjM4NzEsMjM4NzIsMjM4NzMsMjM4NzQsMjM4NzUsMjM4NzYsMjM4NzcsMjM4NzgsMjM4ODAsMjM4ODEsMjM4ODUsMjM4ODYsMjM4ODcsMjM4ODgsMjM4ODksMjM4OTAsMjM4OTEsMjM4OTIsMjM4OTMsMjM4OTQsMjM4OTUsMjM4OTcsMjM4OTgsMjM5MDAsMjM5MDIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDcsMjM5MDgsMjM5MDksMjM5MTAsMjM5MTEsMjM5MTIsMjM5MTQsMjM5MTcsMjM5MTgsMjM5MjAsMjM5MjEsMjM5MjIsMjM5MjMsMjM5MjUsMjM5MjYsMjM5MjcsMjM5MjgsMjM5MjksMjM5MzAsMjM5MzEsMjM5MzIsMjM5MzMsMjM5MzQsMjM5MzUsMjM5MzYsMjM5MzcsMjM5MzksMjM5NDAsMjM5NDEsMjM5NDIsMjM5NDMsMjM5NDQsMjM5NDUsMjM5NDYsMjM5NDcsMjM5NDgsMjM5NDksMjM5NTAsMjM5NTEsMjM5NTIsMjM5NTMsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NTgsMjM5NTksMjM5NjAsMjM5NjIsMjM5NjMsMjM5NjQsMjM5NjYsMjM5NjcsMjM5NjgsMjM5NjksMjM5NzAsMjM5NzEsMjM5NzIsMjM5NzMsMjM5NzQsMjM5NzUsMjM5NzYsMjM5NzcsMjM5NzgsMjM5NzksMjM5ODAsMjM5ODEsMjM5ODIsMjM5ODMsMjM5ODQsMjM5ODUsMjM5ODYsMjM5ODcsMjM5ODgsMjM5ODksMjM5OTAsMjM5OTIsMjM5OTMsMjM5OTQsMjM5OTUsMjM5OTYsMjM5OTcsMjM5OTgsMjM5OTksMjQwMDAsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQwMDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMsMjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEsMjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUsMjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQwNzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQwOTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQxMDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcsMjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUsMjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIsMjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQxNjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQxNzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYsMjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcsMjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYsMjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQyNjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQyNjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQyNzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUsMjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIsMjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDksMjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQzNDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcsMjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIsMjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgsMjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQsMjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTksMjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUsMjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAsMjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODksMjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIsMjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEsMjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMsMjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAsMjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIsMjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4NzgsMjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMsMjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODksMjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUsMjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIsMjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAsMjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYsMjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMsMjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUwNDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUwNTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUsMjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEsMjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgsMjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUxMjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUxMzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUxNDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgsMjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQsMjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEsMjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUyMjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyMzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUyNTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAsMjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcsMjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYsMjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUzNTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUzNjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUzNzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQsMjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIsMjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTksMjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUsMjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIsMjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMsMjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMsMjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAsMjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAsMjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcsMjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQsMjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAsMjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3NjcsMjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQsMjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4MzksMjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUsMjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQsMjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAsMjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEsMjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYsMjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMsMjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYwMjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYwMzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYwNDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjksMjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYsMjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQsMjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYxMTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYxMjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYxMzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMsMjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEsMjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEsMjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYyMTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYyMTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYyMjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEsMjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgsMjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYyODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYyOTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYzMDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcsMjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIsMjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgsMjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYzNTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYzNjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYzNzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAsMjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUsMjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTksMjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEsMjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDksMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYsMjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAsMjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAsMjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgsMjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEsMjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIsMjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgsMjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMsMjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEsMjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYsMjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUsMjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMsMjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5MzksMjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgsMjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcsMjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTksMjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYsMjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcwNTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcwNTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcwNjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcsMjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQsMjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEsMjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcxMjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcxMjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIsMjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcsMjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUsMjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcxODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcxOTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcyMDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEsMjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjksMjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYsMjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcyNTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcyNjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcyNzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAsMjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUsMjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIsMjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjczMjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjczMjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjczMzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDksMjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQsMjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAsMjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjczNzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjczODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjczODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQsMjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUsMjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUsMjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAsMjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcsMjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcsMjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1NjksMjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2MzgsMjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQsMjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEsMjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3MzgsMjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEsMjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEsMjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEsMjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgsMjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEsMjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgsMjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5NjgsMjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODksMjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgwMTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgwMjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgwMzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgsMjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcsMjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcsMjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgxMTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgxMjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgxMzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTksMjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQsMjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUsMjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgyMDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgyMTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgyMjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUsMjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAsMjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgyNzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgyODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgyOTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUsMjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMsMjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIsMjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgzNjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgzNjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgzODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcsMjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMsMjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAsMjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEsMjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgsMjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUsMjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1NjksMjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIsMjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2MjksMjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUsMjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQsMjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAsMjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYsMjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIsMjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgsMjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMsMjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEsMjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4MzcsMjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMsMjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgsMjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5MjcsMjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUsMjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAsMjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYsMjg5OTgsMjg5OTksMjkwMDAsMjkwMDEsMjkwMDMsMjkwMDUsMjkwMDcsMjkwMDgsMjkwMDksMjkwMTAsMjkwMTEsMjkwMTIsMjkwMTMsMjkwMTQsMjkwMTUsMjkwMTYsMjkwMTcsMjkwMTgsMjkwMTksMjkwMjEsMjkwMjMsMjkwMjQsMjkwMjUsMjkwMjYsMjkwMjcsMjkwMjksMjkwMzMsMjkwMzQsMjkwMzUsMjkwMzYsMjkwMzcsMjkwMzksMjkwNDAsMjkwNDEsMjkwNDQsMjkwNDUsMjkwNDYsMjkwNDcsMjkwNDksMjkwNTEsMjkwNTIsMjkwNTQsMjkwNTUsMjkwNTYsMjkwNTcsMjkwNTgsMjkwNTksMjkwNjEsMjkwNjIsMjkwNjMsMjkwNjQsMjkwNjUsMjkwNjcsMjkwNjgsMjkwNjksMjkwNzAsMjkwNzIsMjkwNzMsMjkwNzQsMjkwNzUsMjkwNzcsMjkwNzgsMjkwNzksMjkwODIsMjkwODMsMjkwODQsMjkwODUsMjkwODYsMjkwODksMjkwOTAsMjkwOTEsMjkwOTIsMjkwOTMsMjkwOTQsMjkwOTUsMjkwOTcsMjkwOTgsMjkwOTksMjkxMDEsMjkxMDIsMjkxMDMsMjkxMDQsMjkxMDUsMjkxMDYsMjkxMDgsMjkxMTAsMjkxMTEsMjkxMTIsMjkxMTQsMjkxMTUsMjkxMTYsMjkxMTcsMjkxMTgsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjIsMjkxMjQsMjkxMjUsMjkxMjYsMjkxMjcsMjkxMjgsMjkxMjksMjkxMzAsMjkxMzEsMjkxMzIsMjkxMzMsMjkxMzUsMjkxMzYsMjkxMzcsMjkxMzgsMjkxMzksMjkxNDIsMjkxNDMsMjkxNDQsMjkxNDUsMjkxNDYsMjkxNDcsMjkxNDgsMjkxNDksMjkxNTAsMjkxNTEsMjkxNTMsMjkxNTQsMjkxNTUsMjkxNTYsMjkxNTgsMjkxNjAsMjkxNjEsMjkxNjIsMjkxNjMsMjkxNjQsMjkxNjUsMjkxNjcsMjkxNjgsMjkxNjksMjkxNzAsMjkxNzEsMjkxNzIsMjkxNzMsMjkxNzQsMjkxNzUsMjkxNzYsMjkxNzgsMjkxNzksMjkxODAsMjkxODEsMjkxODIsMjkxODMsMjkxODQsMjkxODUsMjkxODYsMjkxODcsMjkxODgsMjkxODksMjkxOTEsMjkxOTIsMjkxOTMsMjkxOTQsMjkxOTUsMjkxOTYsMjkxOTcsMjkxOTgsMjkxOTksMjkyMDAsMjkyMDEsMjkyMDIsMjkyMDMsMjkyMDQsMjkyMDUsMjkyMDYsMjkyMDcsMjkyMDgsMjkyMDksMjkyMTAsMjkyMTEsMjkyMTIsMjkyMTQsMjkyMTUsMjkyMTYsMjkyMTcsMjkyMTgsMjkyMTksMjkyMjAsMjkyMjEsMjkyMjIsMjkyMjMsMjkyMjUsMjkyMjcsMjkyMjksMjkyMzAsMjkyMzEsMjkyMzQsMjkyMzUsMjkyMzYsMjkyNDIsMjkyNDQsMjkyNDYsMjkyNDgsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTIsMjkyNTMsMjkyNTQsMjkyNTcsMjkyNTgsMjkyNTksMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjUsMjkyNjcsMjkyNjgsMjkyNjksMjkyNzEsMjkyNzIsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODQsMjkyODUsMjkyODgsMjkyOTAsMjkyOTEsMjkyOTIsMjkyOTMsMjkyOTYsMjkyOTcsMjkyOTksMjkzMDAsMjkzMDIsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMDksMjkzMTQsMjkzMTUsMjkzMTcsMjkzMTgsMjkzMTksMjkzMjAsMjkzMjEsMjkzMjQsMjkzMjYsMjkzMjgsMjkzMjksMjkzMzEsMjkzMzIsMjkzMzMsMjkzMzQsMjkzMzUsMjkzMzYsMjkzMzcsMjkzMzgsMjkzMzksMjkzNDAsMjkzNDEsMjkzNDIsMjkzNDQsMjkzNDUsMjkzNDYsMjkzNDcsMjkzNDgsMjkzNDksMjkzNTAsMjkzNTEsMjkzNTIsMjkzNTMsMjkzNTQsMjkzNTUsMjkzNTgsMjkzNjEsMjkzNjIsMjkzNjMsMjkzNjUsMjkzNzAsMjkzNzEsMjkzNzIsMjkzNzMsMjkzNzQsMjkzNzUsMjkzNzYsMjkzODEsMjkzODIsMjkzODMsMjkzODUsMjkzODYsMjkzODcsMjkzODgsMjkzOTEsMjkzOTMsMjkzOTUsMjkzOTYsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDIsMjk0MDMsNTg1NjYsNTg1NjcsNTg1NjgsNTg1NjksNTg1NzAsNTg1NzEsNTg1NzIsNTg1NzMsNTg1NzQsNTg1NzUsNTg1NzYsNTg1NzcsNTg1NzgsNTg1NzksNTg1ODAsNTg1ODEsNTg1ODIsNTg1ODMsNTg1ODQsNTg1ODUsNTg1ODYsNTg1ODcsNTg1ODgsNTg1ODksNTg1OTAsNTg1OTEsNTg1OTIsNTg1OTMsNTg1OTQsNTg1OTUsNTg1OTYsNTg1OTcsNTg1OTgsNTg1OTksNTg2MDAsNTg2MDEsNTg2MDIsNTg2MDMsNTg2MDQsNTg2MDUsNTg2MDYsNTg2MDcsNTg2MDgsNTg2MDksNTg2MTAsNTg2MTEsNTg2MTIsNTg2MTMsNTg2MTQsNTg2MTUsNTg2MTYsNTg2MTcsNTg2MTgsNTg2MTksNTg2MjAsNTg2MjEsNTg2MjIsNTg2MjMsNTg2MjQsNTg2MjUsNTg2MjYsNTg2MjcsNTg2MjgsNTg2MjksNTg2MzAsNTg2MzEsNTg2MzIsNTg2MzMsNTg2MzQsNTg2MzUsNTg2MzYsNTg2MzcsNTg2MzgsNTg2MzksNTg2NDAsNTg2NDEsNTg2NDIsNTg2NDMsNTg2NDQsNTg2NDUsNTg2NDYsNTg2NDcsNTg2NDgsNTg2NDksNTg2NTAsNTg2NTEsNTg2NTIsNTg2NTMsNTg2NTQsNTg2NTUsNTg2NTYsNTg2NTcsNTg2NTgsNTg2NTksNTg2NjAsNTg2NjEsMTIyODgsMTIyODksMTIyOTAsMTgzLDcxMyw3MTEsMTY4LDEyMjkxLDEyMjkzLDgyMTIsNjUzNzQsODIxNCw4MjMwLDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMTAsMTIzMTEsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODc1OCw4NzQzLDg3NDQsODcyMSw4NzE5LDg3NDYsODc0NSw4NzEyLDg3NTksODczMCw4ODY5LDg3NDEsODczNiw4OTc4LDg4NTcsODc0Nyw4NzUwLDg4MDEsODc4MCw4Nzc2LDg3NjUsODczMyw4ODAwLDg4MTQsODgxNSw4ODA0LDg4MDUsODczNCw4NzU3LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTI4NCwxNjQsNjU1MDQsNjU1MDUsODI0MCwxNjcsODQ3MCw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsODI1MSw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LDU4NjYyLDU4NjYzLDU4NjY0LDU4NjY1LDU4NjY2LDU4NjY3LDU4NjY4LDU4NjY5LDU4NjcwLDU4NjcxLDU4NjcyLDU4NjczLDU4Njc0LDU4Njc1LDU4Njc2LDU4Njc3LDU4Njc4LDU4Njc5LDU4NjgwLDU4NjgxLDU4NjgyLDU4NjgzLDU4Njg0LDU4Njg1LDU4Njg2LDU4Njg3LDU4Njg4LDU4Njg5LDU4NjkwLDU4NjkxLDU4NjkyLDU4NjkzLDU4Njk0LDU4Njk1LDU4Njk2LDU4Njk3LDU4Njk4LDU4Njk5LDU4NzAwLDU4NzAxLDU4NzAyLDU4NzAzLDU4NzA0LDU4NzA1LDU4NzA2LDU4NzA3LDU4NzA4LDU4NzA5LDU4NzEwLDU4NzExLDU4NzEyLDU4NzEzLDU4NzE0LDU4NzE1LDU4NzE2LDU4NzE3LDU4NzE4LDU4NzE5LDU4NzIwLDU4NzIxLDU4NzIyLDU4NzIzLDU4NzI0LDU4NzI1LDU4NzI2LDU4NzI3LDU4NzI4LDU4NzI5LDU4NzMwLDU4NzMxLDU4NzMyLDU4NzMzLDU4NzM0LDU4NzM1LDU4NzM2LDU4NzM3LDU4NzM4LDU4NzM5LDU4NzQwLDU4NzQxLDU4NzQyLDU4NzQzLDU4NzQ0LDU4NzQ1LDU4NzQ2LDU4NzQ3LDU4NzQ4LDU4NzQ5LDU4NzUwLDU4NzUxLDU4NzUyLDU4NzUzLDU4NzU0LDU4NzU1LDU4NzU2LDU4NzU3LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksNTkyMzgsNTkyMzksNTkyNDAsNTkyNDEsNTkyNDIsNTkyNDMsOTM1Miw5MzUzLDkzNTQsOTM1NSw5MzU2LDkzNTcsOTM1OCw5MzU5LDkzNjAsOTM2MSw5MzYyLDkzNjMsOTM2NCw5MzY1LDkzNjYsOTM2Nyw5MzY4LDkzNjksOTM3MCw5MzcxLDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDkzNDcsOTM0OCw5MzQ5LDkzNTAsOTM1MSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDgzNjQsNTkyNDUsMTI4MzIsMTI4MzMsMTI4MzQsMTI4MzUsMTI4MzYsMTI4MzcsMTI4MzgsMTI4MzksMTI4NDAsMTI4NDEsNTkyNDYsNTkyNDcsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw4NTU0LDg1NTUsNTkyNDgsNTkyNDksNTg3NTgsNTg3NTksNTg3NjAsNTg3NjEsNTg3NjIsNTg3NjMsNTg3NjQsNTg3NjUsNTg3NjYsNTg3NjcsNTg3NjgsNTg3NjksNTg3NzAsNTg3NzEsNTg3NzIsNTg3NzMsNTg3NzQsNTg3NzUsNTg3NzYsNTg3NzcsNTg3NzgsNTg3NzksNTg3ODAsNTg3ODEsNTg3ODIsNTg3ODMsNTg3ODQsNTg3ODUsNTg3ODYsNTg3ODcsNTg3ODgsNTg3ODksNTg3OTAsNTg3OTEsNTg3OTIsNTg3OTMsNTg3OTQsNTg3OTUsNTg3OTYsNTg3OTcsNTg3OTgsNTg3OTksNTg4MDAsNTg4MDEsNTg4MDIsNTg4MDMsNTg4MDQsNTg4MDUsNTg4MDYsNTg4MDcsNTg4MDgsNTg4MDksNTg4MTAsNTg4MTEsNTg4MTIsNTg4MTMsNTg4MTQsNTg4MTUsNTg4MTYsNTg4MTcsNTg4MTgsNTg4MTksNTg4MjAsNTg4MjEsNTg4MjIsNTg4MjMsNTg4MjQsNTg4MjUsNTg4MjYsNTg4MjcsNTg4MjgsNTg4MjksNTg4MzAsNTg4MzEsNTg4MzIsNTg4MzMsNTg4MzQsNTg4MzUsNTg4MzYsNTg4MzcsNTg4MzgsNTg4MzksNTg4NDAsNTg4NDEsNTg4NDIsNTg4NDMsNTg4NDQsNTg4NDUsNTg4NDYsNTg4NDcsNTg4NDgsNTg4NDksNTg4NTAsNTg4NTEsNTg4NTIsMTIyODgsNjUyODEsNjUyODIsNjUyODMsNjU1MDksNjUyODUsNjUyODYsNjUyODcsNjUyODgsNjUyODksNjUyOTAsNjUyOTEsNjUyOTIsNjUyOTMsNjUyOTQsNjUyOTUsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsNjUzMDYsNjUzMDcsNjUzMDgsNjUzMDksNjUzMTAsNjUzMTEsNjUzMTIsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzMzksNjUzNDAsNjUzNDEsNjUzNDIsNjUzNDMsNjUzNDQsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsNjUzNzEsNjUzNzIsNjUzNzMsNjU1MDcsNTg4NTQsNTg4NTUsNTg4NTYsNTg4NTcsNTg4NTgsNTg4NTksNTg4NjAsNTg4NjEsNTg4NjIsNTg4NjMsNTg4NjQsNTg4NjUsNTg4NjYsNTg4NjcsNTg4NjgsNTg4NjksNTg4NzAsNTg4NzEsNTg4NzIsNTg4NzMsNTg4NzQsNTg4NzUsNTg4NzYsNTg4NzcsNTg4NzgsNTg4NzksNTg4ODAsNTg4ODEsNTg4ODIsNTg4ODMsNTg4ODQsNTg4ODUsNTg4ODYsNTg4ODcsNTg4ODgsNTg4ODksNTg4OTAsNTg4OTEsNTg4OTIsNTg4OTMsNTg4OTQsNTg4OTUsNTg4OTYsNTg4OTcsNTg4OTgsNTg4OTksNTg5MDAsNTg5MDEsNTg5MDIsNTg5MDMsNTg5MDQsNTg5MDUsNTg5MDYsNTg5MDcsNTg5MDgsNTg5MDksNTg5MTAsNTg5MTEsNTg5MTIsNTg5MTMsNTg5MTQsNTg5MTUsNTg5MTYsNTg5MTcsNTg5MTgsNTg5MTksNTg5MjAsNTg5MjEsNTg5MjIsNTg5MjMsNTg5MjQsNTg5MjUsNTg5MjYsNTg5MjcsNTg5MjgsNTg5MjksNTg5MzAsNTg5MzEsNTg5MzIsNTg5MzMsNTg5MzQsNTg5MzUsNTg5MzYsNTg5MzcsNTg5MzgsNTg5MzksNTg5NDAsNTg5NDEsNTg5NDIsNTg5NDMsNTg5NDQsNTg5NDUsNTg5NDYsNTg5NDcsNTg5NDgsNTg5NDksMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsNTkyNTAsNTkyNTEsNTkyNTIsNTkyNTMsNTkyNTQsNTkyNTUsNTkyNTYsNTkyNTcsNTkyNTgsNTkyNTksNTkyNjAsNTg5NTAsNTg5NTEsNTg5NTIsNTg5NTMsNTg5NTQsNTg5NTUsNTg5NTYsNTg5NTcsNTg5NTgsNTg5NTksNTg5NjAsNTg5NjEsNTg5NjIsNTg5NjMsNTg5NjQsNTg5NjUsNTg5NjYsNTg5NjcsNTg5NjgsNTg5NjksNTg5NzAsNTg5NzEsNTg5NzIsNTg5NzMsNTg5NzQsNTg5NzUsNTg5NzYsNTg5NzcsNTg5NzgsNTg5NzksNTg5ODAsNTg5ODEsNTg5ODIsNTg5ODMsNTg5ODQsNTg5ODUsNTg5ODYsNTg5ODcsNTg5ODgsNTg5ODksNTg5OTAsNTg5OTEsNTg5OTIsNTg5OTMsNTg5OTQsNTg5OTUsNTg5OTYsNTg5OTcsNTg5OTgsNTg5OTksNTkwMDAsNTkwMDEsNTkwMDIsNTkwMDMsNTkwMDQsNTkwMDUsNTkwMDYsNTkwMDcsNTkwMDgsNTkwMDksNTkwMTAsNTkwMTEsNTkwMTIsNTkwMTMsNTkwMTQsNTkwMTUsNTkwMTYsNTkwMTcsNTkwMTgsNTkwMTksNTkwMjAsNTkwMjEsNTkwMjIsNTkwMjMsNTkwMjQsNTkwMjUsNTkwMjYsNTkwMjcsNTkwMjgsNTkwMjksNTkwMzAsNTkwMzEsNTkwMzIsNTkwMzMsNTkwMzQsNTkwMzUsNTkwMzYsNTkwMzcsNTkwMzgsNTkwMzksNTkwNDAsNTkwNDEsNTkwNDIsNTkwNDMsNTkwNDQsNTkwNDUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsNTkyNjEsNTkyNjIsNTkyNjMsNTkyNjQsNTkyNjUsNTkyNjYsNTkyNjcsNTkyNjgsNTkwNDYsNTkwNDcsNTkwNDgsNTkwNDksNTkwNTAsNTkwNTEsNTkwNTIsNTkwNTMsNTkwNTQsNTkwNTUsNTkwNTYsNTkwNTcsNTkwNTgsNTkwNTksNTkwNjAsNTkwNjEsNTkwNjIsNTkwNjMsNTkwNjQsNTkwNjUsNTkwNjYsNTkwNjcsNTkwNjgsNTkwNjksNTkwNzAsNTkwNzEsNTkwNzIsNTkwNzMsNTkwNzQsNTkwNzUsNTkwNzYsNTkwNzcsNTkwNzgsNTkwNzksNTkwODAsNTkwODEsNTkwODIsNTkwODMsNTkwODQsNTkwODUsNTkwODYsNTkwODcsNTkwODgsNTkwODksNTkwOTAsNTkwOTEsNTkwOTIsNTkwOTMsNTkwOTQsNTkwOTUsNTkwOTYsNTkwOTcsNTkwOTgsNTkwOTksNTkxMDAsNTkxMDEsNTkxMDIsNTkxMDMsNTkxMDQsNTkxMDUsNTkxMDYsNTkxMDcsNTkxMDgsNTkxMDksNTkxMTAsNTkxMTEsNTkxMTIsNTkxMTMsNTkxMTQsNTkxMTUsNTkxMTYsNTkxMTcsNTkxMTgsNTkxMTksNTkxMjAsNTkxMjEsNTkxMjIsNTkxMjMsNTkxMjQsNTkxMjUsNTkxMjYsNTkxMjcsNTkxMjgsNTkxMjksNTkxMzAsNTkxMzEsNTkxMzIsNTkxMzMsNTkxMzQsNTkxMzUsNTkxMzYsNTkxMzcsNTkxMzgsNTkxMzksNTkxNDAsNTkxNDEsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsNTkyNjksNTkyNzAsNTkyNzEsNTkyNzIsNTkyNzMsNTkyNzQsNTkyNzUsNTkyNzYsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksNTkyNzcsNTkyNzgsNTkyNzksNTkyODAsNTkyODEsNTkyODIsNTkyODMsNjUwNzcsNjUwNzgsNjUwODEsNjUwODIsNjUwODcsNjUwODgsNjUwODUsNjUwODYsNjUwODksNjUwOTAsNjUwOTEsNjUwOTIsNTkyODQsNTkyODUsNjUwODMsNjUwODQsNjUwNzksNjUwODAsNjUwNzMsNTkyODYsNjUwNzUsNjUwNzYsNTkyODcsNTkyODgsNTkyODksNTkyOTAsNTkyOTEsNTkyOTIsNTkyOTMsNTkyOTQsNTkyOTUsNTkxNDIsNTkxNDMsNTkxNDQsNTkxNDUsNTkxNDYsNTkxNDcsNTkxNDgsNTkxNDksNTkxNTAsNTkxNTEsNTkxNTIsNTkxNTMsNTkxNTQsNTkxNTUsNTkxNTYsNTkxNTcsNTkxNTgsNTkxNTksNTkxNjAsNTkxNjEsNTkxNjIsNTkxNjMsNTkxNjQsNTkxNjUsNTkxNjYsNTkxNjcsNTkxNjgsNTkxNjksNTkxNzAsNTkxNzEsNTkxNzIsNTkxNzMsNTkxNzQsNTkxNzUsNTkxNzYsNTkxNzcsNTkxNzgsNTkxNzksNTkxODAsNTkxODEsNTkxODIsNTkxODMsNTkxODQsNTkxODUsNTkxODYsNTkxODcsNTkxODgsNTkxODksNTkxOTAsNTkxOTEsNTkxOTIsNTkxOTMsNTkxOTQsNTkxOTUsNTkxOTYsNTkxOTcsNTkxOTgsNTkxOTksNTkyMDAsNTkyMDEsNTkyMDIsNTkyMDMsNTkyMDQsNTkyMDUsNTkyMDYsNTkyMDcsNTkyMDgsNTkyMDksNTkyMTAsNTkyMTEsNTkyMTIsNTkyMTMsNTkyMTQsNTkyMTUsNTkyMTYsNTkyMTcsNTkyMTgsNTkyMTksNTkyMjAsNTkyMjEsNTkyMjIsNTkyMjMsNTkyMjQsNTkyMjUsNTkyMjYsNTkyMjcsNTkyMjgsNTkyMjksNTkyMzAsNTkyMzEsNTkyMzIsNTkyMzMsNTkyMzQsNTkyMzUsNTkyMzYsNTkyMzcsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsNTkyOTYsNTkyOTcsNTkyOTgsNTkyOTksNTkzMDAsNTkzMDEsNTkzMDIsNTkzMDMsNTkzMDQsNTkzMDUsNTkzMDYsNTkzMDcsNTkzMDgsNTkzMDksNTkzMTAsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsNTkzMTEsNTkzMTIsNTkzMTMsNTkzMTQsNTkzMTUsNTkzMTYsNTkzMTcsNTkzMTgsNTkzMTksNTkzMjAsNTkzMjEsNTkzMjIsNTkzMjMsNzE0LDcxNSw3MjksODIxMSw4MjEzLDgyMjksODI0NSw4NDUzLDg0NTcsODU5OCw4NTk5LDg2MDAsODYwMSw4NzI1LDg3MzUsODczOSw4Nzg2LDg4MDYsODgwNyw4ODk1LDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NTgxLDk1ODIsOTU4Myw5NTg0LDk1ODUsOTU4Niw5NTg3LDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjA5LDk2MTAsOTYxMSw5NjEyLDk2MTMsOTYxNCw5NjE1LDk2MTksOTYyMCw5NjIxLDk2NjAsOTY2MSw5Njk4LDk2OTksOTcwMCw5NzAxLDk3MzcsODg1MywxMjMwNiwxMjMxNywxMjMxOCw1OTMyNCw1OTMyNSw1OTMyNiw1OTMyNyw1OTMyOCw1OTMyOSw1OTMzMCw1OTMzMSw1OTMzMiw1OTMzMyw1OTMzNCwyNTcsMjI1LDQ2MiwyMjQsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsMjM0LDU5Myw1OTMzNSwzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMsNTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDksNTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEyNTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEyMjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMwLDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAsOTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYsOTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMsOTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1MjksOTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDksMjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcsMjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1MjgsMjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAsMjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTczNTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTczNTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTczNjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcsNTczNzgsNTczNzksNTczODAsNTczODEsNTczODIsNTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgsNTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIsNTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0MzcsMjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTksMjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEsMjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2MzcsMjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYsNTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEsNTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcsNTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEsNTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYsNTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIsNTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTksMjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYsMjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUsMjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMsMjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEsMjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAsNTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUsNTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEsNTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUsMjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYsMjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQsMjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcsMjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIsMjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgsMjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2MzksNTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQsNTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAsNTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQsNTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTksNTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUsNTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEsMjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcsMjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQsMzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAwMzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAwNDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAwNTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcsNTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMsNTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3NjgsNTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQsNTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMsMzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQsMzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTksMzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAxNzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAsMzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcsMzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYsMzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAyNjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAyNjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIsNTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4MzcsNTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMsNTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcsNTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIsNTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgsNTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAyODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAyOTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAyOTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAsMzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUsMzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUsMzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAzNjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUsMzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEsMzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAsMjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYsMzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAsMzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMsMjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMxNTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0MjgsMzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQsMzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEsMzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAsMzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYsMzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAsMzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUyNTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEsMjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTksMjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMsMzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAyMDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEsMjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYsMjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQsMTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYsMzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEsMzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIsMzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODksMzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAsMjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcsMjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYxMzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzksMjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMsMjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYsMjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYxMjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMsMzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3MjgsMzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3MzksMzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgsMzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMsMzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQsMzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEzNzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUyMjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQsMjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIsMzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUsMjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAzNjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEsMjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcsMzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIsMzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUsMzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEsMzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAsMzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYsMzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTksMjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYsMzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMsMzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAsMzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQsMjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUxNDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzEwMDAsMzEwMDEsMzEwMDIsMzEwMDMsMzEwMDQsMzEwMDUsMzEwMDcsMzEwMDgsMzEwMDksMzEwMTAsMzEwMTEsMzEwMTMsMzEwMTQsMzEwMTUsMzEwMTYsMzEwMTcsMzEwMTgsMzEwMTksMzEwMjAsMzEwMjEsMzEwMjIsMzEwMjMsMzEwMjQsMzEwMjUsMzEwMjYsMzEwMjcsMzEwMjksMzEwMzAsMzEwMzEsMzEwMzIsMzEwMzMsMzEwMzcsMzEwMzksMzEwNDIsMzEwNDMsMzEwNDQsMzEwNDUsMzEwNDcsMzEwNTAsMzEwNTEsMzEwNTIsMzEwNTMsMzEwNTQsMzEwNTUsMzEwNTYsMzEwNTcsMzEwNTgsMzEwNjAsMzEwNjEsMzEwNjQsMzEwNjUsMzEwNzMsMzEwNzUsMzEwNzYsMzEwNzgsMzEwODEsMzEwODIsMzEwODMsMzEwODQsMzEwODYsMzEwODgsMzEwODksMzEwOTAsMzEwOTEsMzEwOTIsMzEwOTMsMzEwOTQsMzEwOTcsMzEwOTksMzExMDAsMzExMDEsMzExMDIsMzExMDMsMzExMDYsMzExMDcsMzExMTAsMzExMTEsMzExMTIsMzExMTMsMzExMTUsMzExMTYsMzExMTcsMzExMTgsMzExMjAsMzExMjEsMzExMjIsMjQ2MDgsMzI4MjksMjUyODUsMjAwMjUsMjEzMzMsMzcxMTIsMjU1MjgsMzI5NjYsMjYwODYsMjc2OTQsMjAyOTQsMjQ4MTQsMjgxMjksMzU4MDYsMjQzNzcsMzQ1MDcsMjQ0MDMsMjUzNzcsMjA4MjYsMzM2MzMsMjY3MjMsMjA5OTIsMjU0NDMsMzY0MjQsMjA0OTgsMjM3MDcsMzEwOTUsMjM1NDgsMjEwNDAsMzEyOTEsMjQ3NjQsMzY5NDcsMzA0MjMsMjQ1MDMsMjQ0NzEsMzAzNDAsMzY0NjAsMjg3ODMsMzAzMzEsMzE1NjEsMzA2MzQsMjA5NzksMzcwMTEsMjI1NjQsMjAzMDIsMjg0MDQsMzY4NDIsMjU5MzIsMzE1MTUsMjkzODAsMjgwNjgsMzI3MzUsMjMyNjUsMjUyNjksMjQyMTMsMjIzMjAsMzM5MjIsMzE1MzIsMjQwOTMsMjQzNTEsMzY4ODIsMzI1MzIsMzkwNzIsMjU0NzQsMjgzNTksMzA4NzIsMjg4NTcsMjA4NTYsMzg3NDcsMjI0NDMsMzAwMDUsMjAyOTEsMzAwMDgsMjQyMTUsMjQ4MDYsMjI4ODAsMjgwOTYsMjc1ODMsMzA4NTcsMjE1MDAsMzg2MTMsMjA5MzksMjA5OTMsMjU0ODEsMjE1MTQsMzgwMzUsMzU4NDMsMzYzMDAsMjkyNDEsMzA4NzksMzQ2NzgsMzY4NDUsMzU4NTMsMjE0NzIsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjcsMzExMjgsMzExMjksMzExMzEsMzExMzIsMzExMzMsMzExMzQsMzExMzUsMzExMzYsMzExMzcsMzExMzgsMzExMzksMzExNDAsMzExNDEsMzExNDIsMzExNDQsMzExNDUsMzExNDYsMzExNDcsMzExNDgsMzExNDksMzExNTAsMzExNTEsMzExNTIsMzExNTMsMzExNTQsMzExNTYsMzExNTcsMzExNTgsMzExNTksMzExNjAsMzExNjQsMzExNjcsMzExNzAsMzExNzIsMzExNzMsMzExNzUsMzExNzYsMzExNzgsMzExODAsMzExODIsMzExODMsMzExODQsMzExODcsMzExODgsMzExOTAsMzExOTEsMzExOTMsMzExOTQsMzExOTUsMzExOTYsMzExOTcsMzExOTgsMzEyMDAsMzEyMDEsMzEyMDIsMzEyMDUsMzEyMDgsMzEyMTAsMzEyMTIsMzEyMTQsMzEyMTcsMzEyMTgsMzEyMTksMzEyMjAsMzEyMjEsMzEyMjIsMzEyMjMsMzEyMjUsMzEyMjYsMzEyMjgsMzEyMzAsMzEyMzEsMzEyMzMsMzEyMzYsMzEyMzcsMzEyMzksMzEyNDAsMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDcsMzEyNDgsMzEyNDksMzEyNTAsMzEyNTEsMzEyNTMsMzEyNTQsMzEyNTYsMzEyNTcsMzEyNTksMzEyNjAsMTk5NjksMzA0NDcsMjE0ODYsMzgwMjUsMzkwMzAsNDA3MTgsMzgxODksMjM0NTAsMzU3NDYsMjAwMDIsMTk5OTYsMjA5MDgsMzM4OTEsMjUwMjYsMjExNjAsMjY2MzUsMjAzNzUsMjQ2ODMsMjA5MjMsMjc5MzQsMjA4MjgsMjUyMzgsMjYwMDcsMzg0OTcsMzU5MTAsMzY4ODcsMzAxNjgsMzcxMTcsMzA1NjMsMjc2MDIsMjkzMjIsMjk0MjAsMzU4MzUsMjI1ODEsMzA1ODUsMzYxNzIsMjY0NjAsMzgyMDgsMzI5MjIsMjQyMzAsMjgxOTMsMjI5MzAsMzE0NzEsMzA3MDEsMzgyMDMsMjc1NzMsMjYwMjksMzI1MjYsMjI1MzQsMjA4MTcsMzg0MzEsMjM1NDUsMjI2OTcsMjE1NDQsMzY0NjYsMjU5NTgsMzkwMzksMjIyNDQsMzgwNDUsMzA0NjIsMzY5MjksMjU0NzksMjE3MDIsMjI4MTAsMjI4NDIsMjI0MjcsMzY1MzAsMjY0MjEsMzYzNDYsMzMzMzMsMjEwNTcsMjQ4MTYsMjI1NDksMzQ1NTgsMjM3ODQsNDA1MTcsMjA0MjAsMzkwNjksMzU3NjksMjMwNzcsMjQ2OTQsMjEzODAsMjUyMTIsMzY5NDMsMzcxMjIsMzkyOTUsMjQ2ODEsMzI3ODAsMjA3OTksMzI4MTksMjM1NzIsMzkyODUsMjc5NTMsMjAxMDgsMzEyNjEsMzEyNjMsMzEyNjUsMzEyNjYsMzEyNjgsMzEyNjksMzEyNzAsMzEyNzEsMzEyNzIsMzEyNzMsMzEyNzQsMzEyNzUsMzEyNzYsMzEyNzcsMzEyNzgsMzEyNzksMzEyODAsMzEyODEsMzEyODIsMzEyODQsMzEyODUsMzEyODYsMzEyODgsMzEyOTAsMzEyOTQsMzEyOTYsMzEyOTcsMzEyOTgsMzEyOTksMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDUsMzEzMDYsMzEzMDcsMzEzMDgsMzEzMDksMzEzMTAsMzEzMTEsMzEzMTIsMzEzMTQsMzEzMTUsMzEzMTYsMzEzMTcsMzEzMTgsMzEzMjAsMzEzMjEsMzEzMjIsMzEzMjMsMzEzMjQsMzEzMjUsMzEzMjYsMzEzMjcsMzEzMjgsMzEzMjksMzEzMzAsMzEzMzEsMzEzMzIsMzEzMzMsMzEzMzQsMzEzMzUsMzEzMzYsMzEzMzcsMzEzMzgsMzEzMzksMzEzNDAsMzEzNDEsMzEzNDIsMzEzNDMsMzEzNDUsMzEzNDYsMzEzNDcsMzEzNDksMzEzNTUsMzEzNTYsMzEzNTcsMzEzNTgsMzEzNjIsMzEzNjUsMzEzNjcsMzEzNjksMzEzNzAsMzEzNzEsMzEzNzIsMzEzNzQsMzEzNzUsMzEzNzYsMzEzNzksMzEzODAsMzEzODUsMzEzODYsMzEzODcsMzEzOTAsMzEzOTMsMzEzOTQsMzYxNDQsMjE0NTcsMzI2MDIsMzE1NjcsMjAyNDAsMjAwNDcsMzg0MDAsMjc4NjEsMjk2NDgsMzQyODEsMjQwNzAsMzAwNTgsMzI3NjMsMjcxNDYsMzA3MTgsMzgwMzQsMzIzMjEsMjA5NjEsMjg5MDIsMjE0NTMsMzY4MjAsMzM1MzksMzYxMzcsMjkzNTksMzkyNzcsMjc4NjcsMjIzNDYsMzM0NTksMjYwNDEsMzI5MzgsMjUxNTEsMzg0NTAsMjI5NTIsMjAyMjMsMzU3NzUsMzI0NDIsMjU5MTgsMzM3NzgsMzg3NTAsMjE4NTcsMzkxMzQsMzI5MzMsMjEyOTAsMzU4MzcsMjE1MzYsMzI5NTQsMjQyMjMsMjc4MzIsMzYxNTMsMzM0NTIsMzcyMTAsMjE1NDUsMjc2NzUsMjA5OTgsMzI0MzksMjIzNjcsMjg5NTQsMjc3NzQsMzE4ODEsMjI4NTksMjAyMjEsMjQ1NzUsMjQ4NjgsMzE5MTQsMjAwMTYsMjM1NTMsMjY1MzksMzQ1NjIsMjM3OTIsMzgxNTUsMzkxMTgsMzAxMjcsMjg5MjUsMzY4OTgsMjA5MTEsMzI1NDEsMzU3NzMsMjI4NTcsMjA5NjQsMjAzMTUsMjE1NDIsMjI4MjcsMjU5NzUsMzI5MzIsMjM0MTMsMjUyMDYsMjUyODIsMzY3NTIsMjQxMzMsMjc2NzksMzE1MjYsMjAyMzksMjA0NDAsMjYzODEsMzEzOTUsMzEzOTYsMzEzOTksMzE0MDEsMzE0MDIsMzE0MDMsMzE0MDYsMzE0MDcsMzE0MDgsMzE0MDksMzE0MTAsMzE0MTIsMzE0MTMsMzE0MTQsMzE0MTUsMzE0MTYsMzE0MTcsMzE0MTgsMzE0MTksMzE0MjAsMzE0MjEsMzE0MjIsMzE0MjQsMzE0MjUsMzE0MjYsMzE0MjcsMzE0MjgsMzE0MjksMzE0MzAsMzE0MzEsMzE0MzIsMzE0MzMsMzE0MzQsMzE0MzYsMzE0MzcsMzE0MzgsMzE0MzksMzE0NDAsMzE0NDEsMzE0NDIsMzE0NDMsMzE0NDQsMzE0NDUsMzE0NDcsMzE0NDgsMzE0NTAsMzE0NTEsMzE0NTIsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjAsMzE0NjMsMzE0NjQsMzE0NjUsMzE0NjYsMzE0NjcsMzE0NjgsMzE0NzAsMzE0NzIsMzE0NzMsMzE0NzQsMzE0NzUsMzE0NzYsMzE0NzcsMzE0NzgsMzE0NzksMzE0ODAsMzE0ODMsMzE0ODQsMzE0ODYsMzE0ODgsMzE0ODksMzE0OTAsMzE0OTMsMzE0OTUsMzE0OTcsMzE1MDAsMzE1MDEsMzE1MDIsMzE1MDQsMzE1MDYsMzE1MDcsMzE1MTAsMzE1MTEsMzE1MTIsMzE1MTQsMzE1MTYsMzE1MTcsMzE1MTksMzE1MjEsMzE1MjIsMzE1MjMsMzE1MjcsMzE1MjksMzE1MzMsMjgwMTQsMjgwNzQsMzExMTksMzQ5OTMsMjQzNDMsMjk5OTUsMjUyNDIsMzY3NDEsMjA0NjMsMzczNDAsMjYwMjMsMzMwNzEsMzMxMDUsMjQyMjAsMzMxMDQsMzYyMTIsMjExMDMsMzUyMDYsMzYxNzEsMjI3OTcsMjA2MTMsMjAxODQsMzg0MjgsMjkyMzgsMzMxNDUsMzYxMjcsMjM1MDAsMzU3NDcsMzg0NjgsMjI5MTksMzI1MzgsMjE2NDgsMjIxMzQsMjIwMzAsMzU4MTMsMjU5MTMsMjcwMTAsMzgwNDEsMzA0MjIsMjgyOTcsMjQxNzgsMjk5NzYsMjY0MzgsMjY1NzcsMzE0ODcsMzI5MjUsMzYyMTQsMjQ4NjMsMzExNzQsMjU5NTQsMzYxOTUsMjA4NzIsMjEwMTgsMzgwNTAsMzI1NjgsMzI5MjMsMzI0MzQsMjM3MDMsMjgyMDcsMjY0NjQsMzE3MDUsMzAzNDcsMzk2NDAsMzMxNjcsMzI2NjAsMzE5NTcsMjU2MzAsMzgyMjQsMzEyOTUsMjE1NzgsMjE3MzMsMjc0NjgsMjU2MDEsMjUwOTYsNDA1MDksMzMwMTEsMzAxMDUsMjExMDYsMzg3NjEsMzM4ODMsMjY2ODQsMzQ1MzIsMzg0MDEsMzg1NDgsMzgxMjQsMjAwMTAsMjE1MDgsMzI0NzMsMjY2ODEsMzYzMTksMzI3ODksMjYzNTYsMjQyMTgsMzI2OTcsMzE1MzUsMzE1MzYsMzE1MzgsMzE1NDAsMzE1NDEsMzE1NDIsMzE1NDMsMzE1NDUsMzE1NDcsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTQsMzE1NTUsMzE1NTYsMzE1NTgsMzE1NjAsMzE1NjIsMzE1NjUsMzE1NjYsMzE1NzEsMzE1NzMsMzE1NzUsMzE1NzcsMzE1ODAsMzE1ODIsMzE1ODMsMzE1ODUsMzE1ODcsMzE1ODgsMzE1ODksMzE1OTAsMzE1OTEsMzE1OTIsMzE1OTMsMzE1OTQsMzE1OTUsMzE1OTYsMzE1OTcsMzE1OTksMzE2MDAsMzE2MDMsMzE2MDQsMzE2MDYsMzE2MDgsMzE2MTAsMzE2MTIsMzE2MTMsMzE2MTUsMzE2MTcsMzE2MTgsMzE2MTksMzE2MjAsMzE2MjIsMzE2MjMsMzE2MjQsMzE2MjUsMzE2MjYsMzE2MjcsMzE2MjgsMzE2MzAsMzE2MzEsMzE2MzMsMzE2MzQsMzE2MzUsMzE2MzgsMzE2NDAsMzE2NDEsMzE2NDIsMzE2NDMsMzE2NDYsMzE2NDcsMzE2NDgsMzE2NTEsMzE2NTIsMzE2NTMsMzE2NjIsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjcsMzE2NjksMzE2NzAsMzE2NzEsMzE2NzMsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2NzgsMzE2NzksMzE2ODAsMzE2ODIsMzE2ODMsMzE2ODQsMjI0NjYsMzI4MzEsMjY3NzUsMjQwMzcsMjU5MTUsMjExNTEsMjQ2ODUsNDA4NTgsMjAzNzksMzY1MjQsMjA4NDQsMjM0NjcsMjQzMzksMjQwNDEsMjc3NDIsMjUzMjksMzYxMjksMjA4NDksMzgwNTcsMjEyNDYsMjc4MDcsMzM1MDMsMjkzOTksMjI0MzQsMjY1MDAsMzYxNDEsMjI4MTUsMzY3NjQsMzM3MzUsMjE2NTMsMzE2MjksMjAyNzIsMjc4MzcsMjMzOTYsMjI5OTMsNDA3MjMsMjE0NzYsMzQ1MDYsMzk1OTIsMzU4OTUsMzI5MjksMjU5MjUsMzkwMzgsMjIyNjYsMzg1OTksMjEwMzgsMjk5MTYsMjEwNzIsMjM1MjEsMjUzNDYsMzUwNzQsMjAwNTQsMjUyOTYsMjQ2MTgsMjY4NzQsMjA4NTEsMjM0NDgsMjA4OTYsMzUyNjYsMzE2NDksMzkzMDIsMzI1OTIsMjQ4MTUsMjg3NDgsMzYxNDMsMjA4MDksMjQxOTEsMzY4OTEsMjk4MDgsMzUyNjgsMjIzMTcsMzA3ODksMjQ0MDIsNDA4NjMsMzgzOTQsMzY3MTIsMzk3NDAsMzU4MDksMzAzMjgsMjY2OTAsMjY1ODgsMzYzMzAsMzYxNDksMjEwNTMsMzY3NDYsMjgzNzgsMjY4MjksMzgxNDksMzcxMDEsMjIyNjksMjY1MjQsMzUwNjUsMzY4MDcsMjE3MDQsMzE2ODUsMzE2ODgsMzE2ODksMzE2OTAsMzE2OTEsMzE2OTMsMzE2OTQsMzE2OTUsMzE2OTYsMzE2OTgsMzE3MDAsMzE3MDEsMzE3MDIsMzE3MDMsMzE3MDQsMzE3MDcsMzE3MDgsMzE3MTAsMzE3MTEsMzE3MTIsMzE3MTQsMzE3MTUsMzE3MTYsMzE3MTksMzE3MjAsMzE3MjEsMzE3MjMsMzE3MjQsMzE3MjUsMzE3MjcsMzE3MjgsMzE3MzAsMzE3MzEsMzE3MzIsMzE3MzMsMzE3MzQsMzE3MzYsMzE3MzcsMzE3MzgsMzE3MzksMzE3NDEsMzE3NDMsMzE3NDQsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NDksMzE3NTAsMzE3NTIsMzE3NTMsMzE3NTQsMzE3NTcsMzE3NTgsMzE3NjAsMzE3NjEsMzE3NjIsMzE3NjMsMzE3NjQsMzE3NjUsMzE3NjcsMzE3NjgsMzE3NjksMzE3NzAsMzE3NzEsMzE3NzIsMzE3NzMsMzE3NzQsMzE3NzYsMzE3NzcsMzE3NzgsMzE3NzksMzE3ODAsMzE3ODEsMzE3ODQsMzE3ODUsMzE3ODcsMzE3ODgsMzE3ODksMzE3OTAsMzE3OTEsMzE3OTIsMzE3OTMsMzE3OTQsMzE3OTUsMzE3OTYsMzE3OTcsMzE3OTgsMzE3OTksMzE4MDEsMzE4MDIsMzE4MDMsMzE4MDQsMzE4MDUsMzE4MDYsMzE4MTAsMzk2MDgsMjM0MDEsMjgwMjMsMjc2ODYsMjAxMzMsMjM0NzUsMzk1NTksMzcyMTksMjUwMDAsMzcwMzksMzg4ODksMjE1NDcsMjgwODUsMjM1MDYsMjA5ODksMjE4OTgsMzI1OTcsMzI3NTIsMjU3ODgsMjU0MjEsMjYwOTcsMjUwMjIsMjQ3MTcsMjg5MzgsMjc3MzUsMjc3MjEsMjI4MzEsMjY0NzcsMzMzMjIsMjI3NDEsMjIxNTgsMzU5NDYsMjc2MjcsMzcwODUsMjI5MDksMzI3OTEsMjE0OTUsMjgwMDksMjE2MjEsMjE5MTcsMzM2NTUsMzM3NDMsMjY2ODAsMzExNjYsMjE2NDQsMjAzMDksMjE1MTIsMzA0MTgsMzU5NzcsMzg0MDIsMjc4MjcsMjgwODgsMzYyMDMsMzUwODgsNDA1NDgsMzYxNTQsMjIwNzksNDA2NTcsMzAxNjUsMjQ0NTYsMjk0MDgsMjQ2ODAsMjE3NTYsMjAxMzYsMjcxNzgsMzQ5MTMsMjQ2NTgsMzY3MjAsMjE3MDAsMjg4ODgsMzQ0MjUsNDA1MTEsMjc5NDYsMjM0MzksMjQzNDQsMzI0MTgsMjE4OTcsMjAzOTksMjk0OTIsMjE1NjQsMjE0MDIsMjA1MDUsMjE1MTgsMjE2MjgsMjAwNDYsMjQ1NzMsMjk3ODYsMjI3NzQsMzM4OTksMzI5OTMsMzQ2NzYsMjkzOTIsMzE5NDYsMjgyNDYsMzE4MTEsMzE4MTIsMzE4MTMsMzE4MTQsMzE4MTUsMzE4MTYsMzE4MTcsMzE4MTgsMzE4MTksMzE4MjAsMzE4MjIsMzE4MjMsMzE4MjQsMzE4MjUsMzE4MjYsMzE4MjcsMzE4MjgsMzE4MjksMzE4MzAsMzE4MzEsMzE4MzIsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4MzksMzE4NDAsMzE4NDEsMzE4NDIsMzE4NDMsMzE4NDQsMzE4NDUsMzE4NDYsMzE4NDcsMzE4NDgsMzE4NDksMzE4NTAsMzE4NTEsMzE4NTIsMzE4NTMsMzE4NTQsMzE4NTUsMzE4NTYsMzE4NTcsMzE4NTgsMzE4NjEsMzE4NjIsMzE4NjMsMzE4NjQsMzE4NjUsMzE4NjYsMzE4NzAsMzE4NzEsMzE4NzIsMzE4NzMsMzE4NzQsMzE4NzUsMzE4NzYsMzE4NzcsMzE4NzgsMzE4NzksMzE4ODAsMzE4ODIsMzE4ODMsMzE4ODQsMzE4ODUsMzE4ODYsMzE4ODcsMzE4ODgsMzE4OTEsMzE4OTIsMzE4OTQsMzE4OTcsMzE4OTgsMzE4OTksMzE5MDQsMzE5MDUsMzE5MDcsMzE5MTAsMzE5MTEsMzE5MTIsMzE5MTMsMzE5MTUsMzE5MTYsMzE5MTcsMzE5MTksMzE5MjAsMzE5MjQsMzE5MjUsMzE5MjYsMzE5MjcsMzE5MjgsMzE5MzAsMzE5MzEsMjQzNTksMzQzODIsMjE4MDQsMjUyNTIsMjAxMTQsMjc4MTgsMjUxNDMsMzM0NTcsMjE3MTksMjEzMjYsMjk1MDIsMjgzNjksMzAwMTEsMjEwMTAsMjEyNzAsMzU4MDUsMjcwODgsMjQ0NTgsMjQ1NzYsMjgxNDIsMjIzNTEsMjc0MjYsMjk2MTUsMjY3MDcsMzY4MjQsMzI1MzEsMjU0NDIsMjQ3MzksMjE3OTYsMzAxODYsMzU5MzgsMjg5NDksMjgwNjcsMjM0NjIsMjQxODcsMzM2MTgsMjQ5MDgsNDA2NDQsMzA5NzAsMzQ2NDcsMzE3ODMsMzAzNDMsMjA5NzYsMjQ4MjIsMjkwMDQsMjYxNzksMjQxNDAsMjQ2NTMsMzU4NTQsMjg3ODQsMjUzODEsMzY3NDUsMjQ1MDksMjQ2NzQsMzQ1MTYsMjIyMzgsMjc1ODUsMjQ3MjQsMjQ5MzUsMjEzMjEsMjQ4MDAsMjYyMTQsMzYxNTksMzEyMjksMjAyNTAsMjg5MDUsMjc3MTksMzU3NjMsMzU4MjYsMzI0NzIsMzM2MzYsMjYxMjcsMjMxMzAsMzk3NDYsMjc5ODUsMjgxNTEsMzU5MDUsMjc5NjMsMjAyNDksMjg3NzksMzM3MTksMjUxMTAsMjQ3ODUsMzg2NjksMzYxMzUsMzEwOTYsMjA5ODcsMjIzMzQsMjI1MjIsMjY0MjYsMzAwNzIsMzEyOTMsMzEyMTUsMzE2MzcsMzE5MzUsMzE5MzYsMzE5MzgsMzE5MzksMzE5NDAsMzE5NDIsMzE5NDUsMzE5NDcsMzE5NTAsMzE5NTEsMzE5NTIsMzE5NTMsMzE5NTQsMzE5NTUsMzE5NTYsMzE5NjAsMzE5NjIsMzE5NjMsMzE5NjUsMzE5NjYsMzE5NjksMzE5NzAsMzE5NzEsMzE5NzIsMzE5NzMsMzE5NzQsMzE5NzUsMzE5NzcsMzE5NzgsMzE5NzksMzE5ODAsMzE5ODEsMzE5ODIsMzE5ODQsMzE5ODUsMzE5ODYsMzE5ODcsMzE5ODgsMzE5ODksMzE5OTAsMzE5OTEsMzE5OTMsMzE5OTQsMzE5OTYsMzE5OTcsMzE5OTgsMzE5OTksMzIwMDAsMzIwMDEsMzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIwMjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIwMzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEsMzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjksMzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODksMzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMwMzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMzOTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYsMzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEsMzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYsMzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUzMTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUyNjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcsMzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIsMzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgsMzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIwOTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIxMDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIxMDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQsMzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUsMzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIxNTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgxNzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIsMzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQsMjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDksMzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUyOTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEsMzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAsMzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgsMjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIxNjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIxNzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIxODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIsMzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgsMzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIyMjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIyMzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIyMzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAsMzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAsNDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMsMjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAwMzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYwODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAsMjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAsMjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0NzcsMjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUyNzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIyNTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgsMzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMsMzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzksMzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIyOTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIzMDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIzMDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUsMzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEsMzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcsMzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQzMjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEsMzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMsMzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEsMjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcyMzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYzMjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEsMzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIsMzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMsMzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIzNzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIzNzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIzODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgsMzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMsMzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDksMzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYsMjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMsMjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIsMzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQyNjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjkyODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQsMzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQsMjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3MjksMjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEzODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQsMzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAsMzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcsMzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIsMzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAsMzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3MjksMzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgsMzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgsMjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUsMzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAyNzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkwNDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcsMzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQsMzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQsMzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4MzksMzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgsMzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcsMzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYsMzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgsMzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUsMzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQsMzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAsNDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQsMjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMsMzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5NjksMzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5NzgsMzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMwMjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMwMzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMwNDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcsMzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYsMzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQsMzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAwNDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkwMjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgsMzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEsMzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4NjgsMjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzExODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAsMzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcsMzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEsMzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMxMzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMxNDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMsMzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODksMzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgsMzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMyMjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMyMzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEsMjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcsMjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUsMjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIyMTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEsMjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0NjcsMjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMsMzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMyNDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMyNDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMyNTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcsMzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODksMzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTksMzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMzNDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMzNDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMzNTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYsMzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEsMzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUsMjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYyNzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYsMjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDksMzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYsMzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTksMzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAsMzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1MjgsMzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUsMzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQsMzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAxNzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzksMjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1MjksMzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEsMjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUxMTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgsMzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIsMjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2NjgsMzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIsMzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2NzksMzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcsMzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3NjgsMzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUsMjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEsMzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQxMDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMsMzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgsMjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3NzcsMzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcxOTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIsMzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEsMzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMsMzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAsMzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYsMzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcsMzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIsMjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYsMjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0NjksMjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgzNDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQsMjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIsMzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5NzcsMjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMsMzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIsMzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEsMzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQwMTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQwMjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQwMzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUsMjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1NzgsMjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIsMjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEwMjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1NjksMjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAsMzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYsMjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQwNTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIsMzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgsMzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYsMzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQxMTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQxMTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMsMzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTksMzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIzMDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgyODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUzNDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAsMjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMsMjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEsMjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgxMTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEsMjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYsMjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQsMzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQyMDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQyMDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQyMTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUsMzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIsMzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQyNzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQyODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQyODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjksMjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUsMzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYsMzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQwNTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcsMzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2MzksMzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIsMjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQyOTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQzMDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMsMzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjksMzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUsMzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQzNTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQzNTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQzNjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODksMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUsMzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMsMzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcyMTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAxOTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzksMjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgsMzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYsMzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYzNjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4MjUsMjgxNTUsMjI2MzUsMzAwMDAsMjk5ODAsMjQ2ODQsMzMzMDAsMzMwOTQsMjUzNjEsMjY0NjUsMzY4MzQsMzA1MjIsMzYzMzksMzYxNDgsMzgwODEsMjQwODYsMjEzODEsMjE1NDgsMjg4NjcsMzQ0MTMsMzQ0MTUsMzQ0MTYsMzQ0MTgsMzQ0MTksMzQ0MjAsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjQsMzQ0MzUsMzQ0MzYsMzQ0MzcsMzQ0MzgsMzQ0MzksMzQ0NDAsMzQ0NDEsMzQ0NDYsMzQ0NDcsMzQ0NDgsMzQ0NDksMzQ0NTAsMzQ0NTIsMzQ0NTQsMzQ0NTUsMzQ0NTYsMzQ0NTcsMzQ0NTgsMzQ0NTksMzQ0NjIsMzQ0NjMsMzQ0NjQsMzQ0NjUsMzQ0NjYsMzQ0NjksMzQ0NzAsMzQ0NzUsMzQ0NzcsMzQ0NzgsMzQ0ODIsMzQ0ODMsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTEsMzQ0OTIsMzQ0OTMsMzQ0OTQsMzQ0OTUsMzQ0OTcsMzQ0OTgsMzQ0OTksMzQ1MDEsMzQ1MDQsMzQ1MDgsMzQ1MDksMzQ1MTQsMzQ1MTUsMzQ1MTcsMzQ1MTgsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjUsMzQ1MjgsMzQ1MjksMzQ1MzAsMzQ1MzEsMzQ1MzMsMzQ1MzQsMzQ1MzUsMzQ1MzYsMzQ1MzgsMzQ1MzksMzQ1NDAsMzQ1NDMsMzQ1NDksMzQ1NTAsMzQ1NTEsMzQ1NTQsMzQ1NTUsMzQ1NTYsMzQ1NTcsMzQ1NTksMzQ1NjEsMzQ1NjQsMzQ1NjUsMzQ1NjYsMzQ1NzEsMzQ1NzIsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzcsMzQ1ODAsMzQ1ODIsMjc3MTIsMjQzMTEsMjA1NzIsMjAxNDEsMjQyMzcsMjU0MDIsMzMzNTEsMzY4OTAsMjY3MDQsMzcyMzAsMzA2NDMsMjE1MTYsMzgxMDgsMjQ0MjAsMzE0NjEsMjY3NDIsMjU0MTMsMzE1NzAsMzI0NzksMzAxNzEsMjA1OTksMjUyMzcsMjI4MzYsMzY4NzksMjA5ODQsMzExNzEsMzEzNjEsMjIyNzAsMjQ0NjYsMzY4ODQsMjgwMzQsMjM2NDgsMjIzMDMsMjE1MjAsMjA4MjAsMjgyMzcsMjIyNDIsMjU1MTIsMzkwNTksMzMxNTEsMzQ1ODEsMzUxMTQsMzY4NjQsMjE1MzQsMjM2NjMsMzMyMTYsMjUzMDIsMjUxNzYsMzMwNzMsNDA1MDEsMzg0NjQsMzk1MzQsMzk1NDgsMjY5MjUsMjI5NDksMjUyOTksMjE4MjIsMjUzNjYsMjE3MDMsMzQ1MjEsMjc5NjQsMjMwNDMsMjk5MjYsMzQ5NzIsMjc0OTgsMjI4MDYsMzU5MTYsMjQzNjcsMjgyODYsMjk2MDksMzkwMzcsMjAwMjQsMjg5MTksMjM0MzYsMzA4NzEsMjU0MDUsMjYyMDIsMzAzNTgsMjQ3NzksMjM0NTEsMjMxMTMsMTk5NzUsMzMxMDksMjc3NTQsMjk1NzksMjAxMjksMjY1MDUsMzI1OTMsMjQ0NDgsMjYxMDYsMjYzOTUsMjQ1MzYsMjI5MTYsMjMwNDEsMzQ1ODUsMzQ1ODcsMzQ1ODksMzQ1OTEsMzQ1OTIsMzQ1OTYsMzQ1OTgsMzQ1OTksMzQ2MDAsMzQ2MDIsMzQ2MDMsMzQ2MDQsMzQ2MDUsMzQ2MDcsMzQ2MDgsMzQ2MTAsMzQ2MTEsMzQ2MTMsMzQ2MTQsMzQ2MTYsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjQsMzQ2MjUsMzQ2MjYsMzQ2MjcsMzQ2MjgsMzQ2MjksMzQ2MzAsMzQ2MzQsMzQ2MzUsMzQ2MzcsMzQ2MzksMzQ2NDAsMzQ2NDEsMzQ2NDIsMzQ2NDQsMzQ2NDUsMzQ2NDYsMzQ2NDgsMzQ2NTAsMzQ2NTEsMzQ2NTIsMzQ2NTMsMzQ2NTQsMzQ2NTUsMzQ2NTcsMzQ2NTgsMzQ2NjIsMzQ2NjMsMzQ2NjQsMzQ2NjUsMzQ2NjYsMzQ2NjcsMzQ2NjgsMzQ2NjksMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2NzUsMzQ2NzcsMzQ2NzksMzQ2ODAsMzQ2ODEsMzQ2ODIsMzQ2ODcsMzQ2ODgsMzQ2ODksMzQ2OTIsMzQ2OTQsMzQ2OTUsMzQ2OTcsMzQ2OTgsMzQ3MDAsMzQ3MDIsMzQ3MDMsMzQ3MDQsMzQ3MDUsMzQ3MDYsMzQ3MDgsMzQ3MDksMzQ3MTAsMzQ3MTIsMzQ3MTMsMzQ3MTQsMzQ3MTUsMzQ3MTYsMzQ3MTcsMzQ3MTgsMzQ3MjAsMzQ3MjEsMzQ3MjIsMzQ3MjMsMzQ3MjQsMjQwMTMsMjQ0OTQsMjEzNjEsMzg4ODYsMzY4MjksMjY2OTMsMjIyNjAsMjE4MDcsMjQ3OTksMjAwMjYsMjg0OTMsMzI1MDAsMzM0NzksMzM4MDYsMjI5OTYsMjAyNTUsMjAyNjYsMjM2MTQsMzI0MjgsMjY0MTAsMzQwNzQsMjE2MTksMzAwMzEsMzI5NjMsMjE4OTAsMzk3NTksMjAzMDEsMjgyMDUsMzU4NTksMjM1NjEsMjQ5NDQsMjEzNTUsMzAyMzksMjgyMDEsMzQ0NDIsMjU5OTEsMzgzOTUsMzI0NDEsMjE1NjMsMzEyODMsMzIwMTAsMzgzODIsMjE5ODUsMzI3MDUsMjk5MzQsMjUzNzMsMzQ1ODMsMjgwNjUsMzEzODksMjUxMDUsMjYwMTcsMjEzNTEsMjU1NjksMjc3NzksMjQwNDMsMjE1OTYsMzgwNTYsMjAwNDQsMjc3NDUsMzU4MjAsMjM2MjcsMjYwODAsMzM0MzYsMjY3OTEsMjE1NjYsMjE1NTYsMjc1OTUsMjc0OTQsMjAxMTYsMjU0MTAsMjEzMjAsMzMzMTAsMjAyMzcsMjAzOTgsMjIzNjYsMjUwOTgsMzg2NTQsMjYyMTIsMjkyODksMjEyNDcsMjExNTMsMjQ3MzUsMzU4MjMsMjYxMzIsMjkwODEsMjY1MTIsMzUxOTksMzA4MDIsMzA3MTcsMjYyMjQsMjIwNzUsMjE1NjAsMzgxNzcsMjkzMDYsMzQ3MjUsMzQ3MjYsMzQ3MjcsMzQ3MjksMzQ3MzAsMzQ3MzQsMzQ3MzYsMzQ3MzcsMzQ3MzgsMzQ3NDAsMzQ3NDIsMzQ3NDMsMzQ3NDQsMzQ3NDUsMzQ3NDcsMzQ3NDgsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NTQsMzQ3NTUsMzQ3NTYsMzQ3NTcsMzQ3NTksMzQ3NjAsMzQ3NjEsMzQ3NjQsMzQ3NjUsMzQ3NjYsMzQ3NjcsMzQ3NjgsMzQ3NzIsMzQ3NzMsMzQ3NzQsMzQ3NzUsMzQ3NzYsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODEsMzQ3ODIsMzQ3ODMsMzQ3ODUsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTAsMzQ3OTEsMzQ3OTIsMzQ3OTMsMzQ3OTUsMzQ3OTYsMzQ3OTcsMzQ3OTksMzQ4MDAsMzQ4MDEsMzQ4MDIsMzQ4MDMsMzQ4MDQsMzQ4MDUsMzQ4MDYsMzQ4MDcsMzQ4MDgsMzQ4MTAsMzQ4MTEsMzQ4MTIsMzQ4MTMsMzQ4MTUsMzQ4MTYsMzQ4MTcsMzQ4MTgsMzQ4MjAsMzQ4MjEsMzQ4MjIsMzQ4MjMsMzQ4MjQsMzQ4MjUsMzQ4MjcsMzQ4MjgsMzQ4MjksMzQ4MzAsMzQ4MzEsMzQ4MzIsMzQ4MzMsMzQ4MzQsMzQ4MzYsMzQ4MzksMzQ4NDAsMzQ4NDEsMzQ4NDIsMzQ4NDQsMzQ4NDUsMzQ4NDYsMzQ4NDcsMzQ4NDgsMzQ4NTEsMzEyMzIsMjQ2ODcsMjQwNzYsMjQ3MTMsMzMxODEsMjI4MDUsMjQ3OTYsMjkwNjAsMjg5MTEsMjgzMzAsMjc3MjgsMjkzMTIsMjcyNjgsMzQ5ODksMjQxMDksMjAwNjQsMjMyMTksMjE5MTYsMzgxMTUsMjc5MjcsMzE5OTUsMzg1NTMsMjUxMDMsMzI0NTQsMzA2MDYsMzQ0MzAsMjEyODMsMzg2ODYsMzY3NTgsMjYyNDcsMjM3NzcsMjAzODQsMjk0MjEsMTk5NzksMjE0MTQsMjI3OTksMjE1MjMsMjU0NzIsMzgxODQsMjA4MDgsMjAxODUsNDAwOTIsMzI0MjAsMjE2ODgsMzYxMzIsMzQ5MDAsMzMzMzUsMzgzODYsMjgwNDYsMjQzNTgsMjMyNDQsMjYxNzQsMzg1MDUsMjk2MTYsMjk0ODYsMjE0MzksMzMxNDYsMzkzMDEsMzI2NzMsMjM0NjYsMzg1MTksMzg0ODAsMzI0NDcsMzA0NTYsMjE0MTAsMzgyNjIsMzkzMjEsMzE2NjUsMzUxNDAsMjgyNDgsMjAwNjUsMzI3MjQsMzEwNzcsMzU4MTQsMjQ4MTksMjE3MDksMjAxMzksMzkwMzMsMjQwNTUsMjcyMzMsMjA2ODcsMjE1MjEsMzU5MzcsMzM4MzEsMzA4MTMsMzg2NjAsMjEwNjYsMjE3NDIsMjIxNzksMzgxNDQsMjgwNDAsMjM0NzcsMjgxMDIsMjYxOTUsMzQ4NTIsMzQ4NTMsMzQ4NTQsMzQ4NTUsMzQ4NTYsMzQ4NTcsMzQ4NTgsMzQ4NTksMzQ4NjAsMzQ4NjEsMzQ4NjIsMzQ4NjMsMzQ4NjQsMzQ4NjUsMzQ4NjcsMzQ4NjgsMzQ4NjksMzQ4NzAsMzQ4NzEsMzQ4NzIsMzQ4NzQsMzQ4NzUsMzQ4NzcsMzQ4NzgsMzQ4NzksMzQ4ODEsMzQ4ODIsMzQ4ODMsMzQ4ODYsMzQ4ODcsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTUsMzQ4OTYsMzQ4OTcsMzQ4OTgsMzQ4OTksMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDcsMzQ5MDgsMzQ5MDksMzQ5MTAsMzQ5MTEsMzQ5MTIsMzQ5MTgsMzQ5MTksMzQ5MjIsMzQ5MjUsMzQ5MjcsMzQ5MjksMzQ5MzEsMzQ5MzIsMzQ5MzMsMzQ5MzQsMzQ5MzYsMzQ5MzcsMzQ5MzgsMzQ5MzksMzQ5NDAsMzQ5NDQsMzQ5NDcsMzQ5NTAsMzQ5NTEsMzQ5NTMsMzQ5NTQsMzQ5NTYsMzQ5NTgsMzQ5NTksMzQ5NjAsMzQ5NjEsMzQ5NjMsMzQ5NjQsMzQ5NjUsMzQ5NjcsMzQ5NjgsMzQ5NjksMzQ5NzAsMzQ5NzEsMzQ5NzMsMzQ5NzQsMzQ5NzUsMzQ5NzYsMzQ5NzcsMzQ5NzksMzQ5ODEsMzQ5ODIsMzQ5ODMsMzQ5ODQsMzQ5ODUsMzQ5ODYsMjM1NjcsMjMzODksMjY2NTcsMzI5MTgsMjE4ODAsMzE1MDUsMjU5MjgsMjY5NjQsMjAxMjMsMjc0NjMsMzQ2MzgsMzg3OTUsMjEzMjcsMjUzNzUsMjU2NTgsMzcwMzQsMjYwMTIsMzI5NjEsMzU4NTYsMjA4ODksMjY4MDAsMjEzNjgsMzQ4MDksMjUwMzIsMjc4NDQsMjc4OTksMzU4NzQsMjM2MzMsMzQyMTgsMzM0NTUsMzgxNTYsMjc0MjcsMzY3NjMsMjYwMzIsMjQ1NzEsMjQ1MTUsMjA0NDksMzQ4ODUsMjYxNDMsMzMxMjUsMjk0ODEsMjQ4MjYsMjA4NTIsMjEwMDksMjI0MTEsMjQ0MTgsMzcwMjYsMzQ4OTIsMzcyNjYsMjQxODQsMjY0NDcsMjQ2MTUsMjI5OTUsMjA4MDQsMjA5ODIsMzMwMTYsMjEyNTYsMjc3NjksMzg1OTYsMjkwNjYsMjAyNDEsMjA0NjIsMzI2NzAsMjY0MjksMjE5NTcsMzgxNTIsMzExNjgsMzQ5NjYsMzI0ODMsMjI2ODcsMjUxMDAsMzg2NTYsMzQzOTQsMjIwNDAsMzkwMzUsMjQ0NjQsMzU3NjgsMzM5ODgsMzcyMDcsMjE0NjUsMjYwOTMsMjQyMDcsMzAwNDQsMjQ2NzYsMzIxMTAsMjMxNjcsMzI0OTAsMzI0OTMsMzY3MTMsMjE5MjcsMjM0NTksMjQ3NDgsMjYwNTksMjk1NzIsMzQ5ODgsMzQ5OTAsMzQ5OTEsMzQ5OTIsMzQ5OTQsMzQ5OTUsMzQ5OTYsMzQ5OTcsMzQ5OTgsMzUwMDAsMzUwMDEsMzUwMDIsMzUwMDMsMzUwMDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUwMTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgsMzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDksMzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUsMzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUwODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUwODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUwOTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTksMzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcsMzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMsMjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEsMjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQsMjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYsMzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzksMzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUsMzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEsMzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUxNzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUxODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAsMzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgsMzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQsMzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUyMzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIsMjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgsMzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4MzksMzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAxNTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAxMzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODksMzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIsMjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgsMjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUyNDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUyNTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMsMzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAsMzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDksMzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUzMjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUzMzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUzNDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcsMjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAsMjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2MzksMzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgsMzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQsMzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYsNDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMsMzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgsMzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQsMzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAsMzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUsMzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEsMzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUwMjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgxNzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEsMzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIsMzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQsMjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIzMTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYxNjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQyOTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAsMjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYsMjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgsMzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUsMzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAsMzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYsMzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgsMjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgsMjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEsMjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcxNjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAxODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYsMzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEsMzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYsMzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYsMzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEsMzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcsMzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMsMzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2MzgsMzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQsMzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIsMjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDksMzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUsMzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEsMzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQsMzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAsMzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYsMzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEsMzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcsMzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYsMjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYsMzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQsMzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMwMzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDksMzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIsMzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgsMzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5MjcsMzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMsMzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEsMzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgsMzU5OTksMzYwMDAsMzYwMDEsMzYwMDIsMzYwMDMsMzYwMDQsMzYwMDUsMzYwMDYsMzYwMDcsMzYwMDgsMzYwMDksMzYwMTAsMzYwMTEsMzYwMTIsMzYwMTMsMjAxMDksMTk5ODAsMjA4MDAsMTk5ODQsMjQzMTksMjEzMTcsMTk5ODksMjAxMjAsMTk5OTgsMzk3MzAsMjM0MDQsMjIxMjEsMjAwMDgsMzExNjIsMjAwMzEsMjEyNjksMjAwMzksMjI4MjksMjkyNDMsMjEzNTgsMjc2NjQsMjIyMzksMzI5OTYsMzkzMTksMjc2MDMsMzA1OTAsNDA3MjcsMjAwMjIsMjAxMjcsNDA3MjAsMjAwNjAsMjAwNzMsMjAxMTUsMzM0MTYsMjMzODcsMjE4NjgsMjIwMzEsMjAxNjQsMjEzODksMjE0MDUsMjE0MTEsMjE0MTMsMjE0MjIsMzg3NTcsMzYxODksMjEyNzQsMjE0OTMsMjEyODYsMjEyOTQsMjEzMTAsMzYxODgsMjEzNTAsMjEzNDcsMjA5OTQsMjEwMDAsMjEwMDYsMjEwMzcsMjEwNDMsMjEwNTUsMjEwNTYsMjEwNjgsMjEwODYsMjEwODksMjEwODQsMzM5NjcsMjExMTcsMjExMjIsMjExMjEsMjExMzYsMjExMzksMjA4NjYsMzI1OTYsMjAxNTUsMjAxNjMsMjAxNjksMjAxNjIsMjAyMDAsMjAxOTMsMjAyMDMsMjAxOTAsMjAyNTEsMjAyMTEsMjAyNTgsMjAzMjQsMjAyMTMsMjAyNjEsMjAyNjMsMjAyMzMsMjAyNjcsMjAzMTgsMjAzMjcsMjU5MTIsMjAzMTQsMjAzMTcsMzYwMTQsMzYwMTUsMzYwMTYsMzYwMTcsMzYwMTgsMzYwMTksMzYwMjAsMzYwMjEsMzYwMjIsMzYwMjMsMzYwMjQsMzYwMjUsMzYwMjYsMzYwMjcsMzYwMjgsMzYwMjksMzYwMzAsMzYwMzEsMzYwMzIsMzYwMzMsMzYwMzQsMzYwMzUsMzYwMzYsMzYwMzcsMzYwMzgsMzYwMzksMzYwNDAsMzYwNDEsMzYwNDIsMzYwNDMsMzYwNDQsMzYwNDUsMzYwNDYsMzYwNDcsMzYwNDgsMzYwNDksMzYwNTAsMzYwNTEsMzYwNTIsMzYwNTMsMzYwNTQsMzYwNTUsMzYwNTYsMzYwNTcsMzYwNTgsMzYwNTksMzYwNjAsMzYwNjEsMzYwNjIsMzYwNjMsMzYwNjQsMzYwNjUsMzYwNjYsMzYwNjcsMzYwNjgsMzYwNjksMzYwNzAsMzYwNzEsMzYwNzIsMzYwNzMsMzYwNzQsMzYwNzUsMzYwNzYsMzYwNzcsMzYwNzgsMzYwNzksMzYwODAsMzYwODEsMzYwODIsMzYwODMsMzYwODQsMzYwODUsMzYwODYsMzYwODcsMzYwODgsMzYwODksMzYwOTAsMzYwOTEsMzYwOTIsMzYwOTMsMzYwOTQsMzYwOTUsMzYwOTYsMzYwOTcsMzYwOTgsMzYwOTksMzYxMDAsMzYxMDEsMzYxMDIsMzYxMDMsMzYxMDQsMzYxMDUsMzYxMDYsMzYxMDcsMzYxMDgsMzYxMDksMjAzMTksMjAzMTEsMjAyNzQsMjAyODUsMjAzNDIsMjAzNDAsMjAzNjksMjAzNjEsMjAzNTUsMjAzNjcsMjAzNTAsMjAzNDcsMjAzOTQsMjAzNDgsMjAzOTYsMjAzNzIsMjA0NTQsMjA0NTYsMjA0NTgsMjA0MjEsMjA0NDIsMjA0NTEsMjA0NDQsMjA0MzMsMjA0NDcsMjA0NzIsMjA1MjEsMjA1NTYsMjA0NjcsMjA1MjQsMjA0OTUsMjA1MjYsMjA1MjUsMjA0NzgsMjA1MDgsMjA0OTIsMjA1MTcsMjA1MjAsMjA2MDYsMjA1NDcsMjA1NjUsMjA1NTIsMjA1NTgsMjA1ODgsMjA2MDMsMjA2NDUsMjA2NDcsMjA2NDksMjA2NjYsMjA2OTQsMjA3NDIsMjA3MTcsMjA3MTYsMjA3MTAsMjA3MTgsMjA3NDMsMjA3NDcsMjAxODksMjc3MDksMjAzMTIsMjAzMjUsMjA0MzAsNDA4NjQsMjc3MTgsMzE4NjAsMjA4NDYsMjQwNjEsNDA2NDksMzkzMjAsMjA4NjUsMjI4MDQsMjEyNDEsMjEyNjEsMzUzMzUsMjEyNjQsMjA5NzEsMjI4MDksMjA4MjEsMjAxMjgsMjA4MjIsMjAxNDcsMzQ5MjYsMzQ5ODAsMjAxNDksMzMwNDQsMzUwMjYsMzExMDQsMjMzNDgsMzQ4MTksMzI2OTYsMjA5MDcsMjA5MTMsMjA5MjUsMjA5MjQsMzYxMTAsMzYxMTEsMzYxMTIsMzYxMTMsMzYxMTQsMzYxMTUsMzYxMTYsMzYxMTcsMzYxMTgsMzYxMTksMzYxMjAsMzYxMjEsMzYxMjIsMzYxMjMsMzYxMjQsMzYxMjgsMzYxNzcsMzYxNzgsMzYxODMsMzYxOTEsMzYxOTcsMzYyMDAsMzYyMDEsMzYyMDIsMzYyMDQsMzYyMDYsMzYyMDcsMzYyMDksMzYyMTAsMzYyMTYsMzYyMTcsMzYyMTgsMzYyMTksMzYyMjAsMzYyMjEsMzYyMjIsMzYyMjMsMzYyMjQsMzYyMjYsMzYyMjcsMzYyMzAsMzYyMzEsMzYyMzIsMzYyMzMsMzYyMzYsMzYyMzcsMzYyMzgsMzYyMzksMzYyNDAsMzYyNDIsMzYyNDMsMzYyNDUsMzYyNDYsMzYyNDcsMzYyNDgsMzYyNDksMzYyNTAsMzYyNTEsMzYyNTIsMzYyNTMsMzYyNTQsMzYyNTYsMzYyNTcsMzYyNTgsMzYyNjAsMzYyNjEsMzYyNjIsMzYyNjMsMzYyNjQsMzYyNjUsMzYyNjYsMzYyNjcsMzYyNjgsMzYyNjksMzYyNzAsMzYyNzEsMzYyNzIsMzYyNzQsMzYyNzgsMzYyNzksMzYyODEsMzYyODMsMzYyODUsMzYyODgsMzYyODksMzYyOTAsMzYyOTMsMzYyOTUsMzYyOTYsMzYyOTcsMzYyOTgsMzYzMDEsMzYzMDQsMzYzMDYsMzYzMDcsMzYzMDgsMjA5MzUsMjA4ODYsMjA4OTgsMjA5MDEsMzU3NDQsMzU3NTAsMzU3NTEsMzU3NTQsMzU3NjQsMzU3NjUsMzU3NjcsMzU3NzgsMzU3NzksMzU3ODcsMzU3OTEsMzU3OTAsMzU3OTQsMzU3OTUsMzU3OTYsMzU3OTgsMzU4MDAsMzU4MDEsMzU4MDQsMzU4MDcsMzU4MDgsMzU4MTIsMzU4MTYsMzU4MTcsMzU4MjIsMzU4MjQsMzU4MjcsMzU4MzAsMzU4MzMsMzU4MzYsMzU4MzksMzU4NDAsMzU4NDIsMzU4NDQsMzU4NDcsMzU4NTIsMzU4NTUsMzU4NTcsMzU4NTgsMzU4NjAsMzU4NjEsMzU4NjIsMzU4NjUsMzU4NjcsMzU4NjQsMzU4NjksMzU4NzEsMzU4NzIsMzU4NzMsMzU4NzcsMzU4NzksMzU4ODIsMzU4ODMsMzU4ODYsMzU4ODcsMzU4OTAsMzU4OTEsMzU4OTMsMzU4OTQsMjEzNTMsMjEzNzAsMzg0MjksMzg0MzQsMzg0MzMsMzg0NDksMzg0NDIsMzg0NjEsMzg0NjAsMzg0NjYsMzg0NzMsMzg0ODQsMzg0OTUsMzg1MDMsMzg1MDgsMzg1MTQsMzg1MTYsMzg1MzYsMzg1NDEsMzg1NTEsMzg1NzYsMzcwMTUsMzcwMTksMzcwMjEsMzcwMTcsMzcwMzYsMzcwMjUsMzcwNDQsMzcwNDMsMzcwNDYsMzcwNTAsMzYzMDksMzYzMTIsMzYzMTMsMzYzMTYsMzYzMjAsMzYzMjEsMzYzMjIsMzYzMjUsMzYzMjYsMzYzMjcsMzYzMjksMzYzMzMsMzYzMzQsMzYzMzYsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDIsMzYzNDgsMzYzNTAsMzYzNTEsMzYzNTIsMzYzNTMsMzYzNTQsMzYzNTUsMzYzNTYsMzYzNTgsMzYzNTksMzYzNjAsMzYzNjMsMzYzNjUsMzYzNjYsMzYzNjgsMzYzNjksMzYzNzAsMzYzNzEsMzYzNzMsMzYzNzQsMzYzNzUsMzYzNzYsMzYzNzcsMzYzNzgsMzYzNzksMzYzODAsMzYzODQsMzYzODUsMzYzODgsMzYzODksMzYzOTAsMzYzOTEsMzYzOTIsMzYzOTUsMzYzOTcsMzY0MDAsMzY0MDIsMzY0MDMsMzY0MDQsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MTEsMzY0MTIsMzY0MTQsMzY0MTUsMzY0MTksMzY0MjEsMzY0MjIsMzY0MjgsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzIsMzY0MzUsMzY0MzYsMzY0MzcsMzY0MzgsMzY0MzksMzY0NDAsMzY0NDIsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDcsMzY0NDgsMzY0NDksMzY0NTAsMzY0NTEsMzY0NTIsMzY0NTMsMzY0NTUsMzY0NTYsMzY0NTgsMzY0NTksMzY0NjIsMzY0NjUsMzcwNDgsMzcwNDAsMzcwNzEsMzcwNjEsMzcwNTQsMzcwNzIsMzcwNjAsMzcwNjMsMzcwNzUsMzcwOTQsMzcwOTAsMzcwODQsMzcwNzksMzcwODMsMzcwOTksMzcxMDMsMzcxMTgsMzcxMjQsMzcxNTQsMzcxNTAsMzcxNTUsMzcxNjksMzcxNjcsMzcxNzcsMzcxODcsMzcxOTAsMjEwMDUsMjI4NTAsMjExNTQsMjExNjQsMjExNjUsMjExODIsMjE3NTksMjEyMDAsMjEyMDYsMjEyMzIsMjE0NzEsMjkxNjYsMzA2NjksMjQzMDgsMjA5ODEsMjA5ODgsMzk3MjcsMjE0MzAsMjQzMjEsMzAwNDIsMjQwNDcsMjIzNDgsMjI0NDEsMjI0MzMsMjI2NTQsMjI3MTYsMjI3MjUsMjI3MzcsMjIzMTMsMjIzMTYsMjIzMTQsMjIzMjMsMjIzMjksMjIzMTgsMjIzMTksMjIzNjQsMjIzMzEsMjIzMzgsMjIzNzcsMjI0MDUsMjIzNzksMjI0MDYsMjIzOTYsMjIzOTUsMjIzNzYsMjIzODEsMjIzOTAsMjIzODcsMjI0NDUsMjI0MzYsMjI0MTIsMjI0NTAsMjI0NzksMjI0MzksMjI0NTIsMjI0MTksMjI0MzIsMjI0ODUsMjI0ODgsMjI0OTAsMjI0ODksMjI0ODIsMjI0NTYsMjI1MTYsMjI1MTEsMjI1MjAsMjI1MDAsMjI0OTMsMzY0NjcsMzY0NjksMzY0NzEsMzY0NzIsMzY0NzMsMzY0NzQsMzY0NzUsMzY0NzcsMzY0NzgsMzY0ODAsMzY0ODIsMzY0ODMsMzY0ODQsMzY0ODYsMzY0ODgsMzY0ODksMzY0OTAsMzY0OTEsMzY0OTIsMzY0OTMsMzY0OTQsMzY0OTcsMzY0OTgsMzY0OTksMzY1MDEsMzY1MDIsMzY1MDMsMzY1MDQsMzY1MDUsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTEsMzY1MTIsMzY1MTMsMzY1MTQsMzY1MTUsMzY1MTYsMzY1MTcsMzY1MTgsMzY1MTksMzY1MjAsMzY1MjEsMzY1MjIsMzY1MjUsMzY1MjYsMzY1MjgsMzY1MjksMzY1MzEsMzY1MzIsMzY1MzMsMzY1MzQsMzY1MzUsMzY1MzYsMzY1MzcsMzY1MzksMzY1NDAsMzY1NDEsMzY1NDIsMzY1NDMsMzY1NDQsMzY1NDUsMzY1NDYsMzY1NDcsMzY1NDgsMzY1NDksMzY1NTAsMzY1NTEsMzY1NTIsMzY1NTMsMzY1NTQsMzY1NTUsMzY1NTYsMzY1NTcsMzY1NTksMzY1NjAsMzY1NjEsMzY1NjIsMzY1NjMsMzY1NjQsMzY1NjUsMzY1NjYsMzY1NjcsMzY1NjgsMzY1NjksMzY1NzAsMzY1NzEsMzY1NzIsMzY1NzMsMzY1NzQsMzY1NzUsMzY1NzYsMzY1NzcsMzY1NzgsMzY1NzksMzY1ODAsMjI1MzksMjI1NDEsMjI1MjUsMjI1MDksMjI1MjgsMjI1NTgsMjI1NTMsMjI1OTYsMjI1NjAsMjI2MjksMjI2MzYsMjI2NTcsMjI2NjUsMjI2ODIsMjI2NTYsMzkzMzYsNDA3MjksMjUwODcsMzM0MDEsMzM0MDUsMzM0MDcsMzM0MjMsMzM0MTgsMzM0NDgsMzM0MTIsMzM0MjIsMzM0MjUsMzM0MzEsMzM0MzMsMzM0NTEsMzM0NjQsMzM0NzAsMzM0NTYsMzM0ODAsMzM0ODIsMzM1MDcsMzM0MzIsMzM0NjMsMzM0NTQsMzM0ODMsMzM0ODQsMzM0NzMsMzM0NDksMzM0NjAsMzM0NDEsMzM0NTAsMzM0MzksMzM0NzYsMzM0ODYsMzM0NDQsMzM1MDUsMzM1NDUsMzM1MjcsMzM1MDgsMzM1NTEsMzM1NDMsMzM1MDAsMzM1MjQsMzM0OTAsMzM0OTYsMzM1NDgsMzM1MzEsMzM0OTEsMzM1NTMsMzM1NjIsMzM1NDIsMzM1NTYsMzM1NTcsMzM1MDQsMzM0OTMsMzM1NjQsMzM2MTcsMzM2MjcsMzM2MjgsMzM1NDQsMzM2ODIsMzM1OTYsMzM1ODgsMzM1ODUsMzM2OTEsMzM2MzAsMzM1ODMsMzM2MTUsMzM2MDcsMzM2MDMsMzM2MzEsMzM2MDAsMzM1NTksMzM2MzIsMzM1ODEsMzM1OTQsMzM1ODcsMzM2MzgsMzM2MzcsMzY1ODEsMzY1ODIsMzY1ODMsMzY1ODQsMzY1ODUsMzY1ODYsMzY1ODcsMzY1ODgsMzY1ODksMzY1OTAsMzY1OTEsMzY1OTIsMzY1OTMsMzY1OTQsMzY1OTUsMzY1OTYsMzY1OTcsMzY1OTgsMzY1OTksMzY2MDAsMzY2MDEsMzY2MDIsMzY2MDMsMzY2MDQsMzY2MDUsMzY2MDYsMzY2MDcsMzY2MDgsMzY2MDksMzY2MTAsMzY2MTEsMzY2MTIsMzY2MTMsMzY2MTQsMzY2MTUsMzY2MTYsMzY2MTcsMzY2MTgsMzY2MTksMzY2MjAsMzY2MjEsMzY2MjIsMzY2MjMsMzY2MjQsMzY2MjUsMzY2MjYsMzY2MjcsMzY2MjgsMzY2MjksMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzMsMzY2MzQsMzY2MzUsMzY2MzYsMzY2MzcsMzY2MzgsMzY2MzksMzY2NDAsMzY2NDEsMzY2NDIsMzY2NDMsMzY2NDQsMzY2NDUsMzY2NDYsMzY2NDcsMzY2NDgsMzY2NDksMzY2NTAsMzY2NTEsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NTUsMzY2NTYsMzY2NTcsMzY2NTgsMzY2NTksMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjQsMzY2NjUsMzY2NjYsMzY2NjcsMzY2NjgsMzY2NjksMzY2NzAsMzY2NzEsMzY2NzIsMzY2NzMsMzY2NzQsMzY2NzUsMzY2NzYsMzM2NDAsMzM1NjMsMzM2NDEsMzM2NDQsMzM2NDIsMzM2NDUsMzM2NDYsMzM3MTIsMzM2NTYsMzM3MTUsMzM3MTYsMzM2OTYsMzM3MDYsMzM2ODMsMzM2OTIsMzM2NjksMzM2NjAsMzM3MTgsMzM3MDUsMzM2NjEsMzM3MjAsMzM2NTksMzM2ODgsMzM2OTQsMzM3MDQsMzM3MjIsMzM3MjQsMzM3MjksMzM3OTMsMzM3NjUsMzM3NTIsMjI1MzUsMzM4MTYsMzM4MDMsMzM3NTcsMzM3ODksMzM3NTAsMzM4MjAsMzM4NDgsMzM4MDksMzM3OTgsMzM3NDgsMzM3NTksMzM4MDcsMzM3OTUsMzM3ODQsMzM3ODUsMzM3NzAsMzM3MzMsMzM3MjgsMzM4MzAsMzM3NzYsMzM3NjEsMzM4ODQsMzM4NzMsMzM4ODIsMzM4ODEsMzM5MDcsMzM5MjcsMzM5MjgsMzM5MTQsMzM5MjksMzM5MTIsMzM4NTIsMzM4NjIsMzM4OTcsMzM5MTAsMzM5MzIsMzM5MzQsMzM4NDEsMzM5MDEsMzM5ODUsMzM5OTcsMzQwMDAsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQwMTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQwMjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQxMDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUsMzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEsMzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUsMzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIsMzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDksMzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQxMzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQxMTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgsMzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYsMzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMsMjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUzNzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2NjksMjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIsMjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAsMzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYsMzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIsMzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIsMzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcwMDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcwMTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcwMjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQsMjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUsMjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEsMjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgsMjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgsMjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2NjgsMjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcwNjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEsMzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAsMzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDksMzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcxMzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcxMzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIsMzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgsMzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUsMzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIsMjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODksMjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUsMjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIwOTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIxMDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIxNDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzksMjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMsMjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMsMzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcyNDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcyNTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcyNjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYsMzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMsMzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzczMjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzczMzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzczNDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQsMjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQsMjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQsMjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUsMjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYsMjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcsMjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzczNTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMsMzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0MjgsMzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0MzksMzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMzMDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAsMzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMsMzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMsMjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgsMjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDksMzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUsMzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMsMjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYsMjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIsMjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgzODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEsMjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMsMjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAsMjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUsMzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2MjksMzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQsMzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAsMzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgwNjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjgwMDAsMjgwMjgsMjgwMDMsMjgxODYsMjgxMDMsMjgxMDEsMjgxMjYsMjgxNzQsMjgwOTUsMjgxMjgsMjgxNzcsMjgxMzQsMjgxMjUsMjgxMjEsMjgxODIsMjgwNzUsMjgxNzIsMjgwNzgsMjgyMDMsMjgyNzAsMjgyMzgsMjgyNjcsMjgzMzgsMjgyNTUsMjgyOTQsMjgyNDMsMjgyNDQsMjgyMTAsMjgxOTcsMjgyMjgsMjgzODMsMjgzMzcsMjgzMTIsMjgzODQsMjg0NjEsMjgzODYsMjgzMjUsMjgzMjcsMjgzNDksMjgzNDcsMjgzNDMsMjgzNzUsMjgzNDAsMjgzNjcsMjgzMDMsMjgzNTQsMjgzMTksMjg1MTQsMjg0ODYsMjg0ODcsMjg0NTIsMjg0MzcsMjg0MDksMjg0NjMsMjg0NzAsMjg0OTEsMjg1MzIsMjg0NTgsMjg0MjUsMjg0NTcsMjg1NTMsMjg1NTcsMjg1NTYsMjg1MzYsMjg1MzAsMjg1NDAsMjg1MzgsMjg2MjUsMzc2NDIsMzc2NDMsMzc2NDQsMzc2NDUsMzc2NDYsMzc2NDcsMzc2NDgsMzc2NDksMzc2NTAsMzc2NTEsMzc2NTIsMzc2NTMsMzc2NTQsMzc2NTUsMzc2NTYsMzc2NTcsMzc2NTgsMzc2NTksMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjQsMzc2NjUsMzc2NjYsMzc2NjcsMzc2NjgsMzc2NjksMzc2NzAsMzc2NzEsMzc2NzIsMzc2NzMsMzc2NzQsMzc2NzUsMzc2NzYsMzc2NzcsMzc2NzgsMzc2NzksMzc2ODAsMzc2ODEsMzc2ODIsMzc2ODMsMzc2ODQsMzc2ODUsMzc2ODYsMzc2ODcsMzc2ODgsMzc2ODksMzc2OTAsMzc2OTEsMzc2OTIsMzc2OTMsMzc2OTUsMzc2OTYsMzc2OTcsMzc2OTgsMzc2OTksMzc3MDAsMzc3MDEsMzc3MDIsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MDYsMzc3MDcsMzc3MDgsMzc3MDksMzc3MTAsMzc3MTEsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTUsMzc3MTYsMzc3MTcsMzc3MTgsMzc3MTksMzc3MjAsMzc3MjEsMzc3MjIsMzc3MjMsMzc3MjQsMzc3MjUsMzc3MjYsMzc3MjcsMzc3MjgsMzc3MjksMzc3MzAsMzc3MzEsMzc3MzIsMzc3MzMsMzc3MzQsMzc3MzUsMzc3MzYsMzc3MzcsMzc3MzksMjg2MTcsMjg1ODMsMjg2MDEsMjg1OTgsMjg2MTAsMjg2NDEsMjg2NTQsMjg2MzgsMjg2NDAsMjg2NTUsMjg2OTgsMjg3MDcsMjg2OTksMjg3MjksMjg3MjUsMjg3NTEsMjg3NjYsMjM0MjQsMjM0MjgsMjM0NDUsMjM0NDMsMjM0NjEsMjM0ODAsMjk5OTksMzk1ODIsMjU2NTIsMjM1MjQsMjM1MzQsMzUxMjAsMjM1MzYsMzY0MjMsMzU1OTEsMzY3OTAsMzY4MTksMzY4MjEsMzY4MzcsMzY4NDYsMzY4MzYsMzY4NDEsMzY4MzgsMzY4NTEsMzY4NDAsMzY4NjksMzY4NjgsMzY4NzUsMzY5MDIsMzY4ODEsMzY4NzcsMzY4ODYsMzY4OTcsMzY5MTcsMzY5MTgsMzY5MDksMzY5MTEsMzY5MzIsMzY5NDUsMzY5NDYsMzY5NDQsMzY5NjgsMzY5NTIsMzY5NjIsMzY5NTUsMjYyOTcsMzY5ODAsMzY5ODksMzY5OTQsMzcwMDAsMzY5OTUsMzcwMDMsMjQ0MDAsMjQ0MDcsMjQ0MDYsMjQ0MDgsMjM2MTEsMjE2NzUsMjM2MzIsMjM2NDEsMjM0MDksMjM2NTEsMjM2NTQsMzI3MDAsMjQzNjIsMjQzNjEsMjQzNjUsMzMzOTYsMjQzODAsMzk3MzksMjM2NjIsMjI5MTMsMjI5MTUsMjI5MjUsMjI5NTMsMjI5NTQsMjI5NDcsMzc3NDAsMzc3NDEsMzc3NDIsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDYsMzc3NDcsMzc3NDgsMzc3NDksMzc3NTAsMzc3NTEsMzc3NTIsMzc3NTMsMzc3NTQsMzc3NTUsMzc3NTYsMzc3NTcsMzc3NTgsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjMsMzc3NjQsMzc3NjUsMzc3NjYsMzc3NjcsMzc3NjgsMzc3NjksMzc3NzAsMzc3NzEsMzc3NzIsMzc3NzMsMzc3NzQsMzc3NzYsMzc3NzcsMzc3NzgsMzc3NzksMzc3ODAsMzc3ODEsMzc3ODIsMzc3ODMsMzc3ODQsMzc3ODUsMzc3ODYsMzc3ODcsMzc3ODgsMzc3ODksMzc3OTAsMzc3OTEsMzc3OTIsMzc3OTMsMzc3OTQsMzc3OTUsMzc3OTYsMzc3OTcsMzc3OTgsMzc3OTksMzc4MDAsMzc4MDEsMzc4MDIsMzc4MDMsMzc4MDQsMzc4MDUsMzc4MDYsMzc4MDcsMzc4MDgsMzc4MDksMzc4MTAsMzc4MTEsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTUsMzc4MTYsMzc4MTcsMzc4MTgsMzc4MTksMzc4MjAsMzc4MjEsMzc4MjIsMzc4MjMsMzc4MjQsMzc4MjUsMzc4MjYsMzc4MjcsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzIsMzc4MzMsMzc4MzUsMzc4MzYsMzc4MzcsMjI5MzUsMjI5ODYsMjI5NTUsMjI5NDIsMjI5NDgsMjI5OTQsMjI5NjIsMjI5NTksMjI5OTksMjI5NzQsMjMwNDUsMjMwNDYsMjMwMDUsMjMwNDgsMjMwMTEsMjMwMDAsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIsMjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMsMjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQsMjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMyNjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMzNTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAsMzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAsMzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODksMzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUsMzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAsMzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYsMzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAsMzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0MjksMzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcsMzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYsMzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIsMzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQsMzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkwMzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYsMzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIsMzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgsMzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDAsMzgwMDEsMzgwMDIsMzgwMDMsMzgwMDQsMzgwMDUsMzgwMDYsMzgwMDcsMzgwMDgsMzgwMDksMzgwMTAsMzgwMTEsMzgwMTIsMzgwMTMsMzgwMTQsMzgwMTUsMzgwMTYsMzgwMTcsMzgwMTgsMzgwMTksMzgwMjAsMzgwMzMsMzgwMzgsMzgwNDAsMzgwODcsMzgwOTUsMzgwOTksMzgxMDAsMzgxMDYsMzgxMTgsMzgxMzksMzgxNzIsMzgxNzYsMjk3MjMsMjk3MjIsMjk3NjEsMjk3ODgsMjk3ODMsMjk3ODEsMjk3ODUsMjk4MTUsMjk4MDUsMjk4MjIsMjk4NTIsMjk4MzgsMjk4MjQsMjk4MjUsMjk4MzEsMjk4MzUsMjk4NTQsMjk4NjQsMjk4NjUsMjk4NDAsMjk4NjMsMjk5MDYsMjk4ODIsMzg4OTAsMzg4OTEsMzg4OTIsMjY0NDQsMjY0NTEsMjY0NjIsMjY0NDAsMjY0NzMsMjY1MzMsMjY1MDMsMjY0NzQsMjY0ODMsMjY1MjAsMjY1MzUsMjY0ODUsMjY1MzYsMjY1MjYsMjY1NDEsMjY1MDcsMjY0ODcsMjY0OTIsMjY2MDgsMjY2MzMsMjY1ODQsMjY2MzQsMjY2MDEsMjY1NDQsMjY2MzYsMjY1ODUsMjY1NDksMjY1ODYsMjY1NDcsMjY1ODksMjY2MjQsMjY1NjMsMjY1NTIsMjY1OTQsMjY2MzgsMjY1NjEsMjY2MjEsMjY2NzQsMjY2NzUsMjY3MjAsMjY3MjEsMjY3MDIsMjY3MjIsMjY2OTIsMjY3MjQsMjY3NTUsMjY2NTMsMjY3MDksMjY3MjYsMjY2ODksMjY3MjcsMjY2ODgsMjY2ODYsMjY2OTgsMjY2OTcsMjY2NjUsMjY4MDUsMjY3NjcsMjY3NDAsMjY3NDMsMjY3NzEsMjY3MzEsMjY4MTgsMjY5OTAsMjY4NzYsMjY5MTEsMjY5MTIsMjY4NzMsMzgxODMsMzgxOTUsMzgyMDUsMzgyMTEsMzgyMTYsMzgyMTksMzgyMjksMzgyMzQsMzgyNDAsMzgyNTQsMzgyNjAsMzgyNjEsMzgyNjMsMzgyNjQsMzgyNjUsMzgyNjYsMzgyNjcsMzgyNjgsMzgyNjksMzgyNzAsMzgyNzIsMzgyNzMsMzgyNzQsMzgyNzUsMzgyNzYsMzgyNzcsMzgyNzgsMzgyNzksMzgyODAsMzgyODEsMzgyODIsMzgyODMsMzgyODQsMzgyODUsMzgyODYsMzgyODcsMzgyODgsMzgyODksMzgyOTAsMzgyOTEsMzgyOTIsMzgyOTMsMzgyOTQsMzgyOTUsMzgyOTYsMzgyOTcsMzgyOTgsMzgyOTksMzgzMDAsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDQsMzgzMDUsMzgzMDYsMzgzMDcsMzgzMDgsMzgzMDksMzgzMTAsMzgzMTEsMzgzMTIsMzgzMTMsMzgzMTQsMzgzMTUsMzgzMTYsMzgzMTcsMzgzMTgsMzgzMTksMzgzMjAsMzgzMjEsMzgzMjIsMzgzMjMsMzgzMjQsMzgzMjUsMzgzMjYsMzgzMjcsMzgzMjgsMzgzMjksMzgzMzAsMzgzMzEsMzgzMzIsMzgzMzMsMzgzMzQsMzgzMzUsMzgzMzYsMzgzMzcsMzgzMzgsMzgzMzksMzgzNDAsMzgzNDEsMzgzNDIsMzgzNDMsMzgzNDQsMzgzNDUsMzgzNDYsMzgzNDcsMjY5MTYsMjY4NjQsMjY4OTEsMjY4ODEsMjY5NjcsMjY4NTEsMjY4OTYsMjY5OTMsMjY5MzcsMjY5NzYsMjY5NDYsMjY5NzMsMjcwMTIsMjY5ODcsMjcwMDgsMjcwMzIsMjcwMDAsMjY5MzIsMjcwODQsMjcwMTUsMjcwMTYsMjcwODYsMjcwMTcsMjY5ODIsMjY5NzksMjcwMDEsMjcwMzUsMjcwNDcsMjcwNjcsMjcwNTEsMjcwNTMsMjcwOTIsMjcwNTcsMjcwNzMsMjcwODIsMjcxMDMsMjcwMjksMjcxMDQsMjcwMjEsMjcxMzUsMjcxODMsMjcxMTcsMjcxNTksMjcxNjAsMjcyMzcsMjcxMjIsMjcyMDQsMjcxOTgsMjcyOTYsMjcyMTYsMjcyMjcsMjcxODksMjcyNzgsMjcyNTcsMjcxOTcsMjcxNzYsMjcyMjQsMjcyNjAsMjcyODEsMjcyODAsMjczMDUsMjcyODcsMjczMDcsMjk0OTUsMjk1MjIsMjc1MjEsMjc1MjIsMjc1MjcsMjc1MjQsMjc1MzgsMjc1MzksMjc1MzMsMjc1NDYsMjc1NDcsMjc1NTMsMjc1NjIsMzY3MTUsMzY3MTcsMzY3MjEsMzY3MjIsMzY3MjMsMzY3MjUsMzY3MjYsMzY3MjgsMzY3MjcsMzY3MjksMzY3MzAsMzY3MzIsMzY3MzQsMzY3MzcsMzY3MzgsMzY3NDAsMzY3NDMsMzY3NDcsMzgzNDgsMzgzNDksMzgzNTAsMzgzNTEsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNTYsMzgzNTcsMzgzNTgsMzgzNTksMzgzNjAsMzgzNjEsMzgzNjIsMzgzNjMsMzgzNjQsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNjksMzgzNzAsMzgzNzEsMzgzNzIsMzgzNzMsMzgzNzQsMzgzNzUsMzgzODAsMzgzOTksMzg0MDcsMzg0MTksMzg0MjQsMzg0MjcsMzg0MzAsMzg0MzIsMzg0MzUsMzg0MzYsMzg0MzcsMzg0MzgsMzg0MzksMzg0NDAsMzg0NDEsMzg0NDMsMzg0NDQsMzg0NDUsMzg0NDcsMzg0NDgsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjIsMzg0NjUsMzg0NjcsMzg0NzQsMzg0NzgsMzg0NzksMzg0ODEsMzg0ODIsMzg0ODMsMzg0ODYsMzg0ODcsMzg0ODgsMzg0ODksMzg0OTAsMzg0OTIsMzg0OTMsMzg0OTQsMzg0OTYsMzg0OTksMzg1MDEsMzg1MDIsMzg1MDcsMzg1MDksMzg1MTAsMzg1MTEsMzg1MTIsMzg1MTMsMzg1MTUsMzg1MjAsMzg1MjEsMzg1MjIsMzg1MjMsMzg1MjQsMzg1MjUsMzg1MjYsMzg1MjcsMzg1MjgsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzUsMzg1MzcsMzg1MzgsMzY3NDksMzY3NTAsMzY3NTEsMzY3NjAsMzY3NjIsMzY1NTgsMjUwOTksMjUxMTEsMjUxMTUsMjUxMTksMjUxMjIsMjUxMjEsMjUxMjUsMjUxMjQsMjUxMzIsMzMyNTUsMjk5MzUsMjk5NDAsMjk5NTEsMjk5NjcsMjk5NjksMjk5NzEsMjU5MDgsMjYwOTQsMjYwOTUsMjYwOTYsMjYxMjIsMjYxMzcsMjY0ODIsMjYxMTUsMjYxMzMsMjYxMTIsMjg4MDUsMjYzNTksMjYxNDEsMjYxNjQsMjYxNjEsMjYxNjYsMjYxNjUsMzI3NzQsMjYyMDcsMjYxOTYsMjYxNzcsMjYxOTEsMjYxOTgsMjYyMDksMjYxOTksMjYyMzEsMjYyNDQsMjYyNTIsMjYyNzksMjYyNjksMjYzMDIsMjYzMzEsMjYzMzIsMjYzNDIsMjYzNDUsMzYxNDYsMzYxNDcsMzYxNTAsMzYxNTUsMzYxNTcsMzYxNjAsMzYxNjUsMzYxNjYsMzYxNjgsMzYxNjksMzYxNjcsMzYxNzMsMzYxODEsMzYxODUsMzUyNzEsMzUyNzQsMzUyNzUsMzUyNzYsMzUyNzgsMzUyNzksMzUyODAsMzUyODEsMjkyOTQsMjkzNDMsMjkyNzcsMjkyODYsMjkyOTUsMjkzMTAsMjkzMTEsMjkzMTYsMjkzMjMsMjkzMjUsMjkzMjcsMjkzMzAsMjUzNTIsMjUzOTQsMjU1MjAsMzg1NDAsMzg1NDIsMzg1NDUsMzg1NDYsMzg1NDcsMzg1NDksMzg1NTAsMzg1NTQsMzg1NTUsMzg1NTcsMzg1NTgsMzg1NTksMzg1NjAsMzg1NjEsMzg1NjIsMzg1NjMsMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjgsMzg1NjksMzg1NzAsMzg1NzEsMzg1NzIsMzg1NzMsMzg1NzQsMzg1NzUsMzg1NzcsMzg1NzgsMzg1ODAsMzg1ODEsMzg1ODMsMzg1ODQsMzg1ODYsMzg1ODcsMzg1OTEsMzg1OTQsMzg1OTUsMzg2MDAsMzg2MDIsMzg2MDMsMzg2MDgsMzg2MDksMzg2MTEsMzg2MTIsMzg2MTQsMzg2MTUsMzg2MTYsMzg2MTcsMzg2MTgsMzg2MTksMzg2MjAsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MjUsMzg2MjYsMzg2MjcsMzg2MjgsMzg2MjksMzg2MzAsMzg2MzEsMzg2MzUsMzg2MzYsMzg2MzcsMzg2MzgsMzg2NDAsMzg2NDEsMzg2NDIsMzg2NDQsMzg2NDUsMzg2NDgsMzg2NTAsMzg2NTEsMzg2NTIsMzg2NTMsMzg2NTUsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjYsMzg2NjcsMzg2NjgsMzg2NzIsMzg2NzMsMzg2NzQsMzg2NzYsMzg2NzcsMzg2NzksMzg2ODAsMzg2ODEsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODcsMzg2ODgsMjU2NjMsMjU4MTYsMzI3NzIsMjc2MjYsMjc2MzUsMjc2NDUsMjc2MzcsMjc2NDEsMjc2NTMsMjc2NTUsMjc2NTQsMjc2NjEsMjc2NjksMjc2NzIsMjc2NzMsMjc2NzQsMjc2ODEsMjc2ODksMjc2ODQsMjc2OTAsMjc2OTgsMjU5MDksMjU5NDEsMjU5NjMsMjkyNjEsMjkyNjYsMjkyNzAsMjkyMzIsMzQ0MDIsMjEwMTQsMzI5MjcsMzI5MjQsMzI5MTUsMzI5NTYsMjYzNzgsMzI5NTcsMzI5NDUsMzI5MzksMzI5NDEsMzI5NDgsMzI5NTEsMzI5OTksMzMwMDAsMzMwMDEsMzMwMDIsMzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYzODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMwNjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMxNDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcsMzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQsMzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEsMzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAsMzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3NjcsMzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEsMzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAsMjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjYwMDAsNDA3ODUsMjYwMDMsMjYwNDQsMjYwNTQsMjYwNTIsMjYwNTEsMjYwNjAsMjYwNjIsMjYwNjYsMjYwNzAsMjg4MDAsMjg4MjgsMjg4MjIsMjg4MjksMjg4NTksMjg4NjQsMjg4NTUsMjg4NDMsMjg4NDksMjg5MDQsMjg4NzQsMjg5NDQsMjg5NDcsMjg5NTAsMjg5NzUsMjg5NzcsMjkwNDMsMjkwMjAsMjkwMzIsMjg5OTcsMjkwNDIsMjkwMDIsMjkwNDgsMjkwNTAsMjkwODAsMjkxMDcsMjkxMDksMjkwOTYsMjkwODgsMjkxNTIsMjkxNDAsMjkxNTksMjkxNzcsMjkyMTMsMjkyMjQsMjg3ODAsMjg5NTIsMjkwMzAsMjkxMTMsMjUxNTAsMjUxNDksMjUxNTUsMjUxNjAsMjUxNjEsMzEwMzUsMzEwNDAsMzEwNDYsMzEwNDksMzEwNjcsMzEwNjgsMzEwNTksMzEwNjYsMzEwNzQsMzEwNjMsMzEwNzIsMzEwODcsMzEwNzksMzEwOTgsMzExMDksMzExMTQsMzExMzAsMzExNDMsMzExNTUsMjQ1MjksMjQ1MjgsMzg4MTQsMzg4MTUsMzg4MTcsMzg4MTgsMzg4MjAsMzg4MjEsMzg4MjIsMzg4MjMsMzg4MjQsMzg4MjUsMzg4MjYsMzg4MjgsMzg4MzAsMzg4MzIsMzg4MzMsMzg4MzUsMzg4MzcsMzg4MzgsMzg4MzksMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDMsMzg4NDQsMzg4NDUsMzg4NDYsMzg4NDcsMzg4NDgsMzg4NDksMzg4NTAsMzg4NTEsMzg4NTIsMzg4NTMsMzg4NTQsMzg4NTUsMzg4NTYsMzg4NTcsMzg4NTgsMzg4NTksMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjMsMzg4NjQsMzg4NjUsMzg4NjYsMzg4NjcsMzg4NjgsMzg4NjksMzg4NzAsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzQsMzg4NzUsMzg4NzYsMzg4NzcsMzg4NzgsMzg4NzksMzg4ODAsMzg4ODEsMzg4ODIsMzg4ODMsMzg4ODQsMzg4ODUsMzg4ODgsMzg4OTQsMzg4OTUsMzg4OTYsMzg4OTcsMzg4OTgsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDUsMzg5MDYsMzg5MDcsMzg5MDgsMzg5MDksMzg5MTAsMzg5MTEsMzg5MTIsMzg5MTMsMzg5MTQsMzg5MTUsMzg5MTYsMzg5MTcsMzg5MTgsMzg5MTksMzg5MjAsMzg5MjEsMzg5MjIsMzg5MjMsMzg5MjQsMzg5MjUsMzg5MjYsMjQ2MzYsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ2NjUsMjQ2NzUsMjQ3NDcsMjQ4MzgsMjQ4NDUsMjQ5MjUsMjUwMDEsMjQ5ODksMjUwMzUsMjUwNDEsMjUwOTQsMzI4OTYsMzI4OTUsMjc3OTUsMjc4OTQsMjgxNTYsMzA3MTAsMzA3MTIsMzA3MjAsMzA3MjksMzA3NDMsMzA3NDQsMzA3MzcsMjYwMjcsMzA3NjUsMzA3NDgsMzA3NDksMzA3NzcsMzA3NzgsMzA3NzksMzA3NTEsMzA3ODAsMzA3NTcsMzA3NjQsMzA3NTUsMzA3NjEsMzA3OTgsMzA4MjksMzA4MDYsMzA4MDcsMzA3NTgsMzA4MDAsMzA3OTEsMzA3OTYsMzA4MjYsMzA4NzUsMzA4NjcsMzA4NzQsMzA4NTUsMzA4NzYsMzA4ODEsMzA4ODMsMzA4OTgsMzA5MDUsMzA4ODUsMzA5MzIsMzA5MzcsMzA5MjEsMzA5NTYsMzA5NjIsMzA5ODEsMzA5NjQsMzA5OTUsMzEwMTIsMzEwMDYsMzEwMjgsNDA4NTksNDA2OTcsNDA2OTksNDA3MDAsMzA0NDksMzA0NjgsMzA0NzcsMzA0NTcsMzA0NzEsMzA0NzIsMzA0OTAsMzA0OTgsMzA0ODksMzA1MDksMzA1MDIsMzA1MTcsMzA1MjAsMzA1NDQsMzA1NDUsMzA1MzUsMzA1MzEsMzA1NTQsMzA1NjgsMzg5MjcsMzg5MjgsMzg5MjksMzg5MzAsMzg5MzEsMzg5MzIsMzg5MzMsMzg5MzQsMzg5MzUsMzg5MzYsMzg5MzcsMzg5MzgsMzg5MzksMzg5NDAsMzg5NDEsMzg5NDIsMzg5NDMsMzg5NDQsMzg5NDUsMzg5NDYsMzg5NDcsMzg5NDgsMzg5NDksMzg5NTAsMzg5NTEsMzg5NTIsMzg5NTMsMzg5NTQsMzg5NTUsMzg5NTYsMzg5NTcsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjEsMzg5NjIsMzg5NjMsMzg5NjQsMzg5NjUsMzg5NjYsMzg5NjcsMzg5NjgsMzg5NjksMzg5NzAsMzg5NzEsMzg5NzIsMzg5NzMsMzg5NzQsMzg5NzUsMzg5NzYsMzg5NzcsMzg5NzgsMzg5NzksMzg5ODAsMzg5ODEsMzg5ODIsMzg5ODMsMzg5ODQsMzg5ODUsMzg5ODYsMzg5ODcsMzg5ODgsMzg5ODksMzg5OTAsMzg5OTEsMzg5OTIsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTYsMzg5OTcsMzg5OTgsMzg5OTksMzkwMDAsMzkwMDEsMzkwMDIsMzkwMDMsMzkwMDQsMzkwMDUsMzkwMDYsMzkwMDcsMzkwMDgsMzkwMDksMzkwMTAsMzkwMTEsMzkwMTIsMzkwMTMsMzkwMTQsMzkwMTUsMzkwMTYsMzkwMTcsMzkwMTgsMzkwMTksMzkwMjAsMzkwMjEsMzkwMjIsMzA1NjIsMzA1NjUsMzA1OTEsMzA2MDUsMzA1ODksMzA1OTIsMzA2MDQsMzA2MDksMzA2MjMsMzA2MjQsMzA2NDAsMzA2NDUsMzA2NTMsMzAwMTAsMzAwMTYsMzAwMzAsMzAwMjcsMzAwMjQsMzAwNDMsMzAwNjYsMzAwNzMsMzAwODMsMzI2MDAsMzI2MDksMzI2MDcsMzU0MDAsMzI2MTYsMzI2MjgsMzI2MjUsMzI2MzMsMzI2NDEsMzI2MzgsMzA0MTMsMzA0MzcsMzQ4NjYsMzgwMjEsMzgwMjIsMzgwMjMsMzgwMjcsMzgwMjYsMzgwMjgsMzgwMjksMzgwMzEsMzgwMzIsMzgwMzYsMzgwMzksMzgwMzcsMzgwNDIsMzgwNDMsMzgwNDQsMzgwNTEsMzgwNTIsMzgwNTksMzgwNTgsMzgwNjEsMzgwNjAsMzgwNjMsMzgwNjQsMzgwNjYsMzgwNjgsMzgwNzAsMzgwNzEsMzgwNzIsMzgwNzMsMzgwNzQsMzgwNzYsMzgwNzcsMzgwNzksMzgwODQsMzgwODgsMzgwODksMzgwOTAsMzgwOTEsMzgwOTIsMzgwOTMsMzgwOTQsMzgwOTYsMzgwOTcsMzgwOTgsMzgxMDEsMzgxMDIsMzgxMDMsMzgxMDUsMzgxMDQsMzgxMDcsMzgxMTAsMzgxMTEsMzgxMTIsMzgxMTQsMzgxMTYsMzgxMTcsMzgxMTksMzgxMjAsMzgxMjIsMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjYsMzkwMjcsMzkwMjgsMzkwNTEsMzkwNTQsMzkwNTgsMzkwNjEsMzkwNjUsMzkwNzUsMzkwODAsMzkwODEsMzkwODIsMzkwODMsMzkwODQsMzkwODUsMzkwODYsMzkwODcsMzkwODgsMzkwODksMzkwOTAsMzkwOTEsMzkwOTIsMzkwOTMsMzkwOTQsMzkwOTUsMzkwOTYsMzkwOTcsMzkwOTgsMzkwOTksMzkxMDAsMzkxMDEsMzkxMDIsMzkxMDMsMzkxMDQsMzkxMDUsMzkxMDYsMzkxMDcsMzkxMDgsMzkxMDksMzkxMTAsMzkxMTEsMzkxMTIsMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkxMTcsMzkxMTksMzkxMjAsMzkxMjQsMzkxMjYsMzkxMjcsMzkxMzEsMzkxMzIsMzkxMzMsMzkxMzYsMzkxMzcsMzkxMzgsMzkxMzksMzkxNDAsMzkxNDEsMzkxNDIsMzkxNDUsMzkxNDYsMzkxNDcsMzkxNDgsMzkxNDksMzkxNTAsMzkxNTEsMzkxNTIsMzkxNTMsMzkxNTQsMzkxNTUsMzkxNTYsMzkxNTcsMzkxNTgsMzkxNTksMzkxNjAsMzkxNjEsMzkxNjIsMzkxNjMsMzkxNjQsMzkxNjUsMzkxNjYsMzkxNjcsMzkxNjgsMzkxNjksMzkxNzAsMzkxNzEsMzkxNzIsMzkxNzMsMzkxNzQsMzkxNzUsMzgxMjEsMzgxMjMsMzgxMjYsMzgxMjcsMzgxMzEsMzgxMzIsMzgxMzMsMzgxMzUsMzgxMzcsMzgxNDAsMzgxNDEsMzgxNDMsMzgxNDcsMzgxNDYsMzgxNTAsMzgxNTEsMzgxNTMsMzgxNTQsMzgxNTcsMzgxNTgsMzgxNTksMzgxNjIsMzgxNjMsMzgxNjQsMzgxNjUsMzgxNjYsMzgxNjgsMzgxNzEsMzgxNzMsMzgxNzQsMzgxNzUsMzgxNzgsMzgxODYsMzgxODcsMzgxODUsMzgxODgsMzgxOTMsMzgxOTQsMzgxOTYsMzgxOTgsMzgxOTksMzgyMDAsMzgyMDQsMzgyMDYsMzgyMDcsMzgyMTAsMzgxOTcsMzgyMTIsMzgyMTMsMzgyMTQsMzgyMTcsMzgyMjAsMzgyMjIsMzgyMjMsMzgyMjYsMzgyMjcsMzgyMjgsMzgyMzAsMzgyMzEsMzgyMzIsMzgyMzMsMzgyMzUsMzgyMzgsMzgyMzksMzgyMzcsMzgyNDEsMzgyNDIsMzgyNDQsMzgyNDUsMzgyNDYsMzgyNDcsMzgyNDgsMzgyNDksMzgyNTAsMzgyNTEsMzgyNTIsMzgyNTUsMzgyNTcsMzgyNTgsMzgyNTksMzgyMDIsMzA2OTUsMzA3MDAsMzg2MDEsMzExODksMzEyMTMsMzEyMDMsMzEyMTEsMzEyMzgsMjM4NzksMzEyMzUsMzEyMzQsMzEyNjIsMzEyNTIsMzkxNzYsMzkxNzcsMzkxNzgsMzkxNzksMzkxODAsMzkxODIsMzkxODMsMzkxODUsMzkxODYsMzkxODcsMzkxODgsMzkxODksMzkxOTAsMzkxOTEsMzkxOTIsMzkxOTMsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTcsMzkxOTgsMzkxOTksMzkyMDAsMzkyMDEsMzkyMDIsMzkyMDMsMzkyMDQsMzkyMDUsMzkyMDYsMzkyMDcsMzkyMDgsMzkyMDksMzkyMTAsMzkyMTEsMzkyMTIsMzkyMTMsMzkyMTUsMzkyMTYsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjIsMzkyMjMsMzkyMjQsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMjksMzkyMzAsMzkyMzEsMzkyMzIsMzkyMzMsMzkyMzQsMzkyMzUsMzkyMzYsMzkyMzcsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDEsMzkyNDIsMzkyNDMsMzkyNDQsMzkyNDUsMzkyNDYsMzkyNDcsMzkyNDgsMzkyNDksMzkyNTAsMzkyNTEsMzkyNTQsMzkyNTUsMzkyNTYsMzkyNTcsMzkyNTgsMzkyNTksMzkyNjAsMzkyNjEsMzkyNjIsMzkyNjMsMzkyNjQsMzkyNjUsMzkyNjYsMzkyNjgsMzkyNzAsMzkyODMsMzkyODgsMzkyODksMzkyOTEsMzkyOTQsMzkyOTgsMzkyOTksMzkzMDUsMzEyODksMzEyODcsMzEzMTMsNDA2NTUsMzkzMzMsMzEzNDQsMzAzNDQsMzAzNTAsMzAzNTUsMzAzNjEsMzAzNzIsMjk5MTgsMjk5MjAsMjk5OTYsNDA0ODAsNDA0ODIsNDA0ODgsNDA0ODksNDA0OTAsNDA0OTEsNDA0OTIsNDA0OTgsNDA0OTcsNDA1MDIsNDA1MDQsNDA1MDMsNDA1MDUsNDA1MDYsNDA1MTAsNDA1MTMsNDA1MTQsNDA1MTYsNDA1MTgsNDA1MTksNDA1MjAsNDA1MjEsNDA1MjMsNDA1MjQsNDA1MjYsNDA1MjksNDA1MzMsNDA1MzUsNDA1MzgsNDA1MzksNDA1NDAsNDA1NDIsNDA1NDcsNDA1NTAsNDA1NTEsNDA1NTIsNDA1NTMsNDA1NTQsNDA1NTUsNDA1NTYsNDA1NjEsNDA1NTcsNDA1NjMsMzAwOTgsMzAxMDAsMzAxMDIsMzAxMTIsMzAxMDksMzAxMjQsMzAxMTUsMzAxMzEsMzAxMzIsMzAxMzYsMzAxNDgsMzAxMjksMzAxMjgsMzAxNDcsMzAxNDYsMzAxNjYsMzAxNTcsMzAxNzksMzAxODQsMzAxODIsMzAxODAsMzAxODcsMzAxODMsMzAyMTEsMzAxOTMsMzAyMDQsMzAyMDcsMzAyMjQsMzAyMDgsMzAyMTMsMzAyMjAsMzAyMzEsMzAyMTgsMzAyNDUsMzAyMzIsMzAyMjksMzAyMzMsMzkzMDgsMzkzMTAsMzkzMjIsMzkzMjMsMzkzMjQsMzkzMjUsMzkzMjYsMzkzMjcsMzkzMjgsMzkzMjksMzkzMzAsMzkzMzEsMzkzMzIsMzkzMzQsMzkzMzUsMzkzMzcsMzkzMzgsMzkzMzksMzkzNDAsMzkzNDEsMzkzNDIsMzkzNDMsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDcsMzkzNDgsMzkzNDksMzkzNTAsMzkzNTEsMzkzNTIsMzkzNTMsMzkzNTQsMzkzNTUsMzkzNTYsMzkzNTcsMzkzNTgsMzkzNTksMzkzNjAsMzkzNjEsMzkzNjIsMzkzNjMsMzkzNjQsMzkzNjUsMzkzNjYsMzkzNjcsMzkzNjgsMzkzNjksMzkzNzAsMzkzNzEsMzkzNzIsMzkzNzMsMzkzNzQsMzkzNzUsMzkzNzYsMzkzNzcsMzkzNzgsMzkzNzksMzkzODAsMzkzODEsMzkzODIsMzkzODMsMzkzODQsMzkzODUsMzkzODYsMzkzODcsMzkzODgsMzkzODksMzkzOTAsMzkzOTEsMzkzOTIsMzkzOTMsMzkzOTQsMzkzOTUsMzkzOTYsMzkzOTcsMzkzOTgsMzkzOTksMzk0MDAsMzk0MDEsMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDUsMzk0MDYsMzk0MDcsMzk0MDgsMzk0MDksMzk0MTAsMzk0MTEsMzk0MTIsMzk0MTMsMzk0MTQsMzk0MTUsMzk0MTYsMzk0MTcsMzAyMzUsMzAyNjgsMzAyNDIsMzAyNDAsMzAyNzIsMzAyNTMsMzAyNTYsMzAyNzEsMzAyNjEsMzAyNzUsMzAyNzAsMzAyNTksMzAyODUsMzAzMDIsMzAyOTIsMzAzMDAsMzAyOTQsMzAzMTUsMzAzMTksMzI3MTQsMzE0NjIsMzEzNTIsMzEzNTMsMzEzNjAsMzEzNjYsMzEzNjgsMzEzODEsMzEzOTgsMzEzOTIsMzE0MDQsMzE0MDAsMzE0MDUsMzE0MTEsMzQ5MTYsMzQ5MjEsMzQ5MzAsMzQ5NDEsMzQ5NDMsMzQ5NDYsMzQ5NzgsMzUwMTQsMzQ5OTksMzUwMDQsMzUwMTcsMzUwNDIsMzUwMjIsMzUwNDMsMzUwNDUsMzUwNTcsMzUwOTgsMzUwNjgsMzUwNDgsMzUwNzAsMzUwNTYsMzUxMDUsMzUwOTcsMzUwOTEsMzUwOTksMzUwODIsMzUxMjQsMzUxMTUsMzUxMjYsMzUxMzcsMzUxNzQsMzUxOTUsMzAwOTEsMzI5OTcsMzAzODYsMzAzODgsMzA2ODQsMzI3ODYsMzI3ODgsMzI3OTAsMzI3OTYsMzI4MDAsMzI4MDIsMzI4MDUsMzI4MDYsMzI4MDcsMzI4MDksMzI4MDgsMzI4MTcsMzI3NzksMzI4MjEsMzI4MzUsMzI4MzgsMzI4NDUsMzI4NTAsMzI4NzMsMzI4ODEsMzUyMDMsMzkwMzIsMzkwNDAsMzkwNDMsMzk0MTgsMzk0MTksMzk0MjAsMzk0MjEsMzk0MjIsMzk0MjMsMzk0MjQsMzk0MjUsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MjksMzk0MzAsMzk0MzEsMzk0MzIsMzk0MzMsMzk0MzQsMzk0MzUsMzk0MzYsMzk0MzcsMzk0MzgsMzk0MzksMzk0NDAsMzk0NDEsMzk0NDIsMzk0NDMsMzk0NDQsMzk0NDUsMzk0NDYsMzk0NDcsMzk0NDgsMzk0NDksMzk0NTAsMzk0NTEsMzk0NTIsMzk0NTMsMzk0NTQsMzk0NTUsMzk0NTYsMzk0NTcsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjEsMzk0NjIsMzk0NjMsMzk0NjQsMzk0NjUsMzk0NjYsMzk0NjcsMzk0NjgsMzk0NjksMzk0NzAsMzk0NzEsMzk0NzIsMzk0NzMsMzk0NzQsMzk0NzUsMzk0NzYsMzk0NzcsMzk0NzgsMzk0NzksMzk0ODAsMzk0ODEsMzk0ODIsMzk0ODMsMzk0ODQsMzk0ODUsMzk0ODYsMzk0ODcsMzk0ODgsMzk0ODksMzk0OTAsMzk0OTEsMzk0OTIsMzk0OTMsMzk0OTQsMzk0OTUsMzk0OTYsMzk0OTcsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDEsMzk1MDIsMzk1MDMsMzk1MDQsMzk1MDUsMzk1MDYsMzk1MDcsMzk1MDgsMzk1MDksMzk1MTAsMzk1MTEsMzk1MTIsMzk1MTMsMzkwNDksMzkwNTIsMzkwNTMsMzkwNTUsMzkwNjAsMzkwNjYsMzkwNjcsMzkwNzAsMzkwNzEsMzkwNzMsMzkwNzQsMzkwNzcsMzkwNzgsMzQzODEsMzQzODgsMzQ0MTIsMzQ0MTQsMzQ0MzEsMzQ0MjYsMzQ0MjgsMzQ0MjcsMzQ0NzIsMzQ0NDUsMzQ0NDMsMzQ0NzYsMzQ0NjEsMzQ0NzEsMzQ0NjcsMzQ0NzQsMzQ0NTEsMzQ0NzMsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MTAsMzQ0ODAsMzQ0OTAsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ1MTEsMzQ0ODQsMzQ1MzcsMzQ1NDUsMzQ1NDYsMzQ1NDEsMzQ1NDcsMzQ1MTIsMzQ1NzksMzQ1MjYsMzQ1NDgsMzQ1MjcsMzQ1MjAsMzQ1MTMsMzQ1NjMsMzQ1NjcsMzQ1NTIsMzQ1NjgsMzQ1NzAsMzQ1NzMsMzQ1NjksMzQ1OTUsMzQ2MTksMzQ1OTAsMzQ1OTcsMzQ2MDYsMzQ1ODYsMzQ2MjIsMzQ2MzIsMzQ2MTIsMzQ2MDksMzQ2MDEsMzQ2MTUsMzQ2MjMsMzQ2OTAsMzQ1OTQsMzQ2ODUsMzQ2ODYsMzQ2ODMsMzQ2NTYsMzQ2NzIsMzQ2MzYsMzQ2NzAsMzQ2OTksMzQ2NDMsMzQ2NTksMzQ2ODQsMzQ2NjAsMzQ2NDksMzQ2NjEsMzQ3MDcsMzQ3MzUsMzQ3MjgsMzQ3NzAsMzk1MTQsMzk1MTUsMzk1MTYsMzk1MTcsMzk1MTgsMzk1MTksMzk1MjAsMzk1MjEsMzk1MjIsMzk1MjMsMzk1MjQsMzk1MjUsMzk1MjYsMzk1MjcsMzk1MjgsMzk1MjksMzk1MzAsMzk1MzEsMzk1MzgsMzk1NTUsMzk1NjEsMzk1NjUsMzk1NjYsMzk1NzIsMzk1NzMsMzk1NzcsMzk1OTAsMzk1OTMsMzk1OTQsMzk1OTUsMzk1OTYsMzk1OTcsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDMsMzk2MDQsMzk2MDUsMzk2MDksMzk2MTEsMzk2MTMsMzk2MTQsMzk2MTUsMzk2MTksMzk2MjAsMzk2MjIsMzk2MjMsMzk2MjQsMzk2MjUsMzk2MjYsMzk2MjksMzk2MzAsMzk2MzEsMzk2MzIsMzk2MzQsMzk2MzYsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDEsMzk2NDIsMzk2NDMsMzk2NDQsMzk2NDUsMzk2NDYsMzk2NDgsMzk2NTAsMzk2NTEsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTYsMzk2NTcsMzk2NTgsMzk2NjAsMzk2NjIsMzk2NjQsMzk2NjUsMzk2NjYsMzk2NjcsMzk2NjgsMzk2NjksMzk2NzAsMzk2NzEsMzk2NzIsMzk2NzQsMzk2NzYsMzk2NzcsMzk2NzgsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODQsMzk2ODUsMzk2ODYsMzQ3NTgsMzQ2OTYsMzQ2OTMsMzQ3MzMsMzQ3MTEsMzQ2OTEsMzQ3MzEsMzQ3ODksMzQ3MzIsMzQ3NDEsMzQ3MzksMzQ3NjMsMzQ3NzEsMzQ3NDksMzQ3NjksMzQ3NTIsMzQ3NjIsMzQ3NzksMzQ3OTQsMzQ3ODQsMzQ3OTgsMzQ4MzgsMzQ4MzUsMzQ4MTQsMzQ4MjYsMzQ4NDMsMzQ4NDksMzQ4NzMsMzQ4NzYsMzI1NjYsMzI1NzgsMzI1ODAsMzI1ODEsMzMyOTYsMzE0ODIsMzE0ODUsMzE0OTYsMzE0OTEsMzE0OTIsMzE1MDksMzE0OTgsMzE1MzEsMzE1MDMsMzE1NTksMzE1NDQsMzE1MzAsMzE1MTMsMzE1MzQsMzE1MzcsMzE1MjAsMzE1MjUsMzE1MjQsMzE1MzksMzE1NTAsMzE1MTgsMzE1NzYsMzE1NzgsMzE1NTcsMzE2MDUsMzE1NjQsMzE1ODEsMzE1ODQsMzE1OTgsMzE2MTEsMzE1ODYsMzE2MDIsMzE2MDEsMzE2MzIsMzE2NTQsMzE2NTUsMzE2NzIsMzE2NjAsMzE2NDUsMzE2NTYsMzE2MjEsMzE2NTgsMzE2NDQsMzE2NTAsMzE2NTksMzE2NjgsMzE2OTcsMzE2ODEsMzE2OTIsMzE3MDksMzE3MDYsMzE3MTcsMzE3MTgsMzE3MjIsMzE3NTYsMzE3NDIsMzE3NDAsMzE3NTksMzE3NjYsMzE3NTUsMzk2ODcsMzk2ODksMzk2OTAsMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTcsMzk2OTgsMzk3MDAsMzk3MDEsMzk3MDIsMzk3MDMsMzk3MDQsMzk3MDUsMzk3MDYsMzk3MDcsMzk3MDgsMzk3MDksMzk3MTAsMzk3MTIsMzk3MTMsMzk3MTQsMzk3MTYsMzk3MTcsMzk3MTgsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjMsMzk3MjQsMzk3MjUsMzk3MjYsMzk3MjgsMzk3MjksMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzQsMzk3MzUsMzk3MzYsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NDIsMzk3NDMsMzk3NDQsMzk3NTAsMzk3NTQsMzk3NTUsMzk3NTYsMzk3NTgsMzk3NjAsMzk3NjIsMzk3NjMsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NjgsMzk3NjksMzk3NzAsMzk3NzEsMzk3NzIsMzk3NzMsMzk3NzQsMzk3NzUsMzk3NzYsMzk3NzcsMzk3NzgsMzk3NzksMzk3ODAsMzk3ODEsMzk3ODIsMzk3ODMsMzk3ODQsMzk3ODUsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTEsMzk3OTIsMzk3OTMsMzk3OTQsMzk3OTUsMzk3OTYsMzk3OTcsMzk3OTgsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDIsMzk4MDMsMzE3NzUsMzE3ODYsMzE3ODIsMzE4MDAsMzE4MDksMzE4MDgsMzMyNzgsMzMyODEsMzMyODIsMzMyODQsMzMyNjAsMzQ4ODQsMzMzMTMsMzMzMTQsMzMzMTUsMzMzMjUsMzMzMjcsMzMzMjAsMzMzMjMsMzMzMzYsMzMzMzksMzMzMzEsMzMzMzIsMzMzNDIsMzMzNDgsMzMzNTMsMzMzNTUsMzMzNTksMzMzNzAsMzMzNzUsMzMzODQsMzQ5NDIsMzQ5NDksMzQ5NTIsMzUwMzIsMzUwMzksMzUxNjYsMzI2NjksMzI2NzEsMzI2NzksMzI2ODcsMzI2ODgsMzI2OTAsMzE4NjgsMjU5MjksMzE4ODksMzE5MDEsMzE5MDAsMzE5MDIsMzE5MDYsMzE5MjIsMzE5MzIsMzE5MzMsMzE5MzcsMzE5NDMsMzE5NDgsMzE5NDksMzE5NDQsMzE5NDEsMzE5NTksMzE5NzYsMzMzOTAsMjYyODAsMzI3MDMsMzI3MTgsMzI3MjUsMzI3NDEsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTAsMzI3NTUsMzE5OTIsMzIxMTksMzIxNjYsMzIxNzQsMzIzMjcsMzI0MTEsNDA2MzIsNDA2MjgsMzYyMTEsMzYyMjgsMzYyNDQsMzYyNDEsMzYyNzMsMzYxOTksMzYyMDUsMzU5MTEsMzU5MTMsMzcxOTQsMzcyMDAsMzcxOTgsMzcxOTksMzcyMjAsMzk4MDQsMzk4MDUsMzk4MDYsMzk4MDcsMzk4MDgsMzk4MDksMzk4MTAsMzk4MTEsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTYsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjAsMzk4MjEsMzk4MjIsMzk4MjMsMzk4MjQsMzk4MjUsMzk4MjYsMzk4MjcsMzk4MjgsMzk4MjksMzk4MzAsMzk4MzEsMzk4MzIsMzk4MzMsMzk4MzQsMzk4MzUsMzk4MzYsMzk4MzcsMzk4MzgsMzk4MzksMzk4NDAsMzk4NDEsMzk4NDIsMzk4NDMsMzk4NDQsMzk4NDUsMzk4NDYsMzk4NDcsMzk4NDgsMzk4NDksMzk4NTAsMzk4NTEsMzk4NTIsMzk4NTMsMzk4NTQsMzk4NTUsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NTksMzk4NjAsMzk4NjEsMzk4NjIsMzk4NjMsMzk4NjQsMzk4NjUsMzk4NjYsMzk4NjcsMzk4NjgsMzk4NjksMzk4NzAsMzk4NzEsMzk4NzIsMzk4NzMsMzk4NzQsMzk4NzUsMzk4NzYsMzk4NzcsMzk4NzgsMzk4NzksMzk4ODAsMzk4ODEsMzk4ODIsMzk4ODMsMzk4ODQsMzk4ODUsMzk4ODYsMzk4ODcsMzk4ODgsMzk4ODksMzk4OTAsMzk4OTEsMzk4OTIsMzk4OTMsMzk4OTQsMzk4OTUsMzk4OTYsMzk4OTcsMzk4OTgsMzk4OTksMzcyMTgsMzcyMTcsMzcyMzIsMzcyMjUsMzcyMzEsMzcyNDUsMzcyNDYsMzcyMzQsMzcyMzYsMzcyNDEsMzcyNjAsMzcyNTMsMzcyNjQsMzcyNjEsMzcyNjUsMzcyODIsMzcyODMsMzcyOTAsMzcyOTMsMzcyOTQsMzcyOTUsMzczMDEsMzczMDAsMzczMDYsMzU5MjUsNDA1NzQsMzYyODAsMzYzMzEsMzYzNTcsMzY0NDEsMzY0NTcsMzYyNzcsMzYyODcsMzYyODQsMzYyODIsMzYyOTIsMzYzMTAsMzYzMTEsMzYzMTQsMzYzMTgsMzYzMDIsMzYzMDMsMzYzMTUsMzYyOTQsMzYzMzIsMzYzNDMsMzYzNDQsMzYzMjMsMzYzNDUsMzYzNDcsMzYzMjQsMzYzNjEsMzYzNDksMzYzNzIsMzYzODEsMzYzODMsMzYzOTYsMzYzOTgsMzYzODcsMzYzOTksMzY0MTAsMzY0MTYsMzY0MDksMzY0MDUsMzY0MTMsMzY0MDEsMzY0MjUsMzY0MTcsMzY0MTgsMzY0MzMsMzY0MzQsMzY0MjYsMzY0NjQsMzY0NzAsMzY0NzYsMzY0NjMsMzY0NjgsMzY0ODUsMzY0OTUsMzY1MDAsMzY0OTYsMzY1MDgsMzY1MTAsMzU5NjAsMzU5NzAsMzU5NzgsMzU5NzMsMzU5OTIsMzU5ODgsMjYwMTEsMzUyODYsMzUyOTQsMzUyOTAsMzUyOTIsMzk5MDAsMzk5MDEsMzk5MDIsMzk5MDMsMzk5MDQsMzk5MDUsMzk5MDYsMzk5MDcsMzk5MDgsMzk5MDksMzk5MTAsMzk5MTEsMzk5MTIsMzk5MTMsMzk5MTQsMzk5MTUsMzk5MTYsMzk5MTcsMzk5MTgsMzk5MTksMzk5MjAsMzk5MjEsMzk5MjIsMzk5MjMsMzk5MjQsMzk5MjUsMzk5MjYsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzEsMzk5MzIsMzk5MzMsMzk5MzQsMzk5MzUsMzk5MzYsMzk5MzcsMzk5MzgsMzk5MzksMzk5NDAsMzk5NDEsMzk5NDIsMzk5NDMsMzk5NDQsMzk5NDUsMzk5NDYsMzk5NDcsMzk5NDgsMzk5NDksMzk5NTAsMzk5NTEsMzk5NTIsMzk5NTMsMzk5NTQsMzk5NTUsMzk5NTYsMzk5NTcsMzk5NTgsMzk5NTksMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjMsMzk5NjQsMzk5NjUsMzk5NjYsMzk5NjcsMzk5NjgsMzk5NjksMzk5NzAsMzk5NzEsMzk5NzIsMzk5NzMsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5NzksMzk5ODAsMzk5ODEsMzk5ODIsMzk5ODMsMzk5ODQsMzk5ODUsMzk5ODYsMzk5ODcsMzk5ODgsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTIsMzk5OTMsMzk5OTQsMzk5OTUsMzUzMDEsMzUzMDcsMzUzMTEsMzUzOTAsMzU2MjIsMzg3MzksMzg2MzMsMzg2NDMsMzg2MzksMzg2NjIsMzg2NTcsMzg2NjQsMzg2NzEsMzg2NzAsMzg2OTgsMzg3MDEsMzg3MDQsMzg3MTgsNDA4MzIsNDA4MzUsNDA4MzcsNDA4MzgsNDA4MzksNDA4NDAsNDA4NDEsNDA4NDIsNDA4NDQsNDA3MDIsNDA3MTUsNDA3MTcsMzg1ODUsMzg1ODgsMzg1ODksMzg2MDYsMzg2MTAsMzA2NTUsMzg2MjQsMzc1MTgsMzc1NTAsMzc1NzYsMzc2OTQsMzc3MzgsMzc4MzQsMzc3NzUsMzc5NTAsMzc5OTUsNDAwNjMsNDAwNjYsNDAwNjksNDAwNzAsNDAwNzEsNDAwNzIsMzEyNjcsNDAwNzUsNDAwNzgsNDAwODAsNDAwODEsNDAwODIsNDAwODQsNDAwODUsNDAwOTAsNDAwOTEsNDAwOTQsNDAwOTUsNDAwOTYsNDAwOTcsNDAwOTgsNDAwOTksNDAxMDEsNDAxMDIsNDAxMDMsNDAxMDQsNDAxMDUsNDAxMDcsNDAxMDksNDAxMTAsNDAxMTIsNDAxMTMsNDAxMTQsNDAxMTUsNDAxMTYsNDAxMTcsNDAxMTgsNDAxMTksNDAxMjIsNDAxMjMsNDAxMjQsNDAxMjUsNDAxMzIsNDAxMzMsNDAxMzQsNDAxMzUsNDAxMzgsNDAxMzksMzk5OTYsMzk5OTcsMzk5OTgsMzk5OTksNDAwMDAsNDAwMDEsNDAwMDIsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDYsNDAwMDcsNDAwMDgsNDAwMDksNDAwMTAsNDAwMTEsNDAwMTIsNDAwMTMsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTcsNDAwMTgsNDAwMTksNDAwMjAsNDAwMjEsNDAwMjIsNDAwMjMsNDAwMjQsNDAwMjUsNDAwMjYsNDAwMjcsNDAwMjgsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzIsNDAwMzMsNDAwMzQsNDAwMzUsNDAwMzYsNDAwMzcsNDAwMzgsNDAwMzksNDAwNDAsNDAwNDEsNDAwNDIsNDAwNDMsNDAwNDQsNDAwNDUsNDAwNDYsNDAwNDcsNDAwNDgsNDAwNDksNDAwNTAsNDAwNTEsNDAwNTIsNDAwNTMsNDAwNTQsNDAwNTUsNDAwNTYsNDAwNTcsNDAwNTgsNDAwNTksNDAwNjEsNDAwNjIsNDAwNjQsNDAwNjcsNDAwNjgsNDAwNzMsNDAwNzQsNDAwNzYsNDAwNzksNDAwODMsNDAwODYsNDAwODcsNDAwODgsNDAwODksNDAwOTMsNDAxMDYsNDAxMDgsNDAxMTEsNDAxMjEsNDAxMjYsNDAxMjcsNDAxMjgsNDAxMjksNDAxMzAsNDAxMzYsNDAxMzcsNDAxNDUsNDAxNDYsNDAxNTQsNDAxNTUsNDAxNjAsNDAxNjEsNDAxNDAsNDAxNDEsNDAxNDIsNDAxNDMsNDAxNDQsNDAxNDcsNDAxNDgsNDAxNDksNDAxNTEsNDAxNTIsNDAxNTMsNDAxNTYsNDAxNTcsNDAxNTksNDAxNjIsMzg3ODAsMzg3ODksMzg4MDEsMzg4MDIsMzg4MDQsMzg4MzEsMzg4MjcsMzg4MTksMzg4MzQsMzg4MzYsMzk2MDEsMzk2MDAsMzk2MDcsNDA1MzYsMzk2MDYsMzk2MTAsMzk2MTIsMzk2MTcsMzk2MTYsMzk2MjEsMzk2MTgsMzk2MjcsMzk2MjgsMzk2MzMsMzk3NDksMzk3NDcsMzk3NTEsMzk3NTMsMzk3NTIsMzk3NTcsMzk3NjEsMzkxNDQsMzkxODEsMzkyMTQsMzkyNTMsMzkyNTIsMzk2NDcsMzk2NDksMzk2NTQsMzk2NjMsMzk2NTksMzk2NzUsMzk2NjEsMzk2NzMsMzk2ODgsMzk2OTUsMzk2OTksMzk3MTEsMzk3MTUsNDA2MzcsNDA2MzgsMzIzMTUsNDA1NzgsNDA1ODMsNDA1ODQsNDA1ODcsNDA1OTQsMzc4NDYsNDA2MDUsNDA2MDcsNDA2NjcsNDA2NjgsNDA2NjksNDA2NzIsNDA2NzEsNDA2NzQsNDA2ODEsNDA2NzksNDA2NzcsNDA2ODIsNDA2ODcsNDA3MzgsNDA3NDgsNDA3NTEsNDA3NjEsNDA3NTksNDA3NjUsNDA3NjYsNDA3NzIsNDAxNjMsNDAxNjQsNDAxNjUsNDAxNjYsNDAxNjcsNDAxNjgsNDAxNjksNDAxNzAsNDAxNzEsNDAxNzIsNDAxNzMsNDAxNzQsNDAxNzUsNDAxNzYsNDAxNzcsNDAxNzgsNDAxNzksNDAxODAsNDAxODEsNDAxODIsNDAxODMsNDAxODQsNDAxODUsNDAxODYsNDAxODcsNDAxODgsNDAxODksNDAxOTAsNDAxOTEsNDAxOTIsNDAxOTMsNDAxOTQsNDAxOTUsNDAxOTYsNDAxOTcsNDAxOTgsNDAxOTksNDAyMDAsNDAyMDEsNDAyMDIsNDAyMDMsNDAyMDQsNDAyMDUsNDAyMDYsNDAyMDcsNDAyMDgsNDAyMDksNDAyMTAsNDAyMTEsNDAyMTIsNDAyMTMsNDAyMTQsNDAyMTUsNDAyMTYsNDAyMTcsNDAyMTgsNDAyMTksNDAyMjAsNDAyMjEsNDAyMjIsNDAyMjMsNDAyMjQsNDAyMjUsNDAyMjYsNDAyMjcsNDAyMjgsNDAyMjksNDAyMzAsNDAyMzEsNDAyMzIsNDAyMzMsNDAyMzQsNDAyMzUsNDAyMzYsNDAyMzcsNDAyMzgsNDAyMzksNDAyNDAsNDAyNDEsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNDUsNDAyNDYsNDAyNDcsNDAyNDgsNDAyNDksNDAyNTAsNDAyNTEsNDAyNTIsNDAyNTMsNDAyNTQsNDAyNTUsNDAyNTYsNDAyNTcsNDAyNTgsNTc5MDgsNTc5MDksNTc5MTAsNTc5MTEsNTc5MTIsNTc5MTMsNTc5MTQsNTc5MTUsNTc5MTYsNTc5MTcsNTc5MTgsNTc5MTksNTc5MjAsNTc5MjEsNTc5MjIsNTc5MjMsNTc5MjQsNTc5MjUsNTc5MjYsNTc5MjcsNTc5MjgsNTc5MjksNTc5MzAsNTc5MzEsNTc5MzIsNTc5MzMsNTc5MzQsNTc5MzUsNTc5MzYsNTc5MzcsNTc5MzgsNTc5MzksNTc5NDAsNTc5NDEsNTc5NDIsNTc5NDMsNTc5NDQsNTc5NDUsNTc5NDYsNTc5NDcsNTc5NDgsNTc5NDksNTc5NTAsNTc5NTEsNTc5NTIsNTc5NTMsNTc5NTQsNTc5NTUsNTc5NTYsNTc5NTcsNTc5NTgsNTc5NTksNTc5NjAsNTc5NjEsNTc5NjIsNTc5NjMsNTc5NjQsNTc5NjUsNTc5NjYsNTc5NjcsNTc5NjgsNTc5NjksNTc5NzAsNTc5NzEsNTc5NzIsNTc5NzMsNTc5NzQsNTc5NzUsNTc5NzYsNTc5NzcsNTc5NzgsNTc5NzksNTc5ODAsNTc5ODEsNTc5ODIsNTc5ODMsNTc5ODQsNTc5ODUsNTc5ODYsNTc5ODcsNTc5ODgsNTc5ODksNTc5OTAsNTc5OTEsNTc5OTIsNTc5OTMsNTc5OTQsNTc5OTUsNTc5OTYsNTc5OTcsNTc5OTgsNTc5OTksNTgwMDAsNTgwMDEsNDAyNTksNDAyNjAsNDAyNjEsNDAyNjIsNDAyNjMsNDAyNjQsNDAyNjUsNDAyNjYsNDAyNjcsNDAyNjgsNDAyNjksNDAyNzAsNDAyNzEsNDAyNzIsNDAyNzMsNDAyNzQsNDAyNzUsNDAyNzYsNDAyNzcsNDAyNzgsNDAyNzksNDAyODAsNDAyODEsNDAyODIsNDAyODMsNDAyODQsNDAyODUsNDAyODYsNDAyODcsNDAyODgsNDAyODksNDAyOTAsNDAyOTEsNDAyOTIsNDAyOTMsNDAyOTQsNDAyOTUsNDAyOTYsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDAsNDAzMDEsNDAzMDIsNDAzMDMsNDAzMDQsNDAzMDUsNDAzMDYsNDAzMDcsNDAzMDgsNDAzMDksNDAzMTAsNDAzMTEsNDAzMTIsNDAzMTMsNDAzMTQsNDAzMTUsNDAzMTYsNDAzMTcsNDAzMTgsNDAzMTksNDAzMjAsNDAzMjEsNDAzMjIsNDAzMjMsNDAzMjQsNDAzMjUsNDAzMjYsNDAzMjcsNDAzMjgsNDAzMjksNDAzMzAsNDAzMzEsNDAzMzIsNDAzMzMsNDAzMzQsNDAzMzUsNDAzMzYsNDAzMzcsNDAzMzgsNDAzMzksNDAzNDAsNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNDUsNDAzNDYsNDAzNDcsNDAzNDgsNDAzNDksNDAzNTAsNDAzNTEsNDAzNTIsNDAzNTMsNDAzNTQsNTgwMDIsNTgwMDMsNTgwMDQsNTgwMDUsNTgwMDYsNTgwMDcsNTgwMDgsNTgwMDksNTgwMTAsNTgwMTEsNTgwMTIsNTgwMTMsNTgwMTQsNTgwMTUsNTgwMTYsNTgwMTcsNTgwMTgsNTgwMTksNTgwMjAsNTgwMjEsNTgwMjIsNTgwMjMsNTgwMjQsNTgwMjUsNTgwMjYsNTgwMjcsNTgwMjgsNTgwMjksNTgwMzAsNTgwMzEsNTgwMzIsNTgwMzMsNTgwMzQsNTgwMzUsNTgwMzYsNTgwMzcsNTgwMzgsNTgwMzksNTgwNDAsNTgwNDEsNTgwNDIsNTgwNDMsNTgwNDQsNTgwNDUsNTgwNDYsNTgwNDcsNTgwNDgsNTgwNDksNTgwNTAsNTgwNTEsNTgwNTIsNTgwNTMsNTgwNTQsNTgwNTUsNTgwNTYsNTgwNTcsNTgwNTgsNTgwNTksNTgwNjAsNTgwNjEsNTgwNjIsNTgwNjMsNTgwNjQsNTgwNjUsNTgwNjYsNTgwNjcsNTgwNjgsNTgwNjksNTgwNzAsNTgwNzEsNTgwNzIsNTgwNzMsNTgwNzQsNTgwNzUsNTgwNzYsNTgwNzcsNTgwNzgsNTgwNzksNTgwODAsNTgwODEsNTgwODIsNTgwODMsNTgwODQsNTgwODUsNTgwODYsNTgwODcsNTgwODgsNTgwODksNTgwOTAsNTgwOTEsNTgwOTIsNTgwOTMsNTgwOTQsNTgwOTUsNDAzNTUsNDAzNTYsNDAzNTcsNDAzNTgsNDAzNTksNDAzNjAsNDAzNjEsNDAzNjIsNDAzNjMsNDAzNjQsNDAzNjUsNDAzNjYsNDAzNjcsNDAzNjgsNDAzNjksNDAzNzAsNDAzNzEsNDAzNzIsNDAzNzMsNDAzNzQsNDAzNzUsNDAzNzYsNDAzNzcsNDAzNzgsNDAzNzksNDAzODAsNDAzODEsNDAzODIsNDAzODMsNDAzODQsNDAzODUsNDAzODYsNDAzODcsNDAzODgsNDAzODksNDAzOTAsNDAzOTEsNDAzOTIsNDAzOTMsNDAzOTQsNDAzOTUsNDAzOTYsNDAzOTcsNDAzOTgsNDAzOTksNDA0MDAsNDA0MDEsNDA0MDIsNDA0MDMsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MDgsNDA0MDksNDA0MTAsNDA0MTEsNDA0MTIsNDA0MTMsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MTcsNDA0MTgsNDA0MTksNDA0MjAsNDA0MjEsNDA0MjIsNDA0MjMsNDA0MjQsNDA0MjUsNDA0MjYsNDA0MjcsNDA0MjgsNDA0MjksNDA0MzAsNDA0MzEsNDA0MzIsNDA0MzMsNDA0MzQsNDA0MzUsNDA0MzYsNDA0MzcsNDA0MzgsNDA0MzksNDA0NDAsNDA0NDEsNDA0NDIsNDA0NDMsNDA0NDQsNDA0NDUsNDA0NDYsNDA0NDcsNDA0NDgsNDA0NDksNDA0NTAsNTgwOTYsNTgwOTcsNTgwOTgsNTgwOTksNTgxMDAsNTgxMDEsNTgxMDIsNTgxMDMsNTgxMDQsNTgxMDUsNTgxMDYsNTgxMDcsNTgxMDgsNTgxMDksNTgxMTAsNTgxMTEsNTgxMTIsNTgxMTMsNTgxMTQsNTgxMTUsNTgxMTYsNTgxMTcsNTgxMTgsNTgxMTksNTgxMjAsNTgxMjEsNTgxMjIsNTgxMjMsNTgxMjQsNTgxMjUsNTgxMjYsNTgxMjcsNTgxMjgsNTgxMjksNTgxMzAsNTgxMzEsNTgxMzIsNTgxMzMsNTgxMzQsNTgxMzUsNTgxMzYsNTgxMzcsNTgxMzgsNTgxMzksNTgxNDAsNTgxNDEsNTgxNDIsNTgxNDMsNTgxNDQsNTgxNDUsNTgxNDYsNTgxNDcsNTgxNDgsNTgxNDksNTgxNTAsNTgxNTEsNTgxNTIsNTgxNTMsNTgxNTQsNTgxNTUsNTgxNTYsNTgxNTcsNTgxNTgsNTgxNTksNTgxNjAsNTgxNjEsNTgxNjIsNTgxNjMsNTgxNjQsNTgxNjUsNTgxNjYsNTgxNjcsNTgxNjgsNTgxNjksNTgxNzAsNTgxNzEsNTgxNzIsNTgxNzMsNTgxNzQsNTgxNzUsNTgxNzYsNTgxNzcsNTgxNzgsNTgxNzksNTgxODAsNTgxODEsNTgxODIsNTgxODMsNTgxODQsNTgxODUsNTgxODYsNTgxODcsNTgxODgsNTgxODksNDA0NTEsNDA0NTIsNDA0NTMsNDA0NTQsNDA0NTUsNDA0NTYsNDA0NTcsNDA0NTgsNDA0NTksNDA0NjAsNDA0NjEsNDA0NjIsNDA0NjMsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjcsNDA0NjgsNDA0NjksNDA0NzAsNDA0NzEsNDA0NzIsNDA0NzMsNDA0NzQsNDA0NzUsNDA0NzYsNDA0NzcsNDA0NzgsNDA0ODQsNDA0ODcsNDA0OTQsNDA0OTYsNDA1MDAsNDA1MDcsNDA1MDgsNDA1MTIsNDA1MjUsNDA1MjgsNDA1MzAsNDA1MzEsNDA1MzIsNDA1MzQsNDA1MzcsNDA1NDEsNDA1NDMsNDA1NDQsNDA1NDUsNDA1NDYsNDA1NDksNDA1NTgsNDA1NTksNDA1NjIsNDA1NjQsNDA1NjUsNDA1NjYsNDA1NjcsNDA1NjgsNDA1NjksNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzMsNDA1NzYsNDA1NzcsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODIsNDA1ODUsNDA1ODYsNDA1ODgsNDA1ODksNDA1OTAsNDA1OTEsNDA1OTIsNDA1OTMsNDA1OTYsNDA1OTcsNDA1OTgsNDA1OTksNDA2MDAsNDA2MDEsNDA2MDIsNDA2MDMsNDA2MDQsNDA2MDYsNDA2MDgsNDA2MDksNDA2MTAsNDA2MTEsNDA2MTIsNDA2MTMsNDA2MTUsNDA2MTYsNDA2MTcsNDA2MTgsNTgxOTAsNTgxOTEsNTgxOTIsNTgxOTMsNTgxOTQsNTgxOTUsNTgxOTYsNTgxOTcsNTgxOTgsNTgxOTksNTgyMDAsNTgyMDEsNTgyMDIsNTgyMDMsNTgyMDQsNTgyMDUsNTgyMDYsNTgyMDcsNTgyMDgsNTgyMDksNTgyMTAsNTgyMTEsNTgyMTIsNTgyMTMsNTgyMTQsNTgyMTUsNTgyMTYsNTgyMTcsNTgyMTgsNTgyMTksNTgyMjAsNTgyMjEsNTgyMjIsNTgyMjMsNTgyMjQsNTgyMjUsNTgyMjYsNTgyMjcsNTgyMjgsNTgyMjksNTgyMzAsNTgyMzEsNTgyMzIsNTgyMzMsNTgyMzQsNTgyMzUsNTgyMzYsNTgyMzcsNTgyMzgsNTgyMzksNTgyNDAsNTgyNDEsNTgyNDIsNTgyNDMsNTgyNDQsNTgyNDUsNTgyNDYsNTgyNDcsNTgyNDgsNTgyNDksNTgyNTAsNTgyNTEsNTgyNTIsNTgyNTMsNTgyNTQsNTgyNTUsNTgyNTYsNTgyNTcsNTgyNTgsNTgyNTksNTgyNjAsNTgyNjEsNTgyNjIsNTgyNjMsNTgyNjQsNTgyNjUsNTgyNjYsNTgyNjcsNTgyNjgsNTgyNjksNTgyNzAsNTgyNzEsNTgyNzIsNTgyNzMsNTgyNzQsNTgyNzUsNTgyNzYsNTgyNzcsNTgyNzgsNTgyNzksNTgyODAsNTgyODEsNTgyODIsNTgyODMsNDA2MTksNDA2MjAsNDA2MjEsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjUsNDA2MjYsNDA2MjcsNDA2MjksNDA2MzAsNDA2MzEsNDA2MzMsNDA2MzQsNDA2MzYsNDA2MzksNDA2NDAsNDA2NDEsNDA2NDIsNDA2NDMsNDA2NDUsNDA2NDYsNDA2NDcsNDA2NDgsNDA2NTAsNDA2NTEsNDA2NTIsNDA2NTYsNDA2NTgsNDA2NTksNDA2NjEsNDA2NjIsNDA2NjMsNDA2NjUsNDA2NjYsNDA2NzAsNDA2NzMsNDA2NzUsNDA2NzYsNDA2NzgsNDA2ODAsNDA2ODMsNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTEsNDA2OTIsNDA2OTMsNDA2OTQsNDA2OTUsNDA2OTYsNDA2OTgsNDA3MDEsNDA3MDMsNDA3MDQsNDA3MDUsNDA3MDYsNDA3MDcsNDA3MDgsNDA3MDksNDA3MTAsNDA3MTEsNDA3MTIsNDA3MTMsNDA3MTQsNDA3MTYsNDA3MTksNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjUsNDA3MjYsNDA3MjgsNDA3MzAsNDA3MzEsNDA3MzIsNDA3MzMsNDA3MzQsNDA3MzUsNDA3MzcsNDA3MzksNDA3NDAsNDA3NDEsNDA3NDIsNDA3NDMsNDA3NDQsNDA3NDUsNDA3NDYsNDA3NDcsNDA3NDksNDA3NTAsNDA3NTIsNDA3NTMsNTgyODQsNTgyODUsNTgyODYsNTgyODcsNTgyODgsNTgyODksNTgyOTAsNTgyOTEsNTgyOTIsNTgyOTMsNTgyOTQsNTgyOTUsNTgyOTYsNTgyOTcsNTgyOTgsNTgyOTksNTgzMDAsNTgzMDEsNTgzMDIsNTgzMDMsNTgzMDQsNTgzMDUsNTgzMDYsNTgzMDcsNTgzMDgsNTgzMDksNTgzMTAsNTgzMTEsNTgzMTIsNTgzMTMsNTgzMTQsNTgzMTUsNTgzMTYsNTgzMTcsNTgzMTgsNTgzMTksNTgzMjAsNTgzMjEsNTgzMjIsNTgzMjMsNTgzMjQsNTgzMjUsNTgzMjYsNTgzMjcsNTgzMjgsNTgzMjksNTgzMzAsNTgzMzEsNTgzMzIsNTgzMzMsNTgzMzQsNTgzMzUsNTgzMzYsNTgzMzcsNTgzMzgsNTgzMzksNTgzNDAsNTgzNDEsNTgzNDIsNTgzNDMsNTgzNDQsNTgzNDUsNTgzNDYsNTgzNDcsNTgzNDgsNTgzNDksNTgzNTAsNTgzNTEsNTgzNTIsNTgzNTMsNTgzNTQsNTgzNTUsNTgzNTYsNTgzNTcsNTgzNTgsNTgzNTksNTgzNjAsNTgzNjEsNTgzNjIsNTgzNjMsNTgzNjQsNTgzNjUsNTgzNjYsNTgzNjcsNTgzNjgsNTgzNjksNTgzNzAsNTgzNzEsNTgzNzIsNTgzNzMsNTgzNzQsNTgzNzUsNTgzNzYsNTgzNzcsNDA3NTQsNDA3NTUsNDA3NTYsNDA3NTcsNDA3NTgsNDA3NjAsNDA3NjIsNDA3NjQsNDA3NjcsNDA3NjgsNDA3NjksNDA3NzAsNDA3NzEsNDA3NzMsNDA3NzQsNDA3NzUsNDA3NzYsNDA3NzcsNDA3NzgsNDA3NzksNDA3ODAsNDA3ODEsNDA3ODIsNDA3ODMsNDA3ODYsNDA3ODcsNDA3ODgsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTMsNDA3OTQsNDA3OTUsNDA3OTYsNDA3OTcsNDA3OTgsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDIsNDA4MDMsNDA4MDQsNDA4MDUsNDA4MDYsNDA4MDcsNDA4MDgsNDA4MDksNDA4MTAsNDA4MTEsNDA4MTIsNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTgsNDA4MTksNDA4MjAsNDA4MjEsNDA4MjIsNDA4MjMsNDA4MjQsNDA4MjUsNDA4MjYsNDA4MjcsNDA4MjgsNDA4MjksNDA4MzAsNDA4MzMsNDA4MzQsNDA4NDUsNDA4NDYsNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTEsNDA4NTIsNDA4NTMsNDA4NTQsNDA4NTUsNDA4NTYsNDA4NjAsNDA4NjEsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjgsNDA4NjksNjM3ODgsNjM4NjUsNjM4OTMsNjM5NzUsNjM5ODUsNTgzNzgsNTgzNzksNTgzODAsNTgzODEsNTgzODIsNTgzODMsNTgzODQsNTgzODUsNTgzODYsNTgzODcsNTgzODgsNTgzODksNTgzOTAsNTgzOTEsNTgzOTIsNTgzOTMsNTgzOTQsNTgzOTUsNTgzOTYsNTgzOTcsNTgzOTgsNTgzOTksNTg0MDAsNTg0MDEsNTg0MDIsNTg0MDMsNTg0MDQsNTg0MDUsNTg0MDYsNTg0MDcsNTg0MDgsNTg0MDksNTg0MTAsNTg0MTEsNTg0MTIsNTg0MTMsNTg0MTQsNTg0MTUsNTg0MTYsNTg0MTcsNTg0MTgsNTg0MTksNTg0MjAsNTg0MjEsNTg0MjIsNTg0MjMsNTg0MjQsNTg0MjUsNTg0MjYsNTg0MjcsNTg0MjgsNTg0MjksNTg0MzAsNTg0MzEsNTg0MzIsNTg0MzMsNTg0MzQsNTg0MzUsNTg0MzYsNTg0MzcsNTg0MzgsNTg0MzksNTg0NDAsNTg0NDEsNTg0NDIsNTg0NDMsNTg0NDQsNTg0NDUsNTg0NDYsNTg0NDcsNTg0NDgsNTg0NDksNTg0NTAsNTg0NTEsNTg0NTIsNTg0NTMsNTg0NTQsNTg0NTUsNTg0NTYsNTg0NTcsNTg0NTgsNTg0NTksNTg0NjAsNTg0NjEsNTg0NjIsNTg0NjMsNTg0NjQsNTg0NjUsNTg0NjYsNTg0NjcsNTg0NjgsNTg0NjksNTg0NzAsNTg0NzEsNjQwMTIsNjQwMTMsNjQwMTQsNjQwMTUsNjQwMTcsNjQwMTksNjQwMjAsNjQwMjQsNjQwMzEsNjQwMzIsNjQwMzMsNjQwMzUsNjQwMzYsNjQwMzksNjQwNDAsNjQwNDEsMTE5MDUsNTk0MTQsNTk0MTUsNTk0MTYsMTE5MDgsMTM0MjcsMTMzODMsMTE5MTIsMTE5MTUsNTk0MjIsMTM3MjYsMTM4NTAsMTM4MzgsMTE5MTYsMTE5MjcsMTQ3MDIsMTQ2MTYsNTk0MzAsMTQ3OTksMTQ4MTUsMTQ5NjMsMTQ4MDAsNTk0MzUsNTk0MzYsMTUxODIsMTU0NzAsMTU1ODQsMTE5NDMsNTk0NDEsNTk0NDIsMTE5NDYsMTY0NzAsMTY3MzUsMTE5NTAsMTcyMDcsMTE5NTUsMTE5NTgsMTE5NTksNTk0NTEsMTczMjksMTczMjQsMTE5NjMsMTczNzMsMTc2MjIsMTgwMTcsMTc5OTYsNTk0NTksMTgyMTEsMTgyMTcsMTgzMDAsMTgzMTcsMTE5NzgsMTg3NTksMTg4MTAsMTg4MTMsMTg4MTgsMTg4MTksMTg4MjEsMTg4MjIsMTg4NDcsMTg4NDMsMTg4NzEsMTg4NzAsNTk0NzYsNTk0NzcsMTk2MTksMTk2MTUsMTk2MTYsMTk2MTcsMTk1NzUsMTk2MTgsMTk3MzEsMTk3MzIsMTk3MzMsMTk3MzQsMTk3MzUsMTk3MzYsMTk3MzcsMTk4ODYsNTk0OTIsNTg0NzIsNTg0NzMsNTg0NzQsNTg0NzUsNTg0NzYsNTg0NzcsNTg0NzgsNTg0NzksNTg0ODAsNTg0ODEsNTg0ODIsNTg0ODMsNTg0ODQsNTg0ODUsNTg0ODYsNTg0ODcsNTg0ODgsNTg0ODksNTg0OTAsNTg0OTEsNTg0OTIsNTg0OTMsNTg0OTQsNTg0OTUsNTg0OTYsNTg0OTcsNTg0OTgsNTg0OTksNTg1MDAsNTg1MDEsNTg1MDIsNTg1MDMsNTg1MDQsNTg1MDUsNTg1MDYsNTg1MDcsNTg1MDgsNTg1MDksNTg1MTAsNTg1MTEsNTg1MTIsNTg1MTMsNTg1MTQsNTg1MTUsNTg1MTYsNTg1MTcsNTg1MTgsNTg1MTksNTg1MjAsNTg1MjEsNTg1MjIsNTg1MjMsNTg1MjQsNTg1MjUsNTg1MjYsNTg1MjcsNTg1MjgsNTg1MjksNTg1MzAsNTg1MzEsNTg1MzIsNTg1MzMsNTg1MzQsNTg1MzUsNTg1MzYsNTg1MzcsNTg1MzgsNTg1MzksNTg1NDAsNTg1NDEsNTg1NDIsNTg1NDMsNTg1NDQsNTg1NDUsNTg1NDYsNTg1NDcsNTg1NDgsNTg1NDksNTg1NTAsNTg1NTEsNTg1NTIsNTg1NTMsNTg1NTQsNTg1NTUsNTg1NTYsNTg1NTcsNTg1NTgsNTg1NTksNTg1NjAsNTg1NjEsNTg1NjIsNTg1NjMsNTg1NjQsNTg1NjVdLFxuICBcImdiMTgwMzAtcmFuZ2VzXCI6W1swLDEyOF0sWzM2LDE2NV0sWzM4LDE2OV0sWzQ1LDE3OF0sWzUwLDE4NF0sWzgxLDIxNl0sWzg5LDIyNl0sWzk1LDIzNV0sWzk2LDIzOF0sWzEwMCwyNDRdLFsxMDMsMjQ4XSxbMTA0LDI1MV0sWzEwNSwyNTNdLFsxMDksMjU4XSxbMTI2LDI3Nl0sWzEzMywyODRdLFsxNDgsMzAwXSxbMTcyLDMyNV0sWzE3NSwzMjldLFsxNzksMzM0XSxbMjA4LDM2NF0sWzMwNiw0NjNdLFszMDcsNDY1XSxbMzA4LDQ2N10sWzMwOSw0NjldLFszMTAsNDcxXSxbMzExLDQ3M10sWzMxMiw0NzVdLFszMTMsNDc3XSxbMzQxLDUwNl0sWzQyOCw1OTRdLFs0NDMsNjEwXSxbNTQ0LDcxMl0sWzU0NSw3MTZdLFs1NTgsNzMwXSxbNzQxLDkzMF0sWzc0Miw5MzhdLFs3NDksOTYyXSxbNzUwLDk3MF0sWzgwNSwxMDI2XSxbODE5LDExMDRdLFs4MjAsMTEwNl0sWzc5MjIsODIwOV0sWzc5MjQsODIxNV0sWzc5MjUsODIxOF0sWzc5MjcsODIyMl0sWzc5MzQsODIzMV0sWzc5NDMsODI0MV0sWzc5NDQsODI0NF0sWzc5NDUsODI0Nl0sWzc5NTAsODI1Ml0sWzgwNjIsODM2NV0sWzgxNDgsODQ1Ml0sWzgxNDksODQ1NF0sWzgxNTIsODQ1OF0sWzgxNjQsODQ3MV0sWzgxNzQsODQ4Ml0sWzgyMzYsODU1Nl0sWzgyNDAsODU3MF0sWzgyNjIsODU5Nl0sWzgyNjQsODYwMl0sWzgzNzQsODcxM10sWzgzODAsODcyMF0sWzgzODEsODcyMl0sWzgzODQsODcyNl0sWzgzODgsODczMV0sWzgzOTAsODczN10sWzgzOTIsODc0MF0sWzgzOTMsODc0Ml0sWzgzOTQsODc0OF0sWzgzOTYsODc1MV0sWzg0MDEsODc2MF0sWzg0MDYsODc2Nl0sWzg0MTYsODc3N10sWzg0MTksODc4MV0sWzg0MjQsODc4N10sWzg0MzcsODgwMl0sWzg0MzksODgwOF0sWzg0NDUsODgxNl0sWzg0ODIsODg1NF0sWzg0ODUsODg1OF0sWzg0OTYsODg3MF0sWzg1MjEsODg5Nl0sWzg2MDMsODk3OV0sWzg5MzYsOTMyMl0sWzg5NDYsOTM3Ml0sWzkwNDYsOTU0OF0sWzkwNTAsOTU4OF0sWzkwNjMsOTYxNl0sWzkwNjYsOTYyMl0sWzkwNzYsOTYzNF0sWzkwOTIsOTY1Ml0sWzkxMDAsOTY2Ml0sWzkxMDgsOTY3Ml0sWzkxMTEsOTY3Nl0sWzkxMTMsOTY4MF0sWzkxMzEsOTcwMl0sWzkxNjIsOTczNV0sWzkxNjQsOTczOF0sWzkyMTgsOTc5M10sWzkyMTksOTc5NV0sWzExMzI5LDExOTA2XSxbMTEzMzEsMTE5MDldLFsxMTMzNCwxMTkxM10sWzExMzM2LDExOTE3XSxbMTEzNDYsMTE5MjhdLFsxMTM2MSwxMTk0NF0sWzExMzYzLDExOTQ3XSxbMTEzNjYsMTE5NTFdLFsxMTM3MCwxMTk1Nl0sWzExMzcyLDExOTYwXSxbMTEzNzUsMTE5NjRdLFsxMTM4OSwxMTk3OV0sWzExNjgyLDEyMjg0XSxbMTE2ODYsMTIyOTJdLFsxMTY4NywxMjMxMl0sWzExNjkyLDEyMzE5XSxbMTE2OTQsMTIzMzBdLFsxMTcxNCwxMjM1MV0sWzExNzE2LDEyNDM2XSxbMTE3MjMsMTI0NDddLFsxMTcyNSwxMjUzNV0sWzExNzMwLDEyNTQzXSxbMTE3MzYsMTI1ODZdLFsxMTk4MiwxMjg0Ml0sWzExOTg5LDEyODUwXSxbMTIxMDIsMTI5NjRdLFsxMjMzNiwxMzIwMF0sWzEyMzQ4LDEzMjE1XSxbMTIzNTAsMTMyMThdLFsxMjM4NCwxMzI1M10sWzEyMzkzLDEzMjYzXSxbMTIzOTUsMTMyNjddLFsxMjM5NywxMzI3MF0sWzEyNTEwLDEzMzg0XSxbMTI1NTMsMTM0MjhdLFsxMjg1MSwxMzcyN10sWzEyOTYyLDEzODM5XSxbMTI5NzMsMTM4NTFdLFsxMzczOCwxNDYxN10sWzEzODIzLDE0NzAzXSxbMTM5MTksMTQ4MDFdLFsxMzkzMywxNDgxNl0sWzE0MDgwLDE0OTY0XSxbMTQyOTgsMTUxODNdLFsxNDU4NSwxNTQ3MV0sWzE0Njk4LDE1NTg1XSxbMTU1ODMsMTY0NzFdLFsxNTg0NywxNjczNl0sWzE2MzE4LDE3MjA4XSxbMTY0MzQsMTczMjVdLFsxNjQzOCwxNzMzMF0sWzE2NDgxLDE3Mzc0XSxbMTY3MjksMTc2MjNdLFsxNzEwMiwxNzk5N10sWzE3MTIyLDE4MDE4XSxbMTczMTUsMTgyMTJdLFsxNzMyMCwxODIxOF0sWzE3NDAyLDE4MzAxXSxbMTc0MTgsMTgzMThdLFsxNzg1OSwxODc2MF0sWzE3OTA5LDE4ODExXSxbMTc5MTEsMTg4MTRdLFsxNzkxNSwxODgyMF0sWzE3OTE2LDE4ODIzXSxbMTc5MzYsMTg4NDRdLFsxNzkzOSwxODg0OF0sWzE3OTYxLDE4ODcyXSxbMTg2NjQsMTk1NzZdLFsxODcwMywxOTYyMF0sWzE4ODE0LDE5NzM4XSxbMTg5NjIsMTk4ODddLFsxOTA0Myw0MDg3MF0sWzMzNDY5LDU5MjQ0XSxbMzM0NzAsNTkzMzZdLFszMzQ3MSw1OTM2N10sWzMzNDg0LDU5NDEzXSxbMzM0ODUsNTk0MTddLFszMzQ5MCw1OTQyM10sWzMzNDk3LDU5NDMxXSxbMzM1MDEsNTk0MzddLFszMzUwNSw1OTQ0M10sWzMzNTEzLDU5NDUyXSxbMzM1MjAsNTk0NjBdLFszMzUzNiw1OTQ3OF0sWzMzNTUwLDU5NDkzXSxbMzc4NDUsNjM3ODldLFszNzkyMSw2Mzg2Nl0sWzM3OTQ4LDYzODk0XSxbMzgwMjksNjM5NzZdLFszODAzOCw2Mzk4Nl0sWzM4MDY0LDY0MDE2XSxbMzgwNjUsNjQwMThdLFszODA2Niw2NDAyMV0sWzM4MDY5LDY0MDI1XSxbMzgwNzUsNjQwMzRdLFszODA3Niw2NDAzN10sWzM4MDc4LDY0MDQyXSxbMzkxMDgsNjUwNzRdLFszOTEwOSw2NTA5M10sWzM5MTEzLDY1MTA3XSxbMzkxMTQsNjUxMTJdLFszOTExNSw2NTEyN10sWzM5MTE2LDY1MTMyXSxbMzkyNjUsNjUzNzVdLFszOTM5NCw2NTUxMF0sWzE4OTAwMCw2NTUzNl1dLFxuICBcImppczAyMDhcIjpbMTIyODgsMTIyODksMTIyOTAsNjUyOTIsNjUyOTQsMTI1MzksNjUzMDYsNjUzMDcsNjUzMTEsNjUyODEsMTI0NDMsMTI0NDQsMTgwLDY1MzQ0LDE2OCw2NTM0Miw2NTUwNyw2NTM0MywxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw4MjEzLDgyMDgsNjUyOTUsNjUzNDAsNjUzNzQsODc0MSw2NTM3Miw4MjMwLDgyMjksODIxNiw4MjE3LDgyMjAsODIyMSw2NTI4OCw2NTI4OSwxMjMwOCwxMjMwOSw2NTMzOSw2NTM0MSw2NTM3MSw2NTM3MywxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSw2NTI5MSw2NTI5MywxNzcsMjE1LDI0Nyw2NTMwOSw4ODAwLDY1MzA4LDY1MzEwLDg4MDYsODgwNyw4NzM0LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTUwOSw2NTI4NCw2NTUwNCw2NTUwNSw2NTI4NSw2NTI4Myw2NTI4Niw2NTI5MCw2NTMxMiwxNjcsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4MjUxLDEyMzA2LDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODc0Myw4NzQ0LDY1NTA2LDg2NTgsODY2MCw4NzA0LDg3MDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODQ5MSw4MjQwLDk4MzksOTgzNyw5ODM0LDgyMjQsODIyNSwxODIsbnVsbCxudWxsLG51bGwsbnVsbCw5NzExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsbnVsbCxudWxsLG51bGwsbnVsbCwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsOTMyNyw5MzI4LDkzMjksOTMzMCw5MzMxLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCwxMzEyOSwxMzA3NiwxMzA5MCwxMzEzMywxMzA4MCwxMzA5NSwxMzA1OSwxMzExMCwxMzEzNywxMzE0MywxMzA2OSwxMzA5NCwxMzA5MSwxMzA5OSwxMzEzMCwxMzExNSwxMzIxMiwxMzIxMywxMzIxNCwxMzE5OCwxMzE5OSwxMzI1MiwxMzIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTMxNzksMTIzMTcsMTIzMTksODQ3MCwxMzI2MSw4NDgxLDEyOTY0LDEyOTY1LDEyOTY2LDEyOTY3LDEyOTY4LDEyODQ5LDEyODUwLDEyODU3LDEzMTgyLDEzMTgxLDEzMTgwLDg3ODYsODgwMSw4NzQ3LDg3NTAsODcyMSw4NzMwLDg4NjksODczNiw4NzM1LDg4OTUsODc1Nyw4NzQ1LDg3NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDEyNCwyMTc4MiwyMzA0MywzODQ2MywyMTY5NiwyNDg1OSwyNTM4NCwyMzAzMCwzNjg5OCwzMzkwOSwzMzU2NCwzMTMxMiwyNDc0NiwyNTU2OSwyODE5NywyNjA5MywzMzg5NCwzMzQ0NiwzOTkyNSwyNjc3MSwyMjMxMSwyNjAxNywyNTIwMSwyMzQ1MSwyMjk5MiwzNDQyNywzOTE1NiwzMjA5OCwzMjE5MCwzOTgyMiwyNTExMCwzMTkwMywzNDk5OSwyMzQzMywyNDI0NSwyNTM1MywyNjI2MywyNjY5NiwzODM0MywzODc5NywyNjQ0NywyMDE5NywyMDIzNCwyMDMwMSwyMDM4MSwyMDU1MywyMjI1OCwyMjgzOSwyMjk5NiwyMzA0MSwyMzU2MSwyNDc5OSwyNDg0NywyNDk0NCwyNjEzMSwyNjg4NSwyODg1OCwzMDAzMSwzMDA2NCwzMTIyNywzMjE3MywzMjIzOSwzMjk2MywzMzgwNiwzNDkxNSwzNTU4NiwzNjk0OSwzNjk4NiwyMTMwNywyMDExNywyMDEzMywyMjQ5NSwzMjk0NiwzNzA1NywzMDk1OSwxOTk2OCwyMjc2OSwyODMyMiwzNjkyMCwzMTI4MiwzMzU3NiwzMzQxOSwzOTk4MywyMDgwMSwyMTM2MCwyMTY5MywyMTcyOSwyMjI0MCwyMzAzNSwyNDM0MSwzOTE1NCwyODEzOSwzMjk5NiwzNDA5MywzODQ5OCwzODUxMiwzODU2MCwzODkwNywyMTUxNSwyMTQ5MSwyMzQzMSwyODg3OSwzMjcwMSwzNjgwMiwzODYzMiwyMTM1OSw0MDI4NCwzMTQxOCwxOTk4NSwzMDg2NywzMzI3NiwyODE5OCwyMjA0MCwyMTc2NCwyNzQyMSwzNDA3NCwzOTk5NSwyMzAxMywyMTQxNywyODAwNiwyOTkxNiwzODI4NywyMjA4MiwyMDExMywzNjkzOSwzODY0MiwzMzYxNSwzOTE4MCwyMTQ3MywyMTk0MiwyMzM0NCwyNDQzMywyNjE0NCwyNjM1NSwyNjYyOCwyNzcwNCwyNzg5MSwyNzk0NSwyOTc4NywzMDQwOCwzMTMxMCwzODk2NCwzMzUyMSwzNDkwNywzNTQyNCwzNzYxMywyODA4MiwzMDEyMywzMDQxMCwzOTM2NSwyNDc0MiwzNTU4NSwzNjIzNCwzODMyMiwyNzAyMiwyMTQyMSwyMDg3MCwyMjI5MCwyMjU3NiwyMjg1MiwyMzQ3NiwyNDMxMCwyNDYxNiwyNTUxMywyNTU4OCwyNzgzOSwyODQzNiwyODgxNCwyODk0OCwyOTAxNywyOTE0MSwyOTUwMywzMjI1NywzMzM5OCwzMzQ4OSwzNDE5OSwzNjk2MCwzNzQ2Nyw0MDIxOSwyMjYzMywyNjA0NCwyNzczOCwyOTk4OSwyMDk4NSwyMjgzMCwyMjg4NSwyNDQ0OCwyNDU0MCwyNTI3NiwyNjEwNiwyNzE3OCwyNzQzMSwyNzU3MiwyOTU3OSwzMjcwNSwzNTE1OCw0MDIzNiw0MDIwNiw0MDY0NCwyMzcxMywyNzc5OCwzMzY1OSwyMDc0MCwyMzYyNywyNTAxNCwzMzIyMiwyNjc0MiwyOTI4MSwyMDA1NywyMDQ3NCwyMTM2OCwyNDY4MSwyODIwMSwzMTMxMSwzODg5OSwxOTk3OSwyMTI3MCwyMDIwNiwyMDMwOSwyMDI4NSwyMDM4NSwyMDMzOSwyMTE1MiwyMTQ4NywyMjAyNSwyMjc5OSwyMzIzMywyMzQ3OCwyMzUyMSwzMTE4NSwyNjI0NywyNjUyNCwyNjU1MCwyNzQ2OCwyNzgyNywyODc3OSwyOTYzNCwzMTExNywzMTE2NiwzMTI5MiwzMTYyMywzMzQ1NywzMzQ5OSwzMzU0MCwzMzY1NSwzMzc3NSwzMzc0NywzNDY2MiwzNTUwNiwyMjA1NywzNjAwOCwzNjgzOCwzNjk0MiwzODY4NiwzNDQ0MiwyMDQyMCwyMzc4NCwyNTEwNSwyOTI3MywzMDAxMSwzMzI1MywzMzQ2OSwzNDU1OCwzNjAzMiwzODU5NywzOTE4NywzOTM4MSwyMDE3MSwyMDI1MCwzNTI5OSwyMjIzOCwyMjYwMiwyMjczMCwyNDMxNSwyNDU1NSwyNDYxOCwyNDcyNCwyNDY3NCwyNTA0MCwyNTEwNiwyNTI5NiwyNTkxMywzOTc0NSwyNjIxNCwyNjgwMCwyODAyMywyODc4NCwzMDAyOCwzMDM0MiwzMjExNywzMzQ0NSwzNDgwOSwzODI4MywzODU0MiwzNTk5NywyMDk3NywyMTE4MiwyMjgwNiwyMTY4MywyMzQ3NSwyMzgzMCwyNDkzNiwyNzAxMCwyODA3OSwzMDg2MSwzMzk5NSwzNDkwMywzNTQ0MiwzNzc5OSwzOTYwOCwyODAxMiwzOTMzNiwzNDUyMSwyMjQzNSwyNjYyMywzNDUxMCwzNzM5MCwyMTEyMywyMjE1MSwyMTUwOCwyNDI3NSwyNTMxMywyNTc4NSwyNjY4NCwyNjY4MCwyNzU3OSwyOTU1NCwzMDkwNiwzMTMzOSwzNTIyNiwzNTI4MiwzNjIwMywzNjYxMSwzNzEwMSwzODMwNywzODU0OCwzODc2MSwyMzM5OCwyMzczMSwyNzAwNSwzODk4OSwzODk5MCwyNTQ5OSwzMTUyMCwyNzE3OSwyNzI2MywyNjgwNiwzOTk0OSwyODUxMSwyMTEwNiwyMTkxNywyNDY4OCwyNTMyNCwyNzk2MywyODE2NywyODM2OSwzMzg4MywzNTA4OCwzNjY3NiwxOTk4OCwzOTk5MywyMTQ5NCwyNjkwNywyNzE5NCwzODc4OCwyNjY2NiwyMDgyOCwzMTQyNywzMzk3MCwzNzM0MCwzNzc3MiwyMjEwNyw0MDIzMiwyNjY1OCwzMzU0MSwzMzg0MSwzMTkwOSwyMTAwMCwzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAxNCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3NywzMjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4MiwzMzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwzODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEwNywzODU5MywzODkyOSwzODk5NiwzOTAwMCwyMDIyNSwyMDIzOCwyMTM2MSwyMTkxNiwyMjEyMCwyMjUyMiwyMjg1NSwyMzMwNSwyMzQ5MiwyMzY5NiwyNDA3NiwyNDE5MCwyNDUyNCwyNTU4MiwyNjQyNiwyNjA3MSwyNjA4MiwyNjM5OSwyNjgyNywyNjgyMCwyNzIzMSwyNDExMiwyNzU4OSwyNzY3MSwyNzc3MywzMDA3OSwzMTA0OCwyMzM5NSwzMTIzMiwzMjAwMCwyNDUwOSwzNTIxNSwzNTM1MiwzNjAyMCwzNjIxNSwzNjU1NiwzNjYzNywzOTEzOCwzOTQzOCwzOTc0MCwyMDA5NiwyMDYwNSwyMDczNiwyMjkzMSwyMzQ1MiwyNTEzNSwyNTIxNiwyNTgzNiwyNzQ1MCwyOTM0NCwzMDA5NywzMTA0NywzMjY4MSwzNDgxMSwzNTUxNiwzNTY5NiwyNTUxNiwzMzczOCwzODgxNiwyMTUxMywyMTUwNywyMTkzMSwyNjcwOCwyNzIyNCwzNTQ0MCwzMDc1OSwyNjQ4NSw0MDY1MywyMTM2NCwyMzQ1OCwzMzA1MCwzNDM4NCwzNjg3MCwxOTk5MiwyMDAzNywyMDE2NywyMDI0MSwyMTQ1MCwyMTU2MCwyMzQ3MCwyNDMzOSwyNDYxMywyNTkzNywyNjQyOSwyNzcxNCwyNzc2MiwyNzg3NSwyODc5MiwyOTY5OSwzMTM1MCwzMTQwNiwzMTQ5NiwzMjAyNiwzMTk5OCwzMjEwMiwyNjA4NywyOTI3NSwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTMxMiwyNTM2OSwyODE5MiwzNDM5NCwzNTM3NywzNjMxNywzNzYyNCwyODQxNywzMTE0MiwzOTc3MCwyMDEzNiwyMDEzOSwyMDE0MCwyMDM3OSwyMDM4NCwyMDY4OSwyMDgwNywzMTQ3OCwyMDg0OSwyMDk4MiwyMTMzMiwyMTI4MSwyMTM3NSwyMTQ4MywyMTkzMiwyMjY1OSwyMzc3NywyNDM3NSwyNDM5NCwyNDYyMywyNDY1NiwyNDY4NSwyNTM3NSwyNTk0NSwyNzIxMSwyNzg0MSwyOTM3OCwyOTQyMSwzMDcwMywzMzAxNiwzMzAyOSwzMzI4OCwzNDEyNiwzNzExMSwzNzg1NywzODkxMSwzOTI1NSwzOTUxNCwyMDIwOCwyMDk1NywyMzU5NywyNjI0MSwyNjk4OSwyMzYxNiwyNjM1NCwyNjk5NywyOTU3NywyNjcwNCwzMTg3MywyMDY3NywyMTIyMCwyMjM0MywyNDA2MiwzNzY3MCwyNjAyMCwyNzQyNywyNzQ1MywyOTc0OCwzMTEwNSwzMTE2NSwzMTU2MywzMjIwMiwzMzQ2NSwzMzc0MCwzNDk0MywzNTE2NywzNTY0MSwzNjgxNywzNzMyOSwyMTUzNSwzNzUwNCwyMDA2MSwyMDUzNCwyMTQ3NywyMTMwNiwyOTM5OSwyOTU5MCwzMDY5NywzMzUxMCwzNjUyNywzOTM2NiwzOTM2OCwzOTM3OCwyMDg1NSwyNDg1OCwzNDM5OCwyMTkzNiwzMTM1NCwyMDU5OCwyMzUwNywzNjkzNSwzODUzMywyMDAxOCwyNzM1NSwzNzM1MSwyMzYzMywyMzYyNCwyNTQ5NiwzMTM5MSwyNzc5NSwzODc3MiwzNjcwNSwzMTQwMiwyOTA2NiwzODUzNiwzMTg3NCwyNjY0NywzMjM2OCwyNjcwNSwzNzc0MCwyMTIzNCwyMTUzMSwzNDIxOSwzNTM0NywzMjY3NiwzNjU1NywzNzA4OSwyMTM1MCwzNDk1MiwzMTA0MSwyMDQxOCwyMDY3MCwyMTAwOSwyMDgwNCwyMTg0MywyMjMxNywyOTY3NCwyMjQxMSwyMjg2NSwyNDQxOCwyNDQ1MiwyNDY5MywyNDk1MCwyNDkzNSwyNTAwMSwyNTUyMiwyNTY1OCwyNTk2NCwyNjIyMywyNjY5MCwyODE3OSwzMDA1NCwzMTI5MywzMTk5NSwzMjA3NiwzMjE1MywzMjMzMSwzMjYxOSwzMzU1MCwzMzYxMCwzNDUwOSwzNTMzNiwzNTQyNywzNTY4NiwzNjYwNSwzODkzOCw0MDMzNSwzMzQ2NCwzNjgxNCwzOTkxMiwyMTEyNywyNTExOSwyNTczMSwyODYwOCwzODU1MywyNjY4OSwyMDYyNSwyNzQyNCwyNzc3MCwyODUwMCwzMTM0OCwzMjA4MCwzNDg4MCwzNTM2MywyNjM3NiwyMDIxNCwyMDUzNywyMDUxOCwyMDU4MSwyMDg2MCwyMTA0OCwyMTA5MSwyMTkyNywyMjI4NywyMjUzMywyMzI0NCwyNDMxNCwyNTAxMCwyNTA4MCwyNTMzMSwyNTQ1OCwyNjkwOCwyNzE3NywyOTMwOSwyOTM1NiwyOTQ4NiwzMDc0MCwzMDgzMSwzMjEyMSwzMDQ3NiwzMjkzNywzNTIxMSwzNTYwOSwzNjA2NiwzNjU2MiwzNjk2MywzNzc0OSwzODUyMiwzODk5NywzOTQ0Myw0MDU2OCwyMDgwMywyMTQwNywyMTQyNywyNDE4NywyNDM1OCwyODE4NywyODMwNCwyOTU3MiwyOTY5NCwzMjA2NywzMzMzNSwzNTMyOCwzNTU3OCwzODQ4MCwyMDA0NiwyMDQ5MSwyMTQ3NiwyMTYyOCwyMjI2NiwyMjk5MywyMzM5NiwyNDA0OSwyNDIzNSwyNDM1OSwyNTE0NCwyNTkyNSwyNjU0MywyODI0NiwyOTM5MiwzMTk0NiwzNDk5NiwzMjkyOSwzMjk5MywzMzc3NiwzNDM4MiwzNTQ2MywzNjMyOCwzNzQzMSwzODU5OSwzOTAxNSw0MDcyMywyMDExNiwyMDExNCwyMDIzNywyMTMyMCwyMTU3NywyMTU2NiwyMzA4NywyNDQ2MCwyNDQ4MSwyNDczNSwyNjc5MSwyNzI3OCwyOTc4NiwzMDg0OSwzNTQ4NiwzNTQ5MiwzNTcwMywzNzI2NCwyMDA2MiwzOTg4MSwyMDEzMiwyMDM0OCwyMDM5OSwyMDUwNSwyMDUwMiwyMDgwOSwyMDg0NCwyMTE1MSwyMTE3NywyMTI0NiwyMTQwMiwyMTQ3NSwyMTUyMSwyMTUxOCwyMTg5NywyMjM1MywyMjQzNCwyMjkwOSwyMzM4MCwyMzM4OSwyMzQzOSwyNDAzNywyNDAzOSwyNDA1NSwyNDE4NCwyNDE5NSwyNDIxOCwyNDI0NywyNDM0NCwyNDY1OCwyNDkwOCwyNTIzOSwyNTMwNCwyNTUxMSwyNTkxNSwyNjExNCwyNjE3OSwyNjM1NiwyNjQ3NywyNjY1NywyNjc3NSwyNzA4MywyNzc0MywyNzk0NiwyODAwOSwyODIwNywyODMxNywzMDAwMiwzMDM0MywzMDgyOCwzMTI5NSwzMTk2OCwzMjAwNSwzMjAyNCwzMjA5NCwzMjE3NywzMjc4OSwzMjc3MSwzMjk0MywzMjk0NSwzMzEwOCwzMzE2NywzMzMyMiwzMzYxOCwzNDg5MiwzNDkxMywzNTYxMSwzNjAwMiwzNjA5MiwzNzA2NiwzNzIzNywzNzQ4OSwzMDc4MywzNzYyOCwzODMwOCwzODQ3NywzODkxNywzOTMyMSwzOTY0MCw0MDI1MSwyMTA4MywyMTE2MywyMTQ5NSwyMTUxMiwyMjc0MSwyNTMzNSwyODY0MCwzNTk0NiwzNjcwMyw0MDYzMywyMDgxMSwyMTA1MSwyMTU3OCwyMjI2OSwzMTI5NiwzNzIzOSw0MDI4OCw0MDY1OCwyOTUwOCwyODQyNSwzMzEzNiwyOTk2OSwyNDU3MywyNDc5NCwzOTU5MiwyOTQwMywzNjc5NiwyNzQ5MiwzODkxNSwyMDE3MCwyMjI1NiwyMjM3MiwyMjcxOCwyMzEzMCwyNDY4MCwyNTAzMSwyNjEyNywyNjExOCwyNjY4MSwyNjgwMSwyODE1MSwzMDE2NSwzMjA1OCwzMzM5MCwzOTc0NiwyMDEyMywyMDMwNCwyMTQ0OSwyMTc2NiwyMzkxOSwyNDAzOCwyNDA0NiwyNjYxOSwyNzgwMSwyOTgxMSwzMDcyMiwzNTQwOCwzNzc4MiwzNTAzOSwyMjM1MiwyNDIzMSwyNTM4NywyMDY2MSwyMDY1MiwyMDg3NywyNjM2OCwyMTcwNSwyMjYyMiwyMjk3MSwyMzQ3MiwyNDQyNSwyNTE2NSwyNTUwNSwyNjY4NSwyNzUwNywyODE2OCwyODc5NywzNzMxOSwyOTMxMiwzMDc0MSwzMDc1OCwzMTA4NSwyNTk5OCwzMjA0OCwzMzc1NiwzNTAwOSwzNjYxNywzODU1NSwyMTA5MiwyMjMxMiwyNjQ0OCwzMjYxOCwzNjAwMSwyMDkxNiwyMjMzOCwzODQ0MiwyMjU4NiwyNzAxOCwzMjk0OCwyMTY4MiwyMzgyMiwyMjUyNCwzMDg2OSw0MDQ0MiwyMDMxNiwyMTA2NiwyMTY0MywyNTY2MiwyNjE1MiwyNjM4OCwyNjYxMywzMTM2NCwzMTU3NCwzMjAzNCwzNzY3OSwyNjcxNiwzOTg1MywzMTU0NSwyMTI3MywyMDg3NCwyMTA0NywyMzUxOSwyNTMzNCwyNTc3NCwyNTgzMCwyNjQxMywyNzU3OCwzNDIxNywzODYwOSwzMDM1MiwzOTg5NCwyNTQyMCwzNzYzOCwzOTg1MSwzMDM5OSwyNjE5NCwxOTk3NywyMDYzMiwyMTQ0MiwyMzY2NSwyNDgwOCwyNTc0NiwyNTk1NSwyNjcxOSwyOTE1OCwyOTY0MiwyOTk4NywzMTYzOSwzMjM4NiwzNDQ1MywzNTcxNSwzNjA1OSwzNzI0MCwzOTE4NCwyNjAyOCwyNjI4MywyNzUzMSwyMDE4MSwyMDE4MCwyMDI4MiwyMDM1MSwyMTA1MCwyMTQ5NiwyMTQ5MCwyMTk4NywyMjIzNSwyMjc2MywyMjk4NywyMjk4NSwyMzAzOSwyMzM3NiwyMzYyOSwyNDA2NiwyNDEwNywyNDUzNSwyNDYwNSwyNTM1MSwyNTkwMywyMzM4OCwyNjAzMSwyNjA0NSwyNjA4OCwyNjUyNSwyNzQ5MCwyNzUxNSwyNzY2MywyOTUwOSwzMTA0OSwzMTE2OSwzMTk5MiwzMjAyNSwzMjA0MywzMjkzMCwzMzAyNiwzMzI2NywzNTIyMiwzNTQyMiwzNTQzMywzNTQzMCwzNTQ2OCwzNTU2NiwzNjAzOSwzNjA2MCwzODYwNCwzOTE2NCwyNzUwMywyMDEwNywyMDI4NCwyMDM2NSwyMDgxNiwyMzM4MywyMzU0NiwyNDkwNCwyNTM0NSwyNjE3OCwyNzQyNSwyODM2MywyNzgzNSwyOTI0NiwyOTg4NSwzMDE2NCwzMDkxMywzMTAzNCwzMjc4MCwzMjgxOSwzMzI1OCwzMzk0MCwzNjc2NiwyNzcyOCw0MDU3NSwyNDMzNSwzNTY3Miw0MDIzNSwzMTQ4MiwzNjYwMCwyMzQzNywzODYzNSwxOTk3MSwyMTQ4OSwyMjUxOSwyMjgzMywyMzI0MSwyMzQ2MCwyNDcxMywyODI4NywyODQyMiwzMDE0MiwzNjA3NCwyMzQ1NSwzNDA0OCwzMTcxMiwyMDU5NCwyNjYxMiwzMzQzNywyMzY0OSwzNDEyMiwzMjI4NiwzMzI5NCwyMDg4OSwyMzU1NiwyNTQ0OCwzNjE5OCwyNjAxMiwyOTAzOCwzMTAzOCwzMjAyMywzMjc3MywzNTYxMywzNjU1NCwzNjk3NCwzNDUwMywzNzAzNCwyMDUxMSwyMTI0MiwyMzYxMCwyNjQ1MSwyODc5NiwyOTIzNywzNzE5NiwzNzMyMCwzNzY3NSwzMzUwOSwyMzQ5MCwyNDM2OSwyNDgyNSwyMDAyNywyMTQ2MiwyMzQzMiwyNTE2MywyNjQxNywyNzUzMCwyOTQxNywyOTY2NCwzMTI3OCwzMzEzMSwzNjI1OSwzNzIwMiwzOTMxOCwyMDc1NCwyMTQ2MywyMTYxMCwyMzU1MSwyNTQ4MCwyNzE5MywzMjE3MiwzODY1NiwyMjIzNCwyMTQ1NCwyMTYwOCwyMzQ0NywyMzYwMSwyNDAzMCwyMDQ2MiwyNDgzMywyNTM0MiwyNzk1NCwzMTE2OCwzMTE3OSwzMjA2NiwzMjMzMywzMjcyMiwzMzI2MSwzMzMxMSwzMzkzNiwzNDg4NiwzNTE4NiwzNTcyOCwzNjQ2OCwzNjY1NSwzNjkxMywzNzE5NSwzNzIyOCwzODU5OCwzNzI3NiwyMDE2MCwyMDMwMywyMDgwNSwyMTMxMywyNDQ2NywyNTEwMiwyNjU4MCwyNzcxMywyODE3MSwyOTUzOSwzMjI5NCwzNzMyNSwzNzUwNywyMTQ2MCwyMjgwOSwyMzQ4NywyODExMywzMTA2OSwzMjMwMiwzMTg5OSwyMjY1NCwyOTA4NywyMDk4NiwzNDg5OSwzNjg0OCwyMDQyNiwyMzgwMywyNjE0OSwzMDYzNiwzMTQ1OSwzMzMwOCwzOTQyMywyMDkzNCwyNDQ5MCwyNjA5MiwyNjk5MSwyNzUyOSwyODE0NywyODMxMCwyODUxNiwzMDQ2MiwzMjAyMCwyNDAzMywzNjk4MSwzNzI1NSwzODkxOCwyMDk2NiwyMTAyMSwyNTE1MiwyNjI1NywyNjMyOSwyODE4NiwyNDI0NiwzMjIxMCwzMjYyNiwyNjM2MCwzNDIyMywzNDI5NSwzNTU3NiwyMTE2MSwyMTQ2NSwyMjg5OSwyNDIwNywyNDQ2NCwyNDY2MSwzNzYwNCwzODUwMCwyMDY2MywyMDc2NywyMTIxMywyMTI4MCwyMTMxOSwyMTQ4NCwyMTczNiwyMTgzMCwyMTgwOSwyMjAzOSwyMjg4OCwyMjk3NCwyMzEwMCwyMzQ3NywyMzU1OCwyMzU2NywyMzU2OSwyMzU3OCwyNDE5NiwyNDIwMiwyNDI4OCwyNDQzMiwyNTIxNSwyNTIyMCwyNTMwNywyNTQ4NCwyNTQ2MywyNjExOSwyNjEyNCwyNjE1NywyNjIzMCwyNjQ5NCwyNjc4NiwyNzE2NywyNzE4OSwyNzgzNiwyODA0MCwyODE2OSwyODI0OCwyODk4OCwyODk2NiwyOTAzMSwzMDE1MSwzMDQ2NSwzMDgxMywzMDk3NywzMTA3NywzMTIxNiwzMTQ1NiwzMTUwNSwzMTkxMSwzMjA1NywzMjkxOCwzMzc1MCwzMzkzMSwzNDEyMSwzNDkwOSwzNTA1OSwzNTM1OSwzNTM4OCwzNTQxMiwzNTQ0MywzNTkzNywzNjA2MiwzNzI4NCwzNzQ3OCwzNzc1OCwzNzkxMiwzODU1NiwzODgwOCwxOTk3OCwxOTk3NiwxOTk5OCwyMDA1NSwyMDg4NywyMTEwNCwyMjQ3OCwyMjU4MCwyMjczMiwyMzMzMCwyNDEyMCwyNDc3MywyNTg1NCwyNjQ2NSwyNjQ1NCwyNzk3MiwyOTM2NiwzMDA2NywzMTMzMSwzMzk3NiwzNTY5OCwzNzMwNCwzNzY2NCwyMjA2NSwyMjUxNiwzOTE2NiwyNTMyNSwyNjg5MywyNzU0MiwyOTE2NSwzMjM0MCwzMjg4NywzMzM5NCwzNTMwMiwzOTEzNSwzNDY0NSwzNjc4NSwyMzYxMSwyMDI4MCwyMDQ0OSwyMDQwNSwyMTc2NywyMzA3MiwyMzUxNywyMzUyOSwyNDUxNSwyNDkxMCwyNTM5MSwyNjAzMiwyNjE4NywyNjg2MiwyNzAzNSwyODAyNCwyODE0NSwzMDAwMywzMDEzNywzMDQ5NSwzMTA3MCwzMTIwNiwzMjA1MSwzMzI1MSwzMzQ1NSwzNDIxOCwzNTI0MiwzNTM4NiwzNjUyMywzNjc2MywzNjkxNCwzNzM0MSwzODY2MywyMDE1NCwyMDE2MSwyMDk5NSwyMjY0NSwyMjc2NCwyMzU2MywyOTk3OCwyMzYxMywzMzEwMiwzNTMzOCwzNjgwNSwzODQ5OSwzODc2NSwzMTUyNSwzNTUzNSwzODkyMCwzNzIxOCwyMjI1OSwyMTQxNiwzNjg4NywyMTU2MSwyMjQwMiwyNDEwMSwyNTUxMiwyNzcwMCwyODgxMCwzMDU2MSwzMTg4MywzMjczNiwzNDkyOCwzNjkzMCwzNzIwNCwzNzY0OCwzNzY1NiwzODU0MywyOTc5MCwzOTYyMCwyMzgxNSwyMzkxMywyNTk2OCwyNjUzMCwzNjI2NCwzODYxOSwyNTQ1NCwyNjQ0MSwyNjkwNSwzMzczMywzODkzNSwzODU5MiwzNTA3MCwyODU0OCwyNTcyMiwyMzU0NCwxOTk5MCwyODcxNiwzMDA0NSwyNjE1OSwyMDkzMiwyMTA0NiwyMTIxOCwyMjk5NSwyNDQ0OSwyNDYxNSwyNTEwNCwyNTkxOSwyNTk3MiwyNjE0MywyNjIyOCwyNjg2NiwyNjY0NiwyNzQ5MSwyODE2NSwyOTI5OCwyOTk4MywzMDQyNywzMTkzNCwzMjg1NCwyMjc2OCwzNTA2OSwzNTE5OSwzNTQ4OCwzNTQ3NSwzNTUzMSwzNjg5MywzNzI2NiwzODczOCwzODc0NSwyNTk5MywzMTI0NiwzMzAzMCwzODU4NywyNDEwOSwyNDc5NiwyNTExNCwyNjAyMSwyNjEzMiwyNjUxMiwzMDcwNywzMTMwOSwzMTgyMSwzMjMxOCwzMzAzNCwzNjAxMiwzNjE5NiwzNjMyMSwzNjQ0NywzMDg4OSwyMDk5OSwyNTMwNSwyNTUwOSwyNTY2NiwyNTI0MCwzNTM3MywzMTM2MywzMTY4MCwzNTUwMCwzODYzNCwzMjExOCwzMzI5MiwzNDYzMywyMDE4NSwyMDgwOCwyMTMxNSwyMTM0NCwyMzQ1OSwyMzU1NCwyMzU3NCwyNDAyOSwyNTEyNiwyNTE1OSwyNTc3NiwyNjY0MywyNjY3NiwyNzg0OSwyNzk3MywyNzkyNywyNjU3OSwyODUwOCwyOTAwNiwyOTA1MywyNjA1OSwzMTM1OSwzMTY2MSwzMjIxOCwzMjMzMCwzMjY4MCwzMzE0NiwzMzMwNywzMzMzNywzNDIxNCwzNTQzOCwzNjA0NiwzNjM0MSwzNjk4NCwzNjk4MywzNzU0OSwzNzUyMSwzODI3NSwzOTg1NCwyMTA2OSwyMTg5MiwyODQ3MiwyODk4MiwyMDg0MCwzMTEwOSwzMjM0MSwzMzIwMywzMTk1MCwyMjA5MiwyMjYwOSwyMzcyMCwyNTUxNCwyNjM2NiwyNjM2NSwyNjk3MCwyOTQwMSwzMDA5NSwzMDA5NCwzMDk5MCwzMTA2MiwzMTE5OSwzMTg5NSwzMjAzMiwzMjA2OCwzNDMxMSwzNTM4MCwzODQ1OSwzNjk2MSw0MDczNiwyMDcxMSwyMTEwOSwyMTQ1MiwyMTQ3NCwyMDQ4OSwyMTkzMCwyMjc2NiwyMjg2MywyOTI0NSwyMzQzNSwyMzY1MiwyMTI3NywyNDgwMywyNDgxOSwyNTQzNiwyNTQ3NSwyNTQwNywyNTUzMSwyNTgwNSwyNjA4OSwyNjM2MSwyNDAzNSwyNzA4NSwyNzEzMywyODQzNywyOTE1NywyMDEwNSwzMDE4NSwzMDQ1NiwzMTM3OSwzMTk2NywzMjIwNywzMjE1NiwzMjg2NSwzMzYwOSwzMzYyNCwzMzkwMCwzMzk4MCwzNDI5OSwzNTAxMywzNjIwOCwzNjg2NSwzNjk3MywzNzc4MywzODY4NCwzOTQ0MiwyMDY4NywyMjY3OSwyNDk3NCwzMzIzNSwzNDEwMSwzNjEwNCwzNjg5NiwyMDQxOSwyMDU5NiwyMTA2MywyMTM2MywyNDY4NywyNTQxNywyNjQ2MywyODIwNCwzNjI3NSwzNjg5NSwyMDQzOSwyMzY0NiwzNjA0MiwyNjA2MywzMjE1NCwyMTMzMCwzNDk2NiwyMDg1NCwyNTUzOSwyMzM4NCwyMzQwMywyMzU2MiwyNTYxMywyNjQ0OSwzNjk1NiwyMDE4MiwyMjgxMCwyMjgyNiwyNzc2MCwzNTQwOSwyMTgyMiwyMjU0OSwyMjk0OSwyNDgxNiwyNTE3MSwyNjU2MSwzMzMzMywyNjk2NSwzODQ2NCwzOTM2NCwzOTQ2NCwyMDMwNywyMjUzNCwyMzU1MCwzMjc4NCwyMzcyOSwyNDExMSwyNDQ1MywyNDYwOCwyNDkwNywyNTE0MCwyNjM2NywyNzg4OCwyODM4MiwzMjk3NCwzMzE1MSwzMzQ5MiwzNDk1NSwzNjAyNCwzNjg2NCwzNjkxMCwzODUzOCw0MDY2NywzOTg5OSwyMDE5NSwyMTQ4OCwyMjgyMywzMTUzMiwzNzI2MSwzODk4OCw0MDQ0MSwyODM4MSwyODcxMSwyMTMzMSwyMTgyOCwyMzQyOSwyNTE3NiwyNTI0NiwyNTI5OSwyNzgxMCwyODY1NSwyOTczMCwzNTM1MSwzNzk0NCwyODYwOSwzNTU4MiwzMzU5MiwyMDk2NywzNDU1MiwyMTQ4MiwyMTQ4MSwyMDI5NCwzNjk0OCwzNjc4NCwyMjg5MCwzMzA3MywyNDA2MSwzMTQ2NiwzNjc5OSwyNjg0MiwzNTg5NSwyOTQzMiw0MDAwOCwyNzE5NywzNTUwNCwyMDAyNSwyMTMzNiwyMjAyMiwyMjM3NCwyNTI4NSwyNTUwNiwyNjA4NiwyNzQ3MCwyODEyOSwyODI1MSwyODg0NSwzMDcwMSwzMTQ3MSwzMTY1OCwzMjE4NywzMjgyOSwzMjk2NiwzNDUwNywzNTQ3NywzNzcyMywyMjI0MywyMjcyNywyNDM4MiwyNjAyOSwyNjI2MiwyNzI2NCwyNzU3MywzMDAwNywzNTUyNywyMDUxNiwzMDY5MywyMjMyMCwyNDM0NywyNDY3NywyNjIzNCwyNzc0NCwzMDE5NiwzMTI1OCwzMjYyMiwzMzI2OCwzNDU4NCwzNjkzMywzOTM0NywzMTY4OSwzMDA0NCwzMTQ4MSwzMTU2OSwzMzk4OCwzNjg4MCwzMTIwOSwzMTM3OCwzMzU5MCwyMzI2NSwzMDUyOCwyMDAxMywyMDIxMCwyMzQ0OSwyNDU0NCwyNTI3NywyNjE3MiwyNjYwOSwyNzg4MCwzNDQxMSwzNDkzNSwzNTM4NywzNzE5OCwzNzYxOSwzOTM3NiwyNzE1OSwyODcxMCwyOTQ4MiwzMzUxMSwzMzg3OSwzNjAxNSwxOTk2OSwyMDgwNiwyMDkzOSwyMTg5OSwyMzU0MSwyNDA4NiwyNDExNSwyNDE5MywyNDM0MCwyNDM3MywyNDQyNywyNDUwMCwyNTA3NCwyNTM2MSwyNjI3NCwyNjM5NywyODUyNiwyOTI2NiwzMDAxMCwzMDUyMiwzMjg4NCwzMzA4MSwzMzE0NCwzNDY3OCwzNTUxOSwzNTU0OCwzNjIyOSwzNjMzOSwzNzUzMCwzODI2MywzODkxNCw0MDE2NSwyMTE4OSwyNTQzMSwzMDQ1MiwyNjM4OSwyNzc4NCwyOTY0NSwzNjAzNSwzNzgwNiwzODUxNSwyNzk0MSwyMjY4NCwyNjg5NCwyNzA4NCwzNjg2MSwzNzc4NiwzMDE3MSwzNjg5MCwyMjYxOCwyNjYyNiwyNTUyNCwyNzEzMSwyMDI5MSwyODQ2MCwyNjU4NCwzNjc5NSwzNDA4NiwzMjE4MCwzNzcxNiwyNjk0MywyODUyOCwyMjM3OCwyMjc3NSwyMzM0MCwzMjA0NCwyOTIyNiwyMTUxNCwzNzM0Nyw0MDM3MiwyMDE0MSwyMDMwMiwyMDU3MiwyMDU5NywyMTA1OSwzNTk5OCwyMTU3NiwyMjU2NCwyMzQ1MCwyNDA5MywyNDIxMywyNDIzNywyNDMxMSwyNDM1MSwyNDcxNiwyNTI2OSwyNTQwMiwyNTU1MiwyNjc5OSwyNzcxMiwzMDg1NSwzMTExOCwzMTI0MywzMjIyNCwzMzM1MSwzNTMzMCwzNTU1OCwzNjQyMCwzNjg4MywzNzA0OCwzNzE2NSwzNzMzNiw0MDcxOCwyNzg3NywyNTY4OCwyNTgyNiwyNTk3MywyODQwNCwzMDM0MCwzMTUxNSwzNjk2OSwzNzg0MSwyODM0NiwyMTc0NiwyNDUwNSwyNTc2NCwzNjY4NSwzNjg0NSwzNzQ0NCwyMDg1NiwyMjYzNSwyMjgyNSwyMzYzNywyNDIxNSwyODE1NSwzMjM5OSwyOTk4MCwzNjAyOCwzNjU3OCwzOTAwMywyODg1NywyMDI1MywyNzU4MywyODU5MywzMDAwMCwzODY1MSwyMDgxNCwyMTUyMCwyMjU4MSwyMjYxNSwyMjk1NiwyMzY0OCwyNDQ2NiwyNjAwNywyNjQ2MCwyODE5MywzMDMzMSwzMzc1OSwzNjA3NywzNjg4NCwzNzExNywzNzcwOSwzMDc1NywzMDc3OCwyMTE2MiwyNDIzMCwyMjMwMywyMjkwMCwyNDU5NCwyMDQ5OCwyMDgyNiwyMDkwOCwyMDk0MSwyMDk5MiwyMTc3NiwyMjYxMiwyMjYxNiwyMjg3MSwyMzQ0NSwyMzc5OCwyMzk0NywyNDc2NCwyNTIzNywyNTY0NSwyNjQ4MSwyNjY5MSwyNjgxMiwyNjg0NywzMDQyMywyODEyMCwyODI3MSwyODA1OSwyODc4MywyOTEyOCwyNDQwMywzMDE2OCwzMTA5NSwzMTU2MSwzMTU3MiwzMTU3MCwzMTk1OCwzMjExMywyMTA0MCwzMzg5MSwzNDE1MywzNDI3NiwzNTM0MiwzNTU4OCwzNTkxMCwzNjM2NywzNjg2NywzNjg3OSwzNzkxMywzODUxOCwzODk1NywzOTQ3MiwzODM2MCwyMDY4NSwyMTIwNSwyMTUxNiwyMjUzMCwyMzU2NiwyNDk5OSwyNTc1OCwyNzkzNCwzMDY0MywzMTQ2MSwzMzAxMiwzMzc5NiwzNjk0NywzNzUwOSwyMzc3Niw0MDE5OSwyMTMxMSwyNDQ3MSwyNDQ5OSwyODA2MCwyOTMwNSwzMDU2MywzMTE2NywzMTcxNiwyNzYwMiwyOTQyMCwzNTUwMSwyNjYyNywyNzIzMywyMDk4NCwzMTM2MSwyNjkzMiwyMzYyNiw0MDE4MiwzMzUxNSwyMzQ5MywzNzE5MywyODcwMiwyMjEzNiwyMzY2MywyNDc3NSwyNTk1OCwyNzc4OCwzNTkzMCwzNjkyOSwzODkzMSwyMTU4NSwyNjMxMSwzNzM4OSwyMjg1NiwzNzAyNywyMDg2OSwyMDA0NSwyMDk3MCwzNDIwMSwzNTU5OCwyODc2MCwyNTQ2NiwzNzcwNywyNjk3OCwzOTM0OCwzMjI2MCwzMDA3MSwyMTMzNSwyNjk3NiwzNjU3NSwzODYyNywyNzc0MSwyMDEwOCwyMzYxMiwyNDMzNiwzNjg0MSwyMTI1MCwzNjA0OSwzMjkwNSwzNDQyNSwyNDMxOSwyNjA4NSwyMDA4MywyMDgzNywyMjkxNCwyMzYxNSwzODg5NCwyMDIxOSwyMjkyMiwyNDUyNSwzNTQ2OSwyODY0MSwzMTE1MiwzMTA3NCwyMzUyNywzMzkwNSwyOTQ4MywyOTEwNSwyNDE4MCwyNDU2NSwyNTQ2NywyNTc1NCwyOTEyMywzMTg5NiwyMDAzNSwyNDMxNiwyMDA0MywyMjQ5MiwyMjE3OCwyNDc0NSwyODYxMSwzMjAxMywzMzAyMSwzMzA3NSwzMzIxNSwzNjc4NiwzNTIyMywzNDQ2OCwyNDA1MiwyNTIyNiwyNTc3MywzNTIwNywyNjQ4NywyNzg3NCwyNzk2NiwyOTc1MCwzMDc3MiwyMzExMCwzMjYyOSwzMzQ1MywzOTM0MCwyMDQ2NywyNDI1OSwyNTMwOSwyNTQ5MCwyNTk0MywyNjQ3OSwzMDQwMywyOTI2MCwzMjk3MiwzMjk1NCwzNjY0OSwzNzE5NywyMDQ5MywyMjUyMSwyMzE4NiwyNjc1NywyNjk5NSwyOTAyOCwyOTQzNywzNjAyMywyMjc3MCwzNjA2NCwzODUwNiwzNjg4OSwzNDY4NywzMTIwNCwzMDY5NSwzMzgzMywyMDI3MSwyMTA5MywyMTMzOCwyNTI5MywyNjU3NSwyNzg1MCwzMDMzMywzMTYzNiwzMTg5MywzMzMzNCwzNDE4MCwzNjg0MywyNjMzMywyODQ0OCwyOTE5MCwzMjI4MywzMzcwNywzOTM2MSw0MDYxNCwyMDk4OSwzMTY2NSwzMDgzNCwzMTY3MiwzMjkwMywzMTU2MCwyNzM2OCwyNDE2MSwzMjkwOCwzMDAzMywzMDA0OCwyMDg0MywzNzQ3NCwyODMwMCwzMDMzMCwzNzI3MSwzOTY1OCwyMDI0MCwzMjYyNCwyNTI0NCwzMTU2NywzODMwOSw0MDE2OSwyMjEzOCwyMjYxNywzNDUzMiwzODU4OCwyMDI3NiwyMTAyOCwyMTMyMiwyMTQ1MywyMTQ2NywyNDA3MCwyNTY0NCwyNjAwMSwyNjQ5NSwyNzcxMCwyNzcyNiwyOTI1NiwyOTM1OSwyOTY3NywzMDAzNiwzMjMyMSwzMzMyNCwzNDI4MSwzNjAwOSwzMTY4NCwzNzMxOCwyOTAzMywzODkzMCwzOTE1MSwyNTQwNSwyNjIxNywzMDA1OCwzMDQzNiwzMDkyOCwzNDExNSwzNDU0MiwyMTI5MCwyMTMyOSwyMTU0MiwyMjkxNSwyNDE5OSwyNDQ0NCwyNDc1NCwyNTE2MSwyNTIwOSwyNTI1OSwyNjAwMCwyNzYwNCwyNzg1MiwzMDEzMCwzMDM4MiwzMDg2NSwzMTE5MiwzMjIwMywzMjYzMSwzMjkzMywzNDk4NywzNTUxMywzNjAyNywzNjk5MSwzODc1MCwzOTEzMSwyNzE0NywzMTgwMCwyMDYzMywyMzYxNCwyNDQ5NCwyNjUwMywyNzYwOCwyOTc0OSwzMDQ3MywzMjY1NCw0MDc2MywyNjU3MCwzMTI1NSwyMTMwNSwzMDA5MSwzOTY2MSwyNDQyMiwzMzE4MSwzMzc3NywzMjkyMCwyNDM4MCwyNDUxNywzMDA1MCwzMTU1OCwzNjkyNCwyNjcyNywyMzAxOSwyMzE5NSwzMjAxNiwzMDMzNCwzNTYyOCwyMDQ2OSwyNDQyNiwyNzE2MSwyNzcwMywyODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTQxMywzNTk2MSwyNDI4NywyNTU1MSwzMDE0OSwzMTE4NiwzMzQ5NSwzNzY3MiwzNzYxOCwzMzk0OCwzNDU0MSwzOTk4MSwyMTY5NywyNDQyOCwyNTk5NiwyNzk5NiwyODY5MywzNjAwNywzNjA1MSwzODk3MSwyNTkzNSwyOTk0MiwxOTk4MSwyMDE4NCwyMjQ5NiwyMjgyNywyMzE0MiwyMzUwMCwyMDkwNCwyNDA2NywyNDIyMCwyNDU5OCwyNTIwNiwyNTk3NSwyNjAyMywyNjIyMiwyODAxNCwyOTIzOCwzMTUyNiwzMzEwNCwzMzE3OCwzMzQzMywzNTY3NiwzNjAwMCwzNjA3MCwzNjIxMiwzODQyOCwzODQ2OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkxNCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwzOTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywyNDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2NiwzMjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwyNzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwyMTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5NywzMTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwyNDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3NiwyNjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwzNTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywyMDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwyNzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwyNDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkzNywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgxOCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwzMjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwzMzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwzMjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAxMSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgxMiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywyMDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwyNDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4NiwyODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwzODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0MiwyNzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwzNDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwzODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0MiwyNjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwyMDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEwNywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAyMyw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwzNzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3MiwzNTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAzNCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQzMSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwyNzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwzNDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIwMDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIwMDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIwMTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgzLDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMzLDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIwNDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIwNDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIwNDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcwLDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIwNzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIwNzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMxNDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEzLDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIxMDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIxMDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIxMTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIxMzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIyODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIxNDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUwLDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIxLDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIxNjc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIxNjk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIxNzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEyLDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIyMDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIyMDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIyMDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEwLDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIyMzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIyNDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIyNDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYxLDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEwLDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIyNzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIyODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAxLDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIzMjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIzMjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIzMzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAxLDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTkyLDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkxLDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIzNjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIzNjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIzOTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIzOTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIzOTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQyLDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0NjgzLDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIyLDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMyNjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgyLDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEyLDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMzMjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODkyLDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTExLDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQxLDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEwLDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEzLDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUxLDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIyLDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3MDAwLDI2OTg3LDI2OTY0LDI3MDA2LDI2OTkwLDI2OTM3LDI2OTk2LDI2OTQxLDI2OTY5LDI2OTI4LDI2OTc3LDI2OTc0LDI2OTczLDI3MDA5LDI2OTg2LDI3MDU4LDI3MDU0LDI3MDg4LDI3MDcxLDI3MDczLDI3MDkxLDI3MDcwLDI3MDg2LDIzNTI4LDI3MDgyLDI3MTAxLDI3MDY3LDI3MDc1LDI3MDQ3LDI3MTgyLDI3MDI1LDI3MDQwLDI3MDM2LDI3MDI5LDI3MDYwLDI3MTAyLDI3MTEyLDI3MTM4LDI3MTYzLDI3MTM1LDI3NDAyLDI3MTI5LDI3MTIyLDI3MTExLDI3MTQxLDI3MDU3LDI3MTY2LDI3MTE3LDI3MTU2LDI3MTE1LDI3MTQ2LDI3MTU0LDI3MzI5LDI3MTcxLDI3MTU1LDI3MjA0LDI3MTQ4LDI3MjUwLDI3MTkwLDI3MjU2LDI3MjA3LDI3MjM0LDI3MjI1LDI3MjM4LDI3MjA4LDI3MTkyLDI3MTcwLDI3MjgwLDI3Mjc3LDI3Mjk2LDI3MjY4LDI3Mjk4LDI3Mjk5LDI3Mjg3LDM0MzI3LDI3MzIzLDI3MzMxLDI3MzMwLDI3MzIwLDI3MzE1LDI3MzA4LDI3MzU4LDI3MzQ1LDI3MzU5LDI3MzA2LDI3MzU0LDI3MzcwLDI3Mzg3LDI3Mzk3LDM0MzI2LDI3Mzg2LDI3NDEwLDI3NDE0LDM5NzI5LDI3NDIzLDI3NDQ4LDI3NDQ3LDMwNDI4LDI3NDQ5LDM5MTUwLDI3NDYzLDI3NDU5LDI3NDY1LDI3NDcyLDI3NDgxLDI3NDc2LDI3NDgzLDI3NDg3LDI3NDg5LDI3NTEyLDI3NTEzLDI3NTE5LDI3NTIwLDI3NTI0LDI3NTIzLDI3NTMzLDI3NTQ0LDI3NTQxLDI3NTUwLDI3NTU2LDI3NTYyLDI3NTYzLDI3NTY3LDI3NTcwLDI3NTY5LDI3NTcxLDI3NTc1LDI3NTgwLDI3NTkwLDI3NTk1LDI3NjAzLDI3NjE1LDI3NjI4LDI3NjI3LDI3NjM1LDI3NjMxLDQwNjM4LDI3NjU2LDI3NjY3LDI3NjY4LDI3Njc1LDI3Njg0LDI3NjgzLDI3NzQyLDI3NzMzLDI3NzQ2LDI3NzU0LDI3Nzc4LDI3Nzg5LDI3ODAyLDI3Nzc3LDI3ODAzLDI3Nzc0LDI3NzUyLDI3NzYzLDI3Nzk0LDI3NzkyLDI3ODQ0LDI3ODg5LDI3ODU5LDI3ODM3LDI3ODYzLDI3ODQ1LDI3ODY5LDI3ODIyLDI3ODI1LDI3ODM4LDI3ODM0LDI3ODY3LDI3ODg3LDI3ODY1LDI3ODgyLDI3OTM1LDM0ODkzLDI3OTU4LDI3OTQ3LDI3OTY1LDI3OTYwLDI3OTI5LDI3OTU3LDI3OTU1LDI3OTIyLDI3OTE2LDI4MDAzLDI4MDUxLDI4MDA0LDI3OTk0LDI4MDI1LDI3OTkzLDI4MDQ2LDI4MDUzLDI4NjQ0LDI4MDM3LDI4MTUzLDI4MTgxLDI4MTcwLDI4MDg1LDI4MTAzLDI4MTM0LDI4MDg4LDI4MTAyLDI4MTQwLDI4MTI2LDI4MTA4LDI4MTM2LDI4MTE0LDI4MTAxLDI4MTU0LDI4MTIxLDI4MTMyLDI4MTE3LDI4MTM4LDI4MTQyLDI4MjA1LDI4MjcwLDI4MjA2LDI4MTg1LDI4Mjc0LDI4MjU1LDI4MjIyLDI4MTk1LDI4MjY3LDI4MjAzLDI4Mjc4LDI4MjM3LDI4MTkxLDI4MjI3LDI4MjE4LDI4MjM4LDI4MTk2LDI4NDE1LDI4MTg5LDI4MjE2LDI4MjkwLDI4MzMwLDI4MzEyLDI4MzYxLDI4MzQzLDI4MzcxLDI4MzQ5LDI4MzM1LDI4MzU2LDI4MzM4LDI4MzcyLDI4MzczLDI4MzAzLDI4MzI1LDI4MzU0LDI4MzE5LDI4NDgxLDI4NDMzLDI4NzQ4LDI4Mzk2LDI4NDA4LDI4NDE0LDI4NDc5LDI4NDAyLDI4NDY1LDI4Mzk5LDI4NDY2LDI4MzY0LDI4NDc4LDI4NDM1LDI4NDA3LDI4NTUwLDI4NTM4LDI4NTM2LDI4NTQ1LDI4NTQ0LDI4NTI3LDI4NTA3LDI4NjU5LDI4NTI1LDI4NTQ2LDI4NTQwLDI4NTA0LDI4NTU4LDI4NTYxLDI4NjEwLDI4NTE4LDI4NTk1LDI4NTc5LDI4NTc3LDI4NTgwLDI4NjAxLDI4NjE0LDI4NTg2LDI4NjM5LDI4NjI5LDI4NjUyLDI4NjI4LDI4NjMyLDI4NjU3LDI4NjU0LDI4NjM1LDI4NjgxLDI4NjgzLDI4NjY2LDI4Njg5LDI4NjczLDI4Njg3LDI4NjcwLDI4Njk5LDI4Njk4LDI4NTMyLDI4NzAxLDI4Njk2LDI4NzAzLDI4NzIwLDI4NzM0LDI4NzIyLDI4NzUzLDI4NzcxLDI4ODI1LDI4ODE4LDI4ODQ3LDI4OTEzLDI4ODQ0LDI4ODU2LDI4ODUxLDI4ODQ2LDI4ODk1LDI4ODc1LDI4ODkzLDI4ODg5LDI4OTM3LDI4OTI1LDI4OTU2LDI4OTUzLDI5MDI5LDI5MDEzLDI5MDY0LDI5MDMwLDI5MDI2LDI5MDA0LDI5MDE0LDI5MDM2LDI5MDcxLDI5MTc5LDI5MDYwLDI5MDc3LDI5MDk2LDI5MTAwLDI5MTQzLDI5MTEzLDI5MTE4LDI5MTM4LDI5MTI5LDI5MTQwLDI5MTM0LDI5MTUyLDI5MTY0LDI5MTU5LDI5MTczLDI5MTgwLDI5MTc3LDI5MTgzLDI5MTk3LDI5MjAwLDI5MjExLDI5MjI0LDI5MjI5LDI5MjI4LDI5MjMyLDI5MjM0LDI5MjQzLDI5MjQ0LDI5MjQ3LDI5MjQ4LDI5MjU0LDI5MjU5LDI5MjcyLDI5MzAwLDI5MzEwLDI5MzE0LDI5MzEzLDI5MzE5LDI5MzMwLDI5MzM0LDI5MzQ2LDI5MzUxLDI5MzY5LDI5MzYyLDI5Mzc5LDI5MzgyLDI5MzgwLDI5MzkwLDI5Mzk0LDI5NDEwLDI5NDA4LDI5NDA5LDI5NDMzLDI5NDMxLDIwNDk1LDI5NDYzLDI5NDUwLDI5NDY4LDI5NDYyLDI5NDY5LDI5NDkyLDI5NDg3LDI5NDgxLDI5NDc3LDI5NTAyLDI5NTE4LDI5NTE5LDQwNjY0LDI5NTI3LDI5NTQ2LDI5NTQ0LDI5NTUyLDI5NTYwLDI5NTU3LDI5NTYzLDI5NTYyLDI5NjQwLDI5NjE5LDI5NjQ2LDI5NjI3LDI5NjMyLDI5NjY5LDI5Njc4LDI5NjYyLDI5ODU4LDI5NzAxLDI5ODA3LDI5NzMzLDI5Njg4LDI5NzQ2LDI5NzU0LDI5NzgxLDI5NzU5LDI5NzkxLDI5Nzg1LDI5NzYxLDI5Nzg4LDI5ODAxLDI5ODA4LDI5Nzk1LDI5ODAyLDI5ODE0LDI5ODIyLDI5ODM1LDI5ODU0LDI5ODYzLDI5ODk4LDI5OTAzLDI5OTA4LDI5NjgxLDI5OTIwLDI5OTIzLDI5OTI3LDI5OTI5LDI5OTM0LDI5OTM4LDI5OTM2LDI5OTM3LDI5OTQ0LDI5OTQzLDI5OTU2LDI5OTU1LDI5OTU3LDI5OTY0LDI5OTY2LDI5OTY1LDI5OTczLDI5OTcxLDI5OTgyLDI5OTkwLDI5OTk2LDMwMDEyLDMwMDIwLDMwMDI5LDMwMDI2LDMwMDI1LDMwMDQzLDMwMDIyLDMwMDQyLDMwMDU3LDMwMDUyLDMwMDU1LDMwMDU5LDMwMDYxLDMwMDcyLDMwMDcwLDMwMDg2LDMwMDg3LDMwMDY4LDMwMDkwLDMwMDg5LDMwMDgyLDMwMTAwLDMwMTA2LDMwMTA5LDMwMTE3LDMwMTE1LDMwMTQ2LDMwMTMxLDMwMTQ3LDMwMTMzLDMwMTQxLDMwMTM2LDMwMTQwLDMwMTI5LDMwMTU3LDMwMTU0LDMwMTYyLDMwMTY5LDMwMTc5LDMwMTc0LDMwMjA2LDMwMjA3LDMwMjA0LDMwMjA5LDMwMTkyLDMwMjAyLDMwMTk0LDMwMTk1LDMwMjE5LDMwMjIxLDMwMjE3LDMwMjM5LDMwMjQ3LDMwMjQwLDMwMjQxLDMwMjQyLDMwMjQ0LDMwMjYwLDMwMjU2LDMwMjY3LDMwMjc5LDMwMjgwLDMwMjc4LDMwMzAwLDMwMjk2LDMwMzA1LDMwMzA2LDMwMzEyLDMwMzEzLDMwMzE0LDMwMzExLDMwMzE2LDMwMzIwLDMwMzIyLDMwMzI2LDMwMzI4LDMwMzMyLDMwMzM2LDMwMzM5LDMwMzQ0LDMwMzQ3LDMwMzUwLDMwMzU4LDMwMzU1LDMwMzYxLDMwMzYyLDMwMzg0LDMwMzg4LDMwMzkyLDMwMzkzLDMwMzk0LDMwNDAyLDMwNDEzLDMwNDIyLDMwNDE4LDMwNDMwLDMwNDMzLDMwNDM3LDMwNDM5LDMwNDQyLDM0MzUxLDMwNDU5LDMwNDcyLDMwNDcxLDMwNDY4LDMwNTA1LDMwNTAwLDMwNDk0LDMwNTAxLDMwNTAyLDMwNDkxLDMwNTE5LDMwNTIwLDMwNTM1LDMwNTU0LDMwNTY4LDMwNTcxLDMwNTU1LDMwNTY1LDMwNTkxLDMwNTkwLDMwNTg1LDMwNjA2LDMwNjAzLDMwNjA5LDMwNjI0LDMwNjIyLDMwNjQwLDMwNjQ2LDMwNjQ5LDMwNjU1LDMwNjUyLDMwNjUzLDMwNjUxLDMwNjYzLDMwNjY5LDMwNjc5LDMwNjgyLDMwNjg0LDMwNjkxLDMwNzAyLDMwNzE2LDMwNzMyLDMwNzM4LDMxMDE0LDMwNzUyLDMxMDE4LDMwNzg5LDMwODYyLDMwODM2LDMwODU0LDMwODQ0LDMwODc0LDMwODYwLDMwODgzLDMwOTAxLDMwODkwLDMwODk1LDMwOTI5LDMwOTE4LDMwOTIzLDMwOTMyLDMwOTEwLDMwOTA4LDMwOTE3LDMwOTIyLDMwOTU2LDMwOTUxLDMwOTM4LDMwOTczLDMwOTY0LDMwOTgzLDMwOTk0LDMwOTkzLDMxMDAxLDMxMDIwLDMxMDE5LDMxMDQwLDMxMDcyLDMxMDYzLDMxMDcxLDMxMDY2LDMxMDYxLDMxMDU5LDMxMDk4LDMxMTAzLDMxMTE0LDMxMTMzLDMxMTQzLDQwNzc5LDMxMTQ2LDMxMTUwLDMxMTU1LDMxMTYxLDMxMTYyLDMxMTc3LDMxMTg5LDMxMjA3LDMxMjEyLDMxMjAxLDMxMjAzLDMxMjQwLDMxMjQ1LDMxMjU2LDMxMjU3LDMxMjY0LDMxMjYzLDMxMTA0LDMxMjgxLDMxMjkxLDMxMjk0LDMxMjg3LDMxMjk5LDMxMzE5LDMxMzA1LDMxMzI5LDMxMzMwLDMxMzM3LDQwODYxLDMxMzQ0LDMxMzUzLDMxMzU3LDMxMzY4LDMxMzgzLDMxMzgxLDMxMzg0LDMxMzgyLDMxNDAxLDMxNDMyLDMxNDA4LDMxNDE0LDMxNDI5LDMxNDI4LDMxNDIzLDM2OTk1LDMxNDMxLDMxNDM0LDMxNDM3LDMxNDM5LDMxNDQ1LDMxNDQzLDMxNDQ5LDMxNDUwLDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYyLDMxNDY5LDMxNDcyLDMxNDkwLDMxNTAzLDMxNDk4LDMxNDk0LDMxNTM5LDMxNTEyLDMxNTEzLDMxNTE4LDMxNTQxLDMxNTI4LDMxNTQyLDMxNTY4LDMxNjEwLDMxNDkyLDMxNTY1LDMxNDk5LDMxNTY0LDMxNTU3LDMxNjA1LDMxNTg5LDMxNjA0LDMxNTkxLDMxNjAwLDMxNjAxLDMxNTk2LDMxNTk4LDMxNjQ1LDMxNjQwLDMxNjQ3LDMxNjI5LDMxNjQ0LDMxNjQyLDMxNjI3LDMxNjM0LDMxNjMxLDMxNTgxLDMxNjQxLDMxNjkxLDMxNjgxLDMxNjkyLDMxNjk1LDMxNjY4LDMxNjg2LDMxNzA5LDMxNzIxLDMxNzYxLDMxNzY0LDMxNzE4LDMxNzE3LDMxODQwLDMxNzQ0LDMxNzUxLDMxNzYzLDMxNzMxLDMxNzM1LDMxNzY3LDMxNzU3LDMxNzM0LDMxNzc5LDMxNzgzLDMxNzg2LDMxNzc1LDMxNzk5LDMxNzg3LDMxODA1LDMxODIwLDMxODExLDMxODI4LDMxODIzLDMxODA4LDMxODI0LDMxODMyLDMxODM5LDMxODQ0LDMxODMwLDMxODQ1LDMxODUyLDMxODYxLDMxODc1LDMxODg4LDMxOTA4LDMxOTE3LDMxOTA2LDMxOTE1LDMxOTA1LDMxOTEyLDMxOTIzLDMxOTIyLDMxOTIxLDMxOTE4LDMxOTI5LDMxOTMzLDMxOTM2LDMxOTQxLDMxOTM4LDMxOTYwLDMxOTU0LDMxOTY0LDMxOTcwLDM5NzM5LDMxOTgzLDMxOTg2LDMxOTg4LDMxOTkwLDMxOTk0LDMyMDA2LDMyMDAyLDMyMDI4LDMyMDIxLDMyMDEwLDMyMDY5LDMyMDc1LDMyMDQ2LDMyMDUwLDMyMDYzLDMyMDUzLDMyMDcwLDMyMTE1LDMyMDg2LDMyMDc4LDMyMTE0LDMyMTA0LDMyMTEwLDMyMDc5LDMyMDk5LDMyMTQ3LDMyMTM3LDMyMDkxLDMyMTQzLDMyMTI1LDMyMTU1LDMyMTg2LDMyMTc0LDMyMTYzLDMyMTgxLDMyMTk5LDMyMTg5LDMyMTcxLDMyMzE3LDMyMTYyLDMyMTc1LDMyMjIwLDMyMTg0LDMyMTU5LDMyMTc2LDMyMjE2LDMyMjIxLDMyMjI4LDMyMjIyLDMyMjUxLDMyMjQyLDMyMjI1LDMyMjYxLDMyMjY2LDMyMjkxLDMyMjg5LDMyMjc0LDMyMzA1LDMyMjg3LDMyMjY1LDMyMjY3LDMyMjkwLDMyMzI2LDMyMzU4LDMyMzE1LDMyMzA5LDMyMzEzLDMyMzIzLDMyMzExLDMyMzA2LDMyMzE0LDMyMzU5LDMyMzQ5LDMyMzQyLDMyMzUwLDMyMzQ1LDMyMzQ2LDMyMzc3LDMyMzYyLDMyMzYxLDMyMzgwLDMyMzc5LDMyMzg3LDMyMjEzLDMyMzgxLDM2NzgyLDMyMzgzLDMyMzkyLDMyMzkzLDMyMzk2LDMyNDAyLDMyNDAwLDMyNDAzLDMyNDA0LDMyNDA2LDMyMzk4LDMyNDExLDMyNDEyLDMyNTY4LDMyNTcwLDMyNTgxLDMyNTg4LDMyNTg5LDMyNTkwLDMyNTkyLDMyNTkzLDMyNTk3LDMyNTk2LDMyNjAwLDMyNjA3LDMyNjA4LDMyNjE2LDMyNjE3LDMyNjE1LDMyNjMyLDMyNjQyLDMyNjQ2LDMyNjQzLDMyNjQ4LDMyNjQ3LDMyNjUyLDMyNjYwLDMyNjcwLDMyNjY5LDMyNjY2LDMyNjc1LDMyNjg3LDMyNjkwLDMyNjk3LDMyNjg2LDMyNjk0LDMyNjk2LDM1Njk3LDMyNzA5LDMyNzEwLDMyNzE0LDMyNzI1LDMyNzI0LDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzU1LDMyNzYxLDM5MTMyLDMyNzc0LDMyNzcyLDMyNzc5LDMyNzg2LDMyNzkyLDMyNzkzLDMyNzk2LDMyODAxLDMyODA4LDMyODMxLDMyODI3LDMyODQyLDMyODM4LDMyODUwLDMyODU2LDMyODU4LDMyODYzLDMyODY2LDMyODcyLDMyODgzLDMyODgyLDMyODgwLDMyODg2LDMyODg5LDMyODkzLDMyODk1LDMyOTAwLDMyOTAyLDMyOTAxLDMyOTIzLDMyOTE1LDMyOTIyLDMyOTQxLDIwODgwLDMyOTQwLDMyOTg3LDMyOTk3LDMyOTg1LDMyOTg5LDMyOTY0LDMyOTg2LDMyOTgyLDMzMDMzLDMzMDA3LDMzMDA5LDMzMDUxLDMzMDY1LDMzMDU5LDMzMDcxLDMzMDk5LDM4NTM5LDMzMDk0LDMzMDg2LDMzMTA3LDMzMTA1LDMzMDIwLDMzMTM3LDMzMTM0LDMzMTI1LDMzMTI2LDMzMTQwLDMzMTU1LDMzMTYwLDMzMTYyLDMzMTUyLDMzMTU0LDMzMTg0LDMzMTczLDMzMTg4LDMzMTg3LDMzMTE5LDMzMTcxLDMzMTkzLDMzMjAwLDMzMjA1LDMzMjE0LDMzMjA4LDMzMjEzLDMzMjE2LDMzMjE4LDMzMjEwLDMzMjI1LDMzMjI5LDMzMjMzLDMzMjQxLDMzMjQwLDMzMjI0LDMzMjQyLDMzMjQ3LDMzMjQ4LDMzMjU1LDMzMjc0LDMzMjc1LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg1LDMzMjg3LDMzMjkwLDMzMjkzLDMzMjk2LDMzMzAyLDMzMzIxLDMzMzIzLDMzMzM2LDMzMzMxLDMzMzQ0LDMzMzY5LDMzMzY4LDMzMzczLDMzMzcwLDMzMzc1LDMzMzgwLDMzMzc4LDMzMzg0LDMzMzg2LDMzMzg3LDMzMzI2LDMzMzkzLDMzMzk5LDMzNDAwLDMzNDA2LDMzNDIxLDMzNDI2LDMzNDUxLDMzNDM5LDMzNDY3LDMzNDUyLDMzNTA1LDMzNTA3LDMzNTAzLDMzNDkwLDMzNTI0LDMzNTIzLDMzNTMwLDMzNjgzLDMzNTM5LDMzNTMxLDMzNTI5LDMzNTAyLDMzNTQyLDMzNTAwLDMzNTQ1LDMzNDk3LDMzNTg5LDMzNTg4LDMzNTU4LDMzNTg2LDMzNTg1LDMzNjAwLDMzNTkzLDMzNjE2LDMzNjA1LDMzNTgzLDMzNTc5LDMzNTU5LDMzNTYwLDMzNjY5LDMzNjkwLDMzNzA2LDMzNjk1LDMzNjk4LDMzNjg2LDMzNTcxLDMzNjc4LDMzNjcxLDMzNjc0LDMzNjYwLDMzNzE3LDMzNjUxLDMzNjUzLDMzNjk2LDMzNjczLDMzNzA0LDMzNzgwLDMzODExLDMzNzcxLDMzNzQyLDMzNzg5LDMzNzk1LDMzNzUyLDMzODAzLDMzNzI5LDMzNzgzLDMzNzk5LDMzNzYwLDMzNzc4LDMzODA1LDMzODI2LDMzODI0LDMzNzI1LDMzODQ4LDM0MDU0LDMzNzg3LDMzOTAxLDMzODM0LDMzODUyLDM0MTM4LDMzOTI0LDMzOTExLDMzODk5LDMzOTY1LDMzOTAyLDMzOTIyLDMzODk3LDMzODYyLDMzODM2LDMzOTAzLDMzOTEzLDMzODQ1LDMzOTk0LDMzODkwLDMzOTc3LDMzOTgzLDMzOTUxLDM0MDA5LDMzOTk3LDMzOTc5LDM0MDEwLDM0MDAwLDMzOTg1LDMzOTkwLDM0MDA2LDMzOTUzLDM0MDgxLDM0MDQ3LDM0MDM2LDM0MDcxLDM0MDcyLDM0MDkyLDM0MDc5LDM0MDY5LDM0MDY4LDM0MDQ0LDM0MTEyLDM0MTQ3LDM0MTM2LDM0MTIwLDM0MTEzLDM0MzA2LDM0MTIzLDM0MTMzLDM0MTc2LDM0MjEyLDM0MTg0LDM0MTkzLDM0MTg2LDM0MjE2LDM0MTU3LDM0MTk2LDM0MjAzLDM0MjgyLDM0MTgzLDM0MjA0LDM0MTY3LDM0MTc0LDM0MTkyLDM0MjQ5LDM0MjM0LDM0MjU1LDM0MjMzLDM0MjU2LDM0MjYxLDM0MjY5LDM0Mjc3LDM0MjY4LDM0Mjk3LDM0MzE0LDM0MzIzLDM0MzE1LDM0MzAyLDM0Mjk4LDM0MzEwLDM0MzM4LDM0MzMwLDM0MzUyLDM0MzY3LDM0MzgxLDIwMDUzLDM0Mzg4LDM0Mzk5LDM0NDA3LDM0NDE3LDM0NDUxLDM0NDY3LDM0NDczLDM0NDc0LDM0NDQzLDM0NDQ0LDM0NDg2LDM0NDc5LDM0NTAwLDM0NTAyLDM0NDgwLDM0NTA1LDM0ODUxLDM0NDc1LDM0NTE2LDM0NTI2LDM0NTM3LDM0NTQwLDM0NTI3LDM0NTIzLDM0NTQzLDM0NTc4LDM0NTY2LDM0NTY4LDM0NTYwLDM0NTYzLDM0NTU1LDM0NTc3LDM0NTY5LDM0NTczLDM0NTUzLDM0NTcwLDM0NjEyLDM0NjIzLDM0NjE1LDM0NjE5LDM0NTk3LDM0NjAxLDM0NTg2LDM0NjU2LDM0NjU1LDM0NjgwLDM0NjM2LDM0NjM4LDM0Njc2LDM0NjQ3LDM0NjY0LDM0NjcwLDM0NjQ5LDM0NjQzLDM0NjU5LDM0NjY2LDM0ODIxLDM0NzIyLDM0NzE5LDM0NjkwLDM0NzM1LDM0NzYzLDM0NzQ5LDM0NzUyLDM0NzY4LDM4NjE0LDM0NzMxLDM0NzU2LDM0NzM5LDM0NzU5LDM0NzU4LDM0NzQ3LDM0Nzk5LDM0ODAyLDM0Nzg0LDM0ODMxLDM0ODI5LDM0ODE0LDM0ODA2LDM0ODA3LDM0ODMwLDM0NzcwLDM0ODMzLDM0ODM4LDM0ODM3LDM0ODUwLDM0ODQ5LDM0ODY1LDM0ODcwLDM0ODczLDM0ODU1LDM0ODc1LDM0ODg0LDM0ODgyLDM0ODk4LDM0OTA1LDM0OTEwLDM0OTE0LDM0OTIzLDM0OTQ1LDM0OTQyLDM0OTc0LDM0OTMzLDM0OTQxLDM0OTk3LDM0OTMwLDM0OTQ2LDM0OTY3LDM0OTYyLDM0OTkwLDM0OTY5LDM0OTc4LDM0OTU3LDM0OTgwLDM0OTkyLDM1MDA3LDM0OTkzLDM1MDExLDM1MDEyLDM1MDI4LDM1MDMyLDM1MDMzLDM1MDM3LDM1MDY1LDM1MDc0LDM1MDY4LDM1MDYwLDM1MDQ4LDM1MDU4LDM1MDc2LDM1MDg0LDM1MDgyLDM1MDkxLDM1MTM5LDM1MTAyLDM1MTA5LDM1MTE0LDM1MTE1LDM1MTM3LDM1MTQwLDM1MTMxLDM1MTI2LDM1MTI4LDM1MTQ4LDM1MTAxLDM1MTY4LDM1MTY2LDM1MTc0LDM1MTcyLDM1MTgxLDM1MTc4LDM1MTgzLDM1MTg4LDM1MTkxLDM1MTk4LDM1MjAzLDM1MjA4LDM1MjEwLDM1MjE5LDM1MjI0LDM1MjMzLDM1MjQxLDM1MjM4LDM1MjQ0LDM1MjQ3LDM1MjUwLDM1MjU4LDM1MjYxLDM1MjYzLDM1MjY0LDM1MjkwLDM1MjkyLDM1MjkzLDM1MzAzLDM1MzE2LDM1MzIwLDM1MzMxLDM1MzUwLDM1MzQ0LDM1MzQwLDM1MzU1LDM1MzU3LDM1MzY1LDM1MzgyLDM1MzkzLDM1NDE5LDM1NDEwLDM1Mzk4LDM1NDAwLDM1NDUyLDM1NDM3LDM1NDM2LDM1NDI2LDM1NDYxLDM1NDU4LDM1NDYwLDM1NDk2LDM1NDg5LDM1NDczLDM1NDkzLDM1NDk0LDM1NDgyLDM1NDkxLDM1NTI0LDM1NTMzLDM1NTIyLDM1NTQ2LDM1NTYzLDM1NTcxLDM1NTU5LDM1NTU2LDM1NTY5LDM1NjA0LDM1NTUyLDM1NTU0LDM1NTc1LDM1NTUwLDM1NTQ3LDM1NTk2LDM1NTkxLDM1NjEwLDM1NTUzLDM1NjA2LDM1NjAwLDM1NjA3LDM1NjE2LDM1NjM1LDM4ODI3LDM1NjIyLDM1NjI3LDM1NjQ2LDM1NjI0LDM1NjQ5LDM1NjYwLDM1NjYzLDM1NjYyLDM1NjU3LDM1NjcwLDM1Njc1LDM1Njc0LDM1NjkxLDM1Njc5LDM1NjkyLDM1Njk1LDM1NzAwLDM1NzA5LDM1NzEyLDM1NzI0LDM1NzI2LDM1NzMwLDM1NzMxLDM1NzM0LDM1NzM3LDM1NzM4LDM1ODk4LDM1OTA1LDM1OTAzLDM1OTEyLDM1OTE2LDM1OTE4LDM1OTIwLDM1OTI1LDM1OTM4LDM1OTQ4LDM1OTYwLDM1OTYyLDM1OTcwLDM1OTc3LDM1OTczLDM1OTc4LDM1OTgxLDM1OTgyLDM1OTg4LDM1OTY0LDM1OTkyLDI1MTE3LDM2MDEzLDM2MDEwLDM2MDI5LDM2MDE4LDM2MDE5LDM2MDE0LDM2MDIyLDM2MDQwLDM2MDMzLDM2MDY4LDM2MDY3LDM2MDU4LDM2MDkzLDM2MDkwLDM2MDkxLDM2MTAwLDM2MTAxLDM2MTA2LDM2MTAzLDM2MTExLDM2MTA5LDM2MTEyLDQwNzgyLDM2MTE1LDM2MDQ1LDM2MTE2LDM2MTE4LDM2MTk5LDM2MjA1LDM2MjA5LDM2MjExLDM2MjI1LDM2MjQ5LDM2MjkwLDM2Mjg2LDM2MjgyLDM2MzAzLDM2MzE0LDM2MzEwLDM2MzAwLDM2MzE1LDM2Mjk5LDM2MzMwLDM2MzMxLDM2MzE5LDM2MzIzLDM2MzQ4LDM2MzYwLDM2MzYxLDM2MzUxLDM2MzgxLDM2MzgyLDM2MzY4LDM2MzgzLDM2NDE4LDM2NDA1LDM2NDAwLDM2NDA0LDM2NDI2LDM2NDIzLDM2NDI1LDM2NDI4LDM2NDMyLDM2NDI0LDM2NDQxLDM2NDUyLDM2NDQ4LDM2Mzk0LDM2NDUxLDM2NDM3LDM2NDcwLDM2NDY2LDM2NDc2LDM2NDgxLDM2NDg3LDM2NDg1LDM2NDg0LDM2NDkxLDM2NDkwLDM2NDk5LDM2NDk3LDM2NTAwLDM2NTA1LDM2NTIyLDM2NTEzLDM2NTI0LDM2NTI4LDM2NTUwLDM2NTI5LDM2NTQyLDM2NTQ5LDM2NTUyLDM2NTU1LDM2NTcxLDM2NTc5LDM2NjA0LDM2NjAzLDM2NTg3LDM2NjA2LDM2NjE4LDM2NjEzLDM2NjI5LDM2NjI2LDM2NjMzLDM2NjI3LDM2NjM2LDM2NjM5LDM2NjM1LDM2NjIwLDM2NjQ2LDM2NjU5LDM2NjY3LDM2NjY1LDM2Njc3LDM2Njc0LDM2NjcwLDM2Njg0LDM2NjgxLDM2Njc4LDM2Njg2LDM2Njk1LDM2NzAwLDM2NzA2LDM2NzA3LDM2NzA4LDM2NzY0LDM2NzY3LDM2NzcxLDM2NzgxLDM2NzgzLDM2NzkxLDM2ODI2LDM2ODM3LDM2ODM0LDM2ODQyLDM2ODQ3LDM2OTk5LDM2ODUyLDM2ODY5LDM2ODU3LDM2ODU4LDM2ODgxLDM2ODg1LDM2ODk3LDM2ODc3LDM2ODk0LDM2ODg2LDM2ODc1LDM2OTAzLDM2OTE4LDM2OTE3LDM2OTIxLDM2ODU2LDM2OTQzLDM2OTQ0LDM2OTQ1LDM2OTQ2LDM2ODc4LDM2OTM3LDM2OTI2LDM2OTUwLDM2OTUyLDM2OTU4LDM2OTY4LDM2OTc1LDM2OTgyLDM4NTY4LDM2OTc4LDM2OTk0LDM2OTg5LDM2OTkzLDM2OTkyLDM3MDAyLDM3MDAxLDM3MDA3LDM3MDMyLDM3MDM5LDM3MDQxLDM3MDQ1LDM3MDkwLDM3MDkyLDI1MTYwLDM3MDgzLDM3MTIyLDM3MTM4LDM3MTQ1LDM3MTcwLDM3MTY4LDM3MTk0LDM3MjA2LDM3MjA4LDM3MjE5LDM3MjIxLDM3MjI1LDM3MjM1LDM3MjM0LDM3MjU5LDM3MjU3LDM3MjUwLDM3MjgyLDM3MjkxLDM3Mjk1LDM3MjkwLDM3MzAxLDM3MzAwLDM3MzA2LDM3MzEyLDM3MzEzLDM3MzIxLDM3MzIzLDM3MzI4LDM3MzM0LDM3MzQzLDM3MzQ1LDM3MzM5LDM3MzcyLDM3MzY1LDM3MzY2LDM3NDA2LDM3Mzc1LDM3Mzk2LDM3NDIwLDM3Mzk3LDM3MzkzLDM3NDcwLDM3NDYzLDM3NDQ1LDM3NDQ5LDM3NDc2LDM3NDQ4LDM3NTI1LDM3NDM5LDM3NDUxLDM3NDU2LDM3NTMyLDM3NTI2LDM3NTIzLDM3NTMxLDM3NDY2LDM3NTgzLDM3NTYxLDM3NTU5LDM3NjA5LDM3NjQ3LDM3NjI2LDM3NzAwLDM3Njc4LDM3NjU3LDM3NjY2LDM3NjU4LDM3NjY3LDM3NjkwLDM3Njg1LDM3NjkxLDM3NzI0LDM3NzI4LDM3NzU2LDM3NzQyLDM3NzE4LDM3ODA4LDM3ODA0LDM3ODA1LDM3NzgwLDM3ODE3LDM3ODQ2LDM3ODQ3LDM3ODY0LDM3ODYxLDM3ODQ4LDM3ODI3LDM3ODUzLDM3ODQwLDM3ODMyLDM3ODYwLDM3OTE0LDM3OTA4LDM3OTA3LDM3ODkxLDM3ODk1LDM3OTA0LDM3OTQyLDM3OTMxLDM3OTQxLDM3OTIxLDM3OTQ2LDM3OTUzLDM3OTcwLDM3OTU2LDM3OTc5LDM3OTg0LDM3OTg2LDM3OTgyLDM3OTk0LDM3NDE3LDM4MDAwLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4MjkyLDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEyLDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAxLDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEzLDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4NjcwLDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkzLDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAxLDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIwLDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5MzkxLDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQwLDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQwMTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQwMjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQwMjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQwNTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQwNjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQwNjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAwLDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImppczAyMTJcIjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzI4LDcxMSwxODQsNzI5LDczMywxNzUsNzMxLDczMCw2NTM3NCw5MDAsOTAxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjEsMTY2LDE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTg2LDE3MCwxNjksMTc0LDg0ODIsMTY0LDg0NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkwMiw5MDQsOTA1LDkwNiw5MzgsbnVsbCw5MDgsbnVsbCw5MTAsOTM5LG51bGwsOTExLG51bGwsbnVsbCxudWxsLG51bGwsOTQwLDk0MSw5NDIsOTQzLDk3MCw5MTIsOTcyLDk2Miw5NzMsOTcxLDk0NCw5NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM4LDEwMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE4LDExMTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTgsMjcyLG51bGwsMjk0LG51bGwsMzA2LG51bGwsMzIxLDMxOSxudWxsLDMzMCwyMTYsMzM4LG51bGwsMzU4LDIyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjIsMzIwLDMyOSwzMzEsMjQ4LDMzOSwyMjMsMzU5LDI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5MywxOTIsMTk2LDE5NCwyNTgsNDYxLDI1NiwyNjAsMTk3LDE5NSwyNjIsMjY0LDI2OCwxOTksMjY2LDI3MCwyMDEsMjAwLDIwMywyMDIsMjgyLDI3OCwyNzQsMjgwLG51bGwsMjg0LDI4NiwyOTAsMjg4LDI5MiwyMDUsMjA0LDIwNywyMDYsNDYzLDMwNCwyOTgsMzAyLDI5NiwzMDgsMzEwLDMxMywzMTcsMzE1LDMyMywzMjcsMzI1LDIwOSwyMTEsMjEwLDIxNCwyMTIsNDY1LDMzNiwzMzIsMjEzLDM0MCwzNDQsMzQyLDM0NiwzNDgsMzUyLDM1MCwzNTYsMzU0LDIxOCwyMTcsMjIwLDIxOSwzNjQsNDY3LDM2OCwzNjIsMzcwLDM2NiwzNjAsNDcxLDQ3NSw0NzMsNDY5LDM3MiwyMjEsMzc2LDM3NCwzNzcsMzgxLDM3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIyNSwyMjQsMjI4LDIyNiwyNTksNDYyLDI1NywyNjEsMjI5LDIyNywyNjMsMjY1LDI2OSwyMzEsMjY3LDI3MSwyMzMsMjMyLDIzNSwyMzQsMjgzLDI3OSwyNzUsMjgxLDUwMSwyODUsMjg3LG51bGwsMjg5LDI5MywyMzcsMjM2LDIzOSwyMzgsNDY0LG51bGwsMjk5LDMwMywyOTcsMzA5LDMxMSwzMTQsMzE4LDMxNiwzMjQsMzI4LDMyNiwyNDEsMjQzLDI0MiwyNDYsMjQ0LDQ2NiwzMzcsMzMzLDI0NSwzNDEsMzQ1LDM0MywzNDcsMzQ5LDM1MywzNTEsMzU3LDM1NSwyNTAsMjQ5LDI1MiwyNTEsMzY1LDQ2OCwzNjksMzYzLDM3MSwzNjcsMzYxLDQ3Miw0NzYsNDc0LDQ3MCwzNzMsMjUzLDI1NSwzNzUsMzc4LDM4MiwzODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTcwLDE5OTcyLDE5OTczLDE5OTgwLDE5OTg2LDE5OTk5LDIwMDAzLDIwMDA0LDIwMDA4LDIwMDExLDIwMDE0LDIwMDE1LDIwMDE2LDIwMDIxLDIwMDMyLDIwMDMzLDIwMDM2LDIwMDM5LDIwMDQ5LDIwMDU4LDIwMDYwLDIwMDY3LDIwMDcyLDIwMDczLDIwMDg0LDIwMDg1LDIwMDg5LDIwMDk1LDIwMTA5LDIwMTE4LDIwMTE5LDIwMTI1LDIwMTQzLDIwMTUzLDIwMTYzLDIwMTc2LDIwMTg2LDIwMTg3LDIwMTkyLDIwMTkzLDIwMTk0LDIwMjAwLDIwMjA3LDIwMjA5LDIwMjExLDIwMjEzLDIwMjIxLDIwMjIyLDIwMjIzLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQ1LDIwMjQ2LDIwMjQ3LDIwMjQ5LDIwMjcwLDIwMjczLDIwMzIwLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg4LDIwMjkwLDIwMjk2LDIwMjk3LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzEyLDIwMzE5LDIwMzIzLDIwMzMwLDIwMzMyLDIwMzM0LDIwMzM3LDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUwLDIwMzUzLDIwMzU0LDIwMzU2LDIwMzU3LDIwMzYxLDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzcyLDIwMzc1LDIwMzc3LDIwMzc4LDIwMzgyLDIwMzgzLDIwNDAyLDIwNDA3LDIwNDA5LDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDIxLDIwNDIyLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDMxLDIwNDM0LDIwNDQ0LDIwNDQ4LDIwNDUwLDIwNDY0LDIwNDY2LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDg0LDIwNDg3LDIwNDkwLDIwNDkyLDIwNDk0LDIwNDk2LDIwNDk5LDIwNTAzLDIwNTA0LDIwNTA3LDIwNTA4LDIwNTA5LDIwNTEwLDIwNTE0LDIwNTE5LDIwNTI2LDIwNTI4LDIwNTMwLDIwNTMxLDIwNTMzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ5LDIwNTUwLDIwNTU0LDIwNTU2LDIwNTU4LDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY3LDIwNTY5LDIwNTc1LDIwNTc2LDIwNTc4LDIwNTc5LDIwNTgyLDIwNTgzLDIwNTg2LDIwNTg5LDIwNTkyLDIwNTkzLDIwNTM5LDIwNjA5LDIwNjExLDIwNjEyLDIwNjE0LDIwNjE4LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjMwLDIwNjM1LDIwNjM2LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjUwLDIwNjU1LDIwNjU2LDIwNjY1LDIwNjY2LDIwNjY5LDIwNjcyLDIwNjc1LDIwNjc2LDIwNjc5LDIwNjg0LDIwNjg2LDIwNjg4LDIwNjkxLDIwNjkyLDIwNjk2LDIwNzAwLDIwNzAxLDIwNzAzLDIwNzA2LDIwNzA4LDIwNzEwLDIwNzEyLDIwNzEzLDIwNzE5LDIwNzIxLDIwNzI2LDIwNzMwLDIwNzM0LDIwNzM5LDIwNzQyLDIwNzQzLDIwNzQ0LDIwNzQ3LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzIyLDIwNzUyLDIwNzU5LDIwNzYxLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzcxLDIwNzc1LDIwNzc2LDIwNzgwLDIwNzgxLDIwNzgzLDIwNzg1LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkyLDIwNzkzLDIwODAyLDIwODEwLDIwODE1LDIwODE5LDIwODIxLDIwODIzLDIwODI0LDIwODMxLDIwODM2LDIwODM4LDIwODYyLDIwODY3LDIwODY4LDIwODc1LDIwODc4LDIwODg4LDIwODkzLDIwODk3LDIwODk5LDIwOTA5LDIwOTIwLDIwOTIyLDIwOTI0LDIwOTI2LDIwOTI3LDIwOTMwLDIwOTM2LDIwOTQzLDIwOTQ1LDIwOTQ2LDIwOTQ3LDIwOTQ5LDIwOTUyLDIwOTU4LDIwOTYyLDIwOTY1LDIwOTc0LDIwOTc4LDIwOTc5LDIwOTgwLDIwOTgzLDIwOTkzLDIwOTk0LDIwOTk3LDIxMDEwLDIxMDExLDIxMDEzLDIxMDE0LDIxMDE2LDIxMDI2LDIxMDMyLDIxMDQxLDIxMDQyLDIxMDQ1LDIxMDUyLDIxMDYxLDIxMDY1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgyLDIxMDg0LDIxMDg3LDIxMDg4LDIxMDg5LDIxMDk0LDIxMTAyLDIxMTExLDIxMTEyLDIxMTEzLDIxMTIwLDIxMTIyLDIxMTI1LDIxMTMwLDIxMTMyLDIxMTM5LDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY3LDIxMTY4LDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc4LDIxMTc5LDIxMTgxLDIxMTg0LDIxMTg4LDIxMTkwLDIxMTkyLDIxMTk2LDIxMTk5LDIxMjAxLDIxMjA0LDIxMjA2LDIxMjExLDIxMjEyLDIxMjE3LDIxMjIxLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI4LDIxMjMyLDIxMjMzLDIxMjM2LDIxMjM4LDIxMjM5LDIxMjQ4LDIxMjUxLDIxMjU4LDIxMjU5LDIxMjYwLDIxMjY1LDIxMjY3LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk2LDIxMjk4LDIxMzAxLDIxMzA4LDIxMzA5LDIxMzEwLDIxMzE0LDIxMzI0LDIxMzIzLDIxMzM3LDIxMzM5LDIxMzQ1LDIxMzQ3LDIxMzQ5LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY5LDIxMzc0LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzkwLDIxMzk1LDIxMzk2LDIxNDAxLDIxNDA1LDIxNDA5LDIxNDEyLDIxNDE4LDIxNDE5LDIxNDIzLDIxNDI2LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDM0LDIxNDM3LDIxNDQwLDIxNDQ1LDIxNDU1LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY5LDIxNDcwLDIxNDcyLDIxNDc4LDIxNDc5LDIxNDkzLDIxNTA2LDIxNTIzLDIxNTMwLDIxNTM3LDIxNTQzLDIxNTQ0LDIxNTQ2LDIxNTUxLDIxNTUzLDIxNTU2LDIxNTU3LDIxNTcxLDIxNTcyLDIxNTc1LDIxNTgxLDIxNTgzLDIxNTk4LDIxNjAyLDIxNjA0LDIxNjA2LDIxNjA3LDIxNjA5LDIxNjExLDIxNjEzLDIxNjE0LDIxNjIwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjQwLDIxNjQxLDIxNjQ1LDIxNjQ5LDIxNjUzLDIxNjU0LDIxNjYwLDIxNjYzLDIxNjY1LDIxNjcwLDIxNjcxLDIxNjczLDIxNjc0LDIxNjc3LDIxNjc4LDIxNjgxLDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkxLDIxNjk1LDIxNzAyLDIxNzA2LDIxNzA5LDIxNzEwLDIxNzI4LDIxNzM4LDIxNzQwLDIxNzQzLDIxNzUwLDIxNzU2LDIxNzU4LDIxNzU5LDIxNzYwLDIxNzYxLDIxNzY1LDIxNzY4LDIxNzY5LDIxNzcyLDIxNzczLDIxNzc0LDIxNzgxLDIxODAyLDIxODAzLDIxODEwLDIxODEzLDIxODE0LDIxODE5LDIxODIwLDIxODIxLDIxODI1LDIxODMxLDIxODMzLDIxODM0LDIxODM3LDIxODQwLDIxODQxLDIxODQ4LDIxODUwLDIxODUxLDIxODU0LDIxODU2LDIxODU3LDIxODYwLDIxODYyLDIxODg3LDIxODg5LDIxODkwLDIxODk0LDIxODk2LDIxOTAyLDIxOTAzLDIxOTA1LDIxOTA2LDIxOTA3LDIxOTA4LDIxOTExLDIxOTIzLDIxOTI0LDIxOTMzLDIxOTM4LDIxOTUxLDIxOTUzLDIxOTU1LDIxOTU4LDIxOTYxLDIxOTYzLDIxOTY0LDIxOTY2LDIxOTY5LDIxOTcwLDIxOTcxLDIxOTc1LDIxOTc2LDIxOTc5LDIxOTgyLDIxOTg2LDIxOTkzLDIyMDA2LDIyMDE1LDIyMDIxLDIyMDI0LDIyMDI2LDIyMDI5LDIyMDMwLDIyMDMxLDIyMDMyLDIyMDMzLDIyMDM0LDIyMDQxLDIyMDYwLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDczLDIyMDc1LDIyMDc2LDIyMDc3LDIyMDc5LDIyMDgwLDIyMDgxLDIyMDgzLDIyMDg0LDIyMDg2LDIyMDg5LDIyMDkxLDIyMDkzLDIyMDk1LDIyMTAwLDIyMTEwLDIyMTEyLDIyMTEzLDIyMTE0LDIyMTE1LDIyMTE4LDIyMTIxLDIyMTI1LDIyMTI3LDIyMTI5LDIyMTMwLDIyMTMzLDIyMTQ4LDIyMTQ5LDIyMTUyLDIyMTU1LDIyMTU2LDIyMTY1LDIyMTY5LDIyMTcwLDIyMTczLDIyMTc0LDIyMTc1LDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkzLDIyMTk1LDIyMTk5LDIyMjA2LDIyMjEzLDIyMjE3LDIyMjE4LDIyMjE5LDIyMjIzLDIyMjI0LDIyMjIwLDIyMjIxLDIyMjMzLDIyMjM2LDIyMjM3LDIyMjM5LDIyMjQxLDIyMjQ0LDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjU3LDIyMjUxLDIyMjUzLDIyMjYyLDIyMjYzLDIyMjczLDIyMjc0LDIyMjc5LDIyMjgyLDIyMjg0LDIyMjg5LDIyMjkzLDIyMjk4LDIyMjk5LDIyMzAxLDIyMzA0LDIyMzA2LDIyMzA3LDIyMzA4LDIyMzA5LDIyMzEzLDIyMzE0LDIyMzE2LDIyMzE4LDIyMzE5LDIyMzIzLDIyMzI0LDIyMzMzLDIyMzM0LDIyMzM1LDIyMzQxLDIyMzQyLDIyMzQ4LDIyMzQ5LDIyMzU0LDIyMzcwLDIyMzczLDIyMzc1LDIyMzc2LDIyMzc5LDIyMzgxLDIyMzgyLDIyMzgzLDIyMzg0LDIyMzg1LDIyMzg3LDIyMzg4LDIyMzg5LDIyMzkxLDIyMzkzLDIyMzk0LDIyMzk1LDIyMzk2LDIyMzk4LDIyNDAxLDIyNDAzLDIyNDEyLDIyNDIwLDIyNDIzLDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDMzLDIyNDIxLDIyNDM5LDIyNDQwLDIyNDQxLDIyNDQ0LDIyNDU2LDIyNDYxLDIyNDcxLDIyNDcyLDIyNDc2LDIyNDc5LDIyNDg1LDIyNDkzLDIyNDk0LDIyNTAwLDIyNTAyLDIyNTAzLDIyNTA1LDIyNTA5LDIyNTEyLDIyNTE3LDIyNTE4LDIyNTIwLDIyNTI1LDIyNTI2LDIyNTI3LDIyNTMxLDIyNTMyLDIyNTM2LDIyNTM3LDIyNDk3LDIyNTQwLDIyNTQxLDIyNTU1LDIyNTU4LDIyNTU5LDIyNTYwLDIyNTY2LDIyNTY3LDIyNTczLDIyNTc4LDIyNTg1LDIyNTkxLDIyNjAxLDIyNjA0LDIyNjA1LDIyNjA3LDIyNjA4LDIyNjEzLDIyNjIzLDIyNjI1LDIyNjI4LDIyNjMxLDIyNjMyLDIyNjQ4LDIyNjUyLDIyNjU1LDIyNjU2LDIyNjU3LDIyNjYzLDIyNjY0LDIyNjY1LDIyNjY2LDIyNjY4LDIyNjY5LDIyNjcxLDIyNjcyLDIyNjc2LDIyNjc4LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjk0LDIyNjk3LDIyNzA1LDIyNzA2LDIyNzI0LDIyNzE2LDIyNzIyLDIyNzI4LDIyNzMzLDIyNzM0LDIyNzM2LDIyNzM4LDIyNzQwLDIyNzQyLDIyNzQ2LDIyNzQ5LDIyNzUzLDIyNzU0LDIyNzYxLDIyNzcxLDIyNzg5LDIyNzkwLDIyNzk1LDIyNzk2LDIyODAyLDIyODAzLDIyODA0LDM0MzY5LDIyODEzLDIyODE3LDIyODE5LDIyODIwLDIyODI0LDIyODMxLDIyODMyLDIyODM1LDIyODM3LDIyODM4LDIyODQ3LDIyODUxLDIyODU0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODkxLDIyODkzLDIyODk1LDIyODk4LDIyOTAxLDIyOTAyLDIyOTA1LDIyOTA3LDIyOTA4LDIyOTIzLDIyOTI0LDIyOTI2LDIyOTMwLDIyOTMzLDIyOTM1LDIyOTQzLDIyOTQ4LDIyOTUxLDIyOTU3LDIyOTU4LDIyOTU5LDIyOTYwLDIyOTYzLDIyOTY3LDIyOTcwLDIyOTcyLDIyOTc3LDIyOTc5LDIyOTgwLDIyOTg0LDIyOTg2LDIyOTg5LDIyOTk0LDIzMDA1LDIzMDA2LDIzMDA3LDIzMDExLDIzMDEyLDIzMDE1LDIzMDIyLDIzMDIzLDIzMDI1LDIzMDI2LDIzMDI4LDIzMDMxLDIzMDQwLDIzMDQ0LDIzMDUyLDIzMDUzLDIzMDU0LDIzMDU4LDIzMDU5LDIzMDcwLDIzMDc1LDIzMDc2LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDg1LDIzMDg4LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE2LDIzMTIwLDIzMTI1LDIzMTM0LDIzMTM5LDIzMTQxLDIzMTQzLDIzMTQ5LDIzMTU5LDIzMTYyLDIzMTYzLDIzMTY2LDIzMTc5LDIzMTg0LDIzMTg3LDIzMTkwLDIzMTkzLDIzMTk2LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAyLDIzMjA3LDIzMjEyLDIzMjE3LDIzMjE4LDIzMjE5LDIzMjIxLDIzMjI0LDIzMjI2LDIzMjI3LDIzMjMxLDIzMjM2LDIzMjM4LDIzMjQwLDIzMjQ3LDIzMjU4LDIzMjYwLDIzMjY0LDIzMjY5LDIzMjc0LDIzMjc4LDIzMjg1LDIzMjg2LDIzMjkzLDIzMjk2LDIzMjk3LDIzMzA0LDIzMzE5LDIzMzQ4LDIzMzIxLDIzMzIzLDIzMzI1LDIzMzI5LDIzMzMzLDIzMzQxLDIzMzUyLDIzMzYxLDIzMzcxLDIzMzcyLDIzMzc4LDIzMzgyLDIzMzkwLDIzNDAwLDIzNDA2LDIzNDA3LDIzNDIwLDIzNDIxLDIzNDIyLDIzNDIzLDIzNDI1LDIzNDI4LDIzNDMwLDIzNDM0LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQzLDIzNDQ0LDIzNDQ2LDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDg0LDIzNDg4LDIzNDg5LDIzNTAxLDIzNTAzLDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTIwLDIzNTM1LDIzNTM3LDIzNTQwLDIzNTQ5LDIzNTY0LDIzNTc1LDIzNTgyLDIzNTgzLDIzNTg3LDIzNTkwLDIzNTkzLDIzNTk1LDIzNTk2LDIzNTk4LDIzNjAwLDIzNjAyLDIzNjA1LDIzNjA2LDIzNjQxLDIzNjQyLDIzNjQ0LDIzNjUwLDIzNjUxLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjYxLDIzNjY0LDIzNjY4LDIzNjY5LDIzNjc0LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjg3LDIzNjg4LDIzNjkwLDIzNjk1LDIzNjk4LDIzNzA5LDIzNzExLDIzNzEyLDIzNzE0LDIzNzE1LDIzNzE4LDIzNzIyLDIzNzMwLDIzNzMyLDIzNzMzLDIzNzM4LDIzNzUzLDIzNzU1LDIzNzYyLDIzNzczLDIzNzY3LDIzNzkwLDIzNzkzLDIzNzk0LDIzNzk2LDIzODA5LDIzODE0LDIzODIxLDIzODI2LDIzODUxLDIzODQzLDIzODQ0LDIzODQ2LDIzODQ3LDIzODU3LDIzODYwLDIzODY1LDIzODY5LDIzODcxLDIzODc0LDIzODc1LDIzODc4LDIzODgwLDIzODkzLDIzODg5LDIzODk3LDIzODgyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA4LDIzOTE0LDIzOTE3LDIzOTIwLDIzOTI5LDIzOTMwLDIzOTM0LDIzOTM1LDIzOTM3LDIzOTM5LDIzOTQ0LDIzOTQ2LDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTYxLDIzOTYzLDIzOTY3LDIzOTY4LDIzOTc1LDIzOTc5LDIzOTg0LDIzOTg4LDIzOTkyLDIzOTkzLDI0MDAzLDI0MDA3LDI0MDExLDI0MDE2LDI0MDE0LDI0MDI0LDI0MDI1LDI0MDMyLDI0MDM2LDI0MDQxLDI0MDU2LDI0MDU3LDI0MDY0LDI0MDcxLDI0MDc3LDI0MDgyLDI0MDg0LDI0MDg1LDI0MDg4LDI0MDk1LDI0MDk2LDI0MTEwLDI0MTA0LDI0MTE0LDI0MTE3LDI0MTI2LDI0MTM5LDI0MTQ0LDI0MTM3LDI0MTQ1LDI0MTUwLDI0MTUyLDI0MTU1LDI0MTU2LDI0MTU4LDI0MTY4LDI0MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc2LDI0MTkyLDI0MjAzLDI0MjA2LDI0MjI2LDI0MjI4LDI0MjI5LDI0MjMyLDI0MjM0LDI0MjM2LDI0MjQxLDI0MjQzLDI0MjUzLDI0MjU0LDI0MjU1LDI0MjYyLDI0MjY4LDI0MjY3LDI0MjcwLDI0MjczLDI0Mjc0LDI0Mjc2LDI0Mjc3LDI0Mjg0LDI0Mjg2LDI0MjkzLDI0Mjk5LDI0MzIyLDI0MzI2LDI0MzI3LDI0MzI4LDI0MzM0LDI0MzQ1LDI0MzQ4LDI0MzQ5LDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcyLDI0Mzc0LDI0Mzc5LDI0MzgxLDI0MzgzLDI0Mzg0LDI0Mzg4LDI0Mzg5LDI0MzkxLDI0Mzk3LDI0NDAwLDI0NDA0LDI0NDA4LDI0NDExLDI0NDE2LDI0NDE5LDI0NDIwLDI0NDIzLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDQwLDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDU3LDI0NDYxLDI0NDYzLDI0NDcwLDI0NDc2LDI0NDc3LDI0NDgyLDI0NDg3LDI0NDkxLDI0NDg0LDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NTA0LDI0NTE2LDI0NTE5LDI0NTIwLDI0NTIxLDI0NTIzLDI0NTI4LDI0NTI5LDI0NTMwLDI0NTMxLDI0NTMyLDI0NTQyLDI0NTQ1LDI0NTQ2LDI0NTUyLDI0NTUzLDI0NTU0LDI0NTU2LDI0NTU3LDI0NTU4LDI0NTU5LDI0NTYyLDI0NTYzLDI0NTY2LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg2LDI0NTg5LDI0NTk1LDI0NTk2LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA3LDI0NjEyLDI0NjIxLDI0NjI3LDI0NjI5LDI0NjQwLDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUyLDI0NjU3LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY5LDI0NjczLDI0Njc5LDI0Njg5LDI0NzAyLDI0NzAzLDI0NzA2LDI0NzEwLDI0NzEyLDI0NzE0LDI0NzE4LDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI4LDI0NzMzLDI0NzM0LDI0NzM4LDI0NzQwLDI0NzQxLDI0NzQ0LDI0NzUyLDI0NzUzLDI0NzU5LDI0NzYzLDI0NzY2LDI0NzcwLDI0NzcyLDI0Nzc2LDI0Nzc3LDI0Nzc4LDI0Nzc5LDI0NzgyLDI0NzgzLDI0Nzg4LDI0Nzg5LDI0NzkzLDI0Nzk1LDI0Nzk3LDI0Nzk4LDI0ODAyLDI0ODA1LDI0ODE4LDI0ODIxLDI0ODI0LDI0ODI4LDI0ODI5LDI0ODM0LDI0ODM5LDI0ODQyLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUyLDI0ODU0LDI0ODU1LDI0ODU3LDI0ODYwLDI0ODYyLDI0ODY2LDI0ODc0LDI0ODc1LDI0ODgwLDI0ODgxLDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg5LDI0ODk3LDI0OTAxLDI0OTAyLDI0OTA1LDI0OTI2LDI0OTI4LDI0OTQwLDI0OTQ2LDI0OTUyLDI0OTU1LDI0OTU2LDI0OTU5LDI0OTYwLDI0OTYxLDI0OTYzLDI0OTY0LDI0OTcxLDI0OTczLDI0OTc4LDI0OTc5LDI0OTgzLDI0OTg0LDI0OTg4LDI0OTg5LDI0OTkxLDI0OTkyLDI0OTk3LDI1MDAwLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDExLDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgwLDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkzLDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1NzkwLDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUyLDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEzLDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUwLDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYyLDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgxLDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTkyLDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIxLDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgyLDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMwLDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3NzgyLDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAxLDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYxLDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQwLDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkzLDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIwLDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5MzgzLDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAzLDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMyLDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQwLDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgxLDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMyLDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMwMTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMwMjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMwMzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMwMzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMwNDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMwNTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMwNTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcwLDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMwNjc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMwNjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUzLDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzkyLDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMwODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMwODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMwODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcwLDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMxMDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMxMDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMxMDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMyLDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUzLDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMxMjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMxMjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkwLDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMxMzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMxNDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMxNDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMxLDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQwLDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMxNjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMxNjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMxNjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAzLDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIyLDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMxNzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMxNzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMxODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEwLDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMxOTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMxOTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMyMDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgxLDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkzLDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMyMTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMyMTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMyMzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMyMzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMyMzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkxLDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMyNjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMyNjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMyNzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMyODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMyOTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMzMTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMzMTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIxLDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMzMzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMzMzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMzNDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMzNDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMzNTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgyLDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMzNjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMzNjg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMzNzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcwLDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkzLDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMzODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMzOTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMzOTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMxLDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcxLDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIyLDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMzLDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0NjkyLDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzExLDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQzLDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYyLDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIyLDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYzLDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIwLDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDExLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgzLDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQwLDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAxLDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMyLDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAyLDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3LDM3MDAwLDM3MDAzLDM3MDA0LDM3MDA2LDM3MDA4LDM3MDEzLDM3MDE1LDM3MDE2LDM3MDE3LDM3MDE5LDM3MDI0LDM3MDI1LDM3MDI2LDM3MDI5LDM3MDQwLDM3MDQyLDM3MDQzLDM3MDQ0LDM3MDQ2LDM3MDUzLDM3MDY4LDM3MDU0LDM3MDU5LDM3MDYwLDM3MDYxLDM3MDYzLDM3MDY0LDM3MDc3LDM3MDc5LDM3MDgwLDM3MDgxLDM3MDg0LDM3MDg1LDM3MDg3LDM3MDkzLDM3MDc0LDM3MTEwLDM3MDk5LDM3MTAzLDM3MTA0LDM3MTA4LDM3MTE4LDM3MTE5LDM3MTIwLDM3MTI0LDM3MTI1LDM3MTI2LDM3MTI4LDM3MTMzLDM3MTM2LDM3MTQwLDM3MTQyLDM3MTQzLDM3MTQ0LDM3MTQ2LDM3MTQ4LDM3MTUwLDM3MTUyLDM3MTU3LDM3MTU0LDM3MTU1LDM3MTU5LDM3MTYxLDM3MTY2LDM3MTY3LDM3MTY5LDM3MTcyLDM3MTc0LDM3MTc1LDM3MTc3LDM3MTc4LDM3MTgwLDM3MTgxLDM3MTg3LDM3MTkxLDM3MTkyLDM3MTk5LDM3MjAzLDM3MjA3LDM3MjA5LDM3MjEwLDM3MjExLDM3MjE3LDM3MjIwLDM3MjIzLDM3MjI5LDM3MjM2LDM3MjQxLDM3MjQyLDM3MjQzLDM3MjQ5LDM3MjUxLDM3MjUzLDM3MjU0LDM3MjU4LDM3MjYyLDM3MjY1LDM3MjY3LDM3MjY4LDM3MjY5LDM3MjcyLDM3Mjc4LDM3MjgxLDM3Mjg2LDM3Mjg4LDM3MjkyLDM3MjkzLDM3Mjk0LDM3Mjk2LDM3Mjk3LDM3Mjk4LDM3Mjk5LDM3MzAyLDM3MzA3LDM3MzA4LDM3MzA5LDM3MzExLDM3MzE0LDM3MzE1LDM3MzE3LDM3MzMxLDM3MzMyLDM3MzM1LDM3MzM3LDM3MzM4LDM3MzQyLDM3MzQ4LDM3MzQ5LDM3MzUzLDM3MzU0LDM3MzU2LDM3MzU3LDM3MzU4LDM3MzU5LDM3MzYwLDM3MzYxLDM3MzY3LDM3MzY5LDM3MzcxLDM3MzczLDM3Mzc2LDM3Mzc3LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg1LDM3Mzg2LDM3Mzg4LDM3MzkyLDM3Mzk0LDM3Mzk1LDM3Mzk4LDM3NDAwLDM3NDA0LDM3NDA1LDM3NDExLDM3NDEyLDM3NDEzLDM3NDE0LDM3NDE2LDM3NDIyLDM3NDIzLDM3NDI0LDM3NDI3LDM3NDI5LDM3NDMwLDM3NDMyLDM3NDMzLDM3NDM0LDM3NDM2LDM3NDM4LDM3NDQwLDM3NDQyLDM3NDQzLDM3NDQ2LDM3NDQ3LDM3NDUwLDM3NDUzLDM3NDU0LDM3NDU1LDM3NDU3LDM3NDY0LDM3NDY1LDM3NDY4LDM3NDY5LDM3NDcyLDM3NDczLDM3NDc3LDM3NDc5LDM3NDgwLDM3NDgxLDM3NDg2LDM3NDg3LDM3NDg4LDM3NDkzLDM3NDk0LDM3NDk1LDM3NDk2LDM3NDk3LDM3NDk5LDM3NTAwLDM3NTAxLDM3NTAzLDM3NTEyLDM3NTEzLDM3NTE0LDM3NTE3LDM3NTE4LDM3NTIyLDM3NTI3LDM3NTI5LDM3NTM1LDM3NTM2LDM3NTQwLDM3NTQxLDM3NTQzLDM3NTQ0LDM3NTQ3LDM3NTUxLDM3NTU0LDM3NTU4LDM3NTYwLDM3NTYyLDM3NTYzLDM3NTY0LDM3NTY1LDM3NTY3LDM3NTY4LDM3NTY5LDM3NTcwLDM3NTcxLDM3NTczLDM3NTc0LDM3NTc1LDM3NTc2LDM3NTc5LDM3NTgwLDM3NTgxLDM3NTgyLDM3NTg0LDM3NTg3LDM3NTg5LDM3NTkxLDM3NTkyLDM3NTkzLDM3NTk2LDM3NTk3LDM3NTk5LDM3NjAwLDM3NjAxLDM3NjAzLDM3NjA1LDM3NjA3LDM3NjA4LDM3NjEyLDM3NjE0LDM3NjE2LDM3NjI1LDM3NjI3LDM3NjMxLDM3NjMyLDM3NjM0LDM3NjQwLDM3NjQ1LDM3NjQ5LDM3NjUyLDM3NjUzLDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY1LDM3NjY4LDM3NjY5LDM3NjcxLDM3NjczLDM3Njc0LDM3NjgzLDM3Njg0LDM3Njg2LDM3Njg3LDM3NzAzLDM3NzA0LDM3NzA1LDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE3LDM3NzE5LDM3NzIwLDM3NzIyLDM3NzI2LDM3NzMyLDM3NzMzLDM3NzM1LDM3NzM3LDM3NzM4LDM3NzQxLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ3LDM3NzQ4LDM3NzUwLDM3NzU0LDM3NzU3LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzY4LDM3NzcwLDM3NzcxLDM3NzczLDM3Nzc1LDM3Nzc4LDM3NzgxLDM3Nzg0LDM3Nzg3LDM3NzkwLDM3NzkzLDM3Nzk1LDM3Nzk2LDM3Nzk4LDM3ODAwLDM3ODAzLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE4LDM3ODAxLDM3ODI1LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMzLDM3ODM0LDM3ODM1LDM3ODM2LDM3ODM3LDM3ODQzLDM3ODQ5LDM3ODUyLDM3ODU0LDM3ODU1LDM3ODU4LDM3ODYyLDM3ODYzLDM3ODgxLDM3ODc5LDM3ODgwLDM3ODgyLDM3ODgzLDM3ODg1LDM3ODg5LDM3ODkwLDM3ODkyLDM3ODk2LDM3ODk3LDM3OTAxLDM3OTAyLDM3OTAzLDM3OTA5LDM3OTEwLDM3OTExLDM3OTE5LDM3OTM0LDM3OTM1LDM3OTM3LDM3OTM4LDM3OTM5LDM3OTQwLDM3OTQ3LDM3OTUxLDM3OTQ5LDM3OTU1LDM3OTU3LDM3OTYwLDM3OTYyLDM3OTY0LDM3OTczLDM3OTc3LDM3OTgwLDM3OTgzLDM3OTg1LDM3OTg3LDM3OTkyLDM3OTk1LDM3OTk3LDM3OTk4LDM3OTk5LDM4MDAxLDM4MDAyLDM4MDIwLDM4MDE5LDM4MjY0LDM4MjY1LDM4MjcwLDM4Mjc2LDM4MjgwLDM4Mjg0LDM4Mjg1LDM4Mjg2LDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA1LDM4MzEwLDM4MzEzLDM4MzE1LDM4MzE2LDM4MzI0LDM4MzI2LDM4MzMwLDM4MzMzLDM4MzM1LDM4MzQyLDM4MzQ0LDM4MzQ1LDM4MzQ3LDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzYxLDM4MzYyLDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzcyLDM4Mzc0LDM4NDI5LDM4NDMwLDM4NDM0LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDQ0LDM4NDQ5LDM4NDUxLDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYwLDM4NDYxLDM4NDY1LDM4NDgyLDM4NDg0LDM4NDg2LDM4NDg3LDM4NDg4LDM4NDk3LDM4NTEwLDM4NTE2LDM4NTIzLDM4NTI0LDM4NTI2LDM4NTI3LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM3LDM4NTQ1LDM4NTUwLDM4NTU0LDM4NTU3LDM4NTU5LDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY5LDM4NTc0LDM4NTc1LDM4NTc5LDM4NTg2LDM4NjAyLDM4NjEwLDIzOTg2LDM4NjE2LDM4NjE4LDM4NjIxLDM4NjIyLDM4NjIzLDM4NjMzLDM4NjM5LDM4NjQxLDM4NjUwLDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY1LDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg5LDM4NjkwLDM4NjkxLDM4Njk2LDM4NzA1LDM4NzA3LDM4NzIxLDM4NzIzLDM4NzMwLDM4NzM0LDM4NzM1LDM4NzQxLDM4NzQzLDM4NzQ0LDM4NzQ2LDM4NzQ3LDM4NzU1LDM4NzU5LDM4NzYyLDM4NzY2LDM4NzcxLDM4Nzc0LDM4Nzc1LDM4Nzc2LDM4Nzc5LDM4NzgxLDM4NzgzLDM4Nzg0LDM4NzkzLDM4ODA1LDM4ODA2LDM4ODA3LDM4ODA5LDM4ODEwLDM4ODE0LDM4ODE1LDM4ODE4LDM4ODI4LDM4ODMwLDM4ODMzLDM4ODM0LDM4ODM3LDM4ODM4LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQ0LDM4ODQ2LDM4ODQ3LDM4ODQ5LDM4ODUyLDM4ODUzLDM4ODU1LDM4ODU3LDM4ODU4LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODY0LDM4ODY1LDM4ODY4LDM4ODcxLDM4ODcyLDM4ODczLDM4ODc3LDM4ODc4LDM4ODgwLDM4ODc1LDM4ODgxLDM4ODg0LDM4ODk1LDM4ODk3LDM4OTAwLDM4OTAzLDM4OTA0LDM4OTA2LDM4OTE5LDM4OTIyLDM4OTM3LDM4OTI1LDM4OTI2LDM4OTMyLDM4OTM0LDM4OTQwLDM4OTQyLDM4OTQ0LDM4OTQ3LDM4OTUwLDM4OTU1LDM4OTU4LDM4OTU5LDM4OTYwLDM4OTYyLDM4OTYzLDM4OTY1LDM4OTQ5LDM4OTc0LDM4OTgwLDM4OTgzLDM4OTg2LDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk4LDM4OTk5LDM5MDAxLDM5MDAyLDM5MDEwLDM5MDExLDM5MDEzLDM5MDE0LDM5MDE4LDM5MDIwLDM5MDgzLDM5MDg1LDM5MDg2LDM5MDg4LDM5MDkyLDM5MDk1LDM5MDk2LDM5MDk4LDM5MDk5LDM5MTAzLDM5MTA2LDM5MTA5LDM5MTEyLDM5MTE2LDM5MTM3LDM5MTM5LDM5MTQxLDM5MTQyLDM5MTQzLDM5MTQ2LDM5MTU1LDM5MTU4LDM5MTcwLDM5MTc1LDM5MTc2LDM5MTg1LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk5LDM5MjAyLDM5MjA2LDM5MjA3LDM5MjExLDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjMyLDM5MjMzLDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQ1LDM5MjQ2LDM5MjUyLDM5MjU2LDM5MjU3LDM5MjU5LDM5MjYwLDM5MjYyLDM5MjYzLDM5MjY0LDM5MzIzLDM5MzI1LDM5MzI3LDM5MzM0LDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ5LDM5MzUzLDM5MzU0LDM5MzU3LDM5MzU5LDM5MzYzLDM5MzY5LDM5Mzc5LDM5MzgwLDM5Mzg1LDM5Mzg2LDM5Mzg4LDM5MzkwLDM5Mzk5LDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA4LDM5NDEyLDM5NDEzLDM5NDE3LDM5NDIxLDM5NDIyLDM5NDI2LDM5NDI3LDM5NDI4LDM5NDM1LDM5NDM2LDM5NDQwLDM5NDQxLDM5NDQ2LDM5NDU0LDM5NDU2LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYzLDM5NDY5LDM5NDcwLDM5NDc1LDM5NDc3LDM5NDc4LDM5NDgwLDM5NDk1LDM5NDg5LDM5NDkyLDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAyLDM5NTA1LDM5NTA4LDM5NTEwLDM5NTE3LDM5NTk0LDM5NTk2LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjA0LDM5NjA1LDM5NjA2LDM5NjA5LDM5NjExLDM5NjE0LDM5NjE1LDM5NjE3LDM5NjE5LDM5NjIyLDM5NjI0LDM5NjMwLDM5NjMyLDM5NjM0LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQzLDM5NjQ0LDM5NjQ4LDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU3LDM5NjYwLDM5NjY2LDM5NjY3LDM5NjY5LDM5NjczLDM5Njc0LDM5Njc3LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5NjgzLDM5Njg0LDM5Njg1LDM5Njg4LDM5Njg5LDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk4LDM5NzAyLDM5NzA1LDM5NzA3LDM5NzA4LDM5NzEyLDM5NzE4LDM5NzIzLDM5NzI1LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM1LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzUyLDM5NzU1LDM5NzU2LDM5NzY1LDM5NzY2LDM5NzY3LDM5NzcxLDM5Nzc0LDM5Nzc3LDM5Nzc5LDM5NzgxLDM5NzgyLDM5Nzg0LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5Nzk1LDM5Nzk3LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODA3LDM5ODA4LDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIxLDM5ODIzLDM5ODI0LDM5ODI4LDM5ODM0LDM5ODM3LDM5ODM4LDM5ODQ2LDM5ODQ3LDM5ODQ5LDM5ODUyLDM5ODU2LDM5ODU3LDM5ODU4LDM5ODYzLDM5ODY0LDM5ODY3LDM5ODY4LDM5ODcwLDM5ODcxLDM5ODczLDM5ODc5LDM5ODgwLDM5ODg2LDM5ODg4LDM5ODk1LDM5ODk2LDM5OTAxLDM5OTAzLDM5OTA5LDM5OTExLDM5OTE0LDM5OTE1LDM5OTE5LDM5OTIzLDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMzLDM5OTM1LDM5OTM2LDM5OTM4LDM5OTQ3LDM5OTUxLDM5OTUzLDM5OTU4LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTY0LDM5OTY2LDM5OTcwLDM5OTcxLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTg1LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTk3LDQwMDAxLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA5LDQwMDEwLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE5LDQwMDIwLDQwMDIyLDQwMDI0LDQwMDI3LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDM1LDQwMDQxLDQwMDQyLDQwMDI4LDQwMDQzLDQwMDQwLDQwMDQ2LDQwMDQ4LDQwMDUwLDQwMDUzLDQwMDU1LDQwMDU5LDQwMTY2LDQwMTc4LDQwMTgzLDQwMTg1LDQwMjAzLDQwMTk0LDQwMjA5LDQwMjE1LDQwMjE2LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjM5LDQwMjQwLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjUwLDQwMjUyLDQwMjYxLDQwMjUzLDQwMjU4LDQwMjU5LDQwMjYzLDQwMjY2LDQwMjc1LDQwMjc2LDQwMjg3LDQwMjkxLDQwMjkwLDQwMjkzLDQwMjk3LDQwMjk4LDQwMjk5LDQwMzA0LDQwMzEwLDQwMzExLDQwMzE1LDQwMzE2LDQwMzE4LDQwMzIzLDQwMzI0LDQwMzI2LDQwMzMwLDQwMzMzLDQwMzM0LDQwMzM4LDQwMzM5LDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzUzLDQwMzYyLDQwMzY0LDQwMzY2LDQwMzY5LDQwMzczLDQwMzc3LDQwMzgwLDQwMzgzLDQwMzg3LDQwMzkxLDQwMzkzLDQwMzk0LDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDEwLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDIxLDQwNDIzLDQwNDI1LDQwNDI3LDQwNDMwLDQwNDMyLDQwNDM1LDQwNDM2LDQwNDQ2LDQwNDU4LDQwNDUwLDQwNDU1LDQwNDYyLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY5LDQwNDcwLDQwNDczLDQwNDc2LDQwNDc3LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTc2LDQwNTc4LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgzLDQwNTkwLDQwNTkxLDQwNTk4LDQwNjAwLDQwNjAzLDQwNjA2LDQwNjEyLDQwNjE2LDQwNjIwLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI3LDQwNjI4LDQwNjI5LDQwNjQ2LDQwNjQ4LDQwNjUxLDQwNjYxLDQwNjcxLDQwNjc2LDQwNjc5LDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkzLDQwNjk2LDQwNzAzLDQwNzA2LDQwNzA3LDQwNzEzLDQwNzE5LDQwNzIwLDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI2LDQwNzI3LDQwNzI5LDQwNzMwLDQwNzMxLDQwNzM1LDQwNzM4LDQwNzQyLDQwNzQ2LDQwNzQ3LDQwNzUxLDQwNzUzLDQwNzU0LDQwNzU2LDQwNzU5LDQwNzYxLDQwNzYyLDQwNzY0LDQwNzY1LDQwNzY3LDQwNzY5LDQwNzcxLDQwNzcyLDQwNzczLDQwNzc0LDQwNzc1LDQwNzg3LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzk0LDQwNzk3LDQwNzk4LDQwODA4LDQwODA5LDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE5LDQwODIxLDQwODI2LDQwODI5LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUyLDQwODU0LDQwODU1LDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiaWJtODY2XCI6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUwMCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIsMTYwXSxcbiAgXCJpc28tODg1OS0yXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLFxuICBcImlzby04ODU5LTNcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcsMjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwyNDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLFxuICBcImlzby04ODU5LTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEsMzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYwLDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sXG4gIFwiaXNvLTg4NTktNVwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSxcbiAgXCJpc28tODg1OS02XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAwLDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImlzby04ODU5LTdcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJpc28tODg1OS04XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcImlzby04ODU5LTEwXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwyOTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3MywzNjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwzNjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzksMjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSxcbiAgXCJpc28tODg1OS0xM1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgyMjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sXG4gIFwiaXNvLTg4NTktMTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgsMjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLFxuICBcImlzby04ODU5LTE1XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1MiwxNjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgzLDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSxcbiAgXCJpc28tODg1OS0xNlwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIsMzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgsMzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYsMzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjczLDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0NywzNjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSxcbiAgXCJrb2k4LXJcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJrb2k4LXVcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAzMSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJtYWNpbnRvc2hcIjpbMTk2LDE5NywxOTksMjAxLDIwOSwyMTQsMjIwLDIyNSwyMjQsMjI2LDIyOCwyMjcsMjI5LDIzMSwyMzMsMjMyLDIzNCwyMzUsMjM3LDIzNiwyMzgsMjM5LDI0MSwyNDMsMjQyLDI0NCwyNDYsMjQ1LDI1MCwyNDksMjUxLDI1Miw4MjI0LDE3NiwxNjIsMTYzLDE2Nyw4MjI2LDE4MiwyMjMsMTc0LDE2OSw4NDgyLDE4MCwxNjgsODgwMCwxOTgsMjE2LDg3MzQsMTc3LDg4MDQsODgwNSwxNjUsMTgxLDg3MDYsODcyMSw4NzE5LDk2MCw4NzQ3LDE3MCwxODYsOTM3LDIzMCwyNDgsMTkxLDE2MSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTkyLDE5NSwyMTMsMzM4LDMzOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsOTY3NCwyNTUsMzc2LDgyNjAsODM2NCw4MjQ5LDgyNTAsNjQyNTcsNjQyNTgsODIyNSwxODMsODIxOCw4MjIyLDgyNDAsMTk0LDIwMiwxOTMsMjAzLDIwMCwyMDUsMjA2LDIwNywyMDQsMjExLDIxMiw2Mzc0MywyMTAsMjE4LDIxOSwyMTcsMzA1LDcxMCw3MzIsMTc1LDcyOCw3MjksNzMwLDE4NCw3MzMsNzMxLDcxMV0sXG4gIFwid2luZG93cy04NzRcIjpbODM2NCwxMjksMTMwLDEzMSwxMzIsODIzMCwxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMzU4NSwzNTg2LDM1ODcsMzU4OCwzNTg5LDM1OTAsMzU5MSwzNTkyLDM1OTMsMzU5NCwzNTk1LDM1OTYsMzU5NywzNTk4LDM1OTksMzYwMCwzNjAxLDM2MDIsMzYwMywzNjA0LDM2MDUsMzYwNiwzNjA3LDM2MDgsMzYwOSwzNjEwLDM2MTEsMzYxMiwzNjEzLDM2MTQsMzYxNSwzNjE2LDM2MTcsMzYxOCwzNjE5LDM2MjAsMzYyMSwzNjIyLDM2MjMsMzYyNCwzNjI1LDM2MjYsMzYyNywzNjI4LDM2MjksMzYzMCwzNjMxLDM2MzIsMzYzMywzNjM0LDM2MzUsMzYzNiwzNjM3LDM2MzgsMzYzOSwzNjQwLDM2NDEsMzY0MixudWxsLG51bGwsbnVsbCxudWxsLDM2NDcsMzY0OCwzNjQ5LDM2NTAsMzY1MSwzNjUyLDM2NTMsMzY1NCwzNjU1LDM2NTYsMzY1NywzNjU4LDM2NTksMzY2MCwzNjYxLDM2NjIsMzY2MywzNjY0LDM2NjUsMzY2NiwzNjY3LDM2NjgsMzY2OSwzNjcwLDM2NzEsMzY3MiwzNjczLDM2NzQsMzY3NSxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTBcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwzNTIsODI0OSwzNDYsMzU2LDM4MSwzNzcsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMzUzLDgyNTAsMzQ3LDM1NywzODIsMzc4LDE2MCw3MTEsNzI4LDMyMSwxNjQsMjYwLDE2NiwxNjcsMTY4LDE2OSwzNTAsMTcxLDE3MiwxNzMsMTc0LDM3OSwxNzYsMTc3LDczMSwzMjIsMTgwLDE4MSwxODIsMTgzLDE4NCwyNjEsMzUxLDE4NywzMTcsNzMzLDMxOCwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwyMTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMxLDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSxcbiAgXCJ3aW5kb3dzLTEyNTFcIjpbMTAyNiwxMDI3LDgyMTgsMTEwNyw4MjIyLDgyMzAsODIyNCw4MjI1LDgzNjQsODI0MCwxMDMzLDgyNDksMTAzNCwxMDM2LDEwMzUsMTAzOSwxMTA2LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTExMyw4MjUwLDExMTQsMTExNiwxMTE1LDExMTksMTYwLDEwMzgsMTExOCwxMDMyLDE2NCwxMTY4LDE2NiwxNjcsMTAyNSwxNjksMTAyOCwxNzEsMTcyLDE3MywxNzQsMTAzMSwxNzYsMTc3LDEwMzAsMTExMCwxMTY5LDE4MSwxODIsMTgzLDExMDUsODQ3MCwxMTA4LDE4NywxMTEyLDEwMjksMTEwOSwxMTExLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDNdLFxuICBcIndpbmRvd3MtMTI1MlwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMzgxLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDM4MiwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLFxuICBcIndpbmRvd3MtMTI1M1wiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDkwMSw5MDIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LG51bGwsMTcxLDE3MiwxNzMsMTc0LDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCwxODEsMTgyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTRcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI4NiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwzMDQsMzUwLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjg3LDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDMwNSwzNTEsMjU1XSxcbiAgXCJ3aW5kb3dzLTEyNTVcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzYyLDE2NSwxNjYsMTY3LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsMTkxLDE0NTYsMTQ1NywxNDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsbnVsbCwxNDY3LDE0NjgsMTQ2OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcIndpbmRvd3MtMTI1NlwiOls4MzY0LDE2NjIsODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxNjU3LDgyNDksMzM4LDE2NzAsMTY4OCwxNjcyLDE3MTEsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNzA1LDg0ODIsMTY4MSw4MjUwLDMzOSw4MjA0LDgyMDUsMTcyMiwxNjAsMTU0OCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MjYsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTU2MywxODcsMTg4LDE4OSwxOTAsMTU2NywxNzI5LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMjE1LDE1OTEsMTU5MiwxNTkzLDE1OTQsMTYwMCwxNjAxLDE2MDIsMTYwMywyMjQsMTYwNCwyMjYsMTYwNSwxNjA2LDE2MDcsMTYwOCwyMzEsMjMyLDIzMywyMzQsMjM1LDE2MDksMTYxMCwyMzgsMjM5LDE2MTEsMTYxMiwxNjEzLDE2MTQsMjQ0LDE2MTUsMTYxNiwyNDcsMTYxNywyNDksMTYxOCwyNTEsMjUyLDgyMDYsODIwNywxNzQ2XSxcbiAgXCJ3aW5kb3dzLTEyNTdcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTY4LDcxMSwxODQsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE3NSw3MzEsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LG51bGwsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw3MjldLFxuICBcIndpbmRvd3MtMTI1OFwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwyNTgsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMyw3NjgsMjA1LDIwNiwyMDcsMjcyLDIwOSw3NzcsMjExLDIxMiw0MTYsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDQzMSw3NzEsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDc2OSwyMzcsMjM4LDIzOSwyNzMsMjQxLDgwMywyNDMsMjQ0LDQxNywyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsNDMyLDgzNjMsMjU1XSxcbiAgXCJ4LW1hYy1jeXJpbGxpY1wiOlsxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsODIyNCwxNzYsMTE2OCwxNjMsMTY3LDgyMjYsMTgyLDEwMzAsMTc0LDE2OSw4NDgyLDEwMjYsMTEwNiw4ODAwLDEwMjcsMTEwNyw4NzM0LDE3Nyw4ODA0LDg4MDUsMTExMCwxODEsMTE2OSwxMDMyLDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzMywxMTEzLDEwMzQsMTExNCwxMTEyLDEwMjksMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDEwMzUsMTExNSwxMDM2LDExMTYsMTEwOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsODIyMiwxMDM4LDExMTgsMTAzOSwxMTE5LDg0NzAsMTAyNSwxMTA1LDExMDMsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiw4MzY0XVxufTtcbn0odGhpcykpO1xuIiwiLy8gVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi5cbi8vIFNlZSBMSUNFTlNFLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4vLyBJZiB3ZSdyZSBpbiBub2RlIHJlcXVpcmUgZW5jb2RpbmctaW5kZXhlcyBhbmQgYXR0YWNoIGl0IHRvIHRoZSBnbG9iYWwuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgR2xvYmFsIHx0aGlzfCByZXF1aXJlZCBmb3IgcmVzb2x2aW5nIGluZGV4ZXMgaW4gbm9kZS5cbiAqIEBzdXBwcmVzcyB7Z2xvYmFsVGhpc31cbiAqL1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgdGhpc1tcImVuY29kaW5nLWluZGV4ZXNcIl0gPVxuICAgIHJlcXVpcmUoXCIuL2VuY29kaW5nLWluZGV4ZXMuanNcIilbXCJlbmNvZGluZy1pbmRleGVzXCJdO1xufVxuXG4oZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvL1xuICAvLyBVdGlsaXRpZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgVGhlIG51bWJlciB0byB0ZXN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgPj0gbWluIGFuZCBhIDw9IG1heC5cbiAgICovXG4gIGZ1bmN0aW9uIGluUmFuZ2UoYSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gbWluIDw9IGEgJiYgYSA8PSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWVyYXRvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGQgVGhlIGRlbm9taW5hdG9yLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSByZXN1bHQgb2YgdGhlIGludGVnZXIgZGl2aXNpb24gb2YgbiBieSBkLlxuICAgKi9cbiAgZnVuY3Rpb24gZGl2KG4sIGQpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihuIC8gZCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBvXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGZ1bmN0aW9uIFRvRGljdGlvbmFyeShvKSB7XG4gICAgaWYgKG8gPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9O1xuICAgIGlmIChvID09PSBPYmplY3QobykpIHJldHVybiBvO1xuICAgIHRocm93IFR5cGVFcnJvcignQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gZGljdGlvbmFyeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgSW5wdXQgc3RyaW5nIG9mIFVURi0xNiBjb2RlIHVuaXRzLlxuICAgKiBAcmV0dXJuIHshQXJyYXkuPG51bWJlcj59IENvZGUgcG9pbnRzLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9Db2RlUG9pbnRzKHN0cmluZykge1xuICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1vYnRhaW4tdW5pY29kZVxuXG4gICAgLy8gMS4gTGV0IFMgYmUgdGhlIERPTVN0cmluZyB2YWx1ZS5cbiAgICB2YXIgcyA9IFN0cmluZyhzdHJpbmcpO1xuXG4gICAgLy8gMi4gTGV0IG4gYmUgdGhlIGxlbmd0aCBvZiBTLlxuICAgIHZhciBuID0gcy5sZW5ndGg7XG5cbiAgICAvLyAzLiBJbml0aWFsaXplIGkgdG8gMC5cbiAgICB2YXIgaSA9IDA7XG5cbiAgICAvLyA0LiBJbml0aWFsaXplIFUgdG8gYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzLlxuICAgIHZhciB1ID0gW107XG5cbiAgICAvLyA1LiBXaGlsZSBpIDwgbjpcbiAgICB3aGlsZSAoaSA8IG4pIHtcblxuICAgICAgLy8gMS4gTGV0IGMgYmUgdGhlIGNvZGUgdW5pdCBpbiBTIGF0IGluZGV4IGkuXG4gICAgICB2YXIgYyA9IHMuY2hhckNvZGVBdChpKTtcblxuICAgICAgLy8gMi4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBjOlxuXG4gICAgICAvLyBjIDwgMHhEODAwIG9yIGMgPiAweERGRkZcbiAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPiAweERGRkYpIHtcbiAgICAgICAgLy8gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludCBjLlxuICAgICAgICB1LnB1c2goYyk7XG4gICAgICB9XG5cbiAgICAgIC8vIDB4REMwMCDiiaQgYyDiiaQgMHhERkZGXG4gICAgICBlbHNlIGlmICgweERDMDAgPD0gYyAmJiBjIDw9IDB4REZGRikge1xuICAgICAgICAvLyBBcHBlbmQgdG8gVSBhIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgIHUucHVzaCgweEZGRkQpO1xuICAgICAgfVxuXG4gICAgICAvLyAweEQ4MDAg4omkIGMg4omkIDB4REJGRlxuICAgICAgZWxzZSBpZiAoMHhEODAwIDw9IGMgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgLy8gMS4gSWYgaSA9IG7iiJIxLCB0aGVuIGFwcGVuZCB0byBVIGEgVStGRkZEIFJFUExBQ0VNRU5UXG4gICAgICAgIC8vIENIQVJBQ1RFUi5cbiAgICAgICAgaWYgKGkgPT09IG4gLSAxKSB7XG4gICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpIDwgbuKIkjE6XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIDEuIExldCBkIGJlIHRoZSBjb2RlIHVuaXQgaW4gUyBhdCBpbmRleCBpKzEuXG4gICAgICAgICAgdmFyIGQgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG5cbiAgICAgICAgICAvLyAyLiBJZiAweERDMDAg4omkIGQg4omkIDB4REZGRiwgdGhlbjpcbiAgICAgICAgICBpZiAoMHhEQzAwIDw9IGQgJiYgZCA8PSAweERGRkYpIHtcbiAgICAgICAgICAgIC8vIDEuIExldCBhIGJlIGMgJiAweDNGRi5cbiAgICAgICAgICAgIHZhciBhID0gYyAmIDB4M0ZGO1xuXG4gICAgICAgICAgICAvLyAyLiBMZXQgYiBiZSBkICYgMHgzRkYuXG4gICAgICAgICAgICB2YXIgYiA9IGQgJiAweDNGRjtcblxuICAgICAgICAgICAgLy8gMy4gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludFxuICAgICAgICAgICAgLy8gMl4xNisyXjEwKmErYi5cbiAgICAgICAgICAgIHUucHVzaCgweDEwMDAwICsgKGEgPDwgMTApICsgYik7XG5cbiAgICAgICAgICAgIC8vIDQuIFNldCBpIHRvIGkrMS5cbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyAzLiBPdGhlcndpc2UsIGQgPCAweERDMDAgb3IgZCA+IDB4REZGRi4gQXBwZW5kIHRvIFUgYVxuICAgICAgICAgIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgICAgZWxzZSAge1xuICAgICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIFNldCBpIHRvIGkrMS5cbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICAvLyA2LiBSZXR1cm4gVS5cbiAgICByZXR1cm4gdTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gY29kZV9wb2ludHMgQXJyYXkgb2YgY29kZSBwb2ludHMuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gc3RyaW5nIFN0cmluZyBvZiBVVEYtMTYgY29kZSB1bml0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGNvZGVQb2ludHNUb1N0cmluZyhjb2RlX3BvaW50cykge1xuICAgIHZhciBzID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlX3BvaW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGNwID0gY29kZV9wb2ludHNbaV07XG4gICAgICBpZiAoY3AgPD0gMHhGRkZGKSB7XG4gICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcCAtPSAweDEwMDAwO1xuICAgICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGNwID4+IDEwKSArIDB4RDgwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCAmIDB4M0ZGKSArIDB4REMwMCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cblxuICAvL1xuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBFbmNvZGluZyBzcGVjaWZpY2F0aW9uXG4gIC8vIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnL1xuICAvL1xuXG4gIC8vXG4gIC8vIDMuIFRlcm1pbm9sb2d5XG4gIC8vXG5cbiAgLyoqXG4gICAqIEVuZC1vZi1zdHJlYW0gaXMgYSBzcGVjaWFsIHRva2VuIHRoYXQgc2lnbmlmaWVzIG5vIG1vcmUgdG9rZW5zXG4gICAqIGFyZSBpbiB0aGUgc3RyZWFtLlxuICAgKiBAY29uc3RcbiAgICovIHZhciBlbmRfb2Zfc3RyZWFtID0gLTE7XG5cbiAgLyoqXG4gICAqIEEgc3RyZWFtIHJlcHJlc2VudHMgYW4gb3JkZXJlZCBzZXF1ZW5jZSBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0geyEoQXJyYXkuPG51bWJlcj58VWludDhBcnJheSl9IHRva2VucyBBcnJheSBvZiB0b2tlbnMgdGhhdCBwcm92aWRlIHRoZVxuICAgKiBzdHJlYW0uXG4gICAqL1xuICBmdW5jdGlvbiBTdHJlYW0odG9rZW5zKSB7XG4gICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgdGhpcy50b2tlbnMgPSBbXS5zbGljZS5jYWxsKHRva2Vucyk7XG4gIH1cblxuICBTdHJlYW0ucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgZW5kLW9mLXN0cmVhbSBoYXMgYmVlbiBoaXQuXG4gICAgICovXG4gICAgZW5kT2ZTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICF0aGlzLnRva2Vucy5sZW5ndGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYSB0b2tlbiBpcyByZWFkIGZyb20gYSBzdHJlYW0sIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBhbmQgc3Vic2VxdWVudGx5IHJlbW92ZWQsIGFuZFxuICAgICAqIGVuZC1vZi1zdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEdldCB0aGUgbmV4dCB0b2tlbiBmcm9tIHRoZSBzdHJlYW0sIG9yXG4gICAgICogZW5kX29mX3N0cmVhbS5cbiAgICAgKi9cbiAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5zLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGVuZF9vZl9zdHJlYW07XG4gICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNoaWZ0KCk7XG4gICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG9uZSBvciBtb3JlIHRva2VucyBhcmUgcHJlcGVuZGVkIHRvIGEgc3RyZWFtLCB0aG9zZSB0b2tlbnNcbiAgICAgKiBtdXN0IGJlIGluc2VydGVkLCBpbiBnaXZlbiBvcmRlciwgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VuKHMpIHRvIHByZXBlbmQgdG8gdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwcmVwZW5kOiBmdW5jdGlvbih0b2tlbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9rZW4pKSB7XG4gICAgICAgIHZhciB0b2tlbnMgPSAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHRva2VuKTtcbiAgICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbnMucG9wKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gb25lIG9yIG1vcmUgdG9rZW5zIGFyZSBwdXNoZWQgdG8gYSBzdHJlYW0sIHRob3NlIHRva2Vuc1xuICAgICAqIG11c3QgYmUgaW5zZXJ0ZWQsIGluIGdpdmVuIG9yZGVyLCBhZnRlciB0aGUgbGFzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VucyhzKSB0byBwcmVwZW5kIHRvIHRoZSBzdHJlYW0uXG4gICAgICovXG4gICAgcHVzaDogZnVuY3Rpb24odG9rZW4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRva2VuKSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyh0b2tlbik7XG4gICAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKVxuICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2godG9rZW5zLnNoaWZ0KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8vXG4gIC8vIDQuIEVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDQuMSBFbmNvZGVycyBhbmQgZGVjb2RlcnNcblxuICAvKiogQGNvbnN0ICovXG4gIHZhciBmaW5pc2hlZCA9IC0xO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhdGFsIElmIHRydWUsIGRlY29kaW5nIGVycm9ycyByYWlzZSBhbiBleGNlcHRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2NvZGVfcG9pbnQgT3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGZhbGxiYWNrIGNvZGUgcG9pbnQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGNvZGUgcG9pbnQgdG8gaW5zZXJ0IG9uIGEgZGVjb2RpbmcgZXJyb3IuXG4gICAqL1xuICBmdW5jdGlvbiBkZWNvZGVyRXJyb3IoZmF0YWwsIG9wdF9jb2RlX3BvaW50KSB7XG4gICAgaWYgKGZhdGFsKVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdEZWNvZGVyIGVycm9yJyk7XG4gICAgcmV0dXJuIG9wdF9jb2RlX3BvaW50IHx8IDB4RkZGRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgY29kZSBwb2ludCB0aGF0IGNvdWxkIG5vdCBiZSBlbmNvZGVkLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEFsd2F5cyB0aHJvd3MsIG5vIHZhbHVlIGlzIGFjdHVhbGx5IHJldHVybmVkLlxuICAgKi9cbiAgZnVuY3Rpb24gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1RoZSBjb2RlIHBvaW50ICcgKyBjb2RlX3BvaW50ICsgJyBjb3VsZCBub3QgYmUgZW5jb2RlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJmYWNlICovXG4gIGZ1bmN0aW9uIERlY29kZXIoKSB7fVxuICBEZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHt9XG4gIH07XG5cbiAgLyoqIEBpbnRlcmZhY2UgKi9cbiAgZnVuY3Rpb24gRW5jb2RlcigpIHt9XG4gIEVuY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBjb2RlIHBvaW50cyBiZWluZyBlbmNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHt9XG4gIH07XG5cbiAgLy8gNC4yIE5hbWVzIGFuZCBsYWJlbHNcblxuICAvLyBUT0RPOiBEZWZpbmUgQHR5cGVkZWYgZm9yIEVuY29kaW5nOiB7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvaXNzdWVzLzI0N1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgVGhlIGVuY29kaW5nIGxhYmVsLlxuICAgKiBAcmV0dXJuIHs/e25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn19XG4gICAqL1xuICBmdW5jdGlvbiBnZXRFbmNvZGluZyhsYWJlbCkge1xuICAgIC8vIDEuIFJlbW92ZSBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZSBmcm9tIGxhYmVsLlxuICAgIGxhYmVsID0gU3RyaW5nKGxhYmVsKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIDIuIElmIGxhYmVsIGlzIGFuIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIGFueSBvZiB0aGVcbiAgICAvLyBsYWJlbHMgbGlzdGVkIGluIHRoZSB0YWJsZSBiZWxvdywgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgLy8gZW5jb2RpbmcsIGFuZCBmYWlsdXJlIG90aGVyd2lzZS5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxhYmVsX3RvX2VuY29kaW5nLCBsYWJlbCkpIHtcbiAgICAgIHJldHVybiBsYWJlbF90b19lbmNvZGluZ1tsYWJlbF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kaW5ncyB0YWJsZTogaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvZW5jb2RpbmdzLmpzb25cbiAgICogQGNvbnN0XG4gICAqIEB0eXBlIHshQXJyYXkuPHtcbiAgICogICAgICAgICAgaGVhZGluZzogc3RyaW5nLFxuICAgKiAgICAgICAgICBlbmNvZGluZ3M6IEFycmF5Ljx7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fT5cbiAgICogICAgICAgIH0+fVxuICAgKi9cbiAgdmFyIGVuY29kaW5ncyA9IFtcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidW5pY29kZS0xLTEtdXRmLThcIixcbiAgICAgICAgICBcInV0Zi04XCIsXG4gICAgICAgICAgXCJ1dGY4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLThcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiVGhlIEVuY29kaW5nXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiODY2XCIsXG4gICAgICAgICAgXCJjcDg2NlwiLFxuICAgICAgICAgIFwiY3NpYm04NjZcIixcbiAgICAgICAgICBcImlibTg2NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlibTg2NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluMlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0yXCIsXG4gICAgICAgICAgXCJpc284ODU5MlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMjoxOTg3XCIsXG4gICAgICAgICAgXCJsMlwiLFxuICAgICAgICAgIFwibGF0aW4yXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluM1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwOVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0zXCIsXG4gICAgICAgICAgXCJpc284ODU5M1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMzoxOTg4XCIsXG4gICAgICAgICAgXCJsM1wiLFxuICAgICAgICAgIFwibGF0aW4zXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvLWlyLTExMFwiLFxuICAgICAgICAgIFwiaXNvODg1OS00XCIsXG4gICAgICAgICAgXCJpc284ODU5NFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNDoxOTg4XCIsXG4gICAgICAgICAgXCJsNFwiLFxuICAgICAgICAgIFwibGF0aW40XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktNFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluY3lyaWxsaWNcIixcbiAgICAgICAgICBcImN5cmlsbGljXCIsXG4gICAgICAgICAgXCJpc28tODg1OS01XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ0XCIsXG4gICAgICAgICAgXCJpc284ODU5LTVcIixcbiAgICAgICAgICBcImlzbzg4NTk1XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01OjE5ODhcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS01XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImFyYWJpY1wiLFxuICAgICAgICAgIFwiYXNtby03MDhcIixcbiAgICAgICAgICBcImNzaXNvODg1OTZlXCIsXG4gICAgICAgICAgXCJjc2lzbzg4NTk2aVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbmFyYWJpY1wiLFxuICAgICAgICAgIFwiZWNtYS0xMTRcIixcbiAgICAgICAgICBcImlzby04ODU5LTZcIixcbiAgICAgICAgICBcImlzby04ODU5LTYtZVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNi1pXCIsXG4gICAgICAgICAgXCJpc28taXItMTI3XCIsXG4gICAgICAgICAgXCJpc284ODU5LTZcIixcbiAgICAgICAgICBcImlzbzg4NTk2XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02OjE5ODdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS02XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW5ncmVla1wiLFxuICAgICAgICAgIFwiZWNtYS0xMThcIixcbiAgICAgICAgICBcImVsb3RfOTI4XCIsXG4gICAgICAgICAgXCJncmVla1wiLFxuICAgICAgICAgIFwiZ3JlZWs4XCIsXG4gICAgICAgICAgXCJpc28tODg1OS03XCIsXG4gICAgICAgICAgXCJpc28taXItMTI2XCIsXG4gICAgICAgICAgXCJpc284ODU5LTdcIixcbiAgICAgICAgICBcImlzbzg4NTk3XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03OjE5ODdcIixcbiAgICAgICAgICBcInN1bl9ldV9ncmVla1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGVcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW5oZWJyZXdcIixcbiAgICAgICAgICBcImhlYnJld1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOC1lXCIsXG4gICAgICAgICAgXCJpc28taXItMTM4XCIsXG4gICAgICAgICAgXCJpc284ODU5LThcIixcbiAgICAgICAgICBcImlzbzg4NTk4XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04OjE5ODhcIixcbiAgICAgICAgICBcInZpc3VhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LThcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGlcIixcbiAgICAgICAgICBcImlzby04ODU5LTgtaVwiLFxuICAgICAgICAgIFwibG9naWNhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTgtaVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTBcIixcbiAgICAgICAgICBcImlzby1pci0xNTdcIixcbiAgICAgICAgICBcImlzbzg4NTktMTBcIixcbiAgICAgICAgICBcImlzbzg4NTkxMFwiLFxuICAgICAgICAgIFwibDZcIixcbiAgICAgICAgICBcImxhdGluNlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTEwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5MTNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJpc28tODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OTE0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjlcIixcbiAgICAgICAgICBcImlzby04ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5MTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTE1XCIsXG4gICAgICAgICAgXCJsOVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTE1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTE2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Nrb2k4clwiLFxuICAgICAgICAgIFwia29pXCIsXG4gICAgICAgICAgXCJrb2k4XCIsXG4gICAgICAgICAgXCJrb2k4LXJcIixcbiAgICAgICAgICBcImtvaThfclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImtvaTgtclwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJrb2k4LXJ1XCIsXG4gICAgICAgICAgXCJrb2k4LXVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJrb2k4LXVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NtYWNpbnRvc2hcIixcbiAgICAgICAgICBcIm1hY1wiLFxuICAgICAgICAgIFwibWFjaW50b3NoXCIsXG4gICAgICAgICAgXCJ4LW1hYy1yb21hblwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIm1hY2ludG9zaFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJkb3MtODc0XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OTExXCIsXG4gICAgICAgICAgXCJ0aXMtNjIwXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTg3NFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtODc0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1MFwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUwXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTFcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MVwiLFxuICAgICAgICAgIFwieC1jcDEyNTFcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTFcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYW5zaV94My40LTE5NjhcIixcbiAgICAgICAgICBcImFzY2lpXCIsXG4gICAgICAgICAgXCJjcDEyNTJcIixcbiAgICAgICAgICBcImNwODE5XCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluMVwiLFxuICAgICAgICAgIFwiaWJtODE5XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xXCIsXG4gICAgICAgICAgXCJpc28taXItMTAwXCIsXG4gICAgICAgICAgXCJpc284ODU5LTFcIixcbiAgICAgICAgICBcImlzbzg4NTkxXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xOjE5ODdcIixcbiAgICAgICAgICBcImwxXCIsXG4gICAgICAgICAgXCJsYXRpbjFcIixcbiAgICAgICAgICBcInVzLWFzY2lpXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTJcIixcbiAgICAgICAgICBcIngtY3AxMjUyXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUyXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1M1wiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUzXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1M1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1M1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTRcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW41XCIsXG4gICAgICAgICAgXCJpc28tODg1OS05XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ4XCIsXG4gICAgICAgICAgXCJpc284ODU5LTlcIixcbiAgICAgICAgICBcImlzbzg4NTk5XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05OjE5ODlcIixcbiAgICAgICAgICBcImw1XCIsXG4gICAgICAgICAgXCJsYXRpbjVcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NFwiLFxuICAgICAgICAgIFwieC1jcDEyNTRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU1XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTVcIixcbiAgICAgICAgICBcIngtY3AxMjU1XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NlwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU2XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTdcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1N1wiLFxuICAgICAgICAgIFwieC1jcDEyNTdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU4XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNThcIixcbiAgICAgICAgICBcIngtY3AxMjU4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU4XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtbWFjLWN5cmlsbGljXCIsXG4gICAgICAgICAgXCJ4LW1hYy11a3JhaW5pYW5cIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ4LW1hYy1jeXJpbGxpY1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY2hpbmVzZVwiLFxuICAgICAgICAgIFwiY3NnYjIzMTJcIixcbiAgICAgICAgICBcImNzaXNvNThnYjIzMTI4MFwiLFxuICAgICAgICAgIFwiZ2IyMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyLTgwXCIsXG4gICAgICAgICAgXCJnYmtcIixcbiAgICAgICAgICBcImlzby1pci01OFwiLFxuICAgICAgICAgIFwieC1nYmtcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJnYmtcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiZ2IxODAzMFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImdiMTgwMzBcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYmlnNVwiLFxuICAgICAgICAgIFwiYmlnNS1oa3Njc1wiLFxuICAgICAgICAgIFwiY24tYmlnNVwiLFxuICAgICAgICAgIFwiY3NiaWc1XCIsXG4gICAgICAgICAgXCJ4LXgtYmlnNVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImJpZzVcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAodHJhZGl0aW9uYWwpIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzZXVjcGtkZm10amFwYW5lc2VcIixcbiAgICAgICAgICBcImV1Yy1qcFwiLFxuICAgICAgICAgIFwieC1ldWMtanBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMtanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc28yMDIyanBcIixcbiAgICAgICAgICBcImlzby0yMDIyLWpwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTIwMjItanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NzaGlmdGppc1wiLFxuICAgICAgICAgIFwibXM5MzJcIixcbiAgICAgICAgICBcIm1zX2thbmppXCIsXG4gICAgICAgICAgXCJzaGlmdC1qaXNcIixcbiAgICAgICAgICBcInNoaWZ0X2ppc1wiLFxuICAgICAgICAgIFwic2ppc1wiLFxuICAgICAgICAgIFwid2luZG93cy0zMWpcIixcbiAgICAgICAgICBcIngtc2ppc1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInNoaWZ0X2ppc1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2V1Y2tyXCIsXG4gICAgICAgICAgXCJjc2tzYzU2MDExOTg3XCIsXG4gICAgICAgICAgXCJldWMta3JcIixcbiAgICAgICAgICBcImlzby1pci0xNDlcIixcbiAgICAgICAgICBcImtvcmVhblwiLFxuICAgICAgICAgIFwia3NfY181NjAxLTE5ODdcIixcbiAgICAgICAgICBcImtzX2NfNTYwMS0xOTg5XCIsXG4gICAgICAgICAgXCJrc2M1NjAxXCIsXG4gICAgICAgICAgXCJrc2NfNTYwMVwiLFxuICAgICAgICAgIFwid2luZG93cy05NDlcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMta3JcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvMjAyMmtyXCIsXG4gICAgICAgICAgXCJoei1nYi0yMzEyXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1jblwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItY24tZXh0XCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1rclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInJlcGxhY2VtZW50XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcInV0Zi0xNmJlXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLTE2YmVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidXRmLTE2XCIsXG4gICAgICAgICAgXCJ1dGYtMTZsZVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInV0Zi0xNmxlXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtdXNlci1kZWZpbmVkXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwieC11c2VyLWRlZmluZWRcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzXCJcbiAgfVxuICBdO1xuXG4gIC8vIExhYmVsIHRvIGVuY29kaW5nIHJlZ2lzdHJ5LlxuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59Pn0gKi9cbiAgdmFyIGxhYmVsX3RvX2VuY29kaW5nID0ge307XG4gIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgY2F0ZWdvcnkuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgIGVuY29kaW5nLmxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICAgIGxhYmVsX3RvX2VuY29kaW5nW2xhYmVsXSA9IGVuY29kaW5nO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdHJ5IG9mIG9mIGVuY29kZXIvZGVjb2RlciBmYWN0b3JpZXMsIGJ5IGVuY29kaW5nIG5hbWUuXG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIGZ1bmN0aW9uKHtmYXRhbDpib29sZWFufSk6IEVuY29kZXI+fSAqL1xuICB2YXIgZW5jb2RlcnMgPSB7fTtcbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oe2ZhdGFsOmJvb2xlYW59KTogRGVjb2Rlcj59ICovXG4gIHZhciBkZWNvZGVycyA9IHt9O1xuXG4gIC8vXG4gIC8vIDUuIEluZGV4ZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBvaW50ZXIgVGhlIHxwb2ludGVyfCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyghQXJyYXkuPD9udW1iZXI+fHVuZGVmaW5lZCl9IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KSB7XG4gICAgaWYgKCFpbmRleCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGluZGV4W3BvaW50ZXJdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyFBcnJheS48P251bWJlcj59IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBmaXJzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gfGNvZGUgcG9pbnR8IGluXG4gICAqICAgICB8aW5kZXh8LCBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCkge1xuICAgIHZhciBwb2ludGVyID0gaW5kZXguaW5kZXhPZihjb2RlX3BvaW50KTtcbiAgICByZXR1cm4gcG9pbnRlciA9PT0gLTEgPyBudWxsIDogcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBpbmRleC5cbiAgICogQHJldHVybiB7KCFBcnJheS48bnVtYmVyPnwhQXJyYXkuPEFycmF5LjxudW1iZXI+Pil9XG4gICAqICAqL1xuICBmdW5jdGlvbiBpbmRleChuYW1lKSB7XG4gICAgaWYgKCEoJ2VuY29kaW5nLWluZGV4ZXMnIGluIGdsb2JhbCkpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5kZXhlcyBtaXNzaW5nLlwiICtcbiAgICAgICAgICAgICAgICAgIFwiIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz9cIik7XG4gICAgfVxuICAgIHJldHVybiBnbG9iYWxbJ2VuY29kaW5nLWluZGV4ZXMnXVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9pbnRlciBUaGUgfHBvaW50ZXJ8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEdCMTgwMzBSYW5nZXNDb2RlUG9pbnRGb3IocG9pbnRlcikge1xuICAgIC8vIDEuIElmIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDM5NDE5IGFuZCBsZXNzIHRoYW4gMTg5MDAwLCBvclxuICAgIC8vIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDEyMzc1NzUsIHJldHVybiBudWxsLlxuICAgIGlmICgocG9pbnRlciA+IDM5NDE5ICYmIHBvaW50ZXIgPCAxODkwMDApIHx8IChwb2ludGVyID4gMTIzNzU3NSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIExldCBvZmZzZXQgYmUgdGhlIGxhc3QgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIHJhbmdlcyB0aGF0XG4gICAgLy8gaXMgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIHBvaW50ZXIgYW5kIGxldCBjb2RlIHBvaW50IG9mZnNldCBiZVxuICAgIC8vIGl0cyBjb3JyZXNwb25kaW5nIGNvZGUgcG9pbnQuXG4gICAgdmFyIG9mZnNldCA9IDA7XG4gICAgdmFyIGNvZGVfcG9pbnRfb2Zmc2V0ID0gMDtcbiAgICB2YXIgaWR4ID0gaW5kZXgoJ2diMTgwMzAnKTtcbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaWR4Lmxlbmd0aDsgKytpKSB7XG4gICAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICAgIHZhciBlbnRyeSA9IGlkeFtpXTtcbiAgICAgIGlmIChlbnRyeVswXSA8PSBwb2ludGVyKSB7XG4gICAgICAgIG9mZnNldCA9IGVudHJ5WzBdO1xuICAgICAgICBjb2RlX3BvaW50X29mZnNldCA9IGVudHJ5WzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IG9mZnNldCArXG4gICAgLy8gcG9pbnRlciDiiJIgb2Zmc2V0LlxuICAgIHJldHVybiBjb2RlX3BvaW50X29mZnNldCArIHBvaW50ZXIgLSBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBsb2NhdGUgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGZpcnN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byB8Y29kZSBwb2ludHwgaW4gdGhlXG4gICAqICAgICBnYjE4MDMwIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhHQjE4MDMwUmFuZ2VzUG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG4gICAgLy8gMS4gTGV0IG9mZnNldCBiZSB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGluZGV4IGdiMTgwMzAgcmFuZ2VzXG4gICAgLy8gdGhhdCBpcyBlcXVhbCB0byBvciBsZXNzIHRoYW4gY29kZSBwb2ludCBhbmQgbGV0IHBvaW50ZXIgb2Zmc2V0XG4gICAgLy8gYmUgaXRzIGNvcnJlc3BvbmRpbmcgcG9pbnRlci5cbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgcG9pbnRlcl9vZmZzZXQgPSAwO1xuICAgIHZhciBpZHggPSBpbmRleCgnZ2IxODAzMCcpO1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpZHgubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgICAgdmFyIGVudHJ5ID0gaWR4W2ldO1xuICAgICAgaWYgKGVudHJ5WzFdIDw9IGNvZGVfcG9pbnQpIHtcbiAgICAgICAgb2Zmc2V0ID0gZW50cnlbMV07XG4gICAgICAgIHBvaW50ZXJfb2Zmc2V0ID0gZW50cnlbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyLiBSZXR1cm4gYSBwb2ludGVyIHdob3NlIHZhbHVlIGlzIHBvaW50ZXIgb2Zmc2V0ICsgY29kZSBwb2ludFxuICAgIC8vIOKIkiBvZmZzZXQuXG4gICAgcmV0dXJuIHBvaW50ZXJfb2Zmc2V0ICsgY29kZV9wb2ludCAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIHNoaWZ0X2ppcyBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgc2hpZnRfamlzIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhTaGlmdEpJU1BvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBqaXMwMjA4IGV4Y2x1ZGluZyBhbGwgcG9pbnRlcnMgaW4gdGhlXG4gICAgLy8gcmFuZ2UgODI3MiB0byA4ODM1LlxuICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuICAgIGlmIChwb2ludGVyID09PSBudWxsIHx8IGluUmFuZ2UocG9pbnRlciwgODI3MiwgODgzNSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcblxuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBiaWc1LlxuICAgIHZhciBpbmRleF8gPSBpbmRleCgnYmlnNScpO1xuXG4gICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBVKzI1NTAsIFUrMjU1RSwgVSsyNTYxLCBVKzI1NkEsIFUrNTM0MSwgb3JcbiAgICAvLyBVKzUzNDUsIHJldHVybiB0aGUgbGFzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gY29kZSBwb2ludCBpblxuICAgIC8vIGluZGV4LlxuICAgIGlmIChjb2RlX3BvaW50ID09PSAweDI1NTAgfHwgY29kZV9wb2ludCA9PT0gMHgyNTVFIHx8XG4gICAgICAgIGNvZGVfcG9pbnQgPT09IDB4MjU2MSB8fCBjb2RlX3BvaW50ID09PSAweDI1NkEgfHxcbiAgICAgICAgY29kZV9wb2ludCA9PT0gMHg1MzQxIHx8IGNvZGVfcG9pbnQgPT09IDB4NTM0NSkge1xuICAgICAgcmV0dXJuIGluZGV4Lmxhc3RJbmRleE9mKGNvZGVfcG9pbnQpO1xuICAgIH1cblxuICAgIC8vIDMuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4Xyk7XG4gIH1cblxuICAvL1xuICAvLyA3LiBBUElcbiAgLy9cblxuICAvKiogQGNvbnN0ICovIHZhciBERUZBVUxUX0VOQ09ESU5HID0gJ3V0Zi04JztcblxuICAvLyA3LjEgSW50ZXJmYWNlIFRleHREZWNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHREZWNvZGVyKSkge1xuICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFkZWNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RlY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX0JPTXNlZW4gPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUgez9EZWNvZGVyfSAqL1xuICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9mYXRhbCA9IEJvb2xlYW4ob3B0aW9uc1snZmF0YWwnXSk7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX2lnbm9yZUJPTSA9IEJvb2xlYW4ob3B0aW9uc1snaWdub3JlQk9NJ10pO1xuXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdmYXRhbCcsIHt2YWx1ZTogdGhpcy5fZmF0YWx9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnaWdub3JlQk9NJywge3ZhbHVlOiB0aGlzLl9pZ25vcmVCT019KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmNvZGluZyA9IHRoaXMuX2VuY29kaW5nLm5hbWU7XG4gICAgICB0aGlzLmZhdGFsID0gdGhpcy5fZmF0YWw7XG4gICAgICB0aGlzLmlnbm9yZUJPTSA9IHRoaXMuX2lnbm9yZUJPTTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIFRleHREZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlldz19IGlucHV0IFRoZSBidWZmZXIgb2YgYnl0ZXMgdG8gZGVjb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRlY29kZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgYnl0ZXM7XG4gICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmICdidWZmZXInIGluIGlucHV0ICYmXG4gICAgICAgICAgICAgICAgIGlucHV0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQuYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuYnl0ZUxlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB0aGlzLl9kZWNvZGVyID0gZGVjb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiB0aGlzLl9mYXRhbH0pO1xuICAgICAgICB0aGlzLl9CT01zZWVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGlucHV0X3N0cmVhbSA9IG5ldyBTdHJlYW0oYnl0ZXMpO1xuXG4gICAgICB2YXIgY29kZV9wb2ludHMgPSBbXTtcblxuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH0gd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSk7XG4gICAgICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29kZV9wb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIElmIGVuY29kaW5nIGlzIG9uZSBvZiB1dGYtOCwgdXRmLTE2YmUsIGFuZCB1dGYtMTZsZSwgYW5kXG4gICAgICAgIC8vIGlnbm9yZSBCT00gZmxhZyBhbmQgQk9NIHNlZW4gZmxhZyBhcmUgdW5zZXQsIHJ1biB0aGVzZVxuICAgICAgICAvLyBzdWJzdWJzdGVwczpcbiAgICAgICAgaWYgKFsndXRmLTgnLCAndXRmLTE2bGUnLCAndXRmLTE2YmUnXS5pbmRleE9mKHRoaXMuZW5jb2RpbmcpICE9PSAtMSAmJlxuICAgICAgICAgICAgIXRoaXMuX2lnbm9yZUJPTSAmJiAhdGhpcy5fQk9Nc2Vlbikge1xuICAgICAgICAgIC8vIElmIHRva2VuIGlzIFUrRkVGRiwgc2V0IEJPTSBzZWVuIGZsYWcuXG4gICAgICAgICAgaWYgKGNvZGVfcG9pbnRzWzBdID09PSAweEZFRkYpIHtcbiAgICAgICAgICAgIHRoaXMuX0JPTXNlZW4gPSB0cnVlO1xuICAgICAgICAgICAgY29kZV9wb2ludHMuc2hpZnQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0b2tlbiBpcyBub3QgZW5kLW9mLXN0cmVhbSwgc2V0IEJPTSBzZWVuXG4gICAgICAgICAgICAvLyBmbGFnIGFuZCBhcHBlbmQgdG9rZW4gdG8gb3V0cHV0LlxuICAgICAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2RlUG9pbnRzVG9TdHJpbmcoY29kZV9wb2ludHMpO1xuICAgIH1cbiAgfTtcblxuICAvLyA3LjIgSW50ZXJmYWNlIFRleHRFbmNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHRFbmNvZGVyKSlcbiAgICAgIHJldHVybiBuZXcgVGV4dEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpO1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgdmFyIGFsbG93TGVnYWN5RW5jb2RpbmcgPVxuICAgICAgICAgIEJvb2xlYW4ob3B0aW9uc1snTk9OU1RBTkRBUkRfYWxsb3dMZWdhY3lFbmNvZGluZyddKTtcbiAgICB2YXIgaXNMZWdhY3lFbmNvZGluZyA9ICh0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTgnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi0xNmxlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtMTZiZScpO1xuICAgIGlmICh0aGlzLl9lbmNvZGluZyA9PT0gbnVsbCB8fCAoaXNMZWdhY3lFbmNvZGluZyAmJiAhYWxsb3dMZWdhY3lFbmNvZGluZykpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFlbmNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0VuY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHs/RW5jb2Rlcn0gKi9cbiAgICB0aGlzLl9lbmNvZGVyID0gbnVsbDtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge3tmYXRhbDogYm9vbGVhbn19ICovXG4gICAgdGhpcy5fb3B0aW9ucyA9IHtmYXRhbDogQm9vbGVhbihvcHRpb25zWydmYXRhbCddKX07XG5cbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZW5jb2RpbmcgPSB0aGlzLl9lbmNvZGluZy5uYW1lO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBUZXh0RW5jb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmc9fSBvcHRfc3RyaW5nIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge1VpbnQ4QXJyYXl9IEVuY29kZWQgYnl0ZXMsIGFzIGEgVWludDhBcnJheS5cbiAgICAgKi9cbiAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZShvcHRfc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICBvcHRfc3RyaW5nID0gb3B0X3N0cmluZyA/IFN0cmluZyhvcHRfc3RyaW5nKSA6ICcnO1xuICAgICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcblxuICAgICAgLy8gTk9URTogVGhpcyBvcHRpb24gaXMgbm9uc3RhbmRhcmQuIE5vbmUgb2YgdGhlIGVuY29kaW5nc1xuICAgICAgLy8gcGVybWl0dGVkIGZvciBlbmNvZGluZyAoaS5lLiBVVEYtOCwgVVRGLTE2KSBhcmUgc3RhdGVmdWwsXG4gICAgICAvLyBzbyBzdHJlYW1pbmcgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKVxuICAgICAgICB0aGlzLl9lbmNvZGVyID0gZW5jb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0odGhpcy5fb3B0aW9ucyk7XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGJ5dGVzID0gW107XG4gICAgICB2YXIgaW5wdXRfc3RyZWFtID0gbmV3IFN0cmVhbShzdHJpbmdUb0NvZGVQb2ludHMob3B0X3N0cmluZykpO1xuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICghaW5wdXRfc3RyZWFtLmVuZE9mU3RyZWFtKCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBieXRlcy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnl0ZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VuY29kZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICB9XG4gIH07XG5cblxuICAvL1xuICAvLyA4LiBUaGUgZW5jb2RpbmdcbiAgLy9cblxuICAvLyA4LjEgdXRmLThcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gdXRmLTgncyBkZWNvZGVyJ3MgaGFzIGFuIGFzc29jaWF0ZWQgdXRmLTggY29kZSBwb2ludCwgdXRmLThcbiAgICAvLyBieXRlcyBzZWVuLCBhbmQgdXRmLTggYnl0ZXMgbmVlZGVkIChhbGwgaW5pdGlhbGx5IDApLCBhIHV0Zi04XG4gICAgLy8gbG93ZXIgYm91bmRhcnkgKGluaXRpYWxseSAweDgwKSwgYW5kIGEgdXRmLTggdXBwZXIgYm91bmRhcnlcbiAgICAvLyAoaW5pdGlhbGx5IDB4QkYpLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9jb2RlX3BvaW50ID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfYnl0ZXNfc2VlbiA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2J5dGVzX25lZWRlZCA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHV0Zi04IGJ5dGVzIG5lZWRlZCBpcyBub3QgMCxcbiAgICAgIC8vIHNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgdXRmOF9ieXRlc19uZWVkZWQgIT09IDApIHtcbiAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiB1dGYtOCBieXRlcyBuZWVkZWQgaXMgMCwgYmFzZWQgb24gYnl0ZTpcbiAgICAgIGlmICh1dGY4X2J5dGVzX25lZWRlZCA9PT0gMCkge1xuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSkge1xuICAgICAgICAgIC8vIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4QzIgdG8gMHhERlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweEMyLCAweERGKSkge1xuICAgICAgICAgIC8vIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMSBhbmQgdXRmLTggY29kZSBwb2ludCB0byBieXRlXG4gICAgICAgICAgLy8g4oiSIDB4QzAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAxO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEMwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhFMCB0byAweEVGXG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhFMCwgMHhFRikpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RTAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweEEwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEUwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4QTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEVELCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg5Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhFRClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDlGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMiBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RTAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAyO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEUwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhGMCB0byAweEY0XG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhGMCwgMHhGNCkpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RjAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDkwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEYwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4OTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEY0LCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg4Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhGNClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDhGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMyBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RjAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAzO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEYwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFJldHVybiBlcnJvci5cbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZW4gKGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QzIgdG8gMHhGNCkgc2V0IHV0Zi04IGNvZGVcbiAgICAgICAgLy8gcG9pbnQgdG8gdXRmLTggY29kZSBwb2ludCA8PCAoNiDDlyB1dGYtOCBieXRlcyBuZWVkZWQpIGFuZFxuICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfY29kZV9wb2ludCA8PCAoNiAqIHV0ZjhfYnl0ZXNfbmVlZGVkKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgbm90IGluIHRoZSByYW5nZSB1dGYtOCBsb3dlciBib3VuZGFyeSB0byB1dGYtOFxuICAgICAgLy8gdXBwZXIgYm91bmRhcnksIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmICghaW5SYW5nZShiaXRlLCB1dGY4X2xvd2VyX2JvdW5kYXJ5LCB1dGY4X3VwcGVyX2JvdW5kYXJ5KSkge1xuXG4gICAgICAgIC8vIDEuIFNldCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOCBieXRlcyBuZWVkZWQsIGFuZCB1dGYtOFxuICAgICAgICAvLyBieXRlcyBzZWVuIHRvIDAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwLCBhbmQgc2V0XG4gICAgICAgIC8vIHV0Zi04IHVwcGVyIGJvdW5kYXJ5IHRvIDB4QkYuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcbiAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODA7XG4gICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDMuIFJldHVybiBlcnJvci5cbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIFNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwIGFuZCB1dGYtOCB1cHBlciBib3VuZGFyeVxuICAgICAgLy8gdG8gMHhCRi5cbiAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwO1xuICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAgIC8vIDYuIEluY3JlYXNlIHV0Zi04IGJ5dGVzIHNlZW4gYnkgb25lIGFuZCBzZXQgdXRmLTggY29kZSBwb2ludFxuICAgICAgLy8gdG8gdXRmLTggY29kZSBwb2ludCArIChieXRlIOKIkiAweDgwKSA8PCAoNiDDlyAodXRmLTggYnl0ZXNcbiAgICAgIC8vIG5lZWRlZCDiiJIgdXRmLTggYnl0ZXMgc2VlbikpLlxuICAgICAgdXRmOF9ieXRlc19zZWVuICs9IDE7XG4gICAgICB1dGY4X2NvZGVfcG9pbnQgKz0gKGJpdGUgLSAweDgwKSA8PCAoNiAqICh1dGY4X2J5dGVzX25lZWRlZCAtIHV0ZjhfYnl0ZXNfc2VlbikpO1xuXG4gICAgICAvLyA3LiBJZiB1dGYtOCBieXRlcyBzZWVuIGlzIG5vdCBlcXVhbCB0byB1dGYtOCBieXRlcyBuZWVkZWQsXG4gICAgICAvLyBjb250aW51ZS5cbiAgICAgIGlmICh1dGY4X2J5dGVzX3NlZW4gIT09IHV0ZjhfYnl0ZXNfbmVlZGVkKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gOC4gTGV0IGNvZGUgcG9pbnQgYmUgdXRmLTggY29kZSBwb2ludC5cbiAgICAgIHZhciBjb2RlX3BvaW50ID0gdXRmOF9jb2RlX3BvaW50O1xuXG4gICAgICAvLyA5LiBTZXQgdXRmLTggY29kZSBwb2ludCwgdXRmLTggYnl0ZXMgbmVlZGVkLCBhbmQgdXRmLTggYnl0ZXNcbiAgICAgIC8vIHNlZW4gdG8gMC5cbiAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcblxuICAgICAgLy8gMTAuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdmKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIFNldCBjb3VudCBhbmQgb2Zmc2V0IGJhc2VkIG9uIHRoZSByYW5nZSBjb2RlIHBvaW50IGlzIGluOlxuICAgICAgdmFyIGNvdW50LCBvZmZzZXQ7XG4gICAgICAvLyBVKzAwODAgdG8gVSswN0ZGOiAgICAxIGFuZCAweEMwXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwODAsIDB4MDdGRikpIHtcbiAgICAgICAgY291bnQgPSAxO1xuICAgICAgICBvZmZzZXQgPSAweEMwO1xuICAgICAgfVxuICAgICAgLy8gVSswODAwIHRvIFUrRkZGRjogICAgMiBhbmQgMHhFMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDA4MDAsIDB4RkZGRikpIHtcbiAgICAgICAgY291bnQgPSAyO1xuICAgICAgICBvZmZzZXQgPSAweEUwO1xuICAgICAgfVxuICAgICAgLy8gVSsxMDAwMCB0byBVKzEwRkZGRjogMyBhbmQgMHhGMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDEwMDAwLCAweDEwRkZGRikpIHtcbiAgICAgICAgY291bnQgPSAzO1xuICAgICAgICBvZmZzZXQgPSAweEYwO1xuICAgICAgfVxuXG4gICAgICAvLyA0LkxldCBieXRlcyBiZSBhIGJ5dGUgc2VxdWVuY2Ugd2hvc2UgZmlyc3QgYnl0ZSBpcyAoY29kZVxuICAgICAgLy8gcG9pbnQgPj4gKDYgw5cgY291bnQpKSArIG9mZnNldC5cbiAgICAgIHZhciBieXRlcyA9IFsoY29kZV9wb2ludCA+PiAoNiAqIGNvdW50KSkgKyBvZmZzZXRdO1xuXG4gICAgICAvLyA1LiBSdW4gdGhlc2Ugc3Vic3RlcHMgd2hpbGUgY291bnQgaXMgZ3JlYXRlciB0aGFuIDA6XG4gICAgICB3aGlsZSAoY291bnQgPiAwKSB7XG5cbiAgICAgICAgLy8gMS4gU2V0IHRlbXAgdG8gY29kZSBwb2ludCA+PiAoNiDDlyAoY291bnQg4oiSIDEpKS5cbiAgICAgICAgdmFyIHRlbXAgPSBjb2RlX3BvaW50ID4+ICg2ICogKGNvdW50IC0gMSkpO1xuXG4gICAgICAgIC8vIDIuIEFwcGVuZCB0byBieXRlcyAweDgwIHwgKHRlbXAgJiAweDNGKS5cbiAgICAgICAgYnl0ZXMucHVzaCgweDgwIHwgKHRlbXAgJiAweDNGKSk7XG5cbiAgICAgICAgLy8gMy4gRGVjcmVhc2UgY291bnQgYnkgb25lLlxuICAgICAgICBjb3VudCAtPSAxO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gYnl0ZXMgYnl0ZXMsIGluIG9yZGVyLlxuICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtOCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGOEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi04J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEY4RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyA5LiBMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gOS4xIHNpbmdsZS1ieXRlIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IGluZGV4IFRoZSBlbmNvZGluZyBpbmRleC5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaW5nbGVCeXRlRGVjb2RlcihpbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gMy4gTGV0IGNvZGUgcG9pbnQgYmUgdGhlIGluZGV4IGNvZGUgcG9pbnQgZm9yIGJ5dGUg4oiSIDB4ODAgaW5cbiAgICAgIC8vIGluZGV4IHNpbmdsZS1ieXRlLlxuICAgICAgdmFyIGNvZGVfcG9pbnQgPSBpbmRleFtiaXRlIC0gMHg4MF07XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICB9O1xuICB9XG5cbiAgLy8gOS4yIHNpbmdsZS1ieXRlIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPD9udW1iZXI+fSBpbmRleCBUaGUgZW5jb2RpbmcgaW5kZXguXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2luZ2xlQnl0ZUVuY29kZXIoaW5kZXgsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBzaW5nbGUtYnl0ZS5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBwb2ludGVyICsgMHg4MC5cbiAgICAgIHJldHVybiBwb2ludGVyICsgMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICghKCdlbmNvZGluZy1pbmRleGVzJyBpbiBnbG9iYWwpKVxuICAgICAgcmV0dXJuO1xuICAgIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgICBpZiAoY2F0ZWdvcnkuaGVhZGluZyAhPT0gJ0xlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MnKVxuICAgICAgICByZXR1cm47XG4gICAgICBjYXRlZ29yeS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgICB2YXIgbmFtZSA9IGVuY29kaW5nLm5hbWU7XG4gICAgICAgIHZhciBpZHggPSBpbmRleChuYW1lKTtcbiAgICAgICAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICAgICAgICBkZWNvZGVyc1tuYW1lXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZUJ5dGVEZWNvZGVyKGlkeCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgICAgICAgZW5jb2RlcnNbbmFtZV0gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVCeXRlRW5jb2RlcihpZHgsIG9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0oKSk7XG5cbiAgLy9cbiAgLy8gMTAuIExlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHNpbXBsaWZpZWQpIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEwLjEgZ2JrXG5cbiAgLy8gMTAuMS4xIGdiayBkZWNvZGVyXG4gIC8vIGdiaydzIGRlY29kZXIgaXMgZ2IxODAzMCdzIGRlY29kZXIuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2diayddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTAuMS4yIGdiayBlbmNvZGVyXG4gIC8vIGdiaydzIGVuY29kZXIgaXMgZ2IxODAzMCdzIGVuY29kZXIgd2l0aCBpdHMgZ2JrIGZsYWcgc2V0LlxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydnYmsnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIC8vIDEwLjIgZ2IxODAzMFxuXG4gIC8vIDEwLjIuMSBnYjE4MDMwIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBnYjE4MDMwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwXG4gICAgLy8gc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCAoYWxsIGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdiMTgwMzBfZmlyc3QgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF9zZWNvbmQgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgYXJlIDB4MDAsIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGdiMTgwMzBfZmlyc3QgPT09IDB4MDAgJiZcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9PT0gMHgwMCAmJiBnYjE4MDMwX3RoaXJkID09PSAweDAwKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgIH1cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgb3IgZ2IxODAzMCB0aGlyZCBpcyBub3QgMHgwMCwgc2V0IGdiMTgwMzAgZmlyc3QsXG4gICAgICAvLyBnYjE4MDMwIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmXG4gICAgICAgICAgKGdiMTgwMzBfZmlyc3QgIT09IDB4MDAgfHwgZ2IxODAzMF9zZWNvbmQgIT09IDB4MDAgfHwgZ2IxODAzMF90aGlyZCAhPT0gMHgwMCkpIHtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgICAgIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG4gICAgICB2YXIgY29kZV9wb2ludDtcbiAgICAgIC8vIDMuIElmIGdiMTgwMzAgdGhpcmQgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX3RoaXJkICE9PSAweDAwKSB7XG4gICAgICAgIC8vIDEuIExldCBjb2RlIHBvaW50IGJlIG51bGwuXG4gICAgICAgIGNvZGVfcG9pbnQgPSBudWxsO1xuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDMwIHRvIDB4MzksIHNldCBjb2RlIHBvaW50IHRvXG4gICAgICAgIC8vIHRoZSBpbmRleCBnYjE4MDMwIHJhbmdlcyBjb2RlIHBvaW50IGZvciAoKChnYjE4MDMwIGZpcnN0IOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGdiMTgwMzAgc2Vjb25kIOKIkiAweDMwKSDDlyAxMjYgKyBnYjE4MDMwIHRoaXJkIOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGJ5dGUg4oiSIDB4MzAuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MzAsIDB4MzkpKSB7XG4gICAgICAgICAgY29kZV9wb2ludCA9IGluZGV4R0IxODAzMFJhbmdlc0NvZGVQb2ludEZvcihcbiAgICAgICAgICAgICAgKCgoZ2IxODAzMF9maXJzdCAtIDB4ODEpICogMTAgKyAoZ2IxODAzMF9zZWNvbmQgLSAweDMwKSkgKiAxMjYgK1xuICAgICAgICAgICAgICAgKGdiMTgwMzBfdGhpcmQgLSAweDgxKSkgKiAxMCArIGJpdGUgLSAweDMwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIExldCBidWZmZXIgYmUgYSBieXRlIHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgZ2IxODAzMFxuICAgICAgICAvLyBzZWNvbmQsIGdiMTgwMzAgdGhpcmQsIGFuZCBieXRlLCBpbiBvcmRlci5cbiAgICAgICAgdmFyIGJ1ZmZlciA9IFtnYjE4MDMwX3NlY29uZCwgZ2IxODAzMF90aGlyZCwgYml0ZV07XG5cbiAgICAgICAgLy8gNC4gU2V0IGdiMTgwMzAgZmlyc3QsIGdiMTgwMzAgc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCB0b1xuICAgICAgICAvLyAweDAwLlxuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3RoaXJkID0gMHgwMDtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHByZXBlbmQgYnVmZmVyIHRvIHN0cmVhbSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBnYjE4MDMwIHNlY29uZCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfc2Vjb25kICE9PSAweDAwKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZ2IxODAzMCB0aGlyZFxuICAgICAgICAvLyB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgICAgZ2IxODAzMF90aGlyZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGdiMTgwMzAgc2Vjb25kIGZvbGxvd2VkIGJ5IGJ5dGUgdG8gc3RyZWFtLCBzZXRcbiAgICAgICAgLy8gZ2IxODAzMCBmaXJzdCBhbmQgZ2IxODAzMCBzZWNvbmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoW2diMTgwMzBfc2Vjb25kLCBiaXRlXSk7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBnYjE4MDMwIGZpcnN0IGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF9maXJzdCAhPT0gMHgwMCkge1xuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHgzOSwgc2V0IGdiMTgwMzAgc2Vjb25kXG4gICAgICAgIC8vIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgzMCwgMHgzOSkpIHtcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBMZXQgbGVhZCBiZSBnYjE4MDMwIGZpcnN0LCBsZXQgcG9pbnRlciBiZSBudWxsLCBhbmQgc2V0XG4gICAgICAgIC8vIGdiMTgwMzAgZmlyc3QgdG8gMHgwMC5cbiAgICAgICAgdmFyIGxlYWQgPSBnYjE4MDMwX2ZpcnN0O1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuXG4gICAgICAgIC8vIDMuIExldCBvZmZzZXQgYmUgMHg0MCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGIGFuZCAweDQxXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IGJpdGUgPCAweDdGID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4ODAgdG8gMHhGRSxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIDB4ODEpIMOXIDE5MCArIChieXRlIOKIkiBvZmZzZXQpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTkwICsgKGJpdGUgLSBvZmZzZXQpO1xuXG4gICAgICAgIC8vIDUuIExldCBjb2RlIHBvaW50IGJlIG51bGwgaWYgcG9pbnRlciBpcyBudWxsIGFuZCB0aGUgaW5kZXhcbiAgICAgICAgLy8gY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIG90aGVyd2lzZS5cbiAgICAgICAgY29kZV9wb2ludCA9IHBvaW50ZXIgPT09IG51bGwgPyBudWxsIDpcbiAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdnYjE4MDMwJykpO1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA4LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4MCwgcmV0dXJuIGNvZGUgcG9pbnQgVSsyMEFDLlxuICAgICAgaWYgKGJpdGUgPT09IDB4ODApXG4gICAgICAgIHJldHVybiAweDIwQUM7XG5cbiAgICAgIC8vIDguIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGdiMTgwMzAgZmlyc3QgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gOS4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDEwLjIuMiBnYjE4MDMwIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbj19IGdia19mbGFnXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRW5jb2RlcihvcHRpb25zLCBnYmtfZmxhZykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gZ2IxODAzMCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZ2JrIGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKSB7XG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyAzLiBJZiB0aGUgZ2JrIGZsYWcgaXMgc2V0IGFuZCBjb2RlIHBvaW50IGlzIFUrMjBBQywgcmV0dXJuXG4gICAgICAvLyBieXRlIDB4ODAuXG4gICAgICBpZiAoZ2JrX2ZsYWcgJiYgY29kZV9wb2ludCA9PT0gMHgyMEFDKVxuICAgICAgICByZXR1cm4gMHg4MDtcblxuICAgICAgLy8gNC4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGdiMTgwMzAuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnZ2IxODAzMCcpKTtcblxuICAgICAgLy8gNS4gSWYgcG9pbnRlciBpcyBub3QgbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHBvaW50ZXIgIT09IG51bGwpIHtcblxuICAgICAgICAvLyAxLiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTkwKSArIDB4ODE7XG5cbiAgICAgICAgLy8gMi4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxOTAuXG4gICAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxOTA7XG5cbiAgICAgICAgLy8gMy4gTGV0IG9mZnNldCBiZSAweDQwIGlmIHRyYWlsIGlzIGxlc3MgdGhhbiAweDNGIGFuZCAweDQxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IHRyYWlsIDwgMHgzRiA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAgIC8vIDQuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbCArIG9mZnNldC5cbiAgICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGdiayBmbGFnIGlzIHNldCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChnYmtfZmxhZylcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gU2V0IHBvaW50ZXIgdG8gdGhlIGluZGV4IGdiMTgwMzAgcmFuZ2VzIHBvaW50ZXIgZm9yIGNvZGVcbiAgICAgIC8vIHBvaW50LlxuICAgICAgcG9pbnRlciA9IGluZGV4R0IxODAzMFJhbmdlc1BvaW50ZXJGb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDguIExldCBieXRlMSBiZSBwb2ludGVyIC8gMTAgLyAxMjYgLyAxMC5cbiAgICAgIHZhciBieXRlMSA9IGRpdihkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KSwgMTApO1xuXG4gICAgICAvLyA5LiBTZXQgcG9pbnRlciB0byBwb2ludGVyIOKIkiBieXRlMSDDlyAxMCDDlyAxMjYgw5cgMTAuXG4gICAgICBwb2ludGVyID0gcG9pbnRlciAtIGJ5dGUxICogMTAgKiAxMjYgKiAxMDtcblxuICAgICAgLy8gMTAuIExldCBieXRlMiBiZSBwb2ludGVyIC8gMTAgLyAxMjYuXG4gICAgICB2YXIgYnl0ZTIgPSBkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KTtcblxuICAgICAgLy8gMTEuIFNldCBwb2ludGVyIHRvIHBvaW50ZXIg4oiSIGJ5dGUyIMOXIDEwIMOXIDEyNi5cbiAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gYnl0ZTIgKiAxMCAqIDEyNjtcblxuICAgICAgLy8gMTIuIExldCBieXRlMyBiZSBwb2ludGVyIC8gMTAuXG4gICAgICB2YXIgYnl0ZTMgPSBkaXYocG9pbnRlciwgMTApO1xuXG4gICAgICAvLyAxMy4gTGV0IGJ5dGU0IGJlIHBvaW50ZXIg4oiSIGJ5dGUzIMOXIDEwLlxuICAgICAgdmFyIGJ5dGU0ID0gcG9pbnRlciAtIGJ5dGUzICogMTA7XG5cbiAgICAgIC8vIDE0LiBSZXR1cm4gZm91ciBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGJ5dGUxICsgMHg4MSwgYnl0ZTIgK1xuICAgICAgLy8gMHgzMCwgYnl0ZTMgKyAweDgxLCBieXRlNCArIDB4MzAuXG4gICAgICByZXR1cm4gW2J5dGUxICsgMHg4MSxcbiAgICAgICAgICAgICAgYnl0ZTIgKyAweDMwLFxuICAgICAgICAgICAgICBieXRlMyArIDB4ODEsXG4gICAgICAgICAgICAgIGJ5dGU0ICsgMHgzMF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2diMTgwMzAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydnYjE4MDMwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDExLiBMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTEuMSBiaWc1XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBiaWc1J3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBiaWc1IGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGJpZzUgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgYmlnNV9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIDB4MDAsIHJldHVyblxuICAgICAgLy8gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBiaWc1IGxlYWQsIGxldFxuICAgICAgLy8gcG9pbnRlciBiZSBudWxsLCBzZXQgYmlnNSBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoYmlnNV9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gYmlnNV9sZWFkO1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YgYW5kIDB4NjJcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gYml0ZSA8IDB4N0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHhBMSB0byAweEZFLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgMHg4MSkgw5cgMTU3ICsgKGJ5dGUg4oiSIG9mZnNldCkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxNTcgKyAoYml0ZSAtIG9mZnNldCk7XG5cbiAgICAgICAgLy8gMy4gSWYgdGhlcmUgaXMgYSByb3cgaW4gdGhlIHRhYmxlIGJlbG93IHdob3NlIGZpcnN0IGNvbHVtblxuICAgICAgICAvLyBpcyBwb2ludGVyLCByZXR1cm4gdGhlIHR3byBjb2RlIHBvaW50cyBsaXN0ZWQgaW4gaXRzIHNlY29uZFxuICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgLy8gUG9pbnRlciB8IENvZGUgcG9pbnRzXG4gICAgICAgIC8vIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC8vIDExMzMgICAgfCBVKzAwQ0EgVSswMzA0XG4gICAgICAgIC8vIDExMzUgICAgfCBVKzAwQ0EgVSswMzBDXG4gICAgICAgIC8vIDExNjQgICAgfCBVKzAwRUEgVSswMzA0XG4gICAgICAgIC8vIDExNjYgICAgfCBVKzAwRUEgVSswMzBDXG4gICAgICAgIHN3aXRjaCAocG9pbnRlcikge1xuICAgICAgICAgIGNhc2UgMTEzMzogcmV0dXJuIFsweDAwQ0EsIDB4MDMwNF07XG4gICAgICAgICAgY2FzZSAxMTM1OiByZXR1cm4gWzB4MDBDQSwgMHgwMzBDXTtcbiAgICAgICAgICBjYXNlIDExNjQ6IHJldHVybiBbMHgwMEVBLCAweDAzMDRdO1xuICAgICAgICAgIGNhc2UgMTE2NjogcmV0dXJuIFsweDAwRUEsIDB4MDMwQ107XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0LiBMZXQgY29kZSBwb2ludCBiZSBudWxsIGlmIHBvaW50ZXIgaXMgbnVsbCBhbmQgdGhlIGluZGV4XG4gICAgICAgIC8vIGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggYmlnNSBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnYmlnNScpKTtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBiaWc1IGxlYWQgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGJpZzVfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggYmlnNSBwb2ludGVyIGZvciBjb2RlIHBvaW50LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdiaWc1JykpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE1NyArIDB4ODEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxNTcpICsgMHg4MTtcblxuICAgICAgLy8gNi4gSWYgbGVhZCBpcyBsZXNzIHRoYW4gMHhBMSwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChsZWFkIDwgMHhBMSlcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxNTcuXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTU3O1xuXG4gICAgICAvLyA4LiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YgYW5kIDB4NjJcbiAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgIHZhciBvZmZzZXQgPSB0cmFpbCA8IDB4M0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgLy8gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2JpZzUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpZzVFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydiaWc1J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBCaWc1RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDEyLiBMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMi4xIGV1Yy1qcFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDSlBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gZXVjLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBldWMtanAgamlzMDIxMiBmbGFnXG4gICAgLy8gKGluaXRpYWxseSB1bnNldCkgYW5kIGV1Yy1qcCBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2UsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMtanAgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVjanBfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWpwIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2pwX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWpwIGxlYWQgaXMgMHg4RSBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0b1xuICAgICAgLy8gMHhERiwgc2V0IGV1Yy1qcCBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2VcbiAgICAgIC8vIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4QTEuXG4gICAgICBpZiAoZXVjanBfbGVhZCA9PT0gMHg4RSAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4REYpKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4QTE7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGV1Yy1qcCBsZWFkIGlzIDB4OEYgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QTEgdG9cbiAgICAgIC8vIDB4RkUsIHNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZywgc2V0IGV1Yy1qcCBsZWFkIHRvIGJ5dGUsXG4gICAgICAvLyBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgPT09IDB4OEYgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICBldWNqcF9qaXMwMjEyX2ZsYWcgPSB0cnVlO1xuICAgICAgICBldWNqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGV1Yy1qcCBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBldWMtanAgbGVhZCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBldWNqcF9sZWFkO1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IG51bGw7XG5cbiAgICAgICAgLy8gMi4gSWYgbGVhZCBhbmQgYnl0ZSBhcmUgYm90aCBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBzZXRcbiAgICAgICAgLy8gY29kZSBwb2ludCB0byB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgKGxlYWQg4oiSIDB4QTEpIMOXIDk0ICtcbiAgICAgICAgLy8gYnl0ZSDiiJIgMHhBMSBpbiBpbmRleCBqaXMwMjA4IGlmIHRoZSBldWMtanAgamlzMDIxMiBmbGFnIGlzXG4gICAgICAgIC8vIHVuc2V0IGFuZCBpbiBpbmRleCBqaXMwMjEyIG90aGVyd2lzZS5cbiAgICAgICAgaWYgKGluUmFuZ2UobGVhZCwgMHhBMSwgMHhGRSkgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICAgIGNvZGVfcG9pbnQgPSBpbmRleENvZGVQb2ludEZvcihcbiAgICAgICAgICAgIChsZWFkIC0gMHhBMSkgKiA5NCArIChiaXRlIC0gMHhBMSksXG4gICAgICAgICAgICBpbmRleCghZXVjanBfamlzMDIxMl9mbGFnID8gJ2ppczAyMDgnIDogJ2ppczAyMTInKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZy5cbiAgICAgICAgZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2U7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBub3QgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgcHJlcGVuZCBieXRlXG4gICAgICAgIC8vIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKCFpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4RSwgMHg4Riwgb3IgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoYml0ZSA9PT0gMHg4RSB8fCBiaXRlID09PSAweDhGIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA4LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICByZXR1cm4gMHg3RTtcblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGRjYxIHRvIFUrRkY5RiwgcmV0dXJuIHR3b1xuICAgICAgLy8gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSAweDhFIGFuZCBjb2RlIHBvaW50IOKIkiAweEZGNjEgKyAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGRjYxLCAweEZGOUYpKVxuICAgICAgICByZXR1cm4gWzB4OEUsIGNvZGVfcG9pbnQgLSAweEZGNjEgKyAweEExXTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gamlzMDIwOC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHhBMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4QTE7XG5cbiAgICAgIC8vIDEwLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHhBMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4QTE7XG5cbiAgICAgIC8vIDExLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDSlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjIgaXNvLTIwMjItanBcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqIEBlbnVtICovXG4gICAgdmFyIHN0YXRlcyA9IHtcbiAgICAgIEFTQ0lJOiAwLFxuICAgICAgUm9tYW46IDEsXG4gICAgICBLYXRha2FuYTogMixcbiAgICAgIExlYWRCeXRlOiAzLFxuICAgICAgVHJhaWxCeXRlOiA0LFxuICAgICAgRXNjYXBlU3RhcnQ6IDUsXG4gICAgICBFc2NhcGU6IDZcbiAgICB9O1xuICAgIC8vIGlzby0yMDIyLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBpc28tMjAyMi1qcCBkZWNvZGVyXG4gICAgLy8gc3RhdGUgKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlXG4gICAgLy8gKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGxlYWQgKGluaXRpYWxseSAweDAwKSwgYW5kXG4gICAgLy8gaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9sZWFkID0gMHgwMCxcbiAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlOlxuICAgICAgc3dpdGNoIChpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2Ugc3RhdGVzLkFTQ0lJOlxuICAgICAgICAvLyBBU0NJSVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGLCBleGNsdWRpbmcgMHgwRSwgMHgwRiwgYW5kIDB4MUJcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikgJiYgYml0ZSAhPT0gMHgwRVxuICAgICAgICAgICAgJiYgYml0ZSAhPT0gMHgwRiAmJiBiaXRlICE9PSAweDFCKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlJvbWFuOlxuICAgICAgICAvLyBSb21hblxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHg1Q1xuICAgICAgICBpZiAoYml0ZSA9PT0gMHg1Qykge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyBVKzAwQTUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4MDBBNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4N0VcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4N0UpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gVSsyMDNFLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweDIwM0U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDAwIHRvIDB4N0YsIGV4Y2x1ZGluZyAweDBFLCAweDBGLCAweDFCLCAweDVDLCBhbmQgMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSAmJiBiaXRlICE9PSAweDBFICYmIGJpdGUgIT09IDB4MEZcbiAgICAgICAgICAgICYmIGJpdGUgIT09IDB4MUIgJiYgYml0ZSAhPT0gMHg1QyAmJiBiaXRlICE9PSAweDdFKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkthdGFrYW5hOlxuICAgICAgICAvLyBLYXRha2FuYVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDVGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4NUYpKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHgyMS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4MjE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5MZWFkQnl0ZTpcbiAgICAgICAgLy8gTGVhZCBieXRlXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg3RSkpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcCBsZWFkXG4gICAgICAgICAgLy8gdG8gYnl0ZSwgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byB0cmFpbCBieXRlLCBhbmRcbiAgICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSBiaXRlO1xuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLlRyYWlsQnl0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlRyYWlsQnl0ZTpcbiAgICAgICAgLy8gVHJhaWwgYnl0ZVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4N0UpKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IHRoZSBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBwb2ludGVyIGJlIChpc28tMjAyMi1qcCBsZWFkIOKIkiAweDIxKSDDlyA5NCArIGJ5dGUg4oiSIDB4MjEuXG4gICAgICAgICAgdmFyIHBvaW50ZXIgPSAoaXNvMjAyMmpwX2xlYWQgLSAweDIxKSAqIDk0ICsgYml0ZSAtIDB4MjE7XG5cbiAgICAgICAgICAvLyAzLiBMZXQgY29kZSBwb2ludCBiZSB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBqaXMwMjA4LlxuICAgICAgICAgIHZhciBjb2RlX3BvaW50ID0gaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFNldCB0aGUgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUsIHByZXBlbmRcbiAgICAgICAgICAvLyBieXRlIHRvIHN0cmVhbSwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUgYW5kIHJldHVyblxuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGVTdGFydDpcbiAgICAgICAgLy8gRXNjYXBlIHN0YXJ0XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlaXRoZXIgMHgyNCBvciAweDI4LCBzZXQgaXNvLTIwMjItanAgbGVhZCB0b1xuICAgICAgICAvLyBieXRlLCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSwgYW5kIHJldHVyblxuICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MjQgfHwgYml0ZSA9PT0gMHgyOCkge1xuICAgICAgICAgIGlzbzIwMjJqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcFxuICAgICAgICAvLyBkZWNvZGVyIHN0YXRlIHRvIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlLCBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGU6XG4gICAgICAgIC8vIEVzY2FwZVxuXG4gICAgICAgIC8vIDEuIExldCBsZWFkIGJlIGlzby0yMDIyLWpwIGxlYWQgYW5kIHNldCBpc28tMjAyMi1qcCBsZWFkIHRvXG4gICAgICAgIC8vIDB4MDAuXG4gICAgICAgIHZhciBsZWFkID0gaXNvMjAyMmpwX2xlYWQ7XG4gICAgICAgIGlzbzIwMjJqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAyLiBMZXQgc3RhdGUgYmUgbnVsbC5cbiAgICAgICAgdmFyIHN0YXRlID0gbnVsbDtcblxuICAgICAgICAvLyAzLiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0Miwgc2V0IHN0YXRlIHRvIEFTQ0lJLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDQyKVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkFTQ0lJO1xuXG4gICAgICAgIC8vIDQuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDRBLCBzZXQgc3RhdGUgdG8gUm9tYW4uXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NEEpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuUm9tYW47XG5cbiAgICAgICAgLy8gNS4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NDksIHNldCBzdGF0ZSB0byBLYXRha2FuYS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0OSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5LYXRha2FuYTtcblxuICAgICAgICAvLyA2LiBJZiBsZWFkIGlzIDB4MjQgYW5kIGJ5dGUgaXMgZWl0aGVyIDB4NDAgb3IgMHg0Miwgc2V0XG4gICAgICAgIC8vIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjQgJiYgKGJpdGUgPT09IDB4NDAgfHwgYml0ZSA9PT0gMHg0MikpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG5cbiAgICAgICAgLy8gNy4gSWYgc3RhdGUgaXMgbm9uLW51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgYW5kIGlzby0yMDIyLWpwIGRlY29kZXJcbiAgICAgICAgICAvLyBvdXRwdXQgc3RhdGUgdG8gc3RhdGVzLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBvdXRwdXQgZmxhZyBiZSB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcuXG4gICAgICAgICAgdmFyIG91dHB1dF9mbGFnID0gaXNvMjAyMmpwX291dHB1dF9mbGFnO1xuXG4gICAgICAgICAgLy8gMy4gU2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZy5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gNC4gUmV0dXJuIGNvbnRpbnVlLCBpZiBvdXRwdXQgZmxhZyBpcyB1bnNldCwgYW5kIGVycm9yXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICAgIHJldHVybiAhb3V0cHV0X2ZsYWcgPyBudWxsIDogZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDguIFByZXBlbmQgbGVhZCBhbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKFtsZWFkLCBiaXRlXSk7XG5cbiAgICAgICAgLy8gOS4gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLCBzZXQgaXNvLTIwMjItanBcbiAgICAgICAgLy8gZGVjb2RlciBzdGF0ZSB0byBpc28tMjAyMi1qcCBkZWNvZGVyIG91dHB1dCBzdGF0ZSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gaXNvLTIwMjItanAncyBlbmNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAvLyBzdGF0ZSB3aGljaCBpcyBvbmUgb2YgQVNDSUksIFJvbWFuLCBhbmQgamlzMDIwOCAoaW5pdGlhbGx5XG4gICAgLy8gQVNDSUkpLlxuICAgIC8qKiBAZW51bSAqL1xuICAgIHZhciBzdGF0ZXMgPSB7XG4gICAgICBBU0NJSTogMCxcbiAgICAgIFJvbWFuOiAxLFxuICAgICAgamlzMDIwODogMlxuICAgIH07XG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBpc28tMjAyMi1qcCBlbmNvZGVyXG4gICAgICAvLyBzdGF0ZSBpcyBub3QgQVNDSUksIHByZXBlbmQgY29kZSBwb2ludCB0byBzdHJlYW0sIHNldFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBBU0NJSSwgYW5kIHJldHVybiB0aHJlZSBieXRlc1xuICAgICAgLy8gMHgxQiAweDI4IDB4NDIuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLkFTQ0lJKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0gYW5kIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAgIC8vIHN0YXRlIGlzIEFTQ0lJLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJiBpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIEFTQ0lJIGFuZCBjb2RlIHBvaW50IGlzIGluXG4gICAgICAvLyB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlXG4gICAgICAvLyBwb2ludC5cbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gNC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBSb21hbiBhbmQgY29kZSBwb2ludCBpcyBpblxuICAgICAgLy8gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIGV4Y2x1ZGluZyBVKzAwNUMgYW5kIFUrMDA3RSwgb3JcbiAgICAgIC8vIGlzIFUrMDBBNSBvciBVKzIwM0UsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5Sb21hbiAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgY29kZV9wb2ludCAhPT0gMHgwMDVDICYmIGNvZGVfcG9pbnQgIT09IDB4MDA3RSkge1xuXG4gICAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICAgIHJldHVybiAweDdFO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCBhbmRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgbm90IEFTQ0lJLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG9cbiAgICAgIC8vIHN0cmVhbSwgc2V0IGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gQVNDSUksIGFuZCByZXR1cm5cbiAgICAgIC8vIHRocmVlIGJ5dGVzIDB4MUIgMHgyOCAweDQyLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuQVNDSUkpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5BU0NJSTtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI4LCAweDQyXTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBlaXRoZXIgVSswMEE1IG9yIFUrMjAzRSwgYW5kIGlzby0yMDIyLWpwXG4gICAgICAvLyBlbmNvZGVyIHN0YXRlIGlzIG5vdCBSb21hbiwgcHJlcGVuZCBjb2RlIHBvaW50IHRvIHN0cmVhbSwgc2V0XG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIFJvbWFuLCBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzXG4gICAgICAvLyAweDFCIDB4MjggMHg0QS5cbiAgICAgIGlmICgoY29kZV9wb2ludCA9PT0gMHgwMEE1IHx8IGNvZGVfcG9pbnQgPT09IDB4MjAzRSkgJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5Sb21hbikge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLlJvbWFuO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NEFdO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDguIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBqaXMwMjA4LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgIC8vIDkuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyAxMC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBub3QgamlzMDIwOCwgcHJlcGVuZCBjb2RlXG4gICAgICAvLyBwb2ludCB0byBzdHJlYW0sIHNldCBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIGppczAyMDgsXG4gICAgICAvLyBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzIDB4MUIgMHgyNCAweDQyLlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLmppczAyMDgpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5qaXMwMjA4O1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjQsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAxMS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHgyMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4MjE7XG5cbiAgICAgIC8vIDEyLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHgyMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4MjE7XG5cbiAgICAgIC8vIDEzLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snaXNvLTIwMjItanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IElTTzIwMjJKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2lzby0yMDIyLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBJU08yMDIySlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjMgc2hpZnRfamlzXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaGlmdEpJU0RlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gc2hpZnRfamlzJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBzaGlmdF9qaXMgbGVhZCAoaW5pdGlhbGx5XG4gICAgLy8gMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsXG4gICAgICAvLyBzZXQgc2hpZnRfamlzIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgMHgwMCxcbiAgICAgIC8vIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHNoaWZ0amlzX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIHNoaWZ0X2ppcyBsZWFkLFxuICAgICAgLy8gbGV0IHBvaW50ZXIgYmUgbnVsbCwgc2V0IHNoaWZ0X2ppcyBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1blxuICAgICAgLy8gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IHNoaWZ0amlzX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwLCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGLCBhbmQgMHg0MVxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSAoYml0ZSA8IDB4N0YpID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gMi4gTGV0IGxlYWQgb2Zmc2V0IGJlIDB4ODEsIGlmIGxlYWQgaXMgbGVzcyB0aGFuIDB4QTAsIGFuZFxuICAgICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGxlYWRfb2Zmc2V0ID0gKGxlYWQgPCAweEEwKSA/IDB4ODEgOiAweEMxO1xuXG4gICAgICAgIC8vIDMuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweDgwIHRvIDB4RkMsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiBsZWFkIG9mZnNldCkgw5cgMTg4ICsgYnl0ZSDiiJIgb2Zmc2V0LlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkMpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIGxlYWRfb2Zmc2V0KSAqIDE4OCArIGJpdGUgLSBvZmZzZXQ7XG5cbiAgICAgICAgLy8gNC4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggamlzMDIwOCBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgcG9pbnRlciBpcyBpbiB0aGUgcmFuZ2UgODgzNlxuICAgICAgICAvLyB0byAxMDUyOCwgcmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweEUwMDAgK1xuICAgICAgICAvLyBwb2ludGVyIOKIkiA4ODM2LlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBwb2ludGVyICE9PSBudWxsICYmXG4gICAgICAgICAgICBpblJhbmdlKHBvaW50ZXIsIDg4MzYsIDEwNTI4KSlcbiAgICAgICAgICByZXR1cm4gMHhFMDAwICsgcG9pbnRlciAtIDg4MzY7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDguIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg4MCwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4ODApKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweERGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhERikpXG4gICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHhBMTtcblxuICAgICAgLy8gNi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweDlGIG9yIDB4RTAgdG8gMHhGQywgc2V0XG4gICAgICAvLyBzaGlmdF9qaXMgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweDlGKSB8fCBpblJhbmdlKGJpdGUsIDB4RTAsIDB4RkMpKSB7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA4MCwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDgwKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MDBBNSlcbiAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAzRSlcbiAgICAgICAgcmV0dXJuIDB4N0U7XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrRkY2MSB0byBVK0ZGOUYsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQg4oiSIDB4RkY2MSArIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEZGNjEsIDB4RkY5RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50IC0gMHhGRjYxICsgMHhBMTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggc2hpZnRfamlzIHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4U2hpZnRKSVNQb2ludGVyRm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE4OC5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE4OCk7XG5cbiAgICAgIC8vIDEwLiBMZXQgbGVhZCBvZmZzZXQgYmUgMHg4MSwgaWYgbGVhZCBpcyBsZXNzIHRoYW4gMHgxRiwgYW5kXG4gICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgIHZhciBsZWFkX29mZnNldCA9IChsZWFkIDwgMHgxRikgPyAweDgxIDogMHhDMTtcblxuICAgICAgLy8gMTEuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTg4LlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE4ODtcblxuICAgICAgLy8gMTIuIExldCBvZmZzZXQgYmUgMHg0MCwgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YsIGFuZCAweDQxXG4gICAgICAvLyBvdGhlcndpc2UuXG4gICAgICB2YXIgb2Zmc2V0ID0gKHRyYWlsIDwgMHgzRikgPyAweDQwIDogMHg0MTtcblxuICAgICAgLy8gMTMuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkICsgbGVhZCBvZmZzZXQgYW5kXG4gICAgICAvLyB0cmFpbCArIG9mZnNldC5cbiAgICAgIHJldHVybiBbbGVhZCArIGxlYWRfb2Zmc2V0LCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3NoaWZ0X2ppcyddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydzaGlmdF9qaXMnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFNoaWZ0SklTRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyAxMy4gTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEzLjEgZXVjLWtyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkRlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyBldWMta3IncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGV1Yy1rciBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gZXVjLWtyIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVja3JfbGVhZCAhPT0gMCkge1xuICAgICAgICBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2tyX2xlYWQgPT09IDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGV1Yy1rciBsZWFkLCBsZXRcbiAgICAgIC8vIHBvaW50ZXIgYmUgbnVsbCwgc2V0IGV1Yy1rciBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoZXVja3JfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGV1Y2tyX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgZXVja3JfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MSB0byAweEZFLCBzZXQgcG9pbnRlciB0b1xuICAgICAgICAvLyAobGVhZCDiiJIgMHg4MSkgw5cgMTkwICsgKGJ5dGUg4oiSIDB4NDEpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQxLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE5MCArIChiaXRlIC0gMHg0MSk7XG5cbiAgICAgICAgLy8gMi4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggZXVjLWtyIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDogaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2V1Yy1rcicpKTtcblxuICAgICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBldWMta3IgbGVhZCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgZXVja3JfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGV1Yy1rci5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdldWMta3InKSk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE5MCkgKyAweDgxO1xuXG4gICAgICAvLyA2LiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE5MCArIDB4NDEuXG4gICAgICB2YXIgdHJhaWwgPSAocG9pbnRlciAlIDE5MCkgKyAweDQxO1xuXG4gICAgICAvLyA3LiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWtyJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNLUkVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1rciddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDS1JEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTQuIExlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDE0LjEgcmVwbGFjZW1lbnRcblxuICAvLyBOb3QgbmVlZGVkIC0gQVBJIHRocm93cyBSYW5nZUVycm9yXG5cbiAgLy8gMTQuMiB1dGYtMTZcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfdW5pdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2YmVcbiAgICogQHJldHVybiB7IUFycmF5LjxudW1iZXI+fSBieXRlc1xuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3VuaXQsIHV0ZjE2YmUpIHtcbiAgICAvLyAxLiBMZXQgYnl0ZTEgYmUgY29kZSB1bml0ID4+IDguXG4gICAgdmFyIGJ5dGUxID0gY29kZV91bml0ID4+IDg7XG5cbiAgICAvLyAyLiBMZXQgYnl0ZTIgYmUgY29kZSB1bml0ICYgMHgwMEZGLlxuICAgIHZhciBieXRlMiA9IGNvZGVfdW5pdCAmIDB4MDBGRjtcblxuICAgIC8vIDMuIFRoZW4gcmV0dXJuIHRoZSBieXRlcyBpbiBvcmRlcjpcbiAgICAgICAgLy8gdXRmLTE2YmUgZmxhZyBpcyBzZXQ6IGJ5dGUxLCB0aGVuIGJ5dGUyLlxuICAgIGlmICh1dGYxNmJlKVxuICAgICAgcmV0dXJuIFtieXRlMSwgYnl0ZTJdO1xuICAgIC8vIHV0Zi0xNmJlIGZsYWcgaXMgdW5zZXQ6IGJ5dGUyLCB0aGVuIGJ5dGUxLlxuICAgIHJldHVybiBbYnl0ZTIsIGJ5dGUxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZfYmUgVHJ1ZSBpZiBiaWctZW5kaWFuLCBmYWxzZSBpZiBsaXR0bGUtZW5kaWFuLlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjE2RGVjb2Rlcih1dGYxNl9iZSwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgdmFyIC8qKiBAdHlwZSB7P251bWJlcn0gKi8gdXRmMTZfbGVhZF9ieXRlID0gbnVsbCxcbiAgICAgICAgLyoqIEB0eXBlIHs/bnVtYmVyfSAqLyB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGVpdGhlciB1dGYtMTYgbGVhZCBieXRlIG9yXG4gICAgICAvLyB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgaXMgbm90IG51bGwsIHNldCB1dGYtMTYgbGVhZCBieXRlIGFuZFxuICAgICAgLy8gdXRmLTE2IGxlYWQgc3Vycm9nYXRlIHRvIG51bGwsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiAodXRmMTZfbGVhZF9ieXRlICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSkge1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCB1dGYtMTYgbGVhZCBieXRlIGFuZCB1dGYtMTZcbiAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIGFyZSBudWxsLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiB1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwgJiZcbiAgICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHV0Zi0xNiBsZWFkIGJ5dGUgaXMgbnVsbCwgc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgdG8gYnl0ZVxuICAgICAgLy8gYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmICh1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgdXRmMTZfbGVhZF9ieXRlID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIExldCBjb2RlIHVuaXQgYmUgdGhlIHJlc3VsdCBvZjpcbiAgICAgIHZhciBjb2RlX3VuaXQ7XG4gICAgICBpZiAodXRmMTZfYmUpIHtcbiAgICAgICAgLy8gdXRmLTE2YmUgZGVjb2RlciBmbGFnIGlzIHNldFxuICAgICAgICAvLyAgICh1dGYtMTYgbGVhZCBieXRlIDw8IDgpICsgYnl0ZS5cbiAgICAgICAgY29kZV91bml0ID0gKHV0ZjE2X2xlYWRfYnl0ZSA8PCA4KSArIGJpdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgaXMgdW5zZXRcbiAgICAgICAgLy8gICAoYnl0ZSA8PCA4KSArIHV0Zi0xNiBsZWFkIGJ5dGUuXG4gICAgICAgIGNvZGVfdW5pdCA9IChiaXRlIDw8IDgpICsgdXRmMTZfbGVhZF9ieXRlO1xuICAgICAgfVxuICAgICAgLy8gVGhlbiBzZXQgdXRmLTE2IGxlYWQgYnl0ZSB0byBudWxsLlxuICAgICAgdXRmMTZfbGVhZF9ieXRlID0gbnVsbDtcblxuICAgICAgLy8gNS4gSWYgdXRmLTE2IGxlYWQgc3Vycm9nYXRlIGlzIG5vdCBudWxsLCBsZXQgbGVhZCBzdXJyb2dhdGVcbiAgICAgIC8vIGJlIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSwgc2V0IHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSB0byBudWxsLFxuICAgICAgLy8gYW5kIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBsZWFkX3N1cnJvZ2F0ZSA9IHV0ZjE2X2xlYWRfc3Vycm9nYXRlO1xuICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gMS4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm4gYVxuICAgICAgICAvLyBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4MTAwMDAgKyAoKGxlYWQgc3Vycm9nYXRlIOKIklxuICAgICAgICAvLyAweEQ4MDApIDw8IDEwKSArIChjb2RlIHVuaXQg4oiSIDB4REMwMCkuXG4gICAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEQzAwLCAweERGRkYpKSB7XG4gICAgICAgICAgcmV0dXJuIDB4MTAwMDAgKyAobGVhZF9zdXJyb2dhdGUgLSAweEQ4MDApICogMHg0MDAgK1xuICAgICAgICAgICAgICAoY29kZV91bml0IC0gMHhEQzAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgdGhlIHNlcXVlbmNlIHJlc3VsdGluZyBvZiBjb252ZXJ0aW5nIGNvZGUgdW5pdFxuICAgICAgICAvLyB0byBieXRlcyB1c2luZyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgdG8gc3RyZWFtIGFuZCByZXR1cm5cbiAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoY29kZV91bml0LCB1dGYxNl9iZSkpO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0Q4MDAgdG8gVStEQkZGLCBzZXQgdXRmLTE2XG4gICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSB0byBjb2RlIHVuaXQgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEODAwLCAweERCRkYpKSB7XG4gICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gY29kZV91bml0O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm5cbiAgICAgIC8vIGVycm9yLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweERDMDAsIDB4REZGRikpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA4LiBSZXR1cm4gY29kZSBwb2ludCBjb2RlIHVuaXQuXG4gICAgICByZXR1cm4gY29kZV91bml0O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2X2JlIFRydWUgaWYgYmlnLWVuZGlhbiwgZmFsc2UgaWYgbGl0dGxlLWVuZGlhbi5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEYxNkVuY29kZXIodXRmMTZfYmUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrRkZGRiwgcmV0dXJuIHRoZVxuICAgICAgLy8gc2VxdWVuY2UgcmVzdWx0aW5nIG9mIGNvbnZlcnRpbmcgY29kZSBwb2ludCB0byBieXRlcyB1c2luZ1xuICAgICAgLy8gdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweEZGRkYpKVxuICAgICAgICByZXR1cm4gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3BvaW50LCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDMuIExldCBsZWFkIGJlICgoY29kZSBwb2ludCDiiJIgMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciBsZWFkID0gY29udmVydENvZGVVbml0VG9CeXRlcyhcbiAgICAgICAgKChjb2RlX3BvaW50IC0gMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDQuIExldCB0cmFpbCBiZSAoKGNvZGUgcG9pbnQg4oiSIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciB0cmFpbCA9IGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoXG4gICAgICAgICgoY29kZV9wb2ludCAtIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGJ5dGUgc2VxdWVuY2Ugb2YgbGVhZCBmb2xsb3dlZCBieSB0cmFpbC5cbiAgICAgIHJldHVybiBsZWFkLmNvbmNhdCh0cmFpbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDE0LjMgdXRmLTE2YmVcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RW5jb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RGVjb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC40IHV0Zi0xNmxlXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi0xNmxlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkVuY29kZXIoZmFsc2UsIG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtMTZsZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZEZWNvZGVyKGZhbHNlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC41IHgtdXNlci1kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDMuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHhGNzgwICsgYnl0ZSDiiJIgMHg4MC5cbiAgICAgIHJldHVybiAweEY3ODAgKyBiaXRlIC0gMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWRFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGNzgwIHRvIFUrRjdGRiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCDiiJIgMHhGNzgwICsgMHg4MC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4Rjc4MCwgMHhGN0ZGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQgLSAweEY3ODAgKyAweDgwO1xuXG4gICAgICAvLyA0LiBSZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sneC11c2VyLWRlZmluZWQnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFhVc2VyRGVmaW5lZEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3gtdXNlci1kZWZpbmVkJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsWydUZXh0RW5jb2RlciddKVxuICAgIGdsb2JhbFsnVGV4dEVuY29kZXInXSA9IFRleHRFbmNvZGVyO1xuICBpZiAoIWdsb2JhbFsnVGV4dERlY29kZXInXSlcbiAgICBnbG9iYWxbJ1RleHREZWNvZGVyJ10gPSBUZXh0RGVjb2Rlcjtcbn0odGhpcykpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94NSwgX3g2LCBfeDcpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3g1LCBwcm9wZXJ0eSA9IF94NiwgcmVjZWl2ZXIgPSBfeDc7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3g1ID0gcGFyZW50OyBfeDYgPSBwcm9wZXJ0eTsgX3g3ID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi9zZXNzaW9uJyk7XG5cbnZhciBfc2Vzc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXNzaW9uKTtcblxudmFyIF9pbnRlcm5hbFBvb2wgPSByZXF1aXJlKCcuL2ludGVybmFsL3Bvb2wnKTtcblxudmFyIF9pbnRlcm5hbENvbm5lY3RvciA9IHJlcXVpcmUoXCIuL2ludGVybmFsL2Nvbm5lY3RvclwiKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3ZlcnNpb24gPSByZXF1aXJlKCcuLi92ZXJzaW9uJyk7XG5cbi8qKlxuICogQSBkcml2ZXIgbWFpbnRhaW5zIG9uZSBvciBtb3JlIHtAbGluayBTZXNzaW9uIHNlc3Npb25zfSB3aXRoIGEgcmVtb3RlXG4gKiBOZW80aiBpbnN0YW5jZS4gVGhyb3VnaCB0aGUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHlvdSBjYW4gc2VuZCBzdGF0ZW1lbnRzXG4gKiBhbmQgcmV0cmlldmUgcmVzdWx0cyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBEcml2ZXJzIGFyZSByZWFzb25hYmx5IGV4cGVuc2l2ZSB0byBjcmVhdGUgLSB5b3Ugc2hvdWxkIHN0cml2ZSB0byBrZWVwIG9uZVxuICogZHJpdmVyIGluc3RhbmNlIGFyb3VuZCBwZXIgTmVvNGogSW5zdGFuY2UgeW91IGNvbm5lY3QgdG8uXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuXG52YXIgRHJpdmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFlvdSBzaG91bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBkaXJlY3RseSwgaW5zdGVhZCB1c2Uge0BsaW5rIGRyaXZlcn0uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyQWdlbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIERyaXZlcih1cmwpIHtcbiAgICB2YXIgdXNlckFnZW50ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gJ25lbzRqLWphdmFzY3JpcHQvMC4wJyA6IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgdG9rZW4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1syXTtcbiAgICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAzIHx8IGFyZ3VtZW50c1szXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbM107XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRHJpdmVyKTtcblxuICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICB0aGlzLl91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgdGhpcy5fb3BlblNlc3Npb25zID0ge307XG4gICAgdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yID0gMDtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLl9wb29sID0gbmV3IF9pbnRlcm5hbFBvb2wuUG9vbCh0aGlzLl9jcmVhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIHRoaXMuX2Rlc3Ryb3lDb25uZWN0aW9uLmJpbmQodGhpcyksIHRoaXMuX3ZhbGlkYXRlQ29ubmVjdGlvbi5iaW5kKHRoaXMpLCBjb25maWcuY29ubmVjdGlvblBvb2xTaXplKTtcbiAgfVxuXG4gIC8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgY29ubmVjdGlvbiBzdGF0ZSAqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gbmV3IGNvbm5lY3Rvci1hcGkgc2Vzc2lvbiBpbnN0YW5jZSwgYSBsb3cgbGV2ZWwgc2Vzc2lvbiBBUEkuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoRHJpdmVyLCBbe1xuICAgIGtleTogJ19jcmVhdGVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZUNvbm5lY3Rpb24ocmVsZWFzZSkge1xuICAgICAgdmFyIHNlc3Npb25JZCA9IHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvcisrO1xuICAgICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyk7XG4gICAgICB2YXIgY29ubiA9ICgwLCBfaW50ZXJuYWxDb25uZWN0b3IuY29ubmVjdCkodGhpcy5fdXJsLCB0aGlzLl9jb25maWcpO1xuICAgICAgY29ubi5pbml0aWFsaXplKHRoaXMuX3VzZXJBZ2VudCwgdGhpcy5fdG9rZW4sIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgIGNvbm4uX2lkID0gc2Vzc2lvbklkO1xuICAgICAgY29ubi5fcmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlbGVhc2UoY29ubik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXSA9IGNvbm47XG4gICAgICByZXR1cm4gY29ubjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB0aGF0IGEgY29ubmVjdGlvbiBpcyB1c2FibGVcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKiovXG4gIH0sIHtcbiAgICBrZXk6ICdfdmFsaWRhdGVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3ZhbGlkYXRlQ29ubmVjdGlvbihjb25uKSB7XG4gICAgICByZXR1cm4gY29ubi5pc09wZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwb3NlIG9mIGEgbGl2ZSBzZXNzaW9uLCBjbG9zaW5nIGFueSBhc3NvY2lhdGVkIHJlc291cmNlcy5cbiAgICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBuZXcgc2Vzc2lvbi5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ19kZXN0cm95Q29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZXN0cm95Q29ubmVjdGlvbihjb25uKSB7XG4gICAgICBkZWxldGUgdGhpcy5fb3BlblNlc3Npb25zW2Nvbm4uX2lkXTtcbiAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBY3F1aXJlIGEgc2Vzc2lvbiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZS4gVGhlIGRyaXZlciBtYWludGFpbnNcbiAgICAgKiBhIHBvb2wgb2Ygc2Vzc2lvbnMsIHNvIGNhbGxpbmcgdGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgY2hlYXAgYmVjYXVzZSB5b3VcbiAgICAgKiB3aWxsIGJlIHB1bGxpbmcgYSBzZXNzaW9uIG91dCBvZiB0aGUgY29tbW9uIHBvb2wuXG4gICAgICpcbiAgICAgKiBUaGlzIGNvbWVzIHdpdGggc29tZSByZXNwb25zaWJpbGl0eSAtIG1ha2Ugc3VyZSB5b3UgYWx3YXlzIGNhbGxcbiAgICAgKiB7QGxpbmsgU2Vzc2lvbiNjbG9zZSgpfSB3aGVuIHlvdSBhcmUgZG9uZSB1c2luZyBhIHNlc3Npb24sIGFuZCBsaWtld2lzZSxcbiAgICAgKiBtYWtlIHN1cmUgeW91IGRvbid0IGNsb3NlIHlvdXIgc2Vzc2lvbiBiZWZvcmUgeW91IGFyZSBkb25lIHVzaW5nIGl0LiBPbmNlXG4gICAgICogaXQgaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wsIHRoZSBzZXNzaW9uIHdpbGwgYmUgcmVzZXQgdG8gYSBjbGVhbiBzdGF0ZSBhbmRcbiAgICAgKiBtYWRlIGF2YWlsYWJsZSBmb3Igb3RoZXJzIHRvIHVzZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnc2Vzc2lvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlc3Npb24oKSB7XG4gICAgICB2YXIgY29ubiA9IHRoaXMuX3Bvb2wuYWNxdWlyZSgpO1xuICAgICAgcmV0dXJuIG5ldyBfc2Vzc2lvbjJbJ2RlZmF1bHQnXShjb25uLCBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgLy8gVGhpcyBnZXRzIGNhbGxlZCBvbiBTZXNzaW9uI2Nsb3NlKCksIGFuZCBpcyB3aGVyZSB3ZSByZXR1cm5cbiAgICAgICAgLy8gdGhlIHBvb2xlZCAnY29ubmVjdGlvbicgaW5zdGFuY2UuXG5cbiAgICAgICAgLy8gV2UgZG9uJ3QgcG9vbCBTZXNzaW9uIGluc3RhbmNlcywgdG8gYXZvaWQgdXNlcnMgdXNpbmcgdGhlIFNlc3Npb25cbiAgICAgICAgLy8gYWZ0ZXIgdGhleSd2ZSBjYWxsZWQgY2xvc2UuIFRoZSBgU2Vzc2lvbmAgb2JqZWN0IGlzIGp1c3QgYSB0aGluXG4gICAgICAgIC8vIHdyYXBwZXIgYXJvdW5kIENvbm5lY3Rpb24gYW55d2F5LCBzbyBpdCBtYWtlcyBsaXR0bGUgZGlmZmVyZW5jZS5cblxuICAgICAgICAvLyBRdWV1ZSB1cCBhICdyZXNldCcsIHRvIGVuc3VyZSB0aGUgbmV4dCB1c2VyIGdldHMgYSBjbGVhblxuICAgICAgICAvLyBzZXNzaW9uIHRvIHdvcmsgd2l0aC5cbiAgICAgICAgY29ubi5yZXNldCgpO1xuICAgICAgICBjb25uLnN5bmMoKTtcblxuICAgICAgICAvLyBSZXR1cm4gY29ubmVjdGlvbiB0byB0aGUgcG9vbFxuICAgICAgICBjb25uLl9yZWxlYXNlKCk7XG5cbiAgICAgICAgLy8gQ2FsbCB1c2VyIGNhbGxiYWNrXG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIGNiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGFsbCBvcGVuIHNlc3Npb25zIGFuZCBvdGhlciBhc3NvY2lhdGVkIHJlc291cmNlcy4gWW91IHNob3VsZFxuICAgICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhpcyB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgZHJpdmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4gdW5kZWZpbmVkXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgZm9yICh2YXIgc2Vzc2lvbklkIGluIHRoaXMuX29wZW5TZXNzaW9ucykge1xuICAgICAgICBpZiAodGhpcy5fb3BlblNlc3Npb25zLmhhc093blByb3BlcnR5KHNlc3Npb25JZCkpIHtcbiAgICAgICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIERyaXZlcjtcbn0pKCk7XG5cbnZhciBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyID0gKGZ1bmN0aW9uIChfU3RyZWFtT2JzZXJ2ZXIpIHtcbiAgX2luaGVyaXRzKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIF9TdHJlYW1PYnNlcnZlcik7XG5cbiAgZnVuY3Rpb24gX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcihkcml2ZXIpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG4gICAgdGhpcy5fZHJpdmVyID0gZHJpdmVyO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiAnb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCB0aGlzKS5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgaWYgKHRoaXMuX2RyaXZlci5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fZHJpdmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KShfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSk7XG5cbnZhciBVU0VSX0FHRU5UID0gXCJuZW80ai1qYXZhc2NyaXB0L1wiICsgX3ZlcnNpb24uVkVSU0lPTjtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgYSBuZXcgTmVvNGogRHJpdmVyLiBUaGlzIGlzIHlvdXIgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhpc1xuICogbGlicmFyeS5cbiAqXG4gKiAjIyBDb25maWd1cmF0aW9uXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIGEgY29uZmlndXJhdGlvbiBhcmd1bWVudC4gQXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25cbiAqIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6XG4gKlxuICogICAgIHtcbiAqICAgICAgIC8vIEVuYWJsZSBUTFMgZW5jcnlwdGlvbi4gVGhpcyBpcyBvbiBieSBkZWZhdWx0IGluIG1vZGVybiBOb2RlSlMgaW5zdGFsbHMsXG4gKiAgICAgICAvLyBidXQgb2ZmIGJ5IGRlZmF1bHQgaW4gdGhlIFdlYiBCdW5kbGUgYW5kIG9sZCAoPD0xLjAuMCkgTm9kZUpTIGluc3RhbGxzXG4gKiAgICAgICAvLyBkdWUgdG8gdGVjaG5pY2FsIGxpbWl0YXRpb25zIG9uIHRob3NlIHBsYXRmb3Jtcy5cbiAqICAgICAgIGVuY3J5cHRlZDogdHJ1ZXxmYWxzZSxcbiAqXG4gKiAgICAgICAvLyBUcnVzdCBzdHJhdGVneSB0byB1c2UgaWYgZW5jcnlwdGlvbiBpcyBlbmFibGVkLiBUaGVyZSBpcyBubyBtb2RlIHRvIGRpc2FibGVcbiAqICAgICAgIC8vIHRydXN0IG90aGVyIHRoYW4gZGlzYWJsaW5nIGVuY3J5cHRpb24gYWx0b2dldGhlci4gVGhlIHJlYXNvbiBmb3JcbiAqICAgICAgIC8vIHRoaXMgaXMgdGhhdCBpZiB5b3UgZG9uJ3Qga25vdyB3aG8geW91IGFyZSB0YWxraW5nIHRvLCBpdCBpcyBlYXN5IGZvciBhblxuICogICAgICAgLy8gYXR0YWNrZXIgdG8gaGlqYWNrIHlvdXIgZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHJlbmRlcmluZyBlbmNyeXB0aW9uIHBvaW50bGVzcy5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgdGhlIGRlZmF1bHQgZm9yIG1vZGVybiBOb2RlSlMgZGVwbG95bWVudHMsIGFuZCB3b3Jrc1xuICogICAgICAgLy8gc2ltaWxhcmx5IHRvIGhvdyBgc3NsYCB3b3JrcyAtIHRoZSBmaXJzdCB0aW1lIHdlIGNvbm5lY3QgdG8gYSBuZXcgaG9zdCxcbiAqICAgICAgIC8vIHdlIHJlbWVtYmVyIHRoZSBjZXJ0aWZpY2F0ZSB0aGV5IHVzZS4gSWYgdGhlIGNlcnRpZmljYXRlIGV2ZXIgY2hhbmdlcywgd2VcbiAqICAgICAgIC8vIGFzc3VtZSBpdCBpcyBhbiBhdHRlbXB0IHRvIGhpamFjayB0aGUgY29ubmVjdGlvbiBhbmQgcmVxdWlyZSBtYW51YWwgaW50ZXJ2ZW50aW9uLlxuICogICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGJ5IGRlZmF1bHQsIGNvbm5lY3Rpb25zIFwianVzdCB3b3JrXCIgd2hpbGUgc3RpbGwgZ2l2aW5nIHlvdVxuICogICAgICAgLy8gZ29vZCBlbmNyeXB0ZWQgcHJvdGVjdGlvbi5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTIGlzIHRoZSBjbGFzc2ljIGFwcHJvYWNoIHRvIHRydXN0IHZlcmlmaWNhdGlvbiAtXG4gKiAgICAgICAvLyB3aGVuZXZlciB3ZSBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHdlIGVuc3VyZSB0aGUgaG9zdCBpcyB1c2luZ1xuICogICAgICAgLy8gYW4gZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSB0aGF0IGlzIGluLCBvciBpcyBzaWduZWQgYnksIGEgY2VydGlmaWNhdGUgbGlzdGVkXG4gKiAgICAgICAvLyBhcyB0cnVzdGVkLiBJbiB0aGUgd2ViIGJ1bmRsZSwgdGhpcyBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlzIG1haW50YWluZWRcbiAqICAgICAgIC8vIGJ5IHRoZSB3ZWIgYnJvd3Nlci4gSW4gTm9kZUpTLCB5b3UgY29uZmlndXJlIHRoZSBsaXN0IHdpdGggdGhlIG5leHQgY29uZmlnIG9wdGlvbi5cbiAqICAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiIHwgXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gKlxuICogICAgICAgLy8gTGlzdCBvZiBvbmUgb3IgbW9yZSBwYXRocyB0byB0cnVzdGVkIGVuY3J5cHRpb24gY2VydGlmaWNhdGVzLiBUaGlzIG9ubHlcbiAqICAgICAgIC8vIHdvcmtzIGluIHRoZSBOb2RlSlMgYnVuZGxlLCBhbmQgb25seSBtYXR0ZXJzIGlmIHlvdSB1c2UgXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIuXG4gKiAgICAgICAvLyBUaGUgY2VydGlmaWNhdGUgZmlsZXMgc2hvdWxkIGJlIGluIHJlZ3VsYXIgWC41MDkgUEVNIGZvcm1hdC5cbiAqICAgICAgIC8vIEZvciBpbnN0YW5jZSwgWycuL3RydXN0ZWQucGVtJ11cbiAqICAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtdLFxuICpcbiAqICAgICAgIC8vIFBhdGggdG8gYSBmaWxlIHdoZXJlIHRoZSBkcml2ZXIgc2F2ZXMgaG9zdHMgaXQgaGFzIHNlZW4gaW4gdGhlIHBhc3QsIHRoaXMgaXNcbiAqICAgICAgIC8vIHZlcnkgc2ltaWxhciB0byB0aGUgc3NsIHRvb2wncyBrbm93bl9ob3N0cyBmaWxlLiBFYWNoIHRpbWUgd2UgY29ubmVjdCB0byBhXG4gKiAgICAgICAvLyBuZXcgaG9zdCwgYSBoYXNoIG9mIHRoZWlyIGNlcnRpZmljYXRlIGlzIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBkb21haW4gbmFtZSBhbmRcbiAqICAgICAgIC8vIHBvcnQsIGFuZCB0aGlzIGlzIHRoZW4gdXNlZCB0byB2ZXJpZnkgdGhlIGhvc3QgY2VydGlmaWNhdGUgZG9lcyBub3QgY2hhbmdlLlxuICogICAgICAgLy8gVGhpcyBzZXR0aW5nIGhhcyBubyBlZmZlY3QgdW5sZXNzIFRSVVNUX09OX0ZJUlNUX1VTRSBpcyBlbmFibGVkLlxuICogICAgICAga25vd25Ib3N0czpcIn4vLm5lbzRqL2tub3duX2hvc3RzXCIsXG4gKiAgICAgfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCBmb3IgdGhlIE5lbzRqIGRhdGFiYXNlLCBmb3IgaW5zdGFuY2UgXCJib2x0Oi8vbG9jYWxob3N0XCJcbiAqIEBwYXJhbSB7TWFwPFN0cmluZyxTdHJpbmc+fSBhdXRoVG9rZW4gQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIFNlZSB7QGxpbmsgYXV0aH0gZm9yIGhlbHBlcnMuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWUgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBhYm92ZSBmb3IgZGV0YWlscy5cbiAqIEByZXR1cm5zIHtEcml2ZXJ9XG4gKi9cbmZ1bmN0aW9uIGRyaXZlcih1cmwsIGF1dGhUb2tlbikge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMl07XG5cbiAgcmV0dXJuIG5ldyBEcml2ZXIodXJsLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG59XG5cbmV4cG9ydHMuRHJpdmVyID0gRHJpdmVyO1xuZXhwb3J0cy5kcml2ZXIgPSBkcml2ZXI7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEEgY29tbW9uIHBsYWNlIGZvciBjb25zdHJ1Y3RpbmcgZXJyb3Igb2JqZWN0cywgdG8ga2VlcCB0aGVtXG4vLyB1bmlmb3JtIGFjcm9zcyB0aGUgZHJpdmVyIHN1cmZhY2UuXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeDMsIF94NCwgX3g1KSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94MywgcHJvcGVydHkgPSBfeDQsIHJlY2VpdmVyID0gX3g1OyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94MyA9IHBhcmVudDsgX3g0ID0gcHJvcGVydHk7IF94NSA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIG5ld0Vycm9yKG1lc3NhZ2UpIHtcbiAgdmFyIGNvZGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBcIk4vQVwiIDogYXJndW1lbnRzWzFdO1xuXG4gIC8vIFRPRE86IElkZWEgaXMgdGhhdCB3ZSBjYW4gY2hlY2sgdGhlIGNvZCBoZXJlIGFuZCB0aHJvdyBzdWItY2xhc3Nlc1xuICAvLyBvZiBOZW80akVycm9yIGFzIGFwcHJvcHJpYXRlXG4gIHJldHVybiBuZXcgTmVvNGpFcnJvcihtZXNzYWdlLCBjb2RlKTtcbn1cblxudmFyIE5lbzRqRXJyb3IgPSAoZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHMoTmVvNGpFcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBOZW80akVycm9yKG1lc3NhZ2UpIHtcbiAgICB2YXIgY29kZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IFwiTi9BXCIgOiBhcmd1bWVudHNbMV07XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTmVvNGpFcnJvcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihOZW80akVycm9yLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cblxuICByZXR1cm4gTmVvNGpFcnJvcjtcbn0pKEVycm9yKTtcblxuZXhwb3J0cy5uZXdFcnJvciA9IG5ld0Vycm9yO1xuZXhwb3J0cy5OZW80akVycm9yID0gTmVvNGpFcnJvcjsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBDbGFzcyBmb3IgTm9kZSBUeXBlLlxuICovXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgTm9kZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aXR5IC0gVW5pcXVlIGlkZW50aXR5XG4gICAqIEBwYXJhbSB7QXJyYXl9IGxhYmVscyAtIEFycmF5IGZvciBhbGwgbGFiZWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggbm9kZSBwcm9wZXJ0aWVzXG4gICAqL1xuXG4gIGZ1bmN0aW9uIE5vZGUoaWRlbnRpdHksIGxhYmVscywgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLmxhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENsYXNzIGZvciBSZWxhdGlvbnNoaXAgVHlwZS5cbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGUsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuaWRlbnRpdHk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHMgKz0gXCI6XCIgKyB0aGlzLmxhYmVsc1tpXTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCIpXCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZTtcbn0pKCk7XG5cbnZhciBSZWxhdGlvbnNoaXAgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnQgLSBJZGVudGl0eSBvZiBzdGFydCBOb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmQgLSBJZGVudGl0eSBvZiBlbmQgTm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVsYXRpb25zaGlwKGlkZW50aXR5LCBzdGFydCwgZW5kLCB0eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbGF0aW9uc2hpcCk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFzcyBmb3IgVW5ib3VuZFJlbGF0aW9uc2hpcCBUeXBlLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlbGF0aW9uc2hpcCwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgcyA9IFwiKFwiICsgdGhpcy5zdGFydCArIFwiKS1bOlwiICsgdGhpcy50eXBlO1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcyArPSBcIl0tPihcIiArIHRoaXMuZW5kICsgXCIpXCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVsYXRpb25zaGlwO1xufSkoKTtcblxudmFyIFVuYm91bmRSZWxhdGlvbnNoaXAgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG5cbiAgZnVuY3Rpb24gVW5ib3VuZFJlbGF0aW9uc2hpcChpZGVudGl0eSwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVbmJvdW5kUmVsYXRpb25zaGlwKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQ2xhc3MgZm9yIFBhdGhTZWdtZW50IFR5cGUuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBCaW5kIHJlbGF0aW9uc2hpcFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhcnQgLSBJbmRlbnRpdHkgb2Ygc3RhcnQgbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSW5kZW50aXR5IG9mIGVuZCBub2RlXG4gICAqIEByZXR1cm4ge1JlbGF0aW9uc2hpcH0gLSBDcmVhdGVkIHJlbGF0aW9uc2hpcFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoVW5ib3VuZFJlbGF0aW9uc2hpcCwgW3tcbiAgICBrZXk6IFwiYmluZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBuZXcgUmVsYXRpb25zaGlwKHRoaXMuaWRlbnRpdHksIHN0YXJ0LCBlbmQsIHRoaXMudHlwZSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgcyA9IFwiLVs6XCIgKyB0aGlzLnR5cGU7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiXS0+XCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVW5ib3VuZFJlbGF0aW9uc2hpcDtcbn0pKCk7XG5cbnZhciBQYXRoU2VnbWVudCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICogQHBhcmFtIHtSZWxhdGlvbnNoaXB9IHJlbCAtIFJlbGF0aW9uc2hpcCBzZWdtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAqL1xuZnVuY3Rpb24gUGF0aFNlZ21lbnQoc3RhcnQsIHJlbCwgZW5kKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoU2VnbWVudCk7XG5cbiAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbDtcbiAgdGhpcy5lbmQgPSBlbmQ7XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGggVHlwZS5cbiAqL1xuO1xuXG52YXIgUGF0aCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtOb2RlfSBzdGFydCAgLSBzdGFydCBub2RlXG4gKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gKiBAcGFyYW0ge0FycmF5fSBzZWdtZW50cyAtIEFycmF5IG9mIFNlZ21lbnRzXG4gKi9cbmZ1bmN0aW9uIFBhdGgoc3RhcnQsIGVuZCwgc2VnbWVudHMpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhdGgpO1xuXG4gIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgdGhpcy5lbmQgPSBlbmQ7XG4gIHRoaXMuc2VnbWVudHMgPSBzZWdtZW50cztcbiAgdGhpcy5sZW5ndGggPSBzZWdtZW50cy5sZW5ndGg7XG59O1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgTm9kZTogTm9kZSxcbiAgUmVsYXRpb25zaGlwOiBSZWxhdGlvbnNoaXAsXG4gIFVuYm91bmRSZWxhdGlvbnNoaXA6IFVuYm91bmRSZWxhdGlvbnNoaXAsXG4gIFBhdGg6IFBhdGgsXG4gIFBhdGhTZWdtZW50OiBQYXRoU2VnbWVudFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4vaW50ZWdlcicpO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4vZHJpdmVyJyk7XG5cbnZhciBfZ3JhcGhUeXBlcyA9IHJlcXVpcmUoJy4vZ3JhcGgtdHlwZXMnKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBkcml2ZXI6IF9kcml2ZXIuZHJpdmVyLFxuICBpbnQ6IF9pbnRlZ2VyLmludCxcbiAgaXNJbnQ6IF9pbnRlZ2VyLmlzSW50LFxuICBOZW80akVycm9yOiBfZXJyb3IuTmVvNGpFcnJvcixcbiAgYXV0aDoge1xuICAgIGJhc2ljOiBmdW5jdGlvbiBiYXNpYyh1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IHVzZXJuYW1lLCBjcmVkZW50aWFsczogcGFzc3dvcmQgfTtcbiAgICB9XG4gIH0sXG4gIHR5cGVzOiB7XG4gICAgTm9kZTogX2dyYXBoVHlwZXMuTm9kZSxcbiAgICBSZWxhdGlvbnNoaXA6IF9ncmFwaFR5cGVzLlJlbGF0aW9uc2hpcCxcbiAgICBVbmJvdW5kUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwLFxuICAgIFBhdGhTZWdtZW50OiBfZ3JhcGhUeXBlcy5QYXRoU2VnbWVudCxcbiAgICBQYXRoOiBfZ3JhcGhUeXBlcy5QYXRoXG4gIH1cbn07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gNjQtYml0IEludGVnZXIgbGlicmFyeSwgb3JpZ2luYWxseSBmcm9tIExvbmcuanMgYnkgZGNvZGVJT1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vTG9uZy5qc1xuLy8gTGljZW5zZSBBcGFjaGUgMlxuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSA2NCBiaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyLCBnaXZlbiBpdHMgbG93IGFuZCBoaWdoIDMyIGJpdCB2YWx1ZXMgYXMgKnNpZ25lZCogaW50ZWdlcnMuXG4gKiAgU2VlIHRoZSBmcm9tKiBmdW5jdGlvbnMgYmVsb3cgZm9yIG1vcmUgY29udmVuaWVudCB3YXlzIG9mIGNvbnN0cnVjdGluZyBJbnRlZ2Vycy5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAZXhwb3J0cyBJbnRlZ2VyXG4gKiBAY2xhc3MgQSBJbnRlZ2VyIGNsYXNzIGZvciByZXByZXNlbnRpbmcgYSA2NCBiaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyIHZhbHVlLlxuICogQHBhcmFtIHtudW1iZXJ9IGxvdyBUaGUgbG93IChzaWduZWQpIDMyIGJpdHMgb2YgdGhlIGxvbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoIFRoZSBoaWdoIChzaWduZWQpIDMyIGJpdHMgb2YgdGhlIGxvbmdcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5cbnZhciBJbnRlZ2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSW50ZWdlcihsb3csIGhpZ2gpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZWdlcik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5sb3cgPSBsb3cgfCAwO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB0aGlzLmhpZ2ggPSBoaWdoIHwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbmRpY2F0b3IgdXNlZCB0byByZWxpYWJseSBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgSW50ZWdlciBvciBub3QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAY29uc3RcbiAgICogQGV4cG9zZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gSW50ZWdlciBpcyB0aGUgdHdvIGdpdmVuIHNpZ25lZCwgMzItYml0IHZhbHVlcy5cbiAgLy8gV2UgdXNlIDMyLWJpdCBwaWVjZXMgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIHNpemUgb2YgaW50ZWdlcnMgb24gd2hpY2hcbiAgLy8gSmF2YXNjcmlwdCBwZXJmb3JtcyBiaXQtb3BlcmF0aW9ucy4gIEZvciBvcGVyYXRpb25zIGxpa2UgYWRkaXRpb24gYW5kXG4gIC8vIG11bHRpcGxpY2F0aW9uLCB3ZSBzcGxpdCBlYWNoIG51bWJlciBpbnRvIDE2IGJpdCBwaWVjZXMsIHdoaWNoIGNhbiBlYXNpbHkgYmVcbiAgLy8gbXVsdGlwbGllZCB3aXRoaW4gSmF2YXNjcmlwdCdzIGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIHdpdGhvdXQgb3ZlcmZsb3dcbiAgLy8gb3IgY2hhbmdlIGluIHNpZ24uXG4gIC8vXG4gIC8vIEluIHRoZSBhbGdvcml0aG1zIGJlbG93LCB3ZSBmcmVxdWVudGx5IHJlZHVjZSB0aGUgbmVnYXRpdmUgY2FzZSB0byB0aGVcbiAgLy8gcG9zaXRpdmUgY2FzZSBieSBuZWdhdGluZyB0aGUgaW5wdXQocykgYW5kIHRoZW4gcG9zdC1wcm9jZXNzaW5nIHRoZSByZXN1bHQuXG4gIC8vIE5vdGUgdGhhdCB3ZSBtdXN0IEFMV0FZUyBjaGVjayBzcGVjaWFsbHkgd2hldGhlciB0aG9zZSB2YWx1ZXMgYXJlIE1JTl9WQUxVRVxuICAvLyAoLTJeNjMpIGJlY2F1c2UgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUUgKHNpbmNlIDJeNjMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzXG4gIC8vIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBvdmVyZmxvd3MgYmFjayBpbnRvIGEgbmVnYXRpdmUpLiAgTm90IGhhbmRsaW5nIHRoaXNcbiAgLy8gY2FzZSB3b3VsZCBvZnRlbiByZXN1bHQgaW4gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvL1xuICAvLyBDb21tb24gY29uc3RhbnQgdmFsdWVzIFpFUk8sIE9ORSwgTkVHX09ORSwgZXRjLiBhcmUgZGVmaW5lZCBiZWxvdyB0aGUgZnJvbSpcbiAgLy8gbWV0aG9kcyBvbiB3aGljaCB0aGV5IGRlcGVuZC5cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYW4gZXhhY3QgamF2YXNjcmlwdCBOdW1iZXIsIGFzc3VtaW5nIGl0IGlzIGEgMzIgYml0IGludGVnZXIuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKEludGVnZXIsIFt7XG4gICAga2V5OiAndG9JbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0ludCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0b051bWJlcicsXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHRoZSBuZWFyZXN0IGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdmFsdWUgKGRvdWJsZSwgNTMgYml0IG1hbnRpc3NhKS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9OdW1iZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoICogVFdPX1BXUl8zMl9EQkwgKyAodGhpcy5sb3cgPj4+IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGEgc3RyaW5nIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCByYWRpeC5cbiAgICAgKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFJhZGl4ICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGByYWRpeGAgaXMgb3V0IG9mIHJhbmdlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAndG9TdHJpbmcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZyhyYWRpeCkge1xuICAgICAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgICAgIGlmIChyYWRpeCA8IDIgfHwgMzYgPCByYWRpeCkgdGhyb3cgUmFuZ2VFcnJvcigncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAnMCc7XG4gICAgICB2YXIgcmVtO1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNoYW5nZSB0aGUgSW50ZWdlciB2YWx1ZSBiZWZvcmUgaXQgY2FuIGJlIG5lZ2F0ZWQsIHNvIHdlIHJlbW92ZVxuICAgICAgICAgIC8vIHRoZSBib3R0b20tbW9zdCBkaWdpdCBpbiB0aGlzIGJhc2UgYW5kIHRoZW4gcmVjdXJzZSB0byBkbyB0aGUgcmVzdC5cbiAgICAgICAgICB2YXIgcmFkaXhJbnRlZ2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKHJhZGl4KTtcbiAgICAgICAgICB2YXIgZGl2ID0gdGhpcy5kaXYocmFkaXhJbnRlZ2VyKTtcbiAgICAgICAgICByZW0gPSBkaXYubXVsdGlwbHkocmFkaXhJbnRlZ2VyKS5zdWJ0cmFjdCh0aGlzKTtcbiAgICAgICAgICByZXR1cm4gZGl2LnRvU3RyaW5nKHJhZGl4KSArIHJlbS50b0ludCgpLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgICAgfSBlbHNlIHJldHVybiAnLScgKyB0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgIH1cblxuICAgICAgLy8gRG8gc2V2ZXJhbCAoNikgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAgICAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXG4gICAgICB2YXIgcmFkaXhUb1Bvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCA2KSk7XG4gICAgICByZW0gPSB0aGlzO1xuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIHJlbURpdiA9IHJlbS5kaXYocmFkaXhUb1Bvd2VyKSxcbiAgICAgICAgICAgIGludHZhbCA9IHJlbS5zdWJ0cmFjdChyZW1EaXYubXVsdGlwbHkocmFkaXhUb1Bvd2VyKSkudG9JbnQoKSA+Pj4gMCxcbiAgICAgICAgICAgIGRpZ2l0cyA9IGludHZhbC50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIHJlbSA9IHJlbURpdjtcbiAgICAgICAgaWYgKHJlbS5pc1plcm8oKSkgcmV0dXJuIGRpZ2l0cyArIHJlc3VsdDtlbHNlIHtcbiAgICAgICAgICB3aGlsZSAoZGlnaXRzLmxlbmd0aCA8IDYpIGRpZ2l0cyA9ICcwJyArIGRpZ2l0cztcbiAgICAgICAgICByZXN1bHQgPSAnJyArIGRpZ2l0cyArIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBoaWdoIGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRIaWdoQml0cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZ2hCaXRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsb3cgMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBsb3cgYml0c1xuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dldExvd0JpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMb3dCaXRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMubG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2dldE51bUJpdHNBYnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1CaXRzQWJzKCkge1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpID8gNjQgOiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKTtcbiAgICAgIHZhciB2YWwgPSB0aGlzLmhpZ2ggIT0gMCA/IHRoaXMuaGlnaCA6IHRoaXMubG93O1xuICAgICAgZm9yICh2YXIgYml0ID0gMzE7IGJpdCA+IDA7IGJpdC0tKSBpZiAoKHZhbCAmIDEgPDwgYml0KSAhPSAwKSBicmVhaztcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggIT0gMCA/IGJpdCArIDMzIDogYml0ICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgemVyby5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc1plcm8nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1plcm8oKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID09PSAwICYmIHRoaXMubG93ID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG5lZ2F0aXZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzTmVnYXRpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc05lZ2F0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA8IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgcG9zaXRpdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnaXNQb3NpdGl2ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID49IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgb2RkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2lzT2RkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPZGQoKSB7XG4gICAgICByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZXZlbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpc0V2ZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0V2ZW4oKSB7XG4gICAgICByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZXF1YWxzJyxcblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGVxdWFscyB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID09PSBvdGhlci5oaWdoICYmIHRoaXMubG93ID09PSBvdGhlci5sb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnbm90RXF1YWxzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm90RXF1YWxzKG90aGVyKSB7XG4gICAgICAhdGhpcy5lcXVhbHMoIC8qIHZhbGlkYXRlcyAqL290aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsZXNzVGhhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbChvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDw9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnZ3JlYXRlclRoYW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBncmVhdGVyVGhhbihvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWwob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHRoaXMgSW50ZWdlcidzIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAwIGlmIHRoZXkgYXJlIHRoZSBzYW1lLCAxIGlmIHRoZSB0aGlzIGlzIGdyZWF0ZXIgYW5kIC0xXG4gICAgICogIGlmIHRoZSBnaXZlbiBvbmUgaXMgZ3JlYXRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbXBhcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wYXJlKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICBpZiAodGhpcy5lcXVhbHMob3RoZXIpKSByZXR1cm4gMDtcbiAgICAgIHZhciB0aGlzTmVnID0gdGhpcy5pc05lZ2F0aXZlKCksXG4gICAgICAgICAgb3RoZXJOZWcgPSBvdGhlci5pc05lZ2F0aXZlKCk7XG4gICAgICBpZiAodGhpc05lZyAmJiAhb3RoZXJOZWcpIHJldHVybiAtMTtcbiAgICAgIGlmICghdGhpc05lZyAmJiBvdGhlck5lZykgcmV0dXJuIDE7XG4gICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzaWduIGJpdHMgYXJlIHRoZSBzYW1lXG4gICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChvdGhlcikuaXNOZWdhdGl2ZSgpID8gLTEgOiAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5lZ2F0ZXMgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBOZWdhdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICduZWdhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBuZWdhdGUoKSB7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7XG4gICAgICByZXR1cm4gdGhpcy5ub3QoKS5hZGQoSW50ZWdlci5PTkUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBhZGRlbmQgQWRkZW5kXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTdW1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdhZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWRkZW5kKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGFkZGVuZCkpIGFkZGVuZCA9IEludGVnZXIuZnJvbVZhbHVlKGFkZGVuZCk7XG5cbiAgICAgIC8vIERpdmlkZSBlYWNoIG51bWJlciBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIHN1bSB0aGUgY2h1bmtzLlxuXG4gICAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBhMzIgPSB0aGlzLmhpZ2ggJiAweEZGRkY7XG4gICAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYjQ4ID0gYWRkZW5kLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IGFkZGVuZC5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGIxNiA9IGFkZGVuZC5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGIwMCA9IGFkZGVuZC5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCArIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKyBiMTY7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTMyICsgYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCArIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBzdWJ0cmFoZW5kIFN1YnRyYWhlbmRcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IERpZmZlcmVuY2VcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJ0cmFjdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnRyYWN0KHN1YnRyYWhlbmQpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoc3VidHJhaGVuZCkpIHN1YnRyYWhlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShzdWJ0cmFoZW5kKTtcbiAgICAgIHJldHVybiB0aGlzLmFkZChzdWJ0cmFoZW5kLm5lZ2F0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZWdlci5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG11bHRpcGxpZXIgTXVsdGlwbGllclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUHJvZHVjdFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ211bHRpcGx5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbXVsdGlwbHkobXVsdGlwbGllcikge1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG11bHRpcGxpZXIpKSBtdWx0aXBsaWVyID0gSW50ZWdlci5mcm9tVmFsdWUobXVsdGlwbGllcik7XG4gICAgICBpZiAobXVsdGlwbGllci5pc1plcm8oKSkgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBtdWx0aXBsaWVyLmlzT2RkKCkgPyBJbnRlZ2VyLk1JTl9WQUxVRSA6IEludGVnZXIuWkVSTztcbiAgICAgIGlmIChtdWx0aXBsaWVyLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiB0aGlzLmlzT2RkKCkgPyBJbnRlZ2VyLk1JTl9WQUxVRSA6IEludGVnZXIuWkVSTztcblxuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllci5uZWdhdGUoKSk7ZWxzZSByZXR1cm4gdGhpcy5uZWdhdGUoKS5tdWx0aXBseShtdWx0aXBsaWVyKS5uZWdhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpLm5lZ2F0ZSgpO1xuXG4gICAgICAvLyBJZiBib3RoIGxvbmdzIGFyZSBzbWFsbCwgdXNlIGZsb2F0IG11bHRpcGxpY2F0aW9uXG4gICAgICBpZiAodGhpcy5sZXNzVGhhbihUV09fUFdSXzI0KSAmJiBtdWx0aXBsaWVyLmxlc3NUaGFuKFRXT19QV1JfMjQpKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKHRoaXMudG9OdW1iZXIoKSAqIG11bHRpcGxpZXIudG9OdW1iZXIoKSk7XG5cbiAgICAgIC8vIERpdmlkZSBlYWNoIGxvbmcgaW50byA0IGNodW5rcyBvZiAxNiBiaXRzLCBhbmQgdGhlbiBhZGQgdXAgNHg0IHByb2R1Y3RzLlxuICAgICAgLy8gV2UgY2FuIHNraXAgcHJvZHVjdHMgdGhhdCB3b3VsZCBvdmVyZmxvdy5cblxuICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGI0OCA9IG11bHRpcGxpZXIuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYjMyID0gbXVsdGlwbGllci5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGIxNiA9IG11bHRpcGxpZXIubG93ID4+PiAxNjtcbiAgICAgIHZhciBiMDAgPSBtdWx0aXBsaWVyLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGM0OCA9IDAsXG4gICAgICAgICAgYzMyID0gMCxcbiAgICAgICAgICBjMTYgPSAwLFxuICAgICAgICAgIGMwMCA9IDA7XG4gICAgICBjMDAgKz0gYTAwICogYjAwO1xuICAgICAgYzE2ICs9IGMwMCA+Pj4gMTY7XG4gICAgICBjMDAgJj0gMHhGRkZGO1xuICAgICAgYzE2ICs9IGExNiAqIGIwMDtcbiAgICAgIGMzMiArPSBjMTYgPj4+IDE2O1xuICAgICAgYzE2ICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMDAgKiBiMTY7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTMyICogYjAwO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGExNiAqIGIxNjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMDAgKiBiMzI7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjNDggKz0gYTQ4ICogYjAwICsgYTMyICogYjE2ICsgYTE2ICogYjMyICsgYTAwICogYjQ4O1xuICAgICAgYzQ4ICY9IDB4RkZGRjtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKGMxNiA8PCAxNiB8IGMwMCwgYzQ4IDw8IDE2IHwgYzMyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdkaXYnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBRdW90aWVudFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZGl2KGRpdmlzb3IpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICAgIGlmIChkaXZpc29yLmlzWmVybygpKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnZGl2aXNpb24gYnkgemVybycpO1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICB2YXIgYXBwcm94LCByZW0sIHJlcztcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuT05FKSB8fCBkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk5FR19PTkUpKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7IC8vIHJlY2FsbCB0aGF0IC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFXG4gICAgICAgIGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuT05FO2Vsc2Uge1xuICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB8b3RoZXJ8ID49IDIsIHNvIHx0aGlzL290aGVyfCA8IHxNSU5fVkFMVUV8LlxuICAgICAgICAgICAgdmFyIGhhbGZUaGlzID0gdGhpcy5zaGlmdFJpZ2h0KDEpO1xuICAgICAgICAgICAgYXBwcm94ID0gaGFsZlRoaXMuZGl2KGRpdmlzb3IpLnNoaWZ0TGVmdCgxKTtcbiAgICAgICAgICAgIGlmIChhcHByb3guZXF1YWxzKEludGVnZXIuWkVSTykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IuaXNOZWdhdGl2ZSgpID8gSW50ZWdlci5PTkUgOiBJbnRlZ2VyLk5FR19PTkU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZW0gPSB0aGlzLnN1YnRyYWN0KGRpdmlzb3IubXVsdGlwbHkoYXBwcm94KSk7XG4gICAgICAgICAgICAgIHJlcyA9IGFwcHJveC5hZGQocmVtLmRpdihkaXZpc29yKSk7XG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvci5uZWdhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihkaXZpc29yKS5uZWdhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLmRpdihkaXZpc29yLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gUmVwZWF0IHRoZSBmb2xsb3dpbmcgdW50aWwgdGhlIHJlbWFpbmRlciBpcyBsZXNzIHRoYW4gb3RoZXI6ICBmaW5kIGFcbiAgICAgIC8vIGZsb2F0aW5nLXBvaW50IHRoYXQgYXBwcm94aW1hdGVzIHJlbWFpbmRlciAvIG90aGVyICpmcm9tIGJlbG93KiwgYWRkIHRoaXNcbiAgICAgIC8vIGludG8gdGhlIHJlc3VsdCwgYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHJlbWFpbmRlci4gIEl0IGlzIGNyaXRpY2FsIHRoYXRcbiAgICAgIC8vIHRoZSBhcHByb3hpbWF0ZSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJlYWwgdmFsdWUgc28gdGhhdCB0aGVcbiAgICAgIC8vIHJlbWFpbmRlciBuZXZlciBiZWNvbWVzIG5lZ2F0aXZlLlxuICAgICAgcmVzID0gSW50ZWdlci5aRVJPO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHdoaWxlIChyZW0uZ3JlYXRlclRoYW5PckVxdWFsKGRpdmlzb3IpKSB7XG4gICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSByZXN1bHQgb2YgZGl2aXNpb24uIFRoaXMgbWF5IGJlIGEgbGl0dGxlIGdyZWF0ZXIgb3JcbiAgICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgdmFsdWUuXG4gICAgICAgIGFwcHJveCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IocmVtLnRvTnVtYmVyKCkgLyBkaXZpc29yLnRvTnVtYmVyKCkpKTtcblxuICAgICAgICAvLyBXZSB3aWxsIHR3ZWFrIHRoZSBhcHByb3hpbWF0ZSByZXN1bHQgYnkgY2hhbmdpbmcgaXQgaW4gdGhlIDQ4LXRoIGRpZ2l0IG9yXG4gICAgICAgIC8vIHRoZSBzbWFsbGVzdCBub24tZnJhY3Rpb25hbCBkaWdpdCwgd2hpY2hldmVyIGlzIGxhcmdlci5cbiAgICAgICAgdmFyIGxvZzIgPSBNYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KSAvIE1hdGguTE4yKSxcbiAgICAgICAgICAgIGRlbHRhID0gbG9nMiA8PSA0OCA/IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpLFxuXG4gICAgICAgIC8vIERlY3JlYXNlIHRoZSBhcHByb3hpbWF0aW9uIHVudGlsIGl0IGlzIHNtYWxsZXIgdGhhbiB0aGUgcmVtYWluZGVyLiAgTm90ZVxuICAgICAgICAvLyB0aGF0IGlmIGl0IGlzIHRvbyBsYXJnZSwgdGhlIHByb2R1Y3Qgb3ZlcmZsb3dzIGFuZCBpcyBuZWdhdGl2ZS5cbiAgICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5mcm9tTnVtYmVyKGFwcHJveCksXG4gICAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICAgIHdoaWxlIChhcHByb3hSZW0uaXNOZWdhdGl2ZSgpIHx8IGFwcHJveFJlbS5ncmVhdGVyVGhhbihyZW0pKSB7XG4gICAgICAgICAgYXBwcm94IC09IGRlbHRhO1xuICAgICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpO1xuICAgICAgICAgIGFwcHJveFJlbSA9IGFwcHJveFJlcy5tdWx0aXBseShkaXZpc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGtub3cgdGhlIGFuc3dlciBjYW4ndCBiZSB6ZXJvLi4uIGFuZCBhY3R1YWxseSwgemVybyB3b3VsZCBjYXVzZVxuICAgICAgICAvLyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2Ugd2Ugd291bGQgbWFrZSBubyBwcm9ncmVzcy5cbiAgICAgICAgaWYgKGFwcHJveFJlcy5pc1plcm8oKSkgYXBwcm94UmVzID0gSW50ZWdlci5PTkU7XG5cbiAgICAgICAgcmVzID0gcmVzLmFkZChhcHByb3hSZXMpO1xuICAgICAgICByZW0gPSByZW0uc3VidHJhY3QoYXBwcm94UmVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgbW9kdWxvIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFJlbWFpbmRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ21vZHVsbycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vZHVsbyhkaXZpc29yKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGRpdmlzb3IpKSBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihkaXZpc29yKS5tdWx0aXBseShkaXZpc29yKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBOT1Qgb2YgdGhpcyBJbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3QoKSB7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh+dGhpcy5sb3csIH50aGlzLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgQU5EIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnYW5kJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYW5kKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyAmIG90aGVyLmxvdywgdGhpcy5oaWdoICYgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ29yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Iob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IHwgb3RoZXIubG93LCB0aGlzLmhpZ2ggfCBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIFhPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBnaXZlbiBvbmUuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3hvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHhvcihvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgXiBvdGhlci5sb3csIHRoaXMuaGlnaCBeIG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0IGJ5IHRoZSBnaXZlbiBhbW91bnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3NoaWZ0TGVmdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0TGVmdChudW1CaXRzKSB7XG4gICAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKSByZXR1cm4gdGhpcztlbHNlIGlmIChudW1CaXRzIDwgMzIpIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IDw8IG51bUJpdHMsIHRoaXMuaGlnaCA8PCBudW1CaXRzIHwgdGhpcy5sb3cgPj4+IDMyIC0gbnVtQml0cyk7ZWxzZSByZXR1cm4gSW50ZWdlci5mcm9tQml0cygwLCB0aGlzLmxvdyA8PCBudW1CaXRzIC0gMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBhcml0aG1ldGljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzaGlmdFJpZ2h0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnRSaWdodChudW1CaXRzKSB7XG4gICAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKSByZXR1cm4gdGhpcztlbHNlIGlmIChudW1CaXRzIDwgMzIpIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93ID4+PiBudW1CaXRzIHwgdGhpcy5oaWdoIDw8IDMyIC0gbnVtQml0cywgdGhpcy5oaWdoID4+IG51bUJpdHMpO2Vsc2UgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5oaWdoID4+IG51bUJpdHMgLSAzMiwgdGhpcy5oaWdoID49IDAgPyAwIDogLTEpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlZ2VyO1xufSkoKTtcblxuSW50ZWdlci5fX2lzSW50ZWdlcl9fO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZWdlci5wcm90b3R5cGUsIFwiX19pc0ludGVnZXJfX1wiLCB7XG4gIHZhbHVlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgY29uZmlndXJhYmxlOiBmYWxzZVxufSk7XG5cbi8qKlxuICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9iaiBPYmplY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmlzSW50ZWdlciA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIChvYmogJiYgb2JqW1wiX19pc0ludGVnZXJfX1wiXSkgPT09IHRydWU7XG59O1xuXG4vKipcbiAqIEEgY2FjaGUgb2YgdGhlIEludGVnZXIgcmVwcmVzZW50YXRpb25zIG9mIHNtYWxsIGludGVnZXIgdmFsdWVzLlxuICogQHR5cGUgeyFPYmplY3R9XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBJTlRfQ0FDSEUgPSB7fTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIGdpdmVuIDMyIGJpdCBpbnRlZ2VyIHZhbHVlLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIDMyIGJpdCBpbnRlZ2VyIGluIHF1ZXN0aW9uXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tSW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBvYmosIGNhY2hlZE9iajtcbiAgdmFsdWUgPSB2YWx1ZSB8IDA7XG4gIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSB7XG4gICAgY2FjaGVkT2JqID0gSU5UX0NBQ0hFW3ZhbHVlXTtcbiAgICBpZiAoY2FjaGVkT2JqKSByZXR1cm4gY2FjaGVkT2JqO1xuICB9XG4gIG9iaiA9IG5ldyBJbnRlZ2VyKHZhbHVlLCB2YWx1ZSA8IDAgPyAtMSA6IDAsIGZhbHNlKTtcbiAgaWYgKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPCAxMjgpIElOVF9DQUNIRVt2YWx1ZV0gPSBvYmo7XG4gIHJldHVybiBvYmo7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gdmFsdWUsIHByb3ZpZGVkIHRoYXQgaXQgaXMgYSBmaW5pdGUgbnVtYmVyLiBPdGhlcndpc2UsIHplcm8gaXMgcmV0dXJuZWQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgbnVtYmVyIGluIHF1ZXN0aW9uXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tTnVtYmVyID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgaWYgKHZhbHVlIDw9IC1UV09fUFdSXzYzX0RCTCkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICBpZiAodmFsdWUgKyAxID49IFRXT19QV1JfNjNfREJMKSByZXR1cm4gSW50ZWdlci5NQVhfVkFMVUU7XG4gIGlmICh2YWx1ZSA8IDApIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIoLXZhbHVlKS5uZWdhdGUoKTtcbiAgcmV0dXJuIG5ldyBJbnRlZ2VyKHZhbHVlICUgVFdPX1BXUl8zMl9EQkwgfCAwLCB2YWx1ZSAvIFRXT19QV1JfMzJfREJMIHwgMCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgNjQgYml0IGludGVnZXIgdGhhdCBjb21lcyBieSBjb25jYXRlbmF0aW5nIHRoZSBnaXZlbiBsb3cgYW5kIGhpZ2ggYml0cy4gRWFjaCBpc1xuICogIGFzc3VtZWQgdG8gdXNlIDMyIGJpdHMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3dCaXRzIFRoZSBsb3cgMzIgYml0c1xuICogQHBhcmFtIHtudW1iZXJ9IGhpZ2hCaXRzIFRoZSBoaWdoIDMyIGJpdHNcbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21CaXRzID0gZnVuY3Rpb24gKGxvd0JpdHMsIGhpZ2hCaXRzKSB7XG4gIHJldHVybiBuZXcgSW50ZWdlcihsb3dCaXRzLCBoaWdoQml0cyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHdyaXR0ZW4gdXNpbmcgdGhlIHNwZWNpZmllZCByYWRpeC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgSW50ZWdlclxuICogQHBhcmFtIHtudW1iZXI9fSByYWRpeCBUaGUgcmFkaXggaW4gd2hpY2ggdGhlIHRleHQgaXMgd3JpdHRlbiAoMi0zNiksIGRlZmF1bHRzIHRvIDEwXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tU3RyaW5nID0gZnVuY3Rpb24gKHN0ciwgcmFkaXgpIHtcbiAgaWYgKHN0ci5sZW5ndGggPT09IDApIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmcnKTtcbiAgaWYgKHN0ciA9PT0gXCJOYU5cIiB8fCBzdHIgPT09IFwiSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiK0luZmluaXR5XCIgfHwgc3RyID09PSBcIi1JbmZpbml0eVwiKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICByYWRpeCA9IHJhZGl4IHx8IDEwO1xuICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XG5cbiAgdmFyIHA7XG4gIGlmICgocCA9IHN0ci5pbmRleE9mKCctJykpID4gMCkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ251bWJlciBmb3JtYXQgZXJyb3I6IGludGVyaW9yIFwiLVwiIGNoYXJhY3RlcjogJyArIHN0cik7ZWxzZSBpZiAocCA9PT0gMCkgcmV0dXJuIEludGVnZXIuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLCByYWRpeCkubmVnYXRlKCk7XG5cbiAgLy8gRG8gc2V2ZXJhbCAoOCkgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAvLyBtaW5pbWl6ZSB0aGUgY2FsbHMgdG8gdGhlIHZlcnkgZXhwZW5zaXZlIGVtdWxhdGVkIGRpdi5cbiAgdmFyIHJhZGl4VG9Qb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgOCkpO1xuXG4gIHZhciByZXN1bHQgPSBJbnRlZ2VyLlpFUk87XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSArPSA4KSB7XG4gICAgdmFyIHNpemUgPSBNYXRoLm1pbig4LCBzdHIubGVuZ3RoIC0gaSk7XG4gICAgdmFyIHZhbHVlID0gcGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLCBpICsgc2l6ZSksIHJhZGl4KTtcbiAgICBpZiAoc2l6ZSA8IDgpIHtcbiAgICAgIHZhciBwb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgc2l6ZSkpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KHBvd2VyKS5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShyYWRpeFRvUG93ZXIpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmFkZChJbnRlZ2VyLmZyb21OdW1iZXIodmFsdWUpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIEludGVnZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tVmFsdWUgPSBmdW5jdGlvbiAodmFsKSB7XG4gIGlmICh2YWwgLyogaXMgY29tcGF0aWJsZSAqLyBpbnN0YW5jZW9mIEludGVnZXIpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih2YWwpO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcodmFsKTtcbiAgLy8gVGhyb3dzIGZvciBub24tb2JqZWN0cywgY29udmVydHMgbm9uLWluc3RhbmNlb2YgSW50ZWdlcjpcbiAgcmV0dXJuIG5ldyBJbnRlZ2VyKHZhbC5sb3csIHZhbC5oaWdoKTtcbn07XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8xNl9EQkwgPSAxIDw8IDE2O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjRfREJMID0gMSA8PCAyNDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzMyX0RCTCA9IFRXT19QV1JfMTZfREJMICogVFdPX1BXUl8xNl9EQkw7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl82NF9EQkwgPSBUV09fUFdSXzMyX0RCTCAqIFRXT19QV1JfMzJfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjNfREJMID0gVFdPX1BXUl82NF9EQkwgLyAyO1xuXG4vKipcbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8yNCA9IEludGVnZXIuZnJvbUludChUV09fUFdSXzI0X0RCTCk7XG5cbi8qKlxuICogU2lnbmVkIHplcm8uXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuWkVSTyA9IEludGVnZXIuZnJvbUludCgwKTtcblxuLyoqXG4gKiBTaWduZWQgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk9ORSA9IEludGVnZXIuZnJvbUludCgxKTtcblxuLyoqXG4gKiBTaWduZWQgbmVnYXRpdmUgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk5FR19PTkUgPSBJbnRlZ2VyLmZyb21JbnQoLTEpO1xuXG4vKipcbiAqIE1heGltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1BWF9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHhGRkZGRkZGRiB8IDAsIDB4N0ZGRkZGRkYgfCAwLCBmYWxzZSk7XG5cbi8qKlxuICogTWluaW11bSBzaWduZWQgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUlOX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygwLCAweDgwMDAwMDAwIHwgMCwgZmFsc2UpO1xuXG4vKipcbiAqIENhc3QgdmFsdWUgdG8gSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHVzZS5cbiAqIEByZXR1cm4ge0ludGVnZXJ9IC0gQW4gb2JqZWN0IG9mIHR5cGUgSW50ZWdlci5cbiAqL1xudmFyIGludCA9IEludGVnZXIuZnJvbVZhbHVlO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFyaWFibGUgaXMgb2YgSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmFpYmxlIHRvIGNoZWNrLlxuICogQHJldHVybiB7Qm9vbGVhbn0gLSBJcyBpdCBvZiB0aGUgSW50ZWdlciB0eXBlP1xuICovXG52YXIgaXNJbnQgPSBJbnRlZ2VyLmlzSW50ZWdlcjtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBJbnRlZ2VyOiBJbnRlZ2VyLFxuICBpbnQ6IGludCxcbiAgaXNJbnQ6IGlzSW50XG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY29tbW9uIEFQSSBmb3IgZGVhbGluZyB3aXRoIGJpbmFyeSBkYXRhIHRoYXRcbiAgKiB3b3JrcyBmb3IgYm90aCBicm93c2VycyAodmlhIEFycmF5QnVmZmVyL0RhdGFWaWV3KSBhbmQgZm9yIE5vZGVKU1xuICAqKHZpYSBCdWZmZXIgQVBJKS5cbiAgKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKFwidmFsdWVcIiBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgX25vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuLyoqXG4gICogQ29tbW9uIGJhc2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBtb3N0IGJ1ZmZlciBtZXRob2RzLlxuICAqIEJ1ZmZlcnMgYXJlIHN0YXRlZnVsIC0gdGhleSB0cmFjayBhIGN1cnJlbnQgXCJwb3NpdGlvblwiLCB0aGlzIGhlbHBzIGdyZWF0bHlcbiAgKiB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbSB0aGVtIGluY3JlbWVudGFsbHkuIFlvdSBjYW4gYWxzbyBpZ25vcmUgdGhlXG4gICogc3RhdGVmdWwgcmVhZC93cml0ZSBtZXRob2RzLlxuICAqIHJlYWRYWFggYW5kIHdyaXRlWFhYLW1ldGhvZHMgbW92ZSB0aGUgaW5uZXIgcG9zaXRpb24gb2YgdGhlIGJ1ZmZlci5cbiAgKiBwdXRYWFggYW5kIGdldFhYWC1tZXRob2RzIGRvIG5vdC5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIEJhc2VCdWZmZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugd2l0aCB0aGUgaW5qZWN0ZWQgc2l6ZS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICAgKi9cblxuICBmdW5jdGlvbiBCYXNlQnVmZmVyKHNpemUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQmFzZUJ1ZmZlcik7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgICB0aGlzLmxlbmd0aCA9IHNpemU7XG4gICAgLy8gQ2FsbGluZyB0aGVzZSBvdXQgLSB0aGlzIGlzIHRoZSByZXF1aXJlZFxuICAgIC8vIG1ldGhvZHMgYSBzdWJjbGFzcyBuZWVkcyB0byBpbXBsZW1lbnRcbiAgICB2YXIgZ2V0VUludDggPSBudWxsO1xuICAgIHZhciBnZXRJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIGdldFNsaWNlID0gbnVsbDtcbiAgICB2YXIgcHV0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIHB1dFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgcHV0SW50OCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQmFzaWMgYnVmZmVyIGltcGxlbWVudGF0aW9uIHRoYXQgc2hvdWxkIHdvcmsgaW4gbW9zdCBhbnkgbW9kZXJuIEpTIGVudi5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQmFzZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50MTYocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDE2KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDMyKHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50MzIocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDY0KHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgNTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCA0OCB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDQwIHwgdGhpcy5nZXRVSW50OChwICsgMykgPDwgMzIgfCB0aGlzLmdldFVJbnQ4KHAgKyA0KSA8PCAyNCB8IHRoaXMuZ2V0VUludDgocCArIDUpIDw8IDE2IHwgdGhpcy5nZXRVSW50OChwICsgNikgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHNsaWNlIG9mIHRoaXMgYnVmZmVyLiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBjb3B5IGFueSBkYXRhLFxuICAgICAqIGJ1dCBzaW1wbHkgcHJvdmlkZXMgYSBzbGljZSB2aWV3IG9mIHRoaXMgYnVmZmVyXG4gICAgICogQHBhcmFtIHN0YXJ0XG4gICAgICogQHBhcmFtIGxlbmd0aFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgU2xpY2VCdWZmZXIoc3RhcnQsIGxlbmd0aCwgdGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgocCwgdmFsID4+IDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0VUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQxNihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0VUludDgocCwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiAyNCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OChwLCB2YWwgPj4gMjQgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCA+PiAxNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMiwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDY0KHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiA0OCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gNDIgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiAzNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsID4+IDMwICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA0LCB2YWwgPj4gMjQgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDUsIHZhbCA+PiAxNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNiwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDcsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwb3NpdGlvblxuICAgICAqIEBwYXJhbSBvdGhlclxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInB1dEJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEJ5dGVzKHBvc2l0aW9uLCBvdGhlcikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IG90aGVyLnJlbWFpbmluZygpOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgdGhpcy5wdXRVSW50OChwb3NpdGlvbiArIGksIG90aGVyLnJlYWRVSW50OCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQ4KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OCh0aGlzLl91cGRhdGVQb3MoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50MTYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50MTYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQxNih0aGlzLl91cGRhdGVQb3MoMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MzIodGhpcy5fdXBkYXRlUG9zKDQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlYWRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRGbG9hdDY0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RmxvYXQ2NCh0aGlzLl91cGRhdGVQb3MoOCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlVUludDgodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50OCh2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVJbnQxNih2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50MTYodGhpcy5fdXBkYXRlUG9zKDIpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVVSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIndyaXRlSW50NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVJbnQ2NCh2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50NjQodGhpcy5fdXBkYXRlUG9zKDgpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVGbG9hdDY0KHZhbCkge1xuICAgICAgdGhpcy5wdXRGbG9hdDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUJ5dGVzKHZhbCkge1xuICAgICAgdGhpcy5wdXRCeXRlcyh0aGlzLl91cGRhdGVQb3ModmFsLnJlbWFpbmluZygpKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZWFkU2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFNsaWNlKGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2xpY2UodGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl91cGRhdGVQb3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwZGF0ZVBvcyhsZW5ndGgpIHtcbiAgICAgIHZhciBwID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHJlbWFuaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIHRoaXMucG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFzIHJlbWFuaW5nXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzUmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1JlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZygpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBwb3NpdGlvbiBzdGF0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIgYW5kIGl0J3Mgc3RhdGUuXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiggcG9zaXRpb249XCIgKyB0aGlzLnBvc2l0aW9uICsgXCIgKVxcbiAgXCIgKyB0aGlzLnRvSGV4KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIuXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIC8vIFRPRE8gc29tZXRoaW5nIGxpa2UgU3RyaW5nQnVpbGRlcj9cbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBoZXhCeXRlID0gdGhpcy5nZXRVSW50OChpKS50b1N0cmluZygxNik7XG4gICAgICAgIGlmIChoZXhCeXRlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgaGV4Qnl0ZSA9IFwiMFwiICsgaGV4Qnl0ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gaGV4Qnl0ZSArIFwiIFwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQmFzZUJ1ZmZlcjtcbn0pKCk7XG5cbnZhciBIZWFwQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcikge1xuICBfaW5oZXJpdHMoSGVhcEJ1ZmZlciwgX0Jhc2VCdWZmZXIpO1xuXG4gIGZ1bmN0aW9uIEhlYXBCdWZmZXIoYXJnKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhlYXBCdWZmZXIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyID8gYXJnIDogbmV3IEFycmF5QnVmZmVyKGFyZyk7XG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoSGVhcEJ1ZmZlci5wcm90b3R5cGUpLCBcImNvbnN0cnVjdG9yXCIsIHRoaXMpLmNhbGwodGhpcywgYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLl92aWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVwcmVzZW50cyBhIHZpZXcgYXMgc2xpY2Ugb2YgYW5vdGhlciBidWZmZXIuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoSGVhcEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fdmlldy5zZXRVaW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl92aWV3LmdldFVpbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0SW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRGbG9hdDY0KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5zbGljZSkge1xuICAgICAgICByZXR1cm4gbmV3IEhlYXBCdWZmZXIodGhpcy5fYnVmZmVyLnNsaWNlKHN0YXJ0LCBzdGFydCArIGxlbmd0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU29tZSBwbGF0Zm9ybXMgKGVnLiBwaGFudG9tanMpIGRvbid0IHN1cHBvcnQgc2xpY2UsIHNvIGZhbGwgYmFjayB0byBhIGNvcHlcbiAgICAgICAgLy8gV2UgZG8gdGhpcyByYXRoZXIgdGhhbiByZXR1cm4gYSBTbGljZUJ1ZmZlciwgYmVjYXVzZSBzbGljZUJ1ZmZlciBjYW5ub3RcbiAgICAgICAgLy8gYmUgcGFzc2VkIHRvIG5hdGl2ZSBuZXR3b3JrIHdyaXRlIG9wcyBldGMgLSB3ZSBuZWVkIEFycmF5QnVmZmVyIGZvciB0aGF0XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IEhlYXBCdWZmZXIobGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvcHkucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChpICsgc3RhcnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29weTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogU3BlY2lmaWMgdG8gSGVhcEJ1ZmZlciwgdGhpcyBnZXRzIGEgRGF0YVZpZXcgZnJvbSB0aGVcbiAgICAgKiBjdXJyZW50IHBvc2l0aW9uIGFuZCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4gXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFZpZXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFZpZXcobGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlciwgdGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEhlYXBCdWZmZXI7XG59KShCYXNlQnVmZmVyKTtcblxudmFyIFNsaWNlQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjIpIHtcbiAgX2luaGVyaXRzKFNsaWNlQnVmZmVyLCBfQmFzZUJ1ZmZlcjIpO1xuXG4gIGZ1bmN0aW9uIFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIGlubmVyKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNsaWNlQnVmZmVyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFNsaWNlQnVmZmVyLnByb3RvdHlwZSksIFwiY29uc3RydWN0b3JcIiwgdGhpcykuY2FsbCh0aGlzLCBsZW5ndGgpO1xuICAgIHRoaXMuX3N0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5faW5uZXIgPSBpbm5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWZmZXIgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSBidWZmZXJzLCBleHBvc2luZyB0aGVtIGFzIG9uZSBzaW5nbGUgYnVmZmVyLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFNsaWNlQnVmZmVyLCBbe1xuICAgIGtleTogXCJwdXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9pbm5lci5wdXRVSW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldFVJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0SW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0RmxvYXQ2NCh0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRGbG9hdDY0KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTbGljZUJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgQ29tYmluZWRCdWZmZXIgPSAoZnVuY3Rpb24gKF9CYXNlQnVmZmVyMykge1xuICBfaW5oZXJpdHMoQ29tYmluZWRCdWZmZXIsIF9CYXNlQnVmZmVyMyk7XG5cbiAgZnVuY3Rpb24gQ29tYmluZWRCdWZmZXIoYnVmZmVycykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21iaW5lZEJ1ZmZlcik7XG5cbiAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxlbmd0aCArPSBidWZmZXJzW2ldLmxlbmd0aDtcbiAgICB9XG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ29tYmluZWRCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGxlbmd0aCk7XG4gICAgdGhpcy5fYnVmZmVycyA9IGJ1ZmZlcnM7XG4gIH1cblxuICAvKipcbiAgICogQnVmZmVyIHVzZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50XG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQ29tYmluZWRCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICAvLyBTdXJlbHkgdGhlcmUncyBhIGZhc3RlciB3YXkgdG8gZG8gdGhpcy4uIHNvbWUgc29ydCBvZiBsb29rdXAgdGFibGUgdGhpbmc/XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2J1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLCBza2lwIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHBvc2l0aW9uIC09IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRVSW50OChwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICAvLyBTdXJlbHkgdGhlcmUncyBhIGZhc3RlciB3YXkgdG8gZG8gdGhpcy4uIHNvbWUgc29ydCBvZiBsb29rdXAgdGFibGUgdGhpbmc/XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2J1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLCBza2lwIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHBvc2l0aW9uIC09IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZsb2F0NjQocG9zaXRpb24pIHtcbiAgICAgIC8vIEF0IHNvbWUgcG9pbnQsIGEgbW9yZSBlZmZpY2llbnQgaW1wbC4gRm9yIG5vdywgd2UgY29weSB0aGUgOCBieXRlc1xuICAgICAgLy8gd2Ugd2FudCB0byByZWFkIGFuZCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGltcGwgb2YgSUVFRSA3NTQuXG4gICAgICB2YXIgYiA9IGFsbG9jKDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgYi5wdXRVSW50OChpLCB0aGlzLmdldFVJbnQ4KHBvc2l0aW9uICsgaSkpO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBiLmdldEZsb2F0NjQoMCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbWJpbmVkQnVmZmVyO1xufSkoQmFzZUJ1ZmZlcik7XG5cbnZhciBOb2RlQnVmZmVyID0gKGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjQpIHtcbiAgX2luaGVyaXRzKE5vZGVCdWZmZXIsIF9CYXNlQnVmZmVyNCk7XG5cbiAgZnVuY3Rpb24gTm9kZUJ1ZmZlcihhcmcpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUJ1ZmZlcik7XG5cbiAgICB2YXIgYnVmZmVyID0gYXJnIGluc3RhbmNlb2YgX25vZGUuQnVmZmVyID8gYXJnIDogbmV3IF9ub2RlLkJ1ZmZlcihhcmcpO1xuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKE5vZGVCdWZmZXIucHJvdG90eXBlKSwgXCJjb25zdHJ1Y3RvclwiLCB0aGlzKS5jYWxsKHRoaXMsIGJ1ZmZlci5sZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8vIFVzZSBIZWFwQnVmZmVyIGJ5IGRlZmF1bHQsIHVubGVzcyBCdWZmZXIgQVBJIGlzIGF2YWlsYWJsZSwgc2VlIGJlbG93XG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGVCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRVSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkRG91YmxlQkUocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVEb3VibGVCRSh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0Qnl0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIHZhbCkge1xuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5vZGVCdWZmZXIpIHtcbiAgICAgICAgdmFyIGJ5dGVzVG9Db3B5ID0gTWF0aC5taW4odmFsLmxlbmd0aCAtIHZhbC5wb3NpdGlvbiwgdGhpcy5sZW5ndGggLSBwb3NpdGlvbik7XG4gICAgICAgIHZhbC5fYnVmZmVyLmNvcHkodGhpcy5fYnVmZmVyLCBwb3NpdGlvbiwgdmFsLnBvc2l0aW9uLCB2YWwucG9zaXRpb24gKyBieXRlc1RvQ29weSk7XG4gICAgICAgIHZhbC5wb3NpdGlvbiArPSBieXRlc1RvQ29weTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiQ29weWluZyBub3QgeWV0IGltcGxlbWVudGVkLlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBOb2RlQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZUJ1ZmZlcjtcbn0pKEJhc2VCdWZmZXIpO1xuXG52YXIgX0RlZmF1bHRCdWZmZXIgPSBIZWFwQnVmZmVyO1xudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZSdyZSBub3QgcnVubmluZyBvbiBOb2RlSlMgb3IgZXF1aXZhbGVudFxuICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gIF9EZWZhdWx0QnVmZmVyID0gTm9kZUJ1ZmZlcjtcbn0gY2F0Y2ggKGUpIHt9XG5cbi8qKlxuICogQWxsb2NhdGUgYSBuZXcgYnVmZmVyIHVzaW5nIHdoYXRldmVyIG1lY2hhbmlzbSBpcyBtb3N0IHNlbnNpYmxlIGZvciB0aGVcbiAqIGN1cnJlbnQgcGxhdGZvcm1cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtJbnRlZ2VyfSBzaXplXG4gKiBAcmV0dXJuIG5ldyBidWZmZXJcbiAqL1xuZnVuY3Rpb24gYWxsb2Moc2l6ZSkge1xuICByZXR1cm4gbmV3IF9EZWZhdWx0QnVmZmVyKHNpemUpO1xufVxuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHtcbiAgQmFzZUJ1ZmZlcjogQmFzZUJ1ZmZlcixcbiAgSGVhcEJ1ZmZlcjogSGVhcEJ1ZmZlcixcbiAgU2xpY2VCdWZmZXI6IFNsaWNlQnVmZmVyLFxuICBDb21iaW5lZEJ1ZmZlcjogQ29tYmluZWRCdWZmZXIsXG4gIE5vZGVCdWZmZXI6IE5vZGVCdWZmZXIsXG4gIGFsbG9jOiBhbGxvY1xufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIG9ic2VydmVyID0ge1xuICBpbnN0YW5jZTogbnVsbCxcbiAgdXBkYXRlSW5zdGFuY2U6IGZ1bmN0aW9uIHVwZGF0ZUluc3RhbmNlKGluc3RhbmNlKSB7XG4gICAgb2JzZXJ2ZXIuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgfVxufTtcblxudmFyIER1bW15Q2hhbm5lbCA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIER1bW15Q2hhbm5lbChvcHRzKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIER1bW15Q2hhbm5lbCk7XG5cbiAgICB0aGlzLndyaXR0ZW4gPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEdW1teUNoYW5uZWwsIFt7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1Zikge1xuICAgICAgdGhpcy53cml0dGVuLnB1c2goYnVmKTtcbiAgICAgIG9ic2VydmVyLnVwZGF0ZUluc3RhbmNlKHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLndyaXR0ZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0ICs9IHRoaXMud3JpdHRlbltpXS50b0hleCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9CdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9CdWZmZXIoKSB7XG4gICAgICByZXR1cm4gbmV3IF9idWYuQ29tYmluZWRCdWZmZXIodGhpcy53cml0dGVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRHVtbXlDaGFubmVsO1xufSkoKTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIGNoYW5uZWw6IER1bW15Q2hhbm5lbCxcbiAgb2JzZXJ2ZXI6IG9ic2VydmVyXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxudmFyIF9uZXQgPSByZXF1aXJlKCduZXQnKTtcblxudmFyIF9uZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbmV0KTtcblxudmFyIF90bHMgPSByZXF1aXJlKCd0bHMnKTtcblxudmFyIF90bHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdGxzKTtcblxudmFyIF9mcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbnZhciBfZnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnMpO1xuXG52YXIgX3BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbnZhciBfcGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXRoKTtcblxudmFyIF9vcyA9IHJlcXVpcmUoJ29zJyk7XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIF9DT05ORUNUSU9OX0lER0VOID0gMDtcblxuZnVuY3Rpb24gdXNlckhvbWUoKSB7XG4gIC8vIEZvciBzb21lIHJlYXNvbiwgQnJvd3NlcmlmeSBjaG9rZXMgb24gc2hpbW1pbmcgYHByb2Nlc3NgLiBUaGlzIGNvZGVcbiAgLy8gd2lsbCBuZXZlciBnZXQgZXhlY3V0ZWQgb24gdGhlIGJyb3dzZXIgYW55d2F5LCB0byBqdXN0IGhhY2sgYXJvdW5kIGl0XG4gIHZhciBnZXRPdXRPZkhlcmVCcm93c2VyaWZ5WW91cmVEcnVuayA9IHJlcXVpcmU7XG4gIHZhciBwcm9jZXNzID0gZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsoJ3Byb2Nlc3MnKTtcblxuICByZXR1cm4gcHJvY2Vzcy5lbnZbcHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ1VTRVJQUk9GSUxFJyA6ICdIT01FJ107XG59XG5cbmZ1bmN0aW9uIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGNiKSB7XG4gIGlmICghX2ZzMlsnZGVmYXVsdCddLmV4aXN0c1N5bmMoa25vd25Ib3N0c1BhdGgpKSB7XG4gICAgY2IobnVsbCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBmb3VuZCA9IGZhbHNlO1xuICByZXF1aXJlKCdyZWFkbGluZScpLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IF9mczJbJ2RlZmF1bHQnXS5jcmVhdGVSZWFkU3RyZWFtKGtub3duSG9zdHNQYXRoKVxuICB9KS5vbignbGluZScsIGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChzZXJ2ZXJJZCkpIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGNiKGxpbmUuc3BsaXQoXCIgXCIpWzFdKTtcbiAgICB9XG4gIH0pLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdG9yZUZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgZmluZ2VycHJpbnQpIHtcbiAgX2ZzMlsnZGVmYXVsdCddLmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIF9vcy5FT0wsIFwidXRmOFwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgVHJ1c3RTdHJhdGVneSA9IHtcbiAgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUzogZnVuY3Rpb24gVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIGlmICghb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzIHx8IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5sZW5ndGggPT0gMCkge1xuICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTIGFzIHRoZSBtZXRob2QgXCIgKyBcInRvIHZlcmlmeSB0cnVzdCBmb3IgZW5jcnlwdGVkICBjb25uZWN0aW9ucywgYnV0IGhhdmUgbm90IGNvbmZpZ3VyZWQgYW55IFwiICsgXCJ0cnVzdGVkQ2VydGlmaWNhdGVzLiBZb3UgIG11c3Qgc3BlY2lmeSB0aGUgcGF0aCB0byBhdCBsZWFzdCBvbmUgdHJ1c3RlZCBcIiArIFwiWC41MDkgY2VydGlmaWNhdGUgZm9yIHRoaXMgdG8gd29yay4gVHdvIG90aGVyIGFsdGVybmF0aXZlcyBpcyB0byB1c2UgXCIgKyBcIlRSVVNUX09OX0ZJUlNUX1VTRSBvciB0byBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBlbmNyeXB0ZWQ9ZmFsc2UgXCIgKyBcImluIHlvdXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24uXCIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGxzT3B0cyA9IHtcbiAgICAgIGNhOiBvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMubWFwKF9mczJbJ2RlZmF1bHQnXS5yZWFkRmlsZVN5bmMpLFxuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSBjaGVjayBmb3IgdGhpcyBpbiB0aGUgY29ubmVjdCBjYWxsYmFjaywgdG8gZ2l2ZVxuICAgICAgLy8gYSBtb3JlIGhlbHBmdWwgZXJyb3IgdG8gdGhlIHVzZXJcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCBhZGRcIiArIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICsgXCIgdXNpbmcgYG5lbzRqLnYxLmRyaXZlciguLiwgeyB0cnVzdGVkQ2VydGlmaWNhdGVzOlsncGF0aC90by9jZXJ0aWZpY2F0ZS5jcnQnXX0pLiBUaGlzIFwiICsgXCIgaXMgYSBzZWN1cml0eSBtZWFzdXJlIHRvIHByb3RlY3QgYWdhaW5zdCBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICsgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPWZhbHNlYCBpbiB0aGUgZHJpdmVyXCIgKyBcIiBvcHRpb25zLlwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuICBUUlVTVF9PTl9GSVJTVF9VU0U6IGZ1bmN0aW9uIFRSVVNUX09OX0ZJUlNUX1VTRShvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIGFnYWluc3Qga25vd25faG9zdHNcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlcnZlckNlcnQgPSBzb2NrZXQuZ2V0UGVlckNlcnRpZmljYXRlKCAvKnJhdz0qL3RydWUpO1xuXG4gICAgICBpZiAoIXNlcnZlckNlcnQucmF3KSB7XG4gICAgICAgIC8vIElmIGByYXdgIGlzIG5vdCBhdmFpbGFibGUsIHdlJ3JlIG9uIGFuIG9sZCB2ZXJzaW9uIG9mIE5vZGVKUywgYW5kXG4gICAgICAgIC8vIHRoZSByYXcgY2VydCBjYW5ub3QgYmUgYWNjZXNzZWQgKG9yLCBhdCBsZWFzdCBJIGNvdWxkbid0IGZpbmQgYSB3YXkgdG8pXG4gICAgICAgIC8vIHRoZXJlZm9yZSwgd2UgY2FuJ3QgZ2VuZXJhdGUgYSBTSEE1MTIgZmluZ2VycHJpbnQsIG1lYW5pbmcgd2UgY2FuJ3RcbiAgICAgICAgLy8gZG8gVE9GVSwgYW5kIHRoZSBzYWZlIGFwcHJvYWNoIGlzIHRvIGZhaWwuXG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIllvdSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mIE5vZGVKUyB0aGF0IGRvZXMgbm90IFwiICsgXCJzdXBwb3J0IHRydXN0LW9uLWZpcnN0IHVzZSBlbmNyeXB0aW9uLiBZb3UgY2FuIGVpdGhlciB1cGdyYWRlIE5vZGVKUyB0byBcIiArIFwiYSBuZXdlciB2ZXJzaW9uLCB1c2UgYHRydXN0OlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNgIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWcgaW5zdGVhZCwgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIHVzaW5nIGBlbmNyeXB0ZWQ6ZmFsc2VgLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlcnZlckZpbmdlcnByaW50ID0gcmVxdWlyZSgnY3J5cHRvJykuY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKHNlcnZlckNlcnQucmF3KS5kaWdlc3QoXCJoZXhcIik7XG4gICAgICB2YXIga25vd25Ib3N0c1BhdGggPSBvcHRzLmtub3duSG9zdHMgfHwgX3BhdGgyWydkZWZhdWx0J10uam9pbih1c2VySG9tZSgpLCBcIi5uZW80alwiLCBcImtub3duX2hvc3RzXCIpO1xuICAgICAgdmFyIHNlcnZlcklkID0gb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG5cbiAgICAgIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZ1bmN0aW9uIChrbm93bkZpbmdlcnByaW50KSB7XG4gICAgICAgIGlmIChrbm93bkZpbmdlcnByaW50ID09PSBzZXJ2ZXJGaW5nZXJwcmludCkge1xuICAgICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGtub3duRmluZ2VycHJpbnQgPT0gbnVsbCkge1xuICAgICAgICAgIHN0b3JlRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJGaW5nZXJwcmludCk7XG4gICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRGF0YWJhc2UgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSBoYXMgY2hhbmdlZCwgYW5kIG5vIGxvbmdlciBcIiArIFwibWF0Y2hlcyB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGZvciBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAuIEFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbiwgdGhpcyBkcml2ZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cnVzdCB0aGUgbmV3IFwiICsgXCJjZXJ0aWZpY2F0ZSwgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBhbGxvdyBhbiBhdHRhY2tlciB0byBwcmV0ZW5kIHRvIGJlIHRoZSBOZW80aiBcIiArIFwiaW5zdGFuY2Ugd2Ugd2FudCB0byBjb25uZWN0IHRvLiBUaGUgY2VydGlmaWNhdGUgcHJvdmlkZWQgYnkgdGhlIHNlcnZlciBsb29rcyBsaWtlOiBcIiArIHNlcnZlckNlcnQgKyBcIi4gSWYgeW91IHRydXN0IHRoYXQgdGhpcyBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCwgc2ltcGx5IHJlbW92ZSB0aGUgbGluZSBcIiArIFwic3RhcnRpbmcgd2l0aCBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAsIGFuZCB0aGUgZHJpdmVyIHdpbGwgXCIgKyBcInVwZGF0ZSB0aGUgZmlsZSB3aXRoIHRoZSBuZXcgY2VydGlmaWNhdGUuIFlvdSBjYW4gY29uZmlndXJlIHdoaWNoIGZpbGUgdGhlIGRyaXZlciBcIiArIFwic2hvdWxkIHVzZSB0byBzdG9yZSB0aGlzIGluZm9ybWF0aW9uIGJ5IHNldHRpbmcgYGtub3duSG9zdHNgIHRvIGFub3RoZXIgcGF0aCBpbiBcIiArIFwieW91ciBkcml2ZXIgY29uZmlndXJhdGlvbiAtIGFuZCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiB0aGVyZSBhcyB3ZWxsIHVzaW5nIFwiICsgXCJgZW5jcnlwdGVkOmZhbHNlYC5cIikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9XG59O1xuXG5mdW5jdGlvbiBjb25uZWN0KG9wdHMsIG9uU3VjY2Vzcykge1xuICB2YXIgb25GYWlsdXJlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9IDogYXJndW1lbnRzWzJdO1xuXG4gIGlmIChvcHRzLmVuY3J5cHRlZCA9PT0gZmFsc2UpIHtcbiAgICB2YXIgY29ubiA9IF9uZXQyWydkZWZhdWx0J10uY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgb25TdWNjZXNzKTtcbiAgICBjb25uLm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIGNvbm47XG4gIH0gZWxzZSBpZiAoVHJ1c3RTdHJhdGVneVtvcHRzLnRydXN0XSkge1xuICAgIHJldHVybiBUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcbiAgfSBlbHNlIHtcbiAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIHRydXN0IHN0cmF0ZWd5OiBcIiArIG9wdHMudHJ1c3QgKyBcIi4gUGxlYXNlIHVzZSBlaXRoZXIgXCIgKyBcInRydXN0OidUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTJyBvciB0cnVzdDonVFJVU1RfT05fRklSU1RfVVNFJyBpbiB5b3VyIGRyaXZlciBcIiArIFwiY29uZmlndXJhdGlvbi4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpmYWxzZWAuIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSB0byB1c2UgZW5jcnlwdGlvbiB3aXRob3V0IHRydXN0IHZlcmlmaWNhdGlvbiwgXCIgKyBcImJlY2F1c2UgdGhpcyBpbmN1cnMgdGhlIG92ZXJoZWFkIG9mIGVuY3J5cHRpb24gd2l0aG91dCBpbXByb3Zpbmcgc2VjdXJpdHkuIElmIFwiICsgXCJ0aGUgZHJpdmVyIGRvZXMgbm90IHZlcmlmeSB0aGF0IHRoZSBwZWVyIGl0IGlzIGNvbm5lY3RlZCB0byBpcyByZWFsbHkgTmVvNGosIGl0IFwiICsgXCJpcyB2ZXJ5IGVhc3kgZm9yIGFuIGF0dGFja2VyIHRvIGJ5cGFzcyB0aGUgZW5jcnlwdGlvbiBieSBwcmV0ZW5kaW5nIHRvIGJlIE5lbzRqLlwiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbiBhIE5vZGUuanMgZW52aXJvbm1lbnQgdGhlICduZXQnIG1vZHVsZSBpcyB1c2VkXG4gKiBhcyB0cmFuc3BvcnQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgTm9kZUNoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIE5vZGVDaGFubmVsKG9wdHMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUNoYW5uZWwpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5pZCA9IF9DT05ORUNUSU9OX0lER0VOKys7XG4gICAgdGhpcy5hdmFpbGFibGUgPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubmVjdChvcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNlbGYuX29wZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLl9jb25uLm9uKCdkYXRhJywgZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgICBzZWxmLm9ubWVzc2FnZShuZXcgX2J1Zi5Ob2RlQnVmZmVyKGJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VsZi5fY29ubi5vbignZXJyb3InLCBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuXG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE5vZGVDaGFubmVsLCBbe1xuICAgIGtleTogJ19oYW5kbGVDb25uZWN0aW9uRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKGVycikge1xuICAgICAgdGhpcy5fZXJyb3IgPSBlcnI7XG4gICAgICBpZiAodGhpcy5vbmVycm9yKSB7XG4gICAgICAgIHRoaXMub25lcnJvcihlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRoZSBwYXNzZWQgaW4gYnVmZmVyIHRvIGNvbm5lY3Rpb25cbiAgICAgKiBAcGFyYW0ge05vZGVCdWZmZXJ9IGJ1ZmZlciAtIEJ1ZmZlciB0byB3cml0ZVxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnd3JpdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5Ob2RlQnVmZmVyKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCBcIltDb25uI1wiK3RoaXMuaWQrXCJdIFNFTkQ6IFwiLCBidWZmZXIudG9TdHJpbmcoKSApO1xuICAgICAgICB0aGlzLl9jb25uLndyaXRlKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gd3JpdGU6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICB2YXIgY2IgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuX2Nvbm4pIHtcbiAgICAgICAgdGhpcy5fY29ubi5lbmQoKTtcbiAgICAgICAgdGhpcy5fY29ubi5vbignZW5kJywgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTm9kZUNoYW5uZWw7XG59KSgpO1xuXG52YXIgX25vZGVDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBOb2RlQ2hhbm5lbCwgYXZhaWxhYmxlOiB0cnVlIH07XG5cbnRyeSB7XG4gIC8vIE9ubHkgZGVmaW5lIHRoaXMgbW9kdWxlIGlmICduZXQnIGlzIGF2YWlsYWJsZVxuICByZXF1aXJlLnJlc29sdmUoXCJuZXRcIik7XG59IGNhdGNoIChlKSB7XG4gIF9ub2RlQ2hhbm5lbE1vZHVsZSA9IHsgYXZhaWxhYmxlOiBmYWxzZSB9O1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBfbm9kZUNoYW5uZWxNb2R1bGU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9sb2cgPSByZXF1aXJlKFwiLi9sb2dcIik7XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBXZWJTb2NrZXRDaGFubmVsIHRvIGJlIHVzZWQgaW4gd2ViIGJyb3dzZXJzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIFdlYlNvY2tldENoYW5uZWwgPSAoZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFdlYlNvY2tldENoYW5uZWwob3B0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJTb2NrZXRDaGFubmVsKTtcblxuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB2YXIgc2NoZW1lID0gXCJ3c1wiO1xuICAgIGlmIChvcHRzLmVuY3J5cHRlZCkge1xuICAgICAgaWYgKCFvcHRzLnRydXN0IHx8IG9wdHMudHJ1c3QgPT09IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSB7XG4gICAgICAgIHNjaGVtZSA9IFwid3NzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhlIGJyb3dzZXIgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIG9uZSB0cnVzdCBcIiArIFwic3RyYXRlZ3ksICdUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTJy4gXCIgKyBvcHRzLnRydXN0ICsgXCIgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIFwiICsgXCJlaXRoZXIgdXNlIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIGJ5IHNldHRpbmcgXCIgKyBcImBlbmNyeXB0ZWQ6ZmFsc2VgIGluIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXJsID0gc2NoZW1lICsgXCI6Ly9cIiArIG9wdHMuaG9zdCArIFwiOlwiICsgb3B0cy5wb3J0O1xuICAgIHRoaXMuX3dzID0gbmV3IFdlYlNvY2tldCh0aGlzLl91cmwpO1xuICAgIHRoaXMuX3dzLmJpbmFyeVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgLy9BbGwgY29ubmVjdGlvbiBlcnJvcnMgYXJlIG5vdCBzZW50IHRvIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgLy93ZSBtdXN0IGFsc28gY2hlY2sgZm9yIGRpcnR5IGNsb3NlIGNhbGxzXG4gICAgdGhpcy5fd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWUud2FzQ2xlYW4pIHtcbiAgICAgICAgc2VsZi5faGFuZGxlQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl93cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHNlbGYub25tZXNzYWdlKSB7XG4gICAgICAgIHZhciBiID0gbmV3IF9idWYuSGVhcEJ1ZmZlcihldmVudC5kYXRhKTtcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UoYik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuX3dzLm9uZXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3I7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViU29ja2V0Q2hhbm5lbCwgW3tcbiAgICBrZXk6IFwiX2hhbmRsZUNvbm5lY3Rpb25FcnJvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKCkge1xuICAgICAgLy8gb25lcnJvciB0cmlnZ2VycyBvbiB3ZWJzb2NrZXQgY2xvc2UgYXMgd2VsbC4uIGRvbid0IGdldCBtZSBzdGFydGVkLlxuICAgICAgaWYgKHRoaXMuX29wZW4pIHtcbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTc3OTgzMS9ob3ctdG8tY2F0Y2gtd2Vic29ja2V0LWNvbm5lY3Rpb24tdG8td3MteHh4bm4tZmFpbGVkLWNvbm5lY3Rpb24tY2xvc2VkLWJlXG4gICAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoXCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsdXJlLiBEdWUgdG8gc2VjdXJpdHkgXCIgKyBcImNvbnN0cmFpbnRzIGluIHlvdXIgd2ViIGJyb3dzZXIsIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlIGlzIG5vdCBhdmFpbGFibGUgXCIgKyBcInRvIHRoaXMgTmVvNGogRHJpdmVyLiBQbGVhc2UgdXNlIHlvdXIgYnJvd3NlcnMgZGV2ZWxvcG1lbnQgY29uc29sZSB0byBkZXRlcm1pbmUgXCIgKyBcInRoZSByb290IGNhdXNlIG9mIHRoZSBmYWlsdXJlLiBDb21tb24gcmVhc29ucyBpbmNsdWRlIHRoZSBkYXRhYmFzZSBiZWluZyBcIiArIFwidW5hdmFpbGFibGUsIHVzaW5nIHRoZSB3cm9uZyBjb25uZWN0aW9uIFVSTCBvciB0ZW1wb3JhcnkgbmV0d29yayBwcm9ibGVtcy4gXCIgKyBcIklmIHlvdSBoYXZlIGVuYWJsZWQgZW5jcnlwdGlvbiwgZW5zdXJlIHlvdXIgYnJvd3NlciBpcyBjb25maWd1cmVkIHRvIHRydXN0IHRoZSBcIiArIFwiY2VydGlmaWNhdGUgTmVvNGogaXMgY29uZmlndXJlZCB0byB1c2UuIFdlYlNvY2tldCBgcmVhZHlTdGF0ZWAgaXM6IFwiICsgdGhpcy5fd3MucmVhZHlTdGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7SGVhcEJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmZmVyKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcXVldWUsIHB1c2ggdGhpcyBvbiB0aGF0IHF1ZXVlLiBUaGlzIG1lYW5zXG4gICAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYuSGVhcEJ1ZmZlcikge1xuICAgICAgICB0aGlzLl93cy5zZW5kKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gc2VuZCBidWZmZXI6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJjbG9zZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl93cy5jbG9zZSgpO1xuICAgICAgdGhpcy5fd3Mub25jbG9zZSA9IGNiO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJTb2NrZXRDaGFubmVsO1xufSkoKTtcblxudmFyIGF2YWlsYWJsZSA9IHR5cGVvZiBXZWJTb2NrZXQgIT09ICd1bmRlZmluZWQnO1xudmFyIF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBXZWJTb2NrZXRDaGFubmVsLCBhdmFpbGFibGU6IGF2YWlsYWJsZSB9O1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfYnVmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1Zik7XG5cbnZhciBfQ0hVTktfSEVBREVSX1NJWkUgPSAyLFxuICAgIF9NRVNTQUdFX0JPVU5EQVJZID0gMHgwMCxcbiAgICBfREVGQVVMVF9CVUZGRVJfU0laRSA9IDE0MDA7IC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYxMzczNC9tYXhpbXVtLXBhY2tldC1zaXplLWZvci1hLXRjcC1jb25uZWN0aW9uXG5cbi8qKlxuICogTG9va3MgbGlrZSBhIHdyaXRhYmxlIGJ1ZmZlciwgY2h1bmtzIG91dHB1dCB0cmFuc3BhcmVudGx5IGludG8gYSBjaGFubmVsIGJlbG93LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIENodW5rZXIgPSAoZnVuY3Rpb24gKF9idWYkQmFzZUJ1ZmZlcikge1xuICBfaW5oZXJpdHMoQ2h1bmtlciwgX2J1ZiRCYXNlQnVmZmVyKTtcblxuICBmdW5jdGlvbiBDaHVua2VyKGNoYW5uZWwsIGJ1ZmZlclNpemUpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2h1bmtlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihDaHVua2VyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcywgMCk7XG4gICAgdGhpcy5fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemUgfHwgX0RFRkFVTFRfQlVGRkVSX1NJWkU7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2J1ZmZlciA9IF9idWYyWydkZWZhdWx0J10uYWxsb2ModGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5fY3VycmVudENodW5rU3RhcnQgPSAwO1xuICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmVzIGNodW5rcyB1bnRpbCBhIGNvbXBsZXRlIG1lc3NhZ2UgaXMgZ2F0aGVyZWQgdXAsIGFuZCB0aGVuIGZvcndhcmRzIHRoYXRcbiAgICogbWVzc2FnZSB0byBhbiAnb25tZXNzYWdlJyBsaXN0ZW5lci5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhDaHVua2VyLCBbe1xuICAgIGtleTogJ3B1dFVJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0RmxvYXQ2NCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDgpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlRmxvYXQ2NCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEJ5dGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIGRhdGEpIHtcbiAgICAgIC8vIFRPRE86IElmIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3VyIGNodW5rIHNpemUgb3Igc28sIHdlJ3JlIHZlcnkgbGlrZWx5IGJldHRlciBvZmYganVzdCBwYXNzaW5nIHRoaXMgYnVmZmVyIG9uXG4gICAgICAvLyByYXRoZXIgdGhhbiBkb2luZyB0aGUgY29weSBoZXJlIFRPRE86ICpob3dldmVyKiBub3RlIHRoYXQgd2UgbmVlZCBzb21lIHdheSB0byBmaW5kIG91dCB3aGVuIHRoZSBkYXRhIGhhcyBiZWVuXG4gICAgICAvLyB3cml0dGVuIChhbmQgdGh1cyB0aGUgYnVmZmVyIGNhbiBiZSByZS11c2VkKSBpZiB3ZSB0YWtlIHRoYXQgYXBwcm9hY2hcbiAgICAgIHdoaWxlIChkYXRhLnJlbWFpbmluZygpID4gMCkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlcmUgaXMgYW4gb3BlbiBjaHVuaywgYW5kIHRoYXQgaXQgaGFzIGF0IGxlYXN0IG9uZSBieXRlIG9mIHNwYWNlIGxlZnRcbiAgICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpID4gZGF0YS5yZW1haW5pbmcoKSkge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEucmVhZFNsaWNlKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdmbHVzaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5wb3NpdGlvbiA+IDApIHtcbiAgICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICAgIC8vIExvY2FsIGNvcHkgYW5kIGNsZWFyIHRoZSBidWZmZXIgZmllbGQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBidWZmZXIgaXMgbm90IHJlLXJlbGVhc2VkIGlmIHRoZSBmbHVzaCBjYWxsIGZhaWxzXG4gICAgICAgIHZhciBvdXQgPSB0aGlzLl9idWZmZXI7XG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fY2gud3JpdGUob3V0LmdldFNsaWNlKDAsIG91dC5wb3NpdGlvbikpO1xuXG4gICAgICAgIC8vIEFsbG9jIGEgbmV3IG91dHB1dCBidWZmZXIuIFdlIGFzc3VtZSB3ZSdyZSB1c2luZyBOb2RlSlMncyBidWZmZXIgcG9vbGluZyB1bmRlciB0aGUgaG9vZCBoZXJlIVxuICAgICAgICB0aGlzLl9idWZmZXIgPSBfYnVmMlsnZGVmYXVsdCddLmFsbG9jKHRoaXMuX2J1ZmZlclNpemUpO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJvbHQgbWVzc2FnZXMgYXJlIGVuY29kZWQgaW4gb25lIG9yIG1vcmUgY2h1bmtzLCBhbmQgdGhlIGJvdW5kYXJ5IGJldHdlZW4gdHdvIG1lc3NhZ2VzXG4gICAgICogaXMgZW5jb2RlZCBhcyBhIDAtbGVuZ3RoIGNodW5rLCBgMDAgMDBgLiBUaGlzIGluc2VydHMgc3VjaCBhIG1lc3NhZ2UgYm91bmRhcnksIGNsb3NpbmdcbiAgICAgKiBhbnkgY3VycmVudGx5IG9wZW4gY2h1bmsgYXMgbmVlZGVkXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdtZXNzYWdlQm91bmRhcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZXNzYWdlQm91bmRhcnkoKSB7XG5cbiAgICAgIHRoaXMuX2Nsb3NlQ2h1bmtJZk9wZW4oKTtcblxuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSA8IF9DSFVOS19IRUFERVJfU0laRSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdyaXRlIG1lc3NhZ2UgYm91bmRhcnlcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDE2KF9NRVNTQUdFX0JPVU5EQVJZKTtcbiAgICB9XG5cbiAgICAvKiogRW5zdXJlIGF0IGxlYXN0IHRoZSBnaXZlbiBzaXplIGlzIGF2YWlsYWJsZSBmb3Igd3JpdGluZyAqL1xuICB9LCB7XG4gICAga2V5OiAnX2Vuc3VyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lbnN1cmUoc2l6ZSkge1xuICAgICAgdmFyIHRvV3JpdGVTaXplID0gdGhpcy5fY2h1bmtPcGVuID8gc2l6ZSA6IHNpemUgKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgdG9Xcml0ZVNpemUpIHtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2NodW5rT3Blbikge1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fYnVmZmVyLnBvc2l0aW9uID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uICsgX0NIVU5LX0hFQURFUl9TSVpFO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jbG9zZUNodW5rSWZPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Nsb3NlQ2h1bmtJZk9wZW4oKSB7XG4gICAgICBpZiAodGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHZhciBjaHVua1NpemUgPSB0aGlzLl9idWZmZXIucG9zaXRpb24gLSAodGhpcy5fY3VycmVudENodW5rU3RhcnQgKyBfQ0hVTktfSEVBREVSX1NJWkUpO1xuICAgICAgICB0aGlzLl9idWZmZXIucHV0VUludDE2KHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0LCBjaHVua1NpemUpO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2h1bmtlcjtcbn0pKF9idWYyWydkZWZhdWx0J10uQmFzZUJ1ZmZlcik7XG5cbnZhciBEZWNodW5rZXIgPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEZWNodW5rZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERlY2h1bmtlcik7XG5cbiAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgIHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciA9IDA7XG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKERlY2h1bmtlciwgW3tcbiAgICBrZXk6ICdBV0FJVElOR19DSFVOSycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIEFXQUlUSU5HX0NIVU5LKGJ1Zikge1xuICAgICAgaWYgKGJ1Zi5yZW1haW5pbmcoKSA+PSAyKSB7XG4gICAgICAgIC8vIFdob2xlIGhlYWRlciBhdmFpbGFibGUsIHJlYWQgdGhhdFxuICAgICAgICByZXR1cm4gdGhpcy5fb25IZWFkZXIoYnVmLnJlYWRVSW50MTYoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPbmx5IG9uZSBieXRlIGF2YWlsYWJsZSwgcmVhZCB0aGF0IGFuZCB3YWl0IGZvciB0aGUgc2Vjb25kIGJ5dGVcbiAgICAgICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gYnVmLnJlYWRVSW50OCgpIDw8IDg7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0hFQURFUjtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdJTl9IRUFERVInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBJTl9IRUFERVIoYnVmKSB7XG4gICAgICAvLyBGaXJzdCBoZWFkZXIgYnl0ZSByZWFkLCBub3cgd2UgcmVhZCB0aGUgbmV4dCBvbmVcbiAgICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcigodGhpcy5fcGFydGlhbENodW5rSGVhZGVyIHwgYnVmLnJlYWRVSW50OCgpKSAmIDB4RkZGRik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnSU5fQ0hVTksnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBJTl9DSFVOSyhidWYpIHtcbiAgICAgIGlmICh0aGlzLl9jaHVua1NpemUgPD0gYnVmLnJlbWFpbmluZygpKSB7XG4gICAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIGxhcmdlciB0aGFuIGN1cnJlbnQgY2h1bmssIG9yIHNhbWUgc2l6ZTpcbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKHRoaXMuX2NodW5rU2l6ZSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIHNtYWxsZXIgdGhhbiB0aGUgY2h1bmsgd2UncmUgcmVhZGluZywgc3BsaXQgdGhlIGN1cnJlbnQgY2h1bmsgaXRzZWxmIHVwXG4gICAgICAgIHRoaXMuX2NodW5rU2l6ZSAtPSBidWYucmVtYWluaW5nKCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlLnB1c2goYnVmLnJlYWRTbGljZShidWYucmVtYWluaW5nKCkpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnQ0xPU0VEJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQ0xPU0VEKGJ1Zikge31cbiAgICAvLyBuby1vcFxuXG4gICAgLyoqIENhbGxlZCB3aGVuIGEgY29tcGxldGUgY2h1bmsgaGVhZGVyIGhhcyBiZWVuIHJlY2lldmVkICovXG5cbiAgfSwge1xuICAgIGtleTogJ19vbkhlYWRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vbkhlYWRlcihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIgPT0gMCkge1xuICAgICAgICAvLyBNZXNzYWdlIGJvdW5kYXJ5XG4gICAgICAgIHZhciBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudE1lc3NhZ2UubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5fY3VycmVudE1lc3NhZ2VbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG5ldyBfYnVmMlsnZGVmYXVsdCddLkNvbWJpbmVkQnVmZmVyKHRoaXMuX2N1cnJlbnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgICAgICB0aGlzLm9ubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaHVua1NpemUgPSBoZWFkZXI7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0NIVU5LO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmKSB7XG4gICAgICB3aGlsZSAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fc3RhdGUoYnVmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRGVjaHVua2VyO1xufSkoKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBDaHVua2VyOiBDaHVua2VyLFxuICBEZWNodW5rZXI6IERlY2h1bmtlclxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9jaFdlYnNvY2tldCA9IHJlcXVpcmUoXCIuL2NoLXdlYnNvY2tldFwiKTtcblxudmFyIF9jaFdlYnNvY2tldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaFdlYnNvY2tldCk7XG5cbnZhciBfY2hOb2RlID0gcmVxdWlyZShcIi4vY2gtbm9kZVwiKTtcblxudmFyIF9jaE5vZGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2hOb2RlKTtcblxudmFyIF9jaHVua2luZyA9IHJlcXVpcmUoXCIuL2NodW5raW5nXCIpO1xuXG52YXIgX2NodW5raW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NodW5raW5nKTtcblxudmFyIF9mZWF0dXJlcyA9IHJlcXVpcmUoXCIuL2ZlYXR1cmVzXCIpO1xuXG52YXIgX2ZlYXR1cmVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZlYXR1cmVzKTtcblxudmFyIF9wYWNrc3RyZWFtID0gcmVxdWlyZShcIi4vcGFja3N0cmVhbVwiKTtcblxudmFyIF9wYWNrc3RyZWFtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhY2tzdHJlYW0pO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoXCIuL2J1ZlwiKTtcblxudmFyIF9ncmFwaFR5cGVzID0gcmVxdWlyZSgnLi4vZ3JhcGgtdHlwZXMnKTtcblxudmFyIF9ncmFwaFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dyYXBoVHlwZXMpO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlZ2VyJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBDaGFubmVsID0gdW5kZWZpbmVkO1xuaWYgKF9jaFdlYnNvY2tldDJbXCJkZWZhdWx0XCJdLmF2YWlsYWJsZSkge1xuICBDaGFubmVsID0gX2NoV2Vic29ja2V0MltcImRlZmF1bHRcIl0uY2hhbm5lbDtcbn0gZWxzZSBpZiAoX2NoTm9kZTJbXCJkZWZhdWx0XCJdLmF2YWlsYWJsZSkge1xuICBDaGFubmVsID0gX2NoTm9kZTJbXCJkZWZhdWx0XCJdLmNoYW5uZWw7XG59IGVsc2Uge1xuICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkZhdGFsOiBObyBjb21wYXRpYmxlIHRyYW5zcG9ydCBhdmFpbGFibGUuIE5lZWQgdG8gcnVuIG9uIGEgcGxhdGZvcm0gd2l0aCB0aGUgV2ViU29ja2V0IEFQSS5cIik7XG59XG5cbnZhclxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBlYWNoIG1lc3NhZ2UgdHlwZVxuSU5JVCA9IDB4MDEsXG4gICAgLy8gMDAwMCAwMDAxIC8vIElOSVQgPHVzZXJfYWdlbnQ+XG5BQ0tfRkFJTFVSRSA9IDB4MEUsXG4gICAgLy8gMDAwMCAxMTEwIC8vIEFDS19GQUlMVVJFXG5SRVNFVCA9IDB4MEYsXG4gICAgLy8gMDAwMCAxMTExIC8vIFJFU0VUXG5SVU4gPSAweDEwLFxuICAgIC8vIDAwMDEgMDAwMCAvLyBSVU4gPHN0YXRlbWVudD4gPHBhcmFtZXRlcnM+XG5ESVNDQVJEX0FMTCA9IDB4MkYsXG4gICAgLy8gMDAxMCAxMTExIC8vIERJU0NBUkQgKlxuUFVMTF9BTEwgPSAweDNGLFxuICAgIC8vIDAwMTEgMTExMSAvLyBQVUxMICpcblNVQ0NFU1MgPSAweDcwLFxuICAgIC8vIDAxMTEgMDAwMCAvLyBTVUNDRVNTIDxtZXRhZGF0YT5cblJFQ09SRCA9IDB4NzEsXG4gICAgLy8gMDExMSAwMDAxIC8vIFJFQ09SRCA8dmFsdWU+XG5JR05PUkVEID0gMHg3RSxcbiAgICAvLyAwMTExIDExMTAgLy8gSUdOT1JFRCA8bWV0YWRhdGE+XG5GQUlMVVJFID0gMHg3RixcbiAgICAvLyAwMTExIDExMTEgLy8gRkFJTFVSRSA8bWV0YWRhdGE+XG5cbi8vIFNpZ25hdHVyZSBieXRlcyBmb3IgaGlnaGVyLWxldmVsIGdyYXBoIG9iamVjdHNcbk5PREUgPSAweDRFLFxuICAgIFJFTEFUSU9OU0hJUCA9IDB4NTIsXG4gICAgVU5CT1VORF9SRUxBVElPTlNISVAgPSAweDcyLFxuICAgIFBBVEggPSAweDUwLFxuXG4vL3NlbnQgYmVmb3JlIHZlcnNpb24gbmVnb3RpYXRpb25cbk1BR0lDX1BSRUFNQkxFID0gMHg2MDYwQjAxNztcblxudmFyIFVSTFJFR0VYID0gbmV3IFJlZ0V4cChbXCJbXi9dKy8vXCIsIC8vIHNjaGVtZVxuXCIoKFteOi8/I10qKVwiLCAvLyBob3N0bmFtZVxuXCIoPzo6KFswLTldKykpPylcIiwgLy8gcG9ydCAob3B0aW9uYWwpXG5cIi4qXCJdLmpvaW4oXCJcIikpOyAvLyBldmVyeXRoaW5nIGVsc2VcblxuZnVuY3Rpb24gaG9zdCh1cmwpIHtcbiAgcmV0dXJuIHVybC5tYXRjaChVUkxSRUdFWClbMl07XG59XG5cbmZ1bmN0aW9uIHBvcnQodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goVVJMUkVHRVgpWzNdO1xufVxuXG5mdW5jdGlvbiBOT19PUCgpIHt9XG5cbnZhciBOT19PUF9PQlNFUlZFUiA9IHtcbiAgb25OZXh0OiBOT19PUCxcbiAgb25Db21wbGV0ZWQ6IE5PX09QLFxuICBvbkVycm9yOiBOT19PUFxufTtcblxuLyoqIE1hcHMgZnJvbSBwYWNrc3RyZWFtIHN0cnVjdHVyZXMgdG8gTmVvNGogZG9tYWluIG9iamVjdHMgKi9cbnZhciBfbWFwcGVycyA9IHtcbiAgbm9kZTogZnVuY3Rpb24gbm9kZSh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLk5vZGUodW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIExhYmVsc1xuICAgIHVucGFja2VyLnVucGFjayhidWYpIC8vIFByb3BlcnRpZXNcbiAgICApO1xuICB9LFxuICByZWw6IGZ1bmN0aW9uIHJlbCh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlJlbGF0aW9uc2hpcCh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gU3RhcnQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBFbmQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHVuYm91bmRSZWw6IGZ1bmN0aW9uIHVuYm91bmRSZWwodW5wYWNrZXIsIGJ1Zikge1xuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5VbmJvdW5kUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHBhdGg6IGZ1bmN0aW9uIHBhdGgodW5wYWNrZXIsIGJ1Zikge1xuICAgIHZhciBub2RlcyA9IHVucGFja2VyLnVucGFjayhidWYpLFxuICAgICAgICByZWxzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHNlcXVlbmNlID0gdW5wYWNrZXIudW5wYWNrKGJ1Zik7XG4gICAgdmFyIHByZXZOb2RlID0gbm9kZXNbMF0sXG4gICAgICAgIHNlZ21lbnRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcXVlbmNlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgcmVsSW5kZXggPSBzZXF1ZW5jZVtpXSxcbiAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGVzW3NlcXVlbmNlW2kgKyAxXV0sXG4gICAgICAgICAgcmVsID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHJlbEluZGV4ID4gMCkge1xuICAgICAgICByZWwgPSByZWxzW3JlbEluZGV4IC0gMV07XG4gICAgICAgIGlmIChyZWwgaW5zdGFuY2VvZiBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlVuYm91bmRSZWxhdGlvbnNoaXApIHtcbiAgICAgICAgICAvLyBUbyBhdm9pZCBkdXBsaWNhdGlvbiwgcmVsYXRpb25zaGlwcyBpbiBhIHBhdGggZG8gbm90IGNvbnRhaW5cbiAgICAgICAgICAvLyBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBzdGFydCBhbmQgZW5kIG5vZGVzLCB0aGF0J3MgaW5zdGVhZFxuICAgICAgICAgIC8vIGluZmVycmVkIGZyb20gdGhlIHBhdGggc2VxdWVuY2UuIFRoaXMgaXMgdXMgaW5mZXJyaW5nIChhbmQsXG4gICAgICAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgcmVtZW1iZXJpbmcpIHRoZSBzdGFydC9lbmQgb2YgYSByZWwuXG4gICAgICAgICAgcmVsc1tyZWxJbmRleCAtIDFdID0gcmVsID0gcmVsLmJpbmQocHJldk5vZGUuaWRlbnRpdHksIG5leHROb2RlLmlkZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVsID0gcmVsc1stcmVsSW5kZXggLSAxXTtcbiAgICAgICAgaWYgKHJlbCBpbnN0YW5jZW9mIF9ncmFwaFR5cGVzMltcImRlZmF1bHRcIl0uVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFNlZSBhYm92ZVxuICAgICAgICAgIHJlbHNbLXJlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChuZXh0Tm9kZS5pZGVudGl0eSwgcHJldk5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBEb25lIGh5ZHJhdGluZyBvbmUgcGF0aCBzZWdtZW50LlxuICAgICAgc2VnbWVudHMucHVzaChuZXcgX2dyYXBoVHlwZXMyW1wiZGVmYXVsdFwiXS5QYXRoU2VnbWVudChwcmV2Tm9kZSwgcmVsLCBuZXh0Tm9kZSkpO1xuICAgICAgcHJldk5vZGUgPSBuZXh0Tm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlczJbXCJkZWZhdWx0XCJdLlBhdGgobm9kZXNbMF0sIG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdLCBzZWdtZW50cyk7XG4gIH1cbn07XG5cbi8qKlxuICogQSBjb25uZWN0aW9uIG1hbmFnZXMgc2VuZGluZyBhbmQgcmVjaWV2aW5nIG1lc3NhZ2VzIG92ZXIgYSBjaGFubmVsLiBBXG4gKiBjb25uZWN0b3IgaXMgdmVyeSBjbG9zZWx5IHRpZWQgdG8gdGhlIEJvbHQgcHJvdG9jb2wsIGl0IGltcGxlbWVudHMgdGhlXG4gKiBzYW1lIG1lc3NhZ2Ugc3RydWN0dXJlIHdpdGggdmVyeSBsaXR0bGUgZnJpbGxzLiBUaGlzIG1lYW5zIENvbm5lY3RvcnMgYXJlXG4gKiBuYXR1cmFsbHkgdGllZCB0byBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLCBhbmQgd2UgZXhwZWN0XG4gKiBhbm90aGVyIGxheWVyIHdpbGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMuXG4gKlxuICogVGhlIGNvbm5lY3RvciB0cmllcyB0byBiYXRjaCBvdXRib3VuZCBtZXNzYWdlcyBieSByZXF1aXJpbmcgaXRzIHVzZXJzXG4gKiB0byBjYWxsICdzeW5jJyB3aGVuIG1lc3NhZ2VzIG5lZWQgdG8gYmUgc2VudCwgYW5kIGl0IHJvdXRlcyByZXNwb25zZVxuICogbWVzc2FnZXMgYmFjayB0byB0aGUgb3JpZ2luYXRvcnMgb2YgdGhlIHJlcXVlc3RzIHRoYXQgY3JlYXRlZCB0aG9zZVxuICogcmVzcG9uc2UgbWVzc2FnZXMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgQ29ubmVjdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHdpdGggYSAnd3JpdGUnIGZ1bmN0aW9uIGFuZCBhICdvbm1lc3NhZ2UnXG4gICAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgcHJvcGVydHlcbiAgICovXG5cbiAgZnVuY3Rpb24gQ29ubmVjdGlvbihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbm5lY3Rpb24pO1xuXG4gICAgLyoqXG4gICAgICogQW4gb3JkZXJlZCBxdWV1ZSBvZiBvYnNlcnZlcnMsIGVhY2ggZXhjaGFuZ2UgcmVzcG9uc2UgKHplcm8gb3IgbW9yZVxuICAgICAqIFJFQ09SRCBtZXNzYWdlcyBmb2xsb3dlZCBieSBhIFNVQ0NFU1MgbWVzc2FnZSkgd2UgcmVjaWV2ZSB3aWxsIGJlIHJvdXRlZFxuICAgICAqIHRvIHRoZSBuZXh0IHBlbmRpbmcgb2JzZXJ2ZXIuXG4gICAgICovXG4gICAgdGhpcy5fcGVuZGluZ09ic2VydmVycyA9IFtdO1xuICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fZGVjaHVua2VyID0gbmV3IF9jaHVua2luZzJbXCJkZWZhdWx0XCJdLkRlY2h1bmtlcigpO1xuICAgIHRoaXMuX2NodW5rZXIgPSBuZXcgX2NodW5raW5nMltcImRlZmF1bHRcIl0uQ2h1bmtlcihjaGFubmVsKTtcbiAgICB0aGlzLl9wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0yW1wiZGVmYXVsdFwiXS5QYWNrZXIodGhpcy5fY2h1bmtlcik7XG4gICAgdGhpcy5fdW5wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0yW1wiZGVmYXVsdFwiXS5VbnBhY2tlcigpO1xuICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgICAvLyBTZXQgdG8gdHJ1ZSBvbiBmYXRhbCBlcnJvcnMsIHRvIGdldCB0aGlzIG91dCBvZiBzZXNzaW9uIHBvb2wuXG4gICAgdGhpcy5faXNCcm9rZW4gPSBmYWxzZTtcblxuICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24sIGV4cGxhaW4gdG8gdGhlIHVucGFja2VyIGhvdyB0byB1bnBhY2sgbm9kZXMsIHJlbHMsIHBhdGhzO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbTk9ERV0gPSBfbWFwcGVycy5ub2RlO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUkVMQVRJT05TSElQXSA9IF9tYXBwZXJzLnJlbDtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1VOQk9VTkRfUkVMQVRJT05TSElQXSA9IF9tYXBwZXJzLnVuYm91bmRSZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tQQVRIXSA9IF9tYXBwZXJzLnBhdGg7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgLy8gVE9ETzogVXNpbmcgYG9ubWVzc2FnZWAgYW5kIGBvbmVycm9yYCBjYW1lIGZyb20gdGhlIFdlYlNvY2tldCBBUEksXG4gICAgLy8gaXQgcmVhZHMgcG9vcmx5IGFuZCBoYXMgc2V2ZXJhbCBhbm5veWluZyBkcmF3YmFja3MuIFN3YXAgdG8gaGF2aW5nXG4gICAgLy8gQ2hhbm5lbCBleHRlbmQgRXZlbnRFbWl0dGVyIGluc3RlYWQsIHRoZW4gd2UgY2FuIHVzZSBgb24oJ2RhdGEnLC4uKWBcbiAgICB0aGlzLl9jaC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICB2YXIgcHJvcG9zZWQgPSBidWYucmVhZEludDMyKCk7XG4gICAgICBpZiAocHJvcG9zZWQgPT0gMSkge1xuICAgICAgICAvLyBPaywgcHJvdG9jb2wgcnVubmluZy4gU2ltcGx5IGZvcndhcmQgYWxsIG1lc3NhZ2VzIHBhc3RcbiAgICAgICAgLy8gdGhpcyB0byB0aGUgZGVjaHVua2VyXG4gICAgICAgIHNlbGYuX2NoLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgICAgICBzZWxmLl9kZWNodW5rZXIud3JpdGUoYnVmKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zi5yZWFkU2xpY2UoYnVmLnJlbWFpbmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJvcG9zZWQgPT0gMTIxMzQ4NjE2MCkge1xuICAgICAgICAvL3NlcnZlciByZXNwb25kZWQgMTIxMzQ4NjE2MCA9PSAweDQ4NTQ1NDUwID09IFwiSFRUUFwiXG4gICAgICAgIHNlbGYuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgcmVzcG9uZGVkIEhUVFAuIE1ha2Ugc3VyZSB5b3UgYXJlIG5vdCB0cnlpbmcgdG8gY29ubmVjdCB0byB0aGUgaHR0cCBlbmRwb2ludCBcIiArIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgdmVyc2lvbjogXCIgKyBwcm9wb3NlZCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gdG8gY29ubmVjdGlvbiBlcnJvcnMuIEltcG9ydGFudCBub3RlIHRob3VnaDtcbiAgICAvLyBJbiBzb21lIGNhc2VzIHdlIHdpbGwgZ2V0IGEgY2hhbm5lbCB0aGF0IGlzIGFscmVhZHkgYnJva2VuIChmb3IgaW5zdGFuY2UsXG4gICAgLy8gaWYgdGhlIHVzZXIgcGFzc2VzIGludmFsaWQgY29uZmlndXJhdGlvbiBvcHRpb25zKS4gSW4gdGhpcyBjYXNlLCBvbmVycm9yXG4gICAgLy8gd2lsbCBoYXZlIFwiYWxyZWFkeSB0cmlnZ2VyZWRcIiBiZWZvcmUgd2UgYWRkIG91dCBsaXN0ZW5lciBoZXJlLiBTbyB0aGUgbGluZVxuICAgIC8vIGJlbG93IGFsc28gY2hlY2tzIHRoYXQgdGhlIGNoYW5uZWwgaXMgbm90IGFscmVhZHkgZmFpbGVkLiBUaGlzIGNvdWxkIGJlIG5pY2VseVxuICAgIC8vIGVuY2Fwc3VsYXRlZCBpbnRvIENoYW5uZWwgaWYgd2UgdXNlZCBgb24oJ2Vycm9yJywgLi4pYCByYXRoZXIgdGhhbiBgb25lcnJvcj0uLmBcbiAgICAvLyBhcyBvdXRsaW5lZCBpbiB0aGUgY29tbWVudCBhYm91dCBgb25tZXNzYWdlYCBmdXJ0aGVyIHVwIGluIHRoaXMgZmlsZS5cbiAgICB0aGlzLl9jaC5vbmVycm9yID0gdGhpcy5faGFuZGxlRmF0YWxFcnJvci5iaW5kKHRoaXMpO1xuICAgIGlmICh0aGlzLl9jaC5fZXJyb3IpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IodGhpcy5fY2guX2Vycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgc2VsZi5faGFuZGxlTWVzc2FnZShzZWxmLl91bnBhY2tlci51bnBhY2soYnVmKSk7XG4gICAgfTtcblxuICAgIHZhciBoYW5kc2hha2UgPSAoMCwgX2J1Zi5hbGxvYykoNSAqIDQpO1xuICAgIC8vbWFnaWMgcHJlYW1ibGVcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMihNQUdJQ19QUkVBTUJMRSk7XG4gICAgLy9wcm9wb3NlZCB2ZXJzaW9uc1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDEpO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKDApO1xuICAgIGhhbmRzaGFrZS5yZXNldCgpO1xuICAgIHRoaXMuX2NoLndyaXRlKGhhbmRzaGFrZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JldGUgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIHByb3ZpZGVkIHVybC5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSAnbmVvNGonLXByZWZpeGVkIFVSTCB0byBOZW80aiBCb2x0IGVuZHBvaW50XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdcbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gLSBOZXcgY29ubmVjdGlvblxuICAgKi9cblxuICAvKipcbiAgICogXCJGYXRhbFwiIG1lYW5zIHRoZSBjb25uZWN0aW9uIGlzIGRlYWQuIE9ubHkgY2FsbCB0aGlzIGlmIHNvbWV0aGluZ1xuICAgKiBoYXBwZW5zIHRoYXQgY2Fubm90IGJlIHJlY292ZXJlZCBmcm9tLiBUaGlzIHdpbGwgbGVhZCB0byBhbGwgc3Vic2NyaWJlcnNcbiAgICogZmFpbGluZywgYW5kIHRoZSBjb25uZWN0aW9uIGdldHRpbmcgZWplY3RlZCBmcm9tIHRoZSBzZXNzaW9uIHBvb2wuXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgYW4gZXJyb3Igb2JqZWN0LCBmb3J3YXJkZWQgdG8gYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBzdWJzY3JpYmVyc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoQ29ubmVjdGlvbiwgW3tcbiAgICBrZXk6IFwiX2hhbmRsZUZhdGFsRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSB7XG4gICAgICB0aGlzLl9pc0Jyb2tlbiA9IHRydWU7XG4gICAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfaGFuZGxlTWVzc2FnZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlTWVzc2FnZShtc2cpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHN3aXRjaCAobXNnLnNpZ25hdHVyZSkge1xuICAgICAgICBjYXNlIFJFQ09SRDpcbiAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25OZXh0KG1zZy5maWVsZHNbMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFNVQ0NFU1M6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkNvbXBsZXRlZChtc2cuZmllbGRzWzBdKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGQUlMVVJFOlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihtc2cpO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JNc2cgPSBtc2c7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICAgIC8vIFRoaW5ncyBhcmUgbm93IGJyb2tlbi4gUGVuZGluZyBvYnNlcnZlcnMgd2lsbCBnZXQgRkFJTFVSRSBtZXNzYWdlcyByb3V0ZWQgdW50aWxcbiAgICAgICAgICAgIC8vIFdlIGFyZSBkb25lIGhhbmRsaW5nIHRoaXMgZmFpbHVyZS5cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gX3RoaXM7XG5cbiAgICAgICAgICAgICAgICAvLyBpc0hhbmRsaW5nRmFpbHVyZSB3YXMgZmFsc2UsIG1lYW5pbmcgdGhpcyBpcyB0aGUgZmlyc3QgZmFpbHVyZSBtZXNzYWdlXG4gICAgICAgICAgICAgICAgLy8gd2Ugc2VlIGZyb20gdGhpcyBmYWlsdXJlLiBXZSBtYXkgc2VlIHNldmVyYWwgb3RoZXJzLCBvbmUgZm9yIGVhY2ggbWVzc2FnZVxuICAgICAgICAgICAgICAgIC8vIHdlIGhhZCBcIm9wdGltaXN0aWNhbGx5XCIgYWxyZWFkeSBzZW50IGFmdGVyIHdoYXRldmVyIGl0IHdhcyB0aGF0IGZhaWxlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYW5kIG5lZWQgdG8gQUNLIHRoZSBmaXJzdCBvbmUsIHdoaWNoIGlzIHdoeSB3ZSBhcmUgdHJhY2tpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGlzIF9pc0hhbmRsaW5nRmFpbHVyZSB0aGluZy5cbiAgICAgICAgICAgICAgICBfdGhpcy5fYWNrRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgICBvbk5leHQ6IE5PX09QLFxuICAgICAgICAgICAgICAgICAgb25FcnJvcjogTk9fT1AsXG4gICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIElHTk9SRUQ6XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9lcnJvck1zZyAmJiB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcikgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IodGhpcy5fZXJyb3JNc2cpO2Vsc2UgaWYgKHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihtc2cpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgbWVzc2FnZTogXCIgKyBtc2cpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUXVldWUgYW4gSU5JVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdGlhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0aWFsaXplKGNsaWVudE5hbWUsIHRva2VuLCBvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChJTklULCBbY2xpZW50TmFtZSwgdG9rZW5dKTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUlVOLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJydW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCwgcGFyYW1zLCBvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSVU4sIFtzdGF0ZW1lbnQsIHBhcmFtc10pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBQVUxMX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwicHVsbEFsbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdWxsQWxsKG9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFBVTExfQUxMKTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgRElTQ0FSRF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICB9LCB7XG4gICAga2V5OiBcImRpc2NhcmRBbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY2FyZEFsbChvYnNlcnZlcikge1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChESVNDQVJEX0FMTCk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChvYnNlcnZlcikge1xuICAgICAgdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHdyYXBwZWRPYnMgPSB7XG4gICAgICAgIG9uTmV4dDogb2JzZXJ2ZXIgPyBvYnNlcnZlci5vbk5leHQgOiBOT19PUCxcbiAgICAgICAgb25FcnJvcjogb2JzZXJ2ZXIgPyBvYnNlcnZlci5vbkVycm9yIDogTk9fT1AsXG4gICAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiBvbkNvbXBsZXRlZCgpIHtcbiAgICAgICAgICBzZWxmLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKHdyYXBwZWRPYnMpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoUkVTRVQpO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBBQ0tfRkFJTFVSRS1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIH0sIHtcbiAgICBrZXk6IFwiX2Fja0ZhaWx1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Fja0ZhaWx1cmUob2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoQUNLX0ZBSUxVUkUpO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX3F1ZXVlT2JzZXJ2ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9pc0Jyb2tlbikge1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9ic2VydmVyID0gb2JzZXJ2ZXIgfHwgTk9fT1BfT0JTRVJWRVI7XG4gICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9ic2VydmVyLm9uQ29tcGxldGVkIHx8IE5PX09QO1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9ic2VydmVyLm9uRXJyb3IgfHwgTk9fT1A7XG4gICAgICBvYnNlcnZlci5vbk5leHQgPSBvYnNlcnZlci5vbk5leHQgfHwgTk9fT1A7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmNocm9uaXplIC0gZmx1c2ggYWxsIHF1ZXVlZCBvdXRnb2luZyBtZXNzYWdlcyBhbmQgcm91dGUgdGhlaXIgcmVzcG9uc2VzXG4gICAgICogdG8gdGhlaXIgcmVzcGVjdGl2ZSBoYW5kbGVycy5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJzeW5jXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN5bmMoKSB7XG4gICAgICB0aGlzLl9jaHVua2VyLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiB3b3JraW5nIGNvbmRpdGlvbiAqL1xuICB9LCB7XG4gICAga2V5OiBcImlzT3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc09wZW4oKSB7XG4gICAgICByZXR1cm4gIXRoaXMuX2lzQnJva2VuICYmIHRoaXMuX2NoLl9vcGVuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgY2xvc2Ugb24gdGhlIGNoYW5uZWwuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcImNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKGNiKSB7XG4gICAgICB0aGlzLl9jaC5jbG9zZShjYik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbm5lY3Rpb247XG59KSgpO1xuXG5mdW5jdGlvbiBjb25uZWN0KHVybCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMV07XG5cbiAgdmFyIENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgcmV0dXJuIG5ldyBDb25uZWN0aW9uKG5ldyBDaCh7XG4gICAgaG9zdDogaG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBvcnQodXJsKSB8fCA3Njg3LFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgZW5jcnlwdGlvbiBpZiB0cnVzdC1vbi1maXJzdC11c2UgaXMgYXZhaWxhYmxlXG4gICAgZW5jcnlwdGVkOiBjb25maWcuZW5jcnlwdGVkID09IG51bGwgPyAoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpIDogY29uZmlnLmVuY3J5cHRlZCxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIHRydXN0LW9uLWZpcnN0LXVzZSBpZiBpdCBpcyBhdmFpbGFibGVcbiAgICB0cnVzdDogY29uZmlnLnRydXN0IHx8ICgoMCwgX2ZlYXR1cmVzMltcImRlZmF1bHRcIl0pKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpID8gXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiA6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzOiBjb25maWcua25vd25Ib3N0c1xuICB9KSk7XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBjb25uZWN0OiBjb25uZWN0LFxuICBDb25uZWN0aW9uOiBDb25uZWN0aW9uXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZTogZnVuY3Rpb24gdHJ1c3Rfb25fZmlyc3RfdXNlKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIGluc2FuZS4gV2UgYXJlIHZlcmlmeWluZyB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIGdldFBlZXJDZXJ0aWZpY2F0ZVxuICAgICAgLy8gdGhhdCBzdXBwb3J0cyByZWFkaW5nIHRoZSB3aG9sZSBjZXJ0aWZpY2F0ZSwgZWcgdGhpcyBjb21taXQ6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzM0NWM0MGI2XG4gICAgICB2YXIgZGVzYyA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgcmV0dXJuIGRlc2MubGVuZ3RoID49IDE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaGFzRmVhdHVyZShuYW1lKSB7XG4gIHJldHVybiBGRUFUVVJFU1tuYW1lXSAmJiBGRUFUVVJFU1tuYW1lXSgpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBoYXNGZWF0dXJlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFwiZGVidWdcIjogZnVuY3Rpb24gZGVidWcodmFsKSB7XG4gICAgY29uc29sZS5sb2codmFsKTtcbiAgfVxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgX2xvZyA9IHJlcXVpcmUoXCIuL2xvZ1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfdXRmOCA9IHJlcXVpcmUoXCIuL3V0ZjhcIik7XG5cbnZhciBfdXRmODIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGY4KTtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZShcIi4uL2ludGVnZXJcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBNQVhfQ0hVTktfU0laRSA9IDE2MzgzLFxuICAgIFRJTllfU1RSSU5HID0gMHg4MCxcbiAgICBUSU5ZX0xJU1QgPSAweDkwLFxuICAgIFRJTllfTUFQID0gMHhBMCxcbiAgICBUSU5ZX1NUUlVDVCA9IDB4QjAsXG4gICAgTlVMTCA9IDB4QzAsXG4gICAgRkxPQVRfNjQgPSAweEMxLFxuICAgIEZBTFNFID0gMHhDMixcbiAgICBUUlVFID0gMHhDMyxcbiAgICBJTlRfOCA9IDB4QzgsXG4gICAgSU5UXzE2ID0gMHhDOSxcbiAgICBJTlRfMzIgPSAweENBLFxuICAgIElOVF82NCA9IDB4Q0IsXG4gICAgU1RSSU5HXzggPSAweEQwLFxuICAgIFNUUklOR18xNiA9IDB4RDEsXG4gICAgU1RSSU5HXzMyID0gMHhEMixcbiAgICBMSVNUXzggPSAweEQ0LFxuICAgIExJU1RfMTYgPSAweEQ1LFxuICAgIExJU1RfMzIgPSAweEQ2LFxuICAgIE1BUF84ID0gMHhEOCxcbiAgICBNQVBfMTYgPSAweEQ5LFxuICAgIE1BUF8zMiA9IDB4REEsXG4gICAgU1RSVUNUXzggPSAweERDLFxuICAgIFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIFN0cnVjdHVyZSA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cnVjdHVyZShzaWduYXR1cmUsIGZpZWxkcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJ1Y3R1cmUpO1xuXG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHBhY2tcbiAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cnVjdHVyZSwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgZmllbGRTdHIgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBmaWVsZFN0ciArPSBcIiwgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJTdHJ1Y3R1cmUoXCIgKyB0aGlzLnNpZ25hdHVyZSArIFwiLCBbXCIgKyB0aGlzLmZpZWxkcyArIFwiXSlcIjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RydWN0dXJlO1xufSkoKTtcblxudmFyIFBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhY2tlcihjaGFubmVsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBhY2tlcik7XG5cbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICAqIENsYXNzIHRvIHVucGFja1xuICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUGFja2VyLCBbe1xuICAgIGtleTogXCJwYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2soeCkge1xuICAgICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChOVUxMKTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRSVUUpO1xuICAgICAgfSBlbHNlIGlmICh4ID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZBTFNFKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJudW1iZXJcIikge1xuICAgICAgICB0aGlzLnBhY2tGbG9hdCh4KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aGlzLnBhY2tTdHJpbmcoeCk7XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBfaW50ZWdlci5JbnRlZ2VyKSB7XG4gICAgICAgIHRoaXMucGFja0ludGVnZXIoeCk7XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICB0aGlzLnBhY2tMaXN0SGVhZGVyKHgubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5wYWNrKHhbaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB4W2ldKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgU3RydWN0dXJlKSB7XG4gICAgICAgIHRoaXMucGFja1N0cnVjdCh4LnNpZ25hdHVyZSwgeC5maWVsZHMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG5cbiAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHhba2V5c1tpXV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBhY2tNYXBIZWFkZXIoY291bnQpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoeFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucGFja1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgdGhpcy5wYWNrKHhba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkNhbm5vdCBwYWNrIHRoaXMgdmFsdWU6IFwiICsgeCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tTdHJ1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja1N0cnVjdChzaWduYXR1cmUsIGZpZWxkcykge1xuICAgICAgZmllbGRzID0gZmllbGRzIHx8IFtdO1xuICAgICAgdGhpcy5wYWNrU3RydWN0SGVhZGVyKGZpZWxkcy5sZW5ndGgsIHNpZ25hdHVyZSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnBhY2soZmllbGRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0ludGVnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0ludGVnZXIoeCkge1xuICAgICAgdmFyIGhpZ2ggPSB4LmhpZ2gsXG4gICAgICAgICAgbG93ID0geC5sb3c7XG5cbiAgICAgIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHgxMCkgJiYgeC5sZXNzVGhhbigweDgwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODApICYmIHgubGVzc1RoYW4oLTB4MTApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMCkgJiYgeC5sZXNzVGhhbigweDgwMDApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQxNihsb3cpO1xuICAgICAgfSBlbHNlIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHg4MDAwMDAwMCkgJiYgeC5sZXNzVGhhbigweDgwMDAwMDAwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzY0KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihoaWdoKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihsb3cpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrRmxvYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0Zsb2F0KHgpIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoRkxPQVRfNjQpO1xuICAgICAgdGhpcy5fY2gud3JpdGVGbG9hdDY0KHgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJpbmcoeCkge1xuICAgICAgdmFyIGJ5dGVzID0gX3V0ZjgyW1wiZGVmYXVsdFwiXS5lbmNvZGUoeCk7XG4gICAgICB2YXIgc2l6ZSA9IGJ5dGVzLmxlbmd0aDtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfU1RSSU5HIHwgc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR18xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR18zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAxNjc3NzIxNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyA2NTUzNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrTGlzdEhlYWRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrTGlzdEhlYWRlcihzaXplKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX0xJU1QgfCBzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja01hcEhlYWRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrTWFwSGVhZGVyKHNpemUpIHtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfTUFQIHwgc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF8zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAxNjc3NzIxNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyA2NTUzNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tTdHJ1Y3RIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja1N0cnVjdEhlYWRlcihzaXplLCBzaWduYXR1cmUpIHtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfU1RSVUNUIHwgc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2lnbmF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSVUNUXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSVUNUXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBhY2tlcjtcbn0pKCk7XG5cbnZhciBVbnBhY2tlciA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFVucGFja2VyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVbnBhY2tlcik7XG5cbiAgICAvLyBIaWdoZXIgbGV2ZWwgbGF5ZXJzIGNhbiBzcGVjaWZ5IGhvdyB0byBtYXAgc3RydWN0cyB0byBoaWdoZXItbGV2ZWwgb2JqZWN0cy5cbiAgICAvLyBJZiB3ZSByZWNpZXZlIGEgc3RydWN0IHRoYXQgaGFzIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIG1hcHBlcixcbiAgICAvLyB3ZSBzaW1wbHkgcmV0dXJuIGEgU3RydWN0dXJlIG9iamVjdC5cbiAgICB0aGlzLnN0cnVjdE1hcHBlcnMgPSB7fTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhVbnBhY2tlciwgW3tcbiAgICBrZXk6IFwidW5wYWNrTGlzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2tMaXN0KHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHZhbHVlID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB2YWx1ZS5wdXNoKHRoaXMudW5wYWNrKGJ1ZmZlcikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tNYXBcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrTWFwKHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHZhbHVlID0ge307XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy51bnBhY2soYnVmZmVyKTtcbiAgICAgICAgdmFsdWVba2V5XSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja1N0cnVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2tTdHJ1Y3Qoc2l6ZSwgYnVmZmVyKSB7XG4gICAgICB2YXIgc2lnbmF0dXJlID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgICAgdmFyIG1hcHBlciA9IHRoaXMuc3RydWN0TWFwcGVyc1tzaWduYXR1cmVdO1xuICAgICAgaWYgKG1hcHBlcikge1xuICAgICAgICByZXR1cm4gbWFwcGVyKHRoaXMsIGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdmFsdWUgPSBuZXcgU3RydWN0dXJlKHNpZ25hdHVyZSwgW10pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgIHZhbHVlLmZpZWxkcy5wdXNoKHRoaXMudW5wYWNrKGJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFjayhidWZmZXIpIHtcbiAgICAgIHZhciBtYXJrZXIgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgICBpZiAobWFya2VyID09IE5VTEwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBUUlVFKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gRkFMU0UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gRkxPQVRfNjQpIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkRmxvYXQ2NCgpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMCAmJiBtYXJrZXIgPCAxMjgpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKG1hcmtlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA+PSAyNDAgJiYgbWFya2VyIDwgMjU2KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShtYXJrZXIgLSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzgpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGJ1ZmZlci5yZWFkSW50OCgpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8xNikge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkoYnVmZmVyLnJlYWRJbnQxNigpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8zMikge1xuICAgICAgICB2YXIgYiA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzY0KSB7XG4gICAgICAgIHZhciBoaWdoID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgICB2YXIgbG93ID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgICByZXR1cm4gbmV3IF9pbnRlZ2VyLkludGVnZXIobG93LCBoaWdoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR184KSB7XG4gICAgICAgIHJldHVybiBfdXRmODJbXCJkZWZhdWx0XCJdLmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMTYpIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMzIpIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MzIoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfMzIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8zMikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9XG4gICAgICB2YXIgbWFya2VySGlnaCA9IG1hcmtlciAmIDB4RjA7XG4gICAgICB2YXIgbWFya2VyTG93ID0gbWFya2VyICYgMHgwRjtcbiAgICAgIGlmIChtYXJrZXJIaWdoID09IDB4ODApIHtcbiAgICAgICAgcmV0dXJuIF91dGY4MltcImRlZmF1bHRcIl0uZGVjb2RlKGJ1ZmZlciwgbWFya2VyTG93KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweDkwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4QTApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEIwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gcGFja2VkIHZhbHVlIHdpdGggbWFya2VyIFwiICsgbWFya2VyLnRvU3RyaW5nKDE2KSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVucGFja2VyO1xufSkoKTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7XG4gIFBhY2tlcjogUGFja2VyLFxuICBVbnBhY2tlcjogVW5wYWNrZXIsXG4gIFN0cnVjdHVyZTogU3RydWN0dXJlXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIFBvb2wgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQHBhcmFtIGNyZWF0ZSAgYW4gYWxsb2NhdGlvbiBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBuZXcgcmVzb3VyY2UuIEl0J3MgZ2l2ZW5cbiAgICogICAgICAgICAgICAgICAgYSBzaW5nbGUgYXJndW1lbnQsIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHJldHVybiB0aGUgcmVzb3VyY2UgdG9cbiAgICogICAgICAgICAgICAgICAgdGhlIHBvb2wgaWYgaW52b2tlZCwgd2hpY2ggaXMgbWVhbnQgdG8gYmUgY2FsbGVkIG9uIC5kaXNwb3NlXG4gICAqICAgICAgICAgICAgICAgIG9yIC5jbG9zZSBvciB3aGF0ZXZlciBtZWNoYW5pc20gdGhlIHJlc291cmNlIHVzZXMgdG8gZmluYWxpemUuXG4gICAqIEBwYXJhbSBkZXN0cm95IGNhbGxlZCB3aXRoIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGV2aWN0ZWQgZnJvbSB0aGlzIHBvb2xcbiAgICogQHBhcmFtIHZhbGlkYXRlIGNhbGxlZCBhdCB2YXJpb3VzIHRpbWVzIChsaWtlIHdoZW4gYW4gaW5zdGFuY2UgaXMgYWNxdWlyZWQgYW5kXG4gICAqICAgICAgICAgICAgICAgICB3aGVuIGl0IGlzIHJldHVybmVkKS4gSWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgcmVzb3VyY2Ugd2lsbFxuICAgKiAgICAgICAgICAgICAgICAgYmUgZXZpY3RlZFxuICAgKiBAcGFyYW0gbWF4SWRsZSB0aGUgbWF4IG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYWxsb3dlZCBpZGxlIGluIHRoZSBwb29sIGF0XG4gICAqICAgICAgICAgICAgICAgIGFueSB0aW1lLiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgcmVzb3VyY2VzIHdpbGwgYmUgZXZpY3RlZC5cbiAgICovXG5cbiAgZnVuY3Rpb24gUG9vbChjcmVhdGUpIHtcbiAgICB2YXIgZGVzdHJveSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gOiBhcmd1bWVudHNbMV07XG4gICAgdmFyIHZhbGlkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSA6IGFyZ3VtZW50c1syXTtcbiAgICB2YXIgbWF4SWRsZSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMyB8fCBhcmd1bWVudHNbM10gPT09IHVuZGVmaW5lZCA/IDUwIDogYXJndW1lbnRzWzNdO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBvb2wpO1xuXG4gICAgdGhpcy5fY3JlYXRlID0gY3JlYXRlO1xuICAgIHRoaXMuX2Rlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuX3ZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgdGhpcy5fbWF4SWRsZSA9IG1heElkbGU7XG4gICAgdGhpcy5fcG9vbCA9IFtdO1xuICAgIHRoaXMuX3JlbGVhc2UgPSB0aGlzLl9yZWxlYXNlLmJpbmQodGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUG9vbCwgW3tcbiAgICBrZXk6IFwiYWNxdWlyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlKCkge1xuICAgICAgaWYgKHRoaXMuX3Bvb2wubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9vbC5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGUodGhpcy5fcmVsZWFzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9yZWxlYXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlKHJlc291cmNlKSB7XG4gICAgICBpZiAodGhpcy5fcG9vbC5sZW5ndGggPj0gdGhpcy5fbWF4SWRsZSB8fCAhdGhpcy5fdmFsaWRhdGUocmVzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kocmVzb3VyY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcG9vbC5wdXNoKHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUG9vbDtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0ge1xuICBQb29sOiBQb29sXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9yZWNvcmQgPSByZXF1aXJlKFwiLi4vcmVjb3JkXCIpO1xuXG4vKipcbiAqIEhhbmRsZXMgYSBSVU4vUFVMTF9BTEwsIG9yIFJVTi9ESVNDQVJEX0FMTCByZXF1ZXN0cywgbWFwcyB0aGUgcmVzcG9uc2VzXG4gKiBpbiBhIHdheSB0aGF0IGEgdXNlci1wcm92aWRlZCBvYnNlcnZlciBjYW4gc2VlIHRoZXNlIGFzIGEgY2xlYW4gU3RyZWFtXG4gKiBvZiByZWNvcmRzLlxuICogVGhpcyBjbGFzcyB3aWxsIHF1ZXVlIHVwIGluY29taW5nIG1lc3NhZ2VzIHVudGlsIGEgdXNlci1wcm92aWRlZCBvYnNlcnZlclxuICogZm9yIHRoZSBpbmNvbWluZyBzdHJlYW0gaXMgcmVnaXN0ZXJlZC4gVGh1cywgd2Uga2VlcCBmaWVsZHMgYXJvdW5kXG4gKiBmb3IgdHJhY2tpbmcgaGVhZC9yZWNvcmRzL3RhaWwuIFRoZXNlIGFyZSBvbmx5IHVzZWQgaWYgdGhlcmUgaXMgbm9cbiAqIG9ic2VydmVyIHJlZ2lzdGVyZWQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgU3RyZWFtT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFN0cmVhbU9ic2VydmVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdHJlYW1PYnNlcnZlcik7XG5cbiAgICB0aGlzLl9maWVsZEtleXMgPSBudWxsO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLl9xdWV1ZWRSZWNvcmRzID0gW107XG4gICAgdGhpcy5fdGFpbCA9IG51bGw7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgYmUgY2FsbGVkIG9uIGV2ZXJ5IHJlY29yZCB0aGF0IGNvbWVzIGluIGFuZCB0cmFuc2Zvcm0gYSByYXcgcmVjb3JkXG4gICAqIHRvIGEgT2JqZWN0LiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdHJhbnNmb3JtZWQgcmVjb3JkXG4gICAqIHRvIGl0J3Mgb25OZXh0IG1ldGhvZCwgb3RoZXJ3aXNlLCBwdXNoIHRvIHJlY29yZCBxdWUuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHJhd1JlY29yZCAtIEFuIGFycmF5IHdpdGggdGhlIHJhdyByZWNvcmRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0cmVhbU9ic2VydmVyLCBbe1xuICAgIGtleTogXCJvbk5leHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25OZXh0KHJhd1JlY29yZCkge1xuICAgICAgdmFyIHJlY29yZCA9IG5ldyBfcmVjb3JkLlJlY29yZCh0aGlzLl9maWVsZEtleXMsIHJhd1JlY29yZCwgdGhpcy5fZmllbGRMb29rdXApO1xuICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9uTmV4dChyZWNvcmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVldWVkUmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uQ29tcGxldGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZEtleXMgPT09IG51bGwpIHtcbiAgICAgICAgLy8gU3RyZWFtIGhlYWRlciwgYnVpbGQgYSBuYW1lLT5pbmRleCBmaWVsZCBsb29rdXAgdGFibGVcbiAgICAgICAgLy8gdG8gYmUgdXNlZCBieSByZWNvcmRzLiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIGl0XG4gICAgICAgIC8vIGZhc3RlciB0byBsb29rIHVwIGZpZWxkcyBpbiBhIHJlY29yZCBieSBuYW1lLCByYXRoZXIgdGhhbiBieSBpbmRleC5cbiAgICAgICAgLy8gU2luY2UgdGhlIHJlY29yZHMgd2UgZ2V0IGJhY2sgdmlhIEJvbHQgYXJlIGp1c3QgYXJyYXlzIG9mIHZhbHVlcy5cbiAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gW107XG4gICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwID0ge307XG4gICAgICAgIGlmIChtZXRhLmZpZWxkcyAmJiBtZXRhLmZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gbWV0YS5maWVsZHM7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZmllbGRMb29rdXBbbWV0YS5maWVsZHNbaV1dID0gaTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVuZCBvZiBzdHJlYW1cbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25Db21wbGV0ZWQobWV0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fdGFpbCA9IG1ldGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBlcnJvcnMuXG4gICAgICogSWYgdXNlci1wcm92aWRlZCBvYnNlcnZlciBpcyBwcmVzZW50LCBwYXNzIHRoZSBlcnJvclxuICAgICAqIHRvIGl0J3Mgb25FcnJvciBtZXRob2QsIG90aGVyd2lzZSBzZXQgaW5zdGFuY2UgdmFyaWFibGUgX2Vycm9yLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlcnJvciAtIEFuIGVycm9yIG9iamVjdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcIm9uRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKHRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9IGVycm9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZSB0byBldmVudHMgd2l0aCBwcm92aWRlZCBvYnNlcnZlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JzZXJ2ZXIgLSBPYnNlcnZlciBvYmplY3RcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlY29yZDogT2JqZWN0KX0gb2JzZXJ2ZXIub25OZXh0IC0gSGFuZGxlIHJlY29yZHMsIG9uZSBieSBvbmUuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihtZXRhZGF0YTogT2JqZWN0KX0gb2JzZXJ2ZXIub25Db21wbGV0ZSAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IE9iamVjdCl9IG9ic2VydmVyLm9uRXJyb3IgLSBIYW5kbGUgZXJyb3JzLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInN1YnNjcmliZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9lcnJvcikge1xuICAgICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3F1ZXVlZFJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9xdWV1ZWRSZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25OZXh0KF9xdWV1ZWRSZWNvcmRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3RhaWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQodGhpcy5fdGFpbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYnNlcnZlciA9IG9ic2VydmVyO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdHJlYW1PYnNlcnZlcjtcbn0pKCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU3RyZWFtT2JzZXJ2ZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3Jvc3MtcGxhdGZvcm0gVVRGLTggZW5jb2RlciBhbmQgZGVjb2RlciB0aGF0IHdvcmtzXG4vLyB3aXRoIHRoZSBCdWZmZXIgQVBJIGRlZmluZWQgaW4gYnVmLmpzXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfYnVmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2J1Zik7XG5cbnZhciBfc3RyaW5nX2RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgcGxhdGZvcm1PYmogPSB7fTtcblxudHJ5IHtcbiAgKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlzICdidWZmZXInIGlzIG5vdCBhdmFpbGFibGVcbiAgICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gICAgdmFyIGRlY29kZXIgPSBuZXcgX3N0cmluZ19kZWNvZGVyLlN0cmluZ0RlY29kZXIoJ3V0ZjgnKTtcbiAgICB2YXIgbm9kZSA9IHJlcXVpcmUoXCJidWZmZXJcIik7XG5cbiAgICBwbGF0Zm9ybU9iaiA9IHtcbiAgICAgIFwiZW5jb2RlXCI6IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBfYnVmMlsnZGVmYXVsdCddLk5vZGVCdWZmZXIobmV3IG5vZGUuQnVmZmVyKHN0ciwgXCJVVEYtOFwiKSk7XG4gICAgICB9LFxuICAgICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmMlsnZGVmYXVsdCddLk5vZGVCdWZmZXIpIHtcbiAgICAgICAgICB2YXIgc3RhcnQgPSBidWZmZXIucG9zaXRpb24sXG4gICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoO1xuICAgICAgICAgIGJ1ZmZlci5wb3NpdGlvbiA9IE1hdGgubWluKGVuZCwgYnVmZmVyLmxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIGJ1ZmZlci5fYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jywgc3RhcnQsIGVuZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1ZjJbJ2RlZmF1bHQnXS5Db21iaW5lZEJ1ZmZlcikge1xuICAgICAgICAgIHZhciBvdXQgPSBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihidWZmZXIsIGxlbmd0aCwgZnVuY3Rpb24gKHBhcnRCdWZmZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLndyaXRlKHBhcnRCdWZmZXIuX2J1ZmZlcik7XG4gICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZXIuZW5kKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkRvbid0IGtub3cgaG93IHRvIGRlY29kZSBzdHJpbmdzIGZyb20gYFwiICsgYnVmZmVyICsgXCJgLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0pKCk7XG59IGNhdGNoIChlKSB7XG4gIHZhciB0ZXh0RW5jb2Rpbmc7XG5cbiAgKGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIE5vdCBvbiBOb2RlSlMsIGFkZCBzaGltIGZvciBXZWJBUEkgVGV4dEVuY29kZXIvVGV4dERlY29kZXJcbiAgICB0ZXh0RW5jb2RpbmcgPSByZXF1aXJlKCcuLi8uLi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2luZGV4Jyk7XG5cbiAgICB2YXIgZW5jb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dEVuY29kZXIoXCJ1dGYtOFwiKTtcbiAgICB2YXIgZGVjb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcblxuICAgIHBsYXRmb3JtT2JqID0ge1xuICAgICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICAgICAgICByZXR1cm4gbmV3IF9idWYyWydkZWZhdWx0J10uSGVhcEJ1ZmZlcihlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlcik7XG4gICAgICB9LFxuICAgICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmMlsnZGVmYXVsdCddLkhlYXBCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnJlYWRWaWV3KE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmxlbmd0aCAtIGJ1ZmZlci5wb3NpdGlvbikpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWNvZGluZyBjb21iaW5lZCBidWZmZXIgaXMgY29tcGxpY2F0ZWQuIEZvciBzaW1wbGljaXR5LCBmb3Igbm93LFxuICAgICAgICAgIC8vIHdlIHNpbXBseSBjb3B5IHRoZSBjb21iaW5lZCBidWZmZXIgaW50byBhIHJlZ3VsYXIgYnVmZmVyIGFuZCBkZWNvZGUgdGhhdC5cbiAgICAgICAgICB2YXIgdG1wQnVmID0gX2J1ZjJbJ2RlZmF1bHQnXS5hbGxvYyhsZW5ndGgpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRtcEJ1Zi53cml0ZVVJbnQ4KGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRtcEJ1Zi5yZXNldCgpO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0bXBCdWYucmVhZFZpZXcobGVuZ3RoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9KSgpO1xufVxuXG52YXIgc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIgPSBmdW5jdGlvbiBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihjb21iaW5lZEJ1ZmZlcnMsIGxlbmd0aCwgZGVjb2RlRm4sIGVuZEZuKSB7XG4gIHZhciByZW1haW5pbmdCeXRlc1RvUmVhZCA9IGxlbmd0aDtcbiAgdmFyIHBvc2l0aW9uID0gY29tYmluZWRCdWZmZXJzLnBvc2l0aW9uO1xuICBjb21iaW5lZEJ1ZmZlcnMuX3VwZGF0ZVBvcyhNYXRoLm1pbihsZW5ndGgsIGNvbWJpbmVkQnVmZmVycy5sZW5ndGggLSBwb3NpdGlvbikpO1xuICAvLyBSZWR1Y2UgQ29tYmluZWRCdWZmZXJzIHRvIGEgZGVjb2RlZCBzdHJpbmdcbiAgdmFyIG91dCA9IGNvbWJpbmVkQnVmZmVycy5fYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24gKGxhc3QsIHBhcnRCdWZmZXIpIHtcbiAgICBpZiAocmVtYWluaW5nQnl0ZXNUb1JlYWQgPD0gMCkge1xuICAgICAgcmV0dXJuIGxhc3Q7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+PSBwYXJ0QnVmZmVyLmxlbmd0aCkge1xuICAgICAgcG9zaXRpb24gLT0gcGFydEJ1ZmZlci5sZW5ndGg7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhwb3NpdGlvbiAtIHBhcnRCdWZmZXIucG9zaXRpb24pO1xuICAgICAgdmFyIGJ5dGVzVG9SZWFkID0gTWF0aC5taW4ocGFydEJ1ZmZlci5sZW5ndGggLSBwb3NpdGlvbiwgcmVtYWluaW5nQnl0ZXNUb1JlYWQpO1xuICAgICAgdmFyIGxhc3RTbGljZSA9IHBhcnRCdWZmZXIucmVhZFNsaWNlKGJ5dGVzVG9SZWFkKTtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhieXRlc1RvUmVhZCk7XG4gICAgICByZW1haW5pbmdCeXRlc1RvUmVhZCA9IE1hdGgubWF4KHJlbWFpbmluZ0J5dGVzVG9SZWFkIC0gbGFzdFNsaWNlLmxlbmd0aCwgMCk7XG4gICAgICBwb3NpdGlvbiA9IDA7XG4gICAgICByZXR1cm4gbGFzdCArIGRlY29kZUZuKGxhc3RTbGljZSk7XG4gICAgfVxuICB9LCAnJyk7XG4gIHJldHVybiBvdXQgKyBlbmRGbigpO1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gcGxhdGZvcm1PYmo7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpIHtcbiAgdmFyIGxvb2t1cCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGlkeCkge1xuICAgIGxvb2t1cFtuYW1lXSA9IGlkeDtcbiAgfSk7XG4gIHJldHVybiBsb29rdXA7XG59XG5cbi8qKlxuICogUmVjb3JkcyBtYWtlIHVwIHRoZSBjb250ZW50cyBvZiB0aGUge0BsaW5rIFJlc3VsdH0sIGFuZCBpcyBob3cgeW91IGFjY2Vzc1xuICogdGhlIG91dHB1dCBvZiBhIHN0YXRlbWVudC4gQSBzaW1wbGUgc3RhdGVtZW50IG1pZ2h0IHlpZWxkIGEgcmVzdWx0IHN0cmVhbVxuICogd2l0aCBhIHNpbmdsZSByZWNvcmQsIGZvciBpbnN0YW5jZTpcbiAqXG4gKiAgICAgTUFUQ0ggKHU6VXNlcikgUkVUVVJOIHUubmFtZSwgdS5hZ2VcbiAqXG4gKiBUaGlzIHJldHVybnMgYSBzdHJlYW0gb2YgcmVjb3JkcyB3aXRoIHR3byBmaWVsZHMsIG5hbWVkIGB1Lm5hbWVgIGFuZCBgdS5hZ2VgLFxuICogZWFjaCByZWNvcmQgcmVwcmVzZW50cyBvbmUgdXNlciBmb3VuZCBieSB0aGUgc3RhdGVtZW50IGFib3ZlLiBZb3UgY2FuIGFjY2Vzc1xuICogdGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGVpdGhlciBieSBuYW1lOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KFwibi5uYW1lXCIpXG4gKlxuICogT3IgYnkgaXQncyBwb3NpdGlvbjpcbiAqXG4gKiAgICAgcmVjb3JkLmdldCgwKVxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cblxudmFyIFJlY29yZCA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVjb3JkIG9iamVjdC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5cyBBbiBhcnJheSBvZiBmaWVsZCBrZXlzLCBpbiB0aGUgb3JkZXIgdGhlIGZpZWxkcyBhcHBlYXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY29yZFxuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkIHZhbHVlc1xuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRMb29rdXAgQW4gb2JqZWN0IG9mIGZpZWxkTmFtZSAtPiB2YWx1ZSBpbmRleCwgdXNlZCB0byBtYXBcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgbmFtZXMgdG8gdmFsdWVzLiBJZiB0aGlzIGlzIG51bGwsIG9uZSB3aWxsIGJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC5cbiAgICovXG5cbiAgZnVuY3Rpb24gUmVjb3JkKGtleXMsIGZpZWxkcykge1xuICAgIHZhciBmaWVsZExvb2t1cCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBhcmd1bWVudHNbMl07XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVjb3JkKTtcblxuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5fZmllbGRMb29rdXAgPSBmaWVsZExvb2t1cCB8fCBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gZm9yIGVhY2ggZmllbGQgaW4gdGhpcyByZWNvcmQuIFRoZSBmdW5jdGlvblxuICAgKiB3aWxsIGdldCB0aHJlZSBhcmd1bWVudHMgLSB0aGUgdmFsdWUsIHRoZSBrZXkgYW5kIHRoaXMgcmVjb3JkLCBpbiB0aGF0XG4gICAqIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdmlzaXRvclxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoUmVjb3JkLCBbe1xuICAgIGtleTogXCJmb3JFYWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvckVhY2godmlzaXRvcikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmlzaXRvcih0aGlzLl9maWVsZHNbaV0sIHRoaXMua2V5c1tpXSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgdmFsdWUgZnJvbSB0aGlzIHJlY29yZCwgZWl0aGVyIGJ5IGluZGV4IG9yIGJ5IGZpZWxkIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0ga2V5IEZpZWxkIGtleSwgb3IgdGhlIGluZGV4IG9mIHRoZSBmaWVsZC5cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgdmFyIGluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKCEodHlwZW9mIGtleSA9PT0gXCJudW1iZXJcIikpIHtcbiAgICAgICAgaW5kZXggPSB0aGlzLl9maWVsZExvb2t1cFtrZXldO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGgga2V5ICdcIiArIGtleSArIFwiJywgYXZhaWxhYmxlIGtleSBhcmU6IFtcIiArIHRoaXMua2V5cyArIFwiXS5cIik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4ID0ga2V5O1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPiB0aGlzLl9maWVsZHMubGVuZ3RoIC0gMSB8fCBpbmRleCA8IDApIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBpbmRleCAnXCIgKyBpbmRleCArIFwiJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgKyBcImFuZCBtYWtlIHN1cmUgeW91ciBzdGF0ZW1lbnQgcmV0dXJucyByZWNvcmRzIGluIHRoZSBzaGFwZSB5b3UgbWVhbnQgaXQgdG8uXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzW2luZGV4XTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVjb3JkO1xufSkoKTtcblxuZXhwb3J0cy5SZWNvcmQgPSBSZWNvcmQ7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuL2ludGVnZXInKTtcblxuLyoqXG4gICogQSBSZXN1bHRTdW1tYXJ5IGluc3RhbmNlIGNvbnRhaW5zIHN0cnVjdHVyZWQgbWV0YWRhdGEgZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxudmFyIFJlc3VsdFN1bW1hcnkgPSAoZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSBUaGUgc3RhdGVtZW50IHRoaXMgc3VtbWFyeSBpcyBmb3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXRhZGF0YSAtIFN0YXRlbWVudCBtZXRhZGF0YVxuICAgKi9cblxuICBmdW5jdGlvbiBSZXN1bHRTdW1tYXJ5KHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGEpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVzdWx0U3VtbWFyeSk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHsgdGV4dDogc3RhdGVtZW50LCBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIH07XG4gICAgdGhpcy5zdGF0ZW1lbnRUeXBlID0gbWV0YWRhdGEudHlwZTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MgPSBuZXcgU3RhdGVtZW50U3RhdGlzdGljcyhtZXRhZGF0YS5zdGF0cyB8fCB7fSk7XG4gICAgdGhpcy5wbGFuID0gbWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFBsYW4obWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZSA9IG1ldGFkYXRhLnByb2ZpbGUgPyBuZXcgUHJvZmlsZWRQbGFuKG1ldGFkYXRhLnByb2ZpbGUpIDogZmFsc2U7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5fYnVpbGROb3RpZmljYXRpb25zKG1ldGFkYXRhLm5vdGlmaWNhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBFWFBMQUlOLlxuICAgICogQGFjY2VzcyBwdWJsaWNcbiAgICAqL1xuXG4gIF9jcmVhdGVDbGFzcyhSZXN1bHRTdW1tYXJ5LCBbe1xuICAgIGtleTogJ19idWlsZE5vdGlmaWNhdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYnVpbGROb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9ucykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBOb3RpZmljYXRpb24obik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcGxhblxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdoYXNQbGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUGxhbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYW4gaW5zdGFuY2VvZiBQbGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgc3VtbWFyeSBoYXMgYSBwcm9maWxlXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2hhc1Byb2ZpbGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNQcm9maWxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZSBpbnN0YW5jZW9mIFByb2ZpbGVkUGxhbjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVzdWx0U3VtbWFyeTtcbn0pKCk7XG5cbnZhciBQbGFuID1cbi8qKlxuICogQ3JlYXRlIGEgUGxhbiBpbnN0YW5jZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gcGxhbiAtIE9iamVjdCB3aXRoIHBsYW4gZGF0YVxuICovXG5mdW5jdGlvbiBQbGFuKHBsYW4pIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcGxhbi5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwbGFuLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHBsYW4uYXJncztcbiAgdGhpcy5jaGlsZHJlbiA9IHBsYW4uY2hpbGRyZW4gPyBwbGFuLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gbmV3IFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBQUk9GSUxFLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG47XG5cbnZhciBQcm9maWxlZFBsYW4gPVxuLyoqXG4gKiBDcmVhdGUgYSBQcm9maWxlZFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHByb2ZpbGUgLSBPYmplY3Qgd2l0aCBwcm9maWxlIGRhdGFcbiAqL1xuZnVuY3Rpb24gUHJvZmlsZWRQbGFuKHByb2ZpbGUpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb2ZpbGVkUGxhbik7XG5cbiAgdGhpcy5vcGVyYXRvclR5cGUgPSBwcm9maWxlLm9wZXJhdG9yVHlwZTtcbiAgdGhpcy5pZGVudGlmaWVycyA9IHByb2ZpbGUuaWRlbnRpZmllcnM7XG4gIHRoaXMuYXJndW1lbnRzID0gcHJvZmlsZS5hcmdzO1xuICB0aGlzLmRiSGl0cyA9IHByb2ZpbGUuYXJncy5EYkhpdHMudG9JbnQoKTtcbiAgdGhpcy5yb3dzID0gcHJvZmlsZS5hcmdzLlJvd3MudG9JbnQoKTtcbiAgdGhpcy5jaGlsZHJlbiA9IHByb2ZpbGUuY2hpbGRyZW4gPyBwcm9maWxlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gbmV3IFByb2ZpbGVkUGxhbihjaGlsZCk7XG4gIH0pIDogW107XG59XG5cbi8qKlxuICAqIEdldCBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBmb3IgYSB7UmVzdWx0fS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuO1xuXG52YXIgU3RhdGVtZW50U3RhdGlzdGljcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBTdHJ1Y3R1cml6ZSB0aGUgc3RhdGlzdGljc1xuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRpc3RpY3MgLSBSZXN1bHQgc3RhdGlzdGljc1xuICAgKi9cblxuICBmdW5jdGlvbiBTdGF0ZW1lbnRTdGF0aXN0aWNzKHN0YXRpc3RpY3MpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YXRlbWVudFN0YXRpc3RpY3MpO1xuXG4gICAgdGhpcy5fc3RhdHMgPSB7XG4gICAgICBub2Rlc0NyZWF0ZWQ6IDAsXG4gICAgICBub2Rlc0RlbGV0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzQ3JlYXRlZDogMCxcbiAgICAgIHJlbGF0aW9uc2hpcHNEZWxldGVkOiAwLFxuICAgICAgcHJvcGVydGllc1NldDogMCxcbiAgICAgIGxhYmVsc0FkZGVkOiAwLFxuICAgICAgbGFiZWxzUmVtb3ZlZDogMCxcbiAgICAgIGluZGV4ZXNBZGRlZDogMCxcbiAgICAgIGluZGV4ZXNSZW1vdmVkOiAwLFxuICAgICAgY29uc3RyYWludHNBZGRlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzUmVtb3ZlZDogMFxuICAgIH07XG4gICAgT2JqZWN0LmtleXMoc3RhdGlzdGljcykuZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgIC8vVG8gY2FtZWxDYXNlXG4gICAgICBfdGhpcy5fc3RhdHNbaW5kZXgucmVwbGFjZSgvKFxcLVxcdykvZywgZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIG1bMV0udG9VcHBlckNhc2UoKTtcbiAgICAgIH0pXSA9ICgwLCBfaW50ZWdlci5pc0ludCkoc3RhdGlzdGljc1tpbmRleF0pID8gc3RhdGlzdGljc1tpbmRleF0udG9JbnQoKSA6IHN0YXRpc3RpY3NbaW5kZXhdO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAgKiBDbGFzcyBmb3IgQ3lwaGVyIG5vdGlmaWNhdGlvbnNcbiAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgKi9cblxuICAvKipcbiAgICogRGlkIHRoZSBkYXRhYmFzZSBnZXQgdXBkYXRlZD9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFN0YXRlbWVudFN0YXRpc3RpY3MsIFt7XG4gICAga2V5OiAnY29udGFpbnNVcGRhdGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNVcGRhdGVzKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9zdGF0cykucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBsYXN0ICsgX3RoaXMyLl9zdGF0c1tjdXJyZW50XTtcbiAgICAgIH0sIDApID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGNyZWF0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0NyZWF0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ25vZGVzRGVsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vZGVzRGVsZXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5ub2Rlc0RlbGV0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiByZWxhdGlvbnNoaXBzIGNyZWF0ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxhdGlvbnNoaXBzQ3JlYXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHNDcmVhdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3JlbGF0aW9uc2hpcHNEZWxldGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVsYXRpb25zaGlwc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMucmVsYXRpb25zaGlwc0RlbGV0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBwcm9wZXJ0aWVzIHNldC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ3Byb3BlcnRpZXNTZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwcm9wZXJ0aWVzU2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnByb3BlcnRpZXNTZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBsYWJlbHMgYWRkZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhYmVsc0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGFiZWxzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyBhZGRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2luZGV4ZXNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluZGV4ZXNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzQWRkZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBpbmRleGVzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluZGV4ZXNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmluZGV4ZXNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyBhZGRlZC5cbiAgICAgKi9cbiAgfSwge1xuICAgIGtleTogJ2NvbnN0cmFpbnRzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdHJhaW50c0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzQWRkZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBjb250cmFpbnRzIHJlbW92ZWQuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdjb25zdHJhaW50c1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdHJhaW50c1JlbW92ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuY29uc3RyYWludHNSZW1vdmVkO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdGF0ZW1lbnRTdGF0aXN0aWNzO1xufSkoKTtcblxudmFyIE5vdGlmaWNhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBOb3RpZmljYXRpb24gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBub3RpZmljYXRpb24gLSBPYmplY3Qgd2l0aCBub3RpZmljYXRpb24gZGF0YVxuICAgKi9cblxuICBmdW5jdGlvbiBOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5vdGlmaWNhdGlvbik7XG5cbiAgICB0aGlzLmNvZGUgPSBub3RpZmljYXRpb24uY29kZTtcbiAgICB0aGlzLnRpdGxlID0gbm90aWZpY2F0aW9uLnRpdGxlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBub3RpZmljYXRpb24uZGVzY3JpcHRpb247XG4gICAgdGhpcy5zZXZlcml0eSA9IG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgICB0aGlzLnBvc2l0aW9uID0gTm90aWZpY2F0aW9uLl9jb25zdHJ1Y3RQb3NpdGlvbihub3RpZmljYXRpb24ucG9zaXRpb24pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE5vdGlmaWNhdGlvbiwgbnVsbCwgW3tcbiAgICBrZXk6ICdfY29uc3RydWN0UG9zaXRpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY29uc3RydWN0UG9zaXRpb24ocG9zKSB7XG4gICAgICBpZiAoIXBvcykge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQudG9JbnQoKSxcbiAgICAgICAgbGluZTogcG9zLmxpbmUudG9JbnQoKSxcbiAgICAgICAgY29sdW1uOiBwb3MuY29sdW1uLnRvSW50KClcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE5vdGlmaWNhdGlvbjtcbn0pKCk7XG5cbnZhciBzdGF0ZW1lbnRUeXBlID0ge1xuICBSRUFEX09OTFk6ICdyJyxcbiAgUkVBRF9XUklURTogJ3J3JyxcbiAgV1JJVEVfT05MWTogJ3cnLFxuICBTQ0hFTUFfV1JJVEU6ICdzJ1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBSZXN1bHRTdW1tYXJ5OiBSZXN1bHRTdW1tYXJ5LFxuICBzdGF0ZW1lbnRUeXBlOiBzdGF0ZW1lbnRUeXBlXG59O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX3Jlc3VsdFN1bW1hcnkgPSByZXF1aXJlKCcuL3Jlc3VsdC1zdW1tYXJ5Jyk7XG5cbi8vIEVuc3VyZSBQcm9taXNlIGlzIGF2YWlsYWJsZVxuXG52YXIgX2V4dGVybmFsRXM2UHJvbWlzZSA9IHJlcXVpcmUoJy4uL2V4dGVybmFsL2VzNi1wcm9taXNlJyk7XG5cbigwLCBfZXh0ZXJuYWxFczZQcm9taXNlLnBvbHlmaWxsKSgpO1xuXG4vKipcbiAgKiBBIHN0cmVhbSBvZiB7QGxpbmsgUmVjb3JkfSByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHN0YXRlbWVudC5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG52YXIgUmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEluamVjdCB0aGUgb2JzZXJ2ZXIgdG8gYmUgdXNlZC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBzdHJlYW1PYnNlcnZlclxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICovXG5cbiAgZnVuY3Rpb24gUmVzdWx0KHN0cmVhbU9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVzdWx0KTtcblxuICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyID0gc3RyZWFtT2JzZXJ2ZXI7XG4gICAgdGhpcy5fcCA9IG51bGw7XG4gICAgdGhpcy5fc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzIHx8IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbmQgcmV0dXJuIG5ldyBQcm9taXNlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IG5ldyBQcm9taXNlLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFJlc3VsdCwgW3tcbiAgICBrZXk6ICdfY3JlYXRlUHJvbWlzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVQcm9taXNlKCkge1xuICAgICAgaWYgKHRoaXMuX3ApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5fcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICAgICAgdmFyIG9ic2VydmVyID0ge1xuICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gb25OZXh0KHJlY29yZCkge1xuICAgICAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoc3VtbWFyeSkge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlY29yZHM6IHJlY29yZHMsIHN1bW1hcnk6IHN1bW1hcnkgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiBmdW5jdGlvbiBvbkVycm9yKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FpdHMgZm9yIGFsbCByZXN1bHRzIGFuZCBjYWxscyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpdGggdGhlIHJlc3VsdHMuXG4gICAgICogQ2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIHtAbGluayAjc3Vic2NyaWJlfSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVzdWx0OiB7cmVjb3JkczpBcnJheTxSZWNvcmQ+fSl9IG9uRnVsZmlsbGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gZmluaXNoZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvblJlamVjdGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gZXJyb3JzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICd0aGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3AudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2F0Y2ggZXJyb3JzIHdoZW4gdXNpbmcgcHJvbWlzZXMuXG4gICAgICogQ2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgc3Vic2NyaWJlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2F0Y2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2F0Y2gob25SZWplY3RlZCkge1xuICAgICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3BbJ2NhdGNoJ10ob25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyZWFtIHJlY29yZHMgdG8gb2JzZXJ2ZXIgYXMgdGhleSBjb21lIGluLCB0aGlzIGlzIGEgbW9yZSBlZmZpY2llbnQgbWV0aG9kXG4gICAgICogb2YgaGFuZGxpbmcgdGhlIHJlc3VsdHMsIGFuZCBhbGxvd3MgeW91IHRvIGhhbmRsZSBhcmJpdHJhcmlseSBsYXJnZSByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IFJlY29yZCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGVkIC0gSGFuZGxlIHN0cmVhbSB0YWlsLCB0aGUgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJzY3JpYmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBvbkNvbXBsZXRlZE9yaWdpbmFsID0gb2JzZXJ2ZXIub25Db21wbGV0ZWQ7XG4gICAgICB2YXIgb25Db21wbGV0ZWRXcmFwcGVyID0gZnVuY3Rpb24gb25Db21wbGV0ZWRXcmFwcGVyKG1ldGFkYXRhKSB7XG4gICAgICAgIHZhciBzdW0gPSBuZXcgX3Jlc3VsdFN1bW1hcnkuUmVzdWx0U3VtbWFyeShfdGhpcy5fc3RhdGVtZW50LCBfdGhpcy5fcGFyYW1ldGVycywgbWV0YWRhdGEpO1xuICAgICAgICBvbkNvbXBsZXRlZE9yaWdpbmFsLmNhbGwob2JzZXJ2ZXIsIHN1bSk7XG4gICAgICB9O1xuICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvbkNvbXBsZXRlZFdyYXBwZXI7XG4gICAgICBvYnNlcnZlci5vbkVycm9yID0gb2JzZXJ2ZXIub25FcnJvciB8fCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBwcm9jZXNzaW5nIHJlc3VsdDogXCIgKyBlcnIpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc3VsdDtcbn0pKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFJlc3VsdDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxudmFyIF90cmFuc2FjdGlvbiA9IHJlcXVpcmUoJy4vdHJhbnNhY3Rpb24nKTtcblxudmFyIF90cmFuc2FjdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90cmFuc2FjdGlvbik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi9lcnJvclwiKTtcblxuLyoqXG4gICogQSBTZXNzaW9uIGluc3RhbmNlIGlzIHVzZWQgZm9yIGhhbmRsaW5nIHRoZSBjb25uZWN0aW9uIGFuZFxuICAqIHNlbmRpbmcgc3RhdGVtZW50cyB0aHJvdWdoIHRoZSBjb25uZWN0aW9uLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cbnZhciBTZXNzaW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm4gLSBBIGNvbm5lY3Rpb24gdG8gdXNlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gb25DbG9zZSAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBjb25uZWN0aW9uIGNsb3NlXG4gICAqL1xuXG4gIGZ1bmN0aW9uIFNlc3Npb24oY29ubiwgb25DbG9zZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTZXNzaW9uKTtcblxuICAgIHRoaXMuX2Nvbm4gPSBjb25uO1xuICAgIHRoaXMuX29uQ2xvc2UgPSBvbkNsb3NlO1xuICAgIHRoaXMuX2hhc1R4ID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbWVudCBhbmQgcGFyYW1ldGVycyBhcyBzZXBhcmF0ZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgKi9cblxuICBfY3JlYXRlQ2xhc3MoU2Vzc2lvbiwgW3tcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50KSB7XG4gICAgICB2YXIgcGFyYW1ldGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzFdO1xuXG4gICAgICBpZiAodHlwZW9mIHN0YXRlbWVudCA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICAgIH1cbiAgICAgIHZhciBzdHJlYW1PYnNlcnZlciA9IG5ldyBfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcjJbJ2RlZmF1bHQnXSgpO1xuICAgICAgaWYgKCF0aGlzLl9oYXNUeCkge1xuICAgICAgICB0aGlzLl9jb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgdGhpcy5fY29ubi5wdWxsQWxsKHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgdGhpcy5fY29ubi5zeW5jKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW1PYnNlcnZlci5vbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU3RhdGVtZW50cyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IG9uIGEgXCIgKyBcInNlc3Npb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSBcIiArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWdpbiBhIG5ldyB0cmFuc2FjdGlvbiBpbiB0aGlzIHNlc3Npb24uIEEgc2Vzc2lvbiBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0cmFuc2FjdGlvbiBydW5uaW5nIGF0IGEgdGltZSwgaWYgeW91XG4gICAgICogd2FudCB0byBydW4gbXVsdGlwbGUgY29uY3VycmVudCB0cmFuc2FjdGlvbnMsIHlvdSBzaG91bGQgdXNlIG11bHRpcGxlIGNvbmN1cnJlbnQgc2Vzc2lvbnMuXG4gICAgICpcbiAgICAgKiBXaGlsZSBhIHRyYW5zYWN0aW9uIGlzIG9wZW4gdGhlIHNlc3Npb24gY2Fubm90IGJlIHVzZWQgdG8gcnVuIHN0YXRlbWVudHMgb3V0c2lkZSB0aGUgdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IC0gTmV3IFRyYW5zYWN0aW9uXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdiZWdpblRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW5UcmFuc2FjdGlvbigpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLl9oYXNUeCkge1xuICAgICAgICB0aHJvdyBuZXcgX2Vycm9yLm5ld0Vycm9yKFwiWW91IGNhbm5vdCBiZWdpbiBhIHRyYW5zYWN0aW9uIG9uIGEgc2Vzc2lvbiB3aXRoIGFuIFwiICsgXCJvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSB0cmFuc2FjdGlvbiBvciB1c2UgYSBcIiArIFwiZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9oYXNUeCA9IHRydWU7XG4gICAgICByZXR1cm4gbmV3IF90cmFuc2FjdGlvbjJbJ2RlZmF1bHQnXSh0aGlzLl9jb25uLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLl9oYXNUeCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgdGhpcyBzZXNzaW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2IgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkXG4gICAgICogQHJldHVyblxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICBpZiAodGhpcy5fb25DbG9zZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX29uQ2xvc2UoY2IpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX29uQ2xvc2UgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTZXNzaW9uO1xufSkoKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gU2Vzc2lvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX2ludGVybmFsU3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZXJuYWxTdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHJhbnNhY3Rpb24gaW4gdGhlIE5lbzRqIGRhdGFiYXNlLlxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cblxudmFyIFRyYW5zYWN0aW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm4gLSBBIGNvbm5lY3Rpb24gdG8gdXNlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gb25DbG9zZSAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvciByb2xsZWQgYmFjay5cbiAgICovXG5cbiAgZnVuY3Rpb24gVHJhbnNhY3Rpb24oY29ubiwgb25DbG9zZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUcmFuc2FjdGlvbik7XG5cbiAgICB0aGlzLl9jb25uID0gY29ubjtcbiAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyk7XG4gICAgdGhpcy5fY29ubi5ydW4oXCJCRUdJTlwiLCB7fSwgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgIHRoaXMuX2Nvbm4uZGlzY2FyZEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkFDVElWRTtcbiAgICB0aGlzLl9vbkNsb3NlID0gb25DbG9zZTtcbiAgfVxuXG4gIC8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbSBlbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSAtIE5ldyBSZXN1bHRcbiAgICovXG5cbiAgX2NyZWF0ZUNsYXNzKFRyYW5zYWN0aW9uLCBbe1xuICAgIGtleTogJ3J1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RhdGVtZW50ID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgICBwYXJhbWV0ZXJzID0gc3RhdGVtZW50LnBhcmFtZXRlcnMgfHwge307XG4gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC50ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlLnJ1bih0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyksIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWl0cyB0aGUgdHJhbnNhY3Rpb24gYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEFmdGVyIGNvbW1pdHRpbmcgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiAnY29tbWl0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tbWl0KCkge1xuICAgICAgdmFyIGNvbW1pdHRlZCA9IHRoaXMuX3N0YXRlLmNvbW1pdCh0aGlzLl9jb25uLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSb2xsYmFja3MgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogQWZ0ZXIgcm9sbGluZyBiYWNrLCB0aGUgdHJhbnNhY3Rpb24gY2FuIG5vIGxvbmdlciBiZSB1c2VkLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6ICdyb2xsYmFjaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJvbGxiYWNrKCkge1xuICAgICAgdmFyIGNvbW1pdHRlZCA9IHRoaXMuX3N0YXRlLnJvbGxiYWNrKHRoaXMuX2Nvbm4sIG5ldyBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKSk7XG4gICAgICB0aGlzLl9zdGF0ZSA9IGNvbW1pdHRlZC5zdGF0ZTtcbiAgICAgIC8vY2xlYW4gdXBcbiAgICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICAgIHJldHVybiBjb21taXR0ZWQucmVzdWx0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19vbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uRXJyb3IoKSB7XG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuRkFJTEVEO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2FjdGlvbjtcbn0pKCk7XG5cbnZhciBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciA9IChmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gIF9pbmhlcml0cyhfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0eCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuICAgIHRoaXMuX3R4ID0gdHg7XG4gICAgLy90aGlzIGlzIHRvIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIG9uRXJyb3IgY2F1c2VkIGJ5IElHTk9SRURcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIG9mIHRoZSB0cmFuc2FjdGlvbiovXG5cbiAgX2NyZWF0ZUNsYXNzKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLCBbe1xuICAgIGtleTogJ29uRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVycm9yKGVycm9yKSB7XG4gICAgICBpZiAoIXRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgICB0aGlzLl90eC5fb25FcnJvcigpO1xuICAgICAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnb25FcnJvcicsIHRoaXMpLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcjtcbn0pKF9pbnRlcm5hbFN0cmVhbU9ic2VydmVyMlsnZGVmYXVsdCddKTtcblxudmFyIF9zdGF0ZXMgPSB7XG4gIC8vVGhlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgd2l0aCBubyBleHBsaWNpdCBzdWNjZXNzIG9yIGZhaWx1cmUgbWFya2VkXG4gIEFDVElWRToge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5EaXNjYXJkQWxsKFwiQ09NTUlUXCIsIGNvbm4sIG9ic2VydmVyKSxcbiAgICAgICAgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogX3J1bkRpc2NhcmRBbGwoXCJST0xMQkFDS1wiLCBjb25uLCBvYnNlcnZlciksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBjb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMgfHwge30sIG9ic2VydmVyKTtcbiAgICAgIGNvbm4ucHVsbEFsbChvYnNlcnZlcik7XG4gICAgICBjb25uLnN5bmMoKTtcbiAgICAgIHJldHVybiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9BbiBlcnJvciBoYXMgb2NjdXJyZWQsIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZCBhbmQgbm8gbW9yZSBtZXNzYWdlcyB3aWxsXG4gIC8vIGJlIHNlbnQgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gIEZBSUxFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFjay4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5GQUlMRUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSBwcmV2aW91cyBzdGF0ZW1lbnRzIGluIHRoZSBcIiArIFwidHJhbnNhY3Rpb24gaGFzIGZhaWxlZCBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIHN1Y2Nlc3NmdWxseSBjb21taXR0ZWRcbiAgU1VDQ0VFREVEOiB7XG4gICAgY29tbWl0OiBmdW5jdGlvbiBjb21taXQoY29ubiwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3Ioe1xuICAgICAgICBlcnJvcjogXCJDYW5ub3QgY29tbWl0IHN0YXRlbWVudHMgaW4gdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBjb21taXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2FsbGVkIG9uIHRoZSB0cmFuc2FjdGlvbiBhbmQgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY2xvc2VkLiBQbGVhc2Ugc3RhcnQgYSBuZXdcIiArIFwiIHRyYW5zYWN0aW9uIHRvIHJ1biBhbm90aGVyIHN0YXRlbWVudC5cIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIkNPTU1JVFwiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRCB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJvbGxiYWNrIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNsb3NlZC5cIiB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIFwiUk9MTEJBQ0tcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJ1bjogZnVuY3Rpb24gcnVuKGNvbm4sIG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3QgcnVuIHN0YXRlbWVudCwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9LFxuXG4gIC8vVGhpcyB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFja1xuICBST0xMRURfQkFDSzoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXcgX3Jlc3VsdDJbJ2RlZmF1bHQnXShvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDSyB9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IGZ1bmN0aW9uIHJvbGxiYWNrKGNvbm4sIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJvbGxiYWNrIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJ1bjogZnVuY3Rpb24gcnVuKGNvbm4sIG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3QgcnVuIHN0YXRlbWVudCwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0MlsnZGVmYXVsdCddKG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX3J1bkRpc2NhcmRBbGwobXNnLCBjb25uLCBvYnNlcnZlcikge1xuICBjb25uLnJ1bihtc2csIHt9LCBvYnNlcnZlcik7XG4gIGNvbm4uZGlzY2FyZEFsbChvYnNlcnZlcik7XG4gIGNvbm4uc3luYygpO1xuICByZXR1cm4gbmV3IF9yZXN1bHQyWydkZWZhdWx0J10ob2JzZXJ2ZXIsIG1zZywge30pO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUcmFuc2FjdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBETyBOT1QgQ0hBTkdFIFRIRSBWRVJTSU9OIEJFTE9XIEhFUkVcbi8vIFRoaXMgaXMgc2V0IGJ5IHRoZSBidWlsZCBzeXN0ZW0gYXQgcmVsZWFzZSB0aW1lLCB1c2luZ1xuLy8gICBndWxwIHNldCAtLXZlcnNpb24gPHJlbGVhc2V2ZXJzaW9uPlxuLy9cbi8vIFRoaXMgaXMgc2V0IHVwIHRoaXMgd2F5IHRvIGtlZXAgdGhlIHZlcnNpb24gaW4gdGhlIGNvZGUgaW5cbi8vIHN5bmMgd2l0aCB0aGUgbnBtIHBhY2thZ2UgdmVyc2lvbiwgYW5kIHRvIGFsbG93IHRoZSBidWlsZFxuLy8gc3lzdGVtIHRvIGNvbnRyb2wgdmVyc2lvbiBuYW1lcyBhdCBwYWNrYWdpbmcgdGltZS5cblwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB7IFZFUlNJT046IFwiMC4wLjAtZGV2XCIgfTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1tcImRlZmF1bHRcIl07IiwidmFyIGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi4vYXNuMScpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFwaSA9IGV4cG9ydHM7XG5cbmFwaS5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUobmFtZSwgYm9keSkge1xuICByZXR1cm4gbmV3IEVudGl0eShuYW1lLCBib2R5KTtcbn07XG5cbmZ1bmN0aW9uIEVudGl0eShuYW1lLCBib2R5KSB7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuYm9keSA9IGJvZHk7XG5cbiAgdGhpcy5kZWNvZGVycyA9IHt9O1xuICB0aGlzLmVuY29kZXJzID0ge307XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKGJhc2UpIHtcbiAgdmFyIG5hbWVkO1xuICB0cnkge1xuICAgIG5hbWVkID0gcmVxdWlyZSgndm0nKS5ydW5JblRoaXNDb250ZXh0KFxuICAgICAgJyhmdW5jdGlvbiAnICsgdGhpcy5uYW1lICsgJyhlbnRpdHkpIHtcXG4nICtcbiAgICAgICcgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xcbicgK1xuICAgICAgJ30pJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBuYW1lZCA9IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xuICAgIH07XG4gIH1cbiAgaW5oZXJpdHMobmFtZWQsIGJhc2UpO1xuICBuYW1lZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIGluaXRuYW1lZChlbnRpdHkpIHtcbiAgICBiYXNlLmNhbGwodGhpcywgZW50aXR5KTtcbiAgfTtcblxuICByZXR1cm4gbmV3IG5hbWVkKHRoaXMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RGVjb2RlciA9IGZ1bmN0aW9uIF9nZXREZWNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZGVjb2RlclxuICBpZiAoIXRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmRlY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5SZXBvcnRlcjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgcmV0dXJuIHsgb2Zmc2V0OiB0aGlzLm9mZnNldCwgcmVwb3J0ZXI6IFJlcG9ydGVyLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcykgfTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKHNhdmUpIHtcbiAgLy8gUmV0dXJuIHNraXBwZWQgZGF0YVxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbiBza2lwKGJ5dGVzLCBmYWlsKSB7XG4gIGlmICghKHRoaXMub2Zmc2V0ICsgYnl0ZXMgPD0gdGhpcy5sZW5ndGgpKVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xuXG4gIHZhciByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJhdyA9IGZ1bmN0aW9uIHJhdyhzYXZlKSB7XG4gIHJldHVybiB0aGlzLmJhc2Uuc2xpY2Uoc2F2ZSA/IHNhdmUub2Zmc2V0IDogdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCEoaXRlbSBpbnN0YW5jZW9mIEVuY29kZXJCdWZmZXIpKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IG5ldyBCdWZmZXIodGhpcy5sZW5ndGgpO1xuICBpZiAoIW9mZnNldClcbiAgICBvZmZzZXQgPSAwO1xuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gb3V0O1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGl0ZW0uam9pbihvdXQsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gaXRlbS5sZW5ndGg7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgIG91dFtvZmZzZXRdID0gdGhpcy52YWx1ZTtcbiAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICBvdXQud3JpdGUodGhpcy52YWx1ZSwgb2Zmc2V0KTtcbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy52YWx1ZSkpXG4gICAgICB0aGlzLnZhbHVlLmNvcHkob3V0LCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSB0aGlzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuIiwidmFyIGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCJ2YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5FbmNvZGVyQnVmZmVyO1xudmFyIERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRGVjb2RlckJ1ZmZlcjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG52YXIgdGFncyA9IFtcbiAgJ3NlcScsICdzZXFvZicsICdzZXQnLCAnc2V0b2YnLCAnb2JqaWQnLCAnYm9vbCcsXG4gICdnZW50aW1lJywgJ3V0Y3RpbWUnLCAnbnVsbF8nLCAnZW51bScsICdpbnQnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxudmFyIG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG52YXIgb3ZlcnJpZGVkID0gW1xuICAnX3BlZWtUYWcnLCAnX2RlY29kZVRhZycsICdfdXNlJyxcbiAgJ19kZWNvZGVTdHInLCAnX2RlY29kZU9iamlkJywgJ19kZWNvZGVUaW1lJyxcbiAgJ19kZWNvZGVOdWxsJywgJ19kZWNvZGVJbnQnLCAnX2RlY29kZUJvb2wnLCAnX2RlY29kZUxpc3QnLFxuXG4gICdfZW5jb2RlQ29tcG9zaXRlJywgJ19lbmNvZGVTdHInLCAnX2VuY29kZU9iamlkJywgJ19lbmNvZGVUaW1lJyxcbiAgJ19lbmNvZGVOdWxsJywgJ19lbmNvZGVJbnQnLCAnX2VuY29kZUJvb2wnXG5dO1xuXG5mdW5jdGlvbiBOb2RlKGVuYywgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5lbmMgPSBlbmM7XG5cbiAgc3RhdGUucGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gIHN0YXRlLmNoaWxkcmVuID0gbnVsbDtcblxuICAvLyBTdGF0ZVxuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5hcmdzID0gbnVsbDtcbiAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBudWxsO1xuICBzdGF0ZS5jaG9pY2UgPSBudWxsO1xuICBzdGF0ZS5vcHRpb25hbCA9IGZhbHNlO1xuICBzdGF0ZS5hbnkgPSBmYWxzZTtcbiAgc3RhdGUub2JqID0gZmFsc2U7XG4gIHN0YXRlLnVzZSA9IG51bGw7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBudWxsO1xuICBzdGF0ZS5rZXkgPSBudWxsO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gbnVsbDtcbiAgc3RhdGUuZXhwbGljaXQgPSBudWxsO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmNvbnRhaW5zID0gbnVsbDtcblxuICAvLyBTaG91bGQgY3JlYXRlIG5ldyBpbnN0YW5jZSBvbiBlYWNoIG1ldGhvZFxuICBpZiAoIXN0YXRlLnBhcmVudCkge1xuICAgIHN0YXRlLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5fd3JhcCgpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IE5vZGU7XG5cbnZhciBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCdcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGNzdGF0ZSA9IHt9O1xuICBzdGF0ZVByb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGNzdGF0ZVtwcm9wXSA9IHN0YXRlW3Byb3BdO1xuICB9KTtcbiAgdmFyIHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICB2YXIgY2xvbmUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goY2xvbmUpO1xuICAgICAgcmV0dXJuIGNsb25lW21ldGhvZF0uYXBwbHkoY2xvbmUsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSwgdGhpcyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoYm9keSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIHZhciBjaGlsZHJlbiA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9LCB0aGlzKTtcbiAgYXJncyA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiAhKGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpO1xuICB9LCB0aGlzKTtcblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmNoaWxkcmVuID09PSBudWxsKTtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJlbnQgdG8gbWFpbnRhaW4gYmFja3dhcmQgbGlua1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID0gdGhpcztcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuYXJncyA9PT0gbnVsbCk7XG4gICAgc3RhdGUuYXJncyA9IGFyZ3M7XG4gICAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbihhcmcpIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0JyB8fCBhcmcuY29uc3RydWN0b3IgIT09IE9iamVjdClcbiAgICAgICAgcmV0dXJuIGFyZztcblxuICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWV0aG9kICsgJyBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAnICsgc3RhdGUuZW5jKTtcbiAgfTtcbn0pO1xuXG4vL1xuLy8gUHVibGljIG1ldGhvZHNcbi8vXG5cbnRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHtcbiAgTm9kZS5wcm90b3R5cGVbdGFnXSA9IGZ1bmN0aW9uIF90YWdNZXRob2QoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZSA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vcHRpb25hbCA9IGZ1bmN0aW9uIG9wdGlvbmFsKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZGVmID0gZnVuY3Rpb24gZGVmKHZhbCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gdmFsO1xuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5leHBsaWNpdCA9IGZ1bmN0aW9uIGV4cGxpY2l0KG51bSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuZXhwbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5pbXBsaWNpdCA9IGZ1bmN0aW9uIGltcGxpY2l0KG51bSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuaW1wbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vYmogPSBmdW5jdGlvbiBvYmooKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gIHN0YXRlLm9iaiA9IHRydWU7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKVxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5rZXkgPSBmdW5jdGlvbiBrZXkobmV3S2V5KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUua2V5ID09PSBudWxsKTtcbiAgc3RhdGUua2V5ID0gbmV3S2V5O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gYW55KCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUuYW55ID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmNob2ljZSA9IGZ1bmN0aW9uIGNob2ljZShvYmopIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5jaG9pY2UgPT09IG51bGwpO1xuICBzdGF0ZS5jaG9pY2UgPSBvYmo7XG4gIHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9KSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGl0ZW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS5jb250YWlucyA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gRGVjb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gaW5wdXQud3JhcFJlc3VsdChzdGF0ZS5jaGlsZHJlblswXS5fZGVjb2RlKGlucHV0KSk7XG5cbiAgdmFyIHJlc3VsdCA9IHN0YXRlWydkZWZhdWx0J107XG4gIHZhciBwcmVzZW50ID0gdHJ1ZTtcblxuICB2YXIgcHJldktleTtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgICAgIHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQpO1xuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJlc2VudCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlc2VudCA9IHRoaXMuX3BlZWtUYWcoaW5wdXQsIHRhZywgc3RhdGUuYW55KTtcblxuICAgICAgaWYgKGlucHV0LmlzRXJyb3IocHJlc2VudCkpXG4gICAgICAgIHJldHVybiBwcmVzZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggb2JqZWN0IG9uIHN0YWNrXG4gIHZhciBwcmV2T2JqO1xuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcHJldk9iaiA9IGlucHV0LmVudGVyT2JqZWN0KCk7XG5cbiAgaWYgKHByZXNlbnQpIHtcbiAgICAvLyBVbndyYXAgZXhwbGljaXQgdmFsdWVzXG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB2YXIgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IHByb3BlciBtZXRob2QgZm9yIHRhZ1xuICAgIGlmIChzdGF0ZS5hbnkpXG4gICAgICByZXN1bHQgPSByZXN1bHQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0KTtcbiAgICBlbHNlXG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQpO1xuXG4gICAgaWYgKGlucHV0LmlzRXJyb3IocmVzdWx0KSlcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAvLyBEZWNvZGUgY2hpbGRyZW5cbiAgICBpZiAoIXN0YXRlLmFueSAmJiBzdGF0ZS5jaG9pY2UgPT09IG51bGwgJiYgc3RhdGUuY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gZGVjb2RlQ2hpbGRyZW4oY2hpbGQpIHtcbiAgICAgICAgLy8gTk9URTogV2UgYXJlIGlnbm9yaW5nIGVycm9ycyBoZXJlLCB0byBsZXQgcGFyc2VyIGNvbnRpbnVlIHdpdGggb3RoZXJcbiAgICAgICAgLy8gcGFydHMgb2YgZW5jb2RlZCBkYXRhXG4gICAgICAgIGNoaWxkLl9kZWNvZGUoaW5wdXQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRGVjb2RlIGNvbnRhaW5lZC9lbmNvZGVkIGJ5IHNjaGVtYSwgb25seSBpbiBiaXQgb3Igb2N0ZXQgc3RyaW5nc1xuICAgIGlmIChzdGF0ZS5jb250YWlucyAmJiAoc3RhdGUudGFnID09PSAnb2N0c3RyJyB8fCBzdGF0ZS50YWcgPT09ICdiaXRzdHInKSkge1xuICAgICAgdmFyIGRhdGEgPSBuZXcgRGVjb2RlckJ1ZmZlcihyZXN1bHQpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9wIG9iamVjdFxuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcmVzdWx0ID0gaW5wdXQubGVhdmVPYmplY3QocHJldk9iaik7XG5cbiAgLy8gU2V0IGtleVxuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsICYmIChyZXN1bHQgIT09IG51bGwgfHwgcHJlc2VudCA9PT0gdHJ1ZSkpXG4gICAgaW5wdXQubGVhdmVLZXkocHJldktleSwgc3RhdGUua2V5LCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdKTtcbiAgZWxzZSBpZiAoc3RhdGUudXNlICE9PSBudWxsKVxuICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoaW5wdXQpO1xuICBlbHNlXG4gICAgcmV0dXJuIGlucHV0LmVycm9yKCd1bmtub3duIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9tbWl0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdCA9IGZ1bmN0aW9uIGVudGVyT2JqZWN0KCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBwcmV2ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSB7fTtcbiAgcmV0dXJuIHByZXY7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVPYmplY3QgPSBmdW5jdGlvbiBsZWF2ZU9iamVjdChwcmV2KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIG5vdyA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0gcHJldjtcbiAgcmV0dXJuIG5vdztcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICB2YXIgZXJyO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBpbmhlcml0ZWQgPSBtc2cgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xuICBpZiAoaW5oZXJpdGVkKSB7XG4gICAgZXJyID0gbXNnO1xuICB9IGVsc2Uge1xuICAgIGVyciA9IG5ldyBSZXBvcnRlckVycm9yKHN0YXRlLnBhdGgubWFwKGZ1bmN0aW9uKGVsZW0pIHtcbiAgICAgIHJldHVybiAnWycgKyBKU09OLnN0cmluZ2lmeShlbGVtKSArICddJztcbiAgICB9KS5qb2luKCcnKSwgbXNnLm1lc3NhZ2UgfHwgbXNnLCBtc2cuc3RhY2spO1xuICB9XG5cbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgdGhyb3cgZXJyO1xuXG4gIGlmICghaW5oZXJpdGVkKVxuICAgIHN0YXRlLmVycm9ycy5wdXNoKGVycik7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS53cmFwUmVzdWx0ID0gZnVuY3Rpb24gd3JhcFJlc3VsdChyZXN1bHQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICByZXR1cm4ge1xuICAgIHJlc3VsdDogdGhpcy5pc0Vycm9yKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0LFxuICAgIGVycm9yczogc3RhdGUuZXJyb3JzXG4gIH07XG59O1xuXG5mdW5jdGlvbiBSZXBvcnRlckVycm9yKHBhdGgsIG1zZykge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnJldGhyb3cobXNnKTtcbn07XG5pbmhlcml0cyhSZXBvcnRlckVycm9yLCBFcnJvcik7XG5cblJlcG9ydGVyRXJyb3IucHJvdG90eXBlLnJldGhyb3cgPSBmdW5jdGlvbiByZXRocm93KG1zZykge1xuICB0aGlzLm1lc3NhZ2UgPSBtc2cgKyAnIGF0OiAnICsgKHRoaXMucGF0aCB8fCAnKHNoYWxsb3cpJyk7XG4gIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBSZXBvcnRlckVycm9yKTtcblxuICBpZiAoIXRoaXMuc3RhY2spIHtcbiAgICB0cnkge1xuICAgICAgLy8gSUUgb25seSBhZGRzIHN0YWNrIHdoZW4gdGhyb3duXG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5tZXNzYWdlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLnN0YWNrID0gZS5zdGFjaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuIiwidmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLnRhZ0NsYXNzID0ge1xuICAwOiAndW5pdmVyc2FsJyxcbiAgMTogJ2FwcGxpY2F0aW9uJyxcbiAgMjogJ2NvbnRleHQnLFxuICAzOiAncHJpdmF0ZSdcbn07XG5leHBvcnRzLnRhZ0NsYXNzQnlOYW1lID0gY29uc3RhbnRzLl9yZXZlcnNlKGV4cG9ydHMudGFnQ2xhc3MpO1xuXG5leHBvcnRzLnRhZyA9IHtcbiAgMHgwMDogJ2VuZCcsXG4gIDB4MDE6ICdib29sJyxcbiAgMHgwMjogJ2ludCcsXG4gIDB4MDM6ICdiaXRzdHInLFxuICAweDA0OiAnb2N0c3RyJyxcbiAgMHgwNTogJ251bGxfJyxcbiAgMHgwNjogJ29iamlkJyxcbiAgMHgwNzogJ29iakRlc2MnLFxuICAweDA4OiAnZXh0ZXJuYWwnLFxuICAweDA5OiAncmVhbCcsXG4gIDB4MGE6ICdlbnVtJyxcbiAgMHgwYjogJ2VtYmVkJyxcbiAgMHgwYzogJ3V0ZjhzdHInLFxuICAweDBkOiAncmVsYXRpdmVPaWQnLFxuICAweDEwOiAnc2VxJyxcbiAgMHgxMTogJ3NldCcsXG4gIDB4MTI6ICdudW1zdHInLFxuICAweDEzOiAncHJpbnRzdHInLFxuICAweDE0OiAndDYxc3RyJyxcbiAgMHgxNTogJ3ZpZGVvc3RyJyxcbiAgMHgxNjogJ2lhNXN0cicsXG4gIDB4MTc6ICd1dGN0aW1lJyxcbiAgMHgxODogJ2dlbnRpbWUnLFxuICAweDE5OiAnZ3JhcGhzdHInLFxuICAweDFhOiAnaXNvNjQ2c3RyJyxcbiAgMHgxYjogJ2dlbnN0cicsXG4gIDB4MWM6ICd1bmlzdHInLFxuICAweDFkOiAnY2hhcnN0cicsXG4gIDB4MWU6ICdibXBzdHInXG59O1xuZXhwb3J0cy50YWdCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWcpO1xuIiwidmFyIGNvbnN0YW50cyA9IGV4cG9ydHM7XG5cbi8vIEhlbHBlclxuY29uc3RhbnRzLl9yZXZlcnNlID0gZnVuY3Rpb24gcmV2ZXJzZShtYXApIHtcbiAgdmFyIHJlcyA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAvLyBDb252ZXJ0IGtleSB0byBpbnRlZ2VyIGlmIGl0IGlzIHN0cmluZ2lmaWVkXG4gICAgaWYgKChrZXkgfCAwKSA9PSBrZXkpXG4gICAgICBrZXkgPSBrZXkgfCAwO1xuXG4gICAgdmFyIHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmNvbnN0YW50cy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFzbjEgPSByZXF1aXJlKCcuLi8uLi9hc24xJyk7XG52YXIgYmFzZSA9IGFzbjEuYmFzZTtcbnZhciBiaWdudW0gPSBhc24xLmJpZ251bTtcblxuLy8gSW1wb3J0IERFUiBjb25zdGFudHNcbnZhciBkZXIgPSBhc24xLmNvbnN0YW50cy5kZXI7XG5cbmZ1bmN0aW9uIERFUkRlY29kZXIoZW50aXR5KSB7XG4gIHRoaXMuZW5jID0gJ2Rlcic7XG4gIHRoaXMubmFtZSA9IGVudGl0eS5uYW1lO1xuICB0aGlzLmVudGl0eSA9IGVudGl0eTtcblxuICAvLyBDb25zdHJ1Y3QgYmFzZSB0cmVlXG4gIHRoaXMudHJlZSA9IG5ldyBERVJOb2RlKCk7XG4gIHRoaXMudHJlZS5faW5pdChlbnRpdHkuYm9keSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBERVJEZWNvZGVyO1xuXG5ERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICBpZiAoIShkYXRhIGluc3RhbmNlb2YgYmFzZS5EZWNvZGVyQnVmZmVyKSlcbiAgICBkYXRhID0gbmV3IGJhc2UuRGVjb2RlckJ1ZmZlcihkYXRhLCBvcHRpb25zKTtcblxuICByZXR1cm4gdGhpcy50cmVlLl9kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgYmFzZS5Ob2RlLmNhbGwodGhpcywgJ2RlcicsIHBhcmVudCk7XG59XG5pbmhlcml0cyhERVJOb2RlLCBiYXNlLk5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fcGVla1RhZyA9IGZ1bmN0aW9uIHBlZWtUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICBpZiAoYnVmZmVyLmlzRW1wdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgdmFyIGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCAnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcblxuICByZXR1cm4gZGVjb2RlZFRhZy50YWcgPT09IHRhZyB8fCBkZWNvZGVkVGFnLnRhZ1N0ciA9PT0gdGFnIHx8XG4gICAgKGRlY29kZWRUYWcudGFnU3RyICsgJ29mJykgPT09IHRhZyB8fCBhbnk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGFnID0gZnVuY3Rpb24gZGVjb2RlVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgdmFyIGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICB2YXIgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkVGFnLnByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGdldCBsZW5ndGggb2YgXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gRmFpbHVyZVxuICBpZiAoYnVmZmVyLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIGlmICghYW55ICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZyAhPT0gdGFnICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZ1N0ciAhPT0gdGFnICYmXG4gICAgICBkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicgIT09IHRhZykge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICB9XG5cbiAgaWYgKGRlY29kZWRUYWcucHJpbWl0aXZlIHx8IGxlbiAhPT0gbnVsbClcbiAgICByZXR1cm4gYnVmZmVyLnNraXAobGVuLCAnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEluZGVmaW5pdGUgbGVuZ3RoLi4uIGZpbmQgRU5EIHRhZ1xuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKFxuICAgICAgYnVmZmVyLFxuICAgICAgJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6IFwiJyArIHRoaXMudGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG5cbiAgbGVuID0gYnVmZmVyLm9mZnNldCAtIHN0YXRlLm9mZnNldDtcbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuICByZXR1cm4gYnVmZmVyLnNraXAobGVuLCAnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJyArIHRhZyArICdcIicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBVbnRpbEVuZCA9IGZ1bmN0aW9uIHNraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB2YXIgdGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHRhZykpXG4gICAgICByZXR1cm4gdGFnO1xuICAgIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLCB0YWcucHJpbWl0aXZlLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IobGVuKSlcbiAgICAgIHJldHVybiBsZW47XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0YWcucHJpbWl0aXZlIHx8IGxlbiAhPT0gbnVsbClcbiAgICAgIHJlcyA9IGJ1ZmZlci5za2lwKGxlbilcbiAgICBlbHNlXG4gICAgICByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKTtcblxuICAgIC8vIEZhaWx1cmVcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICAgIHJldHVybiByZXM7XG5cbiAgICBpZiAodGFnLnRhZ1N0ciA9PT0gJ2VuZCcpXG4gICAgICBicmVhaztcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUxpc3QgPSBmdW5jdGlvbiBkZWNvZGVMaXN0KGJ1ZmZlciwgdGFnLCBkZWNvZGVyKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgdmFyIHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHZhciB1bnVzZWQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHVudXNlZCkpXG4gICAgICByZXR1cm4gdW51c2VkO1xuICAgIHJldHVybiB7IHVudXNlZDogdW51c2VkLCBkYXRhOiBidWZmZXIucmF3KCkgfTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgdmFyIHN0ciA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICB2YXIgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdwcmludHN0cicpIHtcbiAgICB2YXIgcHJpbnRzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHByaW50c3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gcHJpbnRzdHI7XG4gIH0gZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSkge1xuICAgIHJldHVybiBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU9iamlkID0gZnVuY3Rpb24gZGVjb2RlT2JqaWQoYnVmZmVyLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIHZhciByZXN1bHQ7XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICB2YXIgaWRlbnQgPSAwO1xuICB3aGlsZSAoIWJ1ZmZlci5pc0VtcHR5KCkpIHtcbiAgICB2YXIgc3ViaWRlbnQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWRlbnQgPDw9IDc7XG4gICAgaWRlbnQgfD0gc3ViaWRlbnQgJiAweDdmO1xuICAgIGlmICgoc3ViaWRlbnQgJiAweDgwKSA9PT0gMCkge1xuICAgICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG4gICAgICBpZGVudCA9IDA7XG4gICAgfVxuICB9XG4gIGlmIChzdWJpZGVudCAmIDB4ODApXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG5cbiAgdmFyIGZpcnN0ID0gKGlkZW50aWZpZXJzWzBdIC8gNDApIHwgMDtcbiAgdmFyIHNlY29uZCA9IGlkZW50aWZpZXJzWzBdICUgNDA7XG5cbiAgaWYgKHJlbGF0aXZlKVxuICAgIHJlc3VsdCA9IGlkZW50aWZpZXJzO1xuICBlbHNlXG4gICAgcmVzdWx0ID0gW2ZpcnN0LCBzZWNvbmRdLmNvbmNhdChpZGVudGlmaWVycy5zbGljZSgxKSk7XG5cbiAgaWYgKHZhbHVlcykge1xuICAgIHZhciB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJyAnKV07XG4gICAgaWYgKHRtcCA9PT0gdW5kZWZpbmVkKVxuICAgICAgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcuJyldO1xuICAgIGlmICh0bXAgIT09IHVuZGVmaW5lZClcbiAgICAgIHJlc3VsdCA9IHRtcDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGltZSA9IGZ1bmN0aW9uIGRlY29kZVRpbWUoYnVmZmVyLCB0YWcpIHtcbiAgdmFyIHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICB2YXIgeWVhciA9IHN0ci5zbGljZSgwLCA0KSB8IDA7XG4gICAgdmFyIG1vbiA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgdmFyIGRheSA9IHN0ci5zbGljZSg2LCA4KSB8IDA7XG4gICAgdmFyIGhvdXIgPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIHZhciBzZWMgPSBzdHIuc2xpY2UoMTIsIDE0KSB8IDA7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICB2YXIgeWVhciA9IHN0ci5zbGljZSgwLCAyKSB8IDA7XG4gICAgdmFyIG1vbiA9IHN0ci5zbGljZSgyLCA0KSB8IDA7XG4gICAgdmFyIGRheSA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgdmFyIGhvdXIgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBtaW4gPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIGlmICh5ZWFyIDwgNzApXG4gICAgICB5ZWFyID0gMjAwMCArIHllYXI7XG4gICAgZWxzZVxuICAgICAgeWVhciA9IDE5MDAgKyB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiBEYXRlLlVUQyh5ZWFyLCBtb24gLSAxLCBkYXksIGhvdXIsIG1pbiwgc2VjLCAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVOdWxsID0gZnVuY3Rpb24gZGVjb2RlTnVsbChidWZmZXIpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlQm9vbCA9IGZ1bmN0aW9uIGRlY29kZUJvb2woYnVmZmVyKSB7XG4gIHZhciByZXMgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVzICE9PSAwO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChidWZmZXIsIHZhbHVlcykge1xuICAvLyBCaWdpbnQsIHJldHVybiBhcyBpdCBpcyAoYXNzdW1lIGJpZyBlbmRpYW4pXG4gIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gIHZhciByZXMgPSBuZXcgYmlnbnVtKHJhdyk7XG5cbiAgaWYgKHZhbHVlcylcbiAgICByZXMgPSB2YWx1ZXNbcmVzLnRvU3RyaW5nKDEwKV0gfHwgcmVzO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXREZWNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGRlckRlY29kZVRhZyhidWYsIGZhaWwpIHtcbiAgdmFyIHRhZyA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcih0YWcpKVxuICAgIHJldHVybiB0YWc7XG5cbiAgdmFyIGNscyA9IGRlci50YWdDbGFzc1t0YWcgPj4gNl07XG4gIHZhciBwcmltaXRpdmUgPSAodGFnICYgMHgyMCkgPT09IDA7XG5cbiAgLy8gTXVsdGktb2N0ZXQgdGFnIC0gbG9hZFxuICBpZiAoKHRhZyAmIDB4MWYpID09PSAweDFmKSB7XG4gICAgdmFyIG9jdCA9IHRhZztcbiAgICB0YWcgPSAwO1xuICAgIHdoaWxlICgob2N0ICYgMHg4MCkgPT09IDB4ODApIHtcbiAgICAgIG9jdCA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgICBpZiAoYnVmLmlzRXJyb3Iob2N0KSlcbiAgICAgICAgcmV0dXJuIG9jdDtcblxuICAgICAgdGFnIDw8PSA3O1xuICAgICAgdGFnIHw9IG9jdCAmIDB4N2Y7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhZyAmPSAweDFmO1xuICB9XG4gIHZhciB0YWdTdHIgPSBkZXIudGFnW3RhZ107XG5cbiAgcmV0dXJuIHtcbiAgICBjbHM6IGNscyxcbiAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSxcbiAgICB0YWc6IHRhZyxcbiAgICB0YWdTdHI6IHRhZ1N0clxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXJEZWNvZGVMZW4oYnVmLCBwcmltaXRpdmUsIGZhaWwpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgLy8gSW5kZWZpbml0ZSBmb3JtXG4gIGlmICghcHJpbWl0aXZlICYmIGxlbiA9PT0gMHg4MClcbiAgICByZXR1cm4gbnVsbDtcblxuICAvLyBEZWZpbml0ZSBmb3JtXG4gIGlmICgobGVuICYgMHg4MCkgPT09IDApIHtcbiAgICAvLyBTaG9ydCBmb3JtXG4gICAgcmV0dXJuIGxlbjtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICB2YXIgbnVtID0gbGVuICYgMHg3ZjtcbiAgaWYgKG51bSA+PSA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIHZhciBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCJ2YXIgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTURlY29kZXIsIERFUkRlY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1EZWNvZGVyO1xuXG5QRU1EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICB2YXIgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgdmFyIHJlID0gL14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO1xuICB2YXIgc3RhcnQgPSAtMTtcbiAgdmFyIGVuZCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgdmFyIGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSwgJycpO1xuXG4gIHZhciBpbnB1dCA9IG5ldyBCdWZmZXIoYmFzZTY0LCAnYmFzZTY0Jyk7XG4gIHJldHVybiBERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLCBpbnB1dCwgb3B0aW9ucyk7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZSA9IGZ1bmN0aW9uIGVuY29kZUNvbXBvc2l0ZSh0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50KSB7XG4gIHZhciBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDIpO1xuICAgIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gICAgaGVhZGVyWzFdID0gY29udGVudC5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgLy8gQ291bnQgb2N0ZXRzIHJlcXVpcmVkIHRvIHN0b3JlIGxlbmd0aFxuICB2YXIgbGVuT2N0ZXRzID0gMTtcbiAgZm9yICh2YXIgaSA9IGNvbnRlbnQubGVuZ3RoOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIGxlbk9jdGV0cysrO1xuXG4gIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKHZhciBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoICogMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlT2JqaWQgPSBmdW5jdGlvbiBlbmNvZGVPYmppZChpZCwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ3N0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmQnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShpZCkpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXAnKTtcbiAgICBpZCA9IHZhbHVlc1tpZF0uc3BsaXQoL1tcXHNcXC5dKy9nKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIGlkID0gaWQuc2xpY2UoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdDogJyArIEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gIH1cblxuICBpZiAoIXJlbGF0aXZlKSB7XG4gICAgaWYgKGlkWzFdID49IDQwKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1NlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQicpO1xuICAgIGlkLnNwbGljZSgwLCAyLCBpZFswXSAqIDQwICsgaWRbMV0pO1xuICB9XG5cbiAgLy8gQ291bnQgbnVtYmVyIG9mIG9jdGV0c1xuICB2YXIgc2l6ZSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaWRlbnQgPSBpZFtpXTtcbiAgICBmb3IgKHNpemUrKzsgaWRlbnQgPj0gMHg4MDsgaWRlbnQgPj49IDcpXG4gICAgICBzaXplKys7XG4gIH1cblxuICB2YXIgb2JqaWQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgb2Zmc2V0ID0gb2JqaWQubGVuZ3RoIC0gMTtcbiAgZm9yICh2YXIgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgb2JqaWRbb2Zmc2V0LS1dID0gaWRlbnQgJiAweDdmO1xuICAgIHdoaWxlICgoaWRlbnQgPj49IDcpID4gMClcbiAgICAgIG9iamlkW29mZnNldC0tXSA9IDB4ODAgfCAoaWRlbnQgJiAweDdmKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9iamlkKTtcbn07XG5cbmZ1bmN0aW9uIHR3byhudW0pIHtcbiAgaWYgKG51bSA8IDEwKVxuICAgIHJldHVybiAnMCcgKyBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gbnVtO1xufVxuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlVGltZSA9IGZ1bmN0aW9uIGVuY29kZVRpbWUodGltZSwgdGFnKSB7XG4gIHZhciBzdHI7XG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZSk7XG5cbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRGdWxsWWVhcigpICUgMTAwKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHN0ciwgJ29jdHN0cicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU51bGwgPSBmdW5jdGlvbiBlbmNvZGVOdWxsKCkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcignJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSwgdmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1N0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShudW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignVmFsdWVzIG1hcCBkb2VzblxcJ3QgY29udGFpbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShudW0pKTtcbiAgICB9XG4gICAgbnVtID0gdmFsdWVzW251bV07XG4gIH1cblxuICAvLyBCaWdudW0sIGFzc3VtZSBiaWcgZW5kaWFuXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiAhQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgbnVtQXJyYXkgPSBudW0udG9BcnJheSgpO1xuICAgIGlmICghbnVtLnNpZ24gJiYgbnVtQXJyYXlbMF0gJiAweDgwKSB7XG4gICAgICBudW1BcnJheS51bnNoaWZ0KDApO1xuICAgIH1cbiAgICBudW0gPSBuZXcgQnVmZmVyKG51bUFycmF5KTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIHZhciBzaXplID0gbnVtLmxlbmd0aDtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIHNpemUrKztcblxuICAgIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNpemUpO1xuICAgIG51bS5jb3B5KG91dCk7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBvdXRbMF0gPSAwXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIob3V0KTtcbiAgfVxuXG4gIGlmIChudW0gPCAweDgwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG51bSk7XG5cbiAgaWYgKG51bSA8IDB4MTAwKVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLCBudW1dKTtcblxuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSBudW07IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgc2l6ZSsrO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gIGZvciAodmFyIGkgPSBvdXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBvdXRbaV0gPSBudW0gJiAweGZmO1xuICAgIG51bSA+Pj0gODtcbiAgfVxuICBpZihvdXRbMF0gJiAweDgwKSB7XG4gICAgb3V0LnVuc2hpZnQoMCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihuZXcgQnVmZmVyKG91dCkpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUJvb2wgPSBmdW5jdGlvbiBlbmNvZGVCb29sKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHZhbHVlID8gMHhmZiA6IDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RW5jb2RlcignZGVyJykudHJlZTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwRGVmYXVsdCA9IGZ1bmN0aW9uIHNraXBEZWZhdWx0KGRhdGFCdWZmZXIsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgaTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBkYXRhID0gZGF0YUJ1ZmZlci5qb2luKCk7XG4gIGlmIChzdGF0ZS5kZWZhdWx0QnVmZmVyID09PSB1bmRlZmluZWQpXG4gICAgc3RhdGUuZGVmYXVsdEJ1ZmZlciA9IHRoaXMuX2VuY29kZVZhbHVlKHN0YXRlWydkZWZhdWx0J10sIHJlcG9ydGVyLCBwYXJlbnQpLmpvaW4oKTtcblxuICBpZiAoZGF0YS5sZW5ndGggIT09IHN0YXRlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRhdGFbaV0gIT09IHN0YXRlLmRlZmF1bHRCdWZmZXJbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHJlcG9ydGVyKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJylcbiAgICB0YWcgPSAnc2VxJztcbiAgZWxzZSBpZiAodGFnID09PSAnc2V0b2YnKVxuICAgIHRhZyA9ICdzZXQnO1xuXG4gIGlmIChkZXIudGFnQnlOYW1lLmhhc093blByb3BlcnR5KHRhZykpXG4gICAgcmVzID0gZGVyLnRhZ0J5TmFtZVt0YWddO1xuICBlbHNlIGlmICh0eXBlb2YgdGFnID09PSAnbnVtYmVyJyAmJiAodGFnIHwgMCkgPT09IHRhZylcbiAgICByZXMgPSB0YWc7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vua25vd24gdGFnOiAnICsgdGFnKTtcblxuICBpZiAocmVzID49IDB4MWYpXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnKTtcblxuICBpZiAoIXByaW1pdGl2ZSlcbiAgICByZXMgfD0gMHgyMDtcblxuICByZXMgfD0gKGRlci50YWdDbGFzc0J5TmFtZVtjbHMgfHwgJ3VuaXZlcnNhbCddIDw8IDYpO1xuXG4gIHJldHVybiByZXM7XG59XG4iLCJ2YXIgZW5jb2RlcnMgPSBleHBvcnRzO1xuXG5lbmNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZW5jb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBERVJFbmNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRW5jb2RlcihlbnRpdHkpIHtcbiAgREVSRW5jb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59O1xuaW5oZXJpdHMoUEVNRW5jb2RlciwgREVSRW5jb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTUVuY29kZXI7XG5cblBFTUVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIHZhciBidWYgPSBERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLCBkYXRhKTtcblxuICB2YXIgcCA9IGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG4gIHZhciBvdXQgPSBbICctLS0tLUJFR0lOICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpICs9IDY0KVxuICAgIG91dC5wdXNoKHAuc2xpY2UoaSwgaSArIDY0KSk7XG4gIG91dC5wdXNoKCctLS0tLUVORCAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScpO1xuICByZXR1cm4gb3V0LmpvaW4oJ1xcbicpO1xufTtcbiIsInZhciBsb29rdXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG5cbjsoZnVuY3Rpb24gKGV4cG9ydHMpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG4gIHZhciBBcnIgPSAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKVxuICAgID8gVWludDhBcnJheVxuICAgIDogQXJyYXlcblxuXHR2YXIgUExVUyAgID0gJysnLmNoYXJDb2RlQXQoMClcblx0dmFyIFNMQVNIICA9ICcvJy5jaGFyQ29kZUF0KDApXG5cdHZhciBOVU1CRVIgPSAnMCcuY2hhckNvZGVBdCgwKVxuXHR2YXIgTE9XRVIgID0gJ2EnLmNoYXJDb2RlQXQoMClcblx0dmFyIFVQUEVSICA9ICdBJy5jaGFyQ29kZUF0KDApXG5cdHZhciBQTFVTX1VSTF9TQUZFID0gJy0nLmNoYXJDb2RlQXQoMClcblx0dmFyIFNMQVNIX1VSTF9TQUZFID0gJ18nLmNoYXJDb2RlQXQoMClcblxuXHRmdW5jdGlvbiBkZWNvZGUgKGVsdCkge1xuXHRcdHZhciBjb2RlID0gZWx0LmNoYXJDb2RlQXQoMClcblx0XHRpZiAoY29kZSA9PT0gUExVUyB8fFxuXHRcdCAgICBjb2RlID09PSBQTFVTX1VSTF9TQUZFKVxuXHRcdFx0cmV0dXJuIDYyIC8vICcrJ1xuXHRcdGlmIChjb2RlID09PSBTTEFTSCB8fFxuXHRcdCAgICBjb2RlID09PSBTTEFTSF9VUkxfU0FGRSlcblx0XHRcdHJldHVybiA2MyAvLyAnLydcblx0XHRpZiAoY29kZSA8IE5VTUJFUilcblx0XHRcdHJldHVybiAtMSAvL25vIG1hdGNoXG5cdFx0aWYgKGNvZGUgPCBOVU1CRVIgKyAxMClcblx0XHRcdHJldHVybiBjb2RlIC0gTlVNQkVSICsgMjYgKyAyNlxuXHRcdGlmIChjb2RlIDwgVVBQRVIgKyAyNilcblx0XHRcdHJldHVybiBjb2RlIC0gVVBQRVJcblx0XHRpZiAoY29kZSA8IExPV0VSICsgMjYpXG5cdFx0XHRyZXR1cm4gY29kZSAtIExPV0VSICsgMjZcblx0fVxuXG5cdGZ1bmN0aW9uIGI2NFRvQnl0ZUFycmF5IChiNjQpIHtcblx0XHR2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuXG5cdFx0aWYgKGI2NC5sZW5ndGggJSA0ID4gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Jylcblx0XHR9XG5cblx0XHQvLyB0aGUgbnVtYmVyIG9mIGVxdWFsIHNpZ25zIChwbGFjZSBob2xkZXJzKVxuXHRcdC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcblx0XHQvLyByZXByZXNlbnQgb25lIGJ5dGVcblx0XHQvLyBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgdGhlbiB0aGUgdGhyZWUgY2hhcmFjdGVycyBiZWZvcmUgaXQgcmVwcmVzZW50IDIgYnl0ZXNcblx0XHQvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG5cdFx0dmFyIGxlbiA9IGI2NC5sZW5ndGhcblx0XHRwbGFjZUhvbGRlcnMgPSAnPScgPT09IGI2NC5jaGFyQXQobGVuIC0gMikgPyAyIDogJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDEpID8gMSA6IDBcblxuXHRcdC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuXHRcdGFyciA9IG5ldyBBcnIoYjY0Lmxlbmd0aCAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKVxuXG5cdFx0Ly8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuXHRcdGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gYjY0Lmxlbmd0aCAtIDQgOiBiNjQubGVuZ3RoXG5cblx0XHR2YXIgTCA9IDBcblxuXHRcdGZ1bmN0aW9uIHB1c2ggKHYpIHtcblx0XHRcdGFycltMKytdID0gdlxuXHRcdH1cblxuXHRcdGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTgpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgMTIpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPDwgNikgfCBkZWNvZGUoYjY0LmNoYXJBdChpICsgMykpXG5cdFx0XHRwdXNoKCh0bXAgJiAweEZGMDAwMCkgPj4gMTYpXG5cdFx0XHRwdXNoKCh0bXAgJiAweEZGMDApID4+IDgpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fVxuXG5cdFx0aWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuXHRcdFx0dG1wID0gKGRlY29kZShiNjQuY2hhckF0KGkpKSA8PCAyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpID4+IDQpXG5cdFx0XHRwdXNoKHRtcCAmIDB4RkYpXG5cdFx0fSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHtcblx0XHRcdHRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTApIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgNCkgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDIpKSA+PiAyKVxuXHRcdFx0cHVzaCgodG1wID4+IDgpICYgMHhGRilcblx0XHRcdHB1c2godG1wICYgMHhGRilcblx0XHR9XG5cblx0XHRyZXR1cm4gYXJyXG5cdH1cblxuXHRmdW5jdGlvbiB1aW50OFRvQmFzZTY0ICh1aW50OCkge1xuXHRcdHZhciBpLFxuXHRcdFx0ZXh0cmFCeXRlcyA9IHVpbnQ4Lmxlbmd0aCAlIDMsIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG5cdFx0XHRvdXRwdXQgPSBcIlwiLFxuXHRcdFx0dGVtcCwgbGVuZ3RoXG5cblx0XHRmdW5jdGlvbiBlbmNvZGUgKG51bSkge1xuXHRcdFx0cmV0dXJuIGxvb2t1cC5jaGFyQXQobnVtKVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG5cdFx0XHRyZXR1cm4gZW5jb2RlKG51bSA+PiAxOCAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiAxMiAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiA2ICYgMHgzRikgKyBlbmNvZGUobnVtICYgMHgzRilcblx0XHR9XG5cblx0XHQvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyXG5cdFx0Zm9yIChpID0gMCwgbGVuZ3RoID0gdWludDgubGVuZ3RoIC0gZXh0cmFCeXRlczsgaSA8IGxlbmd0aDsgaSArPSAzKSB7XG5cdFx0XHR0ZW1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKVxuXHRcdFx0b3V0cHV0ICs9IHRyaXBsZXRUb0Jhc2U2NCh0ZW1wKVxuXHRcdH1cblxuXHRcdC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcblx0XHRzd2l0Y2ggKGV4dHJhQnl0ZXMpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0dGVtcCA9IHVpbnQ4W3VpbnQ4Lmxlbmd0aCAtIDFdXG5cdFx0XHRcdG91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAyKVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKCh0ZW1wIDw8IDQpICYgMHgzRilcblx0XHRcdFx0b3V0cHV0ICs9ICc9PSdcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0dGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSlcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSh0ZW1wID4+IDEwKVxuXHRcdFx0XHRvdXRwdXQgKz0gZW5jb2RlKCh0ZW1wID4+IDQpICYgMHgzRilcblx0XHRcdFx0b3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCAyKSAmIDB4M0YpXG5cdFx0XHRcdG91dHB1dCArPSAnPSdcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0cHV0XG5cdH1cblxuXHRleHBvcnRzLnRvQnl0ZUFycmF5ID0gYjY0VG9CeXRlQXJyYXlcblx0ZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gdWludDhUb0Jhc2U2NFxufSh0eXBlb2YgZXhwb3J0cyA9PT0gJ3VuZGVmaW5lZCcgPyAodGhpcy5iYXNlNjRqcyA9IHt9KSA6IGV4cG9ydHMpKVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBCdWZmZXIgPSByZXF1aXJlKCdidWYnICsgJ2ZlcicpLkJ1ZmZlcjtcbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQk4nICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4IChzdHIsIHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciA8PD0gNDtcblxuICAgICAgLy8gJ2EnIC0gJ2YnXG4gICAgICBpZiAoYyA+PSA0OSAmJiBjIDw9IDU0KSB7XG4gICAgICAgIHIgfD0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQScgLSAnRidcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNyAmJiBjIDw9IDIyKSB7XG4gICAgICAgIHIgfD0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgfD0gYyAmIDB4ZjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0KSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgLy8gU2NhbiAyNC1iaXQgY2h1bmtzIGFuZCBhZGQgdGhlbSB0byB0aGUgbnVtYmVyXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDYsIGogPSAwOyBpID49IHN0YXJ0OyBpIC09IDYpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIGksIGkgKyA2KTtcbiAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgIC8vIE5PVEU6IGAweDNmZmZmZmAgaXMgaW50ZW50aW9uYWwgaGVyZSwgMjZiaXRzIG1heCBzaGlmdCArIDI0Yml0IGhleCBsaW1iXG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgICBvZmYgKz0gMjQ7XG4gICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgaisrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSArIDYgIT09IHN0YXJ0KSB7XG4gICAgICB3ID0gcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tqICsgMV0gfD0gdyA+Pj4gKDI2IC0gb2ZmKSAmIDB4M2ZmZmZmO1xuICAgIH1cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICBpZiAod2luZG93LmNyeXB0byAmJiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIE1vZGVybiBicm93c2Vyc1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmICh3aW5kb3cubXNDcnlwdG8gJiYgd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIElFXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyXG4gIHRyeSB7XG4gICAgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeScgKyAncHRvJyk7XG5cbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMobik7XG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspXG4gICAgICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gIH1cbn1cbiIsbnVsbCwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG52YXIgcm9vdFBhcmVudCA9IHt9XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gU2FmYXJpIDUtNyBsYWNrcyBzdXBwb3J0IGZvciBjaGFuZ2luZyB0aGUgYE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3JgIHByb3BlcnR5XG4gKiAgICAgb24gb2JqZWN0cy5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIGZ1bmN0aW9uIEJhciAoKSB7fVxuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5mb28gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9XG4gICAgYXJyLmNvbnN0cnVjdG9yID0gQmFyXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgYXJyLmNvbnN0cnVjdG9yID09PSBCYXIgJiYgLy8gY29uc3RydWN0b3IgY2FuIGJlIHNldFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG4vKipcbiAqIENsYXNzOiBCdWZmZXJcbiAqID09PT09PT09PT09PT1cbiAqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGFyZSBhdWdtZW50ZWRcbiAqIHdpdGggZnVuY3Rpb24gcHJvcGVydGllcyBmb3IgYWxsIHRoZSBub2RlIGBCdWZmZXJgIEFQSSBmdW5jdGlvbnMuIFdlIHVzZVxuICogYFVpbnQ4QXJyYXlgIHNvIHRoYXQgc3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXQgcmV0dXJuc1xuICogYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogQnkgYXVnbWVudGluZyB0aGUgaW5zdGFuY2VzLCB3ZSBjYW4gYXZvaWQgbW9kaWZ5aW5nIHRoZSBgVWludDhBcnJheWBcbiAqIHByb3RvdHlwZS5cbiAqL1xuZnVuY3Rpb24gQnVmZmVyIChhcmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICAvLyBBdm9pZCBnb2luZyB0aHJvdWdoIGFuIEFyZ3VtZW50c0FkYXB0b3JUcmFtcG9saW5lIGluIHRoZSBjb21tb24gY2FzZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHJldHVybiBuZXcgQnVmZmVyKGFyZywgYXJndW1lbnRzWzFdKVxuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZylcbiAgfVxuXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDBcbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmcm9tTnVtYmVyKHRoaXMsIGFyZylcbiAgfVxuXG4gIC8vIFNsaWdodGx5IGxlc3MgY29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoaXMsIGFyZywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiAndXRmOCcpXG4gIH1cblxuICAvLyBVbnVzdWFsLlxuICByZXR1cm4gZnJvbU9iamVjdCh0aGlzLCBhcmcpXG59XG5cbmZ1bmN0aW9uIGZyb21OdW1iZXIgKHRoYXQsIGxlbmd0aCkge1xuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGxlbmd0aCkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgLy8gQXNzdW1wdGlvbjogYnl0ZUxlbmd0aCgpIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgPCBrTWF4TGVuZ3RoLlxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcblxuICB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHJldHVybiBmcm9tQnVmZmVyKHRoYXQsIG9iamVjdClcblxuICBpZiAoaXNBcnJheShvYmplY3QpKSByZXR1cm4gZnJvbUFycmF5KHRoYXQsIG9iamVjdClcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtdXN0IHN0YXJ0IHdpdGggbnVtYmVyLCBidWZmZXIsIGFycmF5IG9yIHN0cmluZycpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChvYmplY3QuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBmcm9tVHlwZWRBcnJheSh0aGF0LCBvYmplY3QpXG4gICAgfVxuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCBvYmplY3QpXG4gICAgfVxuICB9XG5cbiAgaWYgKG9iamVjdC5sZW5ndGgpIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iamVjdClcblxuICByZXR1cm4gZnJvbUpzb25PYmplY3QodGhhdCwgb2JqZWN0KVxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyICh0aGF0LCBidWZmZXIpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYnVmZmVyLmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpXG4gIGJ1ZmZlci5jb3B5KHRoYXQsIDAsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5ICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLy8gRHVwbGljYXRlIG9mIGZyb21BcnJheSgpIHRvIGtlZXAgZnJvbUFycmF5KCkgbW9ub21vcnBoaWMuXG5mdW5jdGlvbiBmcm9tVHlwZWRBcnJheSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgLy8gVHJ1bmNhdGluZyB0aGUgZWxlbWVudHMgaXMgcHJvYmFibHkgbm90IHdoYXQgcGVvcGxlIGV4cGVjdCBmcm9tIHR5cGVkXG4gIC8vIGFycmF5cyB3aXRoIEJZVEVTX1BFUl9FTEVNRU5UID4gMSBidXQgaXQncyBjb21wYXRpYmxlIHdpdGggdGhlIGJlaGF2aW9yXG4gIC8vIG9mIHRoZSBvbGQgQnVmZmVyIGNvbnN0cnVjdG9yLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICBhcnJheS5ieXRlTGVuZ3RoXG4gICAgdGhhdCA9IEJ1ZmZlci5fYXVnbWVudChuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tVHlwZWRBcnJheSh0aGF0LCBuZXcgVWludDhBcnJheShhcnJheSkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8vIERlc2VyaWFsaXplIHsgdHlwZTogJ0J1ZmZlcicsIGRhdGE6IFsxLDIsMywuLi5dIH0gaW50byBhIEJ1ZmZlciBvYmplY3QuXG4vLyBSZXR1cm5zIGEgemVyby1sZW5ndGggYnVmZmVyIGZvciBpbnB1dHMgdGhhdCBkb24ndCBjb25mb3JtIHRvIHRoZSBzcGVjLlxuZnVuY3Rpb24gZnJvbUpzb25PYmplY3QgKHRoYXQsIG9iamVjdCkge1xuICB2YXIgYXJyYXlcbiAgdmFyIGxlbmd0aCA9IDBcblxuICBpZiAob2JqZWN0LnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqZWN0LmRhdGEpKSB7XG4gICAgYXJyYXkgPSBvYmplY3QuZGF0YVxuICAgIGxlbmd0aCA9IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgfVxuICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxufSBlbHNlIHtcbiAgLy8gcHJlLXNldCBmb3IgdmFsdWVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBmdXR1cmVcbiAgQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSB1bmRlZmluZWRcbiAgQnVmZmVyLnByb3RvdHlwZS5wYXJlbnQgPSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gYWxsb2NhdGUgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGxlbmd0aCkpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gICAgdGhhdC5faXNCdWZmZXIgPSB0cnVlXG4gIH1cblxuICB2YXIgZnJvbVBvb2wgPSBsZW5ndGggIT09IDAgJiYgbGVuZ3RoIDw9IEJ1ZmZlci5wb29sU2l6ZSA+Pj4gMVxuICBpZiAoZnJvbVBvb2wpIHRoYXQucGFyZW50ID0gcm9vdFBhcmVudFxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAoc3ViamVjdCwgZW5jb2RpbmcpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNsb3dCdWZmZXIpKSByZXR1cm4gbmV3IFNsb3dCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3ViamVjdCwgZW5jb2RpbmcpXG4gIGRlbGV0ZSBidWYucGFyZW50XG4gIHJldHVybiBidWZcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIHZhciBpID0gMFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgYnJlYWtcblxuICAgICsraVxuICB9XG5cbiAgaWYgKGkgIT09IGxlbikge1xuICAgIHggPSBhW2ldXG4gICAgeSA9IGJbaV1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAncmF3JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMuJylcblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcigwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgaXRlbS5jb3B5KGJ1ZiwgcG9zKVxuICAgIHBvcyArPSBpdGVtLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHN0cmluZyA9ICcnICsgc3RyaW5nXG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAvLyBEZXByZWNhdGVkXG4gICAgICBjYXNlICdyYXcnOlxuICAgICAgY2FzZSAncmF3cyc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgc3RhcnQgPSBzdGFydCB8IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBJbmZpbml0eSA/IHRoaXMubGVuZ3RoIDogZW5kIHwgMFxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG4gIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGJpbmFyeVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gMFxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYilcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0KSB7XG4gIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgYnl0ZU9mZnNldCA+Pj0gMFxuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG4gIGlmIChieXRlT2Zmc2V0ID49IHRoaXMubGVuZ3RoKSByZXR1cm4gLTFcblxuICAvLyBOZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoICsgYnl0ZU9mZnNldCwgMClcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xIC8vIHNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nIGFsd2F5cyBmYWlsc1xuICAgIHJldHVybiBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpXG4gIH1cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcywgdmFsLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIFsgdmFsIF0sIGJ5dGVPZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0KSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAodmFyIGkgPSAwOyBieXRlT2Zmc2V0ICsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltieXRlT2Zmc2V0ICsgaV0gPT09IHZhbFtmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleF0pIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWwubGVuZ3RoKSByZXR1cm4gYnl0ZU9mZnNldCArIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbi8vIGBnZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5nZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLnJlYWRVSW50OChvZmZzZXQpXG59XG5cbi8vIGBzZXRgIGlzIGRlcHJlY2F0ZWRcbkJ1ZmZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gc2V0ICh2LCBvZmZzZXQpIHtcbiAgY29uc29sZS5sb2coJy5zZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpXG4gIHJldHVybiB0aGlzLndyaXRlVUludDgodiwgb2Zmc2V0KVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJpbmFyeVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3dhcCA9IGVuY29kaW5nXG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSBsZW5ndGggfCAwXG4gICAgbGVuZ3RoID0gc3dhcFxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBiaW5hcnlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGJpbmFyeVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSBCdWZmZXIuX2F1Z21lbnQodGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSlcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyBpKyspIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIGlmIChuZXdCdWYubGVuZ3RoKSBuZXdCdWYucGFyZW50ID0gdGhpcy5wYXJlbnQgfHwgdGhpc1xuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCd2YWx1ZSBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSwgMClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyBpKyspIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgaSsrKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IHZhbHVlIDwgMCA/IDEgOiAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gdmFsdWUgPCAwID8gMSA6IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWUgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5fc2V0KHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIGZpbGwodmFsdWUsIHN0YXJ0PTAsIGVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCkgZW5kID0gdGhpcy5sZW5ndGhcblxuICBpZiAoZW5kIDwgc3RhcnQpIHRocm93IG5ldyBSYW5nZUVycm9yKCdlbmQgPCBzdGFydCcpXG5cbiAgLy8gRmlsbCAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpc1tpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IHV0ZjhUb0J5dGVzKHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXNbaV0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBgQXJyYXlCdWZmZXJgIHdpdGggdGhlICpjb3BpZWQqIG1lbW9yeSBvZiB0aGUgYnVmZmVyIGluc3RhbmNlLlxuICogQWRkZWQgaW4gTm9kZSAwLjEyLiBPbmx5IGF2YWlsYWJsZSBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgQXJyYXlCdWZmZXIuXG4gKi9cbkJ1ZmZlci5wcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIHRvQXJyYXlCdWZmZXIgKCkge1xuICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgICByZXR1cm4gKG5ldyBCdWZmZXIodGhpcykpLmJ1ZmZlclxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgpXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYnVmLmxlbmd0aDsgaSA8IGxlbjsgaSArPSAxKSB7XG4gICAgICAgIGJ1ZltpXSA9IHRoaXNbaV1cbiAgICAgIH1cbiAgICAgIHJldHVybiBidWYuYnVmZmVyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0J1ZmZlci50b0FycmF5QnVmZmVyIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyJylcbiAgfVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBCUCA9IEJ1ZmZlci5wcm90b3R5cGVcblxuLyoqXG4gKiBBdWdtZW50IGEgVWludDhBcnJheSAqaW5zdGFuY2UqIChub3QgdGhlIFVpbnQ4QXJyYXkgY2xhc3MhKSB3aXRoIEJ1ZmZlciBtZXRob2RzXG4gKi9cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIF9hdWdtZW50IChhcnIpIHtcbiAgYXJyLmNvbnN0cnVjdG9yID0gQnVmZmVyXG4gIGFyci5faXNCdWZmZXIgPSB0cnVlXG5cbiAgLy8gc2F2ZSByZWZlcmVuY2UgdG8gb3JpZ2luYWwgVWludDhBcnJheSBzZXQgbWV0aG9kIGJlZm9yZSBvdmVyd3JpdGluZ1xuICBhcnIuX3NldCA9IGFyci5zZXRcblxuICAvLyBkZXByZWNhdGVkXG4gIGFyci5nZXQgPSBCUC5nZXRcbiAgYXJyLnNldCA9IEJQLnNldFxuXG4gIGFyci53cml0ZSA9IEJQLndyaXRlXG4gIGFyci50b1N0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0xvY2FsZVN0cmluZyA9IEJQLnRvU3RyaW5nXG4gIGFyci50b0pTT04gPSBCUC50b0pTT05cbiAgYXJyLmVxdWFscyA9IEJQLmVxdWFsc1xuICBhcnIuY29tcGFyZSA9IEJQLmNvbXBhcmVcbiAgYXJyLmluZGV4T2YgPSBCUC5pbmRleE9mXG4gIGFyci5jb3B5ID0gQlAuY29weVxuICBhcnIuc2xpY2UgPSBCUC5zbGljZVxuICBhcnIucmVhZFVJbnRMRSA9IEJQLnJlYWRVSW50TEVcbiAgYXJyLnJlYWRVSW50QkUgPSBCUC5yZWFkVUludEJFXG4gIGFyci5yZWFkVUludDggPSBCUC5yZWFkVUludDhcbiAgYXJyLnJlYWRVSW50MTZMRSA9IEJQLnJlYWRVSW50MTZMRVxuICBhcnIucmVhZFVJbnQxNkJFID0gQlAucmVhZFVJbnQxNkJFXG4gIGFyci5yZWFkVUludDMyTEUgPSBCUC5yZWFkVUludDMyTEVcbiAgYXJyLnJlYWRVSW50MzJCRSA9IEJQLnJlYWRVSW50MzJCRVxuICBhcnIucmVhZEludExFID0gQlAucmVhZEludExFXG4gIGFyci5yZWFkSW50QkUgPSBCUC5yZWFkSW50QkVcbiAgYXJyLnJlYWRJbnQ4ID0gQlAucmVhZEludDhcbiAgYXJyLnJlYWRJbnQxNkxFID0gQlAucmVhZEludDE2TEVcbiAgYXJyLnJlYWRJbnQxNkJFID0gQlAucmVhZEludDE2QkVcbiAgYXJyLnJlYWRJbnQzMkxFID0gQlAucmVhZEludDMyTEVcbiAgYXJyLnJlYWRJbnQzMkJFID0gQlAucmVhZEludDMyQkVcbiAgYXJyLnJlYWRGbG9hdExFID0gQlAucmVhZEZsb2F0TEVcbiAgYXJyLnJlYWRGbG9hdEJFID0gQlAucmVhZEZsb2F0QkVcbiAgYXJyLnJlYWREb3VibGVMRSA9IEJQLnJlYWREb3VibGVMRVxuICBhcnIucmVhZERvdWJsZUJFID0gQlAucmVhZERvdWJsZUJFXG4gIGFyci53cml0ZVVJbnQ4ID0gQlAud3JpdGVVSW50OFxuICBhcnIud3JpdGVVSW50TEUgPSBCUC53cml0ZVVJbnRMRVxuICBhcnIud3JpdGVVSW50QkUgPSBCUC53cml0ZVVJbnRCRVxuICBhcnIud3JpdGVVSW50MTZMRSA9IEJQLndyaXRlVUludDE2TEVcbiAgYXJyLndyaXRlVUludDE2QkUgPSBCUC53cml0ZVVJbnQxNkJFXG4gIGFyci53cml0ZVVJbnQzMkxFID0gQlAud3JpdGVVSW50MzJMRVxuICBhcnIud3JpdGVVSW50MzJCRSA9IEJQLndyaXRlVUludDMyQkVcbiAgYXJyLndyaXRlSW50TEUgPSBCUC53cml0ZUludExFXG4gIGFyci53cml0ZUludEJFID0gQlAud3JpdGVJbnRCRVxuICBhcnIud3JpdGVJbnQ4ID0gQlAud3JpdGVJbnQ4XG4gIGFyci53cml0ZUludDE2TEUgPSBCUC53cml0ZUludDE2TEVcbiAgYXJyLndyaXRlSW50MTZCRSA9IEJQLndyaXRlSW50MTZCRVxuICBhcnIud3JpdGVJbnQzMkxFID0gQlAud3JpdGVJbnQzMkxFXG4gIGFyci53cml0ZUludDMyQkUgPSBCUC53cml0ZUludDMyQkVcbiAgYXJyLndyaXRlRmxvYXRMRSA9IEJQLndyaXRlRmxvYXRMRVxuICBhcnIud3JpdGVGbG9hdEJFID0gQlAud3JpdGVGbG9hdEJFXG4gIGFyci53cml0ZURvdWJsZUxFID0gQlAud3JpdGVEb3VibGVMRVxuICBhcnIud3JpdGVEb3VibGVCRSA9IEJQLndyaXRlRG91YmxlQkVcbiAgYXJyLmZpbGwgPSBCUC5maWxsXG4gIGFyci5pbnNwZWN0ID0gQlAuaW5zcGVjdFxuICBhcnIudG9BcnJheUJ1ZmZlciA9IEJQLnRvQXJyYXlCdWZmZXJcblxuICByZXR1cm4gYXJyXG59XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuIiwidmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuaW5oZXJpdHMoQ2lwaGVyQmFzZSwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIHRoaXMuX2RlY29kZXIgPSBudWxsXG4gIHRoaXMuX2VuY29kaW5nID0gbnVsbFxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGlucHV0RW5jKVxuICB9XG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZyA9IGZ1bmN0aW9uICgpIHt9XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIGRvbmUoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9maW5hbCgpIHx8IG5ldyBCdWZmZXIoJycpXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW5hbCkge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cbiAgaWYgKHRoaXMuX2VuY29kaW5nICE9PSBlbmMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhblxcJ3Qgc3dpdGNoIGVuY29kaW5ncycpXG4gIH1cbiAgdmFyIG91dCA9IHRoaXMuX2RlY29kZXIud3JpdGUodmFsdWUpXG4gIGlmIChmaW5hbCkge1xuICAgIG91dCArPSB0aGlzLl9kZWNvZGVyLmVuZCgpXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuIiwidmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESChjdXJ2ZSkge1xuXHRyZXR1cm4gbmV3IEVDREgoY3VydmUpO1xufTtcblxudmFyIGFsaWFzZXMgPSB7XG5cdHNlY3AyNTZrMToge1xuXHRcdG5hbWU6ICdzZWNwMjU2azEnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AyMjRyMToge1xuXHRcdG5hbWU6ICdwMjI0Jyxcblx0XHRieXRlTGVuZ3RoOiAyOFxuXHR9LFxuXHRwcmltZTI1NnYxOiB7XG5cdFx0bmFtZTogJ3AyNTYnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHByaW1lMTkydjE6IHtcblx0XHRuYW1lOiAncDE5MicsXG5cdFx0Ynl0ZUxlbmd0aDogMjRcblx0fSxcblx0ZWQyNTUxOToge1xuXHRcdG5hbWU6ICdlZDI1NTE5Jyxcblx0XHRieXRlTGVuZ3RoOiAzMlxuXHR9LFxuXHRzZWNwMzg0cjE6IHtcblx0XHRuYW1lOiAncDM4NCcsXG5cdFx0Ynl0ZUxlbmd0aDogNDhcblx0fSxcblx0c2VjcDUyMXIxOiB7XG5cdFx0bmFtZTogJ3A1MjEnLFxuXHRcdGJ5dGVMZW5ndGg6IDY2XG5cdH1cbn07XG5cbmFsaWFzZXMucDIyNCA9IGFsaWFzZXMuc2VjcDIyNHIxO1xuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djE7XG5hbGlhc2VzLnAxOTIgPSBhbGlhc2VzLnNlY3AxOTJyMSA9IGFsaWFzZXMucHJpbWUxOTJ2MTtcbmFsaWFzZXMucDM4NCA9IGFsaWFzZXMuc2VjcDM4NHIxO1xuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjE7XG5cbmZ1bmN0aW9uIEVDREgoY3VydmUpIHtcblx0dGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXTtcblx0aWYgKCF0aGlzLmN1cnZlVHlwZSApIHtcblx0XHR0aGlzLmN1cnZlVHlwZSA9IHtcblx0XHRcdG5hbWU6IGN1cnZlXG5cdFx0fTtcblx0fVxuXHR0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpO1xuXHR0aGlzLmtleXMgPSB2b2lkIDA7XG59XG5cbkVDREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uIChlbmMsIGZvcm1hdCkge1xuXHR0aGlzLmtleXMgPSB0aGlzLmN1cnZlLmdlbktleVBhaXIoKTtcblx0cmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KGVuYywgZm9ybWF0KTtcbn07XG5cbkVDREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIsIGluZW5jLCBlbmMpIHtcblx0aW5lbmMgPSBpbmVuYyB8fCAndXRmOCc7XG5cdGlmICghQnVmZmVyLmlzQnVmZmVyKG90aGVyKSkge1xuXHRcdG90aGVyID0gbmV3IEJ1ZmZlcihvdGhlciwgaW5lbmMpO1xuXHR9XG5cdHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKCk7XG5cdHZhciBvdXQgPSBvdGhlclB1Yi5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpO1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUob3V0LCBlbmMsIHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHZhciBrZXkgPSB0aGlzLmtleXMuZ2V0UHVibGljKGZvcm1hdCA9PT0gJ2NvbXByZXNzZWQnLCB0cnVlKTtcblx0aWYgKGZvcm1hdCA9PT0gJ2h5YnJpZCcpIHtcblx0XHRpZiAoa2V5W2tleS5sZW5ndGggLSAxXSAlIDIpIHtcblx0XHRcdGtleVswXSA9IDc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtleSBbMF0gPSA2O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUoa2V5LCBlbmMpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChlbmMpIHtcblx0cmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuXHRcdHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuXHR9XG5cdHRoaXMua2V5cy5faW1wb3J0UHVibGljKHB1Yik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuRUNESC5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChwcml2LCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcblx0XHRwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuXHR9XG5cdHZhciBfcHJpdiA9IG5ldyBCTihwcml2KTtcblx0X3ByaXYgPSBfcHJpdi50b1N0cmluZygxNik7XG5cdHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShfcHJpdik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYywgbGVuKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShibikpIHtcblx0XHRibiA9IGJuLnRvQXJyYXkoKTtcblx0fVxuXHR2YXIgYnVmID0gbmV3IEJ1ZmZlcihibik7XG5cdGlmIChsZW4gJiYgYnVmLmxlbmd0aCA8IGxlbikge1xuXHRcdHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIobGVuIC0gYnVmLmxlbmd0aCk7XG5cdFx0emVyb3MuZmlsbCgwKTtcblx0XHRidWYgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgYnVmXSk7XG5cdH1cblx0aWYgKCFlbmMpIHtcblx0XHRyZXR1cm4gYnVmO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcblx0fVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIG1kNSA9IHJlcXVpcmUoJy4vbWQ1JylcbnZhciBybWQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG5cbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxuXG5mdW5jdGlvbiBIYXNoTm9Db25zdHJ1Y3RvcihoYXNoKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gaGFzaFxuICB0aGlzLmJ1ZmZlcnMgPSBbXVxufVxuXG5pbmhlcml0cyhIYXNoTm9Db25zdHJ1Y3RvciwgQmFzZSlcblxuSGFzaE5vQ29uc3RydWN0b3IucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmJ1ZmZlcnMucHVzaChkYXRhKVxufVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmJ1ZmZlcnMpXG4gIHZhciByID0gdGhpcy5faGFzaChidWYpXG4gIHRoaXMuYnVmZmVycyA9IG51bGxcblxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBIYXNoKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICgnbWQ1JyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKG1kNSlcbiAgaWYgKCdybWQxNjAnID09PSBhbGcgfHwgJ3JpcGVtZDE2MCcgPT09IGFsZykgcmV0dXJuIG5ldyBIYXNoTm9Db25zdHJ1Y3RvcihybWQxNjApXG5cbiAgcmV0dXJuIG5ldyBIYXNoKHNoYShhbGcpKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludFNpemUgPSA0O1xudmFyIHplcm9CdWZmZXIgPSBuZXcgQnVmZmVyKGludFNpemUpOyB6ZXJvQnVmZmVyLmZpbGwoMCk7XG52YXIgY2hyc3ogPSA4O1xuXG5mdW5jdGlvbiB0b0FycmF5KGJ1ZiwgYmlnRW5kaWFuKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAlIGludFNpemUpICE9PSAwKSB7XG4gICAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggKyAoaW50U2l6ZSAtIChidWYubGVuZ3RoICUgaW50U2l6ZSkpO1xuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW2J1ZiwgemVyb0J1ZmZlcl0sIGxlbik7XG4gIH1cblxuICB2YXIgYXJyID0gW107XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi5yZWFkSW50MzJCRSA6IGJ1Zi5yZWFkSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpICs9IGludFNpemUpIHtcbiAgICBhcnIucHVzaChmbi5jYWxsKGJ1ZiwgaSkpO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyKGFyciwgc2l6ZSwgYmlnRW5kaWFuKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgZm4gPSBiaWdFbmRpYW4gPyBidWYud3JpdGVJbnQzMkJFIDogYnVmLndyaXRlSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBmbi5jYWxsKGJ1ZiwgYXJyW2ldLCBpICogNCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gaGFzaChidWYsIGZuLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IG5ldyBCdWZmZXIoYnVmKTtcbiAgdmFyIGFyciA9IGZuKHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pLCBidWYubGVuZ3RoICogY2hyc3opO1xuICByZXR1cm4gdG9CdWZmZXIoYXJyLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKTtcbn1cbmV4cG9ydHMuaGFzaCA9IGhhc2g7IiwiJ3VzZSBzdHJpY3QnO1xuLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1IE1lc3NhZ2VcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXG4gKiBWZXJzaW9uIDIuMSBDb3B5cmlnaHQgKEMpIFBhdWwgSm9obnN0b24gMTk5OSAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBtb3JlIGluZm8uXG4gKi9cblxudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxuLypcbiAqIENhbGN1bGF0ZSB0aGUgTUQ1IG9mIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMsIGFuZCBhIGJpdCBsZW5ndGhcbiAqL1xuZnVuY3Rpb24gY29yZV9tZDUoeCwgbGVuKVxue1xuICAvKiBhcHBlbmQgcGFkZGluZyAqL1xuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8ICgobGVuKSAlIDMyKTtcbiAgeFsoKChsZW4gKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gbGVuO1xuXG4gIHZhciBhID0gIDE3MzI1ODQxOTM7XG4gIHZhciBiID0gLTI3MTczMzg3OTtcbiAgdmFyIGMgPSAtMTczMjU4NDE5NDtcbiAgdmFyIGQgPSAgMjcxNzMzODc4O1xuXG4gIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSArPSAxNilcbiAge1xuICAgIHZhciBvbGRhID0gYTtcbiAgICB2YXIgb2xkYiA9IGI7XG4gICAgdmFyIG9sZGMgPSBjO1xuICAgIHZhciBvbGRkID0gZDtcblxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyAwXSwgNyAsIC02ODA4NzY5MzYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyAxXSwgMTIsIC0zODk1NjQ1ODYpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTcsICA2MDYxMDU4MTkpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDcgLCAtMTc2NDE4ODk3KTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsgNV0sIDEyLCAgMTIwMDA4MDQyNik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDZdLCAxNywgLTE0NzMyMzEzNDEpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyA3XSwgMjIsIC00NTcwNTk4Myk7XG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDhdLCA3ICwgIDE3NzAwMzU0MTYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA5XSwgMTIsIC0xOTU4NDE0NDE3KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE3LCAtNDIwNjMpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKzExXSwgMjIsIC0xOTkwNDA0MTYyKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDcgLCAgMTgwNDYwMzY4Mik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krMTNdLCAxMiwgLTQwMzQxMTAxKTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE3LCAtMTUwMjAwMjI5MCk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTVdLCAyMiwgIDEyMzY1MzUzMjkpO1xuXG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDFdLCA1ICwgLTE2NTc5NjUxMCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDZdLCA5ICwgLTEwNjk1MDE2MzIpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKzExXSwgMTQsICA2NDM3MTc3MTMpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyAwXSwgMjAsIC0zNzM4OTczMDIpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKyA1XSwgNSAsIC03MDE1NTg2OTEpO1xuICAgIGQgPSBtZDVfZ2coZCwgYSwgYiwgYywgeFtpKzEwXSwgOSAsICAzODAxNjA4Myk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTVdLCAxNCwgLTY2MDQ3ODMzNSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDRdLCAyMCwgLTQwNTUzNzg0OCk7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDldLCA1ICwgIDU2ODQ0NjQzOCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTRdLCA5ICwgLTEwMTk4MDM2OTApO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyAzXSwgMTQsIC0xODczNjM5NjEpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyA4XSwgMjAsICAxMTYzNTMxNTAxKTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsxM10sIDUgLCAtMTQ0NDY4MTQ2Nyk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDJdLCA5ICwgLTUxNDAzNzg0KTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE0LCAgMTczNTMyODQ3Myk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krMTJdLCAyMCwgLTE5MjY2MDc3MzQpO1xuXG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDVdLCA0ICwgLTM3ODU1OCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDhdLCAxMSwgLTIwMjI1NzQ0NjMpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKzExXSwgMTYsICAxODM5MDMwNTYyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxNF0sIDIzLCAtMzUzMDk1NTYpO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKyAxXSwgNCAsIC0xNTMwOTkyMDYwKTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgNF0sIDExLCAgMTI3Mjg5MzM1Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDddLCAxNiwgLTE1NTQ5NzYzMik7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krMTBdLCAyMywgLTEwOTQ3MzA2NDApO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKzEzXSwgNCAsICA2ODEyNzkxNzQpO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyAwXSwgMTEsIC0zNTg1MzcyMjIpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKyAzXSwgMTYsIC03MjI1MjE5NzkpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKyA2XSwgMjMsICA3NjAyOTE4OSk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDldLCA0ICwgLTY0MDM2NDQ4Nyk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krMTJdLCAxMSwgLTQyMTgxNTgzNSk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTVdLCAxNiwgIDUzMDc0MjUyMCk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDJdLCAyMywgLTk5NTMzODY1MSk7XG5cbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgMF0sIDYgLCAtMTk4NjMwODQ0KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsgN10sIDEwLCAgMTEyNjg5MTQxNSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krMTRdLCAxNSwgLTE0MTYzNTQ5MDUpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA1XSwgMjEsIC01NzQzNDA1NSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krMTJdLCA2ICwgIDE3MDA0ODU1NzEpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyAzXSwgMTAsIC0xODk0OTg2NjA2KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE1LCAtMTA1MTUyMyk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDFdLCAyMSwgLTIwNTQ5MjI3OTkpO1xuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyA4XSwgNiAsICAxODczMzEzMzU5KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxNV0sIDEwLCAtMzA2MTE3NDQpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyA2XSwgMTUsIC0xNTYwMTk4MzgwKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsxM10sIDIxLCAgMTMwOTE1MTY0OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDRdLCA2ICwgLTE0NTUyMzA3MCk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krMTFdLCAxMCwgLTExMjAyMTAzNzkpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTUsICA3MTg3ODcyNTkpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA5XSwgMjEsIC0zNDM0ODU1NTEpO1xuXG4gICAgYSA9IHNhZmVfYWRkKGEsIG9sZGEpO1xuICAgIGIgPSBzYWZlX2FkZChiLCBvbGRiKTtcbiAgICBjID0gc2FmZV9hZGQoYywgb2xkYyk7XG4gICAgZCA9IHNhZmVfYWRkKGQsIG9sZGQpO1xuICB9XG4gIHJldHVybiBBcnJheShhLCBiLCBjLCBkKTtcblxufVxuXG4vKlxuICogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgZm91ciBiYXNpYyBvcGVyYXRpb25zIHRoZSBhbGdvcml0aG0gdXNlcy5cbiAqL1xuZnVuY3Rpb24gbWQ1X2NtbihxLCBhLCBiLCB4LCBzLCB0KVxue1xuICByZXR1cm4gc2FmZV9hZGQoYml0X3JvbChzYWZlX2FkZChzYWZlX2FkZChhLCBxKSwgc2FmZV9hZGQoeCwgdCkpLCBzKSxiKTtcbn1cbmZ1bmN0aW9uIG1kNV9mZihhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfZ2coYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuZnVuY3Rpb24gbWQ1X2hoKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaWkoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuXG4vKlxuICogQWRkIGludGVnZXJzLCB3cmFwcGluZyBhdCAyXjMyLiBUaGlzIHVzZXMgMTYtYml0IG9wZXJhdGlvbnMgaW50ZXJuYWxseVxuICogdG8gd29yayBhcm91bmQgYnVncyBpbiBzb21lIEpTIGludGVycHJldGVycy5cbiAqL1xuZnVuY3Rpb24gc2FmZV9hZGQoeCwgeSlcbntcbiAgdmFyIGxzdyA9ICh4ICYgMHhGRkZGKSArICh5ICYgMHhGRkZGKTtcbiAgdmFyIG1zdyA9ICh4ID4+IDE2KSArICh5ID4+IDE2KSArIChsc3cgPj4gMTYpO1xuICByZXR1cm4gKG1zdyA8PCAxNikgfCAobHN3ICYgMHhGRkZGKTtcbn1cblxuLypcbiAqIEJpdHdpc2Ugcm90YXRlIGEgMzItYml0IG51bWJlciB0byB0aGUgbGVmdC5cbiAqL1xuZnVuY3Rpb24gYml0X3JvbChudW0sIGNudClcbntcbiAgcmV0dXJuIChudW0gPDwgY250KSB8IChudW0gPj4+ICgzMiAtIGNudCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1kNShidWYpIHtcbiAgcmV0dXJuIGhlbHBlcnMuaGFzaChidWYsIGNvcmVfbWQ1LCAxNik7XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvYnJvd3NlcicpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG5cbnZhciBaRVJPUyA9IG5ldyBCdWZmZXIoMTI4KVxuWkVST1MuZmlsbCgwKVxuXG5mdW5jdGlvbiBIbWFjKGFsZywga2V5KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IG5ldyBCdWZmZXIoa2V5KVxuICB9XG5cbiAgdmFyIGJsb2Nrc2l6ZSA9IChhbGcgPT09ICdzaGE1MTInIHx8IGFsZyA9PT0gJ3NoYTM4NCcpID8gMTI4IDogNjRcblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGtleSkuZGlnZXN0KClcblxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IG5ldyBCdWZmZXIoYmxvY2tzaXplKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChhbGcpLnVwZGF0ZShpcGFkKVxufVxuXG5pbmhlcml0cyhIbWFjLCBUcmFuc2Zvcm0pXG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSwgZW5jKVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkhtYWMucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAobmV4dCkge1xuICB0aGlzLnB1c2godGhpcy5kaWdlc3QoKSlcblxuICBuZXh0KClcbn1cblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcblxuICByZXR1cm4gY3JlYXRlSGFzaCh0aGlzLl9hbGcpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KGVuYylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIbWFjKGFsZywga2V5KSB7XG4gIHJldHVybiBuZXcgSG1hYyhhbGcsIGtleSlcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnJhbmRvbUJ5dGVzID0gZXhwb3J0cy5ybmcgPSBleHBvcnRzLnBzZXVkb1JhbmRvbUJ5dGVzID0gZXhwb3J0cy5wcm5nID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuZXhwb3J0cy5jcmVhdGVIYXNoID0gZXhwb3J0cy5IYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxuZXhwb3J0cy5jcmVhdGVIbWFjID0gZXhwb3J0cy5IbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxuXG52YXIgaGFzaGVzID0gWydzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsICdtZDUnLCAncm1kMTYwJ10uY29uY2F0KE9iamVjdC5rZXlzKHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbi9hbGdvcycpKSlcbmV4cG9ydHMuZ2V0SGFzaGVzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaGFzaGVzXG59XG5cbnZhciBwID0gcmVxdWlyZSgncGJrZGYyJylcbmV4cG9ydHMucGJrZGYyID0gcC5wYmtkZjJcbmV4cG9ydHMucGJrZGYyU3luYyA9IHAucGJrZGYyU3luY1xuXG52YXIgYWVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1jaXBoZXInKVxuO1tcbiAgJ0NpcGhlcicsXG4gICdjcmVhdGVDaXBoZXInLFxuICAnQ2lwaGVyaXYnLFxuICAnY3JlYXRlQ2lwaGVyaXYnLFxuICAnRGVjaXBoZXInLFxuICAnY3JlYXRlRGVjaXBoZXInLFxuICAnRGVjaXBoZXJpdicsXG4gICdjcmVhdGVEZWNpcGhlcml2JyxcbiAgJ2dldENpcGhlcnMnLFxuICAnbGlzdENpcGhlcnMnXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBhZXNba2V5XVxufSlcblxudmFyIGRoID0gcmVxdWlyZSgnZGlmZmllLWhlbGxtYW4nKVxuO1tcbiAgJ0RpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAnLFxuICAnZ2V0RGlmZmllSGVsbG1hbicsXG4gICdjcmVhdGVEaWZmaWVIZWxsbWFuJyxcbiAgJ0RpZmZpZUhlbGxtYW4nXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBkaFtrZXldXG59KVxuXG52YXIgc2lnbiA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbicpXG47W1xuICAnY3JlYXRlU2lnbicsXG4gICdTaWduJyxcbiAgJ2NyZWF0ZVZlcmlmeScsXG4gICdWZXJpZnknXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBzaWduW2tleV1cbn0pXG5cbmV4cG9ydHMuY3JlYXRlRUNESCA9IHJlcXVpcmUoJ2NyZWF0ZS1lY2RoJylcblxudmFyIHB1YmxpY0VuY3J5cHQgPSByZXF1aXJlKCdwdWJsaWMtZW5jcnlwdCcpXG5cbjtbXG4gICdwdWJsaWNFbmNyeXB0JyxcbiAgJ3ByaXZhdGVFbmNyeXB0JyxcbiAgJ3B1YmxpY0RlY3J5cHQnLFxuICAncHJpdmF0ZURlY3J5cHQnXG5dLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBleHBvcnRzW2tleV0gPSBwdWJsaWNFbmNyeXB0W2tleV1cbn0pXG5cbi8vIHRoZSBsZWFzdCBJIGNhbiBkbyBpcyBtYWtlIGVycm9yIG1lc3NhZ2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgbm9kZS5qcy9jcnlwdG8gYXBpLlxuO1tcbiAgJ2NyZWF0ZUNyZWRlbnRpYWxzJ1xuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIGV4cG9ydHNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAgICdzb3JyeSwgJyArIG5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuICAgICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbiAgICAgICdodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnknXG4gICAgXS5qb2luKCdcXG4nKSlcbiAgfVxufSlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy51dGlscyA9IHJlcXVpcmUoJy4vZGVzL3V0aWxzJyk7XG5leHBvcnRzLkNpcGhlciA9IHJlcXVpcmUoJy4vZGVzL2NpcGhlcicpO1xuZXhwb3J0cy5ERVMgPSByZXF1aXJlKCcuL2Rlcy9kZXMnKTtcbmV4cG9ydHMuQ0JDID0gcmVxdWlyZSgnLi9kZXMvY2JjJyk7XG5leHBvcnRzLkVERSA9IHJlcXVpcmUoJy4vZGVzL2VkZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHByb3RvID0ge307XG5cbmZ1bmN0aW9uIENCQ1N0YXRlKGl2KSB7XG4gIGFzc2VydC5lcXVhbChpdi5sZW5ndGgsIDgsICdJbnZhbGlkIElWIGxlbmd0aCcpO1xuXG4gIHRoaXMuaXYgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdi5sZW5ndGg7IGkrKylcbiAgICB0aGlzLml2W2ldID0gaXZbaV07XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlKEJhc2UpIHtcbiAgZnVuY3Rpb24gQ0JDKG9wdGlvbnMpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy5fY2JjSW5pdCgpO1xuICB9XG4gIGluaGVyaXRzKENCQywgQmFzZSk7XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm90byk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIENCQy5wcm90b3R5cGVba2V5XSA9IHByb3RvW2tleV07XG4gIH1cblxuICBDQkMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IENCQyhvcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4gQ0JDO1xufVxuXG5leHBvcnRzLmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGU7XG5cbnByb3RvLl9jYmNJbml0ID0gZnVuY3Rpb24gX2NiY0luaXQoKSB7XG4gIHZhciBzdGF0ZSA9IG5ldyBDQkNTdGF0ZSh0aGlzLm9wdGlvbnMuaXYpO1xuICB0aGlzLl9jYmNTdGF0ZSA9IHN0YXRlO1xufTtcblxucHJvdG8uX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fY2JjU3RhdGU7XG4gIHZhciBzdXBlclByb3RvID0gdGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlO1xuXG4gIHZhciBpdiA9IHN0YXRlLml2O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSBePSBpbnBbaW5PZmYgKyBpXTtcblxuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGl2LCAwLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IG91dFtvdXRPZmYgKyBpXTtcbiAgfSBlbHNlIHtcbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBvdXRbb3V0T2ZmICsgaV0gXj0gaXZbaV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IGlucFtpbk9mZiArIGldO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBDaXBoZXIob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIHRoaXMudHlwZSA9IHRoaXMub3B0aW9ucy50eXBlO1xuICB0aGlzLmJsb2NrU2l6ZSA9IDg7XG4gIHRoaXMuX2luaXQoKTtcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyO1xuXG5DaXBoZXIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gX2luaXQoKSB7XG4gIC8vIE1pZ2h0IGJlIG92ZXJyaWRlZFxufTtcblxuQ2lwaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoZGF0YSkge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdkZWNyeXB0JylcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRGVjcnlwdChkYXRhKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVFbmNyeXB0KGRhdGEpO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fYnVmZmVyID0gZnVuY3Rpb24gX2J1ZmZlcihkYXRhLCBvZmYpIHtcbiAgLy8gQXBwZW5kIGRhdGEgdG8gYnVmZmVyXG4gIHZhciBtaW4gPSBNYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLmJ1ZmZlck9mZiwgZGF0YS5sZW5ndGggLSBvZmYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbjsgaSsrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmICsgaV0gPSBkYXRhW29mZiArIGldO1xuICB0aGlzLmJ1ZmZlck9mZiArPSBtaW47XG5cbiAgLy8gU2hpZnQgbmV4dFxuICByZXR1cm4gbWluO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmx1c2hCdWZmZXIgPSBmdW5jdGlvbiBfZmx1c2hCdWZmZXIob3V0LCBvZmYpIHtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIG9mZik7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbiAgcmV0dXJuIHRoaXMuYmxvY2tTaXplO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVFbmNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSB8IDA7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgaWYgKHRoaXMuYnVmZmVyT2ZmICE9PSAwKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICAgIGlmICh0aGlzLmJ1ZmZlck9mZiA9PT0gdGhpcy5idWZmZXIubGVuZ3RoKVxuICAgICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIFdyaXRlIGJsb2Nrc1xuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGggLSAoKGRhdGEubGVuZ3RoIC0gaW5wdXRPZmYpICUgdGhpcy5ibG9ja1NpemUpO1xuICBmb3IgKDsgaW5wdXRPZmYgPCBtYXg7IGlucHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKGRhdGEsIGlucHV0T2ZmLCBvdXQsIG91dHB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplO1xuICB9XG5cbiAgLy8gUXVldWUgcmVzdFxuICBmb3IgKDsgaW5wdXRPZmYgPCBkYXRhLmxlbmd0aDsgaW5wdXRPZmYrKywgdGhpcy5idWZmZXJPZmYrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl0gPSBkYXRhW2lucHV0T2ZmXTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVEZWNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gTWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSAtIDE7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogb3B0aW1pemUgaXQsIHRoaXMgaXMgZmFyIGZyb20gb3B0aW1hbFxuICBmb3IgKDsgY291bnQgPiAwOyBjb3VudC0tKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gQnVmZmVyIHJlc3Qgb2YgdGhlIGlucHV0XG4gIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiBmaW5hbChidWZmZXIpIHtcbiAgdmFyIGZpcnN0O1xuICBpZiAoYnVmZmVyKVxuICAgIGZpcnN0ID0gdGhpcy51cGRhdGUoYnVmZmVyKTtcblxuICB2YXIgbGFzdDtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbEVuY3J5cHQoKTtcbiAgZWxzZVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbERlY3J5cHQoKTtcblxuICBpZiAoZmlyc3QpXG4gICAgcmV0dXJuIGZpcnN0LmNvbmNhdChsYXN0KTtcbiAgZWxzZVxuICAgIHJldHVybiBsYXN0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICBpZiAob2ZmID09PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB3aGlsZSAob2ZmIDwgYnVmZmVyLmxlbmd0aClcbiAgICBidWZmZXJbb2ZmKytdID0gMDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdCA9IGZ1bmN0aW9uIF9maW5hbEVuY3J5cHQoKSB7XG4gIGlmICghdGhpcy5fcGFkKHRoaXMuYnVmZmVyLCB0aGlzLmJ1ZmZlck9mZikpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgMCk7XG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdCA9IGZ1bmN0aW9uIF9maW5hbERlY3J5cHQoKSB7XG4gIGFzc2VydC5lcXVhbCh0aGlzLmJ1ZmZlck9mZiwgdGhpcy5ibG9ja1NpemUsICdOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCcpO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fZmx1c2hCdWZmZXIob3V0LCAwKTtcblxuICByZXR1cm4gdGhpcy5fdW5wYWQob3V0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgdXRpbHMgPSBkZXMudXRpbHM7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcblxuZnVuY3Rpb24gREVTU3RhdGUoKSB7XG4gIHRoaXMudG1wID0gbmV3IEFycmF5KDIpO1xuICB0aGlzLmtleXMgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBERVMob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgREVTU3RhdGUoKTtcbiAgdGhpcy5fZGVzU3RhdGUgPSBzdGF0ZTtcblxuICB0aGlzLmRlcml2ZUtleXMoc3RhdGUsIG9wdGlvbnMua2V5KTtcbn1cbmluaGVyaXRzKERFUywgQ2lwaGVyKTtcbm1vZHVsZS5leHBvcnRzID0gREVTO1xuXG5ERVMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBERVMob3B0aW9ucyk7XG59O1xuXG52YXIgc2hpZnRUYWJsZSA9IFtcbiAgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMixcbiAgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMVxuXTtcblxuREVTLnByb3RvdHlwZS5kZXJpdmVLZXlzID0gZnVuY3Rpb24gZGVyaXZlS2V5cyhzdGF0ZSwga2V5KSB7XG4gIHN0YXRlLmtleXMgPSBuZXcgQXJyYXkoMTYgKiAyKTtcblxuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgdGhpcy5ibG9ja1NpemUsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIga0wgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCAwKTtcbiAgdmFyIGtSID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgNCk7XG5cbiAgdXRpbHMucGMxKGtMLCBrUiwgc3RhdGUudG1wLCAwKTtcbiAga0wgPSBzdGF0ZS50bXBbMF07XG4gIGtSID0gc3RhdGUudG1wWzFdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgc2hpZnQgPSBzaGlmdFRhYmxlW2kgPj4+IDFdO1xuICAgIGtMID0gdXRpbHMucjI4c2hsKGtMLCBzaGlmdCk7XG4gICAga1IgPSB1dGlscy5yMjhzaGwoa1IsIHNoaWZ0KTtcbiAgICB1dGlscy5wYzIoa0wsIGtSLCBzdGF0ZS5rZXlzLCBpKTtcbiAgfVxufTtcblxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9kZXNTdGF0ZTtcblxuICB2YXIgbCA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmKTtcbiAgdmFyIHIgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZiArIDQpO1xuXG4gIC8vIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMuaXAobCwgciwgc3RhdGUudG1wLCAwKTtcbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgdGhpcy5fZW5jcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcbiAgZWxzZVxuICAgIHRoaXMuX2RlY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgbCwgb3V0T2ZmKTtcbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIHIsIG91dE9mZiArIDQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICB2YXIgdmFsdWUgPSBidWZmZXIubGVuZ3RoIC0gb2ZmO1xuICBmb3IgKHZhciBpID0gb2ZmOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGJ1ZmZlcltpXSA9IHZhbHVlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuREVTLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHZhciBwYWQgPSBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICBmb3IgKHZhciBpID0gYnVmZmVyLmxlbmd0aCAtIHBhZDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBhc3NlcnQuZXF1YWwoYnVmZmVyW2ldLCBwYWQpO1xuXG4gIHJldHVybiBidWZmZXIuc2xpY2UoMCwgYnVmZmVyLmxlbmd0aCAtIHBhZCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9lbmNyeXB0ID0gZnVuY3Rpb24gX2VuY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IGxTdGFydDtcbiAgdmFyIHIgPSByU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQociwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IHI7XG4gICAgciA9IChsIF4gZikgPj4+IDA7XG4gICAgbCA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKHIsIGwsIG91dCwgb2ZmKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2RlY3J5cHQgPSBmdW5jdGlvbiBfZGVjcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gclN0YXJ0O1xuICB2YXIgciA9IGxTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSBzdGF0ZS5rZXlzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKGwsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSBsO1xuICAgIGwgPSAociBeIGYpID4+PiAwO1xuICAgIHIgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChsLCByLCBvdXQsIG9mZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGRlcyA9IHJlcXVpcmUoJy4uL2RlcycpO1xudmFyIENpcGhlciA9IGRlcy5DaXBoZXI7XG52YXIgREVTID0gZGVzLkRFUztcblxuZnVuY3Rpb24gRURFU3RhdGUodHlwZSwga2V5KSB7XG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCAyNCwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrMSA9IGtleS5zbGljZSgwLCA4KTtcbiAgdmFyIGsyID0ga2V5LnNsaWNlKDgsIDE2KTtcbiAgdmFyIGszID0ga2V5LnNsaWNlKDE2LCAyNCk7XG5cbiAgaWYgKHR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazEgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMyB9KVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMyB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsxIH0pXG4gICAgXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBFREUob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgRURFU3RhdGUodGhpcy50eXBlLCB0aGlzLm9wdGlvbnMua2V5KTtcbiAgdGhpcy5fZWRlU3RhdGUgPSBzdGF0ZTtcbn1cbmluaGVyaXRzKEVERSwgQ2lwaGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFREU7XG5cbkVERS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEVERShvcHRpb25zKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZWRlU3RhdGU7XG5cbiAgc3RhdGUuY2lwaGVyc1swXS5fdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1sxXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMl0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xufTtcblxuRURFLnByb3RvdHlwZS5fcGFkID0gREVTLnByb3RvdHlwZS5fcGFkO1xuRURFLnByb3RvdHlwZS5fdW5wYWQgPSBERVMucHJvdG90eXBlLl91bnBhZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUoYnl0ZXMsIG9mZikge1xuICB2YXIgcmVzID0gIChieXRlc1swICsgb2ZmXSA8PCAyNCkgfFxuICAgICAgICAgICAgIChieXRlc1sxICsgb2ZmXSA8PCAxNikgfFxuICAgICAgICAgICAgIChieXRlc1syICsgb2ZmXSA8PCA4KSB8XG4gICAgICAgICAgICAgYnl0ZXNbMyArIG9mZl07XG4gIHJldHVybiByZXMgPj4+IDA7XG59O1xuXG5leHBvcnRzLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFKGJ5dGVzLCB2YWx1ZSwgb2ZmKSB7XG4gIGJ5dGVzWzAgKyBvZmZdID0gdmFsdWUgPj4+IDI0O1xuICBieXRlc1sxICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gMTYpICYgMHhmZjtcbiAgYnl0ZXNbMiArIG9mZl0gPSAodmFsdWUgPj4+IDgpICYgMHhmZjtcbiAgYnl0ZXNbMyArIG9mZl0gPSB2YWx1ZSAmIDB4ZmY7XG59O1xuXG5leHBvcnRzLmlwID0gZnVuY3Rpb24gaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnJpcCA9IGZ1bmN0aW9uIHJpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGkgPSA0OyBpIDwgODsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBjMSA9IGZ1bmN0aW9uIHBjMShpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgLy8gNywgMTUsIDIzLCAzMSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNiwgMTQsIDIyLCAzMCwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNSwgMTMsIDIxLCAyOSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNCwgMTIsIDIwLCAyOFxuICBmb3IgKHZhciBpID0gNzsgaSA+PSA1OyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICAvLyAxLCA5LCAxNywgMjUsIDMzLCA0MSwgNDksIDU3XG4gIC8vIDIsIDEwLCAxOCwgMjYsIDM0LCA0MiwgNTAsIDU4XG4gIC8vIDMsIDExLCAxOSwgMjcsIDM1LCA0MywgNTEsIDU5XG4gIC8vIDM2LCA0NCwgNTIsIDYwXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnIyOHNobCA9IGZ1bmN0aW9uIHIyOHNobChudW0sIHNoaWZ0KSB7XG4gIHJldHVybiAoKG51bSA8PCBzaGlmdCkgJiAweGZmZmZmZmYpIHwgKG51bSA+Pj4gKDI4IC0gc2hpZnQpKTtcbn07XG5cbnZhciBwYzJ0YWJsZSA9IFtcbiAgLy8gaW5MID0+IG91dExcbiAgMTQsIDExLCAxNywgNCwgMjcsIDIzLCAyNSwgMCxcbiAgMTMsIDIyLCA3LCAxOCwgNSwgOSwgMTYsIDI0LFxuICAyLCAyMCwgMTIsIDIxLCAxLCA4LCAxNSwgMjYsXG5cbiAgLy8gaW5SID0+IG91dFJcbiAgMTUsIDQsIDI1LCAxOSwgOSwgMSwgMjYsIDE2LFxuICA1LCAxMSwgMjMsIDgsIDEyLCA3LCAxNywgMCxcbiAgMjIsIDMsIDEwLCAxNCwgNiwgMjAsIDI3LCAyNFxuXTtcblxuZXhwb3J0cy5wYzIgPSBmdW5jdGlvbiBwYzIoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIHZhciBsZW4gPSBwYzJ0YWJsZS5sZW5ndGggPj4+IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluTCA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG4gIGZvciAodmFyIGkgPSBsZW47IGkgPCBwYzJ0YWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5SID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5leHBhbmQgPSBmdW5jdGlvbiBleHBhbmQociwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgb3V0TCA9ICgociAmIDEpIDw8IDUpIHwgKHIgPj4+IDI3KTtcbiAgZm9yICh2YXIgaSA9IDIzOyBpID49IDE1OyBpIC09IDQpIHtcbiAgICBvdXRMIDw8PSA2O1xuICAgIG91dEwgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgfVxuICBmb3IgKHZhciBpID0gMTE7IGkgPj0gMzsgaSAtPSA0KSB7XG4gICAgb3V0UiB8PSAociA+Pj4gaSkgJiAweDNmO1xuICAgIG91dFIgPDw9IDY7XG4gIH1cbiAgb3V0UiB8PSAoKHIgJiAweDFmKSA8PCAxKSB8IChyID4+PiAzMSk7XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbnZhciBzVGFibGUgPSBbXG4gIDE0LCAwLCA0LCAxNSwgMTMsIDcsIDEsIDQsIDIsIDE0LCAxNSwgMiwgMTEsIDEzLCA4LCAxLFxuICAzLCAxMCwgMTAsIDYsIDYsIDEyLCAxMiwgMTEsIDUsIDksIDksIDUsIDAsIDMsIDcsIDgsXG4gIDQsIDE1LCAxLCAxMiwgMTQsIDgsIDgsIDIsIDEzLCA0LCA2LCA5LCAyLCAxLCAxMSwgNyxcbiAgMTUsIDUsIDEyLCAxMSwgOSwgMywgNywgMTQsIDMsIDEwLCAxMCwgMCwgNSwgNiwgMCwgMTMsXG5cbiAgMTUsIDMsIDEsIDEzLCA4LCA0LCAxNCwgNywgNiwgMTUsIDExLCAyLCAzLCA4LCA0LCAxNCxcbiAgOSwgMTIsIDcsIDAsIDIsIDEsIDEzLCAxMCwgMTIsIDYsIDAsIDksIDUsIDExLCAxMCwgNSxcbiAgMCwgMTMsIDE0LCA4LCA3LCAxMCwgMTEsIDEsIDEwLCAzLCA0LCAxNSwgMTMsIDQsIDEsIDIsXG4gIDUsIDExLCA4LCA2LCAxMiwgNywgNiwgMTIsIDksIDAsIDMsIDUsIDIsIDE0LCAxNSwgOSxcblxuICAxMCwgMTMsIDAsIDcsIDksIDAsIDE0LCA5LCA2LCAzLCAzLCA0LCAxNSwgNiwgNSwgMTAsXG4gIDEsIDIsIDEzLCA4LCAxMiwgNSwgNywgMTQsIDExLCAxMiwgNCwgMTEsIDIsIDE1LCA4LCAxLFxuICAxMywgMSwgNiwgMTAsIDQsIDEzLCA5LCAwLCA4LCA2LCAxNSwgOSwgMywgOCwgMCwgNyxcbiAgMTEsIDQsIDEsIDE1LCAyLCAxNCwgMTIsIDMsIDUsIDExLCAxMCwgNSwgMTQsIDIsIDcsIDEyLFxuXG4gIDcsIDEzLCAxMywgOCwgMTQsIDExLCAzLCA1LCAwLCA2LCA2LCAxNSwgOSwgMCwgMTAsIDMsXG4gIDEsIDQsIDIsIDcsIDgsIDIsIDUsIDEyLCAxMSwgMSwgMTIsIDEwLCA0LCAxNCwgMTUsIDksXG4gIDEwLCAzLCA2LCAxNSwgOSwgMCwgMCwgNiwgMTIsIDEwLCAxMSwgMSwgNywgMTMsIDEzLCA4LFxuICAxNSwgOSwgMSwgNCwgMywgNSwgMTQsIDExLCA1LCAxMiwgMiwgNywgOCwgMiwgNCwgMTQsXG5cbiAgMiwgMTQsIDEyLCAxMSwgNCwgMiwgMSwgMTIsIDcsIDQsIDEwLCA3LCAxMSwgMTMsIDYsIDEsXG4gIDgsIDUsIDUsIDAsIDMsIDE1LCAxNSwgMTAsIDEzLCAzLCAwLCA5LCAxNCwgOCwgOSwgNixcbiAgNCwgMTEsIDIsIDgsIDEsIDEyLCAxMSwgNywgMTAsIDEsIDEzLCAxNCwgNywgMiwgOCwgMTMsXG4gIDE1LCA2LCA5LCAxNSwgMTIsIDAsIDUsIDksIDYsIDEwLCAzLCA0LCAwLCA1LCAxNCwgMyxcblxuICAxMiwgMTAsIDEsIDE1LCAxMCwgNCwgMTUsIDIsIDksIDcsIDIsIDEyLCA2LCA5LCA4LCA1LFxuICAwLCA2LCAxMywgMSwgMywgMTMsIDQsIDE0LCAxNCwgMCwgNywgMTEsIDUsIDMsIDExLCA4LFxuICA5LCA0LCAxNCwgMywgMTUsIDIsIDUsIDEyLCAyLCA5LCA4LCA1LCAxMiwgMTUsIDMsIDEwLFxuICA3LCAxMSwgMCwgMTQsIDQsIDEsIDEwLCA3LCAxLCA2LCAxMywgMCwgMTEsIDgsIDYsIDEzLFxuXG4gIDQsIDEzLCAxMSwgMCwgMiwgMTEsIDE0LCA3LCAxNSwgNCwgMCwgOSwgOCwgMSwgMTMsIDEwLFxuICAzLCAxNCwgMTIsIDMsIDksIDUsIDcsIDEyLCA1LCAyLCAxMCwgMTUsIDYsIDgsIDEsIDYsXG4gIDEsIDYsIDQsIDExLCAxMSwgMTMsIDEzLCA4LCAxMiwgMSwgMywgNCwgNywgMTAsIDE0LCA3LFxuICAxMCwgOSwgMTUsIDUsIDYsIDAsIDgsIDE1LCAwLCAxNCwgNSwgMiwgOSwgMywgMiwgMTIsXG5cbiAgMTMsIDEsIDIsIDE1LCA4LCAxMywgNCwgOCwgNiwgMTAsIDE1LCAzLCAxMSwgNywgMSwgNCxcbiAgMTAsIDEyLCA5LCA1LCAzLCA2LCAxNCwgMTEsIDUsIDAsIDAsIDE0LCAxMiwgOSwgNywgMixcbiAgNywgMiwgMTEsIDEsIDQsIDE0LCAxLCA3LCA5LCA0LCAxMiwgMTAsIDE0LCA4LCAyLCAxMyxcbiAgMCwgMTUsIDYsIDEyLCAxMCwgOSwgMTMsIDAsIDE1LCAzLCAzLCA1LCA1LCA2LCA4LCAxMVxuXTtcblxuZXhwb3J0cy5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShpbkwsIGluUikge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpbkwgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVtpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluUiA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlWzQgKiAweDQwICsgaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbnZhciBwZXJtdXRlVGFibGUgPSBbXG4gIDE2LCAyNSwgMTIsIDExLCAzLCAyMCwgNCwgMTUsIDMxLCAxNywgOSwgNiwgMjcsIDE0LCAxLCAyMixcbiAgMzAsIDI0LCA4LCAxOCwgMCwgNSwgMjksIDIzLCAxMywgMTksIDIsIDI2LCAxMCwgMjEsIDI4LCA3XG5dO1xuXG5leHBvcnRzLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlKG51bSkge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJtdXRlVGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXQgPDw9IDE7XG4gICAgb3V0IHw9IChudW0gPj4+IHBlcm11dGVUYWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGFkU3BsaXQgPSBmdW5jdGlvbiBwYWRTcGxpdChudW0sIHNpemUsIGdyb3VwKSB7XG4gIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMik7XG4gIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICBzdHIgPSAnMCcgKyBzdHI7XG5cbiAgdmFyIG91dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gZ3JvdXApXG4gICAgb3V0LnB1c2goc3RyLnNsaWNlKGksIGkgKyBncm91cCkpO1xuICByZXR1cm4gb3V0LmpvaW4oJyAnKTtcbn07XG4iLCJ2YXIgZ2VuZXJhdGVQcmltZSA9IHJlcXVpcmUoJy4vbGliL2dlbmVyYXRlUHJpbWUnKVxudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vbGliL3ByaW1lcy5qc29uJylcblxudmFyIERIID0gcmVxdWlyZSgnLi9saWIvZGgnKVxuXG5mdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuIChtb2QpIHtcbiAgdmFyIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5wcmltZSwgJ2hleCcpXG4gIHZhciBnZW4gPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLmdlbiwgJ2hleCcpXG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuKVxufVxuXG52YXIgRU5DT0RJTkdTID0ge1xuICAnYmluYXJ5JzogdHJ1ZSwgJ2hleCc6IHRydWUsICdiYXNlNjQnOiB0cnVlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpZmZpZUhlbGxtYW4gKHByaW1lLCBlbmMsIGdlbmVyYXRvciwgZ2VuYykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGVuYykgfHwgRU5DT0RJTkdTW2VuY10gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjcmVhdGVEaWZmaWVIZWxsbWFuKHByaW1lLCAnYmluYXJ5JywgZW5jLCBnZW5lcmF0b3IpXG4gIH1cblxuICBlbmMgPSBlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuYyA9IGdlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yIHx8IG5ldyBCdWZmZXIoWzJdKVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbmVyYXRvcikpIHtcbiAgICBnZW5lcmF0b3IgPSBuZXcgQnVmZmVyKGdlbmVyYXRvciwgZ2VuYylcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJpbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBESChnZW5lcmF0ZVByaW1lKHByaW1lLCBnZW5lcmF0b3IpLCBnZW5lcmF0b3IsIHRydWUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcmltZSkpIHtcbiAgICBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWUsIGVuYylcbiAgfVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbmVyYXRvciwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGNyZWF0ZURpZmZpZUhlbGxtYW5cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2dlbmVyYXRlUHJpbWUnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IERIO1xuXG5mdW5jdGlvbiBzZXRQdWJsaWNLZXkocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuICB9XG4gIHRoaXMuX3B1YiA9IG5ldyBCTihwdWIpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShwcml2LCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuICB9XG4gIHRoaXMuX3ByaXYgPSBuZXcgQk4ocHJpdik7XG4gIHJldHVybiB0aGlzO1xufVxuXG52YXIgcHJpbWVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gY2hlY2tQcmltZShwcmltZSwgZ2VuZXJhdG9yKSB7XG4gIHZhciBnZW4gPSBnZW5lcmF0b3IudG9TdHJpbmcoJ2hleCcpO1xuICB2YXIgaGV4ID0gW2dlbiwgcHJpbWUudG9TdHJpbmcoMTYpXS5qb2luKCdfJyk7XG4gIGlmIChoZXggaW4gcHJpbWVDYWNoZSkge1xuICAgIHJldHVybiBwcmltZUNhY2hlW2hleF07XG4gIH1cbiAgdmFyIGVycm9yID0gMDtcblxuICBpZiAocHJpbWUuaXNFdmVuKCkgfHxcbiAgICAhcHJpbWVzLnNpbXBsZVNpZXZlIHx8XG4gICAgIXByaW1lcy5mZXJtYXRUZXN0KHByaW1lKSB8fFxuICAgICFtaWxsZXJSYWJpbi50ZXN0KHByaW1lKSkge1xuICAgIC8vbm90IGEgcHJpbWUgc28gKzFcbiAgICBlcnJvciArPSAxO1xuXG4gICAgaWYgKGdlbiA9PT0gJzAyJyB8fCBnZW4gPT09ICcwNScpIHtcbiAgICAgIC8vIHdlJ2QgYmUgYWJsZSB0byBjaGVjayB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBpdCB3b3VsZCBmYWlsIHNvICs4XG4gICAgICBlcnJvciArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3dlIHdvdWxkbid0IGJlIGFibGUgdG8gdGVzdCB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBzbyArNFxuICAgICAgZXJyb3IgKz0gNDtcbiAgICB9XG4gICAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGlmICghbWlsbGVyUmFiaW4udGVzdChwcmltZS5zaHJuKDEpKSkge1xuICAgIC8vbm90IGEgc2FmZSBwcmltZVxuICAgIGVycm9yICs9IDI7XG4gIH1cbiAgdmFyIHJlbTtcbiAgc3dpdGNoIChnZW4pIHtcbiAgICBjYXNlICcwMic6XG4gICAgICBpZiAocHJpbWUubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIC8vIHVuc3VpZGFibGUgZ2VuZXJhdG9yXG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcwNSc6XG4gICAgICByZW0gPSBwcmltZS5tb2QoVEVOKTtcbiAgICAgIGlmIChyZW0uY21wKFRIUkVFKSAmJiByZW0uY21wKFNFVkVOKSkge1xuICAgICAgICAvLyBwcmltZSBtb2QgMTAgbmVlZHMgdG8gZXF1YWwgMyBvciA3XG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXJyb3IgKz0gNDtcbiAgfVxuICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBESChwcmltZSwgZ2VuZXJhdG9yLCBtYWxsZWFibGUpIHtcbiAgdGhpcy5zZXRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgdGhpcy5fX3ByaW1lID0gbmV3IEJOKHByaW1lKTtcbiAgdGhpcy5fcHJpbWUgPSBCTi5tb250KHRoaXMuX19wcmltZSk7XG4gIHRoaXMuX3ByaW1lTGVuID0gcHJpbWUubGVuZ3RoO1xuICB0aGlzLl9wdWIgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaXYgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaW1lQ29kZSA9IHVuZGVmaW5lZDtcbiAgaWYgKG1hbGxlYWJsZSkge1xuICAgIHRoaXMuc2V0UHVibGljS2V5ID0gc2V0UHVibGljS2V5O1xuICAgIHRoaXMuc2V0UHJpdmF0ZUtleSA9IHNldFByaXZhdGVLZXk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fcHJpbWVDb2RlID0gODtcbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSwgJ3ZlcmlmeUVycm9yJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ByaW1lQ29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuX3ByaW1lQ29kZSA9IGNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLCB0aGlzLl9fZ2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1lQ29kZTtcbiAgfVxufSk7XG5ESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3ByaXYpIHtcbiAgICB0aGlzLl9wcml2ID0gbmV3IEJOKHJhbmRvbUJ5dGVzKHRoaXMuX3ByaW1lTGVuKSk7XG4gIH1cbiAgdGhpcy5fcHViID0gdGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoKTtcbn07XG5cbkRILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0ID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIG90aGVyID0gbmV3IEJOKG90aGVyKTtcbiAgb3RoZXIgPSBvdGhlci50b1JlZCh0aGlzLl9wcmltZSk7XG4gIHZhciBzZWNyZXQgPSBvdGhlci5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzZWNyZXQudG9BcnJheSgpKTtcbiAgdmFyIHByaW1lID0gdGhpcy5nZXRQcmltZSgpO1xuICBpZiAob3V0Lmxlbmd0aCA8IHByaW1lLmxlbmd0aCkge1xuICAgIHZhciBmcm9udCA9IG5ldyBCdWZmZXIocHJpbWUubGVuZ3RoIC0gb3V0Lmxlbmd0aCk7XG4gICAgZnJvbnQuZmlsbCgwKTtcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtmcm9udCwgb3V0XSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wcml2LCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaW1lID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX2dlbiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5zZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZ2VuLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuKSkge1xuICAgIGdlbiA9IG5ldyBCdWZmZXIoZ2VuLCBlbmMpO1xuICB9XG4gIHRoaXMuX19nZW4gPSBnZW47XG4gIHRoaXMuX2dlbiA9IG5ldyBCTihnZW4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGJuLCBlbmMpIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoYm4udG9BcnJheSgpKTtcbiAgaWYgKCFlbmMpIHtcbiAgICByZXR1cm4gYnVmO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcbiAgfVxufVxuIiwidmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZmluZFByaW1lO1xuZmluZFByaW1lLnNpbXBsZVNpZXZlID0gc2ltcGxlU2lldmU7XG5maW5kUHJpbWUuZmVybWF0VGVzdCA9IGZlcm1hdFRlc3Q7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBPTkUgPSBuZXcgQk4oMSk7XG52YXIgVFdPID0gbmV3IEJOKDIpO1xudmFyIEZJVkUgPSBuZXcgQk4oNSk7XG52YXIgU0lYVEVFTiA9IG5ldyBCTigxNik7XG52YXIgRUlHSFQgPSBuZXcgQk4oOCk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIEZPVVIgPSBuZXcgQk4oNCk7XG52YXIgVFdFTFZFID0gbmV3IEJOKDEyKTtcbnZhciBwcmltZXMgPSBudWxsO1xuXG5mdW5jdGlvbiBfZ2V0UHJpbWVzKCkge1xuICBpZiAocHJpbWVzICE9PSBudWxsKVxuICAgIHJldHVybiBwcmltZXM7XG5cbiAgdmFyIGxpbWl0ID0gMHgxMDAwMDA7XG4gIHZhciByZXMgPSBbXTtcbiAgcmVzWzBdID0gMjtcbiAgZm9yICh2YXIgaSA9IDEsIGsgPSAzOyBrIDwgbGltaXQ7IGsgKz0gMikge1xuICAgIHZhciBzcXJ0ID0gTWF0aC5jZWlsKE1hdGguc3FydChrKSk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICYmIHJlc1tqXSA8PSBzcXJ0OyBqKyspXG4gICAgICBpZiAoayAlIHJlc1tqXSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG5cbiAgICBpZiAoaSAhPT0gaiAmJiByZXNbal0gPD0gc3FydClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcmVzW2krK10gPSBrO1xuICB9XG4gIHByaW1lcyA9IHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gc2ltcGxlU2lldmUocCkge1xuICB2YXIgcHJpbWVzID0gX2dldFByaW1lcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpbWVzLmxlbmd0aDsgaSsrKVxuICAgIGlmIChwLm1vZG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgaWYgKHAuY21wbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZmVybWF0VGVzdChwKSB7XG4gIHZhciByZWQgPSBCTi5tb250KHApO1xuICByZXR1cm4gVFdPLnRvUmVkKHJlZCkucmVkUG93KHAuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmltZShiaXRzLCBnZW4pIHtcbiAgaWYgKGJpdHMgPCAxNikge1xuICAgIC8vIHRoaXMgaXMgd2hhdCBvcGVuc3NsIGRvZXNcbiAgICBpZiAoZ2VuID09PSAyIHx8IGdlbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHg3Yl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDI3XSk7XG4gICAgfVxuICB9XG4gIGdlbiA9IG5ldyBCTihnZW4pO1xuXG4gIHZhciBudW0sIG4yO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbnVtID0gbmV3IEJOKHJhbmRvbUJ5dGVzKE1hdGguY2VpbChiaXRzIC8gOCkpKTtcbiAgICB3aGlsZSAobnVtLmJpdExlbmd0aCgpID4gYml0cykge1xuICAgICAgbnVtLmlzaHJuKDEpO1xuICAgIH1cbiAgICBpZiAobnVtLmlzRXZlbigpKSB7XG4gICAgICBudW0uaWFkZChPTkUpO1xuICAgIH1cbiAgICBpZiAoIW51bS50ZXN0bigxKSkge1xuICAgICAgbnVtLmlhZGQoVFdPKTtcbiAgICB9XG4gICAgaWYgKCFnZW4uY21wKFRXTykpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWdlbi5jbXAoRklWRSkpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRFTikuY21wKFRIUkVFKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbjIgPSBudW0uc2hybigxKTtcbiAgICBpZiAoc2ltcGxlU2lldmUobjIpICYmIHNpbXBsZVNpZXZlKG51bSkgJiZcbiAgICAgIGZlcm1hdFRlc3QobjIpICYmIGZlcm1hdFRlc3QobnVtKSAmJlxuICAgICAgbWlsbGVyUmFiaW4udGVzdChuMikgJiYgbWlsbGVyUmFiaW4udGVzdChudW0pKSB7XG4gICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgfVxuXG59XG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gICAgXCJtb2RwMVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2M2EzNjIwZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAyXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHA1XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2EyMzczMjdmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE0XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFjYWE2OGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTZcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwNjMxOTlmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE3XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRjYzQwMjRmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE4XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH1cbn0iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IGV4cG9ydHM7XG5cbmVsbGlwdGljLnZlcnNpb24gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuZWxsaXB0aWMudXRpbHMgPSByZXF1aXJlKCcuL2VsbGlwdGljL3V0aWxzJyk7XG5lbGxpcHRpYy5yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuZWxsaXB0aWMuaG1hY0RSQkcgPSByZXF1aXJlKCcuL2VsbGlwdGljL2htYWMtZHJiZycpO1xuZWxsaXB0aWMuY3VydmUgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlJyk7XG5lbGxpcHRpYy5jdXJ2ZXMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2N1cnZlcycpO1xuXG4vLyBQcm90b2NvbHNcbmVsbGlwdGljLmVjID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lYycpO1xuZWxsaXB0aWMuZWRkc2EgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VkZHNhJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgZ2V0TkFGID0gdXRpbHMuZ2V0TkFGO1xudmFyIGdldEpTRiA9IHV0aWxzLmdldEpTRjtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEJhc2VDdXJ2ZSh0eXBlLCBjb25mKSB7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucCA9IG5ldyBCTihjb25mLnAsIDE2KTtcblxuICAvLyBVc2UgTW9udGdvbWVyeSwgd2hlbiB0aGVyZSBpcyBubyBmYXN0IHJlZHVjdGlvbiBmb3IgdGhlIHByaW1lXG4gIHRoaXMucmVkID0gY29uZi5wcmltZSA/IEJOLnJlZChjb25mLnByaW1lKSA6IEJOLm1vbnQodGhpcy5wKTtcblxuICAvLyBVc2VmdWwgZm9yIG1hbnkgY3VydmVzXG4gIHRoaXMuemVybyA9IG5ldyBCTigwKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMub25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIEN1cnZlIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsXG4gIHRoaXMubiA9IGNvbmYubiAmJiBuZXcgQk4oY29uZi5uLCAxNik7XG4gIHRoaXMuZyA9IGNvbmYuZyAmJiB0aGlzLnBvaW50RnJvbUpTT04oY29uZi5nLCBjb25mLmdSZWQpO1xuXG4gIC8vIFRlbXBvcmFyeSBhcnJheXNcbiAgdGhpcy5fd25hZlQxID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDIgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMyA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQ0ID0gbmV3IEFycmF5KDQpO1xuXG4gIC8vIEdlbmVyYWxpemVkIEdyZWcgTWF4d2VsbCdzIHRyaWNrXG4gIHZhciBhZGp1c3RDb3VudCA9IHRoaXMubiAmJiB0aGlzLnAuZGl2KHRoaXMubik7XG4gIGlmICghYWRqdXN0Q291bnQgfHwgYWRqdXN0Q291bnQuY21wbigxMDApID4gMCkge1xuICAgIHRoaXMucmVkTiA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbWF4d2VsbFRyaWNrID0gdHJ1ZTtcbiAgICB0aGlzLnJlZE4gPSB0aGlzLm4udG9SZWQodGhpcy5yZWQpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IEJhc2VDdXJ2ZTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fZml4ZWROYWZNdWwgPSBmdW5jdGlvbiBfZml4ZWROYWZNdWwocCwgaykge1xuICBhc3NlcnQocC5wcmVjb21wdXRlZCk7XG4gIHZhciBkb3VibGVzID0gcC5fZ2V0RG91YmxlcygpO1xuXG4gIHZhciBuYWYgPSBnZXROQUYoaywgMSk7XG4gIHZhciBJID0gKDEgPDwgKGRvdWJsZXMuc3RlcCArIDEpKSAtIChkb3VibGVzLnN0ZXAgJSAyID09PSAwID8gMiA6IDEpO1xuICBJIC89IDM7XG5cbiAgLy8gVHJhbnNsYXRlIGludG8gbW9yZSB3aW5kb3dlZCBmb3JtXG4gIHZhciByZXByID0gW107XG4gIGZvciAodmFyIGogPSAwOyBqIDwgbmFmLmxlbmd0aDsgaiArPSBkb3VibGVzLnN0ZXApIHtcbiAgICB2YXIgbmFmVyA9IDA7XG4gICAgZm9yICh2YXIgayA9IGogKyBkb3VibGVzLnN0ZXAgLSAxOyBrID49IGo7IGstLSlcbiAgICAgIG5hZlcgPSAobmFmVyA8PCAxKSArIG5hZltrXTtcbiAgICByZXByLnB1c2gobmFmVyk7XG4gIH1cblxuICB2YXIgYSA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgYiA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gSTsgaSA+IDA7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwci5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIG5hZlcgPSByZXByW2pdO1xuICAgICAgaWYgKG5hZlcgPT09IGkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdKTtcbiAgICAgIGVsc2UgaWYgKG5hZlcgPT09IC1pKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXS5uZWcoKSk7XG4gICAgfVxuICAgIGEgPSBhLmFkZChiKTtcbiAgfVxuICByZXR1cm4gYS50b1AoKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWwgPSBmdW5jdGlvbiBfd25hZk11bChwLCBrKSB7XG4gIHZhciB3ID0gNDtcblxuICAvLyBQcmVjb21wdXRlIHdpbmRvd1xuICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKHcpO1xuICB3ID0gbmFmUG9pbnRzLnduZDtcbiAgdmFyIHduZCA9IG5hZlBvaW50cy5wb2ludHM7XG5cbiAgLy8gR2V0IE5BRiBmb3JtXG4gIHZhciBuYWYgPSBnZXROQUYoaywgdyk7XG5cbiAgLy8gQWRkIGB0aGlzYCooTisxKSBmb3IgZXZlcnkgdy1OQUYgaW5kZXhcbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gbmFmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gQ291bnQgemVyb2VzXG4gICAgZm9yICh2YXIgayA9IDA7IGkgPj0gMCAmJiBuYWZbaV0gPT09IDA7IGktLSlcbiAgICAgIGsrKztcbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuXG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG4gICAgdmFyIHogPSBuYWZbaV07XG4gICAgYXNzZXJ0KHogIT09IDApO1xuICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKSB7XG4gICAgICAvLyBKICstIFBcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEogKy0gSlxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcC50eXBlID09PSAnYWZmaW5lJyA/IGFjYy50b1AoKSA6IGFjYztcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQgPSBmdW5jdGlvbiBfd25hZk11bEFkZChkZWZXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphY29iaWFuUmVzdWx0KSB7XG4gIHZhciB3bmRXaWR0aCA9IHRoaXMuX3duYWZUMTtcbiAgdmFyIHduZCA9IHRoaXMuX3duYWZUMjtcbiAgdmFyIG5hZiA9IHRoaXMuX3duYWZUMztcblxuICAvLyBGaWxsIGFsbCBhcnJheXNcbiAgdmFyIG1heCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKGRlZlcpO1xuICAgIHduZFdpZHRoW2ldID0gbmFmUG9pbnRzLnduZDtcbiAgICB3bmRbaV0gPSBuYWZQb2ludHMucG9pbnRzO1xuICB9XG5cbiAgLy8gQ29tYiBzbWFsbCB3aW5kb3cgTkFGc1xuICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAxOyBpIC09IDIpIHtcbiAgICB2YXIgYSA9IGkgLSAxO1xuICAgIHZhciBiID0gaTtcbiAgICBpZiAod25kV2lkdGhbYV0gIT09IDEgfHwgd25kV2lkdGhbYl0gIT09IDEpIHtcbiAgICAgIG5hZlthXSA9IGdldE5BRihjb2VmZnNbYV0sIHduZFdpZHRoW2FdKTtcbiAgICAgIG5hZltiXSA9IGdldE5BRihjb2VmZnNbYl0sIHduZFdpZHRoW2JdKTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZlthXS5sZW5ndGgsIG1heCk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYl0ubGVuZ3RoLCBtYXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGNvbWIgPSBbXG4gICAgICBwb2ludHNbYV0sIC8qIDEgKi9cbiAgICAgIG51bGwsIC8qIDMgKi9cbiAgICAgIG51bGwsIC8qIDUgKi9cbiAgICAgIHBvaW50c1tiXSAvKiA3ICovXG4gICAgXTtcblxuICAgIC8vIFRyeSB0byBhdm9pZCBQcm9qZWN0aXZlIHBvaW50cywgaWYgcG9zc2libGVcbiAgICBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55KSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBbXG4gICAgICAtMywgLyogLTEgLTEgKi9cbiAgICAgIC0xLCAvKiAtMSAwICovXG4gICAgICAtNSwgLyogLTEgMSAqL1xuICAgICAgLTcsIC8qIDAgLTEgKi9cbiAgICAgIDAsIC8qIDAgMCAqL1xuICAgICAgNywgLyogMCAxICovXG4gICAgICA1LCAvKiAxIC0xICovXG4gICAgICAxLCAvKiAxIDAgKi9cbiAgICAgIDMgIC8qIDEgMSAqL1xuICAgIF07XG5cbiAgICB2YXIganNmID0gZ2V0SlNGKGNvZWZmc1thXSwgY29lZmZzW2JdKTtcbiAgICBtYXggPSBNYXRoLm1heChqc2ZbMF0ubGVuZ3RoLCBtYXgpO1xuICAgIG5hZlthXSA9IG5ldyBBcnJheShtYXgpO1xuICAgIG5hZltiXSA9IG5ldyBBcnJheShtYXgpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWF4OyBqKyspIHtcbiAgICAgIHZhciBqYSA9IGpzZlswXVtqXSB8IDA7XG4gICAgICB2YXIgamIgPSBqc2ZbMV1bal0gfCAwO1xuXG4gICAgICBuYWZbYV1bal0gPSBpbmRleFsoamEgKyAxKSAqIDMgKyAoamIgKyAxKV07XG4gICAgICBuYWZbYl1bal0gPSAwO1xuICAgICAgd25kW2FdID0gY29tYjtcbiAgICB9XG4gIH1cblxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciB0bXAgPSB0aGlzLl93bmFmVDQ7XG4gIGZvciAodmFyIGkgPSBtYXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGsgPSAwO1xuXG4gICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgdmFyIHplcm8gPSB0cnVlO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgICB0bXBbal0gPSBuYWZbal1baV0gfCAwO1xuICAgICAgICBpZiAodG1wW2pdICE9PSAwKVxuICAgICAgICAgIHplcm8gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghemVybylcbiAgICAgICAgYnJlYWs7XG4gICAgICBrKys7XG4gICAgICBpLS07XG4gICAgfVxuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICB2YXIgeiA9IHRtcFtqXTtcbiAgICAgIHZhciBwO1xuICAgICAgaWYgKHogPT09IDApXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZWxzZSBpZiAoeiA+IDApXG4gICAgICAgIHAgPSB3bmRbal1bKHogLSAxKSA+PiAxXTtcbiAgICAgIGVsc2UgaWYgKHogPCAwKVxuICAgICAgICBwID0gd25kW2pdWygteiAtIDEpID4+IDFdLm5lZygpO1xuXG4gICAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHApO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHApO1xuICAgIH1cbiAgfVxuICAvLyBaZXJvaWZ5IHJlZmVyZW5jZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKylcbiAgICB3bmRbaV0gPSBudWxsO1xuXG4gIGlmIChqYWNvYmlhblJlc3VsdClcbiAgICByZXR1cm4gYWNjO1xuICBlbHNlXG4gICAgcmV0dXJuIGFjYy50b1AoKTtcbn07XG5cbmZ1bmN0aW9uIEJhc2VQb2ludChjdXJ2ZSwgdHlwZSkge1xuICB0aGlzLmN1cnZlID0gY3VydmU7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBudWxsO1xufVxuQmFzZUN1cnZlLkJhc2VQb2ludCA9IEJhc2VQb2ludDtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKC8qb3RoZXIqLykge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIGJ5dGVzID0gdXRpbHMudG9BcnJheShieXRlcywgZW5jKTtcblxuICB2YXIgbGVuID0gdGhpcy5wLmJ5dGVMZW5ndGgoKTtcblxuICAvLyB1bmNvbXByZXNzZWQsIGh5YnJpZC1vZGQsIGh5YnJpZC1ldmVuXG4gIGlmICgoYnl0ZXNbMF0gPT09IDB4MDQgfHwgYnl0ZXNbMF0gPT09IDB4MDYgfHwgYnl0ZXNbMF0gPT09IDB4MDcpICYmXG4gICAgICBieXRlcy5sZW5ndGggLSAxID09PSAyICogbGVuKSB7XG4gICAgaWYgKGJ5dGVzWzBdID09PSAweDA2KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMCk7XG4gICAgZWxzZSBpZiAoYnl0ZXNbMF0gPT09IDB4MDcpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAxKTtcblxuICAgIHZhciByZXMgPSAgdGhpcy5wb2ludChieXRlcy5zbGljZSgxLCAxICsgbGVuKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuc2xpY2UoMSArIGxlbiwgMSArIDIgKiBsZW4pKTtcblxuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoKGJ5dGVzWzBdID09PSAweDAyIHx8IGJ5dGVzWzBdID09PSAweDAzKSAmJlxuICAgICAgICAgICAgICBieXRlcy5sZW5ndGggLSAxID09PSBsZW4pIHtcbiAgICByZXR1cm4gdGhpcy5wb2ludEZyb21YKGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLCBieXRlc1swXSA9PT0gMHgwMyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBvaW50IGZvcm1hdCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkID0gZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZChlbmMpIHtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlKGVuYywgdHJ1ZSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKGNvbXBhY3QpIHtcbiAgdmFyIGxlbiA9IHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7XG4gIHZhciB4ID0gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCBsZW4pO1xuXG4gIGlmIChjb21wYWN0KVxuICAgIHJldHVybiBbIHRoaXMuZ2V0WSgpLmlzRXZlbigpID8gMHgwMiA6IDB4MDMgXS5jb25jYXQoeCk7XG5cbiAgcmV0dXJuIFsgMHgwNCBdLmNvbmNhdCh4LCB0aGlzLmdldFkoKS50b0FycmF5KCdiZScsIGxlbikpIDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGVuYywgY29tcGFjdCkge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuX2VuY29kZShjb21wYWN0KSwgZW5jKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUucHJlY29tcHV0ZSA9IGZ1bmN0aW9uIHByZWNvbXB1dGUocG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHByZWNvbXB1dGVkID0ge1xuICAgIGRvdWJsZXM6IG51bGwsXG4gICAgbmFmOiBudWxsLFxuICAgIGJldGE6IG51bGxcbiAgfTtcbiAgcHJlY29tcHV0ZWQubmFmID0gdGhpcy5fZ2V0TkFGUG9pbnRzKDgpO1xuICBwcmVjb21wdXRlZC5kb3VibGVzID0gdGhpcy5fZ2V0RG91Ymxlcyg0LCBwb3dlcik7XG4gIHByZWNvbXB1dGVkLmJldGEgPSB0aGlzLl9nZXRCZXRhKCk7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBwcmVjb21wdXRlZDtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2hhc0RvdWJsZXMgPSBmdW5jdGlvbiBfaGFzRG91YmxlcyhrKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRvdWJsZXMgPSB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG4gIGlmICghZG91YmxlcylcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGRvdWJsZXMucG9pbnRzLmxlbmd0aCA+PSBNYXRoLmNlaWwoKGsuYml0TGVuZ3RoKCkgKyAxKSAvIGRvdWJsZXMuc3RlcCk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzID0gZnVuY3Rpb24gX2dldERvdWJsZXMoc3RlcCwgcG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG5cbiAgdmFyIGRvdWJsZXMgPSBbIHRoaXMgXTtcbiAgdmFyIGFjYyA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93ZXI7IGkgKz0gc3RlcCkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3RlcDsgaisrKVxuICAgICAgYWNjID0gYWNjLmRibCgpO1xuICAgIGRvdWJsZXMucHVzaChhY2MpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RlcDogc3RlcCxcbiAgICBwb2ludHM6IGRvdWJsZXNcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cyA9IGZ1bmN0aW9uIF9nZXROQUZQb2ludHMod25kKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQubmFmKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtcblxuICB2YXIgcmVzID0gWyB0aGlzIF07XG4gIHZhciBtYXggPSAoMSA8PCB3bmQpIC0gMTtcbiAgdmFyIGRibCA9IG1heCA9PT0gMSA/IG51bGwgOiB0aGlzLmRibCgpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IG1heDsgaSsrKVxuICAgIHJlc1tpXSA9IHJlc1tpIC0gMV0uYWRkKGRibCk7XG4gIHJldHVybiB7XG4gICAgd25kOiB3bmQsXG4gICAgcG9pbnRzOiByZXNcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldEJldGEgPSBmdW5jdGlvbiBfZ2V0QmV0YSgpIHtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmRibHAgPSBmdW5jdGlvbiBkYmxwKGspIHtcbiAgdmFyIHIgPSB0aGlzO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGs7IGkrKylcbiAgICByID0gci5kYmwoKTtcbiAgcmV0dXJuIHI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBFZHdhcmRzQ3VydmUoY29uZikge1xuICAvLyBOT1RFOiBJbXBvcnRhbnQgYXMgd2UgYXJlIGNyZWF0aW5nIHBvaW50IGluIEJhc2UuY2FsbCgpXG4gIHRoaXMudHdpc3RlZCA9IChjb25mLmEgfCAwKSAhPT0gMTtcbiAgdGhpcy5tT25lQSA9IHRoaXMudHdpc3RlZCAmJiAoY29uZi5hIHwgMCkgPT09IC0xO1xuICB0aGlzLmV4dGVuZGVkID0gdGhpcy5tT25lQTtcblxuICBCYXNlLmNhbGwodGhpcywgJ2Vkd2FyZHMnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudW1vZCh0aGlzLnJlZC5tKTtcbiAgdGhpcy5hID0gdGhpcy5hLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jID0gbmV3IEJOKGNvbmYuYywgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5jMiA9IHRoaXMuYy5yZWRTcXIoKTtcbiAgdGhpcy5kID0gbmV3IEJOKGNvbmYuZCwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5kZCA9IHRoaXMuZC5yZWRBZGQodGhpcy5kKTtcblxuICBhc3NlcnQoIXRoaXMudHdpc3RlZCB8fCB0aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDApO1xuICB0aGlzLm9uZUMgPSAoY29uZi5jIHwgMCkgPT09IDE7XG59XG5pbmhlcml0cyhFZHdhcmRzQ3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBFZHdhcmRzQ3VydmU7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEEgPSBmdW5jdGlvbiBfbXVsQShudW0pIHtcbiAgaWYgKHRoaXMubU9uZUEpXG4gICAgcmV0dXJuIG51bS5yZWROZWcoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmEucmVkTXVsKG51bSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxDID0gZnVuY3Rpb24gX211bEMobnVtKSB7XG4gIGlmICh0aGlzLm9uZUMpXG4gICAgcmV0dXJuIG51bTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmMucmVkTXVsKG51bSk7XG59O1xuXG4vLyBKdXN0IGZvciBjb21wYXRpYmlsaXR5IHdpdGggU2hvcnQgY3VydmVcbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSwgeiwgdCk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwoeDIpKTtcbiAgdmFyIGxocyA9IHRoaXMub25lLnJlZFN1Yih0aGlzLmMyLnJlZE11bCh0aGlzLmQpLnJlZE11bCh4MikpO1xuXG4gIHZhciB5MiA9IHJocy5yZWRNdWwobGhzLnJlZEludm0oKSk7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVkgPSBmdW5jdGlvbiBwb2ludEZyb21ZKHksIG9kZCkge1xuICB5ID0gbmV3IEJOKHksIDE2KTtcbiAgaWYgKCF5LnJlZClcbiAgICB5ID0geS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8geF4yID0gKHleMiAtIDEpIC8gKGQgeV4yICsgMSlcbiAgdmFyIHkyID0geS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHkyLnJlZFN1Yih0aGlzLm9uZSk7XG4gIHZhciByaHMgPSB5Mi5yZWRNdWwodGhpcy5kKS5yZWRBZGQodGhpcy5vbmUpO1xuICB2YXIgeDIgPSBsaHMucmVkTXVsKHJocy5yZWRJbnZtKCkpO1xuXG4gIGlmICh4Mi5jbXAodGhpcy56ZXJvKSA9PT0gMCkge1xuICAgIGlmIChvZGQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sIHkpO1xuICB9XG5cbiAgdmFyIHggPSB4Mi5yZWRTcXJ0KCk7XG4gIGlmICh4LnJlZFNxcigpLnJlZFN1Yih4MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgaWYgKHguaXNPZGQoKSAhPT0gb2RkKVxuICAgIHggPSB4LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8gQ3VydmU6IEEgKiBYXjIgKyBZXjIgPSBDXjIgKiAoMSArIEQgKiBYXjIgKiBZXjIpXG4gIHBvaW50Lm5vcm1hbGl6ZSgpO1xuXG4gIHZhciB4MiA9IHBvaW50LngucmVkU3FyKCk7XG4gIHZhciB5MiA9IHBvaW50LnkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB4Mi5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeTIpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoeDIpLnJlZE11bCh5MikpKTtcblxuICByZXR1cm4gbGhzLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIHosIHQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnpPbmUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSB6ID8gbmV3IEJOKHosIDE2KSA6IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHQgJiYgbmV3IEJOKHQsIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAodGhpcy50ICYmICF0aGlzLnQucmVkKVxuICAgICAgdGhpcy50ID0gdGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xuXG4gICAgLy8gVXNlIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQgJiYgIXRoaXMudCkge1xuICAgICAgdGhpcy50ID0gdGhpcy54LnJlZE11bCh0aGlzLnkpO1xuICAgICAgaWYgKCF0aGlzLnpPbmUpXG4gICAgICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gICAgfVxuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgeiwgdCk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0sIG9ialsyXSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnguY21wbigwKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy55LmNtcCh0aGlzLnopID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHREYmwgPSBmdW5jdGlvbiBfZXh0RGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1od2NkXG4gIC8vIDRNICsgNFNcblxuICAvLyBBID0gWDFeMlxuICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gQiA9IFkxXjJcbiAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIEMgPSAyICogWjFeMlxuICB2YXIgYyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgYyA9IGMucmVkSUFkZChjKTtcbiAgLy8gRCA9IGEgKiBBXG4gIHZhciBkID0gdGhpcy5jdXJ2ZS5fbXVsQShhKTtcbiAgLy8gRSA9IChYMSArIFkxKV4yIC0gQSAtIEJcbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGIpO1xuICAvLyBHID0gRCArIEJcbiAgdmFyIGcgPSBkLnJlZEFkZChiKTtcbiAgLy8gRiA9IEcgLSBDXG4gIHZhciBmID0gZy5yZWRTdWIoYyk7XG4gIC8vIEggPSBEIC0gQlxuICB2YXIgaCA9IGQucmVkU3ViKGIpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pEYmwgPSBmdW5jdGlvbiBfcHJvakRibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtYmJqbHBcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwNy1ibFxuICAvLyBhbmQgb3RoZXJzXG4gIC8vIEdlbmVyYWxseSAzTSArIDRTIG9yIDJNICsgNFNcblxuICAvLyBCID0gKFgxICsgWTEpXjJcbiAgdmFyIGIgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7XG4gIC8vIEMgPSBYMV4yXG4gIHZhciBjID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBEID0gWTFeMlxuICB2YXIgZCA9IHRoaXMueS5yZWRTcXIoKTtcblxuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gRSA9IGEgKiBDXG4gICAgdmFyIGUgPSB0aGlzLmN1cnZlLl9tdWxBKGMpO1xuICAgIC8vIEYgPSBFICsgRFxuICAgIHZhciBmID0gZS5yZWRBZGQoZCk7XG4gICAgaWYgKHRoaXMuek9uZSkge1xuICAgICAgLy8gWDMgPSAoQiAtIEMgLSBEKSAqIChGIC0gMilcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkU3ViKGQpLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEZeMiAtIDIgKiBGXG4gICAgICBueiA9IGYucmVkU3FyKCkucmVkU3ViKGYpLnJlZFN1YihmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSCA9IFoxXjJcbiAgICAgIHZhciBoID0gdGhpcy56LnJlZFNxcigpO1xuICAgICAgLy8gSiA9IEYgLSAyICogSFxuICAgICAgdmFyIGogPSBmLnJlZFN1YihoKS5yZWRJU3ViKGgpO1xuICAgICAgLy8gWDMgPSAoQi1DLUQpKkpcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkSVN1YihkKS5yZWRNdWwoaik7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRiAqIEpcbiAgICAgIG56ID0gZi5yZWRNdWwoaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEUgPSBDICsgRFxuICAgIHZhciBlID0gYy5yZWRBZGQoZCk7XG4gICAgLy8gSCA9IChjICogWjEpXjJcbiAgICB2YXIgaCA9IHRoaXMuY3VydmUuX211bEModGhpcy5jLnJlZE11bCh0aGlzLnopKS5yZWRTcXIoKTtcbiAgICAvLyBKID0gRSAtIDIgKiBIXG4gICAgdmFyIGogPSBlLnJlZFN1YihoKS5yZWRTdWIoaCk7XG4gICAgLy8gWDMgPSBjICogKEIgLSBFKSAqIEpcbiAgICBueCA9IHRoaXMuY3VydmUuX211bEMoYi5yZWRJU3ViKGUpKS5yZWRNdWwoaik7XG4gICAgLy8gWTMgPSBjICogRSAqIChDIC0gRClcbiAgICBueSA9IHRoaXMuY3VydmUuX211bEMoZSkucmVkTXVsKGMucmVkSVN1YihkKSk7XG4gICAgLy8gWjMgPSBFICogSlxuICAgIG56ID0gZS5yZWRNdWwoaik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRG91YmxlIGluIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHREYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qRGJsKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dEFkZCA9IGZ1bmN0aW9uIF9leHRBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1od2NkLTNcbiAgLy8gOE1cblxuICAvLyBBID0gKFkxIC0gWDEpICogKFkyIC0gWDIpXG4gIHZhciBhID0gdGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChwLnkucmVkU3ViKHAueCkpO1xuICAvLyBCID0gKFkxICsgWDEpICogKFkyICsgWDIpXG4gIHZhciBiID0gdGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChwLnkucmVkQWRkKHAueCkpO1xuICAvLyBDID0gVDEgKiBrICogVDJcbiAgdmFyIGMgPSB0aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChwLnQpO1xuICAvLyBEID0gWjEgKiAyICogWjJcbiAgdmFyIGQgPSB0aGlzLnoucmVkTXVsKHAuei5yZWRBZGQocC56KSk7XG4gIC8vIEUgPSBCIC0gQVxuICB2YXIgZSA9IGIucmVkU3ViKGEpO1xuICAvLyBGID0gRCAtIENcbiAgdmFyIGYgPSBkLnJlZFN1YihjKTtcbiAgLy8gRyA9IEQgKyBDXG4gIHZhciBnID0gZC5yZWRBZGQoYyk7XG4gIC8vIEggPSBCICsgQVxuICB2YXIgaCA9IGIucmVkQWRkKGEpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pBZGQgPSBmdW5jdGlvbiBfcHJvakFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWJiamxwXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDctYmxcbiAgLy8gMTBNICsgMVNcblxuICAvLyBBID0gWjEgKiBaMlxuICB2YXIgYSA9IHRoaXMuei5yZWRNdWwocC56KTtcbiAgLy8gQiA9IEFeMlxuICB2YXIgYiA9IGEucmVkU3FyKCk7XG4gIC8vIEMgPSBYMSAqIFgyXG4gIHZhciBjID0gdGhpcy54LnJlZE11bChwLngpO1xuICAvLyBEID0gWTEgKiBZMlxuICB2YXIgZCA9IHRoaXMueS5yZWRNdWwocC55KTtcbiAgLy8gRSA9IGQgKiBDICogRFxuICB2YXIgZSA9IHRoaXMuY3VydmUuZC5yZWRNdWwoYykucmVkTXVsKGQpO1xuICAvLyBGID0gQiAtIEVcbiAgdmFyIGYgPSBiLnJlZFN1YihlKTtcbiAgLy8gRyA9IEIgKyBFXG4gIHZhciBnID0gYi5yZWRBZGQoZSk7XG4gIC8vIFgzID0gQSAqIEYgKiAoKFgxICsgWTEpICogKFgyICsgWTIpIC0gQyAtIEQpXG4gIHZhciB0bXAgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKHAueC5yZWRBZGQocC55KSkucmVkSVN1YihjKS5yZWRJU3ViKGQpO1xuICB2YXIgbnggPSBhLnJlZE11bChmKS5yZWRNdWwodG1wKTtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBhICogQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGMpKSk7XG4gICAgLy8gWjMgPSBGICogR1xuICAgIG56ID0gZi5yZWRNdWwoZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1YihjKSk7XG4gICAgLy8gWjMgPSBjICogRiAqIEdcbiAgICBueiA9IHRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGcpO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHRBZGQocCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakFkZChwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCBmYWxzZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIGlmICh0aGlzLnpPbmUpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHZhciB6aSA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwoemkpO1xuICB0aGlzLnkgPSB0aGlzLnkucmVkTXVsKHppKTtcbiAgaWYgKHRoaXMudClcbiAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHppKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHRoaXMuek9uZSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ICYmIHRoaXMudC5yZWROZWcoKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzID09PSBvdGhlciB8fFxuICAgICAgICAgdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMuZ2V0WSgpLmNtcChvdGhlci5nZXRZKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gQ29tcGF0aWJpbGl0eSB3aXRoIEJhc2VDdXJ2ZVxuUG9pbnQucHJvdG90eXBlLnRvUCA9IFBvaW50LnByb3RvdHlwZS5ub3JtYWxpemU7XG5Qb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBQb2ludC5wcm90b3R5cGUuYWRkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSBleHBvcnRzO1xuXG5jdXJ2ZS5iYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5jdXJ2ZS5zaG9ydCA9IHJlcXVpcmUoJy4vc2hvcnQnKTtcbmN1cnZlLm1vbnQgPSByZXF1aXJlKCcuL21vbnQnKTtcbmN1cnZlLmVkd2FyZHMgPSByZXF1aXJlKCcuL2Vkd2FyZHMnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG5cbmZ1bmN0aW9uIE1vbnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnbW9udCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuaTQgPSBuZXcgQk4oNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmEyNCA9IHRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKTtcbn1cbmluaGVyaXRzKE1vbnRDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRDdXJ2ZTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIHZhciB4ID0gcG9pbnQubm9ybWFsaXplKCkueDtcbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHgyLnJlZE11bCh4KS5yZWRBZGQoeDIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZCh4KTtcbiAgdmFyIHkgPSByaHMucmVkU3FydCgpO1xuXG4gIHJldHVybiB5LnJlZFNxcigpLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUuemVybztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICByZXR1cm4gdGhpcy5wb2ludCh1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpLCAxKTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB6KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeik7XG59O1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZSgpIHtcbiAgLy8gTm8tb3Bcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZSgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0gfHwgY3VydmUub25lKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZG91YmxpbmctZGJsLTE5ODctbS0zXG4gIC8vIDJNICsgMlMgKyA0QVxuXG4gIC8vIEEgPSBYMSArIFoxXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBBQSA9IEFeMlxuICB2YXIgYWEgPSBhLnJlZFNxcigpO1xuICAvLyBCID0gWDEgLSBaMVxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQkIgPSBCXjJcbiAgdmFyIGJiID0gYi5yZWRTcXIoKTtcbiAgLy8gQyA9IEFBIC0gQkJcbiAgdmFyIGMgPSBhYS5yZWRTdWIoYmIpO1xuICAvLyBYMyA9IEFBICogQkJcbiAgdmFyIG54ID0gYWEucmVkTXVsKGJiKTtcbiAgLy8gWjMgPSBDICogKEJCICsgQTI0ICogQylcbiAgdmFyIG56ID0gYy5yZWRNdWwoYmIucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChjKSkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kaWZmQWRkID0gZnVuY3Rpb24gZGlmZkFkZChwLCBkaWZmKSB7XG4gIC8vIGh0dHA6Ly9oeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tbW9udGdvbS14ei5odG1sI2RpZmZhZGQtZGFkZC0xOTg3LW0tM1xuICAvLyA0TSArIDJTICsgNkFcblxuICAvLyBBID0gWDIgKyBaMlxuICB2YXIgYSA9IHRoaXMueC5yZWRBZGQodGhpcy56KTtcbiAgLy8gQiA9IFgyIC0gWjJcbiAgdmFyIGIgPSB0aGlzLngucmVkU3ViKHRoaXMueik7XG4gIC8vIEMgPSBYMyArIFozXG4gIHZhciBjID0gcC54LnJlZEFkZChwLnopO1xuICAvLyBEID0gWDMgLSBaM1xuICB2YXIgZCA9IHAueC5yZWRTdWIocC56KTtcbiAgLy8gREEgPSBEICogQVxuICB2YXIgZGEgPSBkLnJlZE11bChhKTtcbiAgLy8gQ0IgPSBDICogQlxuICB2YXIgY2IgPSBjLnJlZE11bChiKTtcbiAgLy8gWDUgPSBaMSAqIChEQSArIENCKV4yXG4gIHZhciBueCA9IGRpZmYuei5yZWRNdWwoZGEucmVkQWRkKGNiKS5yZWRTcXIoKSk7XG4gIC8vIFo1ID0gWDEgKiAoREEgLSBDQileMlxuICB2YXIgbnogPSBkaWZmLngucmVkTXVsKGRhLnJlZElTdWIoY2IpLnJlZFNxcigpKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICB2YXIgdCA9IGsuY2xvbmUoKTtcbiAgdmFyIGEgPSB0aGlzOyAvLyAoTiAvIDIpICogUSArIFFcbiAgdmFyIGIgPSB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpOyAvLyAoTiAvIDIpICogUVxuICB2YXIgYyA9IHRoaXM7IC8vIFFcblxuICBmb3IgKHZhciBiaXRzID0gW107IHQuY21wbigwKSAhPT0gMDsgdC5pdXNocm4oMSkpXG4gICAgYml0cy5wdXNoKHQuYW5kbG4oMSkpO1xuXG4gIGZvciAodmFyIGkgPSBiaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGJpdHNbaV0gPT09IDApIHtcbiAgICAgIC8vIE4gKiBRICsgUSA9ICgoTiAvIDIpICogUSArIFEpKSArIChOIC8gMikgKiBRXG4gICAgICBhID0gYS5kaWZmQWRkKGIsIGMpO1xuICAgICAgLy8gTiAqIFEgPSAyICogKChOIC8gMikgKiBRICsgUSkpXG4gICAgICBiID0gYi5kYmwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTiAqIFEgPSAoKE4gLyAyKSAqIFEgKyBRKSArICgoTiAvIDIpICogUSlcbiAgICAgIGIgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSArIFEgPSAyICogKChOIC8gMikgKiBRICsgUSlcbiAgICAgIGEgPSBhLmRibCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYjtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuanVtbEFkZCA9IGZ1bmN0aW9uIGp1bWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gY3VydmUuYmFzZTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnc2hvcnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnRpbnYgPSB0aGlzLnR3by5yZWRJbnZtKCk7XG5cbiAgdGhpcy56ZXJvQSA9IHRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSA9PT0gMDtcbiAgdGhpcy50aHJlZUEgPSB0aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpID09PSAwO1xuXG4gIC8vIElmIHRoZSBjdXJ2ZSBpcyBlbmRvbW9ycGhpYywgcHJlY2FsY3VsYXRlIGJldGEgYW5kIGxhbWJkYVxuICB0aGlzLmVuZG8gPSB0aGlzLl9nZXRFbmRvbW9ycGhpc20oY29uZik7XG4gIHRoaXMuX2VuZG9XbmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX2VuZG9XbmFmVDIgPSBuZXcgQXJyYXkoNCk7XG59XG5pbmhlcml0cyhTaG9ydEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gU2hvcnRDdXJ2ZTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbSA9IGZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZikge1xuICAvLyBObyBlZmZpY2llbnQgZW5kb21vcnBoaXNtXG4gIGlmICghdGhpcy56ZXJvQSB8fCAhdGhpcy5nIHx8ICF0aGlzLm4gfHwgdGhpcy5wLm1vZG4oMykgIT09IDEpXG4gICAgcmV0dXJuO1xuXG4gIC8vIENvbXB1dGUgYmV0YSBhbmQgbGFtYmRhLCB0aGF0IGxhbWJkYSAqIFAgPSAoYmV0YSAqIFB4OyBQeSlcbiAgdmFyIGJldGE7XG4gIHZhciBsYW1iZGE7XG4gIGlmIChjb25mLmJldGEpIHtcbiAgICBiZXRhID0gbmV3IEJOKGNvbmYuYmV0YSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmV0YXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtcbiAgICAvLyBDaG9vc2UgdGhlIHNtYWxsZXN0IGJldGFcbiAgICBiZXRhID0gYmV0YXNbMF0uY21wKGJldGFzWzFdKSA8IDAgPyBiZXRhc1swXSA6IGJldGFzWzFdO1xuICAgIGJldGEgPSBiZXRhLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxuICBpZiAoY29uZi5sYW1iZGEpIHtcbiAgICBsYW1iZGEgPSBuZXcgQk4oY29uZi5sYW1iZGEsIDE2KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDaG9vc2UgdGhlIGxhbWJkYSB0aGF0IGlzIG1hdGNoaW5nIHNlbGVjdGVkIGJldGFcbiAgICB2YXIgbGFtYmRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO1xuICAgIGlmICh0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMV07XG4gICAgICBhc3NlcnQodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBiYXNpcyB2ZWN0b3JzLCB1c2VkIGZvciBiYWxhbmNlZCBsZW5ndGgtdHdvIHJlcHJlc2VudGF0aW9uXG4gIHZhciBiYXNpcztcbiAgaWYgKGNvbmYuYmFzaXMpIHtcbiAgICBiYXNpcyA9IGNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYTogbmV3IEJOKHZlYy5hLCAxNiksXG4gICAgICAgIGI6IG5ldyBCTih2ZWMuYiwgMTYpXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzXG4gIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzID0gZnVuY3Rpb24gX2dldEVuZG9Sb290cyhudW0pIHtcbiAgLy8gRmluZCByb290cyBvZiBmb3IgeF4yICsgeCArIDEgaW4gRlxuICAvLyBSb290ID0gKC0xICstIFNxcnQoLTMpKSAvIDJcbiAgLy9cbiAgdmFyIHJlZCA9IG51bSA9PT0gdGhpcy5wID8gdGhpcy5yZWQgOiBCTi5tb250KG51bSk7XG4gIHZhciB0aW52ID0gbmV3IEJOKDIpLnRvUmVkKHJlZCkucmVkSW52bSgpO1xuICB2YXIgbnRpbnYgPSB0aW52LnJlZE5lZygpO1xuXG4gIHZhciBzID0gbmV3IEJOKDMpLnRvUmVkKHJlZCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bCh0aW52KTtcblxuICB2YXIgbDEgPSBudGludi5yZWRBZGQocykuZnJvbVJlZCgpO1xuICB2YXIgbDIgPSBudGludi5yZWRTdWIocykuZnJvbVJlZCgpO1xuICByZXR1cm4gWyBsMSwgbDIgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXMgPSBmdW5jdGlvbiBfZ2V0RW5kb0Jhc2lzKGxhbWJkYSkge1xuICAvLyBhcHJ4U3FydCA+PSBzcXJ0KHRoaXMubilcbiAgdmFyIGFwcnhTcXJ0ID0gdGhpcy5uLnVzaHJuKE1hdGguZmxvb3IodGhpcy5uLmJpdExlbmd0aCgpIC8gMikpO1xuXG4gIC8vIDMuNzRcbiAgLy8gUnVuIEVHQ0QsIHVudGlsIHIoTCArIDEpIDwgYXByeFNxcnRcbiAgdmFyIHUgPSBsYW1iZGE7XG4gIHZhciB2ID0gdGhpcy5uLmNsb25lKCk7XG4gIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgdmFyIHkxID0gbmV3IEJOKDApO1xuICB2YXIgeDIgPSBuZXcgQk4oMCk7XG4gIHZhciB5MiA9IG5ldyBCTigxKTtcblxuICAvLyBOT1RFOiBhbGwgdmVjdG9ycyBhcmUgcm9vdHMgb2Y6IGEgKyBiICogbGFtYmRhID0gMCAobW9kIG4pXG4gIHZhciBhMDtcbiAgdmFyIGIwO1xuICAvLyBGaXJzdCB2ZWN0b3JcbiAgdmFyIGExO1xuICB2YXIgYjE7XG4gIC8vIFNlY29uZCB2ZWN0b3JcbiAgdmFyIGEyO1xuICB2YXIgYjI7XG5cbiAgdmFyIHByZXZSO1xuICB2YXIgaSA9IDA7XG4gIHZhciByO1xuICB2YXIgeDtcbiAgd2hpbGUgKHUuY21wbigwKSAhPT0gMCkge1xuICAgIHZhciBxID0gdi5kaXYodSk7XG4gICAgciA9IHYuc3ViKHEubXVsKHUpKTtcbiAgICB4ID0geDIuc3ViKHEubXVsKHgxKSk7XG4gICAgdmFyIHkgPSB5Mi5zdWIocS5tdWwoeTEpKTtcblxuICAgIGlmICghYTEgJiYgci5jbXAoYXByeFNxcnQpIDwgMCkge1xuICAgICAgYTAgPSBwcmV2Ui5uZWcoKTtcbiAgICAgIGIwID0geDE7XG4gICAgICBhMSA9IHIubmVnKCk7XG4gICAgICBiMSA9IHg7XG4gICAgfSBlbHNlIGlmIChhMSAmJiArK2kgPT09IDIpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBwcmV2UiA9IHI7XG5cbiAgICB2ID0gdTtcbiAgICB1ID0gcjtcbiAgICB4MiA9IHgxO1xuICAgIHgxID0geDtcbiAgICB5MiA9IHkxO1xuICAgIHkxID0geTtcbiAgfVxuICBhMiA9IHIubmVnKCk7XG4gIGIyID0geDtcblxuICB2YXIgbGVuMSA9IGExLnNxcigpLmFkZChiMS5zcXIoKSk7XG4gIHZhciBsZW4yID0gYTIuc3FyKCkuYWRkKGIyLnNxcigpKTtcbiAgaWYgKGxlbjIuY21wKGxlbjEpID49IDApIHtcbiAgICBhMiA9IGEwO1xuICAgIGIyID0gYjA7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgc2lnbnNcbiAgaWYgKGExLm5lZ2F0aXZlKSB7XG4gICAgYTEgPSBhMS5uZWcoKTtcbiAgICBiMSA9IGIxLm5lZygpO1xuICB9XG4gIGlmIChhMi5uZWdhdGl2ZSkge1xuICAgIGEyID0gYTIubmVnKCk7XG4gICAgYjIgPSBiMi5uZWcoKTtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgeyBhOiBhMSwgYjogYjEgfSxcbiAgICB7IGE6IGEyLCBiOiBiMiB9XG4gIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0ID0gZnVuY3Rpb24gX2VuZG9TcGxpdChrKSB7XG4gIHZhciBiYXNpcyA9IHRoaXMuZW5kby5iYXNpcztcbiAgdmFyIHYxID0gYmFzaXNbMF07XG4gIHZhciB2MiA9IGJhc2lzWzFdO1xuXG4gIHZhciBjMSA9IHYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG4gIHZhciBjMiA9IHYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG5cbiAgdmFyIHAxID0gYzEubXVsKHYxLmEpO1xuICB2YXIgcDIgPSBjMi5tdWwodjIuYSk7XG4gIHZhciBxMSA9IGMxLm11bCh2MS5iKTtcbiAgdmFyIHEyID0gYzIubXVsKHYyLmIpO1xuXG4gIC8vIENhbGN1bGF0ZSBhbnN3ZXJcbiAgdmFyIGsxID0gay5zdWIocDEpLnN1YihwMik7XG4gIHZhciBrMiA9IHExLmFkZChxMikubmVnKCk7XG4gIHJldHVybiB7IGsxOiBrMSwgazI6IGsyIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB5MiA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICAvLyBYWFggSXMgdGhlcmUgYW55IHdheSB0byB0ZWxsIGlmIHRoZSBudW1iZXIgaXMgb2RkIHdpdGhvdXQgY29udmVydGluZyBpdFxuICAvLyB0byBub24tcmVkIGZvcm0/XG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pbmYpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHggPSBwb2ludC54O1xuICB2YXIgeSA9IHBvaW50Lnk7XG5cbiAgdmFyIGF4ID0gdGhpcy5hLnJlZE11bCh4KTtcbiAgdmFyIHJocyA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoYXgpLnJlZElBZGQodGhpcy5iKTtcbiAgcmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQgPVxuICAgIGZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICB2YXIgbmNvZWZmcyA9IHRoaXMuX2VuZG9XbmFmVDI7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgdmFyIHAgPSBwb2ludHNbaV07XG4gICAgdmFyIGJldGEgPSBwLl9nZXRCZXRhKCk7XG5cbiAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsxLmluZWcoKTtcbiAgICAgIHAgPSBwLm5lZyh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHNwbGl0LmsyLm5lZ2F0aXZlKSB7XG4gICAgICBzcGxpdC5rMi5pbmVnKCk7XG4gICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgfVxuXG4gICAgbnBvaW50c1tpICogMl0gPSBwO1xuICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgbmNvZWZmc1tpICogMl0gPSBzcGxpdC5rMTtcbiAgICBuY29lZmZzW2kgKiAyICsgMV0gPSBzcGxpdC5rMjtcbiAgfVxuICB2YXIgcmVzID0gdGhpcy5fd25hZk11bEFkZCgxLCBucG9pbnRzLCBuY29lZmZzLCBpICogMiwgamFjb2JpYW5SZXN1bHQpO1xuXG4gIC8vIENsZWFuLXVwIHJlZmVyZW5jZXMgdG8gcG9pbnRzIGFuZCBjb2VmZmljaWVudHNcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgbnBvaW50c1tqXSA9IG51bGw7XG4gICAgbmNvZWZmc1tqXSA9IG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCBpc1JlZCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnYWZmaW5lJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSBudWxsO1xuICAgIHRoaXMueSA9IG51bGw7XG4gICAgdGhpcy5pbmYgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICAvLyBGb3JjZSByZWRnb21lcnkgcmVwcmVzZW50YXRpb24gd2hlbiBsb2FkaW5nIGZyb20gSlNPTlxuICAgIGlmIChpc1JlZCkge1xuICAgICAgdGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICAgIHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgfVxuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLmluZiA9IGZhbHNlO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIGlzUmVkKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgaXNSZWQpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqLCByZWQpIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaiwgcmVkKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICBpZiAoIXRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm47XG5cbiAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gIGlmIChwcmUgJiYgcHJlLmJldGEpXG4gICAgcmV0dXJuIHByZS5iZXRhO1xuXG4gIHZhciBiZXRhID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSwgdGhpcy55KTtcbiAgaWYgKHByZSkge1xuICAgIHZhciBjdXJ2ZSA9IHRoaXMuY3VydmU7XG4gICAgdmFyIGVuZG9NdWwgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gY3VydmUucG9pbnQocC54LnJlZE11bChjdXJ2ZS5lbmRvLmJldGEpLCBwLnkpO1xuICAgIH07XG4gICAgcHJlLmJldGEgPSBiZXRhO1xuICAgIGJldGEucHJlY29tcHV0ZWQgPSB7XG4gICAgICBiZXRhOiBudWxsLFxuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAoZW5kb011bClcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJldGE7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnkgXTtcblxuICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSwgdGhpcy5wcmVjb21wdXRlZCAmJiB7XG4gICAgZG91YmxlczogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSlcbiAgICB9XG4gIH0gXTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaiwgcmVkKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJylcbiAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gIHZhciByZXMgPSBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgaWYgKCFvYmpbMl0pXG4gICAgcmV0dXJuIHJlcztcblxuICBmdW5jdGlvbiBvYmoycG9pbnQob2JqKSB7XG4gICAgcmV0dXJuIGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICB9XG5cbiAgdmFyIHByZSA9IG9ialsyXTtcbiAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgIGJldGE6IG51bGwsXG4gICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgcmV0dXJuIHRoaXMuaW5mO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBQICsgUCA9IDJQXG4gIGlmICh0aGlzLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIC8vIFAgKyAoLVApID0gT1xuICBpZiAodGhpcy5uZWcoKS5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICAvLyBQICsgUSA9IE9cbiAgaWYgKHRoaXMueC5jbXAocC54KSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYyA9IHRoaXMueS5yZWRTdWIocC55KTtcbiAgaWYgKGMuY21wbigwKSAhPT0gMClcbiAgICBjID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihwLngpLnJlZEludm0oKSk7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIocC54KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAyUCA9IE9cbiAgdmFyIHlzMSA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgaWYgKHlzMS5jbXBuKDApID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIHZhciB4MiA9IHRoaXMueC5yZWRTcXIoKTtcbiAgdmFyIGR5aW52ID0geXMxLnJlZEludm0oKTtcbiAgdmFyIGMgPSB4Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTtcblxuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGsgPSBuZXcgQk4oaywgMTYpO1xuXG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbIHRoaXMgXSwgWyBrIF0pO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgdHJ1ZSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIHJldHVybiB0aGlzID09PSBwIHx8XG4gICAgICAgICB0aGlzLmluZiA9PT0gcC5pbmYgJiZcbiAgICAgICAgICAgICAodGhpcy5pbmYgfHwgdGhpcy54LmNtcChwLngpID09PSAwICYmIHRoaXMueS5jbXAocC55KSA9PT0gMCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKF9wcmVjb21wdXRlKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSk7XG4gIGlmIChfcHJlY29tcHV0ZSAmJiB0aGlzLnByZWNvbXB1dGVkKSB7XG4gICAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gICAgdmFyIG5lZ2F0ZSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBwLm5lZygpO1xuICAgIH07XG4gICAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KID0gZnVuY3Rpb24gdG9KKCkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueSwgdGhpcy5jdXJ2ZS5vbmUpO1xuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gSlBvaW50KGN1cnZlLCB4LCB5LCB6KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdqYWNvYmlhbicpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSBuZXcgQk4oMCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gIH1cbiAgaWYgKCF0aGlzLngucmVkKVxuICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy55LnJlZClcbiAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMuei5yZWQpXG4gICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcblxuICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xufVxuaW5oZXJpdHMoSlBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6KSB7XG4gIHJldHVybiBuZXcgSlBvaW50KHRoaXMsIHgsIHksIHopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50b1AgPSBmdW5jdGlvbiB0b1AoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgemludiA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHZhciB6aW52MiA9IHppbnYucmVkU3FyKCk7XG4gIHZhciBheCA9IHRoaXMueC5yZWRNdWwoemludjIpO1xuICB2YXIgYXkgPSB0aGlzLnkucmVkTXVsKHppbnYyKS5yZWRNdWwoemludik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYXgsIGF5KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCksIHRoaXMueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAxMk0gKyA0UyArIDdBXG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54LnJlZE11bChwejIpO1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55LnJlZE11bChwejIucmVkTXVsKHAueikpO1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyLnJlZE11bCh0aGlzLnopKTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChwLnopLnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gZnVuY3Rpb24gbWl4ZWRBZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwLnRvSigpO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gOE0gKyAzUyArIDdBXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHUxID0gdGhpcy54O1xuICB2YXIgdTIgPSBwLngucmVkTXVsKHoyKTtcbiAgdmFyIHMxID0gdGhpcy55O1xuICB2YXIgczIgPSBwLnkucmVkTXVsKHoyKS5yZWRNdWwodGhpcy56KTtcblxuICB2YXIgaCA9IHUxLnJlZFN1Yih1Mik7XG4gIHZhciByID0gczEucmVkU3ViKHMyKTtcbiAgaWYgKGguY21wbigwKSA9PT0gMCkge1xuICAgIGlmIChyLmNtcG4oMCkgIT09IDApXG4gICAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMuZGJsKCk7XG4gIH1cblxuICB2YXIgaDIgPSBoLnJlZFNxcigpO1xuICB2YXIgaDMgPSBoMi5yZWRNdWwoaCk7XG4gIHZhciB2ID0gdTEucmVkTXVsKGgyKTtcblxuICB2YXIgbnggPSByLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTtcbiAgdmFyIG55ID0gci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTtcbiAgdmFyIG56ID0gdGhpcy56LnJlZE11bChoKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibHAgPSBmdW5jdGlvbiBkYmxwKHBvdykge1xuICBpZiAocG93ID09PSAwKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICghcG93KVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BIHx8IHRoaXMuY3VydmUudGhyZWVBKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspXG4gICAgICByID0gci5kYmwoKTtcbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIC8vIDFNICsgMlMgKyAxQSArIE4gKiAoNFMgKyA1TSArIDhBKVxuICAvLyBOID0gMSA9PiA2TSArIDZTICsgOUFcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG4gIHZhciB0aW52ID0gdGhpcy5jdXJ2ZS50aW52O1xuXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICAvLyBSZXVzZSByZXN1bHRzXG4gIHZhciBqeWQgPSBqeS5yZWRBZGQoankpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBKUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgSlBvaW50IHg6ICcgKyB0aGlzLngudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnouY21wbigwKSA9PT0gMDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZXMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uL2VsbGlwdGljJyk7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGN1cnZlO1xuICAgIH1cbiAgfSk7XG59XG5cbmRlZmluZUN1cnZlKCdwMTkyJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AxOTInLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTInLFxuICAgICcwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjI0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AyMjQnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUnLFxuICBiOiAnYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZjE2YTIgZTBiOGYwM2UgMTNkZDI5NDUgNWM1YzJhM2QnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEnLFxuICAgICdiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDM4NCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMnLFxuICBiOiAnYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgJyArXG4gICAgICc1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZicsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSAnICtcbiAgICAgJ2Y0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczJyxcbiAgaGFzaDogaGFzaC5zaGEzODQsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2FhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4ICcgK1xuICAgICc1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNycsXG4gICAgJzM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICcgK1xuICAgICcwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZidcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwNTIxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgJyArXG4gICAgICc5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAnICtcbiAgICAgJzNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwJyxcbiAgbjogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggJyArXG4gICAgICdmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOScsXG4gIGhhc2g6IGhhc2guc2hhNTEyLFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAnICtcbiAgICAnMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgJyArXG4gICAgJ2EyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2JyxcbiAgICAnMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgJyArXG4gICAgJzU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxICcgK1xuICAgICczZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMCcsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnZWQyNTUxOScsIHtcbiAgdHlwZTogJ2Vkd2FyZHMnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJy0xJyxcbiAgYzogJzEnLFxuICAvLyAtMTIxNjY1ICogKDEyMTY2Nl4oLTEpKSAobW9kIFApXG4gIGQ6ICc1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYScsXG5cbiAgICAvLyA0LzVcbiAgICAnNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCdcbiAgXVxufSk7XG5cbnZhciBwcmU7XG50cnkge1xuICBwcmUgPSByZXF1aXJlKCcuL3ByZWNvbXB1dGVkL3NlY3AyNTZrMScpO1xufSBjYXRjaCAoZSkge1xuICBwcmUgPSB1bmRlZmluZWQ7XG59XG5cbmRlZmluZUN1cnZlKCdzZWNwMjU2azEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAnazI1NicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicsXG4gIGE6ICcwJyxcbiAgYjogJzcnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEnLFxuICBoOiAnMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuXG4gIC8vIFByZWNvbXB1dGVkIGVuZG9tb3JwaGlzbVxuICBiZXRhOiAnN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZScsXG4gIGxhbWJkYTogJzUzNjNhZDRjYzA1YzMwZTBhNTI2MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzInLFxuICBiYXNpczogW1xuICAgIHtcbiAgICAgIGE6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgICBiOiAnLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzJ1xuICAgIH0sXG4gICAge1xuICAgICAgYTogJzExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCcsXG4gICAgICBiOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnXG4gICAgfVxuICBdLFxuXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnLFxuICAgICc0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4JyxcbiAgICBwcmVcbiAgXVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUMob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUMpKVxuICAgIHJldHVybiBuZXcgRUMob3B0aW9ucyk7XG5cbiAgLy8gU2hvcnRjdXQgYGVsbGlwdGljLmVjKGN1cnZlLW5hbWUpYFxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgYXNzZXJ0KGVsbGlwdGljLmN1cnZlcy5oYXNPd25Qcm9wZXJ0eShvcHRpb25zKSwgJ1Vua25vd24gY3VydmUgJyArIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucyA9IGVsbGlwdGljLmN1cnZlc1tvcHRpb25zXTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZvciBgZWxsaXB0aWMuZWMoZWxsaXB0aWMuY3VydmVzLmN1cnZlTmFtZSlgXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgZWxsaXB0aWMuY3VydmVzLlByZXNldEN1cnZlKVxuICAgIG9wdGlvbnMgPSB7IGN1cnZlOiBvcHRpb25zIH07XG5cbiAgdGhpcy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUuY3VydmU7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5uaCA9IHRoaXMubi51c2hybigxKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuXG4gIC8vIFBvaW50IG9uIGN1cnZlXG4gIHRoaXMuZyA9IG9wdGlvbnMuY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUob3B0aW9ucy5jdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgLy8gSGFzaCBmb3IgZnVuY3Rpb24gZm9yIERSQkdcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoIHx8IG9wdGlvbnMuY3VydmUuaGFzaDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRUM7XG5cbkVDLnByb3RvdHlwZS5rZXlQYWlyID0gZnVuY3Rpb24ga2V5UGFpcihvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih0aGlzLCBvcHRpb25zKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHJpdmF0ZSh0aGlzLCBwcml2LCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViLCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmdlbktleVBhaXIgPSBmdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgZWxsaXB0aWMuaG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgZW50cm9weTogb3B0aW9ucy5lbnRyb3B5IHx8IGVsbGlwdGljLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksXG4gICAgbm9uY2U6IHRoaXMubi50b0FycmF5KClcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZG8ge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH0gd2hpbGUgKHRydWUpO1xufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIHRydW5jYXRlVG9OKG1zZywgdHJ1bmNPbmx5KSB7XG4gIHZhciBkZWx0YSA9IG1zZy5ieXRlTGVuZ3RoKCkgKiA4IC0gdGhpcy5uLmJpdExlbmd0aCgpO1xuICBpZiAoZGVsdGEgPiAwKVxuICAgIG1zZyA9IG1zZy51c2hybihkZWx0YSk7XG4gIGlmICghdHJ1bmNPbmx5ICYmIG1zZy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBtc2cuc3ViKHRoaXMubik7XG4gIGVsc2VcbiAgICByZXR1cm4gbXNnO1xufTtcblxuRUMucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywga2V5LCBlbmMsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBlbmMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAga2V5ID0gdGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksIGVuYyk7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG5cbiAgLy8gWmVyby1leHRlbmQga2V5IHRvIHByb3ZpZGUgZW5vdWdoIGVudHJvcHlcbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIGJrZXkgPSBrZXkuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIG5vbmNlIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZSBzaXplIGFzIE5cbiAgdmFyIG5vbmNlID0gbXNnLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBlbGxpcHRpYy5obWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIGVudHJvcHk6IGJrZXksXG4gICAgbm9uY2U6IG5vbmNlLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmNcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IHRydWU7IGl0ZXIrKykge1xuICAgIHZhciBrID0gb3B0aW9ucy5rID9cbiAgICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgICAgbmV3IEJOKGRyYmcuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO1xuICAgIGsgPSB0aGlzLl90cnVuY2F0ZVRvTihrLCB0cnVlKTtcbiAgICBpZiAoay5jbXBuKDEpIDw9IDAgfHwgay5jbXAobnMxKSA+PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3AgPSB0aGlzLmcubXVsKGspO1xuICAgIGlmIChrcC5pc0luZmluaXR5KCkpXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcFggPSBrcC5nZXRYKCk7XG4gICAgdmFyIHIgPSBrcFgudW1vZCh0aGlzLm4pO1xuICAgIGlmIChyLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBzID0gay5pbnZtKHRoaXMubikubXVsKHIubXVsKGtleS5nZXRQcml2YXRlKCkpLmlhZGQobXNnKSk7XG4gICAgcyA9IHMudW1vZCh0aGlzLm4pO1xuICAgIGlmIChzLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciByZWNvdmVyeVBhcmFtID0gKGtwLmdldFkoKS5pc09kZCgpID8gMSA6IDApIHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrcFguY21wKHIpICE9PSAwID8gMiA6IDApO1xuXG4gICAgLy8gVXNlIGNvbXBsZW1lbnQgb2YgYHNgLCBpZiBpdCBpcyA+IGBuIC8gMmBcbiAgICBpZiAob3B0aW9ucy5jYW5vbmljYWwgJiYgcy5jbXAodGhpcy5uaCkgPiAwKSB7XG4gICAgICBzID0gdGhpcy5uLnN1YihzKTtcbiAgICAgIHJlY292ZXJ5UGFyYW0gXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNpZ25hdHVyZSh7IHI6IHIsIHM6IHMsIHJlY292ZXJ5UGFyYW06IHJlY292ZXJ5UGFyYW0gfSk7XG4gIH1cbn07XG5cbkVDLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUsIGtleSwgZW5jKSB7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG4gIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhrZXksIGVuYyk7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCAnaGV4Jyk7XG5cbiAgLy8gUGVyZm9ybSBwcmltaXRpdmUgdmFsdWVzIHZhbGlkYXRpb25cbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcbiAgaWYgKHIuY21wbigxKSA8IDAgfHwgci5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHMuY21wbigxKSA8IDAgfHwgcy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBWYWxpZGF0ZSBzaWduYXR1cmVcbiAgdmFyIHNpbnYgPSBzLmludm0odGhpcy5uKTtcbiAgdmFyIHUxID0gc2ludi5tdWwobXNnKS51bW9kKHRoaXMubik7XG4gIHZhciB1MiA9IHNpbnYubXVsKHIpLnVtb2QodGhpcy5uKTtcblxuICBpZiAoIXRoaXMuY3VydmUuX21heHdlbGxUcmljaykge1xuICAgIHZhciBwID0gdGhpcy5nLm11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gICAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIHAuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAocikgPT09IDA7XG4gIH1cblxuICAvLyBOT1RFOiBHcmVnIE1heHdlbGwncyB0cmljaywgaW5zcGlyZWQgYnk6XG4gIC8vIGh0dHBzOi8vZ2l0LmlvL3ZhZDNLXG5cbiAgdmFyIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgZU5lZyA9IG4uc3ViKGUpO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICByZXR1cm4gdGhpcy5nLm11bEFkZChlTmVnLCByLCBzKS5tdWwockludik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG5mdW5jdGlvbiBLZXlQYWlyKGVjLCBvcHRpb25zKSB7XG4gIHRoaXMuZWMgPSBlYztcbiAgdGhpcy5wcml2ID0gbnVsbDtcbiAgdGhpcy5wdWIgPSBudWxsO1xuXG4gIC8vIEtleVBhaXIoZWMsIHsgcHJpdjogLi4uLCBwdWI6IC4uLiB9KVxuICBpZiAob3B0aW9ucy5wcml2KVxuICAgIHRoaXMuX2ltcG9ydFByaXZhdGUob3B0aW9ucy5wcml2LCBvcHRpb25zLnByaXZFbmMpO1xuICBpZiAob3B0aW9ucy5wdWIpXG4gICAgdGhpcy5faW1wb3J0UHVibGljKG9wdGlvbnMucHViLCBvcHRpb25zLnB1YkVuYyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWMsIHB1YiwgZW5jKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHViOiBwdWIsXG4gICAgcHViRW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICB9XG4gIHAucGxhY2UgPSBvZmY7XG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIHJtUGFkZGluZyhidWYpIHtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aCAtIDE7XG4gIHdoaWxlICghYnVmW2ldICYmICEoYnVmW2kgKyAxXSAmIDB4ODApICYmIGkgPCBsZW4pIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGkgPT09IDApIHtcbiAgICByZXR1cm4gYnVmO1xuICB9XG4gIHJldHVybiBidWYuc2xpY2UoaSk7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUuX2ltcG9ydERFUiA9IGZ1bmN0aW9uIF9pbXBvcnRERVIoZGF0YSwgZW5jKSB7XG4gIGRhdGEgPSB1dGlscy50b0FycmF5KGRhdGEsIGVuYyk7XG4gIHZhciBwID0gbmV3IFBvc2l0aW9uKCk7XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MzApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKChsZW4gKyBwLnBsYWNlKSAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcmxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgdmFyIHIgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHJsZW4gKyBwLnBsYWNlKTtcbiAgcC5wbGFjZSArPSBybGVuO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwICYmIChyWzFdICYgMHg4MCkpIHtcbiAgICByID0gci5zbGljZSgxKTtcbiAgfVxuICBpZiAoc1swXSA9PT0gMCAmJiAoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cblxuICB0aGlzLnIgPSBuZXcgQk4ocik7XG4gIHRoaXMucyA9IG5ldyBCTihzKTtcbiAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdExlbmd0aChhcnIsIGxlbikge1xuICBpZiAobGVuIDwgMHg4MCkge1xuICAgIGFyci5wdXNoKGxlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBvY3RldHMgPSAxICsgKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMiA+Pj4gMyk7XG4gIGFyci5wdXNoKG9jdGV0cyB8IDB4ODApO1xuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9ERVIgPSBmdW5jdGlvbiB0b0RFUihlbmMpIHtcbiAgdmFyIHIgPSB0aGlzLnIudG9BcnJheSgpO1xuICB2YXIgcyA9IHRoaXMucy50b0FycmF5KCk7XG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApXG4gICAgciA9IFsgMCBdLmNvbmNhdChyKTtcbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoc1swXSAmIDB4ODApXG4gICAgcyA9IFsgMCBdLmNvbmNhdChzKTtcblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIHdoaWxlICghc1swXSAmJiAhKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIHZhciBhcnIgPSBbIDB4MDIgXTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgci5sZW5ndGgpO1xuICBhcnIgPSBhcnIuY29uY2F0KHIpO1xuICBhcnIucHVzaCgweDAyKTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgcy5sZW5ndGgpO1xuICB2YXIgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICB2YXIgcmVzID0gWyAweDMwIF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIHJlcyA9IHJlcy5jb25jYXQoYmFja0hhbGYpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIHZhciBjdXJ2ZSA9IGVsbGlwdGljLmN1cnZlc1tjdXJ2ZV0uY3VydmU7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy5nID0gY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUoY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIHRoaXMucG9pbnRDbGFzcyA9IGN1cnZlLnBvaW50KCkuY29uc3RydWN0b3I7XG4gIHRoaXMuZW5jb2RpbmdMZW5ndGggPSBNYXRoLmNlaWwoY3VydmUubi5iaXRMZW5ndGgoKSAvIDgpO1xuICB0aGlzLmhhc2ggPSBoYXNoLnNoYTUxMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFRERTQTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xLZXlQYWlyfSBzZWNyZXQgLSBzZWNyZXQgYnl0ZXMgb3IgYSBrZXlwYWlyXG4qIEByZXR1cm5zIHtTaWduYXR1cmV9IC0gc2lnbmF0dXJlXG4qL1xuRUREU0EucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UsIHNlY3JldCkge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVNlY3JldChzZWNyZXQpO1xuICB2YXIgciA9IHRoaXMuaGFzaEludChrZXkubWVzc2FnZVByZWZpeCgpLCBtZXNzYWdlKTtcbiAgdmFyIFIgPSB0aGlzLmcubXVsKHIpO1xuICB2YXIgUmVuY29kZWQgPSB0aGlzLmVuY29kZVBvaW50KFIpO1xuICB2YXIgc18gPSB0aGlzLmhhc2hJbnQoUmVuY29kZWQsIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKVxuICAgICAgICAgICAgICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBjYWNoZWRQcm9wZXJ0eSA9IHV0aWxzLmNhY2hlZFByb3BlcnR5O1xuXG4vKipcbiogQHBhcmFtIHtFRERTQX0gZWRkc2EgLSBpbnN0YW5jZVxuKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gcHVibGljL3ByaXZhdGUga2V5IHBhcmFtZXRlcnNcbipcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5zZWNyZXRdIC0gc2VjcmV0IHNlZWQgYnl0ZXNcbiogQHBhcmFtIHtQb2ludH0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCAoYWthIGBBYCBpbiBlZGRzYSB0ZXJtcylcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCBlbmNvZGVkIGFzIGJ5dGVzXG4qXG4qL1xuZnVuY3Rpb24gS2V5UGFpcihlZGRzYSwgcGFyYW1zKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcbiAgdGhpcy5fc2VjcmV0ID0gcGFyc2VCeXRlcyhwYXJhbXMuc2VjcmV0KTtcbiAgaWYgKGVkZHNhLmlzUG9pbnQocGFyYW1zLnB1YikpXG4gICAgdGhpcy5fcHViID0gcGFyYW1zLnB1YjtcbiAgZWxzZVxuICAgIHRoaXMuX3B1YkJ5dGVzID0gcGFyc2VCeXRlcyhwYXJhbXMucHViKTtcbn1cblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlZGRzYSwgcHViKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBwdWI6IHB1YiB9KTtcbn07XG5cbktleVBhaXIuZnJvbVNlY3JldCA9IGZ1bmN0aW9uIGZyb21TZWNyZXQoZWRkc2EsIHNlY3JldCkge1xuICBpZiAoc2VjcmV0IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gc2VjcmV0O1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgc2VjcmV0OiBzZWNyZXQgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zZWNyZXQgPSBmdW5jdGlvbiBzZWNyZXQoKSB7XG4gIHJldHVybiB0aGlzLl9zZWNyZXQ7XG59O1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViQnl0ZXMnLCBmdW5jdGlvbiBwdWJCeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YicsIGZ1bmN0aW9uIHB1YigpIHtcbiAgaWYgKHRoaXMuX3B1YkJ5dGVzKVxuICAgIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2Qnl0ZXMnLCBmdW5jdGlvbiBwcml2Qnl0ZXMoKSB7XG4gIHZhciBlZGRzYSA9IHRoaXMuZWRkc2E7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIHZhciBsYXN0SXggPSBlZGRzYS5lbmNvZGluZ0xlbmd0aCAtIDE7XG5cbiAgdmFyIGEgPSBoYXNoLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbiAgYVswXSAmPSAyNDg7XG4gIGFbbGFzdEl4XSAmPSAxMjc7XG4gIGFbbGFzdEl4XSB8PSA2NDtcblxuICByZXR1cm4gYTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdicsIGZ1bmN0aW9uIHByaXYoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnaGFzaCcsIGZ1bmN0aW9uIGhhc2goKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ21lc3NhZ2VQcmVmaXgnLCBmdW5jdGlvbiBtZXNzYWdlUHJlZml4KCkge1xuICByZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG59KTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSkge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBjYW4gb25seSB2ZXJpZnknKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2Euc2lnbihtZXNzYWdlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KG1lc3NhZ2UsIHNpZywgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRTZWNyZXQgPSBmdW5jdGlvbiBnZXRTZWNyZXQoZW5jKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGlzIHB1YmxpYyBvbmx5Jyk7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5zZWNyZXQoKSwgZW5jKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhlbmMpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksIGVuYyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aClcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLnJlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0J1ZmZlcihlbnRyb3B5LCBlbnRyb3B5RW5jKTtcbiAgYWRkID0gdXRpbHMudG9CdWZmZXIoYWRkLCBhZGRFbmMpO1xuXG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG5cbiAgdGhpcy5fdXBkYXRlKGVudHJvcHkuY29uY2F0KGFkZCB8fCBbXSkpO1xuICB0aGlzLnJlc2VlZCA9IDE7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4sIGVuYywgYWRkLCBhZGRFbmMpIHtcbiAgaWYgKHRoaXMucmVzZWVkID4gdGhpcy5yZXNlZWRJbnRlcnZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc2VlZCBpcyByZXF1aXJlZCcpO1xuXG4gIC8vIE9wdGlvbmFsIGVuY29kaW5nXG4gIGlmICh0eXBlb2YgZW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuXG4gIC8vIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICBpZiAoYWRkKSB7XG4gICAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyk7XG4gICAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIH1cblxuICB2YXIgdGVtcCA9IFtdO1xuICB3aGlsZSAodGVtcC5sZW5ndGggPCBsZW4pIHtcbiAgICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gICAgdGVtcCA9IHRlbXAuY29uY2F0KHRoaXMuVik7XG4gIH1cblxuICB2YXIgcmVzID0gdGVtcC5zbGljZSgwLCBsZW4pO1xuICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgdGhpcy5yZXNlZWQrKztcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRvdWJsZXM6IHtcbiAgICBzdGVwOiA0LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZkZWMwYScsXG4gICAgICAgICdmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgnLFxuICAgICAgICAnMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5JyxcbiAgICAgICAgJ2QzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MCcsXG4gICAgICAgICc0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGI0YjVmMTY1ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYycsXG4gICAgICAgICc0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEnLFxuICAgICAgICAnOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhJyxcbiAgICAgICAgJzVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCcsXG4gICAgICAgICdjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQnLFxuICAgICAgICAnOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkJyxcbiAgICAgICAgJ2U1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2N2E5MWQ5MTA0OWNkY2IzNjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMScsXG4gICAgICAgICc5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3NTQ1Y2NjMWEzN2I3YzAnLFxuICAgICAgICAnNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3JyxcbiAgICAgICAgJzEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MicsXG4gICAgICAgICcyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNycsXG4gICAgICAgICc3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmQnLFxuICAgICAgICAnNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzJyxcbiAgICAgICAgJzdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgyYTBhJyxcbiAgICAgICAgJzUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOCcsXG4gICAgICAgICdiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQnLFxuICAgICAgICAnNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1JyxcbiAgICAgICAgJzdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjEzYzdhNzE1Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NCcsXG4gICAgICAgICc0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MnLFxuICAgICAgICAnMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2JyxcbiAgICAgICAgJzZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOScsXG4gICAgICAgICdjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEnLFxuICAgICAgICAnODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiJyxcbiAgICAgICAgJ2ZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjhkYTk0MDMyYTk1NzUxOGViMGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwMycsXG4gICAgICAgICcyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYxYTExNzc4ZTNjMGRmNWQnLFxuICAgICAgICAnZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwJyxcbiAgICAgICAgJzczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNCcsXG4gICAgICAgICdlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYScsXG4gICAgICAgICc2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEnLFxuICAgICAgICAnMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllJyxcbiAgICAgICAgJ2VmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNiM2U0MScsXG4gICAgICAgICcyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYnLFxuICAgICAgICAnNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZTgnLFxuICAgICAgICAnZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkJyxcbiAgICAgICAgJzY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGRmOWMxNDkxOWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NicsXG4gICAgICAgICczNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkJyxcbiAgICAgICAgJ2RkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNScsXG4gICAgICAgICc5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYnLFxuICAgICAgICAnNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxJyxcbiAgICAgICAgJzM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjJyxcbiAgICAgICAgJ2MyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MScsXG4gICAgICAgICcxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQwNDgyNDUyNjA4N2UnLFxuICAgICAgICAnNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxJyxcbiAgICAgICAgJ2M2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMycsXG4gICAgICAgICdiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGYnLFxuICAgICAgICAnNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5JyxcbiAgICAgICAgJ2FlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZScsXG4gICAgICAgICdiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVlZjknLFxuICAgICAgICAnNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyJyxcbiAgICAgICAgJzgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMycsXG4gICAgICAgICc3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2MnLFxuICAgICAgICAnY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NTkzOTY5ODE5NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhJyxcbiAgICAgICAgJzJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MScsXG4gICAgICAgICdlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzMnLFxuICAgICAgICAnZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4JyxcbiAgICAgICAgJzM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YicsXG4gICAgICAgICc2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjYnLFxuICAgICAgICAnZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMjhhOTdiZjgyOThiYzBkMjNkOGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEnLFxuICAgICAgICAnNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRiYTExMWZhY2NhZTAnLFxuICAgICAgICAnNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3JyxcbiAgICAgICAgJzdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZScsXG4gICAgICAgICdlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyJ1xuICAgICAgXVxuICAgIF1cbiAgfSxcbiAgbmFmOiB7XG4gICAgd25kOiA3LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOScsXG4gICAgICAgICczODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5ZmQ3NTg0YjhlNjcyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQnLFxuICAgICAgICAnZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1Y2JkZjA2NDZlNWRiNGVhYTM5OGYzNjVmMmVhN2EwZTNkNDE5YjdlMDMzMGUzOWNlOTJiZGRlZGNhYzRmOWJjJyxcbiAgICAgICAgJzZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZScsXG4gICAgICAgICdjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2InLFxuICAgICAgICAnZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjg3NzNjMmQ5NzUyODhiYzdkMWQyMDVjMzc0ODY1MWIwNzVmYmM2NjEwZTU4Y2RkZWVkZGY4ZjE5NDA1YWE4JyxcbiAgICAgICAgJ2FiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlJyxcbiAgICAgICAgJzU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZiNTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCcsXG4gICAgICAgICc0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJiNGVhMGE3OTdhNDQzZDI5M2VmNWNmZjQ0NGY0OTc5ZjA2YWNmZWJkN2U4NmQyNzc0NzU2NTYxMzgzODViNmMnLFxuICAgICAgICAnODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1JyxcbiAgICAgICAgJzMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZicsXG4gICAgICAgICcyZGUxMDY4Mjk1ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI0ODI3OWIwOWI0ZDY4ZGFiMjFhOWIwNjZlZGRhODMyNjNjM2Q4NGUwOTU3MmUyNjljYTBjZDdmNTQ1MzcxNCcsXG4gICAgICAgICc3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjknLFxuICAgICAgICAnYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiJyxcbiAgICAgICAgJzIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmEyNDViZjZkYzY5ODUwNGM4OWEyMGNmZGVkNjA4NTMxNTJiNjk1MzM2YzI4MDYzYjYxYzY1Y2JkMjY5ZTZiNCcsXG4gICAgICAgICdlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTUnLFxuICAgICAgICAnYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5JyxcbiAgICAgICAgJzI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MmQxNGRhYjQxNTBiZjQ5NzQwMmZkYzQ1YTIxNWUxMGRjYjAxYzM1NDk1OWIxMGNmZTMxYzdlOWQ4N2ZmMzNkJyxcbiAgICAgICAgJzgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2NDI0ODNiMjVlYWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZicsXG4gICAgICAgICcxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmInLFxuICAgICAgICAnZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1MjhlY2Q5YjY5NmI1NGM5MDdhOWVkMDQ1NDQ3YTc5YmI0MDhlYzM5YjY4ZGY1MDRiYjUxZjQ1OWJjM2ZmYzknLFxuICAgICAgICAnZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjMnLFxuICAgICAgICAnNzU4ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0JyxcbiAgICAgICAgJzk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjJkYWM5OTFjYzRjZTRiOWVhNDQ4ODdlNWM3YzBiY2U1OGM4MDA3NGFiOWQ0ZGJhZWIyODUzMWI3NzM5ZjUzMCcsXG4gICAgICAgICdlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWInLFxuICAgICAgICAnNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3JyxcbiAgICAgICAgJ2NlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2FmNzU0MjcyZGM4NDU2M2IwMzUyYjdhMTQzMTFhZjU1ZDI0NTMxNWFjZTI3YzY1MzY5ZTE1ZjcxNTFkNDFkMScsXG4gICAgICAgICdjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAnLFxuICAgICAgICAnNDExOWI4ODc1M2MxNWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1JyxcbiAgICAgICAgJzkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0OGJhZDllNzZmMzAyYzViOWM2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NTRlMzIzOWYzMjU1NzBjZGJiZjRhODdkZWVlOGE2NmI3ZjJiMzM0NzlkNDY4ZmJjMWE1MDc0M2JmNTZjYzE4JyxcbiAgICAgICAgJzY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4JyxcbiAgICAgICAgJzU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYicsXG4gICAgICAgICczYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmOWQ3MGE2Yjk4NzZjZTU0NGM5ODU2MWY0YmU0ZjcyNTQ0MmU2ZDJiNzM3ZDljOTFhODMyMTcyNGNlMDk2M2YnLFxuICAgICAgICAnNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzJyxcbiAgICAgICAgJ2VmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYScsXG4gICAgICAgICdlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2FmZDQxOTQzZTdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2FmM2M0MjNhOTVkOWY1YjMwNTQ3NTRlZmExNTBhYzM5Y2QyOTU1MmZlMzYwMjU3MzYyZGZkZWNlZjQwNTNiNDUnLFxuICAgICAgICAnZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhJyxcbiAgICAgICAgJzc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZScsXG4gICAgICAgICdjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxM2FkYTk1MTAzYzQ1MzczMDVlNjkxZTc0ZTlhNGE4ZGQ2NDdlNzExYTk1ZTczY2I2MmRjNjAxOGNmZDg3YjgnLFxuICAgICAgICAnZTEzODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjJyxcbiAgICAgICAgJzMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOScsXG4gICAgICAgICdlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5NjI0MTQ0NTBjNzZjMTY4OWM3YjQ4ZjgyMDJlYzM3ZmIyMjRjZjVhYzBiZmExNTcwMzI4YThhM2Q3Yzc3YWInLFxuICAgICAgICAnMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhJyxcbiAgICAgICAgJ2VmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZicsXG4gICAgICAgICc4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2MjRkODQ3ODA3MzI4NjBjZTFjNzhmY2JmZWZlMDhiMmIyOTgyM2RiOTEzZjY0OTM5NzViYTBmZjQ4NDc2MTAnLFxuICAgICAgICAnNjg2NTFjZjliNmRhOTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0JyxcbiAgICAgICAgJ2Y1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFlNDU3OGM1NDY3M2JjMWRjNWVhMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YycsXG4gICAgICAgICdkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ExZDBmY2YyZWM5ZGU2NzViNjEyMTM2ZTVjZTcwZDI3MWMyMTQxN2M5ZDJiOGFhYWFjMTM4NTk5ZDA3MTc5NDAnLFxuICAgICAgICAnZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwJyxcbiAgICAgICAgJ2E4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzJyxcbiAgICAgICAgJzY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzRjMWZkMDRkMzAxYmU4OWIzMWMwNDQyZDNlNmFjMjQ4ODM5MjhiNDVhOTM0MDc4MTg2N2Q0MjMyZWMyZGJkZicsXG4gICAgICAgICc5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2MycsXG4gICAgICAgICc0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYyYTQwMDc2NmQxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgnLFxuICAgICAgICAnZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmQzMWMyMjJmOGY2ZjBlZjg2ZjdjOThkM2EzMzM1ZWFkNWJjZDMyYWJkZDk0Mjg5ZmU0ZDMwOTFhYTgyNGJmJyxcbiAgICAgICAgJzVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNScsXG4gICAgICAgICc4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYnLFxuICAgICAgICAnOGRjMjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNmVjOTNlNDQ3ZWM4M2YwNDY3YjE4MzAyZWU2MjBmN2U2NWRlMzMxODc0YzlkYzcyYmZkODYxNmJhOWRhNmI1JyxcbiAgICAgICAgJzVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OScsXG4gICAgICAgICdmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2RjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MScsXG4gICAgICAgICdmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5NGY0YmUyMTlhMWE3NzAxNmRjZDgzODQzMWFlYTAwMDFjZGM4YWU3YTZmYzY4ODcyNjU3OGQ5NzAyODU3YTUnLFxuICAgICAgICAnNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1JyxcbiAgICAgICAgJzIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NycsXG4gICAgICAgICc0ZjE0MzUxZDAwODdlZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQxZDYwNjNhNTg2ZmE0NzVhNzI0NjA0ZGEwM2JjNWI5MmEyZTBkMmUwYTM2YWNmZTRjNzNhNTUxNDc0Mjg4MScsXG4gICAgICAgICc3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5Y2U3YTM2ZGUwMWE4ZDYxNTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNScsXG4gICAgICAgICczOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYnLFxuICAgICAgICAnZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzY1ODFlYTdiZmJiYjI5MGMxOTFhMmY1MDdhNDFjZjU2NDM4NDIxNzBlOTE0ZmFlYWIyN2MyYzU3OWY3MjYnLFxuICAgICAgICAnZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlJyxcbiAgICAgICAgJzZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCcsXG4gICAgICAgICc2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODViN2MxZGNiM2NlYzFiN2VlN2YzMGRlZDc5ZGQyMGEwZWQxZjRjYzE4Y2JjZmNmYTQxMDM2MWZkOGYwOGYzMScsXG4gICAgICAgICczZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVlOTk5NTExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEnLFxuICAgICAgICAnYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTInLFxuICAgICAgICAnYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZThjZWFmYjliM2U5YTEzNmRjN2ZmNjdlODQwMjk1YjQ5OWRmYjNiMjEzM2U0YmExMTNmMmU0YzBlMTIxZTUnLFxuICAgICAgICAnY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiJyxcbiAgICAgICAgJzZmYjhkNTU5MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCcsXG4gICAgICAgICczMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2FmOGFkZGJmMmI2NjFjOGE2YzYzMjg2NTVlYjk2NjUxMjUyMDA3ZDhjNWVhMzFiZTRhZDE5NmRlOGNlMjEzMWYnLFxuICAgICAgICAnNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OScsXG4gICAgICAgICcyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYnLFxuICAgICAgICAnYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMTM5NmQ1NWZkYTU0YzQ5ZjE5YWE5NzMxOGQ4ZGE2MWZhODU4NGU0N2IwODQ5NDUwNzdjZjAzMjU1YjUyOTg0JyxcbiAgICAgICAgJzk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YScsXG4gICAgICAgICdiMjI4NDI3OTk5NWEzNGUyZjlkNGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAnLFxuICAgICAgICAnYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQwYjc0ZTNhYzFmMWIxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNTMzZTRmN2VhODU1NWFhY2Q5Nzc3YWM1Y2FkMjliOTdkZDRkZWZjY2M1M2VlN2VhMjA0MTE5YjI4ODliMTk3JyxcbiAgICAgICAgJzZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzJyxcbiAgICAgICAgJ2MzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZicsXG4gICAgICAgICcyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzQ3ZDZkOWEwMmM0ODkyN2ViZmI4NmMxMzU5YjFjYWYxMzBhM2MwMjY3ZDExY2U2MzQ0YjM5Zjk5ZDQzY2MzOCcsXG4gICAgICAgICc2MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEnLFxuICAgICAgICAnNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExJyxcbiAgICAgICAgJzVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEyZDQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU0MmM4ZWM4MmM5OTc5OGNjZjNhNjEwYmU4NzBlNzgzMzhjN2Y3MTMzNDhiZDM0YzgyMDNlZjQwMzdmMzUwMicsXG4gICAgICAgICc3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEnLFxuICAgICAgICAnYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2JyxcbiAgICAgICAgJzhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjRmOWVhZWEwOWI2OTE3NjE5ZjZlYTZhNGViNTQ2NGVmZGRiNThmZDQ1YjFlYmVmY2RjMWEwMWQwOGI0Nzk4NicsXG4gICAgICAgICczOWU1Yzk5MjViNWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUnLFxuICAgICAgICAnNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0JyxcbiAgICAgICAgJzI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGZlZWVmMTg4MTEwMWYyY2IxMTY0NGYzYTJhZmRmYzIwNDVlMTk5MTkxNTI5MjNmMzY3YTE3NjdjMTFjY2VkYScsXG4gICAgICAgICdlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTknLFxuICAgICAgICAnY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmJyxcbiAgICAgICAgJ2Y1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWI5ODY2MGY0YzRkZmFhMDZhMmJlNDUzZDUwMjBiYzk5YTBjMmU2MGFiZTM4ODQ1N2RkNDNmZWZiMWVkNjIwYycsXG4gICAgICAgICc2Y2I5YTg4NzZkOWNiODUyMDYwOWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDInLFxuICAgICAgICAnZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3MGQ1NTY0NmI4YWRmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhJyxcbiAgICAgICAgJzFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjI2OGY1ZWY5YWQ1MWU0ZDc4ZGUzYTc1MGMyZGM4OWIxZTYyNmQ0MzUwNTg2Nzk5OTkzMmU1ZGIzM2FmM2Q4MCcsXG4gICAgICAgICc1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQnLFxuICAgICAgICAnNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExJyxcbiAgICAgICAgJ2NkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTJkYjBiNTM4NGRmYmYwNWJmYTlkNDcyZDdhZTI2ZGZlNGI4NTFjZWNhOTFiMWViYTU0MjYzMTgwZGEzMmI2MycsXG4gICAgICAgICdjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MicsXG4gICAgICAgICc2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2FmYTdkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMnLFxuICAgICAgICAnY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MDk4ZmYxZTFkOWYxNGZiNDZhMjEwZmFkYTZjOTAzZmVmMGZiN2I0YTFkZDFkOWFjNjBhMDM2MTgwMGI3YTAwJyxcbiAgICAgICAgJzk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4JyxcbiAgICAgICAgJ2VlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNycsXG4gICAgICAgICdkM2FhMmVkNzFjOWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0Mzg0NDc1NjZkNGQ3YmVkYWRjMjk5NDk2YWIzNTc0MjYwMDlhMzVmMjM1Y2IxNDFiZTBkOTljZDEwYWUzYTgnLFxuICAgICAgICAnYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlJyxcbiAgICAgICAgJzY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCcsXG4gICAgICAgICdjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjc0ZjI2MDBhMzAwN2EwMDU2OGMxYTdjZTA1ZDA4MTZjMWZiODRiZjEzNzA3OThmMWM2OTUzMmZhZWIxYTg2YicsXG4gICAgICAgICcyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGYnLFxuICAgICAgICAnZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2JyxcbiAgICAgICAgJzQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2InXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmUyMDYyMDAzYzUxY2MzMDA0NjgyOTA0MzMwZTRkZWU3ZjNkY2QxMGIwMWU1ODBiZjE5NzFiMDRkNGNhZDI5NycsXG4gICAgICAgICc2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1OGVkNzJkY2NiOWJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEnLFxuICAgICAgICAnN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjJyxcbiAgICAgICAgJ2FiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDVlOWUxZGE2NDlkOTdkODllNDg2ODExN2E0NjVhM2E0ZjhhMThkZTU3YTE0MGQzNmIzZjJhZjM0MWEyMWI1MicsXG4gICAgICAgICc0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmInLFxuICAgICAgICAnYmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1JyxcbiAgICAgICAgJ2JmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk4NWZkZmQxMjdjMDU2N2M2ZjUzZWMxYmI2M2VjMzE1OGU1OTdjNDBiZmU3NDdjODNjZGRmYzkxMDY0MTkxNycsXG4gICAgICAgICc2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJlZDAzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTknLFxuICAgICAgICAnY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzJyxcbiAgICAgICAgJzU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWUyMTU4ZjBkN2MwZDVmMjZjMzc5MWVmZWZhNzk1OTc2NTRlN2EyYjI0NjRmNTJiMWVlNmMxMzQ3NzY5ZWY1NycsXG4gICAgICAgICc3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NicsXG4gICAgICAgICdlZDhjYzlkMDRiMjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgnLFxuICAgICAgICAnOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MDlhMjBjNjdkNjQ5MDBmZmI2OThjNGM4MjVmNmQ1ZjIzMTBmYjA0NTFjODY5MzQ1YjczMTlmNjQ1NjA1NzIxJyxcbiAgICAgICAgJzllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCcsXG4gICAgICAgICc0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5J1xuICAgICAgXVxuICAgIF1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbnV0aWxzLmFzc2VydCA9IGZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59O1xuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgIT09ICdzdHJpbmcnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgaWYgKCFlbmMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICBtc2cgPSBtc2cucmVwbGFjZSgvW15hLXowLTldKy9pZywgJycpO1xuICAgIGlmIChtc2cubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gMilcbiAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXggPSB0b0hleDtcblxudXRpbHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGFyciwgZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0b0hleChhcnIpO1xuICBlbHNlXG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8vIFJlcHJlc2VudCBudW0gaW4gYSB3LU5BRiBmb3JtXG5mdW5jdGlvbiBnZXROQUYobnVtLCB3KSB7XG4gIHZhciBuYWYgPSBbXTtcbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuICB3aGlsZSAoay5jbXBuKDEpID49IDApIHtcbiAgICB2YXIgejtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICB2YXIgbW9kID0gay5hbmRsbih3cyAtIDEpO1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG4gICAgbmFmLnB1c2goeik7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24sIHNoaWZ0IGJ5IHdvcmQgaWYgcG9zc2libGVcbiAgICB2YXIgc2hpZnQgPSAoay5jbXBuKDApICE9PSAwICYmIGsuYW5kbG4od3MgLSAxKSA9PT0gMCkgPyAodyArIDEpIDogMTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNoaWZ0OyBpKyspXG4gICAgICBuYWYucHVzaCgwKTtcbiAgICBrLml1c2hybihzaGlmdCk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXVxuICBdO1xuXG4gIGsxID0gazEuY2xvbmUoKTtcbiAgazIgPSBrMi5jbG9uZSgpO1xuICB2YXIgZDEgPSAwO1xuICB2YXIgZDIgPSAwO1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG5cbiAgICAvLyBGaXJzdCBwaGFzZVxuICAgIHZhciBtMTQgPSAoazEuYW5kbG4oMykgKyBkMSkgJiAzO1xuICAgIHZhciBtMjQgPSAoazIuYW5kbG4oMykgKyBkMikgJiAzO1xuICAgIGlmIChtMTQgPT09IDMpXG4gICAgICBtMTQgPSAtMTtcbiAgICBpZiAobTI0ID09PSAzKVxuICAgICAgbTI0ID0gLTE7XG4gICAgdmFyIHUxO1xuICAgIGlmICgobTE0ICYgMSkgPT09IDApIHtcbiAgICAgIHUxID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9hcmdzXCI6IFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgICAgICBcInNjb3BlXCI6IG51bGwsXG4gICAgICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgICAgIFwidHlwZVwiOiBcInJhbmdlXCJcbiAgICAgIH0sXG4gICAgICBcIi9Vc2Vycy9wb250dXNtZWxrZS9zb3VyY2VzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ25cIlxuICAgIF1cbiAgXSxcbiAgXCJfZnJvbVwiOiBcImVsbGlwdGljQD49Ni4wLjAgPDcuMC4wXCIsXG4gIFwiX2lkXCI6IFwiZWxsaXB0aWNANi4zLjFcIixcbiAgXCJfaW5DYWNoZVwiOiB0cnVlLFxuICBcIl9pbnN0YWxsYWJsZVwiOiB0cnVlLFxuICBcIl9sb2NhdGlvblwiOiBcIi9lbGxpcHRpY1wiLFxuICBcIl9ub2RlVmVyc2lvblwiOiBcIjYuMC4wXCIsXG4gIFwiX25wbU9wZXJhdGlvbmFsSW50ZXJuYWxcIjoge1xuICAgIFwiaG9zdFwiOiBcInBhY2thZ2VzLTE2LWVhc3QuaW50ZXJuYWwubnBtanMuY29tXCIsXG4gICAgXCJ0bXBcIjogXCJ0bXAvZWxsaXB0aWMtNi4zLjEudGd6XzE0NjU5MjE0MTM0MDJfMC41MjAyOTY3MzgyNTAxODExXCJcbiAgfSxcbiAgXCJfbnBtVXNlclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gIH0sXG4gIFwiX25wbVZlcnNpb25cIjogXCIzLjguNlwiLFxuICBcIl9waGFudG9tQ2hpbGRyZW5cIjoge30sXG4gIFwiX3JlcXVlc3RlZFwiOiB7XG4gICAgXCJuYW1lXCI6IFwiZWxsaXB0aWNcIixcbiAgICBcInJhd1wiOiBcImVsbGlwdGljQF42LjAuMFwiLFxuICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgIFwic2NvcGVcIjogbnVsbCxcbiAgICBcInNwZWNcIjogXCI+PTYuMC4wIDw3LjAuMFwiLFxuICAgIFwidHlwZVwiOiBcInJhbmdlXCJcbiAgfSxcbiAgXCJfcmVxdWlyZWRCeVwiOiBbXG4gICAgXCIvYnJvd3NlcmlmeS1zaWduXCIsXG4gICAgXCIvY3JlYXRlLWVjZGhcIlxuICBdLFxuICBcIl9yZXNvbHZlZFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi4zLjEudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgXCJfc2hyaW5rd3JhcFwiOiBudWxsLFxuICBcIl9zcGVjXCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL3BvbnR1c21lbGtlL3NvdXJjZXMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiLFxuICBcImF1dGhvclwiOiB7XG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCIsXG4gICAgXCJuYW1lXCI6IFwiRmVkb3IgSW5kdXRueVwiXG4gIH0sXG4gIFwiYnVnc1wiOiB7XG4gICAgXCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXNcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJibi5qc1wiOiBcIl40LjQuMFwiLFxuICAgIFwiYnJvcmFuZFwiOiBcIl4xLjAuMVwiLFxuICAgIFwiaGFzaC5qc1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLWNvbm5lY3RcIjogXCJeMS4wLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29weVwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcImdydW50LW1vY2hhLWlzdGFuYnVsXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJncnVudC1zYXVjZWxhYnNcIjogXCJeOC42LjJcIixcbiAgICBcImlzdGFuYnVsXCI6IFwiXjAuNC4yXCIsXG4gICAgXCJqc2NzXCI6IFwiXjIuOS4wXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi42LjBcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJkaXJlY3Rvcmllc1wiOiB7fSxcbiAgXCJkaXN0XCI6IHtcbiAgICBcInNoYXN1bVwiOiBcIjE3NzgxZjIxMDlhYjBlYzY4NmIxNDZiZGNmZjVkMmU4YzZhZWNlZGFcIixcbiAgICBcInRhcmJhbGxcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4xLnRnelwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwibGliXCJcbiAgXSxcbiAgXCJnaXRIZWFkXCI6IFwiYzUzZjVjZjNkODMyYzAwNzNlYjRhNGVkNDIzYTQ2NGNiY2U2OGYzZVwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWNcIixcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJFQ1wiLFxuICAgIFwiRWxsaXB0aWNcIixcbiAgICBcImN1cnZlXCIsXG4gICAgXCJDcnlwdG9ncmFwaHlcIlxuICBdLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJtYWluXCI6IFwibGliL2VsbGlwdGljLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiLFxuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHt9LFxuICBcInJlYWRtZVwiOiBcIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCFcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJqc2NzXCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwianNoaW50XCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwibGludFwiOiBcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXRcIixcbiAgICBcInVuaXRcIjogXCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwidmVyc2lvblwiOiBcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjYuMy4xXCJcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxuRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24obikge1xuICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKVxuICAgIHRocm93IFR5cGVFcnJvcignbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgZXIsIGhhbmRsZXIsIGxlbiwgYXJncywgaSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cy5lcnJvciB8fFxuICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHtcbiAgICAgIGVyID0gYXJndW1lbnRzWzFdO1xuICAgICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgICB9XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCBcImVycm9yXCIgZXZlbnQuJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNVbmRlZmluZWQoaGFuZGxlcikpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBmYXN0IGNhc2VzXG4gICAgICBjYXNlIDE6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBzbG93ZXJcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKVxuICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICB2YXIgbTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2Uge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IDA7XG4gIGVsc2UgaWYgKGlzRnVuY3Rpb24oZW1pdHRlci5fZXZlbnRzW3R5cGVdKSlcbiAgICByZXQgPSAxO1xuICBlbHNlXG4gICAgcmV0ID0gZW1pdHRlci5fZXZlbnRzW3R5cGVdLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlMZW4sIGl2TGVuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZCwgJ2JpbmFyeScpXG4gIH1cbiAgaWYgKHNhbHQgJiYgIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkge1xuICAgIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsICdiaW5hcnknKVxuICB9XG4gIGtleUxlbiA9IGtleUxlbiAvIDhcbiAgaXZMZW4gPSBpdkxlbiB8fCAwXG4gIHZhciBraSA9IDBcbiAgdmFyIGlpID0gMFxuICB2YXIga2V5ID0gbmV3IEJ1ZmZlcihrZXlMZW4pXG4gIHZhciBpdiA9IG5ldyBCdWZmZXIoaXZMZW4pXG4gIHZhciBhZGRtZCA9IDBcbiAgdmFyIG1kX2J1ZlxuICB2YXIgaVxuICB2YXIgYnVmcyA9IFtdXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGFkZG1kKysgPiAwKSB7XG4gICAgICBidWZzLnB1c2gobWRfYnVmKVxuICAgIH1cbiAgICBidWZzLnB1c2gocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIHtcbiAgICAgIGJ1ZnMucHVzaChzYWx0KVxuICAgIH1cbiAgICBtZF9idWYgPSBtZDUoQnVmZmVyLmNvbmNhdChidWZzKSlcbiAgICBidWZzID0gW11cbiAgICBpID0gMFxuICAgIGlmIChrZXlMZW4gPiAwKSB7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBpZiAoa2V5TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAga2V5W2tpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGtleUxlbi0tXG4gICAgICAgIGkrK1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXZMZW4gPiAwICYmIGkgIT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChpdkxlbiA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IG1kX2J1Zi5sZW5ndGgpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGl2W2lpKytdID0gbWRfYnVmW2ldXG4gICAgICAgIGl2TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrZXlMZW4gPT09IDAgJiYgaXZMZW4gPT09IDApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBtZF9idWYubGVuZ3RoOyBpKyspIHtcbiAgICBtZF9idWZbaV0gPSAwXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXZcbiAgfVxufVxuIiwidmFyIGhhc2ggPSBleHBvcnRzO1xuXG5oYXNoLnV0aWxzID0gcmVxdWlyZSgnLi9oYXNoL3V0aWxzJyk7XG5oYXNoLmNvbW1vbiA9IHJlcXVpcmUoJy4vaGFzaC9jb21tb24nKTtcbmhhc2guc2hhID0gcmVxdWlyZSgnLi9oYXNoL3NoYScpO1xuaGFzaC5yaXBlbWQgPSByZXF1aXJlKCcuL2hhc2gvcmlwZW1kJyk7XG5oYXNoLmhtYWMgPSByZXF1aXJlKCcuL2hhc2gvaG1hYycpO1xuXG4vLyBQcm94eSBoYXNoIGZ1bmN0aW9ucyB0byB0aGUgbWFpbiBvYmplY3Rcbmhhc2guc2hhMSA9IGhhc2guc2hhLnNoYTE7XG5oYXNoLnNoYTI1NiA9IGhhc2guc2hhLnNoYTI1Njtcbmhhc2guc2hhMjI0ID0gaGFzaC5zaGEuc2hhMjI0O1xuaGFzaC5zaGEzODQgPSBoYXNoLnNoYS5zaGEzODQ7XG5oYXNoLnNoYTUxMiA9IGhhc2guc2hhLnNoYTUxMjtcbmhhc2gucmlwZW1kMTYwID0gaGFzaC5yaXBlbWQucmlwZW1kMTYwO1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwidmFyIGhtYWMgPSBleHBvcnRzO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDM2O1xuICB0aGlzLmlubmVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xuXG4gIC8vIDB4MzYgXiAweDVjID0gMHg2YVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfMyA9IHV0aWxzLnN1bTMyXzM7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xudmFyIEJsb2NrSGFzaCA9IGhhc2guY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTI1NigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTI1NikpXG4gICAgcmV0dXJuIG5ldyBTSEEyNTYoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTkgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTI1NiA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4YzEwNTllZDgsIDB4MzY3Y2Q1MDcsIDB4MzA3MGRkMTcsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHhmZmMwMGIzMSwgMHg2ODU4MTUxMSwgMHg2NGY5OGZhNywgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjI0LCBTSEEyNTYpO1xuZXhwb3J0cy5zaGEyMjQgPSBTSEEyMjQ7XG5cblNIQTIyNC5ibG9ja1NpemUgPSA1MTI7XG5TSEEyMjQub3V0U2l6ZSA9IDIyNDtcblNIQTIyNC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyMjQucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTIyNC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgLy8gSnVzdCB0cnVuY2F0ZSBvdXRwdXRcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgICAgICAgICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgICAgICAgICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAgICAgICAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgICAgICAgICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgICAgICAgICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAgICAgICAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgICAgICAgICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGE1MTIgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gICAgV1tpICsgMV0gPSBzdW02NF80X2xvKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzRfaGksIGM0X2xvKTtcblxuICAgIHZhciBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIHZhciBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIHZhciBjMV9oaSA9IG1hajY0X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuICAgIHZhciBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweGNiYmI5ZDVkLCAweGMxMDU5ZWQ4LFxuICAgICAgICAgICAgIDB4NjI5YTI5MmEsIDB4MzY3Y2Q1MDcsXG4gICAgICAgICAgICAgMHg5MTU5MDE1YSwgMHgzMDcwZGQxNyxcbiAgICAgICAgICAgICAweDE1MmZlY2Q4LCAweGY3MGU1OTM5LFxuICAgICAgICAgICAgIDB4NjczMzI2NjcsIDB4ZmZjMDBiMzEsXG4gICAgICAgICAgICAgMHg4ZWI0NGE4NywgMHg2ODU4MTUxMSxcbiAgICAgICAgICAgICAweGRiMGMyZTBkLCAweDY0Zjk4ZmE3LFxuICAgICAgICAgICAgIDB4NDdiNTQ4MWQsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTM4NCwgU0hBNTEyKTtcbmV4cG9ydHMuc2hhMzg0ID0gU0hBMzg0O1xuXG5TSEEzODQuYmxvY2tTaXplID0gMTAyNDtcblNIQTM4NC5vdXRTaXplID0gMzg0O1xuU0hBMzg0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTM4NC5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDEyKSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTEpKVxuICAgIHJldHVybiBuZXcgU0hBMSgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgICAgICAgICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGExID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzID0gfn4oaSAvIDIwKTtcbiAgICB2YXIgdCA9IHN1bTMyXzUocm90bDMyKGEsIDUpLCBmdF8xKHMsIGIsIGMsIGQpLCBlLCBXW2ldLCBzaGExX0tbc10pO1xuICAgIGUgPSBkO1xuICAgIGQgPSBjO1xuICAgIGMgPSByb3RsMzIoYiwgMzApO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0O1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbn07XG5cblNIQTEucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuXG5mdW5jdGlvbiBtYWozMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7XG59XG5cbmZ1bmN0aW9uIHAzMih4LCB5LCB6KSB7XG4gIHJldHVybiB4IF4geSBeIHo7XG59XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuXG5mdW5jdGlvbiBnMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDcpIF4gcm90cjMyKHgsIDE4KSBeICh4ID4+PiAzKTtcbn1cblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cblxuZnVuY3Rpb24gZnRfMShzLCB4LCB5LCB6KSB7XG4gIGlmIChzID09PSAwKVxuICAgIHJldHVybiBjaDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMSB8fCBzID09PSAzKVxuICAgIHJldHVybiBwMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAyKVxuICAgIHJldHVybiBtYWozMih4LCB5LCB6KTtcbn1cblxuZnVuY3Rpb24gY2g2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCJ2YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJykge1xuICAgIGlmICghZW5jKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB2YXIgaGkgPSBjID4+IDg7XG4gICAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgICBpZiAoaGkpXG4gICAgICAgICAgcmVzLnB1c2goaGksIGxvKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG51dGlscy5odG9ubCA9IGh0b25sO1xuXG5mdW5jdGlvbiB0b0hleDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdyA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnbGl0dGxlJylcbiAgICAgIHcgPSBodG9ubCh3KTtcbiAgICByZXMgKz0gemVybzgody50b1N0cmluZygxNikpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvOCA9IHplcm84O1xuXG5mdW5jdGlvbiBqb2luMzIobXNnLCBzdGFydCwgZW5kLCBlbmRpYW4pIHtcbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICBhc3NlcnQobGVuICUgNCA9PT0gMCk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobGVuIC8gNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gc3RhcnQ7IGkgPCByZXMubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKVxuICAgICAgdyA9IChtc2dba10gPDwgMjQpIHwgKG1zZ1trICsgMV0gPDwgMTYpIHwgKG1zZ1trICsgMl0gPDwgOCkgfCBtc2dbayArIDNdO1xuICAgIGVsc2VcbiAgICAgIHcgPSAobXNnW2sgKyAzXSA8PCAyNCkgfCAobXNnW2sgKyAyXSA8PCAxNikgfCAobXNnW2sgKyAxXSA8PCA4KSB8IG1zZ1trXTtcbiAgICByZXNbaV0gPSB3ID4+PiAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdHIzMiA9IHJvdHIzMjtcblxuZnVuY3Rpb24gcm90bDMyKHcsIGIpIHtcbiAgcmV0dXJuICh3IDw8IGIpIHwgKHcgPj4+ICgzMiAtIGIpKTtcbn1cbnV0aWxzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG51dGlscy5zdW0zMl8zID0gc3VtMzJfMztcblxuZnVuY3Rpb24gc3VtMzJfNChhLCBiLCBjLCBkKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCkgPj4+IDA7XG59XG51dGlscy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIGFzc2VydChjb25kLCBtc2cpIHtcbiAgaWYgKCFjb25kKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cbnV0aWxzLmFzc2VydCA9IGFzc2VydDtcblxudXRpbHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0X2xvID0gc3VtNjRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF81X2hpID0gc3VtNjRfNV9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbCArIGVsO1xuXG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMucm90cjY0X2xvID0gcm90cjY0X2xvO1xuXG5mdW5jdGlvbiBzaHI2NF9oaShhaCwgYWwsIG51bSkge1xuICByZXR1cm4gYWggPj4+IG51bTtcbn07XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIlxudmFyIGluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGluZGV4T2YpIHJldHVybiBhcnIuaW5kZXhPZihvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTsiLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qKlxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBCdWZmZXJcbiAqXG4gKiBBdXRob3I6ICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIExpY2Vuc2U6ICBNSVRcbiAqXG4gKiBgbnBtIGluc3RhbGwgaXMtYnVmZmVyYFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gISEob2JqICE9IG51bGwgJiZcbiAgICAob2JqLl9pc0J1ZmZlciB8fCAvLyBGb3IgU2FmYXJpIDUtNyAobWlzc2luZyBPYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yKVxuICAgICAgKG9iai5jb25zdHJ1Y3RvciAmJlxuICAgICAgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iaikpXG4gICAgKSlcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciBidWYgPSB0aGlzLnJhbmQuZ2VuZXJhdGUoTWF0aC5jZWlsKGxlbiAvIDgpKTtcblxuICAvLyBTZXQgbG93IGJpdHNcbiAgYnVmWzBdIHw9IDM7XG5cbiAgLy8gTWFzayBoaWdoIGJpdHNcbiAgdmFyIG1hc2sgPSBsZW4gJiAweDc7XG4gIGlmIChtYXNrICE9PSAwKVxuICAgIGJ1ZltidWYubGVuZ3RoIC0gMV0gPj49IDcgLSBtYXNrO1xuXG4gIHJldHVybiBuZXcgYm4oYnVmKTtcbn1cblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcblxuICAgIHZhciBnID0gbi5nY2QoYSk7XG4gICAgaWYgKGcuY21wbigxKSAhPT0gMClcbiAgICAgIHJldHVybiBnO1xuXG4gICAgdmFyIHggPSBhLnRvUmVkKHJlZCkucmVkUG93KGQpO1xuICAgIGlmICh4LmNtcChyb25lKSA9PT0gMCB8fCB4LmNtcChybjEpID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHM7IGkrKykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG5cbiAgICAgIGlmICh4LmNtcChyb25lKSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgICAgaWYgKHguY21wKHJuMSkgPT09IDApXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcbiAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCJleHBvcnRzLmVuZGlhbm5lc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnTEUnIH07XG5cbmV4cG9ydHMuaG9zdG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lXG4gICAgfVxuICAgIGVsc2UgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0cy5sb2FkYXZnID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy51cHRpbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwIH07XG5cbmV4cG9ydHMuZnJlZW1lbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTnVtYmVyLk1BWF9WQUxVRTtcbn07XG5cbmV4cG9ydHMudG90YWxtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLmNwdXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBbXSB9O1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnQnJvd3NlcicgfTtcblxuZXhwb3J0cy5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmFwcFZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubmV0d29ya0ludGVyZmFjZXNcbj0gZXhwb3J0cy5nZXROZXR3b3JrSW50ZXJmYWNlc1xuPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7fSB9O1xuXG5leHBvcnRzLmFyY2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnamF2YXNjcmlwdCcgfTtcblxuZXhwb3J0cy5wbGF0Zm9ybSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdicm93c2VyJyB9O1xuXG5leHBvcnRzLnRtcGRpciA9IGV4cG9ydHMudG1wRGlyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAnL3RtcCc7XG59O1xuXG5leHBvcnRzLkVPTCA9ICdcXG4nO1xuIiwibW9kdWxlLmV4cG9ydHM9e1wiMi4xNi44NDAuMS4xMDEuMy40LjEuMVwiOiBcImFlcy0xMjgtZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjJcIjogXCJhZXMtMTI4LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zXCI6IFwiYWVzLTEyOC1vZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNFwiOiBcImFlcy0xMjgtY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxXCI6IFwiYWVzLTE5Mi1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjJcIjogXCJhZXMtMTkyLWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yM1wiOiBcImFlcy0xOTItb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0XCI6IFwiYWVzLTE5Mi1jZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDFcIjogXCJhZXMtMjU2LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MlwiOiBcImFlcy0yNTYtY2JjXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzXCI6IFwiYWVzLTI1Ni1vZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDRcIjogXCJhZXMtMjU2LWNmYlwiXG59IiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9hc24xLmpzXG4vLyBGZWRvciwgeW91IGFyZSBhbWF6aW5nLlxuXG52YXIgYXNuMSA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG52YXIgUlNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdSU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MScpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnY29lZmZpY2llbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQcml2YXRlS2V5ID0gUlNBUHJpdmF0ZUtleVxuXG52YXIgUlNBUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVB1YmxpY0tleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQdWJsaWNLZXkgPSBSU0FQdWJsaWNLZXlcblxudmFyIFB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlB1YmxpY0tleSA9IFB1YmxpY0tleVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbjEuZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnbm9uZScpLm51bGxfKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ2cnKS5pbnQoKVxuICAgICkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuZXhwb3J0cy5Qcml2YXRlS2V5ID0gUHJpdmF0ZUtleUluZm9cbnZhciBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICB0aGlzLmtleSgnZGVjcnlwdCcpLnNlcSgpLm9iaihcbiAgICAgICAgdGhpcy5rZXkoJ2tkZScpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdrZGVwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICAgICAgICB0aGlzLmtleSgnc2FsdCcpLm9jdHN0cigpLFxuICAgICAgICAgICAgdGhpcy5rZXkoJ2l0ZXJzJykuaW50KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRoaXMua2V5KCdjaXBoZXInKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2FsZ28nKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdpdicpLm9jdHN0cigpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5cbmV4cG9ydHMuRW5jcnlwdGVkUHJpdmF0ZUtleSA9IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXG5cbnZhciBEU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0RTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgIHRoaXMua2V5KCdnJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1Yl9rZXknKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdl9rZXknKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5EU0FQcml2YXRlS2V5ID0gRFNBUHJpdmF0ZUtleVxuXG5leHBvcnRzLkRTQXBhcmFtID0gYXNuMS5kZWZpbmUoJ0RTQXBhcmFtJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmludCgpXG59KVxudmFyIEVDUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdFQ1ByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVLZXknKS5vY3RzdHIoKSxcbiAgICB0aGlzLmtleSgncGFyYW1ldGVycycpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKEVDUGFyYW1ldGVycyksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0tleScpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuRUNQcml2YXRlS2V5ID0gRUNQcml2YXRlS2V5XG52YXIgRUNQYXJhbWV0ZXJzID0gYXNuMS5kZWZpbmUoJ0VDUGFyYW1ldGVycycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIG5hbWVkQ3VydmU6IHRoaXMub2JqaWQoKVxuICB9KVxufSlcblxuZXhwb3J0cy5zaWduYXR1cmUgPSBhc24xLmRlZmluZSgnc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgncicpLmludCgpLFxuICAgIHRoaXMua2V5KCdzJykuaW50KClcbiAgKVxufSlcbiIsIi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXBhdGlsL3BlbXN0cmlwXG52YXIgZmluZFByb2MgPSAvUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFxccj9cXG5ERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspXFxyP1xcblxccj9cXG4oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxccj9cXG4vbVxudmFyIHN0YXJ0UmVnZXggPSAvXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4vbVxudmFyIGZ1bGxSZWdleCA9IC9eLS0tLS1CRUdJTiAoLiopIEtFWS0tLS0tXFxyP1xcbihbMC05QS16XFxuXFxyXFwrXFwvXFw9XSspXFxyP1xcbi0tLS0tRU5EIFxcMSBLRVktLS0tLSQvbVxudmFyIGV2cCA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2tleSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleSA9IG9rZXkudG9TdHJpbmcoKVxuICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZmluZFByb2MpXG4gIHZhciBkZWNyeXB0ZWRcbiAgaWYgKCFtYXRjaCkge1xuICAgIHZhciBtYXRjaDIgPSBrZXkubWF0Y2goZnVsbFJlZ2V4KVxuICAgIGRlY3J5cHRlZCA9IG5ldyBCdWZmZXIobWF0Y2gyWzJdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3VpdGUgPSAnYWVzJyArIG1hdGNoWzFdXG4gICAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBuZXcgQnVmZmVyKG1hdGNoWzNdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgICB2YXIgY2lwaGVyS2V5ID0gZXZwKHBhc3N3b3JkLCBpdi5zbGljZSgwLCA4KSwgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSkua2V5XG4gICAgdmFyIG91dCA9IFtdXG4gICAgdmFyIGNpcGhlciA9IGNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwgY2lwaGVyS2V5LCBpdilcbiAgICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICAgIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQob3V0KVxuICB9XG4gIHZhciB0YWcgPSBrZXkubWF0Y2goc3RhcnRSZWdleClbMV0gKyAnIEtFWSdcbiAgcmV0dXJuIHtcbiAgICB0YWc6IHRhZyxcbiAgICBkYXRhOiBkZWNyeXB0ZWRcbiAgfVxufVxuIiwidmFyIGFzbjEgPSByZXF1aXJlKCcuL2FzbjEnKVxudmFyIGFlc2lkID0gcmVxdWlyZSgnLi9hZXNpZC5qc29uJylcbnZhciBmaXhQcm9jID0gcmVxdWlyZSgnLi9maXhQcm9jJylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxudmFyIGNvbXBhdCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gbmV3IEJ1ZmZlcihidWZmZXIpXG4gIH1cblxuICB2YXIgc3RyaXBwZWQgPSBmaXhQcm9jKGJ1ZmZlciwgcGFzc3dvcmQpXG5cbiAgdmFyIHR5cGUgPSBzdHJpcHBlZC50YWdcbiAgdmFyIGRhdGEgPSBzdHJpcHBlZC5kYXRhXG4gIHZhciBzdWJ0eXBlLCBuZGF0YVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5QdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIG5kYXRhLnN1YmplY3RQcml2YXRlS2V5ID0gbmRhdGEuc3ViamVjdFB1YmxpY0tleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZWMnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVuY3J5cHRlZFByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgZGF0YSA9IGRlY3J5cHQoZGF0YSwgcGFzc3dvcmQpXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFJJVkFURSBLRVknOlxuICAgICAgbmRhdGEgPSBhc24xLlByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJ2ZTogbmRhdGEuYWxnb3JpdGhtLmN1cnZlLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJykucHJpdmF0ZUtleVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgcGFyYW1zOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ1JTQSBQVUJMSUMgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnUlNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ0RTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgcGFyYW1zOiBhc24xLkRTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgIGNhc2UgJ0VDIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJ2ZTogZGF0YS5wYXJhbWV0ZXJzLnZhbHVlLFxuICAgICAgICBwcml2YXRlS2V5OiBkYXRhLnByaXZhdGVLZXlcbiAgICAgIH1cbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gIH1cbn1cbnBhcnNlS2V5cy5zaWduYXR1cmUgPSBhc24xLnNpZ25hdHVyZVxuZnVuY3Rpb24gZGVjcnlwdCAoZGF0YSwgcGFzc3dvcmQpIHtcbiAgdmFyIHNhbHQgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdFxuICB2YXIgaXRlcnMgPSBwYXJzZUludChkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwgMTApXG4gIHZhciBhbGdvID0gYWVzaWRbZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCcuJyldXG4gIHZhciBpdiA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2XG4gIHZhciBjaXBoZXJUZXh0ID0gZGF0YS5zdWJqZWN0UHJpdmF0ZUtleVxuICB2YXIga2V5bGVuID0gcGFyc2VJbnQoYWxnby5zcGxpdCgnLScpWzFdLCAxMCkgLyA4XG4gIHZhciBrZXkgPSBjb21wYXQucGJrZGYyU3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcnMsIGtleWxlbilcbiAgdmFyIGNpcGhlciA9IGNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdihhbGdvLCBrZXksIGl2KVxuICB2YXIgb3V0ID0gW11cbiAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgb3V0LnB1c2goY2lwaGVyLmZpbmFsKCkpXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIFNwbGl0IGEgZmlsZW5hbWUgaW50byBbcm9vdCwgZGlyLCBiYXNlbmFtZSwgZXh0XSwgdW5peCB2ZXJzaW9uXG4vLyAncm9vdCcgaXMganVzdCBhIHNsYXNoLCBvciBub3RoaW5nLlxudmFyIHNwbGl0UGF0aFJlID1cbiAgICAvXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLztcbnZhciBzcGxpdFBhdGggPSBmdW5jdGlvbihmaWxlbmFtZSkge1xuICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG59O1xuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlc29sdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59O1xuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59O1xuXG5leHBvcnRzLnNlcCA9ICcvJztcbmV4cG9ydHMuZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCksXG4gICAgICByb290ID0gcmVzdWx0WzBdLFxuICAgICAgZGlyID0gcmVzdWx0WzFdO1xuXG4gIGlmICghcm9vdCAmJiAhZGlyKSB7XG4gICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyXG4gICAgcmV0dXJuICcuJztcbiAgfVxuXG4gIGlmIChkaXIpIHtcbiAgICAvLyBJdCBoYXMgYSBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBzbGFzaFxuICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3QgKyBkaXI7XG59O1xuXG5cbmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbihwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBzcGxpdFBhdGgocGF0aClbMl07XG4gIC8vIFRPRE86IG1ha2UgdGhpcyBjb21wYXJpc29uIGNhc2UtaW5zZW5zaXRpdmUgb24gd2luZG93cz9cbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn07XG5cblxuZXhwb3J0cy5leHRuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gc3BsaXRQYXRoKHBhdGgpWzNdO1xufTtcblxuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYidcbiAgICA/IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfVxuICAgIDogZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwidmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgTUFYX0FMTE9DID0gTWF0aC5wb3coMiwgMzApIC0gMSAvLyBkZWZhdWx0IGluIGlvanNcblxuZXhwb3J0cy5wYmtkZjIgPSBwYmtkZjJcbmZ1bmN0aW9uIHBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjInKVxuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQsIHJlc3VsdClcbiAgfSlcbn1cblxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcGJrZGYyU3luY1xuZnVuY3Rpb24gcGJrZGYyU3luYyAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KSB7XG4gIGlmICh0eXBlb2YgaXRlcmF0aW9ucyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJdGVyYXRpb25zIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoaXRlcmF0aW9ucyA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgaXRlcmF0aW9ucycpXG4gIH1cblxuICBpZiAodHlwZW9mIGtleWxlbiAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdLZXkgbGVuZ3RoIG5vdCBhIG51bWJlcicpXG4gIH1cblxuICBpZiAoa2V5bGVuIDwgMCB8fCBrZXlsZW4gPiBNQVhfQUxMT0MpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IG5ldyBCdWZmZXIocGFzc3dvcmQsICdiaW5hcnknKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkgc2FsdCA9IG5ldyBCdWZmZXIoc2FsdCwgJ2JpbmFyeScpXG5cbiAgdmFyIGhMZW5cbiAgdmFyIGwgPSAxXG4gIHZhciBESyA9IG5ldyBCdWZmZXIoa2V5bGVuKVxuICB2YXIgYmxvY2sxID0gbmV3IEJ1ZmZlcihzYWx0Lmxlbmd0aCArIDQpXG4gIHNhbHQuY29weShibG9jazEsIDAsIDAsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciByXG4gIHZhciBUXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG4gICAgdmFyIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShibG9jazEpLmRpZ2VzdCgpXG5cbiAgICBpZiAoIWhMZW4pIHtcbiAgICAgIGhMZW4gPSBVLmxlbmd0aFxuICAgICAgVCA9IG5ldyBCdWZmZXIoaExlbilcbiAgICAgIGwgPSBNYXRoLmNlaWwoa2V5bGVuIC8gaExlbilcbiAgICAgIHIgPSBrZXlsZW4gLSAobCAtIDEpICogaExlblxuICAgIH1cblxuICAgIFUuY29weShULCAwLCAwLCBoTGVuKVxuXG4gICAgZm9yICh2YXIgaiA9IDE7IGogPCBpdGVyYXRpb25zOyBqKyspIHtcbiAgICAgIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShVKS5kaWdlc3QoKVxuXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykge1xuICAgICAgICBUW2tdIF49IFVba11cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVzdFBvcyA9IChpIC0gMSkgKiBoTGVuXG4gICAgdmFyIGxlbiA9IChpID09PSBsID8gciA6IGhMZW4pXG4gICAgVC5jb3B5KERLLCBkZXN0UG9zLCAwLCBsZW4pXG4gIH1cblxuICByZXR1cm4gREtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBuZXh0VGljaztcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5uZXh0VGljaztcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNhY2hlZFNldFRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaXMgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBpcyBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgfVxufSAoKSlcbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IGNhY2hlZFNldFRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGNhY2hlZENsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQoZHJhaW5RdWV1ZSwgMCk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCJleHBvcnRzLnB1YmxpY0VuY3J5cHQgPSByZXF1aXJlKCcuL3B1YmxpY0VuY3J5cHQnKTtcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSByZXF1aXJlKCcuL3ByaXZhdGVEZWNyeXB0Jyk7XG5cbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBwcml2YXRlRW5jcnlwdChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wdWJsaWNFbmNyeXB0KGtleSwgYnVmLCB0cnVlKTtcbn07XG5cbmV4cG9ydHMucHVibGljRGVjcnlwdCA9IGZ1bmN0aW9uIHB1YmxpY0RlY3J5cHQoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHJpdmF0ZURlY3J5cHQoa2V5LCBidWYsIHRydWUpO1xufTsiLCJ2YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZWVkLCBsZW4pIHtcbiAgdmFyIHQgPSBuZXcgQnVmZmVyKCcnKTtcbiAgdmFyICBpID0gMCwgYztcbiAgd2hpbGUgKHQubGVuZ3RoIDwgbGVuKSB7XG4gICAgYyA9IGkyb3BzKGkrKyk7XG4gICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUoc2VlZCkudXBkYXRlKGMpLmRpZ2VzdCgpXSk7XG4gIH1cbiAgcmV0dXJuIHQuc2xpY2UoMCwgbGVuKTtcbn07XG5cbmZ1bmN0aW9uIGkyb3BzKGMpIHtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIoNCk7XG4gIG91dC53cml0ZVVJbnQzMkJFKGMsMCk7XG4gIHJldHVybiBvdXQ7XG59IiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKTtcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpO1xudmFyIHhvciA9IHJlcXVpcmUoJy4veG9yJyk7XG52YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJyk7XG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcml2YXRlRGVjcnlwdChwcml2YXRlX2tleSwgZW5jLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nO1xuICBpZiAocHJpdmF0ZV9rZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwcml2YXRlX2tleS5wYWRkaW5nO1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkaW5nID0gNDtcbiAgfVxuICBcbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwcml2YXRlX2tleSk7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICBpZiAoZW5jLmxlbmd0aCA+IGsgfHwgbmV3IGJuKGVuYykuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIG1zZztcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBtc2cgPSB3aXRoUHVibGljKG5ldyBibihlbmMpLCBrZXkpO1xuICB9IGVsc2Uge1xuICAgIG1zZyA9IGNydChlbmMsIGtleSk7XG4gIH1cbiAgdmFyIHpCdWZmZXIgPSBuZXcgQnVmZmVyKGsgLSBtc2cubGVuZ3RoKTtcbiAgekJ1ZmZlci5maWxsKDApO1xuICBtc2cgPSBCdWZmZXIuY29uY2F0KFt6QnVmZmVyLCBtc2ddLCBrKTtcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICByZXR1cm4gb2FlcChrZXksIG1zZyk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHJldHVybiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHJldHVybiBtc2c7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gb2FlcChrZXksIG1zZyl7XG4gIHZhciBuID0ga2V5Lm1vZHVsdXM7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBpSGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUobmV3IEJ1ZmZlcignJykpLmRpZ2VzdCgpO1xuICB2YXIgaExlbiA9IGlIYXNoLmxlbmd0aDtcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW47XG4gIGlmIChtc2dbMF0gIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgbWFza2VkU2VlZCA9IG1zZy5zbGljZSgxLCBoTGVuICsgMSk7XG4gIHZhciBtYXNrZWREYiA9ICBtc2cuc2xpY2UoaExlbiArIDEpO1xuICB2YXIgc2VlZCA9IHhvcihtYXNrZWRTZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKTtcbiAgdmFyIGRiID0geG9yKG1hc2tlZERiLCBtZ2Yoc2VlZCwgayAtIGhMZW4gLSAxKSk7XG4gIGlmIChjb21wYXJlKGlIYXNoLCBkYi5zbGljZSgwLCBoTGVuKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgaSA9IGhMZW47XG4gIHdoaWxlIChkYltpXSA9PT0gMCkge1xuICAgIGkrKztcbiAgfVxuICBpZiAoZGJbaSsrXSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHJldHVybiBkYi5zbGljZShpKTtcbn1cblxuZnVuY3Rpb24gcGtjczEoa2V5LCBtc2csIHJldmVyc2Upe1xuICB2YXIgcDEgPSBtc2cuc2xpY2UoMCwgMik7XG4gIHZhciBpID0gMjtcbiAgdmFyIHN0YXR1cyA9IDA7XG4gIHdoaWxlIChtc2dbaSsrXSAhPT0gMCkge1xuICAgIGlmIChpID49IG1zZy5sZW5ndGgpIHtcbiAgICAgIHN0YXR1cysrO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZhciBwcyA9IG1zZy5zbGljZSgyLCBpIC0gMSk7XG4gIHZhciBwMiA9IG1zZy5zbGljZShpIC0gMSwgaSk7XG5cbiAgaWYgKChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAyJyAmJiAhcmV2ZXJzZSkgfHwgKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDEnICYmIHJldmVyc2UpKXtcbiAgICBzdGF0dXMrKztcbiAgfVxuICBpZiAocHMubGVuZ3RoIDwgOCkge1xuICAgIHN0YXR1cysrO1xuICB9XG4gIGlmIChzdGF0dXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICByZXR1cm4gIG1zZy5zbGljZShpKTtcbn1cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYil7XG4gIGEgPSBuZXcgQnVmZmVyKGEpO1xuICBiID0gbmV3IEJ1ZmZlcihiKTtcbiAgdmFyIGRpZiA9IDA7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIGRpZisrO1xuICAgIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gIH1cbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGRpZiArPSAoYVtpXSBeIGJbaV0pO1xuICB9XG4gIHJldHVybiBkaWY7XG59IiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJyk7XG52YXIgbWdmID0gcmVxdWlyZSgnLi9tZ2YnKTtcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpO1xudmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB3aXRoUHVibGljID0gcmVxdWlyZSgnLi93aXRoUHVibGljJyk7XG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKTtcblxudmFyIGNvbnN0YW50cyA9IHtcbiAgUlNBX1BLQ1MxX09BRVBfUEFERElORzogNCxcbiAgUlNBX1BLQ1MxX1BBRERJTjogMSxcbiAgUlNBX05PX1BBRERJTkc6IDNcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHVibGljRW5jcnlwdChwdWJsaWNfa2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmc7XG4gIGlmIChwdWJsaWNfa2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHVibGljX2tleS5wYWRkaW5nO1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkaW5nID0gNDtcbiAgfVxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHB1YmxpY19rZXkpO1xuICB2YXIgcGFkZGVkTXNnO1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHBhZGRlZE1zZyA9IG9hZXAoa2V5LCBtc2cpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICBwYWRkZWRNc2cgPSBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHBhZGRlZE1zZyA9IG5ldyBibihtc2cpO1xuICAgIGlmIChwYWRkZWRNc2cuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKTtcbiAgfVxuICBpZiAocmV2ZXJzZSkge1xuICAgIHJldHVybiBjcnQocGFkZGVkTXNnLCBrZXkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gb2FlcChrZXksIG1zZyl7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBpSGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUobmV3IEJ1ZmZlcignJykpLmRpZ2VzdCgpO1xuICB2YXIgaExlbiA9IGlIYXNoLmxlbmd0aDtcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW47XG4gIGlmIChtTGVuID4gayAtIGhMZW4yIC0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpO1xuICB9XG4gIHZhciBwcyA9IG5ldyBCdWZmZXIoayAtIG1MZW4gLSBoTGVuMiAtIDIpO1xuICBwcy5maWxsKDApO1xuICB2YXIgZGJsZW4gPSBrIC0gaExlbiAtIDE7XG4gIHZhciBzZWVkID0gcmFuZG9tQnl0ZXMoaExlbik7XG4gIHZhciBtYXNrZWREYiA9IHhvcihCdWZmZXIuY29uY2F0KFtpSGFzaCwgcHMsIG5ldyBCdWZmZXIoWzFdKSwgbXNnXSwgZGJsZW4pLCBtZ2Yoc2VlZCwgZGJsZW4pKTtcbiAgdmFyIG1hc2tlZFNlZWQgPSB4b3Ioc2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSk7XG4gIHJldHVybiBuZXcgYm4oQnVmZmVyLmNvbmNhdChbbmV3IEJ1ZmZlcihbMF0pLCBtYXNrZWRTZWVkLCBtYXNrZWREYl0sIGspKTtcbn1cbmZ1bmN0aW9uIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKXtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgaWYgKG1MZW4gPiBrIC0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKTtcbiAgfVxuICB2YXIgcHM7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcHMgPSBuZXcgQnVmZmVyKGsgLSBtTGVuIC0gMyk7XG4gICAgcHMuZmlsbCgweGZmKTtcbiAgfSBlbHNlIHtcbiAgICBwcyA9IG5vblplcm8oayAtIG1MZW4gLSAzKTtcbiAgfVxuICByZXR1cm4gbmV3IGJuKEJ1ZmZlci5jb25jYXQoW25ldyBCdWZmZXIoWzAsIHJldmVyc2U/MToyXSksIHBzLCBuZXcgQnVmZmVyKFswXSksIG1zZ10sIGspKTtcbn1cbmZ1bmN0aW9uIG5vblplcm8obGVuLCBjcnlwdG8pIHtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4qMik7XG4gIHZhciBjdXIgPSAwO1xuICB2YXIgbnVtO1xuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIGlmIChjdXIgPT09IGNhY2hlLmxlbmd0aCkge1xuICAgICAgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4qMik7XG4gICAgICBjdXIgPSAwO1xuICAgIH1cbiAgICBudW0gPSBjYWNoZVtjdXIrK107XG4gICAgaWYgKG51bSkge1xuICAgICAgb3V0W2krK10gPSBudW07XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59IiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbmZ1bmN0aW9uIHdpdGhQdWJsaWMocGFkZGVkTXNnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIocGFkZGVkTXNnXG4gICAgLnRvUmVkKGJuLm1vbnQoa2V5Lm1vZHVsdXMpKVxuICAgIC5yZWRQb3cobmV3IGJuKGtleS5wdWJsaWNFeHBvbmVudCkpXG4gICAgLmZyb21SZWQoKVxuICAgIC50b0FycmF5KCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHdpdGhQdWJsaWM7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IoYSwgYikge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBhW2ldIF49IGJbaV07XG4gIH1cbiAgcmV0dXJuIGFcbn07IiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG5cbmlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJhbmRvbUJ5dGVzXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IG9sZEJyb3dzZXJcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnl0ZXMgKHNpemUsIGNiKSB7XG4gIC8vIHBoYW50b21qcyBuZWVkcyB0byB0aHJvd1xuICBpZiAoc2l6ZSA+IDY1NTM2KSB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuICAvLyBpbiBjYXNlIGJyb3dzZXJpZnkgIGlzbid0IHVzaW5nIHRoZSBVaW50OEFycmF5IHZlcnNpb25cbiAgdmFyIHJhd0J5dGVzID0gbmV3IGdsb2JhbC5VaW50OEFycmF5KHNpemUpXG5cbiAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrIGluIG9sZGVyIGJyb3dzZXJzLlxuICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmF3Qnl0ZXMpXG4gIH1cbiAgLy8gcGhhbnRvbWpzIGRvZXNuJ3QgbGlrZSBhIGJ1ZmZlciBiZWluZyBwYXNzZWQgaGVyZVxuICB2YXIgYnl0ZXMgPSBuZXcgQnVmZmVyKHJhd0J5dGVzLmJ1ZmZlcilcblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9kdXBsZXguanNcIilcbiIsIi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuXG4vLyBTaW5jZSBKUyBkb2Vzbid0IGhhdmUgbXVsdGlwbGUgcHJvdG90eXBhbCBpbmhlcml0YW5jZSwgdGhpcyBjbGFzc1xuLy8gcHJvdG90eXBhbGx5IGluaGVyaXRzIGZyb20gUmVhZGFibGUsIGFuZCB0aGVuIHBhcmFzaXRpY2FsbHkgZnJvbVxuLy8gV3JpdGFibGUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3JlYWRhYmxlJyk7XG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxudXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTtcblxudmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5mb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHtcbiAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbn1cblxuZnVuY3Rpb24gRHVwbGV4KG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpO1xuXG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuXG4gIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xufVxuXG4vLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gaWYgd2UgYWxsb3cgaGFsZi1vcGVuIHN0YXRlLCBvciBpZiB0aGUgd3JpdGFibGUgc2lkZSBlbmRlZCxcbiAgLy8gdGhlbiB3ZSdyZSBvay5cbiAgaWYgKHRoaXMuYWxsb3dIYWxmT3BlbiB8fCB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLlxuICAvLyBCdXQgYWxsb3cgbW9yZSB3cml0ZXMgdG8gaGFwcGVuIGluIHRoaXMgdGljay5cbiAgcHJvY2Vzc05leHRUaWNrKG9uRW5kTlQsIHRoaXMpO1xufVxuXG5mdW5jdGlvbiBvbkVuZE5UKHNlbGYpIHtcbiAgc2VsZi5lbmQoKTtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaCh4cywgZikge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGYoeHNbaV0sIGkpO1xuICB9XG59IiwiLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgcHJvY2Vzc05leHRUaWNrID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5Jyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuUmVhZGFibGUuUmVhZGFibGVTdGF0ZSA9IFJlYWRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG5cbnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgU3RyZWFtID0gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTtcbiAgfSBjYXRjaCAoXykge30gZmluYWxseSB7XG4gICAgaWYgKCFTdHJlYW0pIFN0cmVhbSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiAgfVxufSkoKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIFN0cmluZ0RlY29kZXI7XG5cbnV0aWwuaW5oZXJpdHMoUmVhZGFibGUsIFN0cmVhbSk7XG5cbnZhciBoYXNQcmVwZW5kTGlzdGVuZXIgPSB0eXBlb2YgRUUucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJztcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICBpZiAoaGFzUHJlcGVuZExpc3RlbmVyKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgYnJ1dGFsbHkgdWdseSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyXG4gIC8vIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnkgdXNlcmxhbmQgb25lcy4gIE5FVkVSIERPIFRISVMuIFRoaXMgaXMgaGVyZVxuICAvLyBvbmx5IGJlY2F1c2UgdGhpcyBjb2RlIG5lZWRzIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9uc1xuICAvLyBvZiBOb2RlLmpzIHRoYXQgZG8gbm90IGluY2x1ZGUgdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWxcbiAgLy8gaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkgZW1pdHRlci5vbihldmVudCwgZm4pO2Vsc2UgaWYgKGlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0udW5zaGlmdChmbik7ZWxzZSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdID0gW2ZuLCBlbWl0dGVyLl9ldmVudHNbZXZlbnRdXTtcbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH4gfnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICB0aGlzLmJ1ZmZlciA9IFtdO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHdoZW4gcGlwaW5nLCB3ZSBvbmx5IGNhcmUgYWJvdXQgJ3JlYWRhYmxlJyBldmVudHMgdGhhdCBoYXBwZW5cbiAgLy8gYWZ0ZXIgcmVhZCgpaW5nIGFsbCB0aGUgYnl0ZXMgYW5kIG5vdCBnZXR0aW5nIGFueSBwdXNoYmFjay5cbiAgdGhpcy5yYW5PdXQgPSBmYWxzZTtcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICBjaHVuayA9IGJ1ZmZlclNoaW0uZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBmYWxzZSk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCAnJywgdHJ1ZSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTtcblxuZnVuY3Rpb24gcmVhZGFibGVBZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQpIHtcbiAgdmFyIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgIGlmIChzdGF0ZS5lbmRlZCAmJiAhYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZEVtaXR0ZWQgJiYgYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIF9lID0gbmV3IEVycm9yKCdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpO1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgX2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2tpcEFkZDtcbiAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFhZGRUb0Zyb250ICYmICFlbmNvZGluZykge1xuICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICBza2lwQWRkID0gIXN0YXRlLm9iamVjdE1vZGUgJiYgY2h1bmsubGVuZ3RoID09PSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFkZFRvRnJvbnQpIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcblxuICAgICAgLy8gRG9uJ3QgYWRkIHRvIHRoZSBidWZmZXIgaWYgd2UndmUgZGVjb2RlZCB0byBhbiBlbXB0eSBzdHJpbmcgY2h1bmsgYW5kXG4gICAgICAvLyB3ZSdyZSBub3QgaW4gb2JqZWN0IG1vZGVcbiAgICAgIGlmICghc2tpcEFkZCkge1xuICAgICAgICAvLyBpZiB3ZSB3YW50IHRoZSBkYXRhIG5vdywganVzdCBlbWl0IGl0LlxuICAgICAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICAgICAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgICAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gbjtcbn1cblxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcblxuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIG4gPT09IDAgPyAwIDogMTtcblxuICBpZiAobiA9PT0gbnVsbCB8fCBpc05hTihuKSkge1xuICAgIC8vIG9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmJ1ZmZlci5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXJbMF0ubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChuIDw9IDApIHJldHVybiAwO1xuXG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSB0YXJnZXQgYnVmZmVyIGxldmVsLFxuICAvLyB0aGVuIHJhaXNlIHRoZSB3YXRlciBtYXJrLiAgQnVtcCB1cCB0byB0aGUgbmV4dCBoaWdoZXN0XG4gIC8vIHBvd2VyIG9mIDIsIHRvIHByZXZlbnQgaW5jcmVhc2luZyBpdCBleGNlc3NpdmVseSBpbiB0aW55XG4gIC8vIGFtb3VudHMuXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuXG4gIC8vIGRvbid0IGhhdmUgdGhhdCBtdWNoLiAgcmV0dXJuIG51bGwsIHVubGVzcyB3ZSd2ZSBlbmRlZC5cbiAgaWYgKG4gPiBzdGF0ZS5sZW5ndGgpIHtcbiAgICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG47XG59XG5cbi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG5cbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuID4gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfVxuXG4gIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gIH1cblxuICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gIGlmIChkb1JlYWQgJiYgIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9XG5cbiAgc3RhdGUubGVuZ3RoIC09IG47XG5cbiAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlciA9IG51bGw7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICByZXR1cm4gZXI7XG59XG5cbmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuXG4gIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbn1cblxuLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBpZiAoc3RhdGUuc3luYykgcHJvY2Vzc05leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgZGVidWcoJ2VtaXQgcmVhZGFibGUnKTtcbiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gIGZsb3coc3RyZWFtKTtcbn1cblxuLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nTW9yZSkge1xuICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5lbmRlZCAmJiBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKVxuICAgICAgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2U7XG59XG5cbi8vIGFic3RyYWN0IG1ldGhvZC4gIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguXG4vLyBmb3IgdmlydHVhbCAobm9uLXN0cmluZywgbm9uLWJ1ZmZlcikgc3RyZWFtcywgXCJsZW5ndGhcIiBpcyBzb21ld2hhdFxuLy8gYXJiaXRyYXJ5LCBhbmQgcGVyaGFwcyBub3QgdmVyeSBtZWFuaW5nZnVsLlxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogY2xlYW51cDtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHByb2Nlc3NOZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgnZW5kJywgZW5kRm4pO1xuXG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcbiAgZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUpIHtcbiAgICBkZWJ1Zygnb251bnBpcGUnKTtcbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgY2xlYW51cCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGRlYnVnKCdvbmVuZCcpO1xuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuICAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyXG4gIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAvLyBoYW5kbGVyIGluIGZsb3coKSwgYnV0IGFkZGluZyBhbmQgcmVtb3ZpbmcgcmVwZWF0ZWRseSBpc1xuICAvLyB0b28gc2xvdy5cbiAgdmFyIG9uZHJhaW4gPSBwaXBlT25EcmFpbihzcmMpO1xuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBkZWJ1ZygnY2xlYW51cCcpO1xuICAgIC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQpIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBkZXN0c1tfaV0uZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgfXJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS5cbiAgdmFyIGkgPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGkgPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaSwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG5cbiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICAvLyBJZiBsaXN0ZW5pbmcgdG8gZGF0YSwgYW5kIGl0IGhhcyBub3QgZXhwbGljaXRseSBiZWVuIHBhdXNlZCxcbiAgLy8gdGhlbiBjYWxsIHJlc3VtZSB0byBzdGFydCB0aGUgZmxvdyBvZiBkYXRhIG9uIHRoZSBuZXh0IHRpY2suXG4gIGlmIChldiA9PT0gJ2RhdGEnICYmIGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICB0aGlzLnJlc3VtZSgpO1xuICB9XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnICYmICF0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIGlmICghc3RhdGUucmVhZGluZykge1xuICAgICAgICBwcm9jZXNzTmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcywgc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdHJlYW0uZW1pdCgncmVzdW1lJyk7XG4gIGZsb3coc3RyZWFtKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpO1xuICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZsb3coc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2Zsb3cnLCBzdGF0ZS5mbG93aW5nKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcpIHtcbiAgICBkbyB7XG4gICAgICB2YXIgY2h1bmsgPSBzdHJlYW0ucmVhZCgpO1xuICAgIH0gd2hpbGUgKG51bGwgIT09IGNodW5rICYmIHN0YXRlLmZsb3dpbmcpO1xuICB9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgcGF1c2VkID0gZmFsc2U7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBzZWxmLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIHNlbGYucHVzaChudWxsKTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuXG4gICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IHNlbGYucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgdmFyIGV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcbiAgZm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChldikge1xuICAgIHN0cmVhbS5vbihldiwgc2VsZi5lbWl0LmJpbmQoc2VsZiwgZXYpKTtcbiAgfSk7XG5cbiAgLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cbiAgc2VsZi5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHNlbGY7XG59O1xuXG4vLyBleHBvc2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcblxuLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbmZ1bmN0aW9uIGZyb21MaXN0KG4sIHN0YXRlKSB7XG4gIHZhciBsaXN0ID0gc3RhdGUuYnVmZmVyO1xuICB2YXIgbGVuZ3RoID0gc3RhdGUubGVuZ3RoO1xuICB2YXIgc3RyaW5nTW9kZSA9ICEhc3RhdGUuZGVjb2RlcjtcbiAgdmFyIG9iamVjdE1vZGUgPSAhIXN0YXRlLm9iamVjdE1vZGU7XG4gIHZhciByZXQ7XG5cbiAgLy8gbm90aGluZyBpbiB0aGUgbGlzdCwgZGVmaW5pdGVseSBlbXB0eS5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICBpZiAobGVuZ3RoID09PSAwKSByZXQgPSBudWxsO2Vsc2UgaWYgKG9iamVjdE1vZGUpIHJldCA9IGxpc3Quc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IGxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgYXJyYXkuXG4gICAgaWYgKHN0cmluZ01vZGUpIHJldCA9IGxpc3Quam9pbignJyk7ZWxzZSBpZiAobGlzdC5sZW5ndGggPT09IDEpIHJldCA9IGxpc3RbMF07ZWxzZSByZXQgPSBCdWZmZXIuY29uY2F0KGxpc3QsIGxlbmd0aCk7XG4gICAgbGlzdC5sZW5ndGggPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQganVzdCBzb21lIG9mIGl0LlxuICAgIGlmIChuIDwgbGlzdFswXS5sZW5ndGgpIHtcbiAgICAgIC8vIGp1c3QgdGFrZSBhIHBhcnQgb2YgdGhlIGZpcnN0IGxpc3QgaXRlbS5cbiAgICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgdmFyIGJ1ZiA9IGxpc3RbMF07XG4gICAgICByZXQgPSBidWYuc2xpY2UoMCwgbik7XG4gICAgICBsaXN0WzBdID0gYnVmLnNsaWNlKG4pO1xuICAgIH0gZWxzZSBpZiAobiA9PT0gbGlzdFswXS5sZW5ndGgpIHtcbiAgICAgIC8vIGZpcnN0IGxpc3QgaXMgYSBwZXJmZWN0IG1hdGNoXG4gICAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbXBsZXggY2FzZS5cbiAgICAgIC8vIHdlIGhhdmUgZW5vdWdoIHRvIGNvdmVyIGl0LCBidXQgaXQgc3BhbnMgcGFzdCB0aGUgZmlyc3QgYnVmZmVyLlxuICAgICAgaWYgKHN0cmluZ01vZGUpIHJldCA9ICcnO2Vsc2UgcmV0ID0gYnVmZmVyU2hpbS5hbGxvY1Vuc2FmZShuKTtcblxuICAgICAgdmFyIGMgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaXN0Lmxlbmd0aDsgaSA8IGwgJiYgYyA8IG47IGkrKykge1xuICAgICAgICB2YXIgX2J1ZiA9IGxpc3RbMF07XG4gICAgICAgIHZhciBjcHkgPSBNYXRoLm1pbihuIC0gYywgX2J1Zi5sZW5ndGgpO1xuXG4gICAgICAgIGlmIChzdHJpbmdNb2RlKSByZXQgKz0gX2J1Zi5zbGljZSgwLCBjcHkpO2Vsc2UgX2J1Zi5jb3B5KHJldCwgYywgMCwgY3B5KTtcblxuICAgICAgICBpZiAoY3B5IDwgX2J1Zi5sZW5ndGgpIGxpc3RbMF0gPSBfYnVmLnNsaWNlKGNweSk7ZWxzZSBsaXN0LnNoaWZ0KCk7XG5cbiAgICAgICAgYyArPSBjcHk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcHJvY2Vzc05leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh4c1tpXSA9PT0geCkgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufSIsIi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RhdGUoc3RyZWFtKSB7XG4gIHRoaXMuYWZ0ZXJUcmFuc2Zvcm0gPSBmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICByZXR1cm4gYWZ0ZXJUcmFuc2Zvcm0oc3RyZWFtLCBlciwgZGF0YSk7XG4gIH07XG5cbiAgdGhpcy5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHRoaXMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG4gIHRoaXMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRoaXMud3JpdGVlbmNvZGluZyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG5cbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoIWNiKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdubyB3cml0ZWNiIGluIFRyYW5zZm9ybSBjbGFzcycpKTtcblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSBzdHJlYW0ucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHN0cmVhbS5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG5cbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUgPSBuZXcgVHJhbnNmb3JtU3RhdGUodGhpcyk7XG5cbiAgLy8gd2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB2YXIgc3RyZWFtID0gdGhpcztcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgdGhpcy5vbmNlKCdwcmVmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyKSB7XG4gICAgICBkb25lKHN0cmVhbSwgZXIpO1xuICAgIH0pO2Vsc2UgZG9uZShzdHJlYW0pO1xuICB9KTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07XG5cbi8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiB0cy53cml0ZWNiICYmICF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlO1xuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG4gIHZhciB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAod3MubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCcpO1xuXG4gIGlmICh0cy50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcHJvY2Vzc05leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW07XG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIFN0cmVhbSA9IHJlcXVpcmUoJ3N0JyArICdyZWFtJyk7XG4gIH0gY2F0Y2ggKF8pIHt9IGZpbmFsbHkge1xuICAgIGlmICghU3RyZWFtKSBTdHJlYW0gPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG4gIH1cbn0pKCk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxudmFyIER1cGxleDtcbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtXG4gIC8vIGNvbnRhaW5zIGJ1ZmZlcnMgb3Igb2JqZWN0cy5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIHdyaXRlKCkgc3RhcnRzIHJldHVybmluZyBmYWxzZVxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIHRoYXQgd2UgYWx3YXlzIHJldHVybiBmYWxzZSBpZlxuICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bSB8fCBod20gPT09IDAgPyBod20gOiBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gfiB+dGhpcy5oaWdoV2F0ZXJNYXJrO1xuXG4gIHRoaXMubmVlZERyYWluID0gZmFsc2U7XG4gIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7XG4gIC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cbiAgdmFyIG5vRGVjb2RlID0gb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG4gIHRoaXMubGVuZ3RoID0gMDtcblxuICAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcblxuICAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG4gIHRoaXMuY29ya2VkID0gMDtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuICB0aGlzLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG4gIHRoaXMub253cml0ZSA9IGZ1bmN0aW9uIChlcikge1xuICAgIG9ud3JpdGUoc3RyZWFtLCBlcik7XG4gIH07XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG5cbiAgLy8gdGhlIGFtb3VudCB0aGF0IGlzIGJlaW5nIHdyaXR0ZW4gd2hlbiBfd3JpdGUgaXMgY2FsbGVkLlxuICB0aGlzLndyaXRlbGVuID0gMDtcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuXG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiB3cml0YWJsZVN0YXRlR2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbnZhciBEdXBsZXg7XG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0aG91Z2ggdGhleSdyZSBub3RcbiAgLy8gaW5zdGFuY2VvZiBXcml0YWJsZSwgdGhleSdyZSBpbnN0YW5jZW9mIFJlYWRhYmxlLlxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgV3JpdGFibGUpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlJykpO1xufTtcblxuZnVuY3Rpb24gd3JpdGVBZnRlckVuZChzdHJlYW0sIGNiKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIElmIHdlIGdldCBzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBidWZmZXIsIHN0cmluZywgbnVsbCwgb3IgdW5kZWZpbmVkLFxuLy8gYW5kIHdlJ3JlIG5vdCBpbiBvYmplY3RNb2RlLCB0aGVuIHRoYXQncyBhbiBlcnJvci5cbi8vIE90aGVyd2lzZSBzdHJlYW0gY2h1bmtzIGFyZSBhbGwgY29uc2lkZXJlZCB0byBiZSBvZiBsZW5ndGg9MSwgYW5kIHRoZVxuLy8gd2F0ZXJtYXJrcyBkZXRlcm1pbmUgaG93IG1hbnkgb2JqZWN0cyB0byBrZWVwIGluIHRoZSBidWZmZXIsIHJhdGhlciB0aGFuXG4vLyBob3cgbWFueSBieXRlcyBvciBjaGFyYWN0ZXJzLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG4gIC8vIEFsd2F5cyB0aHJvdyBlcnJvciBpZiBhIG51bGwgaXMgd3JpdHRlblxuICAvLyBpZiB3ZSBhcmUgbm90IGluIG9iamVjdCBtb2RlIHRoZW4gdGhyb3dcbiAgLy8gaWYgaXQgaXMgbm90IGEgYnVmZmVyLCBzdHJpbmcsIG9yIHVuZGVmaW5lZC5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmICh2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKTtcbiAgfVxufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykge1xuICAvLyBub2RlOjpQYXJzZUVuY29kaW5nKCkgcmVxdWlyZXMgbG93ZXIgY2FzZS5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIGVuY29kaW5nID0gZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKSB7XG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgY2h1bmsgPSBidWZmZXJTaGltLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbi8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG5ldyBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuICBpZiAoc3luYykgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7ZWxzZSBjYihlcik7XG5cbiAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgYnVmZmVyW2NvdW50XSA9IGVudHJ5O1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xufTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkKSB7XG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBuZWVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG4gIGlmIChuZWVkKSB7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZWVkO1xufVxuXG5mdW5jdGlvbiBlbmRXcml0YWJsZShzdHJlYW0sIHN0YXRlLCBjYikge1xuICBzdGF0ZS5lbmRpbmcgPSB0cnVlO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwcm9jZXNzTmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG4vLyBJdCBzZWVtcyBhIGxpbmtlZCBsaXN0IGJ1dCBpdCBpcyBub3Rcbi8vIHRoZXJlIHdpbGwgYmUgb25seSAyIG9mIHRoZXNlIGZvciBlYWNoIHN0cmVhbVxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuXG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKGVycikge1xuICAgIHZhciBlbnRyeSA9IF90aGlzLmVudHJ5O1xuICAgIF90aGlzLmVudHJ5ID0gbnVsbDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgICBjYihlcnIpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgIH1cbiAgICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IF90aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBfdGhpcztcbiAgICB9XG4gIH07XG59IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qc1wiKVxuIiwidmFyIFN0cmVhbSA9IChmdW5jdGlvbiAoKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTsgLy8gaGFjayB0byBmaXggYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3VlIHdoZW4gdXNlZCB3aXRoIGJyb3dzZXJpZnlcbiAgfSBjYXRjaChfKXt9XG59KCkpO1xuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBTdHJlYW0gfHwgZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5cbmlmICghcHJvY2Vzcy5icm93c2VyICYmIHByb2Nlc3MuZW52LlJFQURBQkxFX1NUUkVBTSA9PT0gJ2Rpc2FibGUnICYmIFN0cmVhbSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzXCIpXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzXCIpXG4iLCIvKlxuQ3J5cHRvSlMgdjMuMS4yXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbi8qKiBAcHJlc2VydmVcbihjKSAyMDEyIGJ5IEPDqWRyaWMgTWVzbmlsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLy8gY29uc3RhbnRzIHRhYmxlXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSwgMHg4RjFCQkNEQywgMHhBOTUzRkQ0RV1cbnZhciBociA9IFsweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBieXRlc1RvV29yZHMgKGJ5dGVzKSB7XG4gIHZhciB3b3JkcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrLCBiICs9IDgpIHtcbiAgICB3b3Jkc1tiID4+PiA1XSB8PSBieXRlc1tpXSA8PCAoMjQgLSBiICUgMzIpXG4gIH1cbiAgcmV0dXJuIHdvcmRzXG59XG5cbmZ1bmN0aW9uIHdvcmRzVG9CeXRlcyAod29yZHMpIHtcbiAgdmFyIGJ5dGVzID0gW11cbiAgZm9yICh2YXIgYiA9IDA7IGIgPCB3b3Jkcy5sZW5ndGggKiAzMjsgYiArPSA4KSB7XG4gICAgYnl0ZXMucHVzaCgod29yZHNbYiA+Pj4gNV0gPj4+ICgyNCAtIGIgJSAzMikpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0Jsb2NrIChILCBNLCBvZmZzZXQpIHtcbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaVxuICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV1cblxuICAgIC8vIFN3YXBcbiAgICBNW29mZnNldF9pXSA9IChcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gICAgKVxuICB9XG5cbiAgLy8gV29ya2luZyB2YXJpYWJsZXNcbiAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbFxuICB2YXIgYXIsIGJyLCBjciwgZHIsIGVyXG5cbiAgYXIgPSBhbCA9IEhbMF1cbiAgYnIgPSBibCA9IEhbMV1cbiAgY3IgPSBjbCA9IEhbMl1cbiAgZHIgPSBkbCA9IEhbM11cbiAgZXIgPSBlbCA9IEhbNF1cblxuICAvLyBjb21wdXRhdGlvblxuICB2YXIgdFxuICBmb3IgKGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHQgPSAoYWwgKyBNW29mZnNldCArIHpsW2ldXSkgfCAwXG4gICAgaWYgKGkgPCAxNikge1xuICAgICAgdCArPSBmMShibCwgY2wsIGRsKSArIGhsWzBdXG4gICAgfSBlbHNlIGlmIChpIDwgMzIpIHtcbiAgICAgIHQgKz0gZjIoYmwsIGNsLCBkbCkgKyBobFsxXVxuICAgIH0gZWxzZSBpZiAoaSA8IDQ4KSB7XG4gICAgICB0ICs9IGYzKGJsLCBjbCwgZGwpICsgaGxbMl1cbiAgICB9IGVsc2UgaWYgKGkgPCA2NCkge1xuICAgICAgdCArPSBmNChibCwgY2wsIGRsKSArIGhsWzNdXG4gICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuICAgICAgdCArPSBmNShibCwgY2wsIGRsKSArIGhsWzRdXG4gICAgfVxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNsW2ldKVxuICAgIHQgPSAodCArIGVsKSB8IDBcbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdFxuXG4gICAgdCA9IChhciArIE1bb2Zmc2V0ICsgenJbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGY1KGJyLCBjciwgZHIpICsgaHJbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmNChiciwgY3IsIGRyKSArIGhyWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYnIsIGNyLCBkcikgKyBoclsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGYyKGJyLCBjciwgZHIpICsgaHJbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGYxKGJyLCBjciwgZHIpICsgaHJbNF1cbiAgICB9XG5cbiAgICB0ID0gdCB8IDBcbiAgICB0ID0gcm90bCh0LCBzcltpXSlcbiAgICB0ID0gKHQgKyBlcikgfCAwXG4gICAgYXIgPSBlclxuICAgIGVyID0gZHJcbiAgICBkciA9IHJvdGwoY3IsIDEwKVxuICAgIGNyID0gYnJcbiAgICBiciA9IHRcbiAgfVxuXG4gIC8vIGludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG4gIHQgPSAoSFsxXSArIGNsICsgZHIpIHwgMFxuICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKSB8IDBcbiAgSFsyXSA9IChIWzNdICsgZWwgKyBhcikgfCAwXG4gIEhbM10gPSAoSFs0XSArIGFsICsgYnIpIHwgMFxuICBIWzRdID0gKEhbMF0gKyBibCArIGNyKSB8IDBcbiAgSFswXSA9IHRcbn1cblxuZnVuY3Rpb24gZjEgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoeSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGYyICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh5KSkgfCAoKH54KSAmICh6KSkpXG59XG5cbmZ1bmN0aW9uIGYzICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGY0ICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh6KSkgfCAoKHkpICYgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gZjUgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoKHkpIHwgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIHJpcGVtZDE2MCAobWVzc2FnZSkge1xuICB2YXIgSCA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2LCAweEMzRDJFMUYwXVxuXG4gIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gbmV3IEJ1ZmZlcihtZXNzYWdlLCAndXRmOCcpXG4gIH1cblxuICB2YXIgbSA9IGJ5dGVzVG9Xb3JkcyhtZXNzYWdlKVxuXG4gIHZhciBuQml0c0xlZnQgPSBtZXNzYWdlLmxlbmd0aCAqIDhcbiAgdmFyIG5CaXRzVG90YWwgPSBtZXNzYWdlLmxlbmd0aCAqIDhcblxuICAvLyBBZGQgcGFkZGluZ1xuICBtW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMilcbiAgbVsoKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuICAgICgoKG5CaXRzVG90YWwgPDwgOCkgfCAobkJpdHNUb3RhbCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAoKChuQml0c1RvdGFsIDw8IDI0KSB8IChuQml0c1RvdGFsID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICApXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSArPSAxNikge1xuICAgIHByb2Nlc3NCbG9jayhILCBtLCBpKVxuICB9XG5cbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIC8vIHNob3J0Y3V0XG4gICAgdmFyIEhfaSA9IEhbaV1cblxuICAgIC8vIFN3YXBcbiAgICBIW2ldID0gKCgoSF9pIDw8IDgpIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICB9XG5cbiAgdmFyIGRpZ2VzdGJ5dGVzID0gd29yZHNUb0J5dGVzKEgpXG4gIHJldHVybiBuZXcgQnVmZmVyKGRpZ2VzdGJ5dGVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJpcGVtZDE2MFxuIiwiLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBuZXcgQnVmZmVyKGJsb2NrU2l6ZSlcbiAgdGhpcy5fZmluYWxTaXplID0gZmluYWxTaXplXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9sZW4gPSAwXG4gIHRoaXMuX3MgPSAwXG59XG5cbkhhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgbCA9IHRoaXMuX2xlbiArPSBkYXRhLmxlbmd0aFxuICB2YXIgcyA9IHRoaXMuX3MgfHwgMFxuICB2YXIgZiA9IDBcbiAgdmFyIGJ1ZmZlciA9IHRoaXMuX2Jsb2NrXG5cbiAgd2hpbGUgKHMgPCBsKSB7XG4gICAgdmFyIHQgPSBNYXRoLm1pbihkYXRhLmxlbmd0aCwgZiArIHRoaXMuX2Jsb2NrU2l6ZSAtIChzICUgdGhpcy5fYmxvY2tTaXplKSlcbiAgICB2YXIgY2ggPSAodCAtIGYpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoOyBpKyspIHtcbiAgICAgIGJ1ZmZlclsocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgKyBpXSA9IGRhdGFbaSArIGZdXG4gICAgfVxuXG4gICAgcyArPSBjaFxuICAgIGYgKz0gY2hcblxuICAgIGlmICgocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShidWZmZXIpXG4gICAgfVxuICB9XG4gIHRoaXMuX3MgPSBzXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICAvLyBTdXBwb3NlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgTSwgaW4gYml0cywgaXMgbFxuICB2YXIgbCA9IHRoaXMuX2xlbiAqIDhcblxuICAvLyBBcHBlbmQgdGhlIGJpdCAxIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2VcbiAgdGhpcy5fYmxvY2tbdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXSA9IDB4ODBcblxuICAvLyBhbmQgdGhlbiBrIHplcm8gYml0cywgd2hlcmUgayBpcyB0aGUgc21hbGxlc3Qgbm9uLW5lZ2F0aXZlIHNvbHV0aW9uIHRvIHRoZSBlcXVhdGlvbiAobCArIDEgKyBrKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemUgKyAxKVxuXG4gIGlmIChsICUgKHRoaXMuX2Jsb2NrU2l6ZSAqIDgpID49IHRoaXMuX2ZpbmFsU2l6ZSAqIDgpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgLy8gdG8gdGhpcyBhcHBlbmQgdGhlIGJsb2NrIHdoaWNoIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgbCB3cml0dGVuIGluIGJpbmFyeVxuICAvLyBUT0RPOiBoYW5kbGUgY2FzZSB3aGVyZSBsIGlzID4gTWF0aC5wb3coMiwgMjkpXG4gIHRoaXMuX2Jsb2NrLndyaXRlSW50MzJCRShsLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIHZhciBoYXNoID0gdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSB8fCB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0xLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVmVyc2lvbiAyLjFhIENvcHlyaWdodCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDAyLlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlXG4gKiBTZWUgaHR0cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgZGV0YWlscy5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDY0KVxuXG5mdW5jdGlvbiBTaGEyMjQgKCkge1xuICB0aGlzLmluaXQoKVxuXG4gIHRoaXMuX3cgPSBXIC8vIG5ldyBBcnJheSg2NClcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEyMjQsIFNoYTI1NilcblxuU2hhMjI0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHhjMTA1OWVkOFxuICB0aGlzLl9iID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nID0gMHg2NGY5OGZhN1xuICB0aGlzLl9oID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTIyNC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigzMilcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5faCwgMjgpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyNTZcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXVxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTUxMiAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGE1MTIsIEhhc2gpXG5cblNoYTUxMi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweDZhMDllNjY3XG4gIHRoaXMuX2JoID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jaCA9IDB4M2M2ZWYzNzJcbiAgdGhpcy5fZGggPSAweGE1NGZmNTNhXG4gIHRoaXMuX2VoID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9maCA9IDB4OWIwNTY4OGNcbiAgdGhpcy5fZ2ggPSAweDFmODNkOWFiXG4gIHRoaXMuX2hoID0gMHg1YmUwY2QxOVxuXG4gIHRoaXMuX2FsID0gMHhmM2JjYzkwOFxuICB0aGlzLl9ibCA9IDB4ODRjYWE3M2JcbiAgdGhpcy5fY2wgPSAweGZlOTRmODJiXG4gIHRoaXMuX2RsID0gMHg1ZjFkMzZmMVxuICB0aGlzLl9lbCA9IDB4YWRlNjgyZDFcbiAgdGhpcy5fZmwgPSAweDJiM2U2YzFmXG4gIHRoaXMuX2dsID0gMHhmYjQxYmQ2YlxuICB0aGlzLl9obCA9IDB4MTM3ZTIxNzlcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBDaCAoeCwgeSwgeikge1xuICByZXR1cm4geiBeICh4ICYgKHkgXiB6KSlcbn1cblxuZnVuY3Rpb24gbWFqICh4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKVxufVxuXG5mdW5jdGlvbiBzaWdtYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMjggfCB4bCA8PCA0KSBeICh4bCA+Pj4gMiB8IHggPDwgMzApIF4gKHhsID4+PiA3IHwgeCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE0IHwgeGwgPDwgMTgpIF4gKHggPj4+IDE4IHwgeGwgPDwgMTQpIF4gKHhsID4+PiA5IHwgeCA8PCAyMylcbn1cblxuZnVuY3Rpb24gR2FtbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3KVxufVxuXG5mdW5jdGlvbiBHYW1tYTBsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3IHwgeGwgPDwgMjUpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMWwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2IHwgeGwgPDwgMjYpXG59XG5cbmZ1bmN0aW9uIGdldENhcnJ5IChhLCBiKSB7XG4gIHJldHVybiAoYSA+Pj4gMCkgPCAoYiA+Pj4gMCkgPyAxIDogMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYWggPSB0aGlzLl9haCB8IDBcbiAgdmFyIGJoID0gdGhpcy5fYmggfCAwXG4gIHZhciBjaCA9IHRoaXMuX2NoIHwgMFxuICB2YXIgZGggPSB0aGlzLl9kaCB8IDBcbiAgdmFyIGVoID0gdGhpcy5fZWggfCAwXG4gIHZhciBmaCA9IHRoaXMuX2ZoIHwgMFxuICB2YXIgZ2ggPSB0aGlzLl9naCB8IDBcbiAgdmFyIGhoID0gdGhpcy5faGggfCAwXG5cbiAgdmFyIGFsID0gdGhpcy5fYWwgfCAwXG4gIHZhciBibCA9IHRoaXMuX2JsIHwgMFxuICB2YXIgY2wgPSB0aGlzLl9jbCB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZGwgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2VsIHwgMFxuICB2YXIgZmwgPSB0aGlzLl9mbCB8IDBcbiAgdmFyIGdsID0gdGhpcy5fZ2wgfCAwXG4gIHZhciBobCA9IHRoaXMuX2hsIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkgKz0gMikge1xuICAgIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICAgIFdbaSArIDFdID0gTS5yZWFkSW50MzJCRShpICogNCArIDQpXG4gIH1cbiAgZm9yICg7IGkgPCAxNjA7IGkgKz0gMikge1xuICAgIHZhciB4aCA9IFdbaSAtIDE1ICogMl1cbiAgICB2YXIgeGwgPSBXW2kgLSAxNSAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTAgPSBHYW1tYTAoeGgsIHhsKVxuICAgIHZhciBnYW1tYTBsID0gR2FtbWEwbCh4bCwgeGgpXG5cbiAgICB4aCA9IFdbaSAtIDIgKiAyXVxuICAgIHhsID0gV1tpIC0gMiAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTEgPSBHYW1tYTEoeGgsIHhsKVxuICAgIHZhciBnYW1tYTFsID0gR2FtbWExbCh4bCwgeGgpXG5cbiAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cbiAgICB2YXIgV2k3aCA9IFdbaSAtIDcgKiAyXVxuICAgIHZhciBXaTdsID0gV1tpIC0gNyAqIDIgKyAxXVxuXG4gICAgdmFyIFdpMTZoID0gV1tpIC0gMTYgKiAyXVxuICAgIHZhciBXaTE2bCA9IFdbaSAtIDE2ICogMiArIDFdXG5cbiAgICB2YXIgV2lsID0gKGdhbW1hMGwgKyBXaTdsKSB8IDBcbiAgICB2YXIgV2loID0gKGdhbW1hMCArIFdpN2ggKyBnZXRDYXJyeShXaWwsIGdhbW1hMGwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgZ2FtbWExbCkgfCAwXG4gICAgV2loID0gKFdpaCArIGdhbW1hMSArIGdldENhcnJ5KFdpbCwgZ2FtbWExbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBXaTE2bCkgfCAwXG4gICAgV2loID0gKFdpaCArIFdpMTZoICsgZ2V0Q2FycnkoV2lsLCBXaTE2bCkpIHwgMFxuXG4gICAgV1tpXSA9IFdpaFxuICAgIFdbaSArIDFdID0gV2lsXG4gIH1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgV2loID0gV1tqXVxuICAgIFdpbCA9IFdbaiArIDFdXG5cbiAgICB2YXIgbWFqaCA9IG1haihhaCwgYmgsIGNoKVxuICAgIHZhciBtYWpsID0gbWFqKGFsLCBibCwgY2wpXG5cbiAgICB2YXIgc2lnbWEwaCA9IHNpZ21hMChhaCwgYWwpXG4gICAgdmFyIHNpZ21hMGwgPSBzaWdtYTAoYWwsIGFoKVxuICAgIHZhciBzaWdtYTFoID0gc2lnbWExKGVoLCBlbClcbiAgICB2YXIgc2lnbWExbCA9IHNpZ21hMShlbCwgZWgpXG5cbiAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbal0gKyBXW2pdXG4gICAgdmFyIEtpaCA9IEtbal1cbiAgICB2YXIgS2lsID0gS1tqICsgMV1cblxuICAgIHZhciBjaGggPSBDaChlaCwgZmgsIGdoKVxuICAgIHZhciBjaGwgPSBDaChlbCwgZmwsIGdsKVxuXG4gICAgdmFyIHQxbCA9IChobCArIHNpZ21hMWwpIHwgMFxuICAgIHZhciB0MWggPSAoaGggKyBzaWdtYTFoICsgZ2V0Q2FycnkodDFsLCBobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBjaGwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBjaGggKyBnZXRDYXJyeSh0MWwsIGNobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBLaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBLaWggKyBnZXRDYXJyeSh0MWwsIEtpbCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBXaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBXaWggKyBnZXRDYXJyeSh0MWwsIFdpbCkpIHwgMFxuXG4gICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcbiAgICB2YXIgdDJsID0gKHNpZ21hMGwgKyBtYWpsKSB8IDBcbiAgICB2YXIgdDJoID0gKHNpZ21hMGggKyBtYWpoICsgZ2V0Q2FycnkodDJsLCBzaWdtYTBsKSkgfCAwXG5cbiAgICBoaCA9IGdoXG4gICAgaGwgPSBnbFxuICAgIGdoID0gZmhcbiAgICBnbCA9IGZsXG4gICAgZmggPSBlaFxuICAgIGZsID0gZWxcbiAgICBlbCA9IChkbCArIHQxbCkgfCAwXG4gICAgZWggPSAoZGggKyB0MWggKyBnZXRDYXJyeShlbCwgZGwpKSB8IDBcbiAgICBkaCA9IGNoXG4gICAgZGwgPSBjbFxuICAgIGNoID0gYmhcbiAgICBjbCA9IGJsXG4gICAgYmggPSBhaFxuICAgIGJsID0gYWxcbiAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMFxuICAgIGFoID0gKHQxaCArIHQyaCArIGdldENhcnJ5KGFsLCB0MWwpKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2FsID0gKHRoaXMuX2FsICsgYWwpIHwgMFxuICB0aGlzLl9ibCA9ICh0aGlzLl9ibCArIGJsKSB8IDBcbiAgdGhpcy5fY2wgPSAodGhpcy5fY2wgKyBjbCkgfCAwXG4gIHRoaXMuX2RsID0gKHRoaXMuX2RsICsgZGwpIHwgMFxuICB0aGlzLl9lbCA9ICh0aGlzLl9lbCArIGVsKSB8IDBcbiAgdGhpcy5fZmwgPSAodGhpcy5fZmwgKyBmbCkgfCAwXG4gIHRoaXMuX2dsID0gKHRoaXMuX2dsICsgZ2wpIHwgMFxuICB0aGlzLl9obCA9ICh0aGlzLl9obCArIGhsKSB8IDBcblxuICB0aGlzLl9haCA9ICh0aGlzLl9haCArIGFoICsgZ2V0Q2FycnkodGhpcy5fYWwsIGFsKSkgfCAwXG4gIHRoaXMuX2JoID0gKHRoaXMuX2JoICsgYmggKyBnZXRDYXJyeSh0aGlzLl9ibCwgYmwpKSB8IDBcbiAgdGhpcy5fY2ggPSAodGhpcy5fY2ggKyBjaCArIGdldENhcnJ5KHRoaXMuX2NsLCBjbCkpIHwgMFxuICB0aGlzLl9kaCA9ICh0aGlzLl9kaCArIGRoICsgZ2V0Q2FycnkodGhpcy5fZGwsIGRsKSkgfCAwXG4gIHRoaXMuX2VoID0gKHRoaXMuX2VoICsgZWggKyBnZXRDYXJyeSh0aGlzLl9lbCwgZWwpKSB8IDBcbiAgdGhpcy5fZmggPSAodGhpcy5fZmggKyBmaCArIGdldENhcnJ5KHRoaXMuX2ZsLCBmbCkpIHwgMFxuICB0aGlzLl9naCA9ICh0aGlzLl9naCArIGdoICsgZ2V0Q2FycnkodGhpcy5fZ2wsIGdsKSkgfCAwXG4gIHRoaXMuX2hoID0gKHRoaXMuX2hoICsgaGggKyBnZXRDYXJyeSh0aGlzLl9obCwgaGwpKSB8IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzJyk7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuNC54XG5TdHJlYW0uU3RyZWFtID0gU3RyZWFtO1xuXG5cblxuLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudFxuLy8gcGFydCBvZiB0aGlzIGNsYXNzKSBpcyBvdmVycmlkZGVuIGluIHRoZSBSZWFkYWJsZSBjbGFzcy5cblxuZnVuY3Rpb24gU3RyZWFtKCkge1xuICBFRS5jYWxsKHRoaXMpO1xufVxuXG5TdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIHZhciBzb3VyY2UgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGlmIChkZXN0LndyaXRhYmxlKSB7XG4gICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkge1xuICAgICAgICBzb3VyY2UucGF1c2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpO1xuXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICAvLyBJZiB0aGUgJ2VuZCcgb3B0aW9uIGlzIG5vdCBzdXBwbGllZCwgZGVzdC5lbmQoKSB3aWxsIGJlIGNhbGxlZCB3aGVuXG4gIC8vIHNvdXJjZSBnZXRzIHRoZSAnZW5kJyBvciAnY2xvc2UnIGV2ZW50cy4gIE9ubHkgZGVzdC5lbmQoKSBvbmNlLlxuICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHtcbiAgICBzb3VyY2Uub24oJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2Uub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH1cblxuICB2YXIgZGlkT25FbmQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgc3RyZWFtIGVycm9yIGluIHBpcGUuXG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIHJlbW92ZSBhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG4gIH1cblxuICBzb3VyY2Uub24oJ2VuZCcsIGNsZWFudXApO1xuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpO1xuXG4gIC8vIEFsbG93IGZvciB1bml4LWxpa2UgdXNhZ2U6IEEucGlwZShCKS5waXBlKEMpXG4gIHJldHVybiBkZXN0O1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgaXNCdWZmZXJFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nXG4gIHx8IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICBjYXNlICdoZXgnOiBjYXNlICd1dGY4JzogY2FzZSAndXRmLTgnOiBjYXNlICdhc2NpaSc6IGNhc2UgJ2JpbmFyeSc6IGNhc2UgJ2Jhc2U2NCc6IGNhc2UgJ3VjczInOiBjYXNlICd1Y3MtMic6IGNhc2UgJ3V0ZjE2bGUnOiBjYXNlICd1dGYtMTZsZSc6IGNhc2UgJ3Jhdyc6IHJldHVybiB0cnVlO1xuICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgIH1cbiAgICAgfVxuXG5cbmZ1bmN0aW9uIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIGlmIChlbmNvZGluZyAmJiAhaXNCdWZmZXJFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIH1cbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLiBDRVNVLTggaXMgaGFuZGxlZCBhcyBwYXJ0IG9mIHRoZSBVVEYtOCBlbmNvZGluZy5cbi8vXG4vLyBAVE9ETyBIYW5kbGluZyBhbGwgZW5jb2RpbmdzIGluc2lkZSBhIHNpbmdsZSBvYmplY3QgbWFrZXMgaXQgdmVyeSBkaWZmaWN1bHRcbi8vIHRvIHJlYXNvbiBhYm91dCB0aGlzIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBzcGxpdCB1cCBpbiB0aGUgZnV0dXJlLlxuLy8gQFRPRE8gVGhlcmUgc2hvdWxkIGJlIGEgdXRmOC1zdHJpY3QgZW5jb2RpbmcgdGhhdCByZWplY3RzIGludmFsaWQgVVRGLTggY29kZVxuLy8gcG9pbnRzIGFzIHVzZWQgYnkgQ0VTVS04LlxudmFyIFN0cmluZ0RlY29kZXIgPSBleHBvcnRzLlN0cmluZ0RlY29kZXIgPSBmdW5jdGlvbihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9dLywgJycpO1xuICBhc3NlcnRFbmNvZGluZyhlbmNvZGluZyk7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgLy8gQ0VTVS04IHJlcHJlc2VudHMgZWFjaCBvZiBTdXJyb2dhdGUgUGFpciBieSAzLWJ5dGVzXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICAvLyBVVEYtMTYgcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDItYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDI7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAvLyBCYXNlLTY0IHN0b3JlcyAzIGJ5dGVzIGluIDQgY2hhcnMsIGFuZCBwYWRzIHRoZSByZW1haW5kZXIuXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBwYXNzVGhyb3VnaFdyaXRlO1xuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRW5vdWdoIHNwYWNlIHRvIHN0b3JlIGFsbCBieXRlcyBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIFVURi04IG5lZWRzIDRcbiAgLy8gYnl0ZXMsIGJ1dCBDRVNVLTggbWF5IHJlcXVpcmUgdXAgdG8gNiAoMyBieXRlcyBwZXIgc3Vycm9nYXRlKS5cbiAgdGhpcy5jaGFyQnVmZmVyID0gbmV3IEJ1ZmZlcig2KTtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJSZWNlaXZlZCA9IDA7XG4gIC8vIE51bWJlciBvZiBieXRlcyBleHBlY3RlZCBmb3IgdGhlIGN1cnJlbnQgaW5jb21wbGV0ZSBtdWx0aS1ieXRlIGNoYXJhY3Rlci5cbiAgdGhpcy5jaGFyTGVuZ3RoID0gMDtcbn07XG5cblxuLy8gd3JpdGUgZGVjb2RlcyB0aGUgZ2l2ZW4gYnVmZmVyIGFuZCByZXR1cm5zIGl0IGFzIEpTIHN0cmluZyB0aGF0IGlzXG4vLyBndWFyYW50ZWVkIHRvIG5vdCBjb250YWluIGFueSBwYXJ0aWFsIG11bHRpLWJ5dGUgY2hhcmFjdGVycy4gQW55IHBhcnRpYWxcbi8vIGNoYXJhY3RlciBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgaXMgYnVmZmVyZWQgdXAsIGFuZCB3aWxsIGJlXG4vLyByZXR1cm5lZCB3aGVuIGNhbGxpbmcgd3JpdGUgYWdhaW4gd2l0aCB0aGUgcmVtYWluaW5nIGJ5dGVzLlxuLy9cbi8vIE5vdGU6IENvbnZlcnRpbmcgYSBCdWZmZXIgY29udGFpbmluZyBhbiBvcnBoYW4gc3Vycm9nYXRlIHRvIGEgU3RyaW5nXG4vLyBjdXJyZW50bHkgd29ya3MsIGJ1dCBjb252ZXJ0aW5nIGEgU3RyaW5nIHRvIGEgQnVmZmVyICh2aWEgYG5ldyBCdWZmZXJgLCBvclxuLy8gQnVmZmVyI3dyaXRlKSB3aWxsIHJlcGxhY2UgaW5jb21wbGV0ZSBzdXJyb2dhdGVzIHdpdGggdGhlIHVuaWNvZGVcbi8vIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gU2VlIGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTIxMTczMDA5LyAuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgY2hhclN0ciA9ICcnO1xuICAvLyBpZiBvdXIgbGFzdCB3cml0ZSBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgbXVsdGlieXRlIGNoYXJhY3RlclxuICB3aGlsZSAodGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IHJlbWFpbmluZyBieXRlcyB0aGlzIGJ1ZmZlciBoYXMgdG8gb2ZmZXIgZm9yIHRoaXMgY2hhclxuICAgIHZhciBhdmFpbGFibGUgPSAoYnVmZmVyLmxlbmd0aCA+PSB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCkgP1xuICAgICAgICB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCA6XG4gICAgICAgIGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAvLyBhZGQgdGhlIG5ldyBieXRlcyB0byB0aGUgY2hhciBidWZmZXJcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIHRoaXMuY2hhclJlY2VpdmVkLCAwLCBhdmFpbGFibGUpO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IGF2YWlsYWJsZTtcblxuICAgIGlmICh0aGlzLmNoYXJSZWNlaXZlZCA8IHRoaXMuY2hhckxlbmd0aCkge1xuICAgICAgLy8gc3RpbGwgbm90IGVub3VnaCBjaGFycyBpbiB0aGlzIGJ1ZmZlcj8gd2FpdCBmb3IgbW9yZSAuLi5cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYnl0ZXMgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50IGNoYXJhY3RlciBmcm9tIHRoZSBidWZmZXJcbiAgICBidWZmZXIgPSBidWZmZXIuc2xpY2UoYXZhaWxhYmxlLCBidWZmZXIubGVuZ3RoKTtcblxuICAgIC8vIGdldCB0aGUgY2hhcmFjdGVyIHRoYXQgd2FzIHNwbGl0XG4gICAgY2hhclN0ciA9IHRoaXMuY2hhckJ1ZmZlci5zbGljZSgwLCB0aGlzLmNoYXJMZW5ndGgpLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xuXG4gICAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICAgIHZhciBjaGFyQ29kZSA9IGNoYXJTdHIuY2hhckNvZGVBdChjaGFyU3RyLmxlbmd0aCAtIDEpO1xuICAgIGlmIChjaGFyQ29kZSA+PSAweEQ4MDAgJiYgY2hhckNvZGUgPD0gMHhEQkZGKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggKz0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgICAgY2hhclN0ciA9ICcnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHRoaXMuY2hhclJlY2VpdmVkID0gdGhpcy5jaGFyTGVuZ3RoID0gMDtcblxuICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtb3JlIGJ5dGVzIGluIHRoaXMgYnVmZmVyLCBqdXN0IGVtaXQgb3VyIGNoYXJcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNoYXJTdHI7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIGFuZCBzZXQgY2hhckxlbmd0aCAvIGNoYXJSZWNlaXZlZFxuICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcik7XG5cbiAgdmFyIGVuZCA9IGJ1ZmZlci5sZW5ndGg7XG4gIGlmICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBidWZmZXIgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIGJ5dGVzIHdlIGdvdFxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkLCBlbmQpO1xuICAgIGVuZCAtPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgfVxuXG4gIGNoYXJTdHIgKz0gYnVmZmVyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIGVuZCk7XG5cbiAgdmFyIGVuZCA9IGNoYXJTdHIubGVuZ3RoIC0gMTtcbiAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGVuZCk7XG4gIC8vIENFU1UtODogbGVhZCBzdXJyb2dhdGUgKEQ4MDAtREJGRikgaXMgYWxzbyB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXJcbiAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuc3Vycm9nYXRlU2l6ZTtcbiAgICB0aGlzLmNoYXJMZW5ndGggKz0gc2l6ZTtcbiAgICB0aGlzLmNoYXJSZWNlaXZlZCArPSBzaXplO1xuICAgIHRoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgc2l6ZSwgMCwgc2l6ZSk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCAwLCBzaXplKTtcbiAgICByZXR1cm4gY2hhclN0ci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgfVxuXG4gIC8vIG9yIGp1c3QgZW1pdCB0aGUgY2hhclN0clxuICByZXR1cm4gY2hhclN0cjtcbn07XG5cbi8vIGRldGVjdEluY29tcGxldGVDaGFyIGRldGVybWluZXMgaWYgdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXIgYXRcbi8vIHRoZSBlbmQgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gSWYgc28sIGl0IHNldHMgdGhpcy5jaGFyTGVuZ3RoIHRvIHRoZSBieXRlXG4vLyBsZW5ndGggdGhhdCBjaGFyYWN0ZXIsIGFuZCBzZXRzIHRoaXMuY2hhclJlY2VpdmVkIHRvIHRoZSBudW1iZXIgb2YgYnl0ZXNcbi8vIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjaGFyYWN0ZXIuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgd2UgaGF2ZSB0byBjaGVjayBhdCB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyXG4gIHZhciBpID0gKGJ1ZmZlci5sZW5ndGggPj0gMykgPyAzIDogYnVmZmVyLmxlbmd0aDtcblxuICAvLyBGaWd1cmUgb3V0IGlmIG9uZSBvZiB0aGUgbGFzdCBpIGJ5dGVzIG9mIG91ciBidWZmZXIgYW5ub3VuY2VzIGFuXG4gIC8vIGluY29tcGxldGUgY2hhci5cbiAgZm9yICg7IGkgPiAwOyBpLS0pIHtcbiAgICB2YXIgYyA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gaV07XG5cbiAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOCNEZXNjcmlwdGlvblxuXG4gICAgLy8gMTEwWFhYWFhcbiAgICBpZiAoaSA9PSAxICYmIGMgPj4gNSA9PSAweDA2KSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMFhYWFhcbiAgICBpZiAoaSA8PSAyICYmIGMgPj4gNCA9PSAweDBFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAzO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMTBYWFhcbiAgICBpZiAoaSA8PSAzICYmIGMgPj4gMyA9PSAweDFFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSA0O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gaTtcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gJyc7XG4gIGlmIChidWZmZXIgJiYgYnVmZmVyLmxlbmd0aClcbiAgICByZXMgPSB0aGlzLndyaXRlKGJ1ZmZlcik7XG5cbiAgaWYgKHRoaXMuY2hhclJlY2VpdmVkKSB7XG4gICAgdmFyIGNyID0gdGhpcy5jaGFyUmVjZWl2ZWQ7XG4gICAgdmFyIGJ1ZiA9IHRoaXMuY2hhckJ1ZmZlcjtcbiAgICB2YXIgZW5jID0gdGhpcy5lbmNvZGluZztcbiAgICByZXMgKz0gYnVmLnNsaWNlKDAsIGNyKS50b1N0cmluZyhlbmMpO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIHBhc3NUaHJvdWdoV3JpdGUoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDI7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMiA6IDA7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcikge1xuICB0aGlzLmNoYXJSZWNlaXZlZCA9IGJ1ZmZlci5sZW5ndGggJSAzO1xuICB0aGlzLmNoYXJMZW5ndGggPSB0aGlzLmNoYXJSZWNlaXZlZCA/IDMgOiAwO1xufVxuIiwiXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlO1xuXG4vKipcbiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKiBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudGhyb3dEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50cmFjZURlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIGZ1bmN0aW9uIHRvIGRlcHJlY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBuZXcgXCJkZXByZWNhdGVkXCIgdmVyc2lvbiBvZiBgZm5gXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZSAoZm4sIG1zZykge1xuICBpZiAoY29uZmlnKCdub0RlcHJlY2F0aW9uJykpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnKCd0cmFjZURlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBgbG9jYWxTdG9yYWdlYCBmb3IgYm9vbGVhbiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29uZmlnIChuYW1lKSB7XG4gIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzXG4gIHRyeSB7XG4gICAgaWYgKCFnbG9iYWwubG9jYWxTdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07XG4gIGlmIChudWxsID09IHZhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuIiwidmFyIGluZGV4T2YgPSByZXF1aXJlKCdpbmRleG9mJyk7XG5cbnZhciBPYmplY3Rfa2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICBpZiAoT2JqZWN0LmtleXMpIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgcmVzLnB1c2goa2V5KVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn07XG5cbnZhciBmb3JFYWNoID0gZnVuY3Rpb24gKHhzLCBmbikge1xuICAgIGlmICh4cy5mb3JFYWNoKSByZXR1cm4geHMuZm9yRWFjaChmbilcbiAgICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm4oeHNbaV0sIGksIHhzKTtcbiAgICB9XG59O1xuXG52YXIgZGVmaW5lUHJvcCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdfJywge30pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbmFtZSwge1xuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG59KCkpO1xuXG52YXIgZ2xvYmFscyA9IFsnQXJyYXknLCAnQm9vbGVhbicsICdEYXRlJywgJ0Vycm9yJywgJ0V2YWxFcnJvcicsICdGdW5jdGlvbicsXG4nSW5maW5pdHknLCAnSlNPTicsICdNYXRoJywgJ05hTicsICdOdW1iZXInLCAnT2JqZWN0JywgJ1JhbmdlRXJyb3InLFxuJ1JlZmVyZW5jZUVycm9yJywgJ1JlZ0V4cCcsICdTdHJpbmcnLCAnU3ludGF4RXJyb3InLCAnVHlwZUVycm9yJywgJ1VSSUVycm9yJyxcbidkZWNvZGVVUkknLCAnZGVjb2RlVVJJQ29tcG9uZW50JywgJ2VuY29kZVVSSScsICdlbmNvZGVVUklDb21wb25lbnQnLCAnZXNjYXBlJyxcbidldmFsJywgJ2lzRmluaXRlJywgJ2lzTmFOJywgJ3BhcnNlRmxvYXQnLCAncGFyc2VJbnQnLCAndW5kZWZpbmVkJywgJ3VuZXNjYXBlJ107XG5cbmZ1bmN0aW9uIENvbnRleHQoKSB7fVxuQ29udGV4dC5wcm90b3R5cGUgPSB7fTtcblxudmFyIFNjcmlwdCA9IGV4cG9ydHMuU2NyaXB0ID0gZnVuY3Rpb24gTm9kZVNjcmlwdCAoY29kZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTY3JpcHQpKSByZXR1cm4gbmV3IFNjcmlwdChjb2RlKTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5JbkNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGlmICghKGNvbnRleHQgaW5zdGFuY2VvZiBDb250ZXh0KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwibmVlZHMgYSAnY29udGV4dCcgYXJndW1lbnQuXCIpO1xuICAgIH1cbiAgICBcbiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWYgKCFpZnJhbWUuc3R5bGUpIGlmcmFtZS5zdHlsZSA9IHt9O1xuICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIFxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgICBcbiAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7XG4gICAgdmFyIHdFdmFsID0gd2luLmV2YWwsIHdFeGVjU2NyaXB0ID0gd2luLmV4ZWNTY3JpcHQ7XG5cbiAgICBpZiAoIXdFdmFsICYmIHdFeGVjU2NyaXB0KSB7XG4gICAgICAgIC8vIHdpbi5ldmFsKCkgbWFnaWNhbGx5IGFwcGVhcnMgd2hlbiB0aGlzIGlzIGNhbGxlZCBpbiBJRTpcbiAgICAgICAgd0V4ZWNTY3JpcHQuY2FsbCh3aW4sICdudWxsJyk7XG4gICAgICAgIHdFdmFsID0gd2luLmV2YWw7XG4gICAgfVxuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY29udGV4dCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgfSk7XG4gICAgZm9yRWFjaChnbG9iYWxzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChjb250ZXh0W2tleV0pIHtcbiAgICAgICAgICAgIHdpbltrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdmFyIHdpbktleXMgPSBPYmplY3Rfa2V5cyh3aW4pO1xuXG4gICAgdmFyIHJlcyA9IHdFdmFsLmNhbGwod2luLCB0aGlzLmNvZGUpO1xuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMod2luKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAvLyBBdm9pZCBjb3B5aW5nIGNpcmN1bGFyIG9iamVjdHMgbGlrZSBgdG9wYCBhbmQgYHdpbmRvd2AgYnkgb25seVxuICAgICAgICAvLyB1cGRhdGluZyBleGlzdGluZyBjb250ZXh0IHByb3BlcnRpZXMgb3IgbmV3IHByb3BlcnRpZXMgaW4gdGhlIGB3aW5gXG4gICAgICAgIC8vIHRoYXQgd2FzIG9ubHkgaW50cm9kdWNlZCBhZnRlciB0aGUgZXZhbC5cbiAgICAgICAgaWYgKGtleSBpbiBjb250ZXh0IHx8IGluZGV4T2Yod2luS2V5cywga2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRba2V5XSA9IHdpbltrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGNvbnRleHQpKSB7XG4gICAgICAgICAgICBkZWZpbmVQcm9wKGNvbnRleHQsIGtleSwgd2luW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHJldHVybiByZXM7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluVGhpc0NvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGV2YWwodGhpcy5jb2RlKTsgLy8gbWF5YmUuLi5cbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5OZXdDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgY3R4ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQoY29udGV4dCk7XG4gICAgdmFyIHJlcyA9IHRoaXMucnVuSW5Db250ZXh0KGN0eCk7XG5cbiAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGN0eCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgY29udGV4dFtrZXldID0gY3R4W2tleV07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzO1xufTtcblxuZm9yRWFjaChPYmplY3Rfa2V5cyhTY3JpcHQucHJvdG90eXBlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBleHBvcnRzW25hbWVdID0gU2NyaXB0W25hbWVdID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgdmFyIHMgPSBTY3JpcHQoY29kZSk7XG4gICAgICAgIHJldHVybiBzW25hbWVdLmFwcGx5KHMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgfTtcbn0pO1xuXG5leHBvcnRzLmNyZWF0ZVNjcmlwdCA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuU2NyaXB0KGNvZGUpO1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb250ZXh0ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjb3B5ID0gbmV3IENvbnRleHQoKTtcbiAgICBpZih0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgY29weVtrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYztcbnZhciBDb21iaW5lZEJ1ZmZlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5Db21iaW5lZEJ1ZmZlcjtcbnZhciB1dGY4ID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3V0ZjgnKTtcbnZhciBVbnBhY2tlciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcGFja3N0cmVhbS5qc1wiKS5VbnBhY2tlcjtcblxuZGVzY3JpYmUoJ2J1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGhlbHBmdWwgdG9TdHJpbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG4gICAgYi53cml0ZUludDgoMSk7XG4gICAgYi53cml0ZUludDgoOCk7XG4gICAgYi53cml0ZUludDgoMTUpO1xuICAgIGIud3JpdGVJbnQ4KDEyNyk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHN0ciA9IGIudG9TdHJpbmcoKTtcbiAgICB2YXIgaGV4ID0gYi50b0hleCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggc3RyICkudG9Db250YWluKFwiKCBwb3NpdGlvbj00IClcXG4gIDAxIDA4IDBmIDdmXCIpO1xuICAgIGV4cGVjdChoZXgpLnRvQmUoXCIwMSAwOCAwZiA3ZiBcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgOC1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRVSW50OCggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDgoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDE2LWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTU7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRVSW50MTYoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldFVJbnQxNigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMzItYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQzMiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDMyKDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSA4LWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRJbnQ4KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQ4KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAxNi1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDE2KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQxNigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMzItYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzA7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRJbnQzMiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0SW50MzIoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGVuY29kZSBsaXN0IGNvcnJlY3RseScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg1KTtcbiAgICBiLndyaXRlVUludDgoMHg5MCB8IDB4Mik7XG4gICAgYiA9IHdyaXRlU3RyaW5nKGIsICdhJyk7XG4gICAgYiA9IHdyaXRlU3RyaW5nKGIsICdiJyk7XG4gICAgLy8gV2hlblxuICAgIHZhciBoZXggPSBiLnRvSGV4KCk7XG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChoZXgpLnRvQmUoXCI5MiA4MSA2MSA4MSA2MiBcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGxpc3QgY29ycmVjdGx5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDUpO1xuICAgIGIud3JpdGVVSW50OCgweDkyKTtcbiAgICBiLndyaXRlVUludDgoMHg4MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4NjEpO1xuICAgIGIud3JpdGVVSW50OCgweDgxKTtcbiAgICBiLndyaXRlVUludDgoMHg2Mik7XG4gICAgYi5yZXNldCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkYXRhID0gbmV3IFVucGFja2VyKCkudW5wYWNrKCBiICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRhdGFbMF0pLnRvQmUoJ2EnKTtcbiAgICBleHBlY3QoZGF0YVsxXSkudG9CZSgnYicpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ29tYmluZWRCdWZmZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCByZWFkIGludDgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiMSA9IGFsbG9jKDEpO1xuICAgIHZhciBiMiA9IGFsbG9jKDEpO1xuICAgIGIxLnB1dEludDgoMCwgMSk7XG4gICAgYjIucHV0SW50OCgwLCAyKTtcblxuICAgIHZhciBiID0gbmV3IENvbWJpbmVkQnVmZmVyKFtiMSxiMl0pO1xuICAgIFxuICAgIC8vIFdoZW5cbiAgICB2YXIgZmlyc3QgPSBiLnJlYWRJbnQ4KCk7XG4gICAgdmFyIHNlY29uZCA9IGIucmVhZEludDgoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZmlyc3QpLnRvQmUoMSk7XG4gICAgZXhwZWN0KHNlY29uZCkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGRpdmlkZWQgZmxvYXQ2NCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGlubmVyID0gYWxsb2MoOCk7XG4gICAgaW5uZXIucHV0RmxvYXQ2NCgwLCAwLjEpO1xuXG4gICAgdmFyIGIgPSBuZXcgQ29tYmluZWRCdWZmZXIoW2lubmVyLnJlYWRTbGljZSg0KSxpbm5lci5yZWFkU2xpY2UoNCldKTtcbiAgICBcbiAgICAvLyBXaGVuXG4gICAgdmFyIHJlYWQgPSBiLnJlYWRGbG9hdDY0KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KHJlYWQpLnRvQmUoMC4xKTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gd3JpdGVTdHJpbmcoYiwgc3RyKSB7XG4gIHZhciBieXRlcyA9IHV0ZjguZW5jb2RlKHN0cik7XG4gIHZhciBzaXplID0gYnl0ZXMubGVuZ3RoO1xuICBiLndyaXRlVUludDgoMHg4MCB8IHNpemUpO1xuICBiLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICByZXR1cm4gYjtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgQ2h1bmtlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaHVua2luZycpLkNodW5rZXI7XG52YXIgRGVjaHVua2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NodW5raW5nJykuRGVjaHVua2VyO1xudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jO1xudmFyIENvbWJpbmVkQnVmZmVyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLkNvbWJpbmVkQnVmZmVyO1xudmFyIER1bW15Q2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcycpLmNoYW5uZWw7XG5cbmRlc2NyaWJlKCdDaHVua2VyJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgY2h1bmsgc2ltcGxlIGRhdGEnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MzIoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDMyKDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGNoLnRvSGV4KCkgKS50b0JlKFwiMDAgMDggMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDIgXCIpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBjaHVuayBibG9icyBsYXJnZXIgdGhhbiB0aGUgb3V0cHV0IGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gsIDQpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVCeXRlcyhieXRlcyggMSwyLDMsNCw1LDYgKSk7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwMiAwMSAwMiAwMCAwMiAwMyAwNCAwMCAwMiAwNSAwNiBcIik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGluY2x1ZGUgbWVzc2FnZSBib3VuZGFyaWVzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUludDMyKDEpO1xuICAgIGNodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgY2h1bmtlci53cml0ZUludDMyKDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGNoLnRvSGV4KCkgKS50b0JlKFwiMDAgMDQgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDQgMDAgMDAgMDAgMDIgXCIpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnRGVjaHVua2VyJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgdW5jaHVuayBhIHNpbXBsZSBtZXNzYWdlJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbWVzc2FnZXMgPSBbXTtcbiAgICB2YXIgZGVjaHVua2VyID0gbmV3IERlY2h1bmtlcigpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoZGVjaHVua2VyKTtcbiAgICBkZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYnVmZmVyKSB7IG1lc3NhZ2VzLnB1c2goYnVmZmVyKTsgfTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MTYoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDIpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMyk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBtZXNzYWdlcy5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBtZXNzYWdlc1swXS50b0hleCgpICkudG9CZSggXCIwMCAwMSAwMCAwMiAwMCAwMyBcIiApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBtZXNzYWdlIHNwbGl0IGF0IGFueSBwb2ludCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gQW5kIGdpdmVuIHRoZSBmb2xsb3dpbmcgbWVzc2FnZVxuICAgIGNodW5rZXIud3JpdGVJbnQ4KDEpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigyKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMyk7XG4gICAgY2h1bmtlci53cml0ZVVJbnQ4KDQpO1xuICAgIGNodW5rZXIud3JpdGVVSW50MzIoNSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICB2YXIgY2h1bmtlZCA9IGNoLnRvQnVmZmVyKCk7XG5cbiAgICAvLyBXaGVuIEkgdHJ5IHNwbGl0dGluZyB0aGlzIGNodW5rZWQgZGF0YSBhdCBldmVyeSBwb3NzaWJsZSBwb3NpdGlvblxuICAgIC8vIGludG8gdHdvIHNlcGFyYXRlIGJ1ZmZlcnMsIGFuZCBzZW5kIHRob3NlIHRvIHRoZSBkZWNodW5rZXJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNodW5rZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzbGljZTEgPSBjaHVua2VkLmdldFNsaWNlKCAwLCBpICk7XG4gICAgICB2YXIgc2xpY2UyID0gY2h1bmtlZC5nZXRTbGljZSggaSwgY2h1bmtlZC5sZW5ndGggLSBpICk7XG5cbiAgICAgIC8vIERlY2h1bmsgdGhlIHNsaWNlc1xuICAgICAgdmFyIG1lc3NhZ2VzID0gW107XG4gICAgICB2YXIgZGVjaHVua2VyID0gbmV3IERlY2h1bmtlcigpO1xuICAgICAgZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGJ1ZmZlcikgeyBtZXNzYWdlcy5wdXNoKGJ1ZmZlcik7IH07XG4gICAgICBkZWNodW5rZXIud3JpdGUoIHNsaWNlMSApO1xuICAgICAgZGVjaHVua2VyLndyaXRlKCBzbGljZTIgKTtcblxuICAgICAgLy8gVGhlbiwgdGhlIG91dHB1dCBzaG91bGQgYmUgY29ycmVjdFxuICAgICAgZXhwZWN0KCBtZXNzYWdlcy5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgICBleHBlY3QoIG1lc3NhZ2VzWzBdLnRvSGV4KCkgKS50b0JlKCBcIjAxIDAwIDAyIDAwIDAwIDAwIDAzIDA0IDAwIDAwIDAwIDA1IFwiICk7XG4gICAgfTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gYnl0ZXMoKSB7XG4gIHZhciBiID0gYWxsb2MoIGFyZ3VtZW50cy5sZW5ndGggKTtcbiAgZm9yKCB2YXIgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApIHtcbiAgICBiLndyaXRlVUludDgoIGFyZ3VtZW50c1tpXSApO1xuICB9XG4gIGIucG9zaXRpb24gPSAwO1xuICByZXR1cm4gYjtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBEdW1teUNoYW5uZWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtZHVtbXkuanMnKTtcbnZhciBjb25uZWN0ID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanNcIikuY29ubmVjdDtcblxuZGVzY3JpYmUoJ2Nvbm5lY3RvcicsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgcmVhZC93cml0ZSBiYXNpYyBtZXNzYWdlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3RcIilcblxuICAgIC8vIFdoZW5cbiAgICBjb25uLmluaXRpYWxpemUoIFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sICB7XG4gICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24oIG1zZyApIHtcbiAgICAgICAgZXhwZWN0KCBtc2cgKS5ub3QudG9CZU51bGwoKTtcbiAgICAgICAgY29ubi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG4gIGl0KCdzaG91bGQgcmV0cmlldmUgc3RyZWFtJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiKVxuXG4gICAgLy8gV2hlblxuICAgIHZhciByZWNvcmRzID0gW107XG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9ICk7XG4gICAgY29ubi5ydW4oIFwiUkVUVVJOIDEuMFwiLCB7fSApO1xuICAgIGNvbm4ucHVsbEFsbCgge1xuICAgICAgb25OZXh0OiBmdW5jdGlvbiggcmVjb3JkICkge1xuICAgICAgICByZWNvcmRzLnB1c2goIHJlY29yZCApO1xuICAgICAgfSxcbiAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiggdGFpbCApIHtcbiAgICAgICAgZXhwZWN0KCByZWNvcmRzWzBdWzBdICkudG9CZSggMSApO1xuICAgICAgICBjb25uLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB1c2UgRHVtbXlDaGFubmVsIHRvIHJlYWQgd2hhdCBnZXRzIHdyaXR0ZW4nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgb2JzZXJ2ZXIgPSBEdW1teUNoYW5uZWwub2JzZXJ2ZXI7XG4gICAgdmFyIGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiLCB7Y2hhbm5lbDpEdW1teUNoYW5uZWwuY2hhbm5lbH0pO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByZWNvcmRzID0gW107XG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9ICk7XG4gICAgY29ubi5ydW4oIFwiUkVUVVJOIDFcIiwge30gKTtcbiAgICBjb25uLnN5bmMoKTtcbiAgICBleHBlY3QoIG9ic2VydmVyLmluc3RhbmNlLnRvSGV4KCkgKS50b0JlKCAnNjAgNjAgYjAgMTcgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNDEgYjIgMDEgOGUgNmQgNzkgNjQgNzIgNjkgNzYgNjUgNzIgMmYgMzAgMmUgMzAgMmUgMzAgYTMgODYgNzMgNjMgNjggNjUgNmQgNjUgODUgNjIgNjEgNzMgNjkgNjMgODkgNzAgNzIgNjkgNmUgNjMgNjkgNzAgNjEgNmMgODUgNmUgNjUgNmYgMzQgNmEgOGIgNjMgNzIgNjUgNjQgNjUgNmUgNzQgNjkgNjEgNmMgNzMgODUgNmUgNjUgNmYgMzQgNmEgMDAgMDAgMDAgMGMgYjIgMTAgODggNTIgNDUgNTQgNTUgNTIgNGUgMjAgMzEgYTAgMDAgMDAgJyApO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm92aWRlIGVycm9yIG1lc3NhZ2Ugd2hlbiBjb25uZWN0aW5nIHRvIGh0dHAtcG9ydCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3Q6NzQ3NFwiLCB7ZW5jcnlwdGVkOmZhbHNlfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgY29ubi5pbml0aWFsaXplKCBcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9LCAge1xuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uKCBtc2cgKSB7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIC8vb25seSBub2RlIGdldHMgdGhlIHByZXR0eSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGlmKCByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcycpLmF2YWlsYWJsZSApIHtcbiAgICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoXCJTZXJ2ZXIgcmVzcG9uZGVkIEhUVFAuIE1ha2Ugc3VyZSB5b3UgYXJlIG5vdCB0cnlpbmcgdG8gY29ubmVjdCB0byB0aGUgaHR0cCBlbmRwb2ludCBcIiArXG4gICAgICAgICAgICBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG5cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2MsXG4gICAgcGFja3N0cmVhbSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcGFja3N0cmVhbS5qc1wiKSxcbiAgICBpbnRlZ2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlZ2VyLmpzXCIpLFxuICAgIFBhY2tlciA9IHBhY2tzdHJlYW0uUGFja2VyLFxuICAgIFVucGFja2VyID0gcGFja3N0cmVhbS5VbnBhY2tlcixcbiAgICBTdHJ1Y3R1cmUgPSBwYWNrc3RyZWFtLlN0cnVjdHVyZSxcbiAgICBJbnRlZ2VyID0gaW50ZWdlci5JbnRlZ2VyO1xuXG5kZXNjcmliZSgncGFja3N0cmVhbScsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHBhY2sgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiwgaTtcbiAgICAvLyB0ZXN0IHNtYWxsIG51bWJlcnNcbiAgICBmb3IobiA9IC05OTk7IG4gPD0gOTk5OyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIobik7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICAgIC8vIHBvc2l0aXZlIG51bWJlcnNcbiAgICBmb3IobiA9IDE2OyBuIDw9IDE2IDsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KDIsIG4pKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgLy8gbmVnYXRpdmUgbnVtYmVyc1xuICAgIGZvcihuID0gMDsgbiA8PSA2MyA7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcigtTWF0aC5wb3coMiwgbikpO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJpbmdzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIlwiICkgKS50b0JlKCBcIlwiICk7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcImFiY2RlZmcxMjM1NjdcIiApICkudG9CZSggXCJhYmNkZWZnMTIzNTY3XCIgKTtcbiAgICB2YXIgc3RyID0gQXJyYXkoNjU1MzYgKyAxKS5qb2luKCdhJyk7IC8vIDIgXiAxNiArIDFcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soc3RyLCBzdHIubGVuZ3RoICsgOCkpLnRvQmUoc3RyKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBzdHJ1Y3R1cmVzJywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBuZXcgU3RydWN0dXJlKDEsIFtcIkhlbGxvLCB3b3JsZCEhIVwiXSApICkuZmllbGRzWzBdICkgIFxuICAgICAudG9CZSggXCJIZWxsbywgd29ybGQhISFcIiApO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIGxpc3RzJywgZnVuY3Rpb24oKSB7XG4gICB2YXIgbGlzdCA9IFsnYScsICdiJ107XG4gICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCApO1xuICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMF0gKS50b0JlKCBsaXN0WzBdICk7XG4gICBleHBlY3QoIHJvdW5kdHJpcHBlZFsxXSApLnRvQmUoIGxpc3RbMV0gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYWNrIGxvbmcgbGlzdHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGlzdExlbmd0aCA9IDI1NjtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIGxpc3QucHVzaChudWxsKVxuICAgIH1cbiAgICB2YXIgcm91bmR0cmlwcGVkID0gcGFja0FuZFVucGFjayggbGlzdCwgMTQwMCApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzBdICkudG9CZSggbGlzdFswXSApO1xuICAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzFdICkudG9CZSggbGlzdFsxXSApO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBwYWNrQW5kVW5wYWNrKCB2YWwsIGJ1ZmZlclNpemUgKSB7XG4gIGJ1ZmZlclNpemUgPSBidWZmZXJTaXplIHx8IDEyODtcbiAgdmFyIGJ1ZmZlciA9IGFsbG9jKGJ1ZmZlclNpemUpO1xuICBuZXcgUGFja2VyKCBidWZmZXIgKS5wYWNrKCB2YWwgKTtcbiAgYnVmZmVyLnJlc2V0KCk7XG4gIHJldHVybiBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGJ1ZmZlciApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBQb29sID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3Bvb2wnKS5Qb29sO1xuXG5kZXNjcmliZSgnUG9vbCcsIGZ1bmN0aW9uKCkge1xuICBpdCgnYWxsb2NhdGVzIGlmIHBvb2wgaXMgZW1wdHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG5cbiAgaXQoJ3Bvb2xzIGlmIHJlc291cmNlcyBhcmUgcmV0dXJuZWQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ2ZyZWVzIGlmIHBvb2wgcmVhY2hlcyBtYXggc2l6ZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IHRyYWNrcyBkZXN0cm95ZWQgcmVzb3VyY2VzXG4gICAgdmFyIGNvdW50ZXIgPSAwLFxuICAgICAgICBkZXN0cm95ZWQgPSBbXTtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKFxuICAgICAgZnVuY3Rpb24gKHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZShjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiB0cnVlOyB9LFxuICAgICAgMiAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG4gICAgcjIuY2xvc2UoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlc3Ryb3llZC5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMF0uaWQgKS50b0JlKCByMi5pZCApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgdmFsaWRhdGUgcmV0dXJucyBmYWxzZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAocmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgMTAwMCAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoKTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZXN0cm95ZWQubGVuZ3RoICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggZGVzdHJveWVkWzBdLmlkICkudG9CZSggcjAuaWQgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFsxXS5pZCApLnRvQmUoIHIxLmlkICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIFJlc291cmNlKCBpZCwgcmVsZWFzZSApIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLmlkID0gaWQ7XG4gIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsgcmVsZWFzZShzZWxmKTsgfTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJyk7XG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xudmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xudmFyIGhhc0ZlYXR1cmUgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL2ZlYXR1cmVzXCIpO1xuXG5kZXNjcmliZSgndHJ1c3Qtc2lnbmVkLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgdW5rbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKU1xuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1widGVzdC9yZXNvdXJjZXMvcmFuZG9tLmNlcnRpZmljYXRlXCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoIGVyci5tZXNzYWdlICkudG9Db250YWluKCBcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFwiICk7XG4gICAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQga25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtcImJ1aWxkL25lbzRqL2NlcnRpZmljYXRlcy9uZW80ai5jZXJ0XCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZG9uZSApO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5cbmRlc2NyaWJlKCd0cnVzdC1vbi1maXJzdC11c2UnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IHByZXZpb3VzbHkgdW4tc2VlbiBob3N0cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgIC8vIFRoZW4gd2UgZ2V0IHRvIGhlcmUuXG4gICAgICAvLyBBbmQgdGhlbiB0aGUga25vd25faG9zdHMgZmlsZSBzaG91bGQgaGF2ZSBjb3JyZWN0IGNvbnRlbnRzXG4gICAgICBleHBlY3QoIGZzLnJlYWRGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJ3V0ZjgnKSApLnRvQ29udGFpbiggXCJsb2NhbGhvc3Q6NzY4N1wiICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBpZiBkYXRhYmFzZSBjZXJ0IGRvZXMgbm90IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb21fa25vd25faG9zdHNcIjtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0NvbnRhaW4oXCJEYXRhYmFzZSBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIGhhcyBjaGFuZ2VkLCBcIiArXG4gICAgICAgIFwiYW5kIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIGxvY2FsaG9zdDo3Njg3XCIpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgdXRmOCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC91dGY4Jyk7XG52YXIgYnVmZmVycyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKTtcblxuZGVzY3JpYmUoJ3V0ZjgnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGEgbmljZSBjbGVhbiBidWZmZXIgcG9zaXRpb24gYWZ0ZXIgc2VyaWFsaXppbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGJ1ZmZlci5wb3NpdGlvbiApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHBvc2l0aW9uIG9mIHNpbmdsZSBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCAtIDEpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlY29kZWQgKS50b0JlKCBcImVsbG8sIHdvcmxkIVwiICk7XG4gICAgZXhwZWN0KGJ1ZmZlci5wb3NpdGlvbikudG9FcXVhbCgxMylcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIHN1YnN0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoXCJoZWxsbywgd29ybGQhXCIpO1xuICAgIGJ1ZmZlci5yZWFkSW50OCgpO1xuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoYnVmZmVyLCAzKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoNClcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIHV0ZjgnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiw6XDpMO2MTIzXCIgKSApLnRvQmUoIFwiw6XDpMO2MTIzXCIgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBhIGNvbXBsZXRlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYXPDpWZxd2VyXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUobXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgdXRmOCBmcm9tIHBhcnQgb2YgYSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcVwiO1xuICAgIHZhciBleHBlY3RNc2cgPSBtc2cuc3Vic3RyaW5nKDAsIG1zZy5sZW5ndGgtMSk7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgdW5yZWxhdGVkRGF0YSA9IGJ1ZmZlcnMuYWxsb2MoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCB1bnJlbGF0ZWREYXRhXSApO1xuXG4gICAgLy8gV2hlbiBcbiAgICAvLyBXZSByZWFkIGFsbCBidXQgdGhlIHVucmVsYXRlZERhdGEgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBidWZiXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgY29tYmluZWQubGVuZ3RoIC0gMSAtIHVucmVsYXRlZERhdGEubGVuZ3RoICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoZXhwZWN0TXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBwb3NpdGlvbiBpbiB0aGUgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDIpO1xuXG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoXCJjZGVmZ2hcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDgpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCBidWZmZXIgYWNyb3NzIGJ1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFiY2RlZmdoaWprbFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCA0KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGVjb2RlZCkudG9CZShcImZnaGlcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDkpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCB3aXRoaW4gYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgMik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ1wiKTtcbiAgICBleHBlY3QoY29tYmluZWQucG9zaXRpb24pLnRvQmUoNylcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggc3RyICkge1xuICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoIHN0ciApO1xuICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdkcml2ZXInLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXNzaW9ucycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHNlc3Npb24gKS5ub3QudG9CZU51bGwoKTtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgY29ubmVjdGlvbiBlcnJvcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdGVcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAvL3RoZSBlcnJvciBtZXNzYWdlIGlzIGRpZmZlcmVudCB3aGV0aGVyIGluIGJyb3dzZXIgb3Igbm9kZVxuICAgICAgZXhwZWN0KGVyci5tZXNzYWdlKS5ub3QudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlY29yZCA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVjb3JkXCIpLlJlY29yZDtcbnZhciBOZW80akVycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9lcnJvclwiKS5OZW80akVycm9yO1xuXG5cbmRlc2NyaWJlKCdSZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KFwibmFtZVwiKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBrZXknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBmdW5jdGlvbigpIHsgcmVjb3JkLmdldChcImFnZVwiKSB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKFxuICAgICAgXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ2FnZScsIGF2YWlsYWJsZSBrZXkgYXJlOiBbbmFtZV0uXCIpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QocmVjb3JkLmdldCgwKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3Igb24gbm8gc3VjaCBpbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyByZWNvcmQuZ2V0KDEpIH0pLnRvVGhyb3cobmV3IE5lbzRqRXJyb3IoXG4gICAgICBcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICcxJy4gUmVtZW1iZXIgdGhhdCBpbmRleGVzIHN0YXJ0IGF0IGAwYCwgXCIgK1xuICAgICAgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBsZW5ndGgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW10sIFtdKS5sZW5ndGggKS50b0JlKDApO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdKS5sZW5ndGggKS50b0JlKDEpO1xuICAgIGV4cGVjdCggbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiXSwgW1wiQm9iXCIsIDQ1XSkubGVuZ3RoICkudG9CZSgyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBmb3JFYWNoIHRocm91Z2ggdGhlIHJlY29yZCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIl0sIFtcIkJvYlwiLCA0NV0gKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAvLyBXaGVuXG4gICAgcmVjb3JkLmZvckVhY2goIGZ1bmN0aW9uKCB2YWx1ZSwga2V5LCByZWNvcmQgKSB7XG4gICAgICByZXN1bHQucHVzaCggW3ZhbHVlLCBrZXksIHJlY29yZF0gKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtbXCJCb2JcIiwgXCJuYW1lXCIsIHJlY29yZF0sIFs0NSwgXCJhZ2VcIiwgcmVjb3JkXV0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG5cbmRlc2NyaWJlKCdyZXN1bHQgc3RyZWFtJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlciwgc2Vzc2lvbjtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2hhaW5pbmcgYHRoZW5gLCByZXR1cm5pbmcgYSBuZXcgdGhpbmcgaW4gZWFjaCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCBcIlJFVFVSTiAxXCIpXG4gICAgICAudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBcImZpcnN0XCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcImZpcnN0XCIgKTtcbiAgICAgICAgcmV0dXJuIFwic2Vjb25kXCI7XG4gICAgICB9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICBleHBlY3QoYXJnKS50b0JlKCBcInNlY29uZFwiICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2F0Y2hpbmcgZXhjZXB0aW9uIHRocm93biBpbiBgdGhlbmAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1biggXCJSRVRVUk4gMVwiKVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBd2F5IHdpdGggeW91IVwiKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoIFwiQXdheSB3aXRoIHlvdSFcIiApO1xuICAgICAgICBkb25lKClcbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBcIk5lbyBUZWNobm9sb2d5LFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG52YXIgU3RhdGVtZW50VHlwZSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVzdWx0LXN1bW1hcnlcIikuc3RhdGVtZW50VHlwZTtcbnZhciBTZXNzaW9uID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9zZXNzaW9uXCIpO1xuXG5kZXNjcmliZSgnc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGJlIGlkZW1wb3RlbnQgJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKG51bGwsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvdW50ZXIrKztcbiAgICB9KTtcbiAgICBfc2Vzc2lvbi5jbG9zZSgpO1xuICAgIGV4cGVjdChjb3VudGVyKS50b0JlKDEpO1xuICAgIF9zZXNzaW9uLmNsb3NlKCk7XG4gICAgZXhwZWN0KGNvdW50ZXIpLnRvQmUoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGJhc2ljIHJ1bi9zdWJzY3JpYmUgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICB2YXIgcmVjb3JkcyA9IFtdO1xuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGtlZXAgY29udGV4dCBpbiBzdWJzY3JpYmUgbWV0aG9kcyAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZnVuY3Rpb24gbXlPYnNlcnZlcigpIHtcbiAgICAgIHRoaXMubG9jYWwgPSAnaGVsbG8nO1xuICAgICAgdmFyIHByaXZhdGVMb2NhbCA9ICdoZWxsbyc7XG4gICAgICB0aGlzLm9uTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpLnN1YnNjcmliZShuZXcgbXlPYnNlcnZlcigpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjYWxsIG9ic2VydmVycyBvbkVycm9yIG9uIGVycm9yICcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuc3Vic2NyaWJlKHtcbiAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBleHBlY3QoZXJyb3IuZmllbGRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSB7dGV4dDogXCJSRVRVUk4gMSA9IHtwYXJhbX0gQVMgYVwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBydW4vdGhlbi90aGVuL3RoZW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpXG4gICAgICAudGhlbihcbiAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgKS50aGVuKFxuICAgICAgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUoMSk7XG4gICAgICB9XG4gICAgKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBiYXNpYyBydW4vY2F0Y2ggJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEgQVNcIikuY2F0Y2goXG4gICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICApXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHN1bW1hcml6ZSBtZXRob2QgZm9yIGJhc2ljIG1ldGFkYXRhICcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgc3RhdGVtZW50ID0gXCJDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG5cIjtcbiAgICB2YXIgcGFyYW1zID0ge3Byb3A6IFwic3RyaW5nXCJ9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnQudGV4dCkudG9CZShzdGF0ZW1lbnQpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0JlKHBhcmFtcyk7XG4gICAgICAgIGV4cGVjdChzdW0udXBkYXRlU3RhdGlzdGljcy5jb250YWluc1VwZGF0ZXMoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS51cGRhdGVTdGF0aXN0aWNzLm5vZGVzQ3JlYXRlZCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudFR5cGUpLnRvQmUoU3RhdGVtZW50VHlwZS5SRUFEX1dSSVRFKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGVtcHR5IHBhcmFtZXRlciBtYXAgb24gY2FsbCB3aXRoIG5vIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiQ1JFQVRFIChuOkxhYmVsIHtwcm9wOidzdHJpbmcnfSkgUkVUVVJOIG5cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudClcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0VxdWFsKHt9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHBsYW4gJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gQ1JFQVRFIChuOkxhYmVsIHtwcm9wOntwcm9wfX0pIFJFVFVSTiBuXCI7XG4gICAgdmFyIHBhcmFtcyA9IHtwcm9wOiBcInN0cmluZ1wifTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnBsYW4uaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnQ3JlYXRlTm9kZScpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcHJvZmlsZSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHN0YXRlbWVudCA9IFwiUFJPRklMRSBNQVRDSCAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gblwiO1xuICAgIHZhciBwYXJhbXMgPSB7cHJvcDogXCJzdHJpbmdcIn07XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uXG4gICAgICAucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUGxhbigpKS50b0JlKHRydWUpOyAvL1doZW4gdGhlcmUncyBhIHByb2ZpbGUsIHRoZXJlJ3MgYSBwbGFuXG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUub3BlcmF0b3JUeXBlKS50b0JlKCdQcm9kdWNlUmVzdWx0cycpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuYXJndW1lbnRzLnJ1bnRpbWUpLnRvQmUoJ0lOVEVSUFJFVEVEJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5pZGVudGlmaWVyc1swXSkudG9CZSgnbicpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuY2hpbGRyZW5bMF0ub3BlcmF0b3JUeXBlKS50b0JlKCdGaWx0ZXInKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLnJvd3MpLnRvQmUoMCk7XG4gICAgICAgIC8vZXhwZWN0KHN1bS5wcm9maWxlLmRiSGl0cykudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgY3lwaGVyIG5vdGlmaWNhdGlvbnMgJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBzdGF0ZW1lbnQgPSBcIkVYUExBSU4gTUFUQ0ggKG4pLCAobSkgUkVUVVJOIG4sIG1cIjtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB2YXIgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLmNvZGUpLnRvQmUoXCJOZW8uQ2xpZW50Tm90aWZpY2F0aW9uLlN0YXRlbWVudC5DYXJ0ZXNpYW5Qcm9kdWN0V2FybmluZ1wiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnRpdGxlKS50b0JlKFwiVGhpcyBxdWVyeSBidWlsZHMgYSBjYXJ0ZXNpYW4gcHJvZHVjdCBiZXR3ZWVuIGRpc2Nvbm5lY3RlZCBwYXR0ZXJucy5cIik7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9uc1swXS5wb3NpdGlvbi5jb2x1bW4pLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHVzaW5nIHRoZSBzZXNzaW9uIHdoZW4gaGF2aW5nIGFuIG9wZW4gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy9UaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQmUoXCJTdGF0ZW1lbnRzIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgb24gYSBcIlxuICAgICAgICAgICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCJcbiAgICAgICAgICArIFwidHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uXCIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBvcGVuaW5nIG11bHRpcGxlIHRyYW5zYWN0aW9ucycsIGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3Qoc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGxvdHMgb2YgZGF0YScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgc2Vzc2lvbi5ydW4oXCJVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgeCBDUkVBVEUgKDpBVFRSQUNUSU9OIHtwcm9wOiAncHJvcCd9KVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBSRVRVUk4gblwiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlID0gcmVjb3JkLmdldCgnbicpO1xuICAgICAgICAgICAgICAgIGV4cGVjdChub2RlLmxhYmVsc1swXSkudG9FcXVhbChcIkFUVFJBQ1RJT05cIik7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUucHJvcGVydGllcy5wcm9wKS50b0VxdWFsKFwicHJvcFwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcblxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIGxvbmcgcnVubmluZyBxdWVyeSAnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vZ2l2ZW4gYSBsb25nIHJ1bm5pbmcgcXVlcnlcbiAgICBzZXNzaW9uLnJ1bihcInVud2luZCByYW5nZSgxLDEwMDAwMDApIGFzIHggY3JlYXRlIChuIHtwcm9wOnh9KSBkZWxldGUgblwiKTtcblxuICAgIC8vd2FpdCBzb21lIHRpbWUgdGhhbiBjbG9zZSB0aGUgc2Vzc2lvbiBhbmQgcnVuXG4gICAgLy9hIG5ldyBxdWVyeVxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgdmFyIGFub3RoZXJTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBhbm90aGVyU2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIGFzIGFcIilcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaWdub3JlKSB7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9LCAxNTAwKTtcbiAgfSk7XG5cbn0pO1xuXG5cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTYgXCJOZW8gVGVjaG5vbG9neSxcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgndHJhbnNhY3Rpb24nLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAobikgREVUQUNIIERFTEVURSBuXCIpLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpIHtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb21taXQgc2ltcGxlIGNhc2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpO1xuICAgIHR4LmNvbW1pdCgpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpXG4gICAgICAgICAgICAgIC50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMSk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgaW50ZXJhY3RpdmUgc2Vzc2lvbicsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlJFVFVSTiAnZm9vJyBBUyByZXNcIikudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICB0eC5ydW4oXCJDUkVBVEUgKHtuYW1lOiB7cGFyYW19fSlcIiwge3BhcmFtOiByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3JlcycpfSk7XG4gICAgICB0eC5jb21taXQoKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAoYSB7bmFtZTonZm9vJ30pIFJFVFVSTiBjb3VudChhKVwiKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudChhKScpLnRvSW50KCkpLnRvQmUoMSk7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBzdWJzY3JpYmUnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmZpZWxkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBjYXRjaCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG9uRXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5maWVsZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmVzIG9uIGNvbW1pdCcsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKTtcblxuICAgIHR4LmNvbW1pdCgpXG4gICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGV4cGVjdChlcnJvci5maWVsZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSBmYWlsZWQgcXVlcnknLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgd2hlbiBjb21taXR0aW5nIHdoZW4gYW5vdGhlciBzdGF0ZW1lbnQgZmFpbHMnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB0eC5jb21taXQoKVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSByb2xsYmFja3MnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKTtcbiAgICB0eC5yb2xsYmFjaygpXG4gICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpXG4gICAgICAgICAgICAgIC50b0JlKDApO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSlcbiAgICAgICAgICAgICAgLnRvQmUoMCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSByb2xsZWQgYmFjayBxdWVyeScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJvbGxiYWNrKClcblxuICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgb24gYSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpO1xuICAgIHR4LnJvbGxiYWNrKCk7XG5cbiAgICB0eC5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgd2hlbiBhIHByZXZpb3VzIHN0YXRlbWVudCBmYWlsZWQnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJUSElTIElTIE5PVCBDWVBIRVJcIilcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHR4LnJ1bihcIlJFVFVSTiA0MlwiKVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucm9sbGJhY2soKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIHJvbGwgYmFjayBhIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9uJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIik7XG4gICAgdHgucm9sbGJhY2soKTtcblxuICAgIHR4LnJvbGxiYWNrKClcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFwiTmVvIFRlY2hub2xvZ3ksXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcblxuZGVzY3JpYmUoJ2Zsb2F0aW5nIHBvaW50IHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMS4wICcsIHRlc3RWYWwoIDEgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMC4wICcsIHRlc3RWYWwoIDAuMCApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDMuNDAyODIzNWUrMzggKSApOyAvLyBNYXggMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4ICkgKTsgLy8gTWF4IDY0LWJpdFxuICBpdCgnc2hvdWxkIHN1cHBvcnQgcHJldHR5IHNtYWxsIGZsb2F0ICcsIHRlc3RWYWwoIDEuNGUtNDUgKSApOyAvLyBNaW4gMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggNC45ZS0zMjQgKSApOyAvLyBNaW4gNjQtYml0XG59KTtcblxuZGVzY3JpYmUoJ2ludGVnZXIgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIDEgJywgdGVzdFZhbCggbmVvNGouaW50KDEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMCAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMCkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAtMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoLTEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgbGFyZ2VyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDdmZmZmZmZmZmZmZmZmZmZcIikgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBzbWFsbGVyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIikgKSApO1xufSk7XG5cbmRlc2NyaWJlKCdib29sZWFuIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgdHJ1ZSAnLCAgdGVzdFZhbCggdHJ1ZSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmYWxzZSAnLCB0ZXN0VmFsKCBmYWxzZSApICk7XG59KTtcblxuZGVzY3JpYmUoJ3N0cmluZyB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IHN0cmluZyAnLCAgIHRlc3RWYWwoIFwiXCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc2ltcGxlIHN0cmluZyAnLCAgdGVzdFZhbCggXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGF3ZXNvbWUgc3RyaW5nICcsIHRlc3RWYWwoIFwiQWxsIG1ha3Qgw6V0IFRlbmdpbCwgdsOlciBiZWZyaWFyZS5cIiApICk7XG59KTtcblxuZGVzY3JpYmUoJ2xpc3QgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBlbXB0eSBsaXN0cyAnLCAgIHRlc3RWYWwoIFtdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBsaXN0cyAnLCAgIHRlc3RWYWwoIFsgdW5kZWZpbmVkLCA0IF0sIFsgbnVsbCwgNCBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZsb2F0IGxpc3RzICcsICAgdGVzdFZhbCggWyAxLDIsMyBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGJvb2xlYW4gbGlzdHMgJywgdGVzdFZhbCggWyB0cnVlLCBmYWxzZSBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHN0cmluZyBsaXN0cyAnLCAgdGVzdFZhbCggWyBcIlwiLCBcImhlbGxvIVwiIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbGlzdCBsaXN0cyAnLCAgICB0ZXN0VmFsKCBbIFtdLCBbMSwyLDNdIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbWFwIGxpc3RzICcsICAgICB0ZXN0VmFsKCBbIHt9LCB7YToxMn0gXSApICk7XG59KTtcblxuZGVzY3JpYmUoJ21hcCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IG1hcHMgJywgdGVzdFZhbCgge30gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYmFzaWMgbWFwcyAnLCB0ZXN0VmFsKCB7YToxLCBiOnt9LCBjOltdLCBkOntlOjF9fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzcGFyc2UgbWFwcyAnLCB0ZXN0VmFsKCB7Zm9vOiB1bmRlZmluZWQsIGJhcjogbnVsbH0sIHtiYXI6IG51bGx9ICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbm9kZSB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJldHVybmluZyBub2RlcyAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIChuOlVzZXIge25hbWU6J0xpc2EnfSkgUkVUVVJOIG4sIGlkKG4pXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBub2RlID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCduJyk7XG5cbiAgICAgICAgZXhwZWN0KCBub2RlLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIG5vZGUubGFiZWxzICkudG9FcXVhbCggW1wiVXNlclwiXSApO1xuICAgICAgICAvLyBleHBlY3QoIG5vZGUuaWRlbnRpdHkgKS50b0VxdWFsKCByc1swXVsnaWQobiknXSApOyAvLyBUT0RPXG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG5cbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncmVsYXRpb25zaGlwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHJlbGF0aW9uc2hpcHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFICgpLVtyOlVzZXIge25hbWU6J0xpc2EnfV0tPigpIFJFVFVSTiByLCBpZChyKVwiKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcmVsID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdyJyk7XG5cbiAgICAgICAgZXhwZWN0KCByZWwucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggcmVsLnR5cGUgKS50b0VxdWFsKCBcIlVzZXJcIiApO1xuICAgICAgICAvLyBleHBlY3QoIHJlbC5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChyKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdwYXRoIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHBhdGhzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLnJ1bihcIkNSRUFURSBwPSg6VXNlciB7IG5hbWU6J0xpc2EnIH0pPC1bcjpLTk9XUyB7c2luY2U6MTIzNC4wfV0tKCkgUkVUVVJOIHBcIilcbiAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC5yZWNvcmRzWzBdLmdldCgncCcpO1xuXG4gICAgICAgIGV4cGVjdCggcGF0aC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCBwYXRoLmVuZC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyB9ICk7XG5cbiAgICAgICAgLy8gQWNjZXNzaW5nIHBhdGggc2VnbWVudHNcbiAgICAgICAgZXhwZWN0KCBwYXRoLmxlbmd0aCApLnRvRXF1YWwoIDEgKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHNlZ21lbnQgPSBwYXRoLnNlZ21lbnRzW2ldO1xuICAgICAgICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHBhdGggc2VnbWVudCBnb2VzIGZyb20gbGlzYSB0byB0aGUgYmxhbmsgbm9kZVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQuZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcbiAgICAgICAgICAvLyBXaGljaCBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgcmVsYXRpb25zaGlwIGl0c2VsZiFcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQucmVsYXRpb25zaGlwLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IHNpbmNlOiAxMjM0IH0gKTtcbiAgICAgICAgfVxuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUubG9nKGVycik7IH0pO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB0ZXN0VmFsKCB2YWwsIGV4cGVjdGVkICkge1xuICByZXR1cm4gZnVuY3Rpb24oIGRvbmUgKSB7XG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIHt2YWx9IGFzIHZcIiwge3ZhbDogdmFsfSlcbiAgICAgIC50aGVuKCBmdW5jdGlvbiggcmVzdWx0ICkge1xuICAgICAgICBleHBlY3QoIHJlc3VsdC5yZWNvcmRzWzBdLmdldCgndicpICkudG9FcXVhbCggZXhwZWN0ZWQgfHwgdmFsICk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH1cbn1cbiJdfQ== diff --git a/lib/v1/driver.js b/lib/v1/driver.js index 43c653cbc..2713fdea2 100644 --- a/lib/v1/driver.js +++ b/lib/v1/driver.js @@ -213,13 +213,6 @@ var _ConnectionStreamObserver = (function (_StreamObserver) { this._hasFailed = true; } } - }, { - key: 'onCompleted', - value: function onCompleted(message) { - if (this._driver.onCompleted) { - this._driver.onCompleted(message); - } - } }]); return _ConnectionStreamObserver; diff --git a/lib/v1/internal/ch-node.js b/lib/v1/internal/ch-node.js index ad88da303..7550c2925 100644 --- a/lib/v1/internal/ch-node.js +++ b/lib/v1/internal/ch-node.js @@ -62,35 +62,16 @@ function userHome() { return process.env[process.platform == 'win32' ? 'USERPROFILE' : 'HOME']; } -function mkFullPath(pathToCreate) { - try { - _fs2['default'].mkdirSync(pathToCreate); - } catch (e) { - if (e.code === 'ENOENT') { - // Create parent dir - mkFullPath(_path2['default'].dirname(pathToCreate)); - // And now try again - mkFullPath(pathToCreate); - return; - } - if (e.code === 'EEXIST') { - return; - } - throw e; - } -} - function loadFingerprint(serverId, knownHostsPath, cb) { - try { - _fs2['default'].accessSync(knownHostsPath); - } catch (e) { - return cb(null); + if (!_fs2['default'].existsSync(knownHostsPath)) { + cb(null); + return; } var found = false; require('readline').createInterface({ input: _fs2['default'].createReadStream(knownHostsPath) }).on('line', function (line) { - if (!found && line.startsWith(serverId)) { + if (line.startsWith(serverId)) { found = true; cb(line.split(" ")[1]); } @@ -101,31 +82,11 @@ function loadFingerprint(serverId, knownHostsPath, cb) { }); } -var _lockFingerprintFromAppending = {}; -function storeFingerprint(serverId, knownHostsPath, fingerprint, cb) { - // we check if the serverId has been appended - if (!!_lockFingerprintFromAppending[serverId]) { - // if it has, we ignore it - return cb(null); - } - - // we make the line as appended - // ( 1 is more efficient to store than true because true is an oddball ) - _lockFingerprintFromAppending[serverId] = 1; - - // If file doesn't exist, create full path to it - try { - _fs2['default'].accessSync(knownHostsPath); - } catch (_) { - mkFullPath(_path2['default'].dirname(knownHostsPath)); - } - +function storeFingerprint(serverId, knownHostsPath, fingerprint) { _fs2['default'].appendFile(knownHostsPath, serverId + " " + fingerprint + _os.EOL, "utf8", function (err) { - delete _lockFingerprintFromAppending[serverId]; if (err) { console.log(err); } - return cb(err); }); } @@ -179,12 +140,8 @@ var TrustStrategy = { if (knownFingerprint === serverFingerprint) { onSuccess(); } else if (knownFingerprint == null) { - storeFingerprint(serverId, knownHostsPath, serverFingerprint, function (err) { - if (err) { - return onFailure(err); - } - return onSuccess(); - }); + storeFingerprint(serverId, knownHostsPath, serverFingerprint); + onSuccess(); } else { onFailure((0, _error.newError)("Database encryption certificate has changed, and no longer " + "matches the certificate stored for " + serverId + " in `" + knownHostsPath + "`. As a security precaution, this driver will not automatically trust the new " + "certificate, because doing so would allow an attacker to pretend to be the Neo4j " + "instance we want to connect to. The certificate provided by the server looks like: " + serverCert + ". If you trust that this certificate is valid, simply remove the line " + "starting with " + serverId + " in `" + knownHostsPath + "`, and the driver will " + "update the file with the new certificate. You can configure which file the driver " + "should use to store this information by setting `knownHosts` to another path in " + "your driver configuration - and you can disable encryption there as well using " + "`encrypted:false`.")); } diff --git a/lib/v1/internal/connector.js b/lib/v1/internal/connector.js index f63a5e49d..d92c650b0 100644 --- a/lib/v1/internal/connector.js +++ b/lib/v1/internal/connector.js @@ -193,7 +193,6 @@ var _mappers = { */ var Connection = (function () { - /** * @constructor * @param channel - channel with a 'write' function and a 'onmessage' @@ -371,26 +370,17 @@ var Connection = (function () { }, { key: "initialize", value: function initialize(clientName, token, observer) { - var _this2 = this; - this._queueObserver(observer); - this._packer.packStruct(INIT, [this._packable(clientName), this._packable(token)], function (err) { - return _this2._handleFatalError(err); - }); + this._packer.packStruct(INIT, [clientName, token]); this._chunker.messageBoundary(); - this.sync(); } /** Queue a RUN-message to be sent to the database */ }, { key: "run", value: function run(statement, params, observer) { - var _this3 = this; - this._queueObserver(observer); - this._packer.packStruct(RUN, [this._packable(statement), this._packable(params)], function (err) { - return _this3._handleFatalError(err); - }); + this._packer.packStruct(RUN, [statement, params]); this._chunker.messageBoundary(); } @@ -398,12 +388,8 @@ var Connection = (function () { }, { key: "pullAll", value: function pullAll(observer) { - var _this4 = this; - this._queueObserver(observer); - this._packer.packStruct(PULL_ALL, [], function (err) { - return _this4._handleFatalError(err); - }); + this._packer.packStruct(PULL_ALL); this._chunker.messageBoundary(); } @@ -411,12 +397,8 @@ var Connection = (function () { }, { key: "discardAll", value: function discardAll(observer) { - var _this5 = this; - this._queueObserver(observer); - this._packer.packStruct(DISCARD_ALL, [], function (err) { - return _this5._handleFatalError(err); - }); + this._packer.packStruct(DISCARD_ALL); this._chunker.messageBoundary(); } @@ -424,8 +406,6 @@ var Connection = (function () { }, { key: "reset", value: function reset(observer) { - var _this6 = this; - this._isHandlingFailure = true; var self = this; var wrappedObs = { @@ -439,9 +419,7 @@ var Connection = (function () { } }; this._queueObserver(wrappedObs); - this._packer.packStruct(RESET, [], function (err) { - return _this6._handleFatalError(err); - }); + this._packer.packStruct(RESET); this._chunker.messageBoundary(); } @@ -449,12 +427,8 @@ var Connection = (function () { }, { key: "_ackFailure", value: function _ackFailure(observer) { - var _this7 = this; - this._queueObserver(observer); - this._packer.packStruct(ACK_FAILURE, [], function (err) { - return _this7._handleFatalError(err); - }); + this._packer.packStruct(ACK_FAILURE); this._chunker.messageBoundary(); } }, { @@ -503,15 +477,6 @@ var Connection = (function () { value: function close(cb) { this._ch.close(cb); } - }, { - key: "_packable", - value: function _packable(value) { - var _this8 = this; - - return this._packer.packable(value, function (err) { - return _this8._handleFatalError(err); - }); - } }]); return Connection; diff --git a/lib/v1/internal/packstream.js b/lib/v1/internal/packstream.js index 806ebab5f..e93fa5ad1 100644 --- a/lib/v1/internal/packstream.js +++ b/lib/v1/internal/packstream.js @@ -117,98 +117,57 @@ var Packer = (function () { * @access private */ - /** - * Creates a packable function out of the provided value - * @param x the value to pack - * @param onError callback for the case when value cannot be packed - * @returns Function - */ - _createClass(Packer, [{ - key: "packable", - value: function packable(x, onError) { - var _this = this; - + key: "pack", + value: function pack(x) { if (x === null) { - return function () { - return _this._ch.writeUInt8(NULL); - }; + this._ch.writeUInt8(NULL); } else if (x === true) { - return function () { - return _this._ch.writeUInt8(TRUE); - }; + this._ch.writeUInt8(TRUE); } else if (x === false) { - return function () { - return _this._ch.writeUInt8(FALSE); - }; + this._ch.writeUInt8(FALSE); } else if (typeof x == "number") { - return function () { - return _this.packFloat(x); - }; + this.packFloat(x); } else if (typeof x == "string") { - return function () { - return _this.packString(x, onError); - }; + this.packString(x); } else if (x instanceof _integer.Integer) { - return function () { - return _this.packInteger(x); - }; + this.packInteger(x); } else if (x instanceof Array) { - return function () { - _this.packListHeader(x.length, onError); - for (var _i = 0; _i < x.length; _i++) { - _this.packable(x[_i] === undefined ? null : x[_i], onError)(); - } - }; - } else if (x instanceof Structure) { - var packableFields = []; - for (var i = 0; i < x.fields.length; i++) { - packableFields[i] = this.packable(x.fields[i], onError); + this.packListHeader(x.length); + for (var i = 0; i < x.length; i++) { + this.pack(x[i] === undefined ? null : x[i]); } - return function () { - return _this.packStruct(x.signature, packableFields); - }; + } else if (x instanceof Structure) { + this.packStruct(x.signature, x.fields); } else if (typeof x == "object") { - return function () { - var keys = Object.keys(x); - - var count = 0; - for (var _i2 = 0; _i2 < keys.length; _i2++) { - if (x[keys[_i2]] !== undefined) { - count++; - } + var keys = Object.keys(x); + + var count = 0; + for (var i = 0; i < keys.length; i++) { + if (x[keys[i]] !== undefined) { + count++; } - _this.packMapHeader(count, onError); - for (var _i3 = 0; _i3 < keys.length; _i3++) { - var key = keys[_i3]; - if (x[key] !== undefined) { - _this.packString(key); - _this.packable(x[key], onError)(); - } + } + + this.packMapHeader(count); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (x[key] !== undefined) { + this.packString(key); + this.pack(x[key]); } - }; - } else { - if (onError) { - onError((0, _error.newError)("Cannot pack this value: " + x)); } - return function () { - return undefined; - }; + } else { + throw (0, _error.newError)("Cannot pack this value: " + x); } } - - /** - * Packs a struct - * @param signature the signature of the struct - * @param packableFields the fields of the struct, make sure you call `packable on all fields` - */ }, { key: "packStruct", - value: function packStruct(signature, packableFields, onError) { - packableFields = packableFields || []; - this.packStructHeader(packableFields.length, signature, onError); - for (var i = 0; i < packableFields.length; i++) { - packableFields[i](); + value: function packStruct(signature, fields) { + fields = fields || []; + this.packStructHeader(fields.length, signature); + for (var i = 0; i < fields.length; i++) { + this.pack(fields[i]); } } }, { @@ -242,7 +201,7 @@ var Packer = (function () { } }, { key: "packString", - value: function packString(x, onError) { + value: function packString(x) { var bytes = _utf82["default"].encode(x); var size = bytes.length; if (size < 0x10) { @@ -265,12 +224,12 @@ var Packer = (function () { this._ch.writeUInt8(size % 256); this._ch.writeBytes(bytes); } else { - onError((0, _error.newError)("UTF-8 strings of size " + size + " are not supported")); + throw (0, _error.newError)("UTF-8 strings of size " + size + " are not supported"); } } }, { key: "packListHeader", - value: function packListHeader(size, onError) { + value: function packListHeader(size) { if (size < 0x10) { this._ch.writeUInt8(TINY_LIST | size); } else if (size < 0x100) { @@ -287,12 +246,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Lists of size " + size + " are not supported")); + throw (0, _error.newError)("Lists of size " + size + " are not supported"); } } }, { key: "packMapHeader", - value: function packMapHeader(size, onError) { + value: function packMapHeader(size) { if (size < 0x10) { this._ch.writeUInt8(TINY_MAP | size); } else if (size < 0x100) { @@ -309,12 +268,12 @@ var Packer = (function () { this._ch.writeUInt8((size / 256 >> 0) % 256); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Maps of size " + size + " are not supported")); + throw (0, _error.newError)("Maps of size " + size + " are not supported"); } } }, { key: "packStructHeader", - value: function packStructHeader(size, signature, onError) { + value: function packStructHeader(size, signature) { if (size < 0x10) { this._ch.writeUInt8(TINY_STRUCT | size); this._ch.writeUInt8(signature); @@ -327,7 +286,7 @@ var Packer = (function () { this._ch.writeUInt8(size / 256 >> 0); this._ch.writeUInt8(size % 256); } else { - onError((0, _error.newError)("Structures of size " + size + " are not supported")); + throw (0, _error.newError)("Structures of size " + size + " are not supported"); } } }]);